From 4216c739d36d00eebdbbc54ff9242523253142e4 Mon Sep 17 00:00:00 2001 From: p1c2u Date: Mon, 23 Feb 2026 16:41:05 +0000 Subject: [PATCH] Openapi-schema-validator 0.7 and openapi-spec-validator 0.8 upgrades --- poetry.lock | 158 +++++++++++------- pyproject.toml | 8 +- .../unmarshalling/test_unmarshallers.py | 1 - 3 files changed, 97 insertions(+), 70 deletions(-) diff --git a/poetry.lock b/poetry.lock index ffea67f1..dae585b3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.1 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -204,10 +204,9 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" -optional = true +optional = false python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"fastapi\"" files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -224,7 +223,7 @@ files = [ {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, ] -markers = {main = "extra == \"fastapi\" or extra == \"starlette\""} +markers = {main = "extra == \"starlette\" or extra == \"fastapi\""} [package.dependencies] exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} @@ -993,7 +992,7 @@ files = [ {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] -markers = {main = "(extra == \"fastapi\" or extra == \"starlette\") and python_version < \"3.11\"", dev = "python_version < \"3.11\""} +markers = {main = "(extra == \"starlette\" or extra == \"fastapi\") and python_version < \"3.11\"", dev = "python_version < \"3.11\""} [package.extras] test = ["pytest (>=6)"] @@ -1296,34 +1295,20 @@ colorama = ">=0.4" [[package]] name = "griffe-typingdoc" -version = "0.3.1" +version = "0.2.9" description = "Griffe extension for PEP 727 – Documentation Metadata in Typing." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" groups = ["docs"] files = [ - {file = "griffe_typingdoc-0.3.1-py3-none-any.whl", hash = "sha256:ecbd457ef6883126b8b6023abf12e08c58e1c152238a2f0e2afdd67a64b07021"}, - {file = "griffe_typingdoc-0.3.1.tar.gz", hash = "sha256:2ff4703115cb7f8a65b9fdcdd1f3c3a15f813b6554621b52eaad094c4782ce96"}, + {file = "griffe_typingdoc-0.2.9-py3-none-any.whl", hash = "sha256:cc6b1e34d64e1659da5b3d37506214834bc8fbb62b081b2fb43563ee5cdaf8f5"}, + {file = "griffe_typingdoc-0.2.9.tar.gz", hash = "sha256:99c05bf09a9c391464e3937718c9a5a1055bb95ed549f4f7706be9a71578669c"}, ] [package.dependencies] -griffelib = ">=2.0" +griffe = ">=1.14" typing-extensions = ">=4.7" -[[package]] -name = "griffelib" -version = "2.0.0" -description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -optional = false -python-versions = ">=3.10" -groups = ["docs"] -files = [ - {file = "griffelib-2.0.0-py3-none-any.whl", hash = "sha256:01284878c966508b6d6f1dbff9b6fa607bc062d8261c5c7253cb285b06422a7f"}, -] - -[package.extras] -pypi = ["pip (>=24.0)", "platformdirs (>=4.2)", "wheel (>=0.42)"] - [[package]] name = "h11" version = "0.16.0" @@ -1409,7 +1394,7 @@ files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] -markers = {main = "extra == \"aiohttp\" or extra == \"fastapi\" or extra == \"starlette\" or extra == \"requests\""} +markers = {main = "extra == \"aiohttp\" or extra == \"starlette\" or extra == \"fastapi\" or extra == \"requests\""} [[package]] name = "iniconfig" @@ -1590,7 +1575,7 @@ files = [ [package.dependencies] attrs = ">=22.2.0" -jsonschema-specifications = ">=2023.03.6" +jsonschema-specifications = ">=2023.3.6" referencing = ">=0.28.4" rpds-py = ">=0.7.1" @@ -1600,38 +1585,38 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-path" -version = "0.4.0b8" +version = "0.4.2" description = "JSONSchema Spec with object-oriented paths" optional = false -python-versions = "<4.0.0,>=3.9.0" +python-versions = "<4.0.0,>=3.10" groups = ["main"] files = [ - {file = "jsonschema_path-0.4.0b8-py3-none-any.whl", hash = "sha256:ba4592a4fe6f87c0e7eb4e880037dfdf82e6f5919e273ad98facdfac11fbaee2"}, - {file = "jsonschema_path-0.4.0b8.tar.gz", hash = "sha256:fd7919687dd6afdb82005a7198d1a7b3e18a1e275ed351b160ba6a86b4054ef7"}, + {file = "jsonschema_path-0.4.2-py3-none-any.whl", hash = "sha256:9c3d88e727cc4f1a88e51dbbed4211dbcd815d27799d2685efd904435c3d39e7"}, + {file = "jsonschema_path-0.4.2.tar.gz", hash = "sha256:5f5ff183150030ea24bb51cf1ddac9bf5dbf030272e2792a7ffe8262f7eea2a5"}, ] [package.dependencies] -pathable = ">=0.5.0b6,<0.6.0" +pathable = ">=0.5.0,<0.6.0" PyYAML = ">=5.1" -referencing = "<0.37.0" +referencing = "<0.38.0" [package.extras] requests = ["requests (>=2.31.0,<3.0.0)"] [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2025.9.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main"] files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe"}, + {file = "jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"}, ] [package.dependencies] -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter-client" @@ -2377,38 +2362,44 @@ setuptools = "*" [[package]] name = "openapi-schema-validator" -version = "0.6.3" +version = "0.8.1" description = "OpenAPI schema validation for Python" optional = false -python-versions = "<4.0.0,>=3.8.0" +python-versions = "<4.0.0,>=3.10.0" groups = ["main"] files = [ - {file = "openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3"}, - {file = "openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee"}, + {file = "openapi_schema_validator-0.8.1-py3-none-any.whl", hash = "sha256:0f5859794c5bfa433d478dc5ac5e5768d50adc56b14380c8a6fd3a8113e89c9b"}, + {file = "openapi_schema_validator-0.8.1.tar.gz", hash = "sha256:4c57266ce8cbfa37bb4eb4d62cdb7d19356c3a468e3535743c4562863e1790da"}, ] [package.dependencies] jsonschema = ">=4.19.1,<5.0.0" -jsonschema-specifications = ">=2023.5.2" +jsonschema-specifications = ">=2024.10.1" +pydantic = ">=2.0.0,<3.0.0" +pydantic-settings = ">=2.0.0,<3.0.0" +referencing = ">=0.37.0,<0.38.0" rfc3339-validator = "*" +[package.extras] +ecma-regex = ["regress (>=2025.10.1)"] + [[package]] name = "openapi-spec-validator" -version = "0.8.0b3" +version = "0.8.2" description = "OpenAPI 2.0 (aka Swagger) and OpenAPI 3 spec validator" optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<4.0,>=3.10" groups = ["main"] files = [ - {file = "openapi_spec_validator-0.8.0b3-py3-none-any.whl", hash = "sha256:75e0ad2c14eeb70d4e8d39cf87bc93450742dd9ca61226923468ec8e392cfac8"}, - {file = "openapi_spec_validator-0.8.0b3.tar.gz", hash = "sha256:b8e6921028fc5848b1e717639a131b1315445a0fbf34c44f1d8106d5d65ed08b"}, + {file = "openapi_spec_validator-0.8.2-py3-none-any.whl", hash = "sha256:18eab9b76aac364ca677581bd95b693a5964923e29cd89c5b457ac3e697adf25"}, + {file = "openapi_spec_validator-0.8.2.tar.gz", hash = "sha256:f12c9fe77d78ea0a04fe931573cfe4b86478db12f09f7f3a08a41da59b005458"}, ] [package.dependencies] jsonschema = ">=4.24.0,<4.25.0" -jsonschema-path = ">=0.4.0b8,<0.5.0" +jsonschema-path = ">=0.4.2,<0.5.0" lazy-object-proxy = ">=1.7.1,<2.0" -openapi-schema-validator = ">=0.6.1,<0.7.0" +openapi-schema-validator = ">=0.7.3,<0.9.0" [[package]] name = "packaging" @@ -2456,14 +2447,14 @@ testing = ["docopt", "pytest"] [[package]] name = "pathable" -version = "0.5.0b6" +version = "0.5.0" description = "Object-oriented paths" optional = false -python-versions = "<4.0,>=3.9" +python-versions = "<4.0,>=3.10" groups = ["main"] files = [ - {file = "pathable-0.5.0b6-py3-none-any.whl", hash = "sha256:c66bafb0e93b790098e580a1c89e042a24148d6541098f18d24ae1fc77e1b335"}, - {file = "pathable-0.5.0b6.tar.gz", hash = "sha256:a36763b534a213894ddbca01db5b869aca52779e89a193078304fb3706b94404"}, + {file = "pathable-0.5.0-py3-none-any.whl", hash = "sha256:646e3d09491a6351a0c82632a09c02cdf70a252e73196b36d8a15ba0a114f0a6"}, + {file = "pathable-0.5.0.tar.gz", hash = "sha256:d81938348a1cacb525e7c75166270644782c0fb9c8cecc16be033e71427e0ef1"}, ] [[package]] @@ -2767,10 +2758,9 @@ files = [ name = "pydantic" version = "2.12.5" description = "Data validation using Python type hints" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"fastapi\"" files = [ {file = "pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d"}, {file = "pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49"}, @@ -2790,10 +2780,9 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows name = "pydantic-core" version = "2.41.5" description = "Core functionality for Pydantic validation and serialization" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"fastapi\"" files = [ {file = "pydantic_core-2.41.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:77b63866ca88d804225eaa4af3e664c5faf3568cea95360d21f4725ab6e07146"}, {file = "pydantic_core-2.41.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dfa8a0c812ac681395907e71e1274819dec685fec28273a28905df579ef137e2"}, @@ -2921,6 +2910,30 @@ files = [ [package.dependencies] typing-extensions = ">=4.14.1" +[[package]] +name = "pydantic-settings" +version = "2.13.1" +description = "Settings management using Pydantic" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "pydantic_settings-2.13.1-py3-none-any.whl", hash = "sha256:d56fd801823dbeae7f0975e1f8c8e25c258eb75d278ea7abb5d9cebb01b56237"}, + {file = "pydantic_settings-2.13.1.tar.gz", hash = "sha256:b4c11847b15237fb0171e1462bf540e294affb9b86db4d9aa5c01730bdbe4025"}, +] + +[package.dependencies] +pydantic = ">=2.7.0" +python-dotenv = ">=0.21.0" +typing-inspection = ">=0.4.0" + +[package.extras] +aws-secrets-manager = ["boto3 (>=1.35.0)", "boto3-stubs[secretsmanager]"] +azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] +gcp-secret-manager = ["google-cloud-secret-manager (>=2.23.1)"] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pyflakes" version = "3.4.0" @@ -3091,6 +3104,21 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-dotenv" +version = "1.2.2" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a"}, + {file = "python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + [[package]] name = "python-multipart" version = "0.0.22" @@ -3301,19 +3329,20 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.30.2" +version = "0.37.0" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["main"] files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.37.0-py3-none-any.whl", hash = "sha256:381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231"}, + {file = "referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" +typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} [[package]] name = "requests" @@ -3610,7 +3639,7 @@ files = [ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, ] -markers = {main = "extra == \"fastapi\" or extra == \"starlette\""} +markers = {main = "extra == \"starlette\" or extra == \"fastapi\""} [[package]] name = "sqlparse" @@ -3656,7 +3685,7 @@ description = "The little ASGI library that shines." optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"fastapi\" or extra == \"starlette\"" +markers = "extra == \"starlette\" or extra == \"fastapi\"" files = [ {file = "starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca"}, {file = "starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca"}, @@ -3792,10 +3821,9 @@ files = [ name = "typing-inspection" version = "0.4.2" description = "Runtime typing introspection tools" -optional = true +optional = false python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"fastapi\"" files = [ {file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"}, {file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"}, @@ -4078,4 +4106,4 @@ werkzeug = [] [metadata] lock-version = "2.1" python-versions = "^3.10.0" -content-hash = "9f47e8cd5d35b016d216499e7f595b085a4413a7ae8b4adc983d44d175367d04" +content-hash = "dfa7948894f020d935f13562328a077da9a15aaa78d3a7c3ec25b20346694d19" diff --git a/pyproject.toml b/pyproject.toml index 8d4ee985..b790d916 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,11 +67,11 @@ aiohttp = {version = ">=3.0", optional = true} starlette = {version = ">=0.40.0,<0.60.0", optional = true} isodate = "*" more-itertools = "*" -openapi-schema-validator = "^0.6.0" -openapi-spec-validator = {version = "^0.8.0b3", allow-prereleases = true} +openapi-schema-validator = ">=0.7.0,<0.9.0" +openapi-spec-validator = "^0.8.0" requests = {version = "*", optional = true} werkzeug = ">=2.1.0" -jsonschema-path = {version = "^0.4.0b8", allow-prereleases = true} +jsonschema-path = "^0.4.2" jsonschema = "^4.23.0" multidict = {version = "^6.0.4", optional = true} aioitertools = {version = ">=0.11,<0.14", optional = true} @@ -112,7 +112,7 @@ ipykernel = "^7.2.0" mkdocs = "^1.6.1" mkdocstrings = {extras = ["python"], version = ">=0.26.1,<1.1.0"} mkdocs-material = "^9.5.34" -griffe-typingdoc = ">=0.2.7,<0.4.0" +griffe-typingdoc = ">=0.2.7,<0.3.0" [tool.pytest.ini_options] addopts = """ diff --git a/tests/integration/unmarshalling/test_unmarshallers.py b/tests/integration/unmarshalling/test_unmarshallers.py index 54e944a3..3d890134 100644 --- a/tests/integration/unmarshalling/test_unmarshallers.py +++ b/tests/integration/unmarshalling/test_unmarshallers.py @@ -1719,7 +1719,6 @@ def test_basic_type_oas30_formats( "type,format,value", [ ("string", "byte", "passwd"), - ("string", "binary", "test"), ], ) def test_basic_type_oas30_formats_invalid(