Skip to content

Releases: VWS-Python/vws-python-mock

Release 2026.08.14

Choose a tag to compare

@github-actions github-actions released this 14 Aug 11:02

2026.08.14

  • Give CloudDatabase a database_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 to POST /targets or POST /v1/query.
    As real Vuforia does, POST /targets now returns the ImageTooLarge result 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
    and GET /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.lock with 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 cadDataBlob and cadDataFormat in Model Target dataset creation requests, and require exactly one of cadDataUrl and cadDataBlob for each model.

  • Reject Model Target Web API and OAuth2 token requests with a Content-Length header which is not an integer, matching the load balancer in front of real Vuforia.

  • Reject Model Target dataset creation requests with wrongly typed name, targetSdk or models entry 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, simplify and trackingMode model fields.

  • Report the failed training status when downloading a Model Target dataset whose generation failed, rather than the not-started status 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 guideViewPosition objects which are missing rotation or translation, or which have rotation or translation values that are not JSON arrays.

  • Reject Model Target dataset creation requests with guideViewPosition rotation or translation arrays 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 typed cadDataUrl, name or views values.

  • 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 views entries which are not JSON objects, which are missing guideViewPosition or name, or which have wrongly typed guideViewPosition or name values.

  • Model VWS request rate limits per endpoint with the new
    CloudDatabase.request_rate_limits setting, including the limits which
    Vuforia documents as mock_vws.request_rate_limits.DOCUMENTED_REQUEST_RATE_LIMITS.
    No request rate limit is applied by default.

  • Change the ProjectHasNoAPIAccess result code to ProjectHasNoApiAccess, 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 CloudDatabase or an ImageTarget to a dictionary and loading it back.

  • Rate an image of a single color as 0 rather than raising an uncaught ZeroDivisionError.

  • 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_id is not a string with a BadRequest result, as real Vuforia does, and move the instance_id checks 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

Choose a tag to compare

@github-actions github-actions released this 04 Aug 16:24

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, or AuthorizationFailed responses.

  • Cloud databases with request_quota=0 now return a
    RequestQuotaReached response 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_REQUEST validation details).

  • Match real Vuforia Model Target unknown-dataset response shape (NOT_FOUND code, 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
    ProjectHasNoAPIAccess responses from VWS endpoints.

  • Add configurable TooManyRequests responses from VWS endpoints using the
    CloudDatabase.requests_per_second_limit setting.

  • Add CloudQueryFailureResponse and the MockVWS.cloud_query_failure_response parameter for returning configurable Cloud Query failure status codes, headers, and raw bodies through the requests and httpx backends.

Release 2026.08.04.1

Choose a tag to compare

@github-actions github-actions released this 04 Aug 13:20

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_FOUND code, 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 TooManyRequests responses from VWS endpoints using the
    CloudDatabase.requests_per_second_limit setting.

  • Add CloudQueryFailureResponse and the MockVWS.cloud_query_failure_response parameter for returning configurable Cloud Query failure status codes, headers, and raw bodies through the requests and httpx backends.

Release 2026.08.04

Choose a tag to compare

@github-actions github-actions released this 04 Aug 08:10

2026.08.04

  • Cloud databases with request_quota=0 now return a
    RequestQuotaReached response 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_REQUEST validation details).

  • Match real Vuforia Model Target unknown-dataset response shape (NOT_FOUND code, 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
    ProjectHasNoAPIAccess responses from VWS endpoints.

Release 2026.04.26

Choose a tag to compare

@github-actions github-actions released this 26 Apr 18:13

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)

Release 2026.02.22.3

Choose a tag to compare

@github-actions github-actions released this 22 Feb 22:40

2026.02.22.3 (2026-02-22)

Release 2026.02.22.2

Choose a tag to compare

@github-actions github-actions released this 22 Feb 13:18

2026.02.22.2 (2026-02-22)

Release 2026.02.22.1

Choose a tag to compare

@github-actions github-actions released this 22 Feb 11:56

2026.02.22.1 (2026-02-22)

Release 2026.02.22

Choose a tag to compare

@github-actions github-actions released this 22 Feb 10:04

2026.02.22 (2026-02-22)

Release 2026.02.21

Choose a tag to compare

@github-actions github-actions released this 21 Feb 00:16

2026.02.21 (2026-02-21)