amati 0.3.11__tar.gz → 0.3.12__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 (98) hide show
  1. {amati-0.3.11 → amati-0.3.12}/.github/workflows/checks.yaml +2 -2
  2. {amati-0.3.11 → amati-0.3.12}/.github/workflows/codeql.yml +3 -3
  3. {amati-0.3.11 → amati-0.3.12}/.github/workflows/coverage.yaml +1 -1
  4. {amati-0.3.11 → amati-0.3.12}/.github/workflows/data-refresh.yaml +1 -1
  5. {amati-0.3.11 → amati-0.3.12}/.github/workflows/dependency-review.yml +2 -2
  6. {amati-0.3.11 → amati-0.3.12}/.github/workflows/publish.yaml +1 -1
  7. {amati-0.3.11 → amati-0.3.12}/.github/workflows/scorecards.yml +2 -2
  8. {amati-0.3.11 → amati-0.3.12}/.github/workflows/tag-and-create-release.yaml +1 -1
  9. {amati-0.3.11 → amati-0.3.12}/.pre-commit-config.yaml +1 -1
  10. {amati-0.3.11 → amati-0.3.12}/PKG-INFO +1 -1
  11. {amati-0.3.11 → amati-0.3.12}/amati/_data/files/media-types.json +6 -0
  12. {amati-0.3.11 → amati-0.3.12}/amati/_data/files/schemes.json +6 -6
  13. {amati-0.3.11 → amati-0.3.12}/amati/_data/files/spdx-licences.json +11 -0
  14. {amati-0.3.11 → amati-0.3.12}/pyproject.toml +1 -1
  15. {amati-0.3.11 → amati-0.3.12}/uv.lock +26 -26
  16. {amati-0.3.11 → amati-0.3.12}/.dockerignore +0 -0
  17. {amati-0.3.11 → amati-0.3.12}/.github/actions/setup/action.yaml +0 -0
  18. {amati-0.3.11 → amati-0.3.12}/.github/dependabot.yml +0 -0
  19. {amati-0.3.11 → amati-0.3.12}/.gitignore +0 -0
  20. {amati-0.3.11 → amati-0.3.12}/.python-version +0 -0
  21. {amati-0.3.11 → amati-0.3.12}/Dockerfile +0 -0
  22. {amati-0.3.11 → amati-0.3.12}/LICENSE +0 -0
  23. {amati-0.3.11 → amati-0.3.12}/README.md +0 -0
  24. {amati-0.3.11 → amati-0.3.12}/SECURITY.md +0 -0
  25. {amati-0.3.11 → amati-0.3.12}/TEMPLATE.html +0 -0
  26. {amati-0.3.11 → amati-0.3.12}/amati/__init__.py +0 -0
  27. {amati-0.3.11 → amati-0.3.12}/amati/_data/files/http-status-codes.json +0 -0
  28. {amati-0.3.11 → amati-0.3.12}/amati/_data/files/iso9110.json +0 -0
  29. {amati-0.3.11 → amati-0.3.12}/amati/_data/files/tlds.json +0 -0
  30. {amati-0.3.11 → amati-0.3.12}/amati/_data/http_status_code.py +0 -0
  31. {amati-0.3.11 → amati-0.3.12}/amati/_data/iso9110.py +0 -0
  32. {amati-0.3.11 → amati-0.3.12}/amati/_data/media_types.py +0 -0
  33. {amati-0.3.11 → amati-0.3.12}/amati/_data/refresh.py +0 -0
  34. {amati-0.3.11 → amati-0.3.12}/amati/_data/schemes.py +0 -0
  35. {amati-0.3.11 → amati-0.3.12}/amati/_data/spdx_licences.py +0 -0
  36. {amati-0.3.11 → amati-0.3.12}/amati/_data/tlds.py +0 -0
  37. {amati-0.3.11 → amati-0.3.12}/amati/_error_handler.py +0 -0
  38. {amati-0.3.11 → amati-0.3.12}/amati/_logging.py +0 -0
  39. {amati-0.3.11 → amati-0.3.12}/amati/_resolve_forward_references.py +0 -0
  40. {amati-0.3.11 → amati-0.3.12}/amati/amati.py +0 -0
  41. {amati-0.3.11 → amati-0.3.12}/amati/exceptions.py +0 -0
  42. {amati-0.3.11 → amati-0.3.12}/amati/fields/__init__.py +0 -0
  43. {amati-0.3.11 → amati-0.3.12}/amati/fields/_custom_types.py +0 -0
  44. {amati-0.3.11 → amati-0.3.12}/amati/fields/commonmark.py +0 -0
  45. {amati-0.3.11 → amati-0.3.12}/amati/fields/email.py +0 -0
  46. {amati-0.3.11 → amati-0.3.12}/amati/fields/http_status_codes.py +0 -0
  47. {amati-0.3.11 → amati-0.3.12}/amati/fields/iso9110.py +0 -0
  48. {amati-0.3.11 → amati-0.3.12}/amati/fields/json.py +0 -0
  49. {amati-0.3.11 → amati-0.3.12}/amati/fields/media.py +0 -0
  50. {amati-0.3.11 → amati-0.3.12}/amati/fields/oas.py +0 -0
  51. {amati-0.3.11 → amati-0.3.12}/amati/fields/spdx_licences.py +0 -0
  52. {amati-0.3.11 → amati-0.3.12}/amati/fields/uri.py +0 -0
  53. {amati-0.3.11 → amati-0.3.12}/amati/file_handler.py +0 -0
  54. {amati-0.3.11 → amati-0.3.12}/amati/grammars/oas.py +0 -0
  55. {amati-0.3.11 → amati-0.3.12}/amati/grammars/rfc6901.py +0 -0
  56. {amati-0.3.11 → amati-0.3.12}/amati/grammars/rfc7159.py +0 -0
  57. {amati-0.3.11 → amati-0.3.12}/amati/model_validators.py +0 -0
  58. {amati-0.3.11 → amati-0.3.12}/amati/py.typed +0 -0
  59. {amati-0.3.11 → amati-0.3.12}/amati/validators/__init__.py +0 -0
  60. {amati-0.3.11 → amati-0.3.12}/amati/validators/generic.py +0 -0
  61. {amati-0.3.11 → amati-0.3.12}/amati/validators/oas304.py +0 -0
  62. {amati-0.3.11 → amati-0.3.12}/amati/validators/oas311.py +0 -0
  63. {amati-0.3.11 → amati-0.3.12}/bin/checks.sh +0 -0
  64. {amati-0.3.11 → amati-0.3.12}/bin/startup.sh +0 -0
  65. {amati-0.3.11 → amati-0.3.12}/bin/upgrade-python.sh +0 -0
  66. {amati-0.3.11 → amati-0.3.12}/bin/uv-upgrade-from-main.sh +0 -0
  67. {amati-0.3.11 → amati-0.3.12}/scripts/setup_test_specs.py +0 -0
  68. {amati-0.3.11 → amati-0.3.12}/tests/__init__.py +0 -0
  69. {amati-0.3.11 → amati-0.3.12}/tests/data/.amati.tests.yaml +0 -0
  70. {amati-0.3.11 → amati-0.3.12}/tests/data/DigitalOcean-public.v2.errors.json +0 -0
  71. {amati-0.3.11 → amati-0.3.12}/tests/data/api.github.com.yaml.errors.json +0 -0
  72. {amati-0.3.11 → amati-0.3.12}/tests/data/discourse.yml.errors.json +0 -0
  73. {amati-0.3.11 → amati-0.3.12}/tests/data/invalid-openapi.yaml +0 -0
  74. {amati-0.3.11 → amati-0.3.12}/tests/data/next-api.github.com.yaml.errors.json +0 -0
  75. {amati-0.3.11 → amati-0.3.12}/tests/data/openapi.yaml +0 -0
  76. {amati-0.3.11 → amati-0.3.12}/tests/data/openapi.yaml.gz +0 -0
  77. {amati-0.3.11 → amati-0.3.12}/tests/data/redocly.openapi.yaml.errors.json +0 -0
  78. {amati-0.3.11 → amati-0.3.12}/tests/fields/__init__.py +0 -0
  79. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_email.py +0 -0
  80. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_http_status_codes.py +0 -0
  81. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_iso9110.py +0 -0
  82. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_media.py +0 -0
  83. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_oas.py +0 -0
  84. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_spdx_licences.py +0 -0
  85. {amati-0.3.11 → amati-0.3.12}/tests/fields/test_uri.py +0 -0
  86. {amati-0.3.11 → amati-0.3.12}/tests/helpers.py +0 -0
  87. {amati-0.3.11 → amati-0.3.12}/tests/model_validators/test_all_of.py +0 -0
  88. {amati-0.3.11 → amati-0.3.12}/tests/model_validators/test_at_least_one.py +0 -0
  89. {amati-0.3.11 → amati-0.3.12}/tests/model_validators/test_if_then.py +0 -0
  90. {amati-0.3.11 → amati-0.3.12}/tests/model_validators/test_only_one.py +0 -0
  91. {amati-0.3.11 → amati-0.3.12}/tests/test_amati.py +0 -0
  92. {amati-0.3.11 → amati-0.3.12}/tests/test_external_specs.py +0 -0
  93. {amati-0.3.11 → amati-0.3.12}/tests/test_logging.py +0 -0
  94. {amati-0.3.11 → amati-0.3.12}/tests/validators/__init__.py +0 -0
  95. {amati-0.3.11 → amati-0.3.12}/tests/validators/test_generic.py +0 -0
  96. {amati-0.3.11 → amati-0.3.12}/tests/validators/test_licence_object.py +0 -0
  97. {amati-0.3.11 → amati-0.3.12}/tests/validators/test_security_scheme_object.py +0 -0
  98. {amati-0.3.11 → amati-0.3.12}/tests/validators/test_server_variable_object.py +0 -0
@@ -20,7 +20,7 @@ jobs:
20
20
  with:
21
21
  egress-policy: audit
22
22
 
23
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
23
+ - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
24
24
 
25
25
  - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
26
26
  id: check_changes
@@ -77,7 +77,7 @@ jobs:
77
77
  - name: Coverage comment
78
78
  if: steps.check_changes.outputs.relevant == 'true'
79
79
  id: coverage_comment
80
- uses: py-cov-action/python-coverage-comment-action@6494290850a5098c2836298dad8f11082b4ceaa9 # v3
80
+ uses: py-cov-action/python-coverage-comment-action@39ffc771120970de615612f01a030260bcb45443 # v3
81
81
  with:
82
82
  GITHUB_TOKEN: ${{ secrets.BOT_COMMENT_TOKEN }}
83
83
  continue-on-error: true
@@ -63,7 +63,7 @@ jobs:
63
63
  egress-policy: audit
64
64
 
65
65
  - name: Checkout repository
66
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
66
+ uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
67
67
 
68
68
  # Add any setup steps before running the `github/codeql-action/init` action.
69
69
  # This includes steps like installing compilers or runtimes (`actions/setup-node`
@@ -73,7 +73,7 @@ jobs:
73
73
 
74
74
  # Initializes the CodeQL tools for scanning.
75
75
  - name: Initialize CodeQL
76
- uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
76
+ uses: github/codeql-action/init@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4
77
77
  with:
78
78
  languages: ${{ matrix.language }}
79
79
  build-mode: ${{ matrix.build-mode }}
@@ -101,6 +101,6 @@ jobs:
101
101
  exit 1
102
102
 
103
103
  - name: Perform CodeQL Analysis
104
- uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
104
+ uses: github/codeql-action/analyze@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4
105
105
  with:
106
106
  category: "/language:${{matrix.language}}"
@@ -24,7 +24,7 @@ jobs:
24
24
  egress-policy: audit
25
25
 
26
26
  - name: Post comment
27
- uses: py-cov-action/python-coverage-comment-action@6494290850a5098c2836298dad8f11082b4ceaa9 # v3
27
+ uses: py-cov-action/python-coverage-comment-action@39ffc771120970de615612f01a030260bcb45443 # v3
28
28
  with:
29
29
  GITHUB_TOKEN: ${{ secrets.BOT_COMMENT_TOKEN }}
30
30
  GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }}
@@ -20,7 +20,7 @@ jobs:
20
20
  egress-policy: audit
21
21
 
22
22
  - name: Checkout repository
23
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
23
+ uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
24
24
  with:
25
25
  token: ${{ secrets.BOT_TOKEN }}
26
26
 
@@ -22,6 +22,6 @@ jobs:
22
22
  egress-policy: audit
23
23
 
24
24
  - name: 'Checkout Repository'
25
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
25
+ uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
26
26
  - name: 'Dependency Review'
27
- uses: actions/dependency-review-action@40c09b7dc99638e5ddb0bfd91c1673effc064d8a # v4.8.1
27
+ uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
@@ -22,7 +22,7 @@ jobs:
22
22
  with:
23
23
  egress-policy: audit
24
24
 
25
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
25
+ - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
26
26
  - name: Install uv
27
27
  uses: astral-sh/setup-uv@5a7eac68fb9809dea845d802897dc5c723910fa3 # v7.1.3
28
28
  - name: Set up Python
@@ -45,7 +45,7 @@ jobs:
45
45
  egress-policy: audit
46
46
 
47
47
  - name: "Checkout code"
48
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
48
+ uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
49
49
  with:
50
50
  persist-credentials: false
51
51
 
@@ -80,6 +80,6 @@ jobs:
80
80
 
81
81
  # Upload the results to GitHub's code scanning dashboard.
82
82
  - name: "Upload to code-scanning"
83
- uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
83
+ uses: github/codeql-action/upload-sarif@e12f0178983d466f2f6028f5cc7a6d786fd97f4b # v4.31.4
84
84
  with:
85
85
  sarif_file: results.sarif
@@ -29,7 +29,7 @@ jobs:
29
29
  egress-policy: audit
30
30
 
31
31
  - name: Checkout repository
32
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
32
+ uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
33
33
  with:
34
34
  fetch-depth: 0 # Fetch all history for proper tag creation
35
35
  token: ${{ secrets.BOT_TOKEN }}
@@ -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.5
4
+ rev: v0.14.6
5
5
  hooks:
6
6
  # Run the linter.
7
7
  - id: ruff-check
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: amati
3
- Version: 0.3.11
3
+ Version: 0.3.12
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
@@ -8,6 +8,7 @@
8
8
  "3gpp-ims+xml",
9
9
  "3gpp-mbs-object-manifest+json",
10
10
  "3gpp-mbs-user-service-descriptions+json",
11
+ "3gpp-media-delivery-metrics-report+json",
11
12
  "A2L",
12
13
  "ace-groupcomm+cbor",
13
14
  "ace-trl+cbor",
@@ -361,6 +362,8 @@
361
362
  "private-token-response",
362
363
  "problem+json",
363
364
  "problem+xml",
365
+ "protobuf",
366
+ "protobuf+json",
364
367
  "provenance+xml",
365
368
  "provided-claims+jwt",
366
369
  "prs.alvestrand.titrax-sheet",
@@ -525,6 +528,8 @@
525
528
  "vcard+json",
526
529
  "vcard+xml",
527
530
  "vec+xml",
531
+ "vec-package+gzip",
532
+ "vec-package+zip",
528
533
  "vemmi",
529
534
  "vnd.1000minds.decision-model+xml",
530
535
  "vnd.1ob",
@@ -1310,6 +1315,7 @@
1310
1315
  "vnd.openblox.game-binary",
1311
1316
  "vnd.openblox.game+xml",
1312
1317
  "vnd.openeye.oeb",
1318
+ "vnd.openprinttag",
1313
1319
  "vnd.openstreetmap.data+xml",
1314
1320
  "vnd.opentimestamps.ots",
1315
1321
  "vnd.openvpi.dspx+json",
@@ -199,8 +199,8 @@
199
199
  "ms-officeapp": "Provisional",
200
200
  "ms-people": "Provisional",
201
201
  "ms-personacard": "Provisional",
202
- "ms-project": "Provisional",
203
202
  "ms-powerpoint": "Provisional",
203
+ "ms-project": "Provisional",
204
204
  "ms-publisher": "Provisional",
205
205
  "ms-recall": "Provisional",
206
206
  "ms-remotedesktop": "Provisional",
@@ -285,9 +285,9 @@
285
285
  "pres": "Permanent",
286
286
  "prospero": "Historical",
287
287
  "proxy": "Provisional",
288
- "pwid": "Provisional",
289
288
  "psyc": "Provisional",
290
289
  "pttp": "Provisional",
290
+ "pwid": "Provisional",
291
291
  "qb": "Provisional",
292
292
  "query": "Provisional",
293
293
  "quic-transport": "Provisional",
@@ -370,8 +370,8 @@
370
370
  "ventrilo": "Provisional",
371
371
  "ves": "Provisional",
372
372
  "videotex": "Historical",
373
- "vnc": "Permanent",
374
373
  "view-source": "Provisional",
374
+ "vnc": "Permanent",
375
375
  "vscode": "Provisional",
376
376
  "vscode-insiders": "Provisional",
377
377
  "vsls": "Provisional",
@@ -379,10 +379,10 @@
379
379
  "wais": "Historical",
380
380
  "wasm": "Provisional",
381
381
  "wasm-js": "Provisional",
382
- "web3": "Provisional",
383
382
  "wcr": "Provisional",
384
- "webcal": "Provisional",
385
383
  "web+ap": "Provisional",
384
+ "web3": "Provisional",
385
+ "webcal": "Provisional",
386
386
  "wifi": "Provisional",
387
387
  "wpid": "Historical",
388
388
  "ws": "Permanent",
@@ -393,10 +393,10 @@
393
393
  "xcon": "Permanent",
394
394
  "xcon-userid": "Permanent",
395
395
  "xfire": "Provisional",
396
+ "xftp": "Provisional",
396
397
  "xmlrpc.beep": "Permanent",
397
398
  "xmlrpc.beeps": "Permanent",
398
399
  "xmpp": "Permanent",
399
- "xftp": "Provisional",
400
400
  "xrcp": "Provisional",
401
401
  "xri": "Provisional",
402
402
  "ymsgr": "Provisional",
@@ -7432,6 +7432,17 @@
7432
7432
  ],
7433
7433
  "isOsiApproved": false
7434
7434
  },
7435
+ {
7436
+ "reference": "https://spdx.org/licenses/TekHVC.html",
7437
+ "isDeprecatedLicenseId": false,
7438
+ "detailsUrl": "https://spdx.org/licenses/TekHVC.json",
7439
+ "name": "TekHVC License",
7440
+ "licenseId": "TekHVC",
7441
+ "seeAlso": [
7442
+ "https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/COPYING?ref_type=heads#L138-171"
7443
+ ],
7444
+ "isOsiApproved": false
7445
+ },
7435
7446
  {
7436
7447
  "reference": "https://spdx.org/licenses/TermReadKey.html",
7437
7448
  "isDeprecatedLicenseId": false,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "amati"
3
- version = "0.3.11"
3
+ version = "0.3.12"
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 = [
@@ -13,7 +13,7 @@ wheels = [
13
13
 
14
14
  [[package]]
15
15
  name = "amati"
16
- version = "0.3.11"
16
+ version = "0.3.12"
17
17
  source = { editable = "." }
18
18
  dependencies = [
19
19
  { name = "abnf" },
@@ -212,14 +212,14 @@ wheels = [
212
212
 
213
213
  [[package]]
214
214
  name = "hypothesis"
215
- version = "6.147.0"
215
+ version = "6.148.2"
216
216
  source = { registry = "https://pypi.org/simple/" }
217
217
  dependencies = [
218
218
  { name = "sortedcontainers" },
219
219
  ]
220
- sdist = { url = "https://files.pythonhosted.org/packages/f3/53/e19fe74671fd60db86344a4623c818fac58b813cc3efbb7ea3b3074dcb71/hypothesis-6.147.0.tar.gz", hash = "sha256:72e6004ea3bd1460bdb4640b6389df23b87ba7a4851893fd84d1375635d3e507", size = 468587, upload-time = "2025-11-06T20:27:29.682Z" }
220
+ sdist = { url = "https://files.pythonhosted.org/packages/4a/99/a3c6eb3fdd6bfa01433d674b0f12cd9102aa99630689427422d920aea9c6/hypothesis-6.148.2.tar.gz", hash = "sha256:07e65d34d687ddff3e92a3ac6b43966c193356896813aec79f0a611c5018f4b1", size = 469984, upload-time = "2025-11-18T20:21:17.047Z" }
221
221
  wheels = [
222
- { url = "https://files.pythonhosted.org/packages/b2/1b/932eddc3d55c4ed6c585006cffe6c6a133b5e1797d873de0bcf5208e4fed/hypothesis-6.147.0-py3-none-any.whl", hash = "sha256:de588807b6da33550d32f47bcd42b1a86d061df85673aa73e6443680249d185e", size = 535595, upload-time = "2025-11-06T20:27:23.536Z" },
222
+ { url = "https://files.pythonhosted.org/packages/b1/d2/c2673aca0127e204965e0e9b3b7a0e91e9b12993859ac8758abd22669b89/hypothesis-6.148.2-py3-none-any.whl", hash = "sha256:bf8ddc829009da73b321994b902b1964bcc3e5c3f0ed9a1c1e6a1631ab97c5fa", size = 536986, upload-time = "2025-11-18T20:21:15.212Z" },
223
223
  ]
224
224
 
225
225
  [[package]]
@@ -591,28 +591,28 @@ wheels = [
591
591
 
592
592
  [[package]]
593
593
  name = "ruff"
594
- version = "0.14.5"
595
- source = { registry = "https://pypi.org/simple/" }
596
- sdist = { url = "https://files.pythonhosted.org/packages/82/fa/fbb67a5780ae0f704876cb8ac92d6d76da41da4dc72b7ed3565ab18f2f52/ruff-0.14.5.tar.gz", hash = "sha256:8d3b48d7d8aad423d3137af7ab6c8b1e38e4de104800f0d596990f6ada1a9fc1", size = 5615944, upload-time = "2025-11-13T19:58:51.155Z" }
597
- wheels = [
598
- { url = "https://files.pythonhosted.org/packages/68/31/c07e9c535248d10836a94e4f4e8c5a31a1beed6f169b31405b227872d4f4/ruff-0.14.5-py3-none-linux_armv6l.whl", hash = "sha256:f3b8248123b586de44a8018bcc9fefe31d23dda57a34e6f0e1e53bd51fd63594", size = 13171630, upload-time = "2025-11-13T19:57:54.894Z" },
599
- { url = "https://files.pythonhosted.org/packages/8e/5c/283c62516dca697cd604c2796d1487396b7a436b2f0ecc3fd412aca470e0/ruff-0.14.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:f7a75236570318c7a30edd7f5491945f0169de738d945ca8784500b517163a72", size = 13413925, upload-time = "2025-11-13T19:57:59.181Z" },
600
- { url = "https://files.pythonhosted.org/packages/b6/f3/aa319f4afc22cb6fcba2b9cdfc0f03bbf747e59ab7a8c5e90173857a1361/ruff-0.14.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6d146132d1ee115f8802356a2dc9a634dbf58184c51bff21f313e8cd1c74899a", size = 12574040, upload-time = "2025-11-13T19:58:02.056Z" },
601
- { url = "https://files.pythonhosted.org/packages/f9/7f/cb5845fcc7c7e88ed57f58670189fc2ff517fe2134c3821e77e29fd3b0c8/ruff-0.14.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2380596653dcd20b057794d55681571a257a42327da8894b93bbd6111aa801f", size = 13009755, upload-time = "2025-11-13T19:58:05.172Z" },
602
- { url = "https://files.pythonhosted.org/packages/21/d2/bcbedbb6bcb9253085981730687ddc0cc7b2e18e8dc13cf4453de905d7a0/ruff-0.14.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2d1fa985a42b1f075a098fa1ab9d472b712bdb17ad87a8ec86e45e7fa6273e68", size = 12937641, upload-time = "2025-11-13T19:58:08.345Z" },
603
- { url = "https://files.pythonhosted.org/packages/a4/58/e25de28a572bdd60ffc6bb71fc7fd25a94ec6a076942e372437649cbb02a/ruff-0.14.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88f0770d42b7fa02bbefddde15d235ca3aa24e2f0137388cc15b2dcbb1f7c7a7", size = 13610854, upload-time = "2025-11-13T19:58:11.419Z" },
604
- { url = "https://files.pythonhosted.org/packages/7d/24/43bb3fd23ecee9861970978ea1a7a63e12a204d319248a7e8af539984280/ruff-0.14.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3676cb02b9061fee7294661071c4709fa21419ea9176087cb77e64410926eb78", size = 15061088, upload-time = "2025-11-13T19:58:14.551Z" },
605
- { url = "https://files.pythonhosted.org/packages/23/44/a022f288d61c2f8c8645b24c364b719aee293ffc7d633a2ca4d116b9c716/ruff-0.14.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b595bedf6bc9cab647c4a173a61acf4f1ac5f2b545203ba82f30fcb10b0318fb", size = 14734717, upload-time = "2025-11-13T19:58:17.518Z" },
606
- { url = "https://files.pythonhosted.org/packages/58/81/5c6ba44de7e44c91f68073e0658109d8373b0590940efe5bd7753a2585a3/ruff-0.14.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f55382725ad0bdb2e8ee2babcbbfb16f124f5a59496a2f6a46f1d9d99d93e6e2", size = 14028812, upload-time = "2025-11-13T19:58:20.533Z" },
607
- { url = "https://files.pythonhosted.org/packages/ad/ef/41a8b60f8462cb320f68615b00299ebb12660097c952c600c762078420f8/ruff-0.14.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7497d19dce23976bdaca24345ae131a1d38dcfe1b0850ad8e9e6e4fa321a6e19", size = 13825656, upload-time = "2025-11-13T19:58:23.345Z" },
608
- { url = "https://files.pythonhosted.org/packages/7c/00/207e5de737fdb59b39eb1fac806904fe05681981b46d6a6db9468501062e/ruff-0.14.5-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:410e781f1122d6be4f446981dd479470af86537fb0b8857f27a6e872f65a38e4", size = 13959922, upload-time = "2025-11-13T19:58:26.537Z" },
609
- { url = "https://files.pythonhosted.org/packages/bc/7e/fa1f5c2776db4be405040293618846a2dece5c70b050874c2d1f10f24776/ruff-0.14.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c01be527ef4c91a6d55e53b337bfe2c0f82af024cc1a33c44792d6844e2331e1", size = 12932501, upload-time = "2025-11-13T19:58:29.822Z" },
610
- { url = "https://files.pythonhosted.org/packages/67/d8/d86bf784d693a764b59479a6bbdc9515ae42c340a5dc5ab1dabef847bfaa/ruff-0.14.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f66e9bb762e68d66e48550b59c74314168ebb46199886c5c5aa0b0fbcc81b151", size = 12927319, upload-time = "2025-11-13T19:58:32.923Z" },
611
- { url = "https://files.pythonhosted.org/packages/ac/de/ee0b304d450ae007ce0cb3e455fe24fbcaaedae4ebaad6c23831c6663651/ruff-0.14.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d93be8f1fa01022337f1f8f3bcaa7ffee2d0b03f00922c45c2207954f351f465", size = 13206209, upload-time = "2025-11-13T19:58:35.952Z" },
612
- { url = "https://files.pythonhosted.org/packages/33/aa/193ca7e3a92d74f17d9d5771a765965d2cf42c86e6f0fd95b13969115723/ruff-0.14.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:c135d4b681f7401fe0e7312017e41aba9b3160861105726b76cfa14bc25aa367", size = 13953709, upload-time = "2025-11-13T19:58:39.002Z" },
613
- { url = "https://files.pythonhosted.org/packages/cc/f1/7119e42aa1d3bf036ffc9478885c2e248812b7de9abea4eae89163d2929d/ruff-0.14.5-py3-none-win32.whl", hash = "sha256:c83642e6fccfb6dea8b785eb9f456800dcd6a63f362238af5fc0c83d027dd08b", size = 12925808, upload-time = "2025-11-13T19:58:42.779Z" },
614
- { url = "https://files.pythonhosted.org/packages/3b/9d/7c0a255d21e0912114784e4a96bf62af0618e2190cae468cd82b13625ad2/ruff-0.14.5-py3-none-win_amd64.whl", hash = "sha256:9d55d7af7166f143c94eae1db3312f9ea8f95a4defef1979ed516dbb38c27621", size = 14331546, upload-time = "2025-11-13T19:58:45.691Z" },
615
- { url = "https://files.pythonhosted.org/packages/e5/80/69756670caedcf3b9be597a6e12276a6cf6197076eb62aad0c608f8efce0/ruff-0.14.5-py3-none-win_arm64.whl", hash = "sha256:4b700459d4649e2594b31f20a9de33bc7c19976d4746d8d0798ad959621d64a4", size = 13433331, upload-time = "2025-11-13T19:58:48.434Z" },
594
+ version = "0.14.6"
595
+ source = { registry = "https://pypi.org/simple/" }
596
+ sdist = { url = "https://files.pythonhosted.org/packages/52/f0/62b5a1a723fe183650109407fa56abb433b00aa1c0b9ba555f9c4efec2c6/ruff-0.14.6.tar.gz", hash = "sha256:6f0c742ca6a7783a736b867a263b9a7a80a45ce9bee391eeda296895f1b4e1cc", size = 5669501, upload-time = "2025-11-21T14:26:17.903Z" }
597
+ wheels = [
598
+ { url = "https://files.pythonhosted.org/packages/67/d2/7dd544116d107fffb24a0064d41a5d2ed1c9d6372d142f9ba108c8e39207/ruff-0.14.6-py3-none-linux_armv6l.whl", hash = "sha256:d724ac2f1c240dbd01a2ae98db5d1d9a5e1d9e96eba999d1c48e30062df578a3", size = 13326119, upload-time = "2025-11-21T14:25:24.2Z" },
599
+ { url = "https://files.pythonhosted.org/packages/36/6a/ad66d0a3315d6327ed6b01f759d83df3c4d5f86c30462121024361137b6a/ruff-0.14.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9f7539ea257aa4d07b7ce87aed580e485c40143f2473ff2f2b75aee003186004", size = 13526007, upload-time = "2025-11-21T14:25:26.906Z" },
600
+ { url = "https://files.pythonhosted.org/packages/a3/9d/dae6db96df28e0a15dea8e986ee393af70fc97fd57669808728080529c37/ruff-0.14.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7f6007e55b90a2a7e93083ba48a9f23c3158c433591c33ee2e99a49b889c6332", size = 12676572, upload-time = "2025-11-21T14:25:29.826Z" },
601
+ { url = "https://files.pythonhosted.org/packages/76/a4/f319e87759949062cfee1b26245048e92e2acce900ad3a909285f9db1859/ruff-0.14.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a8e7b9d73d8728b68f632aa8e824ef041d068d231d8dbc7808532d3629a6bef", size = 13140745, upload-time = "2025-11-21T14:25:32.788Z" },
602
+ { url = "https://files.pythonhosted.org/packages/95/d3/248c1efc71a0a8ed4e8e10b4b2266845d7dfc7a0ab64354afe049eaa1310/ruff-0.14.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d50d45d4553a3ebcbd33e7c5e0fe6ca4aafd9a9122492de357205c2c48f00775", size = 13076486, upload-time = "2025-11-21T14:25:35.601Z" },
603
+ { url = "https://files.pythonhosted.org/packages/a5/19/b68d4563fe50eba4b8c92aa842149bb56dd24d198389c0ed12e7faff4f7d/ruff-0.14.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:118548dd121f8a21bfa8ab2c5b80e5b4aed67ead4b7567790962554f38e598ce", size = 13727563, upload-time = "2025-11-21T14:25:38.514Z" },
604
+ { url = "https://files.pythonhosted.org/packages/47/ac/943169436832d4b0e867235abbdb57ce3a82367b47e0280fa7b4eabb7593/ruff-0.14.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:57256efafbfefcb8748df9d1d766062f62b20150691021f8ab79e2d919f7c11f", size = 15199755, upload-time = "2025-11-21T14:25:41.516Z" },
605
+ { url = "https://files.pythonhosted.org/packages/c9/b9/288bb2399860a36d4bb0541cb66cce3c0f4156aaff009dc8499be0c24bf2/ruff-0.14.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff18134841e5c68f8e5df1999a64429a02d5549036b394fafbe410f886e1989d", size = 14850608, upload-time = "2025-11-21T14:25:44.428Z" },
606
+ { url = "https://files.pythonhosted.org/packages/ee/b1/a0d549dd4364e240f37e7d2907e97ee80587480d98c7799d2d8dc7a2f605/ruff-0.14.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29c4b7ec1e66a105d5c27bd57fa93203637d66a26d10ca9809dc7fc18ec58440", size = 14118754, upload-time = "2025-11-21T14:25:47.214Z" },
607
+ { url = "https://files.pythonhosted.org/packages/13/ac/9b9fe63716af8bdfddfacd0882bc1586f29985d3b988b3c62ddce2e202c3/ruff-0.14.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:167843a6f78680746d7e226f255d920aeed5e4ad9c03258094a2d49d3028b105", size = 13949214, upload-time = "2025-11-21T14:25:50.002Z" },
608
+ { url = "https://files.pythonhosted.org/packages/12/27/4dad6c6a77fede9560b7df6802b1b697e97e49ceabe1f12baf3ea20862e9/ruff-0.14.6-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:16a33af621c9c523b1ae006b1b99b159bf5ac7e4b1f20b85b2572455018e0821", size = 14106112, upload-time = "2025-11-21T14:25:52.841Z" },
609
+ { url = "https://files.pythonhosted.org/packages/6a/db/23e322d7177873eaedea59a7932ca5084ec5b7e20cb30f341ab594130a71/ruff-0.14.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1432ab6e1ae2dc565a7eea707d3b03a0c234ef401482a6f1621bc1f427c2ff55", size = 13035010, upload-time = "2025-11-21T14:25:55.536Z" },
610
+ { url = "https://files.pythonhosted.org/packages/a8/9c/20e21d4d69dbb35e6a1df7691e02f363423658a20a2afacf2a2c011800dc/ruff-0.14.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4c55cfbbe7abb61eb914bfd20683d14cdfb38a6d56c6c66efa55ec6570ee4e71", size = 13054082, upload-time = "2025-11-21T14:25:58.625Z" },
611
+ { url = "https://files.pythonhosted.org/packages/66/25/906ee6a0464c3125c8d673c589771a974965c2be1a1e28b5c3b96cb6ef88/ruff-0.14.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:efea3c0f21901a685fff4befda6d61a1bf4cb43de16da87e8226a281d614350b", size = 13303354, upload-time = "2025-11-21T14:26:01.816Z" },
612
+ { url = "https://files.pythonhosted.org/packages/4c/58/60577569e198d56922b7ead07b465f559002b7b11d53f40937e95067ca1c/ruff-0.14.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:344d97172576d75dc6afc0e9243376dbe1668559c72de1864439c4fc95f78185", size = 14054487, upload-time = "2025-11-21T14:26:05.058Z" },
613
+ { url = "https://files.pythonhosted.org/packages/67/0b/8e4e0639e4cc12547f41cb771b0b44ec8225b6b6a93393176d75fe6f7d40/ruff-0.14.6-py3-none-win32.whl", hash = "sha256:00169c0c8b85396516fdd9ce3446c7ca20c2a8f90a77aa945ba6b8f2bfe99e85", size = 13013361, upload-time = "2025-11-21T14:26:08.152Z" },
614
+ { url = "https://files.pythonhosted.org/packages/fb/02/82240553b77fd1341f80ebb3eaae43ba011c7a91b4224a9f317d8e6591af/ruff-0.14.6-py3-none-win_amd64.whl", hash = "sha256:390e6480c5e3659f8a4c8d6a0373027820419ac14fa0d2713bd8e6c3e125b8b9", size = 14432087, upload-time = "2025-11-21T14:26:10.891Z" },
615
+ { url = "https://files.pythonhosted.org/packages/a5/1f/93f9b0fad9470e4c829a5bb678da4012f0c710d09331b860ee555216f4ea/ruff-0.14.6-py3-none-win_arm64.whl", hash = "sha256:d43c81fbeae52cfa8728d8766bbf46ee4298c888072105815b392da70ca836b2", size = 13520930, upload-time = "2025-11-21T14:26:13.951Z" },
616
616
  ]
617
617
 
618
618
  [[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
File without changes