Connexion is a Python web framework that implements API-first development by binding OpenAPI 2.0 (Swagger) and OpenAPI 3.0 specifications directly to Python handler functions. In production it performs all mechanics derived from the spec automatically: route registration from path definitions, parameter parsing per OpenAPI serialization styles, request/response validation against JSON Schema, security scheme enforcement (Basic, Bearer, API key, OAuth2), response serialization with extended JSON types (datetime, Decimal, UUID), and Swagger UI hosting. It supports three integration models: a standalone Starlette-based AsyncApp, a FlaskApp that wraps Flask/WSGI apps (bridged to ASGI via a2wsgi), and a ConnexionMiddleware that composes around any existing ASGI application. A CLI entry point (`connexion run spec.yaml`) provides dev servers and mock/stub modes. Architecturally, Connexion is an ASGI middleware stack built in connexion/middleware/main.py: ServerError, Exception, SwaggerUI, Routing, Security, RequestValidation, ResponseValidation, Lifespan, and Context middlewares are composed with pluggable ordering via a MiddlewarePosition enum. The spec layer (connexion/spec.py, connexion/operations/) abstracts the differences between Swagger 2 and OpenAPI 3; resolver classes map operationIds to Python callables using multiple naming conventions; validators are pluggable per content type using a MediaTypeDict; and URI parsers handle form, simple, deepObject, pipeDelimited, and spaceDelimited serialization. The code is type-annotated, CI runs Python 3.9-3.14, and the test suite is extensive and parametrized across both spec versions and sync/async app modes. Quality is strong: the middleware abstraction, resolver strategy family, content-negotiation data structures, and security handler factory are all genuinely reusable and non-trivial. Known warts include retained backward-compatibility aliases (scope/scopes, sub/uid), a stale version string in pyproject.toml (version = "3.0.dev0" alongside a Production/Stable classifier), duplicated Swagger2/OpenAPI3 logic in URI parsing and parameter decorators, some TODO-marked cleanup in utils.py, and several outdated example apps. These are minor for a library of this maturity; the core ASGI design is current and actively maintained.