Skip to content

Commit ce0be71

Browse files
Merge pull request #1144 from adamtheturtle/target-record-dataclass
Working target record object
2 parents aaaac7e + f0d97be commit ce0be71

File tree

3 files changed

+45
-17
lines changed

3 files changed

+45
-17
lines changed

src/vws/reports.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,20 @@ class TargetSummaryReport:
6060
total_recos: int
6161
current_month_recos: int
6262
previous_month_recos: int
63+
64+
65+
@dataclass
66+
class TargetRecord:
67+
"""
68+
A target summary record.
69+
70+
See
71+
https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API#How-To-Retrieve-a-Target-Record.
72+
"""
73+
74+
target_id: str
75+
active_flag: bool
76+
name: str
77+
width: float
78+
tracking_rating: int
79+
reco_rating: str

src/vws/vws.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from vws.exceptions import TargetProcessingTimeout
2020
from vws.reports import (
2121
DatabaseSummaryReport,
22+
TargetRecord,
2223
TargetStatuses,
2324
TargetSummaryReport,
2425
)
@@ -213,7 +214,7 @@ def add_target(
213214

214215
return str(response.json()['target_id'])
215216

216-
def get_target_record(self, target_id: str) -> Dict[str, Union[str, int]]:
217+
def get_target_record(self, target_id: str) -> TargetRecord:
217218
"""
218219
Get a given target's target record from the Target Management System.
219220
@@ -243,7 +244,16 @@ def get_target_record(self, target_id: str) -> Dict[str, Union[str, int]]:
243244
expected_result_code='Success',
244245
)
245246

246-
return dict(response.json()['target_record'])
247+
target_record_dict = dict(response.json()['target_record'])
248+
target_record = TargetRecord(
249+
target_id=target_record_dict['target_id'],
250+
active_flag=target_record_dict['active_flag'],
251+
name=target_record_dict['name'],
252+
width=target_record_dict['width'],
253+
tracking_rating=target_record_dict['tracking_rating'],
254+
reco_rating=target_record_dict['reco_rating'],
255+
)
256+
return target_record
247257

248258
def _wait_for_target_processed(
249259
self,

tests/test_vws.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from vws.exceptions import TargetProcessingTimeout
1919
from vws.reports import (
2020
DatabaseSummaryReport,
21+
TargetRecord,
2122
TargetStatuses,
2223
TargetSummaryReport,
2324
)
@@ -57,9 +58,9 @@ def test_add_target(
5758
active_flag=active_flag,
5859
)
5960
target_record = vws_client.get_target_record(target_id=target_id)
60-
assert target_record['name'] == name
61-
assert target_record['width'] == width
62-
assert target_record['active_flag'] is active_flag
61+
assert target_record.name == name
62+
assert target_record.width == width
63+
assert target_record.active_flag is active_flag
6364
vws_client.wait_for_target_processed(target_id=target_id)
6465
matching_targets = cloud_reco_client.query(image=high_quality_image)
6566
if active_flag:
@@ -267,16 +268,16 @@ def test_get_target_record(
267268
)
268269

269270
result = vws_client.get_target_record(target_id=target_id)
271+
expected_target_record = TargetRecord(
272+
target_id=target_id,
273+
active_flag=True,
274+
name='x',
275+
width=1,
276+
tracking_rating=-1,
277+
reco_rating='',
278+
)
270279

271-
expected_keys = {
272-
'target_id',
273-
'active_flag',
274-
'name',
275-
'width',
276-
'tracking_rating',
277-
'reco_rating',
278-
}
279-
assert set(result.keys()) == expected_keys
280+
assert result == expected_target_record
280281

281282

282283
class TestWaitForTargetProcessed:
@@ -531,9 +532,9 @@ def test_update_target(
531532
)
532533

533534
target_details = vws_client.get_target_record(target_id=target_id)
534-
assert target_details['name'] == new_name
535-
assert target_details['width'] == new_width
536-
assert not target_details['active_flag']
535+
assert target_details.name == new_name
536+
assert target_details.width == new_width
537+
assert not target_details.active_flag
537538

538539
def test_no_fields_given(
539540
self,

0 commit comments

Comments
 (0)