Changelog¶
2026.08.14¶
Give
CloudDatabaseadatabase_id, and reject a reco counts report request whose path names a database which the request’s server keys do not belong to, as real Vuforia does.Return a response, rather than raising an uncaught
PIL.Image.DecompressionBombError, when an image with a small file size but a huge number of pixels is given toPOST /targetsorPOST /v1/query. As real Vuforia does,POST /targetsnow returns theImageTooLargeresult code for an image with more than 37748736 pixels, and the Query API applies no pixel count limit.Return targets in a deterministic order from the Query API,
GET /targetsandGET /duplicates/{target_id}. Targets are ordered by upload date and then by target ID, so repeated runs agree with each other. This order is not Vuforia’s match score order.Document the Docker containers’ configuration with the environment variable names and values which the applications actually read, starting with
TARGET_MANAGER_BASE_URL.Build the Docker images from a committed
uv.lockwith a.dockerignore, so that image contents are reproducible from a commit, source edits no longer invalidate the dependency layer, and repository files such as tests and documentation are no longer copied into the images.Store Model Target datasets in the target manager service rather than in the VWS application. In the Docker deployment, datasets now survive a restart of the VWS container, matching how cloud databases and their targets are stored. The VWS application also no longer imports the target manager module’s state: it constructs its own request rate limiter and reco counts report store.
Report the Docker containers as unhealthy without a traceback in the health check probe output while nothing is yet listening on the port.
Support
cadDataBlobandcadDataFormatin Model Target dataset creation requests, and require exactly one ofcadDataUrlandcadDataBlobfor each model.Reject Model Target Web API and OAuth2 token requests with a
Content-Lengthheader which is not an integer, matching the load balancer in front of real Vuforia.Reject Model Target dataset creation requests with wrongly typed
name,targetSdkormodelsentry values.Treat standard and advanced Model Target datasets as separate resources: status, download and delete requests made through the other dataset type’s routes now return the unknown-dataset error rather than acting on the dataset.
Reject Model Target dataset creation requests with values outside the documented enumerations for the
automaticColoring,motionHint,optimizeTrackingFor,realisticAppearance,simplifyandtrackingModemodel fields.Report the
failedtraining status when downloading a Model Target dataset whose generation failed, rather than thenot-startedstatus which a still-processing dataset reports.Add configurable failed Model Target dataset status responses.
Add configurable Model Target dataset generation warning responses.
Reject Model Target dataset creation requests with
guideViewPositionobjects which are missingrotationortranslation, or which haverotationortranslationvalues that are not JSON arrays.Reject Model Target dataset creation requests with
guideViewPositionrotationortranslationarrays which contain values that are not JSON numbers.Reject Model Target bearer tokens whose JWT payload is not a JSON object.
Reject Model Target bearer tokens with empty or malformed JWT signatures.
Reject Model Target dataset creation requests with models which are missing
name, or which have wrongly typedcadDataUrl,nameorviewsvalues.Reject Model Target dataset creation requests with a body which is valid JSON but not a JSON object, rather than raising an error in the mock.
Accept State-Based Model Target configuration and validate per-view state selections against its declared states.
Reject Model Target dataset creation requests with
viewsentries which are not JSON objects, which are missingguideViewPositionorname, or which have wrongly typedguideViewPositionornamevalues.Model VWS request rate limits per endpoint with the new
CloudDatabase.request_rate_limitssetting, including the limits which Vuforia documents asmock_vws.request_rate_limits.DOCUMENTED_REQUEST_RATE_LIMITS. No request rate limit is applied by default.Change the
ProjectHasNoAPIAccessresult code toProjectHasNoApiAccess, matching Vuforia’s result codes table.Add the reco counts report endpoint, and a download URL for the generated CSV report.
Preserve the recognition count fields, the reco rating and the reco threshold when dumping a
CloudDatabaseor anImageTargetto a dictionary and loading it back.Rate an image of a single color as
0rather than raising an uncaughtZeroDivisionError.Return a 404 response from the Flask and Docker mock for a request to a path which it does not serve, and for a request to a served path with a method which that path does not serve, as real Vuforia does, rather than raising an error.
Reject VuMark instance generation requests whose
instance_idis not a string with aBadRequestresult, as real Vuforia does, and move theinstance_idchecks into validators shared by both mock backends.Reject Model Target dataset creation requests with a body which cannot be decoded as UTF-8, rather than raising an error in the mock, and decode OAuth2 token request bodies leniently.
2026.08.04.2¶
Replace the PyTorch image-quality stack with OpenCV and a lightweight BRISQUE implementation. This reduces dependency download and installation sizes and removes the need to configure PyTorch’s CPU-only package index.
Allow VuMark generation requests to be configured to return
QuotaExceeded,LicenseCheckFailed, orAuthorizationFailedresponses.Cloud databases with
request_quota=0now return aRequestQuotaReachedresponse from VWS endpoints.Add a mock implementation of the Model Target Web API, including OAuth2 token creation, standard and advanced dataset creation, status polling, dataset download, and deletion.
Improve Model Target Web API mock authentication failure responses, including malformed and unsecured JSON Web Token headers.
Match real Vuforia Model Target dataset creation validation error shape, including per-request UUID, details list, and status codes (415 for unsupported media type, 400 with
BAD_REQUESTvalidation details).Match real Vuforia Model Target unknown-dataset response shape (
NOT_FOUNDcode,Could not find a model-view database with uuid <uuid>message,userId:target). Keep each Model Target dataset status response internally consistent when processing completes while the response is being generated.Make synthetic Model Target dataset zip downloads byte-for-byte reproducible.
Match real Vuforia Model Target Web API error responses for invalid request bodies, invalid dataset creation payloads, unknown datasets, and downloads of still-processing datasets.
Add configurable
TargetQuotaReached,ProjectSuspended, andProjectHasNoAPIAccessresponses from VWS endpoints.Add configurable
TooManyRequestsresponses from VWS endpoints using theCloudDatabase.requests_per_second_limitsetting.Add
CloudQueryFailureResponseand theMockVWS.cloud_query_failure_responseparameter for returning configurable Cloud Query failure status codes, headers, and raw bodies through therequestsandhttpxbackends.
2026.04.26¶
2026.02.22.3¶
MockVWSnow intercepts bothrequests(viaresponses) andhttpx(viarespx) simultaneously.MockVWSForHttpxhas been removed:MockVWShandles both HTTP libraries.
2026.02.22.2¶
2026.02.22.1¶
2026.02.22¶
2026.02.21¶
Add
VuMarkTargetclass for VuMark template targets, alongside the renamedImageTargetclass (previouslyTarget).ImageTargetis for image-based targets andVuMarkTargetis for VuMark template targets. Both can be stored in aVuforiaDatabase.
2026.02.18.2¶
2026.02.18.1¶
2026.02.18¶
2026.02.15.5¶
2026.02.15.4¶
Add
sleep_fnparameter toMockVWSfor injecting a custom delay strategy, enabling deterministic and fast tests without monkey-patching.
2026.02.15.3¶
Add
response_delay_secondsparameter toMockVWSfor simulating slow server responses and testing timeout handling.Add
response_delay_secondssetting to the Flask mock (VWSSettingsandVWQSettings) for simulating slow server responses.
2025.03.10.1¶
2025.03.10¶
2025.02.21¶
2025.02.18¶
2024.08.30¶
2024.07.15¶
Support passing data as strings.
2024.07.02.1¶
Fix installation on Windows now that
numpy2.0.0 has been released.
2024.02.16¶
Add a structural similarity image matcher.
2018.12.01.0¶
Distribute type information.
2018.09.10.0¶
Initial release