vws-python 2025.3.10.1__tar.gz → 2026.2.21__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.
Files changed (70) hide show
  1. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.github/workflows/ci.yml +19 -11
  2. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.github/workflows/dependabot-merge.yml +0 -1
  3. vws_python-2026.2.21/.github/workflows/lint.yml +59 -0
  4. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.github/workflows/release.yml +12 -6
  5. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.pre-commit-config.yaml +142 -48
  6. vws_python-2026.2.21/.prettierrc +11 -0
  7. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/CHANGELOG.rst +10 -0
  8. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/LICENSE +7 -5
  9. vws_python-2026.2.21/PKG-INFO +146 -0
  10. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/README.rst +1 -3
  11. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/conftest.py +5 -9
  12. vws_python-2026.2.21/docs/source/__init__.py +1 -0
  13. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/api-reference.rst +4 -0
  14. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/conf.py +4 -3
  15. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/contributing.rst +7 -7
  16. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/index.rst +3 -3
  17. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/pyproject.toml +138 -147
  18. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/spelling_private_dict.txt +2 -0
  19. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/__init__.py +3 -3
  20. vws_python-2026.2.21/src/vws/_vws_request.py +85 -0
  21. vws_python-2026.2.21/src/vws/exceptions/__init__.py +1 -0
  22. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/exceptions/base_exceptions.py +5 -10
  23. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/exceptions/cloud_reco_exceptions.py +7 -10
  24. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/exceptions/custom_exceptions.py +9 -17
  25. vws_python-2026.2.21/src/vws/exceptions/vws_exceptions.py +204 -0
  26. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/include_target_data.py +1 -3
  27. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/query.py +15 -14
  28. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/reports.py +2 -6
  29. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/response.py +3 -6
  30. vws_python-2026.2.21/src/vws/vumark_accept.py +18 -0
  31. vws_python-2026.2.21/src/vws/vumark_service.py +143 -0
  32. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/vws.py +39 -101
  33. vws_python-2026.2.21/src/vws_python.egg-info/PKG-INFO +146 -0
  34. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws_python.egg-info/SOURCES.txt +5 -3
  35. vws_python-2026.2.21/src/vws_python.egg-info/requires.txt +51 -0
  36. vws_python-2026.2.21/tests/__init__.py +1 -0
  37. vws_python-2026.2.21/tests/conftest.py +96 -0
  38. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/tests/test_cloud_reco_exceptions.py +13 -12
  39. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/tests/test_query.py +126 -36
  40. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/tests/test_vws.py +194 -84
  41. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/tests/test_vws_exceptions.py +100 -30
  42. vws_python-2026.2.21/zizmor.yml +12 -0
  43. vws_python-2025.3.10.1/.github/workflows/lint.yml +0 -43
  44. vws_python-2025.3.10.1/Makefile +0 -12
  45. vws_python-2025.3.10.1/PKG-INFO +0 -162
  46. vws_python-2025.3.10.1/codecov.yaml +0 -7
  47. vws_python-2025.3.10.1/docs/Makefile +0 -20
  48. vws_python-2025.3.10.1/docs/source/__init__.py +0 -3
  49. vws_python-2025.3.10.1/src/vws/exceptions/__init__.py +0 -3
  50. vws_python-2025.3.10.1/src/vws/exceptions/vws_exceptions.py +0 -191
  51. vws_python-2025.3.10.1/src/vws_python.egg-info/PKG-INFO +0 -162
  52. vws_python-2025.3.10.1/src/vws_python.egg-info/requires.txt +0 -47
  53. vws_python-2025.3.10.1/tests/__init__.py +0 -3
  54. vws_python-2025.3.10.1/tests/conftest.py +0 -79
  55. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.git_archival.txt +0 -0
  56. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.gitattributes +0 -0
  57. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.github/dependabot.yml +0 -0
  58. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.github/workflows/publish-site.yml +0 -0
  59. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.gitignore +0 -0
  60. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.vscode/extensions.json +0 -0
  61. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/.vscode/settings.json +0 -0
  62. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/CODE_OF_CONDUCT.rst +0 -0
  63. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/changelog.rst +0 -0
  64. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/exceptions.rst +0 -0
  65. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/docs/source/release-process.rst +0 -0
  66. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/setup.cfg +0 -0
  67. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws/py.typed +0 -0
  68. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws_python.egg-info/dependency_links.txt +0 -0
  69. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws_python.egg-info/not-zip-safe +0 -0
  70. {vws_python-2025.3.10.1 → vws_python-2026.2.21}/src/vws_python.egg-info/top_level.txt +0 -0
@@ -1,5 +1,4 @@
1
1
  ---
2
-
3
2
  name: Test
4
3
 
5
4
  on:
@@ -12,21 +11,24 @@ on:
12
11
  # Run at 1:00 every day
13
12
  - cron: 0 1 * * *
14
13
 
14
+ permissions: {}
15
+
15
16
  jobs:
16
17
  build:
17
-
18
18
  strategy:
19
19
  matrix:
20
- python-version: ['3.13']
20
+ python-version: ['3.13', '3.14']
21
21
  platform: [ubuntu-latest, windows-latest]
22
22
 
23
23
  runs-on: ${{ matrix.platform }}
24
24
 
25
25
  steps:
26
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v6
27
+ with:
28
+ persist-credentials: false
27
29
 
28
30
  - name: Install uv
29
- uses: astral-sh/setup-uv@v5
31
+ uses: astral-sh/setup-uv@v7
30
32
  with:
31
33
  enable-cache: true
32
34
  cache-dependency-glob: '**/pyproject.toml'
@@ -35,10 +37,16 @@ jobs:
35
37
  run: |
36
38
  # We run tests against "." and not the tests directory as we test the README
37
39
  # and documentation.
38
- uv run --extra=dev --python=${{ matrix.python-version }} pytest -s -vvv --cov-fail-under 100 --cov=src/ --cov=tests/ . --cov-report=xml
40
+ uv run --extra=dev --python=${{ matrix.python-version }} pytest -s -vvv --cov-fail-under 100 --cov=src/ --cov=tests/ .
39
41
 
40
- - name: Upload coverage to Codecov
41
- uses: codecov/codecov-action@v5
42
- with:
43
- fail_ci_if_error: true
44
- token: ${{ secrets.CODECOV_TOKEN }}
42
+ completion-ci:
43
+ needs: build
44
+ runs-on: ubuntu-latest
45
+ if: always() # Run even if one matrix job fails
46
+ steps:
47
+ - name: Check matrix job status
48
+ run: |-
49
+ if ! ${{ needs.build.result == 'success' }}; then
50
+ echo "One or more matrix jobs failed"
51
+ exit 1
52
+ fi
@@ -1,5 +1,4 @@
1
1
  ---
2
-
3
2
  name: Dependabot auto-merge
4
3
  on: pull_request
5
4
 
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: Lint
3
+
4
+ on:
5
+ push:
6
+ branches: [main]
7
+ pull_request:
8
+ branches: [main]
9
+ schedule:
10
+ # * is a special character in YAML so you have to quote this string
11
+ # Run at 1:00 every day
12
+ - cron: 0 1 * * *
13
+
14
+ permissions: {}
15
+
16
+ jobs:
17
+ build:
18
+ strategy:
19
+ matrix:
20
+ python-version: ['3.13']
21
+ platform: [ubuntu-latest, windows-latest]
22
+ hook-stage: [pre-commit, pre-push, manual]
23
+
24
+ runs-on: ${{ matrix.platform }}
25
+
26
+ steps:
27
+ - uses: actions/checkout@v6
28
+ with:
29
+ persist-credentials: false
30
+
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v7
33
+ with:
34
+ enable-cache: true
35
+ cache-dependency-glob: '**/pyproject.toml'
36
+
37
+ - name: Lint
38
+ # Use bash to ensure the step fails if any command fails.
39
+ # PowerShell does not fail on intermediate command failures by default.
40
+ shell: bash
41
+ run: uv run --extra=dev prek run --all-files --hook-stage ${{ matrix.hook-stage }}
42
+ --verbose
43
+ env:
44
+ UV_PYTHON: ${{ matrix.python-version }}
45
+
46
+ - uses: pre-commit-ci/lite-action@v1.1.0
47
+ if: always()
48
+
49
+ completion-lint:
50
+ needs: build
51
+ runs-on: ubuntu-latest
52
+ if: always() # Run even if one matrix job fails
53
+ steps:
54
+ - name: Check matrix job status
55
+ run: |-
56
+ if ! ${{ needs.build.result == 'success' }}; then
57
+ echo "One or more matrix jobs failed"
58
+ exit 1
59
+ fi
@@ -1,5 +1,4 @@
1
1
  ---
2
-
3
2
  name: Release
4
3
 
5
4
  on: workflow_dispatch
@@ -21,8 +20,8 @@ jobs:
21
20
  contents: write
22
21
 
23
22
  steps:
24
- - uses: actions/checkout@v4
25
- with:
23
+ - uses: actions/checkout@v6
24
+ with: # zizmor: ignore[artipacked] git-auto-commit-action requires credentials
26
25
  # See
27
26
  # https://github.com/stefanzweifel/git-auto-commit-action?tab=readme-ov-file#push-to-protected-branches
28
27
  token: ${{ secrets.RELEASE_PAT }}
@@ -34,7 +33,7 @@ jobs:
34
33
  fetch-depth: 0
35
34
 
36
35
  - name: Install uv
37
- uses: astral-sh/setup-uv@v5
36
+ uses: astral-sh/setup-uv@v7
38
37
  with:
39
38
  enable-cache: true
40
39
  cache-dependency-glob: '**/pyproject.toml'
@@ -55,15 +54,22 @@ jobs:
55
54
  echo "underline=${underline}" >> "$GITHUB_OUTPUT"
56
55
 
57
56
  - name: Update changelog
57
+ id: update_changelog
58
58
  uses: jacobtomlinson/gha-find-replace@v3
59
59
  with:
60
60
  find: "Next\n----"
61
61
  replace: "Next\n----\n\n${{ steps.calver.outputs.release }}\n${{ steps.changelog_underline.outputs.underline\
62
- \ }}"
62
+ \ }}\n"
63
63
  include: CHANGELOG.rst
64
64
  regex: false
65
65
 
66
- - uses: stefanzweifel/git-auto-commit-action@v5
66
+ - name: Check Update changelog was modified
67
+ run: |
68
+ if [ "${{ steps.update_changelog.outputs.modifiedFiles }}" = "0" ]; then
69
+ echo "Error: No files were modified when updating changelog"
70
+ exit 1
71
+ fi
72
+ - uses: stefanzweifel/git-auto-commit-action@v7
67
73
  id: commit
68
74
  with:
69
75
  commit_message: Bump CHANGELOG
@@ -13,7 +13,7 @@ ci:
13
13
  - check-manifest
14
14
  - deptry
15
15
  - doc8
16
- - docformatter
16
+ - pydocstringformatter
17
17
  - docs
18
18
  - interrogate
19
19
  - interrogate-docs
@@ -25,6 +25,8 @@ ci:
25
25
  - pyright
26
26
  - pyright-docs
27
27
  - pyright-verifytypes
28
+ - ty
29
+ - ty-docs
28
30
  - pyroma
29
31
  - ruff-check-fix
30
32
  - ruff-check-fix-docs
@@ -38,38 +40,59 @@ ci:
38
40
  - vulture
39
41
  - vulture-docs
40
42
  - yamlfix
43
+ - zizmor
44
+ - pyrefly
45
+ - pyrefly-docs
41
46
 
42
- default_install_hook_types: [pre-commit, pre-push, commit-msg]
47
+ default_install_hook_types: [pre-commit, pre-push]
43
48
 
44
49
  repos:
45
50
  - repo: meta
46
51
  hooks:
47
52
  - id: check-useless-excludes
53
+ stages: [pre-commit]
48
54
  - repo: https://github.com/pre-commit/pre-commit-hooks
49
- rev: v5.0.0
55
+ rev: v6.0.0
50
56
  hooks:
51
57
  - id: check-added-large-files
58
+ stages: [pre-commit]
52
59
  - id: check-case-conflict
60
+ stages: [pre-commit]
53
61
  - id: check-executables-have-shebangs
62
+ stages: [pre-commit]
54
63
  - id: check-merge-conflict
64
+ stages: [pre-commit]
55
65
  - id: check-shebang-scripts-are-executable
66
+ stages: [pre-commit]
56
67
  - id: check-symlinks
68
+ stages: [pre-commit]
57
69
  - id: check-json
70
+ stages: [pre-commit]
58
71
  - id: check-toml
72
+ stages: [pre-commit]
59
73
  - id: check-vcs-permalinks
74
+ stages: [pre-commit]
60
75
  - id: check-yaml
76
+ stages: [pre-commit]
61
77
  - id: end-of-file-fixer
78
+ stages: [pre-commit]
62
79
  - id: file-contents-sorter
63
80
  files: spelling_private_dict\.txt$
81
+ stages: [pre-commit]
64
82
  - id: trailing-whitespace
83
+ stages: [pre-commit]
65
84
  - repo: https://github.com/pre-commit/pygrep-hooks
66
85
  rev: v1.10.0
67
86
  hooks:
68
87
  - id: rst-directive-colons
88
+ stages: [pre-commit]
69
89
  - id: rst-inline-touching-normal
90
+ stages: [pre-commit]
70
91
  - id: text-unicode-replacement-char
92
+ stages: [pre-commit]
71
93
  - id: rst-backticks
72
94
 
95
+ stages: [pre-commit]
73
96
  - repo: local
74
97
  hooks:
75
98
  - id: actionlint
@@ -78,37 +101,41 @@ repos:
78
101
  language: python
79
102
  pass_filenames: false
80
103
  types_or: [yaml]
81
- additional_dependencies: [uv==0.6.3]
104
+ additional_dependencies: [uv==0.9.5]
105
+ stages: [pre-commit]
82
106
 
83
- - id: docformatter
84
- name: docformatter
85
- entry: uv run --extra=dev -m docformatter --in-place
107
+ - id: pydocstringformatter
108
+ name: pydocstringformatter
109
+ entry: uv run --extra=dev pydocstringformatter
86
110
  language: python
87
111
  types_or: [python]
88
- additional_dependencies: [uv==0.6.3]
112
+ additional_dependencies: [uv==0.9.5]
113
+ stages: [pre-commit]
89
114
 
90
115
  - id: shellcheck
91
116
  name: shellcheck
92
117
  entry: uv run --extra=dev shellcheck --shell=bash
93
118
  language: python
94
- pass_filenames: false
95
119
  types_or: [shell]
96
- additional_dependencies: [uv==0.6.3]
120
+ additional_dependencies: [uv==0.9.5]
121
+ stages: [pre-commit]
97
122
 
98
123
  - id: shellcheck-docs
99
124
  name: shellcheck-docs
100
- entry: uv run --extra=dev doccmd --language=shell --language=console --command="shellcheck
101
- --shell=bash"
125
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=shell
126
+ --language=console --command="shellcheck --shell=bash"
102
127
  language: python
103
128
  types_or: [markdown, rst]
104
- additional_dependencies: [uv==0.6.3]
129
+ additional_dependencies: [uv==0.9.5]
130
+ stages: [pre-commit]
105
131
 
106
132
  - id: shfmt
107
133
  name: shfmt
108
134
  entry: uv run --extra=dev shfmt --write --space-redirects --indent=4
109
135
  language: python
110
136
  types_or: [shell]
111
- additional_dependencies: [uv==0.6.3]
137
+ additional_dependencies: [uv==0.9.5]
138
+ stages: [pre-commit]
112
139
 
113
140
  - id: shfmt-docs
114
141
  name: shfmt-docs
@@ -116,7 +143,8 @@ repos:
116
143
  --no-pad-file --command="shfmt --write --space-redirects --indent=4"
117
144
  language: python
118
145
  types_or: [markdown, rst]
119
- additional_dependencies: [uv==0.6.3]
146
+ additional_dependencies: [uv==0.9.5]
147
+ stages: [pre-commit]
120
148
 
121
149
  - id: mypy
122
150
  name: mypy
@@ -125,15 +153,16 @@ repos:
125
153
  language: python
126
154
  types_or: [python, toml]
127
155
  pass_filenames: false
128
- additional_dependencies: [uv==0.6.3]
156
+ additional_dependencies: [uv==0.9.5]
129
157
 
158
+ # We do not use --example-workers 0 due to https://github.com/python/mypy/issues/18283
130
159
  - id: mypy-docs
131
160
  name: mypy-docs
132
161
  stages: [pre-push]
133
- entry: uv run --extra=dev doccmd --language=python --command="mypy"
162
+ entry: uv run --extra=dev doccmd --no-write-to-file --language=python --command="mypy"
134
163
  language: python
135
164
  types_or: [markdown, rst]
136
- additional_dependencies: [uv==0.6.3]
165
+ additional_dependencies: [uv==0.9.5]
137
166
 
138
167
  - id: check-manifest
139
168
  name: check-manifest
@@ -141,7 +170,7 @@ repos:
141
170
  entry: uv run --extra=dev -m check_manifest
142
171
  language: python
143
172
  pass_filenames: false
144
- additional_dependencies: [uv==0.6.3]
173
+ additional_dependencies: [uv==0.9.5]
145
174
 
146
175
  - id: pyright
147
176
  name: pyright
@@ -150,15 +179,16 @@ repos:
150
179
  language: python
151
180
  types_or: [python, toml]
152
181
  pass_filenames: false
153
- additional_dependencies: [uv==0.6.3]
182
+ additional_dependencies: [uv==0.9.5]
154
183
 
155
184
  - id: pyright-docs
156
185
  name: pyright-docs
157
186
  stages: [pre-push]
158
- entry: uv run --extra=dev doccmd --language=python --command="pyright"
187
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=python
188
+ --command="pyright"
159
189
  language: python
160
190
  types_or: [markdown, rst]
161
- additional_dependencies: [uv==0.6.3]
191
+ additional_dependencies: [uv==0.9.5]
162
192
 
163
193
  - id: vulture
164
194
  name: vulture
@@ -166,14 +196,17 @@ repos:
166
196
  language: python
167
197
  types_or: [python]
168
198
  pass_filenames: false
169
- additional_dependencies: [uv==0.6.3]
199
+ additional_dependencies: [uv==0.9.5]
200
+ stages: [pre-commit]
170
201
 
171
202
  - id: vulture-docs
172
203
  name: vulture docs
173
- entry: uv run --extra=dev doccmd --language=python --command="vulture"
204
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=python
205
+ --command="vulture"
174
206
  language: python
175
207
  types_or: [markdown, rst]
176
- additional_dependencies: [uv==0.6.3]
208
+ additional_dependencies: [uv==0.9.5]
209
+ stages: [pre-commit]
177
210
 
178
211
  - id: pyroma
179
212
  name: pyroma
@@ -181,14 +214,16 @@ repos:
181
214
  language: python
182
215
  pass_filenames: false
183
216
  types_or: [toml]
184
- additional_dependencies: [uv==0.6.3]
217
+ additional_dependencies: [uv==0.9.5]
218
+ stages: [pre-commit]
185
219
 
186
220
  - id: deptry
187
221
  name: deptry
188
222
  entry: uv run --extra=dev -m deptry src/
189
223
  language: python
190
224
  pass_filenames: false
191
- additional_dependencies: [uv==0.6.3]
225
+ additional_dependencies: [uv==0.9.5]
226
+ stages: [pre-commit]
192
227
 
193
228
  - id: pylint
194
229
  name: pylint
@@ -196,36 +231,40 @@ repos:
196
231
  language: python
197
232
  stages: [manual]
198
233
  pass_filenames: false
199
- additional_dependencies: [uv==0.6.3]
234
+ additional_dependencies: [uv==0.9.5]
200
235
 
201
236
  - id: pylint-docs
202
237
  name: pylint-docs
203
- entry: uv run --extra=dev doccmd --language=python --command="pylint"
238
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=python
239
+ --command="pylint"
204
240
  language: python
205
241
  stages: [manual]
206
242
  types_or: [markdown, rst]
207
- additional_dependencies: [uv==0.6.3]
243
+ additional_dependencies: [uv==0.9.5]
208
244
 
209
245
  - id: ruff-check-fix
210
246
  name: Ruff check fix
211
247
  entry: uv run --extra=dev -m ruff check --fix
212
248
  language: python
213
249
  types_or: [python]
214
- additional_dependencies: [uv==0.6.3]
250
+ additional_dependencies: [uv==0.9.5]
251
+ stages: [pre-commit]
215
252
 
216
253
  - id: ruff-check-fix-docs
217
254
  name: Ruff check fix docs
218
255
  entry: uv run --extra=dev doccmd --language=python --command="ruff check --fix"
219
256
  language: python
220
257
  types_or: [markdown, rst]
221
- additional_dependencies: [uv==0.6.3]
258
+ additional_dependencies: [uv==0.9.5]
259
+ stages: [pre-commit]
222
260
 
223
261
  - id: ruff-format-fix
224
262
  name: Ruff format
225
263
  entry: uv run --extra=dev -m ruff format
226
264
  language: python
227
265
  types_or: [python]
228
- additional_dependencies: [uv==0.6.3]
266
+ additional_dependencies: [uv==0.9.5]
267
+ stages: [pre-commit]
229
268
 
230
269
  - id: ruff-format-fix-docs
231
270
  name: Ruff format docs
@@ -233,28 +272,33 @@ repos:
233
272
  format"
234
273
  language: python
235
274
  types_or: [markdown, rst]
236
- additional_dependencies: [uv==0.6.3]
275
+ additional_dependencies: [uv==0.9.5]
276
+ stages: [pre-commit]
237
277
 
238
278
  - id: doc8
239
279
  name: doc8
240
280
  entry: uv run --extra=dev -m doc8
241
281
  language: python
242
282
  types_or: [rst]
243
- additional_dependencies: [uv==0.6.3]
283
+ additional_dependencies: [uv==0.9.5]
284
+ stages: [pre-commit]
244
285
 
245
286
  - id: interrogate
246
287
  name: interrogate
247
288
  entry: uv run --extra=dev -m interrogate
248
289
  language: python
249
290
  types_or: [python]
250
- additional_dependencies: [uv==0.6.3]
291
+ additional_dependencies: [uv==0.9.5]
292
+ stages: [pre-commit]
251
293
 
252
294
  - id: interrogate-docs
253
295
  name: interrogate docs
254
- entry: uv run --extra=dev doccmd --language=python --command="interrogate"
296
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=python
297
+ --command="interrogate"
255
298
  language: python
256
299
  types_or: [markdown, rst]
257
- additional_dependencies: [uv==0.6.3]
300
+ additional_dependencies: [uv==0.9.5]
301
+ stages: [pre-commit]
258
302
 
259
303
  - id: pyproject-fmt-fix
260
304
  name: pyproject-fmt
@@ -262,33 +306,36 @@ repos:
262
306
  language: python
263
307
  types_or: [toml]
264
308
  files: pyproject.toml
265
- additional_dependencies: [uv==0.6.3]
309
+ additional_dependencies: [uv==0.9.5]
310
+ stages: [pre-commit]
266
311
 
267
312
  - id: linkcheck
268
313
  name: linkcheck
269
- entry: make -C docs/ linkcheck SPHINXOPTS=-W
314
+ entry: uv run --extra=dev sphinx-build -M linkcheck docs/source docs/build
315
+ -W
270
316
  language: python
271
317
  types_or: [rst]
272
318
  stages: [manual]
273
319
  pass_filenames: false
274
- additional_dependencies: [uv==0.6.3]
320
+ additional_dependencies: [uv==0.9.5]
275
321
 
276
322
  - id: spelling
277
323
  name: spelling
278
- entry: make -C docs/ spelling SPHINXOPTS=-W
324
+ entry: uv run --extra=dev sphinx-build -M spelling docs/source docs/build
325
+ -W
279
326
  language: python
280
327
  types_or: [rst]
281
328
  stages: [manual]
282
329
  pass_filenames: false
283
- additional_dependencies: [uv==0.6.3]
330
+ additional_dependencies: [uv==0.9.5]
284
331
 
285
332
  - id: docs
286
333
  name: Build Documentation
287
- entry: make docs
334
+ entry: uv run --extra=dev sphinx-build -M html docs/source docs/build -W
288
335
  language: python
289
336
  stages: [manual]
290
337
  pass_filenames: false
291
- additional_dependencies: [uv==0.6.3]
338
+ additional_dependencies: [uv==0.9.5]
292
339
 
293
340
  - id: pyright-verifytypes
294
341
  name: pyright-verifytypes
@@ -297,18 +344,65 @@ repos:
297
344
  language: python
298
345
  pass_filenames: false
299
346
  types_or: [python]
300
- additional_dependencies: [uv==0.6.3]
347
+ additional_dependencies: [uv==0.9.5]
348
+
349
+ - id: ty
350
+ name: ty
351
+ stages: [pre-push]
352
+ entry: uv run --extra=dev ty check
353
+ language: python
354
+ types_or: [python, toml]
355
+ pass_filenames: false
356
+ additional_dependencies: [uv==0.9.5]
357
+
358
+ - id: ty-docs
359
+ name: ty-docs
360
+ stages: [pre-push]
361
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=python
362
+ --command="ty check"
363
+ language: python
364
+ types_or: [markdown, rst]
365
+ additional_dependencies: [uv==0.9.5]
301
366
 
302
367
  - id: yamlfix
303
368
  name: yamlfix
304
369
  entry: uv run --extra=dev yamlfix
305
370
  language: python
306
371
  types_or: [yaml]
307
- additional_dependencies: [uv==0.6.3]
372
+ additional_dependencies: [uv==0.9.5]
373
+ stages: [pre-commit]
374
+
375
+ - id: zizmor
376
+ name: zizmor
377
+ entry: uv run --extra=dev zizmor --strict-collection .github
378
+ language: python
379
+ pass_filenames: false
380
+ types_or: [yaml]
381
+ additional_dependencies: [uv==0.9.5]
382
+ stages: [pre-commit]
308
383
 
309
384
  - id: sphinx-lint
310
385
  name: sphinx-lint
311
386
  entry: uv run --extra=dev sphinx-lint --enable=all --disable=line-too-long
312
387
  language: python
313
388
  types_or: [rst]
314
- additional_dependencies: [uv==0.6.3]
389
+ additional_dependencies: [uv==0.9.5]
390
+ stages: [pre-commit]
391
+
392
+ - id: pyrefly
393
+ name: pyrefly
394
+ stages: [pre-push]
395
+ entry: uv run --extra=dev pyrefly check
396
+ language: python
397
+ types_or: [python, toml]
398
+ pass_filenames: false
399
+ additional_dependencies: [uv==0.9.5]
400
+
401
+ - id: pyrefly-docs
402
+ name: pyrefly-docs
403
+ stages: [pre-push]
404
+ entry: uv run --extra=dev doccmd --no-write-to-file --example-workers 0 --language=python
405
+ --command="pyrefly check"
406
+ language: python
407
+ types_or: [markdown, rst]
408
+ additional_dependencies: [uv==0.9.5]
@@ -0,0 +1,11 @@
1
+ {
2
+ "overrides": [
3
+ {
4
+ "files": ["*.yaml", "*.yml"],
5
+ "options": {
6
+ "singleQuote": true,
7
+ "printWidth": 100
8
+ }
9
+ }
10
+ ]
11
+ }
@@ -4,6 +4,16 @@ Changelog
4
4
  Next
5
5
  ----
6
6
 
7
+ 2026.02.21
8
+ ----------
9
+
10
+
11
+ 2026.02.15
12
+ ----------
13
+
14
+
15
+ * Add ``request_timeout_seconds`` parameter to ``VWS`` and ``CloudRecoService``, allowing customization of the request timeout. This accepts a float or a ``(connect, read)`` tuple, matching the ``requests`` library's timeout interface. The default remains 30 seconds.
16
+
7
17
  2025.03.10.1
8
18
  ------------
9
19
 
@@ -1,4 +1,6 @@
1
- The MIT License
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Adam Dangoor
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
6
  of this software and associated documentation files (the "Software"), to deal
@@ -7,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
9
  copies of the Software, and to permit persons to whom the Software is
8
10
  furnished to do so, subject to the following conditions:
9
11
 
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
12
14
 
13
15
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
16
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
17
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.