diff --git a/CHANGELOG/unreleased.md b/CHANGELOG/unreleased.md index 1b7ec89..f615dd2 100644 --- a/CHANGELOG/unreleased.md +++ b/CHANGELOG/unreleased.md @@ -1,6 +1,11 @@ # Unreleased -Record user-visible changes here before the next release. +AirPostgres 0.2.0 replaces the original package scaffold with a complete +asyncpg-backed persistence backend for Air 0.49 and later. + +```bash +uv add "AirPostgres>=0.2.0" +``` ## Added @@ -16,3 +21,11 @@ Record user-visible changes here before the next release. - Replaced the generated command-line placeholder with the Air model backend. - Raised the minimum supported Python version to 3.13. + +## Upgrade notes + +- AirPostgres requires Air 0.49 or later. Applications migrating from Air's + former built-in PostgreSQL integration should create an `AirPostgres` + instance explicitly and attach its lifespan to the application. +- Version 0.1.0 contained only the generated project scaffold. Version 0.2.0 is + the first release that provides the backend described by the package name. diff --git a/pyproject.toml b/pyproject.toml index 7a015a5..0a08ac4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "AirPostgres" -version = "0.1.0" +version = "0.2.0" description = "PostgreSQL persistence backend for AirModel" readme = "README.md" authors = [ @@ -34,6 +34,7 @@ requires-python = ">=3.13" [dependency-groups] dev = [ + "air @ git+https://github.com/feldroy/air.git@2c0db21e76d2c8caf6a6cd6032e47e788f44d977", { include-group = "lint" }, { include-group = "test" }, { include-group = "typecheck" }, @@ -113,6 +114,3 @@ packages = ["src/airpostgres"] [tool.uv] package = true default-groups = ["dev"] - -[tool.uv.sources] -air = { path = "../air", editable = true } diff --git a/uv.lock b/uv.lock index fba8694..0d7983a 100644 --- a/uv.lock +++ b/uv.lock @@ -5,7 +5,7 @@ requires-python = ">=3.13" [[package]] name = "air" version = "0.49.0" -source = { editable = "../air" } +source = { git = "https://github.com/feldroy/air.git?rev=2c0db21e76d2c8caf6a6cd6032e47e788f44d977#2c0db21e76d2c8caf6a6cd6032e47e788f44d977" } dependencies = [ { name = "fastapi" }, { name = "frozendict" }, @@ -20,82 +20,9 @@ dependencies = [ { name = "uvicorn", marker = "sys_platform != 'emscripten'" }, ] -[package.metadata] -requires-dist = [ - { name = "fastapi", specifier = ">=0.128.8" }, - { name = "fastapi", extras = ["standard"], marker = "extra == 'standard'", specifier = ">=0.128.8" }, - { name = "frozendict", specifier = ">=2.4.7" }, - { name = "itsdangerous", specifier = ">=2.2.0" }, - { name = "jinja2", specifier = ">=3.1.6" }, - { name = "pygments", marker = "sys_platform != 'emscripten'", specifier = ">=2.19.2,!=2.20.0" }, - { name = "python-multipart", specifier = ">=0.0.22" }, - { name = "rich", marker = "sys_platform != 'emscripten'", specifier = ">=14.3.2" }, - { name = "staticware", specifier = ">=0.2.0" }, - { name = "tinyhtml5", specifier = ">=2.1.0,<3" }, - { name = "typer", marker = "sys_platform != 'emscripten'", specifier = ">=0.23.0" }, - { name = "uvicorn", marker = "sys_platform != 'emscripten'", specifier = ">=0.40.0" }, -] -provides-extras = ["standard"] - -[package.metadata.requires-dev] -dev = [ - { name = "click", specifier = ">=8.3.1" }, - { name = "coverage", extras = ["toml"], specifier = ">=7.13.4" }, - { name = "full-match", specifier = ">=0.0.3" }, - { name = "httpx", specifier = ">=0.28.1" }, - { name = "mkdocs", specifier = ">=1.6.1" }, - { name = "mkdocs-autorefs", specifier = ">=1.4.4" }, - { name = "mkdocs-exclude", specifier = ">=1.0.2" }, - { name = "mkdocs-llmstxt", specifier = ">=0.5.0" }, - { name = "mkdocs-material", extras = ["imaging"], specifier = ">=9.7.2" }, - { name = "mkdocs-redirects", specifier = ">=1.2.2" }, - { name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.3" }, - { name = "mkdocstrings-python", specifier = ">=2.0.3" }, - { name = "pyinstrument", specifier = ">=5.1.2" }, - { name = "pytest", specifier = ">=9.0.2" }, - { name = "pytest-asyncio", specifier = ">=1.3.0" }, - { name = "pytest-benchmark", specifier = ">=5.2.3" }, - { name = "pytest-github-actions-annotate-failures", specifier = ">=0.3.0" }, - { name = "pytest-pretty", specifier = ">=1.3.0" }, - { name = "ruff", specifier = ">=0.15.0" }, - { name = "ty", specifier = ">=0.0.19" }, - { name = "types-markdown", specifier = ">=3.10.2.20260211" }, - { name = "types-pygments", specifier = ">=2.19.0.20251121" }, -] -devtools = [ - { name = "ruff", specifier = ">=0.15.0" }, - { name = "ty", specifier = ">=0.0.19" }, -] -docs = [ - { name = "click", specifier = ">=8.3.1" }, - { name = "mkdocs", specifier = ">=1.6.1" }, - { name = "mkdocs-autorefs", specifier = ">=1.4.4" }, - { name = "mkdocs-exclude", specifier = ">=1.0.2" }, - { name = "mkdocs-llmstxt", specifier = ">=0.5.0" }, - { name = "mkdocs-material", extras = ["imaging"], specifier = ">=9.7.2" }, - { name = "mkdocs-redirects", specifier = ">=1.2.2" }, - { name = "mkdocstrings", extras = ["python"], specifier = ">=1.0.3" }, - { name = "mkdocstrings-python", specifier = ">=2.0.3" }, -] -examples = [{ name = "pyinstrument", specifier = ">=5.1.2" }] -test = [ - { name = "coverage", extras = ["toml"], specifier = ">=7.13.4" }, - { name = "full-match", specifier = ">=0.0.3" }, - { name = "httpx", specifier = ">=0.28.1" }, - { name = "pytest", specifier = ">=9.0.2" }, - { name = "pytest-asyncio", specifier = ">=1.3.0" }, - { name = "pytest-benchmark", specifier = ">=5.2.3" }, - { name = "pytest-github-actions-annotate-failures", specifier = ">=0.3.0" }, - { name = "pytest-pretty", specifier = ">=1.3.0" }, -] -typing-stubs = [ - { name = "types-markdown", specifier = ">=3.10.2.20260211" }, - { name = "types-pygments", specifier = ">=2.19.0.20251121" }, -] - [[package]] name = "airpostgres" -version = "0.1.0" +version = "0.2.0" source = { editable = "." } dependencies = [ { name = "air" }, @@ -104,6 +31,7 @@ dependencies = [ [package.dev-dependencies] dev = [ + { name = "air" }, { name = "coverage" }, { name = "pytest" }, { name = "pytest-asyncio" }, @@ -128,12 +56,13 @@ typecheck = [ [package.metadata] requires-dist = [ - { name = "air", editable = "../air" }, + { name = "air", specifier = ">=0.49.0" }, { name = "asyncpg", specifier = ">=0.30.0" }, ] [package.metadata.requires-dev] dev = [ + { name = "air", git = "https://github.com/feldroy/air.git?rev=2c0db21e76d2c8caf6a6cd6032e47e788f44d977" }, { name = "coverage", extras = ["toml"], specifier = ">=7.13.4" }, { name = "pytest", specifier = ">=9.0.2" }, { name = "pytest-asyncio", specifier = ">=1.3.0" },