vws-python 2026.8.14__tar.gz → 2026.9.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/workflows/autofix.yml +1 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/workflows/ci.yml +1 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/workflows/lint.yml +2 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/workflows/release.yml +1 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7}/CHANGELOG.rst +11 -0
- {vws_python-2026.8.14/src/vws_python.egg-info → vws_python-2026.9.7}/PKG-INFO +20 -19
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/index.rst +38 -0
- vws_python-2026.9.7/prek.toml +528 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/pyproject.toml +30 -20
- {vws_python-2026.8.14 → vws_python-2026.9.7}/spelling_private_dict.txt +3 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/_model_targets.py +2 -6
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/transports.py +192 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7/src/vws_python.egg-info}/PKG-INFO +20 -19
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws_python.egg-info/SOURCES.txt +1 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws_python.egg-info/requires.txt +19 -18
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws_python.egg-info/scm_file_list.json +1 -1
- vws_python-2026.9.7/src/vws_python.egg-info/scm_version.json +8 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_async_cloud_reco_exceptions.py +2 -2
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_async_model_targets.py +108 -12
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_async_vws_exceptions.py +9 -1
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_cloud_reco_exceptions.py +2 -2
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_model_targets.py +67 -78
- vws_python-2026.9.7/tests/test_transports.py +1111 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_vws_exceptions.py +9 -1
- vws_python-2026.8.14/.pre-commit-config.yaml +0 -457
- vws_python-2026.8.14/src/vws_python.egg-info/scm_version.json +0 -8
- vws_python-2026.8.14/tests/test_transports.py +0 -407
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.git_archival.txt +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.gitattributes +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/dependabot.yml +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/workflows/dependabot-merge.yml +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.github/workflows/publish-site.yml +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.gitignore +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.prettierrc +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.vale.ini +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.vscode/extensions.json +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/.vscode/settings.json +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/CODE_OF_CONDUCT.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/LICENSE +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/README.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/conftest.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/__init__.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/api-reference.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/changelog.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/conf.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/contributing.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/exceptions.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/release-process.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/source/unreleased.rst +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/docs/towncrier_template.rst.jinja +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/newsfragments/.gitkeep +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/setup.cfg +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/__init__.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/_async_vws_request.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/_image_utils.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/_reco_counts.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/_vws_request.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/async_model_target_service.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/async_query.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/async_vumark_service.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/async_vws.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/exceptions/__init__.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/exceptions/base_exceptions.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/exceptions/cloud_reco_exceptions.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/exceptions/custom_exceptions.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/exceptions/model_target_exceptions.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/exceptions/vws_exceptions.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/include_target_data.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/model_target_datasets.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/model_target_service.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/py.typed +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/query.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/reports.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/response.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/vumark_accept.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/vumark_service.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws/vws.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws_python.egg-info/dependency_links.txt +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws_python.egg-info/not-zip-safe +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/src/vws_python.egg-info/top_level.txt +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/__init__.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/conftest.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_async_query.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_async_vws.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_query.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/tests/test_vws.py +0 -0
- {vws_python-2026.8.14 → vws_python-2026.9.7}/zizmor.yml +0 -0
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
persist-credentials: false
|
|
30
30
|
|
|
31
31
|
- name: Install uv
|
|
32
|
-
uses: astral-sh/setup-uv@
|
|
32
|
+
uses: astral-sh/setup-uv@v10.0.1
|
|
33
33
|
with:
|
|
34
34
|
enable-cache: true
|
|
35
35
|
cache-dependency-glob: '**/pyproject.toml'
|
|
@@ -38,6 +38,7 @@ jobs:
|
|
|
38
38
|
uses: j178/prek-action@v3.0.0
|
|
39
39
|
with:
|
|
40
40
|
prek-version: 0.4.11
|
|
41
|
+
cache: false
|
|
41
42
|
extra-args: >-
|
|
42
43
|
--all-files --hook-stage ${{ matrix.hook-stage }} --verbose
|
|
43
44
|
env:
|
|
@@ -3,6 +3,17 @@ Changelog
|
|
|
3
3
|
|
|
4
4
|
.. towncrier release notes start
|
|
5
5
|
|
|
6
|
+
2026.09.07
|
|
7
|
+
----------
|
|
8
|
+
|
|
9
|
+
- Add ``HTTPX2Transport`` and ``AsyncHTTPX2Transport``, which make requests with ``httpx2``, the continuation of ``httpx`` maintained by Pydantic. The ``requests`` and ``httpx`` transports are unchanged. ``httpx`` and ``httpx2`` objects are never mixed: the ``httpx`` transports raise ``httpx`` exceptions and the ``httpx2`` transports raise ``httpx2`` exceptions.
|
|
10
|
+
|
|
11
|
+
2026.08.26
|
|
12
|
+
----------
|
|
13
|
+
|
|
14
|
+
- Test synchronous and asynchronous Model Target error responses through the
|
|
15
|
+
public mock API, and include rate-limit and server-error branches in coverage.
|
|
16
|
+
|
|
6
17
|
2026.08.14
|
|
7
18
|
----------
|
|
8
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vws-python
|
|
3
|
-
Version: 2026.
|
|
3
|
+
Version: 2026.9.7
|
|
4
4
|
Summary: Interact with the Vuforia Web Services (VWS) API.
|
|
5
5
|
Author-email: Adam Dangoor <adamdangoor@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -18,6 +18,7 @@ Description-Content-Type: text/x-rst
|
|
|
18
18
|
License-File: LICENSE
|
|
19
19
|
Requires-Dist: beartype>=0.22.9
|
|
20
20
|
Requires-Dist: httpx>=0.28.0
|
|
21
|
+
Requires-Dist: httpx2>=2.12
|
|
21
22
|
Requires-Dist: requests>=2.32.3
|
|
22
23
|
Requires-Dist: urllib3>=2.2.3
|
|
23
24
|
Requires-Dist: vws-auth-tools>=2024.7.12
|
|
@@ -26,49 +27,49 @@ Requires-Dist: actionlint-py==1.7.12.24; extra == "dev"
|
|
|
26
27
|
Requires-Dist: check-manifest==0.51; extra == "dev"
|
|
27
28
|
Requires-Dist: deptry==0.25.1; extra == "dev"
|
|
28
29
|
Requires-Dist: doc8==2.0.0; extra == "dev"
|
|
29
|
-
Requires-Dist: doccmd==2026.
|
|
30
|
+
Requires-Dist: doccmd==2026.9.1; extra == "dev"
|
|
30
31
|
Requires-Dist: freezegun==1.5.5; extra == "dev"
|
|
31
32
|
Requires-Dist: furo==2025.12.19; extra == "dev"
|
|
32
33
|
Requires-Dist: interrogate==1.7.0; extra == "dev"
|
|
33
|
-
Requires-Dist: mypy[faster-cache]==2.3.
|
|
34
|
-
Requires-Dist: mypy-strict-kwargs==2026.
|
|
35
|
-
Requires-Dist: no-defaults==
|
|
36
|
-
Requires-Dist: prek==0.
|
|
34
|
+
Requires-Dist: mypy[faster-cache]==2.3.1; extra == "dev"
|
|
35
|
+
Requires-Dist: mypy-strict-kwargs==2026.8.25.1; extra == "dev"
|
|
36
|
+
Requires-Dist: no-defaults==2026.9.1; extra == "dev"
|
|
37
|
+
Requires-Dist: prek==0.5.2; extra == "dev"
|
|
37
38
|
Requires-Dist: pydocstringformatter==1.0.0; extra == "dev"
|
|
38
39
|
Requires-Dist: pydocstyle==6.3; extra == "dev"
|
|
39
|
-
Requires-Dist: pygments==2.
|
|
40
|
-
Requires-Dist: pylint[spelling]==4.0.
|
|
40
|
+
Requires-Dist: pygments==2.21.0; extra == "dev"
|
|
41
|
+
Requires-Dist: pylint[spelling]==4.0.8; extra == "dev"
|
|
41
42
|
Requires-Dist: pylint-per-file-ignores==3.2.1; extra == "dev"
|
|
42
|
-
Requires-Dist: pyproject-fmt==2.
|
|
43
|
+
Requires-Dist: pyproject-fmt==2.29.3; extra == "dev"
|
|
43
44
|
Requires-Dist: pyrefly==1.2.0; extra == "dev"
|
|
44
45
|
Requires-Dist: pyright==1.1.411; extra == "dev"
|
|
45
46
|
Requires-Dist: pyroma==5.0.1; extra == "dev"
|
|
46
47
|
Requires-Dist: pytest==9.1.1; extra == "dev"
|
|
47
48
|
Requires-Dist: pytest-asyncio==1.4.0; extra == "dev"
|
|
48
|
-
Requires-Dist: pytest-beartype-tests==2026.
|
|
49
|
+
Requires-Dist: pytest-beartype-tests==2026.8.16; extra == "dev"
|
|
49
50
|
Requires-Dist: pytest-cov==7.1.0; extra == "dev"
|
|
50
51
|
Requires-Dist: pyyaml==6.0.3; extra == "dev"
|
|
51
|
-
Requires-Dist: ruff==0.16.
|
|
52
|
+
Requires-Dist: ruff==0.16.6; extra == "dev"
|
|
52
53
|
Requires-Dist: shellcheck-py==0.11.0.1; extra == "dev"
|
|
53
|
-
Requires-Dist: shfmt-py==4.
|
|
54
|
+
Requires-Dist: shfmt-py==4.1.0; extra == "dev"
|
|
54
55
|
Requires-Dist: sphinx==9.1.0; extra == "dev"
|
|
55
56
|
Requires-Dist: sphinx-copybutton==0.5.2; extra == "dev"
|
|
56
57
|
Requires-Dist: sphinx-lint==1.0.2; extra == "dev"
|
|
57
58
|
Requires-Dist: sphinx-pyproject==0.3.0; extra == "dev"
|
|
58
|
-
Requires-Dist: sphinx-substitution-extensions==2026.8.
|
|
59
|
+
Requires-Dist: sphinx-substitution-extensions==2026.8.13.1; extra == "dev"
|
|
59
60
|
Requires-Dist: sphinxcontrib-spelling==8.0.2; extra == "dev"
|
|
60
61
|
Requires-Dist: sphinxcontrib-towncrier==0.5.0a0; extra == "dev"
|
|
61
|
-
Requires-Dist: strict-kwargs==2026.
|
|
62
|
+
Requires-Dist: strict-kwargs==2026.8.28.post2; extra == "dev"
|
|
62
63
|
Requires-Dist: sybil==10.1.0; extra == "dev"
|
|
63
64
|
Requires-Dist: towncrier==25.8.0; extra == "dev"
|
|
64
|
-
Requires-Dist: ty==0.0.
|
|
65
|
+
Requires-Dist: ty==0.0.78; extra == "dev"
|
|
65
66
|
Requires-Dist: types-requests==2.33.0.20260712; extra == "dev"
|
|
66
|
-
Requires-Dist: vale==3.
|
|
67
|
+
Requires-Dist: vale==3.20.0.0; extra == "dev"
|
|
67
68
|
Requires-Dist: vulture==2.16; extra == "dev"
|
|
68
|
-
Requires-Dist: vws-python-mock==2026.
|
|
69
|
-
Requires-Dist: vws-test-fixtures==
|
|
69
|
+
Requires-Dist: vws-python-mock==2026.9.6; extra == "dev"
|
|
70
|
+
Requires-Dist: vws-test-fixtures==2026.8.26; extra == "dev"
|
|
70
71
|
Requires-Dist: yamlfix==1.19.1; extra == "dev"
|
|
71
|
-
Requires-Dist: zizmor==1.
|
|
72
|
+
Requires-Dist: zizmor==1.30.0; extra == "dev"
|
|
72
73
|
Provides-Extra: release
|
|
73
74
|
Requires-Dist: check-wheel-contents==0.6.3; extra == "release"
|
|
74
75
|
Requires-Dist: towncrier==25.8.0; extra == "release"
|
|
@@ -186,6 +186,44 @@ Dataset generation happens in the background, and the generated dataset is downl
|
|
|
186
186
|
dataset_type=ModelTargetDatasetType.STANDARD,
|
|
187
187
|
)
|
|
188
188
|
|
|
189
|
+
HTTP transports
|
|
190
|
+
---------------
|
|
191
|
+
|
|
192
|
+
By default, the synchronous clients make requests with `requests`_ and the asynchronous clients make requests with `httpx`_.
|
|
193
|
+
To use another HTTP library, pass a transport from :mod:`vws.transports` to a client.
|
|
194
|
+
|
|
195
|
+
Transports are available for `requests`_, `httpx`_ and `HTTPX2`_.
|
|
196
|
+
``httpx`` and ``httpx2`` are separate packages with separate client, response and exception classes.
|
|
197
|
+
``HTTPXTransport`` and ``AsyncHTTPXTransport`` use ``httpx`` and raise ``httpx`` exceptions.
|
|
198
|
+
``HTTPX2Transport`` and ``AsyncHTTPX2Transport`` use ``httpx2`` and raise ``httpx2`` exceptions.
|
|
199
|
+
|
|
200
|
+
.. clear-namespace
|
|
201
|
+
|
|
202
|
+
.. code-block:: python
|
|
203
|
+
|
|
204
|
+
"""List targets using HTTPX2."""
|
|
205
|
+
|
|
206
|
+
import os
|
|
207
|
+
|
|
208
|
+
from vws import VWS
|
|
209
|
+
from vws.transports import HTTPX2Transport
|
|
210
|
+
|
|
211
|
+
server_access_key = os.environ["VWS_SERVER_ACCESS_KEY"]
|
|
212
|
+
server_secret_key = os.environ["VWS_SERVER_SECRET_KEY"]
|
|
213
|
+
|
|
214
|
+
vws_client = VWS(
|
|
215
|
+
server_access_key=server_access_key,
|
|
216
|
+
server_secret_key=server_secret_key,
|
|
217
|
+
transport=HTTPX2Transport(),
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
# This database has no targets.
|
|
221
|
+
assert not vws_client.list_targets()
|
|
222
|
+
|
|
223
|
+
.. _requests: https://pypi.org/project/requests/
|
|
224
|
+
.. _httpx: https://pypi.org/project/httpx/
|
|
225
|
+
.. _HTTPX2: https://httpx2.pydantic.dev/
|
|
226
|
+
|
|
189
227
|
Testing
|
|
190
228
|
-------
|
|
191
229
|
|