amati 0.2.26__tar.gz → 0.2.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 (97) hide show
  1. amati-0.2.27/.github/actions/setup/action.yaml +19 -0
  2. {amati-0.2.26 → amati-0.2.27}/.github/workflows/checks.yaml +10 -16
  3. {amati-0.2.26 → amati-0.2.27}/PKG-INFO +9 -3
  4. {amati-0.2.26 → amati-0.2.27}/amati/_data/files/media-types.json +2 -0
  5. {amati-0.2.26 → amati-0.2.27}/amati/_data/files/schemes.json +1 -0
  6. {amati-0.2.26 → amati-0.2.27}/amati/_data/files/spdx-licences.json +14 -1
  7. {amati-0.2.26 → amati-0.2.27}/pyproject.toml +14 -5
  8. {amati-0.2.26 → amati-0.2.27}/uv.lock +1 -1
  9. {amati-0.2.26 → amati-0.2.27}/.dockerignore +0 -0
  10. {amati-0.2.26 → amati-0.2.27}/.github/dependabot.yml +0 -0
  11. {amati-0.2.26 → amati-0.2.27}/.github/workflows/codeql.yml +0 -0
  12. {amati-0.2.26 → amati-0.2.27}/.github/workflows/coverage.yaml +0 -0
  13. {amati-0.2.26 → amati-0.2.27}/.github/workflows/data-refresh.yaml +0 -0
  14. {amati-0.2.26 → amati-0.2.27}/.github/workflows/dependency-review.yml +0 -0
  15. {amati-0.2.26 → amati-0.2.27}/.github/workflows/publish.yaml +0 -0
  16. {amati-0.2.26 → amati-0.2.27}/.github/workflows/scorecards.yml +0 -0
  17. {amati-0.2.26 → amati-0.2.27}/.github/workflows/tag-and-create-release.yaml +0 -0
  18. {amati-0.2.26 → amati-0.2.27}/.gitignore +0 -0
  19. {amati-0.2.26 → amati-0.2.27}/.pre-commit-config.yaml +0 -0
  20. {amati-0.2.26 → amati-0.2.27}/.python-version +0 -0
  21. {amati-0.2.26 → amati-0.2.27}/Dockerfile +0 -0
  22. {amati-0.2.26 → amati-0.2.27}/LICENSE +0 -0
  23. {amati-0.2.26 → amati-0.2.27}/README.md +0 -0
  24. {amati-0.2.26 → amati-0.2.27}/SECURITY.md +0 -0
  25. {amati-0.2.26 → amati-0.2.27}/TEMPLATE.html +0 -0
  26. {amati-0.2.26 → amati-0.2.27}/amati/__init__.py +0 -0
  27. {amati-0.2.26 → amati-0.2.27}/amati/_data/files/http-status-codes.json +0 -0
  28. {amati-0.2.26 → amati-0.2.27}/amati/_data/files/iso9110.json +0 -0
  29. {amati-0.2.26 → amati-0.2.27}/amati/_data/files/tlds.json +0 -0
  30. {amati-0.2.26 → amati-0.2.27}/amati/_data/http_status_code.py +0 -0
  31. {amati-0.2.26 → amati-0.2.27}/amati/_data/iso9110.py +0 -0
  32. {amati-0.2.26 → amati-0.2.27}/amati/_data/media_types.py +0 -0
  33. {amati-0.2.26 → amati-0.2.27}/amati/_data/refresh.py +0 -0
  34. {amati-0.2.26 → amati-0.2.27}/amati/_data/schemes.py +0 -0
  35. {amati-0.2.26 → amati-0.2.27}/amati/_data/spdx_licences.py +0 -0
  36. {amati-0.2.26 → amati-0.2.27}/amati/_data/tlds.py +0 -0
  37. {amati-0.2.26 → amati-0.2.27}/amati/_error_handler.py +0 -0
  38. {amati-0.2.26 → amati-0.2.27}/amati/_logging.py +0 -0
  39. {amati-0.2.26 → amati-0.2.27}/amati/_resolve_forward_references.py +0 -0
  40. {amati-0.2.26 → amati-0.2.27}/amati/amati.py +0 -0
  41. {amati-0.2.26 → amati-0.2.27}/amati/exceptions.py +0 -0
  42. {amati-0.2.26 → amati-0.2.27}/amati/fields/__init__.py +0 -0
  43. {amati-0.2.26 → amati-0.2.27}/amati/fields/_custom_types.py +0 -0
  44. {amati-0.2.26 → amati-0.2.27}/amati/fields/commonmark.py +0 -0
  45. {amati-0.2.26 → amati-0.2.27}/amati/fields/email.py +0 -0
  46. {amati-0.2.26 → amati-0.2.27}/amati/fields/http_status_codes.py +0 -0
  47. {amati-0.2.26 → amati-0.2.27}/amati/fields/iso9110.py +0 -0
  48. {amati-0.2.26 → amati-0.2.27}/amati/fields/json.py +0 -0
  49. {amati-0.2.26 → amati-0.2.27}/amati/fields/media.py +0 -0
  50. {amati-0.2.26 → amati-0.2.27}/amati/fields/oas.py +0 -0
  51. {amati-0.2.26 → amati-0.2.27}/amati/fields/spdx_licences.py +0 -0
  52. {amati-0.2.26 → amati-0.2.27}/amati/fields/uri.py +0 -0
  53. {amati-0.2.26 → amati-0.2.27}/amati/file_handler.py +0 -0
  54. {amati-0.2.26 → amati-0.2.27}/amati/grammars/oas.py +0 -0
  55. {amati-0.2.26 → amati-0.2.27}/amati/grammars/rfc6901.py +0 -0
  56. {amati-0.2.26 → amati-0.2.27}/amati/grammars/rfc7159.py +0 -0
  57. {amati-0.2.26 → amati-0.2.27}/amati/model_validators.py +0 -0
  58. {amati-0.2.26 → amati-0.2.27}/amati/py.typed +0 -0
  59. {amati-0.2.26 → amati-0.2.27}/amati/validators/__init__.py +0 -0
  60. {amati-0.2.26 → amati-0.2.27}/amati/validators/generic.py +0 -0
  61. {amati-0.2.26 → amati-0.2.27}/amati/validators/oas304.py +0 -0
  62. {amati-0.2.26 → amati-0.2.27}/amati/validators/oas311.py +0 -0
  63. {amati-0.2.26 → amati-0.2.27}/bin/checks.sh +0 -0
  64. {amati-0.2.26 → amati-0.2.27}/bin/startup.sh +0 -0
  65. {amati-0.2.26 → amati-0.2.27}/bin/upgrade-python.sh +0 -0
  66. {amati-0.2.26 → amati-0.2.27}/bin/uv-upgrade-from-main.sh +0 -0
  67. {amati-0.2.26 → amati-0.2.27}/scripts/setup_test_specs.py +0 -0
  68. {amati-0.2.26 → amati-0.2.27}/tests/__init__.py +0 -0
  69. {amati-0.2.26 → amati-0.2.27}/tests/data/.amati.tests.yaml +0 -0
  70. {amati-0.2.26 → amati-0.2.27}/tests/data/DigitalOcean-public.v2.errors.json +0 -0
  71. {amati-0.2.26 → amati-0.2.27}/tests/data/api.github.com.yaml.errors.json +0 -0
  72. {amati-0.2.26 → amati-0.2.27}/tests/data/discourse.yml.errors.json +0 -0
  73. {amati-0.2.26 → amati-0.2.27}/tests/data/next-api.github.com.yaml.errors.json +0 -0
  74. {amati-0.2.26 → amati-0.2.27}/tests/data/openapi.yaml +0 -0
  75. {amati-0.2.26 → amati-0.2.27}/tests/data/openapi.yaml.gz +0 -0
  76. {amati-0.2.26 → amati-0.2.27}/tests/data/redocly.openapi.yaml.errors.json +0 -0
  77. {amati-0.2.26 → amati-0.2.27}/tests/fields/__init__.py +0 -0
  78. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_email.py +0 -0
  79. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_http_status_codes.py +0 -0
  80. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_iso9110.py +0 -0
  81. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_media.py +0 -0
  82. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_oas.py +0 -0
  83. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_spdx_licences.py +0 -0
  84. {amati-0.2.26 → amati-0.2.27}/tests/fields/test_uri.py +0 -0
  85. {amati-0.2.26 → amati-0.2.27}/tests/helpers.py +0 -0
  86. {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_all_of.py +0 -0
  87. {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_at_least_one.py +0 -0
  88. {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_if_then.py +0 -0
  89. {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_only_one.py +0 -0
  90. {amati-0.2.26 → amati-0.2.27}/tests/test_amati.py +0 -0
  91. {amati-0.2.26 → amati-0.2.27}/tests/test_external_specs.py +0 -0
  92. {amati-0.2.26 → amati-0.2.27}/tests/test_logging.py +0 -0
  93. {amati-0.2.26 → amati-0.2.27}/tests/validators/__init__.py +0 -0
  94. {amati-0.2.26 → amati-0.2.27}/tests/validators/test_generic.py +0 -0
  95. {amati-0.2.26 → amati-0.2.27}/tests/validators/test_licence_object.py +0 -0
  96. {amati-0.2.26 → amati-0.2.27}/tests/validators/test_security_scheme_object.py +0 -0
  97. {amati-0.2.26 → amati-0.2.27}/tests/validators/test_server_variable_object.py +0 -0
@@ -0,0 +1,19 @@
1
+ name: 'Setup Python Project'
2
+ description: 'Setup Python with uv and install dependencies'
3
+
4
+ runs:
5
+ using: "composite"
6
+ steps:
7
+ - name: Install uv
8
+ uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
9
+ with:
10
+ enable-cache: true # Keep it - doesn't hurt, might help occasionally
11
+
12
+ - name: Set up Python
13
+ uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
14
+ with:
15
+ python-version-file: ".python-version"
16
+
17
+ - name: Install the project
18
+ shell: bash
19
+ run: uv sync --locked --all-extras --dev
@@ -42,23 +42,9 @@ jobs:
42
42
  run: echo "Skipping Python checks - no relevant changes detected"
43
43
 
44
44
 
45
- - name: Install uv
45
+ - name: Setup project
46
46
  if: steps.check_changes.outputs.relevant == 'true'
47
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
48
-
49
- - name: uv lock
50
- if: steps.check_changes.outputs.relevant == 'true'
51
- run: uv lock
52
-
53
- - name: Set up Python
54
- if: steps.check_changes.outputs.relevant == 'true'
55
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
56
- with:
57
- python-version-file: ".python-version"
58
-
59
- - name: Install the project
60
- if: steps.check_changes.outputs.relevant == 'true'
61
- run: uv sync --locked --all-extras --dev
47
+ uses: ./.github/actions/setup
62
48
 
63
49
  - name: Run linting
64
50
  if: steps.check_changes.outputs.relevant == 'true'
@@ -71,6 +57,14 @@ jobs:
71
57
  uses: astral-sh/ruff-action@57714a7c8a2e59f32539362ba31877a1957dded1 # v3.5.1
72
58
  with:
73
59
  args: format
60
+
61
+ - name: Type checking
62
+ if: steps.check_changes.outputs.relevant == 'true'
63
+ uses: jakebailey/pyright-action@6cabc0f01c4994be48fd45cd9dbacdd6e1ee6e5e
64
+ with:
65
+ project: pyproject.toml
66
+ python-path: .venv/bin/python
67
+ extra-args: amati
74
68
 
75
69
  - name: Testing
76
70
  if: steps.check_changes.outputs.relevant == 'true'
@@ -1,17 +1,23 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: amati
3
- Version: 0.2.26
3
+ Version: 0.2.27
4
4
  Summary: Validates that a .yaml or .json file conforms to the OpenAPI Specifications 3.x.
5
- Project-URL: Homepage, https://github.com/ben-alexander/amati
6
- Project-URL: Issues, https://github.com/ben-alexander/amati/issues
5
+ Project-URL: Homepage, https://github.com/gwyil/amati
6
+ Project-URL: Issues, https://github.com/gwyil/amati/issues
7
7
  Author-email: Ben <2551337+ben-alexander@users.noreply.github.com>
8
8
  License-File: LICENSE
9
9
  Classifier: Development Status :: 3 - Alpha
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3 :: Only
13
+ Classifier: Programming Language :: Python :: 3.14
12
14
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
15
+ Classifier: Topic :: Software Development
16
+ Classifier: Topic :: Software Development :: Build Tools
13
17
  Classifier: Topic :: Software Development :: Documentation
18
+ Classifier: Topic :: Software Development :: Quality Assurance
14
19
  Classifier: Topic :: Software Development :: Testing :: Acceptance
20
+ Classifier: Typing :: Typed
15
21
  Requires-Python: >=3.13
16
22
  Requires-Dist: abnf>=2.3.1
17
23
  Requires-Dist: bs4>=0.0.2
@@ -414,6 +414,8 @@
414
414
  "sbml+xml",
415
415
  "scaip+xml",
416
416
  "scim+json",
417
+ "scitt-receipt+cose",
418
+ "scitt-statement+cose",
417
419
  "scvp-cv-request",
418
420
  "scvp-cv-response",
419
421
  "scvp-vp-request",
@@ -64,6 +64,7 @@
64
64
  "dis": "Provisional",
65
65
  "dlna-playcontainer": "Provisional",
66
66
  "dlna-playsingle": "Provisional",
67
+ "dnp": "Provisional",
67
68
  "dns": "Permanent",
68
69
  "dntp": "Provisional",
69
70
  "doi": "Permanent",
@@ -4063,6 +4063,17 @@
4063
4063
  ],
4064
4064
  "isOsiApproved": false
4065
4065
  },
4066
+ {
4067
+ "reference": "https://spdx.org/licenses/HPND-SMC.html",
4068
+ "isDeprecatedLicenseId": false,
4069
+ "detailsUrl": "https://spdx.org/licenses/HPND-SMC.json",
4070
+ "name": "Historical Permission Notice and Disclaimer - SMC variant",
4071
+ "licenseId": "HPND-SMC",
4072
+ "seeAlso": [
4073
+ "https://docs.python.org/3/license.html#execution-tracing"
4074
+ ],
4075
+ "isOsiApproved": false
4076
+ },
4066
4077
  {
4067
4078
  "reference": "https://spdx.org/licenses/HPND-UC.html",
4068
4079
  "isDeprecatedLicenseId": false,
@@ -4138,7 +4149,9 @@
4138
4149
  "name": "Independent JPEG Group License",
4139
4150
  "licenseId": "IJG",
4140
4151
  "seeAlso": [
4141
- "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2"
4152
+ "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2",
4153
+ "https://github.com/vstroebel/jpeg-encoder/blob/main/src/fdct.rs#L1-L72",
4154
+ "https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/README.ijg#L117-L161"
4142
4155
  ],
4143
4156
  "isOsiApproved": false,
4144
4157
  "isFsfLibre": true
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "amati"
3
- version = "0.2.26"
3
+ version = "0.2.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 = [
@@ -11,9 +11,15 @@ classifiers = [
11
11
  "Development Status :: 3 - Alpha",
12
12
  "Intended Audience :: Developers",
13
13
  "License :: OSI Approved :: MIT License",
14
- "Topic :: Software Development :: Documentation",
14
+ "Programming Language :: Python :: 3 :: Only",
15
+ "Programming Language :: Python :: 3.14",
15
16
  "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
16
- "Topic :: Software Development :: Testing :: Acceptance"
17
+ "Topic :: Software Development",
18
+ "Topic :: Software Development :: Build Tools",
19
+ "Topic :: Software Development :: Documentation",
20
+ "Topic :: Software Development :: Testing :: Acceptance",
21
+ "Topic :: Software Development :: Quality Assurance",
22
+ "Typing :: Typed",
17
23
  ]
18
24
  licence = "MIT"
19
25
  license-files = ["LICENSE"]
@@ -31,8 +37,8 @@ dependencies = [
31
37
  ]
32
38
 
33
39
  [project.urls]
34
- Homepage = "https://github.com/ben-alexander/amati"
35
- Issues = "https://github.com/ben-alexander/amati/issues"
40
+ Homepage = "https://github.com/gwyil/amati"
41
+ Issues = "https://github.com/gwyil/amati/issues"
36
42
 
37
43
  [project.scripts]
38
44
  amati = "amati:main"
@@ -60,7 +66,9 @@ omit=[
60
66
 
61
67
  [tool.pyright]
62
68
  reportMissingTypeStubs=false
69
+ reportMisingImports=false # Ignore external dependencies
63
70
  typeCheckingMode="strict"
71
+ src = ["amati"]
64
72
 
65
73
  [tool.pytest.ini_options]
66
74
  doctest_optionflags = "NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL ELLIPSIS"
@@ -73,6 +81,7 @@ markers = [
73
81
  name = "pypi"
74
82
  url = "https://pypi.org/simple/"
75
83
  default = true
84
+
76
85
  [[tool.uv.index]]
77
86
  name = "testpypi"
78
87
  url = "https://test.pypi.org/legacy/"
@@ -13,7 +13,7 @@ wheels = [
13
13
 
14
14
  [[package]]
15
15
  name = "amati"
16
- version = "0.2.26"
16
+ version = "0.2.27"
17
17
  source = { editable = "." }
18
18
  dependencies = [
19
19
  { name = "abnf" },
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
File without changes