Metadata-Version: 2.4
Name: vws-python-mock
Version: 2026.8.4.2
Summary: A mock for the Vuforia Web Services (VWS) API.
Author-email: Adam Dangoor <adamdangoor@gmail.com>
License-Expression: MIT
Project-URL: Documentation, https://vws-python.github.io/vws-python-mock/
Project-URL: Source, https://github.com/VWS-Python/vws-python-mock
Keywords: client,fake,mock,vuforia,vws
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Pytest
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.14
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: beartype>=0.22.9
Requires-Dist: flask>=3.0.3
Requires-Dist: httpx>=0.27.0
Requires-Dist: numpy>=2.4.4
Requires-Dist: opencv-contrib-python-headless>=5.0.0.93
Requires-Dist: pillow>=12.2.0
Requires-Dist: pydantic-settings>=2.6.1
Requires-Dist: pyteenybrisque>=0.1.1
Requires-Dist: requests>=2.32.3
Requires-Dist: responses>=0.25.3
Requires-Dist: respx>=0.21.0
Requires-Dist: tzdata; sys_platform == "win32"
Requires-Dist: vws-auth-tools>=2024.7.12
Requires-Dist: werkzeug>=3.1.2
Provides-Extra: dev
Requires-Dist: actionlint-py==1.7.12.24; extra == "dev"
Requires-Dist: check-manifest==0.51; extra == "dev"
Requires-Dist: check-wheel-contents==0.6.3; extra == "dev"
Requires-Dist: coverage==7.15.2; extra == "dev"
Requires-Dist: deptry==0.25.1; extra == "dev"
Requires-Dist: dirty-equals==0.11; extra == "dev"
Requires-Dist: doc8==2.0.0; extra == "dev"
Requires-Dist: doccmd==2026.7.19; extra == "dev"
Requires-Dist: docker==7.2.0; extra == "dev"
Requires-Dist: freezegun==1.5.5; extra == "dev"
Requires-Dist: furo==2025.12.19; extra == "dev"
Requires-Dist: interrogate==1.7.0; extra == "dev"
Requires-Dist: mypy[faster-cache]==2.3.0; extra == "dev"
Requires-Dist: mypy-strict-kwargs==2026.7.19.1; extra == "dev"
Requires-Dist: prek==0.4.11; extra == "dev"
Requires-Dist: pydocstringformatter==1.0.0; extra == "dev"
Requires-Dist: pydocstyle==6.3; extra == "dev"
Requires-Dist: pylint[spelling]==4.0.6; extra == "dev"
Requires-Dist: pylint-per-file-ignores==3.2.1; extra == "dev"
Requires-Dist: pyproject-fmt==2.26.0; extra == "dev"
Requires-Dist: pyrefly==1.1.1; extra == "dev"
Requires-Dist: pyright==1.1.411; extra == "dev"
Requires-Dist: pyroma==5.0.1; extra == "dev"
Requires-Dist: pytest==9.1.1; extra == "dev"
Requires-Dist: pytest-beartype-tests==2026.4.26; extra == "dev"
Requires-Dist: pytest-retry==1.7.0; extra == "dev"
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
Requires-Dist: pyyaml==6.0.3; extra == "dev"
Requires-Dist: requests-mock-flask==2026.4.2; extra == "dev"
Requires-Dist: ruff==0.16.1; extra == "dev"
Requires-Dist: shellcheck-py==0.11.0.1; extra == "dev"
Requires-Dist: shfmt-py==4.0.0; extra == "dev"
Requires-Dist: sphinx==9.1.0; extra == "dev"
Requires-Dist: sphinx-copybutton==0.5.2; extra == "dev"
Requires-Dist: sphinx-lint==1.0.2; extra == "dev"
Requires-Dist: sphinx-paramlinks==0.6; extra == "dev"
Requires-Dist: sphinx-pyproject==0.3.0; extra == "dev"
Requires-Dist: sphinx-substitution-extensions==2026.6.17; extra == "dev"
Requires-Dist: sphinx-toolbox==4.3.0; extra == "dev"
Requires-Dist: sphinxcontrib-httpdomain==2.0.0; extra == "dev"
Requires-Dist: sphinxcontrib-spelling==8.0.2; extra == "dev"
Requires-Dist: sphinxcontrib-towncrier==0.5.0a0; extra == "dev"
Requires-Dist: strict-kwargs==2026.7.24; extra == "dev"
Requires-Dist: sybil==10.1.0; extra == "dev"
Requires-Dist: tenacity==9.1.4; extra == "dev"
Requires-Dist: towncrier==25.8.0; extra == "dev"
Requires-Dist: ty==0.0.65; extra == "dev"
Requires-Dist: types-docker==7.2.0.20260728; extra == "dev"
Requires-Dist: types-pyyaml==6.0.12.20260724; extra == "dev"
Requires-Dist: types-requests==2.33.0.20260712; extra == "dev"
Requires-Dist: urllib3==2.7.0; extra == "dev"
Requires-Dist: vulture==2.16; extra == "dev"
Requires-Dist: vws-python==2026.2.25.1; extra == "dev"
Requires-Dist: vws-test-fixtures==2023.3.5; extra == "dev"
Requires-Dist: vws-web-tools==2026.5.21; extra == "dev"
Requires-Dist: yamlfix==1.19.1; extra == "dev"
Requires-Dist: zizmor==1.28.0; extra == "dev"
Provides-Extra: release
Requires-Dist: check-wheel-contents==0.6.3; extra == "release"
Requires-Dist: towncrier==25.8.0; extra == "release"
Dynamic: license-file

|Build Status| |PyPI|

VWS Mock
========

.. contents::
   :local:

Mock for the Vuforia Web Services (VWS) API, the Vuforia Web Query API, and the Model Target Web API.

Mocking calls made to Vuforia
------------------------------

``MockVWS`` intercepts requests made with `requests`_ or `httpx`_.

.. code-block:: shell

    pip install vws-python-mock

This requires Python |minimum-python-version|\+.

.. code-block:: python

    """Make a request to the Vuforia Web Services API mock."""

    import requests

    from mock_vws import MockVWS
    from mock_vws.database import CloudDatabase

    with MockVWS() as mock:
        database = CloudDatabase()
        mock.add_cloud_database(cloud_database=database)
        # This will use the Vuforia mock.
        requests.get(url="https://vws.vuforia.com/summary", timeout=30)

``MockVWS`` also intercepts `httpx`_ requests:

.. code-block:: python

    """Make a request to the Vuforia Web Services API mock using httpx."""

    import httpx

    from mock_vws import MockVWS
    from mock_vws.database import CloudDatabase

    with MockVWS() as mock:
        database = CloudDatabase()
        mock.add_cloud_database(cloud_database=database)
        # This will use the Vuforia mock.
        httpx.get(url="https://vws.vuforia.com/summary", timeout=30)

By default, an exception will be raised if any requests to unmocked addresses are made.

.. _requests: https://pypi.org/project/requests/
.. _httpx: https://pypi.org/project/httpx/

Using Docker to mock calls to Vuforia from any language
-------------------------------------------------------

It is possible run a Mock VWS instance using Docker containers.

This allows you to run tests against a mock VWS instance regardless of the language or tooling you are using.

See the `the instructions <https://vws-python.github.io/vws-python-mock/docker.html>`__ for how to do this.

Full documentation
------------------

See the `full documentation <https://vws-python.github.io/vws-python-mock/>`__.
This includes details on how to use the mock, options, and details of the differences between the mock and the real Vuforia Web Services.


.. |Build Status| image:: https://github.com/VWS-Python/vws-python-mock/actions/workflows/test.yml/badge.svg?branch=main
   :target: https://github.com/VWS-Python/vws-python-mock/actions
.. |PyPI| image:: https://badge.fury.io/py/VWS-Python-Mock.svg
    :target: https://badge.fury.io/py/VWS-Python-Mock
.. |minimum-python-version| replace:: 3.14
