amati 0.3.25__tar.gz → 0.3.27__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 (103) hide show
  1. {amati-0.3.25 → amati-0.3.27}/.pre-commit-config.yaml +5 -1
  2. {amati-0.3.25 → amati-0.3.27}/Dockerfile +1 -1
  3. {amati-0.3.25 → amati-0.3.27}/PKG-INFO +5 -4
  4. {amati-0.3.25 → amati-0.3.27}/README.md +1 -0
  5. {amati-0.3.25 → amati-0.3.27}/pyproject.toml +21 -4
  6. {amati-0.3.25 → amati-0.3.27}/uv.lock +84 -45
  7. {amati-0.3.25 → amati-0.3.27}/.dockerignore +0 -0
  8. {amati-0.3.25 → amati-0.3.27}/.github/actions/setup/action.yaml +0 -0
  9. {amati-0.3.25 → amati-0.3.27}/.github/dependabot.yml +0 -0
  10. {amati-0.3.25 → amati-0.3.27}/.github/workflows/checks.yaml +0 -0
  11. {amati-0.3.25 → amati-0.3.27}/.github/workflows/codeql.yml +0 -0
  12. {amati-0.3.25 → amati-0.3.27}/.github/workflows/coverage.yaml +0 -0
  13. {amati-0.3.25 → amati-0.3.27}/.github/workflows/data-refresh.yaml +0 -0
  14. {amati-0.3.25 → amati-0.3.27}/.github/workflows/dependency-review.yml +0 -0
  15. {amati-0.3.25 → amati-0.3.27}/.github/workflows/publish.yaml +0 -0
  16. {amati-0.3.25 → amati-0.3.27}/.github/workflows/scorecards.yml +0 -0
  17. {amati-0.3.25 → amati-0.3.27}/.github/workflows/tag-and-create-release.yaml +0 -0
  18. {amati-0.3.25 → amati-0.3.27}/.gitignore +0 -0
  19. {amati-0.3.25 → amati-0.3.27}/.python-version +0 -0
  20. {amati-0.3.25 → amati-0.3.27}/LICENSE +0 -0
  21. {amati-0.3.25 → amati-0.3.27}/SECURITY.md +0 -0
  22. {amati-0.3.25 → amati-0.3.27}/TEMPLATE.html +0 -0
  23. {amati-0.3.25 → amati-0.3.27}/amati/__init__.py +0 -0
  24. {amati-0.3.25 → amati-0.3.27}/amati/_data/files/http-status-codes.json +0 -0
  25. {amati-0.3.25 → amati-0.3.27}/amati/_data/files/iso9110.json +0 -0
  26. {amati-0.3.25 → amati-0.3.27}/amati/_data/files/media-types.json +0 -0
  27. {amati-0.3.25 → amati-0.3.27}/amati/_data/files/schemes.json +0 -0
  28. {amati-0.3.25 → amati-0.3.27}/amati/_data/files/spdx-licences.json +0 -0
  29. {amati-0.3.25 → amati-0.3.27}/amati/_data/files/tlds.json +0 -0
  30. {amati-0.3.25 → amati-0.3.27}/amati/_data/http_status_code.py +0 -0
  31. {amati-0.3.25 → amati-0.3.27}/amati/_data/iso9110.py +0 -0
  32. {amati-0.3.25 → amati-0.3.27}/amati/_data/media_types.py +0 -0
  33. {amati-0.3.25 → amati-0.3.27}/amati/_data/refresh.py +0 -0
  34. {amati-0.3.25 → amati-0.3.27}/amati/_data/schemes.py +0 -0
  35. {amati-0.3.25 → amati-0.3.27}/amati/_data/spdx_licences.py +0 -0
  36. {amati-0.3.25 → amati-0.3.27}/amati/_data/tlds.py +0 -0
  37. {amati-0.3.25 → amati-0.3.27}/amati/_error_handler.py +0 -0
  38. {amati-0.3.25 → amati-0.3.27}/amati/_logging.py +0 -0
  39. {amati-0.3.25 → amati-0.3.27}/amati/_references.py +0 -0
  40. {amati-0.3.25 → amati-0.3.27}/amati/_resolve_forward_references.py +0 -0
  41. {amati-0.3.25 → amati-0.3.27}/amati/amati.py +0 -0
  42. {amati-0.3.25 → amati-0.3.27}/amati/exceptions.py +0 -0
  43. {amati-0.3.25 → amati-0.3.27}/amati/fields/__init__.py +0 -0
  44. {amati-0.3.25 → amati-0.3.27}/amati/fields/_custom_types.py +0 -0
  45. {amati-0.3.25 → amati-0.3.27}/amati/fields/commonmark.py +0 -0
  46. {amati-0.3.25 → amati-0.3.27}/amati/fields/email.py +0 -0
  47. {amati-0.3.25 → amati-0.3.27}/amati/fields/http_status_codes.py +0 -0
  48. {amati-0.3.25 → amati-0.3.27}/amati/fields/iso9110.py +0 -0
  49. {amati-0.3.25 → amati-0.3.27}/amati/fields/json.py +0 -0
  50. {amati-0.3.25 → amati-0.3.27}/amati/fields/media.py +0 -0
  51. {amati-0.3.25 → amati-0.3.27}/amati/fields/oas.py +0 -0
  52. {amati-0.3.25 → amati-0.3.27}/amati/fields/spdx_licences.py +0 -0
  53. {amati-0.3.25 → amati-0.3.27}/amati/fields/uri.py +0 -0
  54. {amati-0.3.25 → amati-0.3.27}/amati/file_handler.py +0 -0
  55. {amati-0.3.25 → amati-0.3.27}/amati/grammars/oas.py +0 -0
  56. {amati-0.3.25 → amati-0.3.27}/amati/grammars/rfc6901.py +0 -0
  57. {amati-0.3.25 → amati-0.3.27}/amati/grammars/rfc7159.py +0 -0
  58. {amati-0.3.25 → amati-0.3.27}/amati/model_validators.py +0 -0
  59. {amati-0.3.25 → amati-0.3.27}/amati/py.typed +0 -0
  60. {amati-0.3.25 → amati-0.3.27}/amati/validators/__init__.py +0 -0
  61. {amati-0.3.25 → amati-0.3.27}/amati/validators/_discriminators.py +0 -0
  62. {amati-0.3.25 → amati-0.3.27}/amati/validators/generic.py +0 -0
  63. {amati-0.3.25 → amati-0.3.27}/amati/validators/oas304.py +0 -0
  64. {amati-0.3.25 → amati-0.3.27}/amati/validators/oas311.py +0 -0
  65. {amati-0.3.25 → amati-0.3.27}/bin/checks.sh +0 -0
  66. {amati-0.3.25 → amati-0.3.27}/bin/startup.sh +0 -0
  67. {amati-0.3.25 → amati-0.3.27}/bin/upgrade-python.sh +0 -0
  68. {amati-0.3.25 → amati-0.3.27}/bin/uv-upgrade-from-main.sh +0 -0
  69. {amati-0.3.25 → amati-0.3.27}/scripts/setup_test_specs.py +0 -0
  70. {amati-0.3.25 → amati-0.3.27}/tests/__init__.py +0 -0
  71. {amati-0.3.25 → amati-0.3.27}/tests/data/.amati.tests.yaml +0 -0
  72. {amati-0.3.25 → amati-0.3.27}/tests/data/DigitalOcean-public.v2.errors.json +0 -0
  73. {amati-0.3.25 → amati-0.3.27}/tests/data/api.github.com.json.errors.json +0 -0
  74. {amati-0.3.25 → amati-0.3.27}/tests/data/api.github.com.yaml.errors.json +0 -0
  75. {amati-0.3.25 → amati-0.3.27}/tests/data/discourse.yml.errors.json +0 -0
  76. {amati-0.3.25 → amati-0.3.27}/tests/data/invalid-openapi.yaml +0 -0
  77. {amati-0.3.25 → amati-0.3.27}/tests/data/next-api.github.com.json.errors.json +0 -0
  78. {amati-0.3.25 → amati-0.3.27}/tests/data/openapi.yaml +0 -0
  79. {amati-0.3.25 → amati-0.3.27}/tests/data/openapi.yaml.gz +0 -0
  80. {amati-0.3.25 → amati-0.3.27}/tests/fields/__init__.py +0 -0
  81. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_email.py +0 -0
  82. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_http_status_codes.py +0 -0
  83. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_iso9110.py +0 -0
  84. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_media.py +0 -0
  85. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_oas.py +0 -0
  86. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_spdx_licences.py +0 -0
  87. {amati-0.3.25 → amati-0.3.27}/tests/fields/test_uri.py +0 -0
  88. {amati-0.3.25 → amati-0.3.27}/tests/model_validators/test_all_of.py +0 -0
  89. {amati-0.3.25 → amati-0.3.27}/tests/model_validators/test_at_least_one.py +0 -0
  90. {amati-0.3.25 → amati-0.3.27}/tests/model_validators/test_if_then.py +0 -0
  91. {amati-0.3.25 → amati-0.3.27}/tests/model_validators/test_only_one.py +0 -0
  92. {amati-0.3.25 → amati-0.3.27}/tests/references/test_uri_collector_mixin.py +0 -0
  93. {amati-0.3.25 → amati-0.3.27}/tests/references/test_uri_reference.py +0 -0
  94. {amati-0.3.25 → amati-0.3.27}/tests/references/test_uri_registry.py +0 -0
  95. {amati-0.3.25 → amati-0.3.27}/tests/strategies.py +0 -0
  96. {amati-0.3.25 → amati-0.3.27}/tests/test_amati.py +0 -0
  97. {amati-0.3.25 → amati-0.3.27}/tests/test_external_specs.py +0 -0
  98. {amati-0.3.25 → amati-0.3.27}/tests/test_logging.py +0 -0
  99. {amati-0.3.25 → amati-0.3.27}/tests/validators/__init__.py +0 -0
  100. {amati-0.3.25 → amati-0.3.27}/tests/validators/test_generic.py +0 -0
  101. {amati-0.3.25 → amati-0.3.27}/tests/validators/test_licence_object.py +0 -0
  102. {amati-0.3.25 → amati-0.3.27}/tests/validators/test_security_scheme_object.py +0 -0
  103. {amati-0.3.25 → amati-0.3.27}/tests/validators/test_server_variable_object.py +0 -0
@@ -1,7 +1,7 @@
1
1
  repos:
2
2
  - repo: https://github.com/astral-sh/ruff-pre-commit
3
3
  # Ruff version.
4
- rev: v0.14.11
4
+ rev: v0.14.13
5
5
  hooks:
6
6
  # Run the linter.
7
7
  - id: ruff-check
@@ -17,3 +17,7 @@ repos:
17
17
  hooks:
18
18
  - id: shellcheck
19
19
  args: [-x]
20
+ - repo: https://github.com/fpgmaas/deptry.git
21
+ rev: 0.24.0
22
+ hooks:
23
+ - id: deptry
@@ -1,4 +1,4 @@
1
- FROM python:3.14.2-slim@sha256:3955a7dd66ccf92b68d0232f7f86d892eaf75255511dc7e98961bdc990dc6c9b
1
+ FROM python:3.14.2-slim@sha256:9b81fe9acff79e61affb44aaf3b6ff234392e8ca477cb86c9f7fd11732ce9b6a
2
2
 
3
3
  ENV PYTHONUNBUFFERED=1
4
4
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: amati
3
- Version: 0.3.25
3
+ Version: 0.3.27
4
4
  Summary: Validates that a .yaml or .json file conforms to the OpenAPI Specifications 3.x.
5
5
  Project-URL: Homepage, https://github.com/gwyli/amati
6
6
  Project-URL: Issues, https://github.com/gwyli/amati/issues
@@ -24,11 +24,11 @@ Requires-Dist: abnf>=2.3.1
24
24
  Requires-Dist: bs4>=0.0.2
25
25
  Requires-Dist: idna>=3.10
26
26
  Requires-Dist: jinja2>=3.1.6
27
- Requires-Dist: jsonpickle>=4.1.1
28
27
  Requires-Dist: jsonschema>=4.24.0
29
28
  Requires-Dist: loguru>=0.7.3
30
- Requires-Dist: pydantic>=2.11.5
31
- Requires-Dist: pyyaml>=6.0.2
29
+ Requires-Dist: pydantic-core>=2.41.5
30
+ Requires-Dist: pydantic>=2.12.5
31
+ Requires-Dist: pyyaml>=6.0.3
32
32
  Requires-Dist: requests>=2.32.4
33
33
  Description-Content-Type: text/markdown
34
34
 
@@ -116,6 +116,7 @@ This project uses:
116
116
  * [Hypothesis](https://hypothesis.readthedocs.io/en/latest/index.html) for test data generation
117
117
  * [Coverage](https://coverage.readthedocs.io/en/7.6.8/) on both the tests and code for test coverage
118
118
  * [Shellcheck](https://github.com/koalaman/shellcheck/wiki) for as SAST for shell scripts
119
+ * [deptry](https://deptry.com/) to check for missing or unused dependencies
119
120
 
120
121
  It's expected that there are no errors and 100% of the code is reached and executed. The strategy for test coverage is based on parsing test specifications and not unit tests.
121
122
  amati runs tests on the external specifications, detailed in `tests/data/.amati.tests.yaml`. To be able to run these tests the GitHub repos containing the specifications need to be available locally. Specific revisions of the repos can be downloaded by running the following, which will clone the repos into `.amati/amati-tests-specs/<repo-name>`.
@@ -82,6 +82,7 @@ This project uses:
82
82
  * [Hypothesis](https://hypothesis.readthedocs.io/en/latest/index.html) for test data generation
83
83
  * [Coverage](https://coverage.readthedocs.io/en/7.6.8/) on both the tests and code for test coverage
84
84
  * [Shellcheck](https://github.com/koalaman/shellcheck/wiki) for as SAST for shell scripts
85
+ * [deptry](https://deptry.com/) to check for missing or unused dependencies
85
86
 
86
87
  It's expected that there are no errors and 100% of the code is reached and executed. The strategy for test coverage is based on parsing test specifications and not unit tests.
87
88
  amati runs tests on the external specifications, detailed in `tests/data/.amati.tests.yaml`. To be able to run these tests the GitHub repos containing the specifications need to be available locally. Specific revisions of the repos can be downloaded by running the following, which will clone the repos into `.amati/amati-tests-specs/<repo-name>`.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "amati"
3
- version = "0.3.25"
3
+ version = "0.3.27"
4
4
  description = "Validates that a .yaml or .json file conforms to the OpenAPI Specifications 3.x."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -29,11 +29,11 @@ dependencies = [
29
29
  "bs4>=0.0.2",
30
30
  "idna>=3.10",
31
31
  "jinja2>=3.1.6",
32
- "jsonpickle>=4.1.1",
33
32
  "jsonschema>=4.24.0",
34
33
  "loguru>=0.7.3",
35
- "pydantic>=2.11.5",
36
- "pyyaml>=6.0.2",
34
+ "pydantic>=2.12.5",
35
+ "pydantic-core>=2.41.5",
36
+ "pyyaml>=6.0.3",
37
37
  "requests>=2.32.4",
38
38
  ]
39
39
 
@@ -50,6 +50,7 @@ build-backend = "hatchling.build"
50
50
 
51
51
  [dependency-groups]
52
52
  dev = [
53
+ "deptry>=0.24.0",
53
54
  "hypothesis>=6.131.28",
54
55
  "pre-commit>=4.2.0",
55
56
  "pyright>=1.1.406",
@@ -65,6 +66,22 @@ omit=[
65
66
  "amati/_data/*",
66
67
  ]
67
68
 
69
+ [tool.deptry.package_module_name_map]
70
+ abnf="abnf"
71
+ bs4="bs4"
72
+ idna="idna"
73
+ jinja2="jinja2"
74
+ jsonschema="jsonschema"
75
+ loguru="loguru"
76
+ pydantic="pydantic"
77
+ requests="requests"
78
+ hypothesis="hypothesis"
79
+ pre_commit="pre_commit"
80
+ pyright="pyright"
81
+ pytest="pytest"
82
+ pytest-cov="pytest_cov"
83
+ ruff="ruff"
84
+
68
85
  [tool.pyright]
69
86
  reportMissingTypeStubs=false
70
87
  reportMisingImports=false # Ignore external dependencies
@@ -13,23 +13,24 @@ wheels = [
13
13
 
14
14
  [[package]]
15
15
  name = "amati"
16
- version = "0.3.25"
16
+ version = "0.3.27"
17
17
  source = { editable = "." }
18
18
  dependencies = [
19
19
  { name = "abnf" },
20
20
  { name = "bs4" },
21
21
  { name = "idna" },
22
22
  { name = "jinja2" },
23
- { name = "jsonpickle" },
24
23
  { name = "jsonschema" },
25
24
  { name = "loguru" },
26
25
  { name = "pydantic" },
26
+ { name = "pydantic-core" },
27
27
  { name = "pyyaml" },
28
28
  { name = "requests" },
29
29
  ]
30
30
 
31
31
  [package.dev-dependencies]
32
32
  dev = [
33
+ { name = "deptry" },
33
34
  { name = "hypothesis" },
34
35
  { name = "pre-commit" },
35
36
  { name = "pyright" },
@@ -44,16 +45,17 @@ requires-dist = [
44
45
  { name = "bs4", specifier = ">=0.0.2" },
45
46
  { name = "idna", specifier = ">=3.10" },
46
47
  { name = "jinja2", specifier = ">=3.1.6" },
47
- { name = "jsonpickle", specifier = ">=4.1.1" },
48
48
  { name = "jsonschema", specifier = ">=4.24.0" },
49
49
  { name = "loguru", specifier = ">=0.7.3" },
50
- { name = "pydantic", specifier = ">=2.11.5" },
51
- { name = "pyyaml", specifier = ">=6.0.2" },
50
+ { name = "pydantic", specifier = ">=2.12.5" },
51
+ { name = "pydantic-core", specifier = ">=2.41.5" },
52
+ { name = "pyyaml", specifier = ">=6.0.3" },
52
53
  { name = "requests", specifier = ">=2.32.4" },
53
54
  ]
54
55
 
55
56
  [package.metadata.requires-dev]
56
57
  dev = [
58
+ { name = "deptry", specifier = ">=0.24.0" },
57
59
  { name = "hypothesis", specifier = ">=6.131.28" },
58
60
  { name = "pre-commit", specifier = ">=4.2.0" },
59
61
  { name = "pyright", specifier = ">=1.1.406" },
@@ -148,6 +150,18 @@ wheels = [
148
150
  { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" },
149
151
  ]
150
152
 
153
+ [[package]]
154
+ name = "click"
155
+ version = "8.3.1"
156
+ source = { registry = "https://pypi.org/simple/" }
157
+ dependencies = [
158
+ { name = "colorama", marker = "sys_platform == 'win32'" },
159
+ ]
160
+ sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
161
+ wheels = [
162
+ { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
163
+ ]
164
+
151
165
  [[package]]
152
166
  name = "colorama"
153
167
  version = "0.4.6"
@@ -192,6 +206,28 @@ wheels = [
192
206
  { url = "https://files.pythonhosted.org/packages/8d/4c/1968f32fb9a2604645827e11ff84a31e59d532e01995f904723b4f5328b3/coverage-7.13.0-py3-none-any.whl", hash = "sha256:850d2998f380b1e266459ca5b47bc9e7daf9af1d070f66317972f382d46f1904", size = 210068, upload-time = "2025-12-08T13:14:36.236Z" },
193
207
  ]
194
208
 
209
+ [[package]]
210
+ name = "deptry"
211
+ version = "0.24.0"
212
+ source = { registry = "https://pypi.org/simple/" }
213
+ dependencies = [
214
+ { name = "click" },
215
+ { name = "colorama", marker = "sys_platform == 'win32'" },
216
+ { name = "packaging" },
217
+ { name = "requirements-parser" },
218
+ ]
219
+ sdist = { url = "https://files.pythonhosted.org/packages/58/aa/5cae0f25a2ac5334d5bd2782a6bcd80eecf184f433ff74b2fb0387cfbbb6/deptry-0.24.0.tar.gz", hash = "sha256:852e88af2087e03cdf9ece6916f3f58b74191ab51cc8074897951bd496ee7dbb", size = 440158, upload-time = "2025-11-09T00:31:44.637Z" }
220
+ wheels = [
221
+ { url = "https://files.pythonhosted.org/packages/21/5a/c1552996499911b6eabe874a994d9eede58ac3936d7fe7f865857b97c03f/deptry-0.24.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:a575880146bab671a62babb9825b85b4f1bda8aeaade4fcb59f9262caf91d6c7", size = 1774138, upload-time = "2025-11-09T00:31:41.896Z" },
222
+ { url = "https://files.pythonhosted.org/packages/32/b6/1dcc011fc3e6eec71601569c9de3215530563412b3714fba80dcd1a88ec8/deptry-0.24.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:00ec34b968a13c03a5268ce0211f891ace31851d916415e0a748fae9596c00d5", size = 1677340, upload-time = "2025-11-09T00:31:39.676Z" },
223
+ { url = "https://files.pythonhosted.org/packages/4a/e2/af81dfd46b457be9e8ded9472872141777fbda8af661f5d509157b165359/deptry-0.24.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ddfedafafe5cbfce31a50d4ea99d7b9074edcd08b9b94350dc739e2fb6ed7f9", size = 1782740, upload-time = "2025-11-09T00:31:28.302Z" },
224
+ { url = "https://files.pythonhosted.org/packages/ab/28/960c311aae084deef57ece41aac13cb359b06ce31b7771139e79c394a1b7/deptry-0.24.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd22fa2dbbdf4b38061ca9504f2a6ce41ec14fa5c9fe9b0b763ccc1275efebd5", size = 1845477, upload-time = "2025-11-09T00:31:33.452Z" },
225
+ { url = "https://files.pythonhosted.org/packages/f5/6c/4b972b011a06611e0cf8f4bb6bc04a3d0f9c651950ad9abe320fcbac6983/deptry-0.24.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0fbe50a2122d79cec53fdfd73a7092c05f316555a1139bcbacf3432572675977", size = 1960410, upload-time = "2025-11-09T00:31:31.174Z" },
226
+ { url = "https://files.pythonhosted.org/packages/1b/08/0eac3c72a9fd79a043cc492f3ba350c47a7be2160288353218b2c8c1bf3a/deptry-0.24.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:92bd8d331a5a6f8e6247436bc6fe384bcf86a8d69fe33442d195996fb9b20547", size = 2023832, upload-time = "2025-11-09T00:31:36.381Z" },
227
+ { url = "https://files.pythonhosted.org/packages/35/e4/23dcbc505f6f35c70ba68015774cf891ceda080331d7fd6d75e84ada9f73/deptry-0.24.0-cp39-abi3-win_amd64.whl", hash = "sha256:94b354848130d45e16d3a3039ae8177bce33828f62028c4ff8f2e1b04f7182ba", size = 1631631, upload-time = "2025-11-09T00:31:47.108Z" },
228
+ { url = "https://files.pythonhosted.org/packages/39/69/6ec1e18e27dd6f80e4fb6c5fc05a6527242ff83b81c0711d0ba470e9a144/deptry-0.24.0-cp39-abi3-win_arm64.whl", hash = "sha256:ea58709e5f3aa77c0737d8fb76166b7703201cf368fbbb14072ccda968b6703a", size = 1550504, upload-time = "2025-11-09T00:31:45.988Z" },
229
+ ]
230
+
195
231
  [[package]]
196
232
  name = "distlib"
197
233
  version = "0.4.0"
@@ -203,11 +239,11 @@ wheels = [
203
239
 
204
240
  [[package]]
205
241
  name = "filelock"
206
- version = "3.20.0"
242
+ version = "3.20.3"
207
243
  source = { registry = "https://pypi.org/simple/" }
208
- sdist = { url = "https://files.pythonhosted.org/packages/58/46/0028a82567109b5ef6e4d2a1f04a583fb513e6cf9527fcdd09afd817deeb/filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4", size = 18922, upload-time = "2025-10-08T18:03:50.056Z" }
244
+ sdist = { url = "https://files.pythonhosted.org/packages/1d/65/ce7f1b70157833bf3cb851b556a37d4547ceafc158aa9b34b36782f23696/filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1", size = 19485, upload-time = "2026-01-09T17:55:05.421Z" }
209
245
  wheels = [
210
- { url = "https://files.pythonhosted.org/packages/76/91/7216b27286936c16f5b4d0c530087e4a54eead683e6b0b73dd0c64844af6/filelock-3.20.0-py3-none-any.whl", hash = "sha256:339b4732ffda5cd79b13f4e2711a31b0365ce445d95d243bb996273d072546a2", size = 16054, upload-time = "2025-10-08T18:03:48.35Z" },
246
+ { url = "https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1", size = 16701, upload-time = "2026-01-09T17:55:04.334Z" },
211
247
  ]
212
248
 
213
249
  [[package]]
@@ -261,15 +297,6 @@ wheels = [
261
297
  { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" },
262
298
  ]
263
299
 
264
- [[package]]
265
- name = "jsonpickle"
266
- version = "4.1.1"
267
- source = { registry = "https://pypi.org/simple/" }
268
- sdist = { url = "https://files.pythonhosted.org/packages/e4/a6/d07afcfdef402900229bcca795f80506b207af13a838d4d99ad45abf530c/jsonpickle-4.1.1.tar.gz", hash = "sha256:f86e18f13e2b96c1c1eede0b7b90095bbb61d99fedc14813c44dc2f361dbbae1", size = 316885, upload-time = "2025-06-02T20:36:11.57Z" }
269
- wheels = [
270
- { url = "https://files.pythonhosted.org/packages/c1/73/04df8a6fa66d43a9fd45c30f283cc4afff17da671886e451d52af60bdc7e/jsonpickle-4.1.1-py3-none-any.whl", hash = "sha256:bb141da6057898aa2438ff268362b126826c812a1721e31cf08a6e142910dc91", size = 47125, upload-time = "2025-06-02T20:36:08.647Z" },
271
- ]
272
-
273
300
  [[package]]
274
301
  name = "jsonschema"
275
302
  version = "4.26.0"
@@ -552,6 +579,18 @@ wheels = [
552
579
  { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" },
553
580
  ]
554
581
 
582
+ [[package]]
583
+ name = "requirements-parser"
584
+ version = "0.13.0"
585
+ source = { registry = "https://pypi.org/simple/" }
586
+ dependencies = [
587
+ { name = "packaging" },
588
+ ]
589
+ sdist = { url = "https://files.pythonhosted.org/packages/95/96/fb6dbfebb524d5601d359a47c78fe7ba1eef90fc4096404aa60c9a906fbb/requirements_parser-0.13.0.tar.gz", hash = "sha256:0843119ca2cb2331de4eb31b10d70462e39ace698fd660a915c247d2301a4418", size = 22630, upload-time = "2025-05-21T13:42:05.464Z" }
590
+ wheels = [
591
+ { url = "https://files.pythonhosted.org/packages/bd/60/50fbb6ffb35f733654466f1a90d162bcbea358adc3b0871339254fbc37b2/requirements_parser-0.13.0-py3-none-any.whl", hash = "sha256:2b3173faecf19ec5501971b7222d38f04cb45bb9d87d0ad629ca71e2e62ded14", size = 14782, upload-time = "2025-05-21T13:42:04.007Z" },
592
+ ]
593
+
555
594
  [[package]]
556
595
  name = "rpds-py"
557
596
  version = "0.30.0"
@@ -591,28 +630,28 @@ wheels = [
591
630
 
592
631
  [[package]]
593
632
  name = "ruff"
594
- version = "0.14.11"
595
- source = { registry = "https://pypi.org/simple/" }
596
- sdist = { url = "https://files.pythonhosted.org/packages/d4/77/9a7fe084d268f8855d493e5031ea03fa0af8cc05887f638bf1c4e3363eb8/ruff-0.14.11.tar.gz", hash = "sha256:f6dc463bfa5c07a59b1ff2c3b9767373e541346ea105503b4c0369c520a66958", size = 5993417, upload-time = "2026-01-08T19:11:58.322Z" }
597
- wheels = [
598
- { url = "https://files.pythonhosted.org/packages/f0/a6/a4c40a5aaa7e331f245d2dc1ac8ece306681f52b636b40ef87c88b9f7afd/ruff-0.14.11-py3-none-linux_armv6l.whl", hash = "sha256:f6ff2d95cbd335841a7217bdfd9c1d2e44eac2c584197ab1385579d55ff8830e", size = 12951208, upload-time = "2026-01-08T19:12:09.218Z" },
599
- { url = "https://files.pythonhosted.org/packages/5c/5c/360a35cb7204b328b685d3129c08aca24765ff92b5a7efedbdd6c150d555/ruff-0.14.11-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f6eb5c1c8033680f4172ea9c8d3706c156223010b8b97b05e82c59bdc774ee6", size = 13330075, upload-time = "2026-01-08T19:12:02.549Z" },
600
- { url = "https://files.pythonhosted.org/packages/1b/9e/0cc2f1be7a7d33cae541824cf3f95b4ff40d03557b575912b5b70273c9ec/ruff-0.14.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f2fc34cc896f90080fca01259f96c566f74069a04b25b6205d55379d12a6855e", size = 12257809, upload-time = "2026-01-08T19:12:00.366Z" },
601
- { url = "https://files.pythonhosted.org/packages/a7/e5/5faab97c15bb75228d9f74637e775d26ac703cc2b4898564c01ab3637c02/ruff-0.14.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53386375001773ae812b43205d6064dae49ff0968774e6befe16a994fc233caa", size = 12678447, upload-time = "2026-01-08T19:12:13.899Z" },
602
- { url = "https://files.pythonhosted.org/packages/1b/33/e9767f60a2bef779fb5855cab0af76c488e0ce90f7bb7b8a45c8a2ba4178/ruff-0.14.11-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a697737dce1ca97a0a55b5ff0434ee7205943d4874d638fe3ae66166ff46edbe", size = 12758560, upload-time = "2026-01-08T19:11:42.55Z" },
603
- { url = "https://files.pythonhosted.org/packages/eb/84/4c6cf627a21462bb5102f7be2a320b084228ff26e105510cd2255ea868e5/ruff-0.14.11-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6845ca1da8ab81ab1dce755a32ad13f1db72e7fba27c486d5d90d65e04d17b8f", size = 13599296, upload-time = "2026-01-08T19:11:30.371Z" },
604
- { url = "https://files.pythonhosted.org/packages/88/e1/92b5ed7ea66d849f6157e695dc23d5d6d982bd6aa8d077895652c38a7cae/ruff-0.14.11-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e36ce2fd31b54065ec6f76cb08d60159e1b32bdf08507862e32f47e6dde8bcbf", size = 15048981, upload-time = "2026-01-08T19:12:04.742Z" },
605
- { url = "https://files.pythonhosted.org/packages/61/df/c1bd30992615ac17c2fb64b8a7376ca22c04a70555b5d05b8f717163cf9f/ruff-0.14.11-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590bcc0e2097ecf74e62a5c10a6b71f008ad82eb97b0a0079e85defe19fe74d9", size = 14633183, upload-time = "2026-01-08T19:11:40.069Z" },
606
- { url = "https://files.pythonhosted.org/packages/04/e9/fe552902f25013dd28a5428a42347d9ad20c4b534834a325a28305747d64/ruff-0.14.11-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53fe71125fc158210d57fe4da26e622c9c294022988d08d9347ec1cf782adafe", size = 14050453, upload-time = "2026-01-08T19:11:37.555Z" },
607
- { url = "https://files.pythonhosted.org/packages/ae/93/f36d89fa021543187f98991609ce6e47e24f35f008dfe1af01379d248a41/ruff-0.14.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a35c9da08562f1598ded8470fcfef2afb5cf881996e6c0a502ceb61f4bc9c8a3", size = 13757889, upload-time = "2026-01-08T19:12:07.094Z" },
608
- { url = "https://files.pythonhosted.org/packages/b7/9f/c7fb6ecf554f28709a6a1f2a7f74750d400979e8cd47ed29feeaa1bd4db8/ruff-0.14.11-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0f3727189a52179393ecf92ec7057c2210203e6af2676f08d92140d3e1ee72c1", size = 13955832, upload-time = "2026-01-08T19:11:55.064Z" },
609
- { url = "https://files.pythonhosted.org/packages/db/a0/153315310f250f76900a98278cf878c64dfb6d044e184491dd3289796734/ruff-0.14.11-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:eb09f849bd37147a789b85995ff734a6c4a095bed5fd1608c4f56afc3634cde2", size = 12586522, upload-time = "2026-01-08T19:11:35.356Z" },
610
- { url = "https://files.pythonhosted.org/packages/2f/2b/a73a2b6e6d2df1d74bf2b78098be1572191e54bec0e59e29382d13c3adc5/ruff-0.14.11-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:c61782543c1231bf71041461c1f28c64b961d457d0f238ac388e2ab173d7ecb7", size = 12724637, upload-time = "2026-01-08T19:11:47.796Z" },
611
- { url = "https://files.pythonhosted.org/packages/f0/41/09100590320394401cd3c48fc718a8ba71c7ddb1ffd07e0ad6576b3a3df2/ruff-0.14.11-py3-none-musllinux_1_2_i686.whl", hash = "sha256:82ff352ea68fb6766140381748e1f67f83c39860b6446966cff48a315c3e2491", size = 13145837, upload-time = "2026-01-08T19:11:32.87Z" },
612
- { url = "https://files.pythonhosted.org/packages/3b/d8/e035db859d1d3edf909381eb8ff3e89a672d6572e9454093538fe6f164b0/ruff-0.14.11-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:728e56879df4ca5b62a9dde2dd0eb0edda2a55160c0ea28c4025f18c03f86984", size = 13850469, upload-time = "2026-01-08T19:12:11.694Z" },
613
- { url = "https://files.pythonhosted.org/packages/4e/02/bb3ff8b6e6d02ce9e3740f4c17dfbbfb55f34c789c139e9cd91985f356c7/ruff-0.14.11-py3-none-win32.whl", hash = "sha256:337c5dd11f16ee52ae217757d9b82a26400be7efac883e9e852646f1557ed841", size = 12851094, upload-time = "2026-01-08T19:11:45.163Z" },
614
- { url = "https://files.pythonhosted.org/packages/58/f1/90ddc533918d3a2ad628bc3044cdfc094949e6d4b929220c3f0eb8a1c998/ruff-0.14.11-py3-none-win_amd64.whl", hash = "sha256:f981cea63d08456b2c070e64b79cb62f951aa1305282974d4d5216e6e0178ae6", size = 14001379, upload-time = "2026-01-08T19:11:52.591Z" },
615
- { url = "https://files.pythonhosted.org/packages/c4/1c/1dbe51782c0e1e9cfce1d1004752672d2d4629ea46945d19d731ad772b3b/ruff-0.14.11-py3-none-win_arm64.whl", hash = "sha256:649fb6c9edd7f751db276ef42df1f3df41c38d67d199570ae2a7bd6cbc3590f0", size = 12938644, upload-time = "2026-01-08T19:11:50.027Z" },
633
+ version = "0.14.13"
634
+ source = { registry = "https://pypi.org/simple/" }
635
+ sdist = { url = "https://files.pythonhosted.org/packages/50/0a/1914efb7903174b381ee2ffeebb4253e729de57f114e63595114c8ca451f/ruff-0.14.13.tar.gz", hash = "sha256:83cd6c0763190784b99650a20fec7633c59f6ebe41c5cc9d45ee42749563ad47", size = 6059504, upload-time = "2026-01-15T20:15:16.918Z" }
636
+ wheels = [
637
+ { url = "https://files.pythonhosted.org/packages/c3/ae/0deefbc65ca74b0ab1fd3917f94dc3b398233346a74b8bbb0a916a1a6bf6/ruff-0.14.13-py3-none-linux_armv6l.whl", hash = "sha256:76f62c62cd37c276cb03a275b198c7c15bd1d60c989f944db08a8c1c2dbec18b", size = 13062418, upload-time = "2026-01-15T20:14:50.779Z" },
638
+ { url = "https://files.pythonhosted.org/packages/47/df/5916604faa530a97a3c154c62a81cb6b735c0cb05d1e26d5ad0f0c8ac48a/ruff-0.14.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:914a8023ece0528d5cc33f5a684f5f38199bbb566a04815c2c211d8f40b5d0ed", size = 13442344, upload-time = "2026-01-15T20:15:07.94Z" },
639
+ { url = "https://files.pythonhosted.org/packages/4c/f3/e0e694dd69163c3a1671e102aa574a50357536f18a33375050334d5cd517/ruff-0.14.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d24899478c35ebfa730597a4a775d430ad0d5631b8647a3ab368c29b7e7bd063", size = 12354720, upload-time = "2026-01-15T20:15:09.854Z" },
640
+ { url = "https://files.pythonhosted.org/packages/c3/e8/67f5fcbbaee25e8fc3b56cc33e9892eca7ffe09f773c8e5907757a7e3bdb/ruff-0.14.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9aaf3870f14d925bbaf18b8a2347ee0ae7d95a2e490e4d4aea6813ed15ebc80e", size = 12774493, upload-time = "2026-01-15T20:15:20.908Z" },
641
+ { url = "https://files.pythonhosted.org/packages/6b/ce/d2e9cb510870b52a9565d885c0d7668cc050e30fa2c8ac3fb1fda15c083d/ruff-0.14.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac5b7f63dd3b27cc811850f5ffd8fff845b00ad70e60b043aabf8d6ecc304e09", size = 12815174, upload-time = "2026-01-15T20:15:05.74Z" },
642
+ { url = "https://files.pythonhosted.org/packages/88/00/c38e5da58beebcf4fa32d0ddd993b63dfacefd02ab7922614231330845bf/ruff-0.14.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2b1097750d90ba82ce4ba676e85230a0ed694178ca5e61aa9b459970b3eb9", size = 13680909, upload-time = "2026-01-15T20:15:14.537Z" },
643
+ { url = "https://files.pythonhosted.org/packages/61/61/cd37c9dd5bd0a3099ba79b2a5899ad417d8f3b04038810b0501a80814fd7/ruff-0.14.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7d0bf87705acbbcb8d4c24b2d77fbb73d40210a95c3903b443cd9e30824a5032", size = 15144215, upload-time = "2026-01-15T20:15:22.886Z" },
644
+ { url = "https://files.pythonhosted.org/packages/56/8a/85502d7edbf98c2df7b8876f316c0157359165e16cdf98507c65c8d07d3d/ruff-0.14.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3eb5da8e2c9e9f13431032fdcbe7681de9ceda5835efee3269417c13f1fed5c", size = 14706067, upload-time = "2026-01-15T20:14:48.271Z" },
645
+ { url = "https://files.pythonhosted.org/packages/7e/2f/de0df127feb2ee8c1e54354dc1179b4a23798f0866019528c938ba439aca/ruff-0.14.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642442b42957093811cd8d2140dfadd19c7417030a7a68cf8d51fcdd5f217427", size = 14133916, upload-time = "2026-01-15T20:14:57.357Z" },
646
+ { url = "https://files.pythonhosted.org/packages/0d/77/9b99686bb9fe07a757c82f6f95e555c7a47801a9305576a9c67e0a31d280/ruff-0.14.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4acdf009f32b46f6e8864af19cbf6841eaaed8638e65c8dac845aea0d703c841", size = 13859207, upload-time = "2026-01-15T20:14:55.111Z" },
647
+ { url = "https://files.pythonhosted.org/packages/7d/46/2bdcb34a87a179a4d23022d818c1c236cb40e477faf0d7c9afb6813e5876/ruff-0.14.13-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:591a7f68860ea4e003917d19b5c4f5ac39ff558f162dc753a2c5de897fd5502c", size = 14043686, upload-time = "2026-01-15T20:14:52.841Z" },
648
+ { url = "https://files.pythonhosted.org/packages/1a/a9/5c6a4f56a0512c691cf143371bcf60505ed0f0860f24a85da8bd123b2bf1/ruff-0.14.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:774c77e841cc6e046fc3e91623ce0903d1cd07e3a36b1a9fe79b81dab3de506b", size = 12663837, upload-time = "2026-01-15T20:15:18.921Z" },
649
+ { url = "https://files.pythonhosted.org/packages/fe/bb/b920016ece7651fa7fcd335d9d199306665486694d4361547ccb19394c44/ruff-0.14.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:61f4e40077a1248436772bb6512db5fc4457fe4c49e7a94ea7c5088655dd21ae", size = 12805867, upload-time = "2026-01-15T20:14:59.272Z" },
650
+ { url = "https://files.pythonhosted.org/packages/7d/b3/0bd909851e5696cd21e32a8fc25727e5f58f1934b3596975503e6e85415c/ruff-0.14.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6d02f1428357fae9e98ac7aa94b7e966fd24151088510d32cf6f902d6c09235e", size = 13208528, upload-time = "2026-01-15T20:15:03.732Z" },
651
+ { url = "https://files.pythonhosted.org/packages/3b/3b/e2d94cb613f6bbd5155a75cbe072813756363eba46a3f2177a1fcd0cd670/ruff-0.14.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e399341472ce15237be0c0ae5fbceca4b04cd9bebab1a2b2c979e015455d8f0c", size = 13929242, upload-time = "2026-01-15T20:15:11.918Z" },
652
+ { url = "https://files.pythonhosted.org/packages/6a/c5/abd840d4132fd51a12f594934af5eba1d5d27298a6f5b5d6c3be45301caf/ruff-0.14.13-py3-none-win32.whl", hash = "sha256:ef720f529aec113968b45dfdb838ac8934e519711da53a0456038a0efecbd680", size = 12919024, upload-time = "2026-01-15T20:14:43.647Z" },
653
+ { url = "https://files.pythonhosted.org/packages/c2/55/6384b0b8ce731b6e2ade2b5449bf07c0e4c31e8a2e68ea65b3bafadcecc5/ruff-0.14.13-py3-none-win_amd64.whl", hash = "sha256:6070bd026e409734b9257e03e3ef18c6e1a216f0435c6751d7a8ec69cb59abef", size = 14097887, upload-time = "2026-01-15T20:15:01.48Z" },
654
+ { url = "https://files.pythonhosted.org/packages/4d/e1/7348090988095e4e39560cfc2f7555b1b2a7357deba19167b600fdf5215d/ruff-0.14.13-py3-none-win_arm64.whl", hash = "sha256:7ab819e14f1ad9fe39f246cfcc435880ef7a9390d81a2b6ac7e01039083dd247", size = 13080224, upload-time = "2026-01-15T20:14:45.853Z" },
616
655
  ]
617
656
 
618
657
  [[package]]
@@ -656,25 +695,25 @@ wheels = [
656
695
 
657
696
  [[package]]
658
697
  name = "urllib3"
659
- version = "2.6.1"
698
+ version = "2.6.3"
660
699
  source = { registry = "https://pypi.org/simple/" }
661
- sdist = { url = "https://files.pythonhosted.org/packages/5e/1d/0f3a93cca1ac5e8287842ed4eebbd0f7a991315089b1a0b01c7788aa7b63/urllib3-2.6.1.tar.gz", hash = "sha256:5379eb6e1aba4088bae84f8242960017ec8d8e3decf30480b3a1abdaa9671a3f", size = 432678, upload-time = "2025-12-08T15:25:26.773Z" }
700
+ sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
662
701
  wheels = [
663
- { url = "https://files.pythonhosted.org/packages/bc/56/190ceb8cb10511b730b564fb1e0293fa468363dbad26145c34928a60cb0c/urllib3-2.6.1-py3-none-any.whl", hash = "sha256:e67d06fe947c36a7ca39f4994b08d73922d40e6cca949907be05efa6fd75110b", size = 131138, upload-time = "2025-12-08T15:25:25.51Z" },
702
+ { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
664
703
  ]
665
704
 
666
705
  [[package]]
667
706
  name = "virtualenv"
668
- version = "20.35.4"
707
+ version = "20.36.1"
669
708
  source = { registry = "https://pypi.org/simple/" }
670
709
  dependencies = [
671
710
  { name = "distlib" },
672
711
  { name = "filelock" },
673
712
  { name = "platformdirs" },
674
713
  ]
675
- sdist = { url = "https://files.pythonhosted.org/packages/20/28/e6f1a6f655d620846bd9df527390ecc26b3805a0c5989048c210e22c5ca9/virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", size = 6028799, upload-time = "2025-10-29T06:57:40.511Z" }
714
+ sdist = { url = "https://files.pythonhosted.org/packages/aa/a3/4d310fa5f00863544e1d0f4de93bddec248499ccf97d4791bc3122c9d4f3/virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba", size = 6032239, upload-time = "2026-01-09T18:21:01.296Z" }
676
715
  wheels = [
677
- { url = "https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b", size = 6005095, upload-time = "2025-10-29T06:57:37.598Z" },
716
+ { url = "https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f", size = 6008258, upload-time = "2026-01-09T18:20:59.425Z" },
678
717
  ]
679
718
 
680
719
  [[package]]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes