Datasphere-API 0.1.0__tar.gz → 0.1.1__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 (43) hide show
  1. datasphere_api-0.1.1/.commitlintrc.json +7 -0
  2. datasphere_api-0.1.1/.editorconfig +27 -0
  3. datasphere_api-0.1.1/.gitattributes +2 -0
  4. datasphere_api-0.1.1/.github/dependabot.yml +11 -0
  5. datasphere_api-0.1.1/.github/workflows/ci.yml +78 -0
  6. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/.github/workflows/release-please.yml +1 -1
  7. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/.github/workflows/release.yml +5 -5
  8. datasphere_api-0.1.1/.pre-commit-config.yaml +32 -0
  9. datasphere_api-0.1.1/.release-please-manifest.json +1 -0
  10. datasphere_api-0.1.1/.vscode/extensions.json +7 -0
  11. datasphere_api-0.1.1/.vscode/settings.json +3 -0
  12. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/CHANGELOG.md +7 -0
  13. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/LICENSE +1 -1
  14. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/PKG-INFO +5 -1
  15. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/README.md +4 -0
  16. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/pyproject.toml +2 -1
  17. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/uv.lock +128 -0
  18. datasphere_api-0.1.0/.release-please-manifest.json +0 -1
  19. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/.gitignore +0 -0
  20. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/.python-version +0 -0
  21. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/.release-please-config.json +0 -0
  22. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/__init__.py +0 -0
  23. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/auth.py +0 -0
  24. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/client.py +0 -0
  25. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/config.py +0 -0
  26. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/exceptions.py +0 -0
  27. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/models.py +0 -0
  28. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/py.typed +0 -0
  29. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/resources/__init__.py +0 -0
  30. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/resources/analytical_models.py +0 -0
  31. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/resources/base.py +0 -0
  32. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/resources/remote_tables.py +0 -0
  33. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/resources/task_chains.py +0 -0
  34. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/src/datasphere_api/resources/views.py +0 -0
  35. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/__init__.py +0 -0
  36. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/conftest.py +0 -0
  37. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_analytical_models.py +0 -0
  38. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_auth.py +0 -0
  39. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_client.py +0 -0
  40. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_config.py +0 -0
  41. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_remote_tables.py +0 -0
  42. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_task_chains.py +0 -0
  43. {datasphere_api-0.1.0 → datasphere_api-0.1.1}/tests/test_views.py +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends": ["@commitlint/config-conventional"],
3
+ "rules": {
4
+ "body-max-line-length": [0, "always", 100],
5
+ "footer-max-line-length": [0, "always", 100]
6
+ }
7
+ }
@@ -0,0 +1,27 @@
1
+ # Reference: https://editorconfig.org
2
+ # Top-most EditorConfig file
3
+ root = true
4
+
5
+ # Unix-style newlines with a newline ending every file
6
+ [*]
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+
10
+ # Default charset
11
+ charset = utf-8
12
+
13
+ # Indentation
14
+ indent_style = space
15
+ indent_size = 4
16
+
17
+ # Whitespace
18
+ trim_trailing_whitespace = true
19
+
20
+ [*.py]
21
+ max_line_length = 79
22
+
23
+ [*.{yml,yaml,json,toml}]
24
+ indent_size = 2
25
+
26
+ [*.md]
27
+ trim_trailing_whitespace = false
@@ -0,0 +1,2 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
@@ -0,0 +1,11 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+
8
+ - package-ecosystem: "uv"
9
+ directory: "/"
10
+ schedule:
11
+ interval: "weekly"
@@ -0,0 +1,78 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ concurrency:
12
+ group: ci-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ lint:
17
+ name: Lint (ruff)
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: astral-sh/setup-uv@v7
22
+ with:
23
+ enable-cache: true
24
+ - run: uv sync --no-dev
25
+ - run: uv run --with ruff ruff check .
26
+
27
+ test:
28
+ name: Test (Python ${{ matrix.python-version }} on ${{ matrix.os }})
29
+ runs-on: ${{ matrix.os }}
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ os: [ubuntu-latest, macos-latest, windows-latest]
34
+ python-version: ["3.12", "3.13", "3.14"]
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+ - uses: astral-sh/setup-uv@v7
38
+ with:
39
+ enable-cache: true
40
+ - run: uv python install ${{ matrix.python-version }}
41
+ - run: uv sync --python ${{ matrix.python-version }}
42
+ - run: uv run pytest
43
+
44
+ commitlint:
45
+ name: Commit messages
46
+ runs-on: ubuntu-latest
47
+ if: github.event_name == 'pull_request'
48
+ permissions:
49
+ contents: read
50
+ pull-requests: read
51
+ steps:
52
+ - uses: actions/checkout@v4
53
+ with:
54
+ fetch-depth: 0
55
+ - uses: wagoid/commitlint-github-action@v6
56
+ with:
57
+ configFile: .commitlintrc.json
58
+
59
+ branch-name:
60
+ name: Branch name
61
+ runs-on: ubuntu-latest
62
+ if: github.event_name == 'pull_request'
63
+ steps:
64
+ - name: Validate branch name
65
+ run: |
66
+ name="${{ github.head_ref }}"
67
+ # Exempt automation branches whose names follow each tool's
68
+ # own convention (Dependabot, release-please).
69
+ if [[ "$name" == dependabot/* ]] \
70
+ || [[ "$name" == release-please--* ]]; then
71
+ echo "::notice::Skipping branch-name check for bot branch '$name'"
72
+ exit 0
73
+ fi
74
+ pattern='^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)/[a-z0-9._-]+$'
75
+ if ! echo "$name" | grep -Eq "$pattern"; then
76
+ echo "::error::Branch '$name' must match: $pattern"
77
+ exit 1
78
+ fi
@@ -12,7 +12,7 @@ jobs:
12
12
  release-please:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
- - uses: googleapis/release-please-action@v4
15
+ - uses: googleapis/release-please-action@v5
16
16
  with:
17
17
  token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
18
18
  config-file: .release-please-config.json
@@ -17,9 +17,9 @@ jobs:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
19
  - uses: actions/checkout@v4
20
- - uses: astral-sh/setup-uv@v6
20
+ - uses: astral-sh/setup-uv@v7
21
21
  - run: uv build
22
- - uses: actions/upload-artifact@v4
22
+ - uses: actions/upload-artifact@v7
23
23
  with:
24
24
  name: dist
25
25
  path: dist/
@@ -35,7 +35,7 @@ jobs:
35
35
  permissions:
36
36
  id-token: write
37
37
  steps:
38
- - uses: actions/download-artifact@v4
38
+ - uses: actions/download-artifact@v8
39
39
  with:
40
40
  name: dist
41
41
  path: dist/
@@ -50,11 +50,11 @@ jobs:
50
50
  permissions:
51
51
  contents: write
52
52
  steps:
53
- - uses: actions/download-artifact@v4
53
+ - uses: actions/download-artifact@v8
54
54
  with:
55
55
  name: dist
56
56
  path: dist/
57
- - uses: softprops/action-gh-release@v2
57
+ - uses: softprops/action-gh-release@v3
58
58
  with:
59
59
  tag_name: ${{ github.ref_name }}
60
60
  files: dist/*
@@ -0,0 +1,32 @@
1
+ default_language_version:
2
+ python: python3.12
3
+
4
+ repos:
5
+ - repo: https://github.com/pre-commit/pre-commit-hooks
6
+ rev: v5.0.0
7
+ hooks:
8
+ - id: trailing-whitespace
9
+ - id: end-of-file-fixer
10
+ - id: check-yaml
11
+ - id: check-toml
12
+ - id: check-added-large-files
13
+ - id: check-merge-conflict
14
+ - id: mixed-line-ending
15
+ args: [--fix=lf]
16
+
17
+ - repo: https://github.com/astral-sh/ruff-pre-commit
18
+ rev: v0.15.12
19
+ hooks:
20
+ - id: ruff
21
+ args: [--fix]
22
+
23
+ - repo: https://github.com/compilerla/conventional-pre-commit
24
+ rev: v3.6.0
25
+ hooks:
26
+ - id: conventional-pre-commit
27
+ stages: [commit-msg]
28
+
29
+ - repo: https://github.com/gitleaks/gitleaks
30
+ rev: v8.30.1
31
+ hooks:
32
+ - id: gitleaks
@@ -0,0 +1 @@
1
+ {".":"0.1.1"}
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "charliermarsh.ruff",
4
+ "editorconfig.editorconfig",
5
+ "vivaxy.vscode-conventional-commits"
6
+ ]
7
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "editor.rulers": [79]
3
+ }
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.1](https://github.com/peterschwps/SAP-Datasphere-API/compare/v0.1.0...v0.1.1) (2026-07-07)
4
+
5
+
6
+ ### Documentation
7
+
8
+ * added readme badges ([7a96367](https://github.com/peterschwps/SAP-Datasphere-API/commit/7a96367516c011ad859063ef2aab9c37ee53a44e))
9
+
3
10
  ## 0.1.0 (2026-07-07)
4
11
 
5
12
 
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Datasphere-API
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Unofficial async Python client for the SAP Datasphere automation APIs.
5
5
  Project-URL: Homepage, https://github.com/peterschwps/SAP-Datasphere-API
6
6
  Project-URL: Repository, https://github.com/peterschwps/SAP-Datasphere-API
@@ -25,6 +25,10 @@ Description-Content-Type: text/markdown
25
25
 
26
26
  # Datasphere-API
27
27
 
28
+ [![CI](https://github.com/peterschwps/SAP-Datasphere-API/actions/workflows/ci.yml/badge.svg)](https://github.com/peterschwps/SAP-Datasphere-API/actions/workflows/ci.yml)
29
+ [![PyPI](https://img.shields.io/pypi/v/Datasphere-API)](https://pypi.org/project/Datasphere-API/)
30
+ [![Python](https://img.shields.io/pypi/pyversions/Datasphere-API)](https://pypi.org/project/Datasphere-API/)
31
+
28
32
  Unofficial async Python client for the SAP Datasphere automation APIs.
29
33
  This library powers the
30
34
  [SAP-Datasphere-CLI](https://github.com/peterschwps/SAP-Datasphere-CLI)
@@ -1,5 +1,9 @@
1
1
  # Datasphere-API
2
2
 
3
+ [![CI](https://github.com/peterschwps/SAP-Datasphere-API/actions/workflows/ci.yml/badge.svg)](https://github.com/peterschwps/SAP-Datasphere-API/actions/workflows/ci.yml)
4
+ [![PyPI](https://img.shields.io/pypi/v/Datasphere-API)](https://pypi.org/project/Datasphere-API/)
5
+ [![Python](https://img.shields.io/pypi/pyversions/Datasphere-API)](https://pypi.org/project/Datasphere-API/)
6
+
3
7
  Unofficial async Python client for the SAP Datasphere automation APIs.
4
8
  This library powers the
5
9
  [SAP-Datasphere-CLI](https://github.com/peterschwps/SAP-Datasphere-CLI)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Datasphere-API"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "Unofficial async Python client for the SAP Datasphere automation APIs."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -62,6 +62,7 @@ typeCheckingMode = "basic"
62
62
 
63
63
  [dependency-groups]
64
64
  dev = [
65
+ "pre-commit>=4.6.0",
65
66
  "pyright>=1.1.405",
66
67
  "pytest>=9.0.0",
67
68
  "pytest-asyncio>=1.3.0",
@@ -24,6 +24,15 @@ wheels = [
24
24
  { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" },
25
25
  ]
26
26
 
27
+ [[package]]
28
+ name = "cfgv"
29
+ version = "3.5.0"
30
+ source = { registry = "https://pypi.org/simple" }
31
+ sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" }
32
+ wheels = [
33
+ { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" },
34
+ ]
35
+
27
36
  [[package]]
28
37
  name = "colorama"
29
38
  version = "0.4.6"
@@ -114,6 +123,7 @@ dependencies = [
114
123
 
115
124
  [package.dev-dependencies]
116
125
  dev = [
126
+ { name = "pre-commit" },
117
127
  { name = "pyright" },
118
128
  { name = "pytest" },
119
129
  { name = "pytest-asyncio" },
@@ -131,6 +141,7 @@ requires-dist = [
131
141
 
132
142
  [package.metadata.requires-dev]
133
143
  dev = [
144
+ { name = "pre-commit", specifier = ">=4.6.0" },
134
145
  { name = "pyright", specifier = ">=1.1.405" },
135
146
  { name = "pytest", specifier = ">=9.0.0" },
136
147
  { name = "pytest-asyncio", specifier = ">=1.3.0" },
@@ -139,6 +150,24 @@ dev = [
139
150
  { name = "ruff", specifier = ">=0.13.0" },
140
151
  ]
141
152
 
153
+ [[package]]
154
+ name = "distlib"
155
+ version = "0.4.3"
156
+ source = { registry = "https://pypi.org/simple" }
157
+ sdist = { url = "https://files.pythonhosted.org/packages/c9/02/bd72be9134d25ed783ecbbc38a539ffaefbf90c78418c7fb7229600dbac7/distlib-0.4.3.tar.gz", hash = "sha256:f152097224a0ae24be5a0f6bae1b9359af82133bce63f98a95f86cae1aede9ed", size = 615141, upload-time = "2026-06-12T08:04:52.847Z" }
158
+ wheels = [
159
+ { url = "https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl", hash = "sha256:4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b", size = 470628, upload-time = "2026-06-12T08:04:50.506Z" },
160
+ ]
161
+
162
+ [[package]]
163
+ name = "filelock"
164
+ version = "3.29.6"
165
+ source = { registry = "https://pypi.org/simple" }
166
+ sdist = { url = "https://files.pythonhosted.org/packages/e0/c8/35bdf04fb30755e2ed758f877edf3eb4a243c2463d3a258cc28b18b7a6e2/filelock-3.29.6.tar.gz", hash = "sha256:895c532ef3f4ef04972b9446a8c4e2931a5c399ff3c4be4c9369f2639b80f793", size = 70301, upload-time = "2026-07-06T23:08:08.577Z" }
167
+ wheels = [
168
+ { url = "https://files.pythonhosted.org/packages/bb/49/7467c2946ccd9617f7da38187071bdc45bb9a95df51f4d63d6622432ce4e/filelock-3.29.6-py3-none-any.whl", hash = "sha256:14d5f5597d2e0c4dbd774cfb6d8132da1db44da83732aab679d54f7dcf97ab65", size = 45478, upload-time = "2026-07-06T23:08:07.197Z" },
169
+ ]
170
+
142
171
  [[package]]
143
172
  name = "greenlet"
144
173
  version = "3.5.3"
@@ -243,6 +272,15 @@ wheels = [
243
272
  { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
244
273
  ]
245
274
 
275
+ [[package]]
276
+ name = "identify"
277
+ version = "2.6.19"
278
+ source = { registry = "https://pypi.org/simple" }
279
+ sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" }
280
+ wheels = [
281
+ { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" },
282
+ ]
283
+
246
284
  [[package]]
247
285
  name = "idna"
248
286
  version = "3.18"
@@ -316,6 +354,22 @@ wheels = [
316
354
  { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
317
355
  ]
318
356
 
357
+ [[package]]
358
+ name = "pre-commit"
359
+ version = "4.6.0"
360
+ source = { registry = "https://pypi.org/simple" }
361
+ dependencies = [
362
+ { name = "cfgv" },
363
+ { name = "identify" },
364
+ { name = "nodeenv" },
365
+ { name = "pyyaml" },
366
+ { name = "virtualenv" },
367
+ ]
368
+ sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", hash = "sha256:718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9", size = 198525, upload-time = "2026-04-21T20:31:41.613Z" }
369
+ wheels = [
370
+ { url = "https://files.pythonhosted.org/packages/80/6e/4b28b62ecb6aae56769c34a8ff1d661473ec1e9519e2d5f8b2c150086b26/pre_commit-4.6.0-py2.py3-none-any.whl", hash = "sha256:e2cf246f7299edcabcf15f9b0571fdce06058527f0a06535068a86d38089f29b", size = 226472, upload-time = "2026-04-21T20:31:40.092Z" },
371
+ ]
372
+
319
373
  [[package]]
320
374
  name = "pyee"
321
375
  version = "13.0.1"
@@ -393,6 +447,65 @@ wheels = [
393
447
  { url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678", size = 22876, upload-time = "2026-03-21T20:11:14.438Z" },
394
448
  ]
395
449
 
450
+ [[package]]
451
+ name = "python-discovery"
452
+ version = "1.4.3"
453
+ source = { registry = "https://pypi.org/simple" }
454
+ dependencies = [
455
+ { name = "filelock" },
456
+ { name = "platformdirs" },
457
+ ]
458
+ sdist = { url = "https://files.pythonhosted.org/packages/66/26/8b004cc36f430345136f6f00fa1aa9ed596c8ed1e8504625fa79522ff39c/python_discovery-1.4.3.tar.gz", hash = "sha256:ad57d7045a862460d4a235986c33f13ed707d3aeb9153fa47eb7dfd0d4673289", size = 70438, upload-time = "2026-07-03T13:21:51.621Z" }
459
+ wheels = [
460
+ { url = "https://files.pythonhosted.org/packages/28/78/9b77ecb4644d1bbea94d29abf78f21c47eca6eb79e9745b702ec0bed2e19/python_discovery-1.4.3-py3-none-any.whl", hash = "sha256:b6e1e4a7d9e3f6948c39746ffe8218225162d738ba39d05ab1d2f6c1cac4878c", size = 33885, upload-time = "2026-07-03T13:21:50.174Z" },
461
+ ]
462
+
463
+ [[package]]
464
+ name = "pyyaml"
465
+ version = "6.0.3"
466
+ source = { registry = "https://pypi.org/simple" }
467
+ sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
468
+ wheels = [
469
+ { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" },
470
+ { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" },
471
+ { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" },
472
+ { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" },
473
+ { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" },
474
+ { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" },
475
+ { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" },
476
+ { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" },
477
+ { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" },
478
+ { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" },
479
+ { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" },
480
+ { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" },
481
+ { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" },
482
+ { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" },
483
+ { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" },
484
+ { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" },
485
+ { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" },
486
+ { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" },
487
+ { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" },
488
+ { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" },
489
+ { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" },
490
+ { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" },
491
+ { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" },
492
+ { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" },
493
+ { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" },
494
+ { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" },
495
+ { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" },
496
+ { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" },
497
+ { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" },
498
+ { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" },
499
+ { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" },
500
+ { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" },
501
+ { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" },
502
+ { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" },
503
+ { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" },
504
+ { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" },
505
+ { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" },
506
+ { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
507
+ ]
508
+
396
509
  [[package]]
397
510
  name = "respx"
398
511
  version = "0.23.1"
@@ -438,3 +551,18 @@ sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3
438
551
  wheels = [
439
552
  { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" },
440
553
  ]
554
+
555
+ [[package]]
556
+ name = "virtualenv"
557
+ version = "21.6.0"
558
+ source = { registry = "https://pypi.org/simple" }
559
+ dependencies = [
560
+ { name = "distlib" },
561
+ { name = "filelock" },
562
+ { name = "platformdirs" },
563
+ { name = "python-discovery" },
564
+ ]
565
+ sdist = { url = "https://files.pythonhosted.org/packages/74/65/ec1d92091671e6407d3e7c1f5801413bb7b2b57630a50cae7750456ba0ed/virtualenv-21.6.0.tar.gz", hash = "sha256:e18a4d750f2b64dea73e72ffde3922f3c52365fabdc8157ebd3da20d031c4734", size = 5526111, upload-time = "2026-07-06T22:49:56.972Z" }
566
+ wheels = [
567
+ { url = "https://files.pythonhosted.org/packages/b8/e7/2fbd0cc1653c53eed8f10670538bb547de2b3e37aacad283faa82a71094b/virtualenv-21.6.0-py3-none-any.whl", hash = "sha256:bce9d097950fef9d81129b333babfb7767072850c2f1acce0ec536708401bfd1", size = 5506216, upload-time = "2026-07-06T22:49:54.941Z" },
568
+ ]
@@ -1 +0,0 @@
1
- {".":"0.1.0"}