{"id":23220,"library":"aiopenapi3","title":"aiopenapi3","description":"Async client and validator for OpenAPI 3.0, 3.1, 3.2, and Swagger 2.0 specifications. Current version 0.10.0, requires Python >=3.10. Active development with frequent releases.","status":"active","version":"0.10.0","language":"python","source_language":"en","source_url":"https://github.com/commonism/aiopenapi3","tags":["openapi","async","client","validator","api","spec"],"install":[{"cmd":"pip install aiopenapi3","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"HTTP client for async requests","package":"httpx","optional":false},{"reason":"Data validation and settings management","package":"pydantic","optional":false},{"reason":"Parse YAML OpenAPI specs","package":"pyyaml","optional":false}],"imports":[{"note":"Correct package is 'aiopenapi3', not 'openapi3'.","wrong":"from openapi3 import OpenAPI","symbol":"OpenAPI","correct":"from aiopenapi3 import OpenAPI"},{"note":"load_file is exposed at top level since v0.9.0.","wrong":"from aiopenapi3.loaders import load_file","symbol":"load_file","correct":"from aiopenapi3 import load_file"}],"quickstart":{"code":"import os\nfrom aiopenapi3 import OpenAPI\n\n# Load spec from URL\napi = OpenAPI(\n    url=\"https://petstore3.swagger.io/api/v3/openapi.json\",\n    auth=lambda r: r.with_headers({\"api_key\": os.environ.get(\"API_KEY\", \"\")})\n)\n\n# Call an operation (e.g., list pets)\npets = api.list_pets(limit=10)\nprint(pets)","lang":"python","description":"Load an OpenAPI spec and call an endpoint asynchronously."},"warnings":[{"fix":"Wrap API calls in try/except or handle aiopenapi3.exceptions.APIError.","message":"In v0.8.0, the client now raises exceptions for HTTP error status codes (4xx, 5xx) instead of returning error responses. Code that previously checked response status must be updated.","severity":"breaking","affected_versions":">=0.8.0"},{"fix":"Replace any model.root.attribute with model.attribute.","message":"In v0.6.0, model access changed: RootModel wrappers were removed, so model attributes are accessed directly without .root.","severity":"breaking","affected_versions":">=0.6.0"},{"fix":"Upgrade Python to 3.10+ or use aiopenapi3 <0.9.0 (though it may have fewer features/security updates).","message":"The library requires Python >=3.10. Installing on Python 3.9 or older will fail with a version incompatibility.","severity":"gotcha","affected_versions":">=0.9.0"},{"fix":"Use Python 3.10 or later.","message":"Support for Python 3.9 was dropped in v0.9.0; Python 3.8 was dropped in v0.8.0.","severity":"deprecated","affected_versions":">=0.9.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run: pip install aiopenapi3","cause":"The package 'aiopenapi3' is not installed or install target is wrong.","error":"ModuleNotFoundError: No module named 'aiopenapi3'"},{"fix":"Upgrade to aiopenapi3 >=0.9.0 or import from aiopenapi3.loaders.load_file.","cause":"load_file is not a top-level symbol in older versions (<0.9.0).","error":"AttributeError: module 'aiopenapi3' has no attribute 'load_file'"},{"fix":"Catch APIError or configure the client to suppress raising on errors.","cause":"The API returned a non-2xx status, which now raises an exception by default since v0.8.0.","error":"aiopenapi3.exceptions.APIError: 404 Not Found"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}