Changelog#

All notable changes to this project will be documented in this file.

This project adheres to Calendar Versioning.

The first number of the version is the year. The second number is incremented with each release, starting at 1 for each year. The third number is for emergencies when we need to start branches for older releases.

v24.1.0 - UNRELEASED#

Added#

v23.3.0 - 2023-12-20#

Changed#

  • Return types of handlers are now type-checked. (#57)

  • Introduce Response Shorthands, port the str, bytes, None and attrs response types to them. (#57)

  • Unions containing shorthands and uapi response classes (and any combination of these) are now better supported. (#57)

  • uapi is now tested against Mypy. (#57)

v23.2.0 - 2023-12-10#

Changed#

  • Return types of handlers are now type-checked. (#57)

  • Introduce Response Shorthands, port the str, bytes, None and attrs response types to them. (#57)

  • Unions containing shorthands and uapi response classes (and any combination of these) are now better supported. (#57)

  • datetime.datetime and datetime.date are now supported in the OpenAPI schema, both in models and handler parameters. (#53)

  • Simple forms are now supported using uapi.ReqForm[T]. Learn more. (#54)

  • uapi now sorts imports using Ruff.

  • uapi is now tested against Mypy. (#57)

v23.1.0 - 2023-11-12#

Changed#

  • Add the initial header implementation.

  • Function composition (dependency injection) is now documented.

  • Endpoints can be excluded from OpenAPI generation by passing them to App.make_openapi_spec(exclude=...) or App.serve_openapi(exclude=...).

  • Initial implementation of OpenAPI security schemas, supporting the apikey type in Redis session backend.

  • Update the Elements OpenAPI UI to better handle cookies.

  • Flesh out the documentation for response types.

  • Add OpenAPI support for string literal fields.

  • Add OpenAPI support for generic attrs classes.

  • Add OpenAPI support for unions of a single attrs class and None (optionals).

  • Properly set the OpenAPI required attribute for attrs fields without defaults.

  • Add OpenAPI support for primitive types in unions.

  • uapi now uses PDM.

  • Dictionary request bodies and attrs classes with dictionary fields are now supported.

  • OpenAPI operationId properties for operations are now generated from handler names.

  • OpenAPI summaries and descriptions are now supported, and can be overridden.

  • aiohttp.web.StreamResponse is now handled as the root class of aiohttp responses.

  • uapi.aiohttp.AiohttpApp.run() now uses the aiohttp App runners internally.

  • uapi is now tested against Flask 3.

  • uapi is now tested against Python 3.12.

Fixed#

  • Stringified annotations for return types are now handled properly.

  • Framework-specific request objects are ignored for OpenAPI.

  • Fix OpenAPI generation so items produced by the dependency injection system are properly generated.

  • Fix OpenAPI generation for models with identical names.

  • Fix OpenAPI generation for response models with lists of attrs classes.

v22.1.0 - 2022-12-07#

Changed#

  • Changelog starts.