Releases: VWS-Python/vws-python-mock
Release list
Release 2026.08.14
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 /targets
andGET /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.
Release 2026.08.04.2
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 a
RequestQuotaReachedresponse 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, and
ProjectHasNoAPIAccessresponses from VWS endpoints. -
Add configurable
TooManyRequestsresponses from VWS endpoints using the
CloudDatabase.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.
Release 2026.08.04.1
2026.08.04.1
-
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. -
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. -
Add configurable
TooManyRequestsresponses from VWS endpoints using the
CloudDatabase.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.
Release 2026.08.04
2026.08.04
-
Cloud databases with
request_quota=0now return a
RequestQuotaReachedresponse 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.
-
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). -
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, and
ProjectHasNoAPIAccessresponses from VWS endpoints.
Release 2026.04.26
2026.04.26 (2026-04-26)
Bug Fixes
- allowlist reportPrivateImportUsage in pylint spelling dict (b08336a)
- disable pytest-beartype-tests in nested collection runs (#3132) (39e5296)
- quote JOB_INDEX in cp command for shellcheck SC2086 (07d92f9)
- silence pyright 1.1.409 reportPrivateImportUsage on torch.tensor (ae9ddfd)
- use pull_request.user.login instead of github.actor for bot check (fixes adamtheturtle/literalizer#146) (3068983)