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.
- amati-0.2.27/.github/actions/setup/action.yaml +19 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/checks.yaml +10 -16
- {amati-0.2.26 → amati-0.2.27}/PKG-INFO +9 -3
- {amati-0.2.26 → amati-0.2.27}/amati/_data/files/media-types.json +2 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/files/schemes.json +1 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/files/spdx-licences.json +14 -1
- {amati-0.2.26 → amati-0.2.27}/pyproject.toml +14 -5
- {amati-0.2.26 → amati-0.2.27}/uv.lock +1 -1
- {amati-0.2.26 → amati-0.2.27}/.dockerignore +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/dependabot.yml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/codeql.yml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/coverage.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/data-refresh.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/dependency-review.yml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/publish.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/scorecards.yml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.github/workflows/tag-and-create-release.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.gitignore +0 -0
- {amati-0.2.26 → amati-0.2.27}/.pre-commit-config.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/.python-version +0 -0
- {amati-0.2.26 → amati-0.2.27}/Dockerfile +0 -0
- {amati-0.2.26 → amati-0.2.27}/LICENSE +0 -0
- {amati-0.2.26 → amati-0.2.27}/README.md +0 -0
- {amati-0.2.26 → amati-0.2.27}/SECURITY.md +0 -0
- {amati-0.2.26 → amati-0.2.27}/TEMPLATE.html +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/__init__.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/files/http-status-codes.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/files/iso9110.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/files/tlds.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/http_status_code.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/iso9110.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/media_types.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/refresh.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/schemes.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/spdx_licences.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_data/tlds.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_error_handler.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_logging.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/_resolve_forward_references.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/amati.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/exceptions.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/__init__.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/_custom_types.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/commonmark.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/email.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/http_status_codes.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/iso9110.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/json.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/media.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/oas.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/spdx_licences.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/fields/uri.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/file_handler.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/grammars/oas.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/grammars/rfc6901.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/grammars/rfc7159.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/model_validators.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/py.typed +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/validators/__init__.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/validators/generic.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/validators/oas304.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/amati/validators/oas311.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/bin/checks.sh +0 -0
- {amati-0.2.26 → amati-0.2.27}/bin/startup.sh +0 -0
- {amati-0.2.26 → amati-0.2.27}/bin/upgrade-python.sh +0 -0
- {amati-0.2.26 → amati-0.2.27}/bin/uv-upgrade-from-main.sh +0 -0
- {amati-0.2.26 → amati-0.2.27}/scripts/setup_test_specs.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/__init__.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/.amati.tests.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/DigitalOcean-public.v2.errors.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/api.github.com.yaml.errors.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/discourse.yml.errors.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/next-api.github.com.yaml.errors.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/openapi.yaml +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/openapi.yaml.gz +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/data/redocly.openapi.yaml.errors.json +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/__init__.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_email.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_http_status_codes.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_iso9110.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_media.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_oas.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_spdx_licences.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/fields/test_uri.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/helpers.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_all_of.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_at_least_one.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_if_then.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/model_validators/test_only_one.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/test_amati.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/test_external_specs.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/test_logging.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/validators/__init__.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/validators/test_generic.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/validators/test_licence_object.py +0 -0
- {amati-0.2.26 → amati-0.2.27}/tests/validators/test_security_scheme_object.py +0 -0
- {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:
|
|
45
|
+
- name: Setup project
|
|
46
46
|
if: steps.check_changes.outputs.relevant == 'true'
|
|
47
|
-
uses:
|
|
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.
|
|
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/
|
|
6
|
-
Project-URL: Issues, https://github.com/
|
|
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
|
|
@@ -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.
|
|
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
|
-
"
|
|
14
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
15
|
+
"Programming Language :: Python :: 3.14",
|
|
15
16
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
16
|
-
"Topic :: Software Development
|
|
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/
|
|
35
|
-
Issues = "https://github.com/
|
|
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/"
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|