From d674a5ab33968f187192b01d5044ecb41a799700 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Thu, 19 Feb 2026 12:43:27 +0000 Subject: [PATCH 1/2] Rename Target and TargetDict classes to ImageTarget and ImageTargetDict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename class Target → ImageTarget and class TargetDict → ImageTargetDict throughout the codebase. Updates all imports and usages in source code and tests. Co-Authored-By: Claude Haiku 4.5 --- src/mock_vws/_flask_server/target_manager.py | 4 ++-- src/mock_vws/_flask_server/vws.py | 4 ++-- .../mock_web_services_api.py | 4 ++-- src/mock_vws/database.py | 23 +++++++++++-------- src/mock_vws/target.py | 8 +++---- tests/mock_vws/fixtures/vuforia_backends.py | 4 ++-- tests/mock_vws/test_requests_mock_usage.py | 6 ++--- tests/mock_vws/test_target_validators.py | 4 ++-- 8 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/mock_vws/_flask_server/target_manager.py b/src/mock_vws/_flask_server/target_manager.py index e317549b1..1e6f6f8f1 100644 --- a/src/mock_vws/_flask_server/target_manager.py +++ b/src/mock_vws/_flask_server/target_manager.py @@ -14,7 +14,7 @@ from mock_vws.database import VuforiaDatabase from mock_vws.states import States -from mock_vws.target import Target +from mock_vws.target import ImageTarget from mock_vws.target_manager import TargetManager from mock_vws.target_raters import ( BrisqueTargetTrackingRater, @@ -202,7 +202,7 @@ def create_target(database_name: str) -> Response: settings = TargetManagerSettings.model_validate(obj={}) target_tracking_rater = settings.target_rater.to_target_rater() - target = Target( + target = ImageTarget( name=request_json["name"], width=request_json["width"], image_value=image_bytes, diff --git a/src/mock_vws/_flask_server/vws.py b/src/mock_vws/_flask_server/vws.py index 664571b6f..064b1348d 100644 --- a/src/mock_vws/_flask_server/vws.py +++ b/src/mock_vws/_flask_server/vws.py @@ -42,7 +42,7 @@ ImageMatcher, StructuralSimilarityMatcher, ) -from mock_vws.target import Target +from mock_vws.target import ImageTarget from mock_vws.target_raters import ( HardcodedTargetTrackingRater, ) @@ -192,7 +192,7 @@ def add_target() -> Response: # This rater is not used. target_tracking_rater = HardcodedTargetTrackingRater(rating=1) - new_target = Target( + new_target = ImageTarget( name=name, width=request_json["width"], image_value=base64.b64decode(s=request_json["image"]), diff --git a/src/mock_vws/_requests_mock_server/mock_web_services_api.py b/src/mock_vws/_requests_mock_server/mock_web_services_api.py index 320b776ef..8c0c770d6 100644 --- a/src/mock_vws/_requests_mock_server/mock_web_services_api.py +++ b/src/mock_vws/_requests_mock_server/mock_web_services_api.py @@ -37,7 +37,7 @@ ValidatorError, ) from mock_vws.image_matchers import ImageMatcher -from mock_vws.target import Target +from mock_vws.target import ImageTarget from mock_vws.target_manager import TargetManager from mock_vws.target_raters import TargetTrackingRater @@ -187,7 +187,7 @@ def add_target(self, request: PreparedRequest) -> _ResponseType: application_metadata = request_json.get("application_metadata") - new_target = Target( + new_target = ImageTarget( name=request_json["name"], width=request_json["width"], image_value=base64.b64decode(s=request_json["image"]), diff --git a/src/mock_vws/database.py b/src/mock_vws/database.py index 2e28a9f61..e166281e4 100644 --- a/src/mock_vws/database.py +++ b/src/mock_vws/database.py @@ -9,7 +9,7 @@ from mock_vws._constants import TargetStatuses from mock_vws.states import States -from mock_vws.target import Target, TargetDict +from mock_vws.target import ImageTarget, ImageTargetDict @beartype @@ -22,7 +22,7 @@ class DatabaseDict(TypedDict): client_access_key: str client_secret_key: str state_name: str - targets: Iterable[TargetDict] + targets: Iterable[ImageTargetDict] @beartype @@ -61,7 +61,10 @@ class VuforiaDatabase: # ``frozen=True`` while still being able to keep the interface we want. # In particular, we might want to inspect the ``database`` object's targets # as they change via API requests. - targets: set[Target] = field(default_factory=set[Target], hash=False) + targets: set[ImageTarget] = field( + default_factory=set[ImageTarget], + hash=False, + ) state: States = States.WORKING request_quota: int = 100000 @@ -84,7 +87,7 @@ def to_dict(self) -> DatabaseDict: "targets": targets, } - def get_target(self, target_id: str) -> Target: + def get_target(self, target_id: str) -> ImageTarget: """Return a target from the database with the given ID.""" (target,) = ( target for target in self.targets if target.target_id == target_id @@ -102,18 +105,18 @@ def from_dict(cls, database_dict: DatabaseDict) -> Self: client_secret_key=database_dict["client_secret_key"], state=States[database_dict["state_name"]], targets={ - Target.from_dict(target_dict=target_dict) + ImageTarget.from_dict(target_dict=target_dict) for target_dict in database_dict["targets"] }, ) @property - def not_deleted_targets(self) -> set[Target]: + def not_deleted_targets(self) -> set[ImageTarget]: """All targets which have not been deleted.""" return {target for target in self.targets if not target.delete_date} @property - def active_targets(self) -> set[Target]: + def active_targets(self) -> set[ImageTarget]: """All active targets.""" return { target @@ -123,7 +126,7 @@ def active_targets(self) -> set[Target]: } @property - def inactive_targets(self) -> set[Target]: + def inactive_targets(self) -> set[ImageTarget]: """All inactive targets.""" return { target @@ -133,7 +136,7 @@ def inactive_targets(self) -> set[Target]: } @property - def failed_targets(self) -> set[Target]: + def failed_targets(self) -> set[ImageTarget]: """All failed targets.""" return { target @@ -142,7 +145,7 @@ def failed_targets(self) -> set[Target]: } @property - def processing_targets(self) -> set[Target]: + def processing_targets(self) -> set[ImageTarget]: """All processing targets.""" return { target diff --git a/src/mock_vws/target.py b/src/mock_vws/target.py index afd8f20b1..a17e8c140 100644 --- a/src/mock_vws/target.py +++ b/src/mock_vws/target.py @@ -19,7 +19,7 @@ ) -class TargetDict(TypedDict): +class ImageTargetDict(TypedDict): """A dictionary type which represents a target.""" name: str @@ -50,7 +50,7 @@ def _time_now() -> datetime.datetime: @beartype(conf=BeartypeConf(is_pep484_tower=True)) @dataclass(frozen=True, eq=True) -class Target: +class ImageTarget: """ A Vuforia Target as managed in https://developer.vuforia.com/target-manager. @@ -145,7 +145,7 @@ def tracking_rating(self) -> int: return self._post_processing_target_rating @classmethod - def from_dict(cls, target_dict: TargetDict) -> Self: + def from_dict(cls, target_dict: ImageTargetDict) -> Self: """Load a target from a dictionary.""" timezone = ZoneInfo(key="GMT") name = target_dict["name"] @@ -187,7 +187,7 @@ def from_dict(cls, target_dict: TargetDict) -> Self: target_tracking_rater=target_tracking_rater, ) - def to_dict(self) -> TargetDict: + def to_dict(self) -> ImageTargetDict: """Dump a target to a dictionary which can be loaded as JSON.""" delete_date: str | None = None if self.delete_date: diff --git a/tests/mock_vws/fixtures/vuforia_backends.py b/tests/mock_vws/fixtures/vuforia_backends.py index c0e95b08c..231468ed6 100644 --- a/tests/mock_vws/fixtures/vuforia_backends.py +++ b/tests/mock_vws/fixtures/vuforia_backends.py @@ -21,7 +21,7 @@ from mock_vws._flask_server.vws import VWS_FLASK_APP from mock_vws.database import VuforiaDatabase from mock_vws.states import States -from mock_vws.target import Target +from mock_vws.target import ImageTarget from mock_vws.target_raters import HardcodedTargetTrackingRater from tests.mock_vws.fixtures.credentials import VuMarkVuforiaDatabase from tests.mock_vws.utils import make_image_file @@ -67,7 +67,7 @@ def _vumark_database( vumark_vuforia_database: VuMarkVuforiaDatabase, ) -> VuforiaDatabase: """Return a database with a target for VuMark instance generation.""" - vumark_target = Target( + vumark_target = ImageTarget( active_flag=True, application_metadata=None, image_value=make_image_file( diff --git a/tests/mock_vws/test_requests_mock_usage.py b/tests/mock_vws/test_requests_mock_usage.py index 4b9cf1f5c..81b297cd1 100644 --- a/tests/mock_vws/test_requests_mock_usage.py +++ b/tests/mock_vws/test_requests_mock_usage.py @@ -18,7 +18,7 @@ from mock_vws import MissingSchemeError, MockVWS from mock_vws.database import VuforiaDatabase from mock_vws.image_matchers import ExactMatcher, StructuralSimilarityMatcher -from mock_vws.target import Target +from mock_vws.target import ImageTarget from tests.mock_vws.utils import Endpoint from tests.mock_vws.utils.usage_test_helpers import ( processing_time_seconds, @@ -400,7 +400,7 @@ def test_to_dict(high_quality_image: io.BytesIO) -> None: # The dictionary is JSON dump-able assert json.dumps(obj=target_dict) - new_target = Target.from_dict(target_dict=target_dict) + new_target = ImageTarget.from_dict(target_dict=target_dict) assert new_target == target @staticmethod @@ -436,7 +436,7 @@ def test_to_dict_deleted(high_quality_image: io.BytesIO) -> None: # The dictionary is JSON dump-able assert json.dumps(obj=target_dict) - new_target = Target.from_dict(target_dict=target_dict) + new_target = ImageTarget.from_dict(target_dict=target_dict) assert new_target.delete_date == target.delete_date diff --git a/tests/mock_vws/test_target_validators.py b/tests/mock_vws/test_target_validators.py index 04b147422..4e49ce89c 100644 --- a/tests/mock_vws/test_target_validators.py +++ b/tests/mock_vws/test_target_validators.py @@ -10,14 +10,14 @@ validate_target_id_exists, ) from mock_vws.database import VuforiaDatabase -from mock_vws.target import Target +from mock_vws.target import ImageTarget from mock_vws.target_raters import HardcodedTargetTrackingRater from tests.mock_vws.utils import make_image_file def _database_with_target(*, target_id: str) -> VuforiaDatabase: """Create a database containing one target with the given ID.""" - target = Target( + target = ImageTarget( active_flag=True, application_metadata=None, image_value=make_image_file( From acb95973dfef950d8c58781187fbc5335b33a090 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Thu, 19 Feb 2026 13:55:15 +0000 Subject: [PATCH 2/2] Update docs to reference ImageTarget instead of Target Co-Authored-By: Claude Haiku 4.5 --- docs/source/mock-api-reference.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/mock-api-reference.rst b/docs/source/mock-api-reference.rst index ecb44f90b..798061cc4 100644 --- a/docs/source/mock-api-reference.rst +++ b/docs/source/mock-api-reference.rst @@ -24,7 +24,7 @@ API Reference :members: :undoc-members: -.. autoclass:: mock_vws.target.Target +.. autoclass:: mock_vws.target.ImageTarget Image matchers --------------