From 8267bf984264e431154cb5819ec1fb0b9c6aca6a Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Mon, 27 Jan 2025 19:46:48 -0500 Subject: [PATCH 01/26] docs: setup mkdocs-material --- README.md | 7 +- CHANGELOG.md => docs/changelog.md | 2 +- docs/index.md | 219 ++++++++++++++++++++++ mkdocs.yml | 49 +++++ pyproject.toml | 6 + uv.lock | 298 +++++++++++++++++++++++++++++- 6 files changed, 576 insertions(+), 5 deletions(-) rename CHANGELOG.md => docs/changelog.md (99%) create mode 100644 docs/index.md create mode 100644 mkdocs.yml diff --git a/README.md b/README.md index 85c29bd..e0a2caa 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # 🚀 FastSQLA [![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) +[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) +[![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) -[![codecov](https://codecov.io/gh/hadrien/fastsqla/graph/badge.svg?token=XK3YT60MWK)](https://codecov.io/gh/hadrien/fastsqla) +[![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) `FastSQLA` is an [`SQLAlchemy`] extension for [`FastAPI`]. -It supports asynchronous `SQLAlchemy` sessions and includes built-in custimizable -pagination. +It offers support for asynchronous SQLAlchemy and features built-in, customizable pagination. ## Features diff --git a/CHANGELOG.md b/docs/changelog.md similarity index 99% rename from CHANGELOG.md rename to docs/changelog.md index 82e1f68..55703c1 100644 --- a/CHANGELOG.md +++ b/docs/changelog.md @@ -1,4 +1,4 @@ -# CHANGELOG +# Changelog ## v0.2.4 (2025-01-27) diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..e0a2caa --- /dev/null +++ b/docs/index.md @@ -0,0 +1,219 @@ +# 🚀 FastSQLA + +[![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) +[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) +[![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) +[![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) + +`FastSQLA` is an [`SQLAlchemy`] extension for [`FastAPI`]. +It offers support for asynchronous SQLAlchemy and features built-in, customizable pagination. + +## Features + +
+ Automatic SQLAlchemy configuration at app startup. + + Using [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): +```python +from fastapi import FastAPI +from fastsqla import lifespan + +app = FastAPI(lifespan=lifespan) +``` +
+
+ Async SQLAlchemy session as a FastAPI dependency. + +```python +... +from fastsqla import Session +from sqlalchemy import select +... + +@app.get("/heros") +async def get_heros(session:Session): + stmt = select(...) + result = await session.execute(stmt) + ... +``` +
+
+ Built-in pagination. + +```python +... +from fastsqla import Page, Paginate +from sqlalchemy import select +... + +@app.get("/heros", response_model=Page[HeroModel]) +async def get_heros(paginate:Paginate): + return paginate(select(Hero)) +``` +
+
+ Allows pagination customization. + +```python +... +from fastapi import Page, new_pagination +... + +Paginate = new_pagination(min_page_size=5, max_page_size=500) + +@app.get("/heros", response_model=Page[HeroModel]) +async def get_heros(paginate:Paginate): + return paginate(select(Hero)) +``` +
+ +And more ... + + +## Installing + +Using [uv](https://docs.astral.sh/uv/): +```bash +uv add fastsqla +``` + +Using [pip](https://pip.pypa.io/): +``` +pip install fastsqla +``` + +## Quick Example + +```python +# example.py +from http import HTTPStatus + +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel, ConfigDict +from sqlalchemy import select +from sqlalchemy.exc import IntegrityError +from sqlalchemy.orm import Mapped, mapped_column + +from fastsqla import Base, Item, Page, Paginate, Session, lifespan + +app = FastAPI(lifespan=lifespan) + + +class Hero(Base): + __tablename__ = "hero" + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(unique=True) + secret_identity: Mapped[str] + + +class HeroBase(BaseModel): + name: str + secret_identity: str + + +class HeroModel(HeroBase): + model_config = ConfigDict(from_attributes=True) + id: int + + +@app.get("/heros", response_model=Page[HeroModel]) +async def list_users(paginate: Paginate): + return await paginate(select(Hero)) + + +@app.get("/heros/{hero_id}", response_model=Item[HeroModel]) +async def get_user(hero_id: int, session: Session): + hero = await session.get(Hero, hero_id) + if hero is None: + raise HTTPException(HTTPStatus.NOT_FOUND, "Hero not found") + return {"data": hero} + + +@app.post("/heros", response_model=Item[HeroModel]) +async def create_user(new_hero: HeroBase, session: Session): + hero = Hero(**new_hero.model_dump()) + session.add(hero) + try: + await session.flush() + except IntegrityError: + raise HTTPException(HTTPStatus.CONFLICT, "Duplicate hero name") + return {"data": hero} +``` + +> [!NOTE] +> Sqlite is used for the sake of the example. +> FastSQLA is compatible with all async db drivers that SQLAlchemy is compatible with. + +
+ Create an sqlite3 db: + +```bash +sqlite3 db.sqlite < + +
+ Install dependencies & run the app + +```bash +pip install uvicorn aiosqlite fastsqla +sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn example:app +``` + +
+ +Execute `GET /heros?offset=10`: + +```bash +curl -X 'GET' \ +'http://127.0.0.1:8000/heros?offset=10&limit=10' \ +-H 'accept: application/json' +``` +Returns: +```json +{ + "data": [ + { + "name": "The Flash", + "secret_identity": "Barry Allen", + "id": 11 + }, + { + "name": "Green Lantern", + "secret_identity": "Hal Jordan", + "id": 12 + } + ], + "meta": { + "offset": 10, + "total_items": 12, + "total_pages": 2, + "page_number": 2 + } +} +``` + +[`FastAPI`]: https://fastapi.tiangolo.com/ +[`SQLAlchemy`]: http://sqlalchemy.org/ diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..02f8fc5 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,49 @@ +site_name: FastSQLA +site_url: https://mydomain.org/FastSQLA +repo_name: hadrien/FastSQLA +repo_url: https://github.com/hadrien/fastsqla +edit_uri: edit/main/docs/ + +nav: +- Get Started: + - Welcome to FastSQLA: index.md + - Changelog: changelog.md + +theme: + name: material + features: + - content.tabs.link + - content.code.annotate + - content.code.copy + - announce.dismiss + - navigation.tabs + - navigation.instant + - navigation.instant.prefetch + - navigation.instant.progress + - navigation.path + - navigation.sections + - navigation.top + - navigation.tracking + - search.suggest + - toc.follow + palette: + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/weather-sunny + name: Switch to dark mode + + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/weather-night + name: Switch to system preference + +plugins: + - search + - mkdocstrings \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 7584534..fd1ef68 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,9 @@ Repository = "https://github.com/hadrien/fastsqla" Issues = "https://github.com/hadrien/fastsqla/issues" Changelog = "https://github.com/hadrien/fastsqla/releases" +[project.optional-dependencies] +docs = ["mkdocs-material>=9.5.50", "mkdocstrings[python]>=0.27.0"] + [tool.uv] package = true dev-dependencies = [ @@ -76,3 +79,6 @@ env = "GH_TOKEN" [tool.semantic_release] version_toml = ["pyproject.toml:project.version"] + +[tool.semantic_release.changelog.default_templates] +changelog_file = "./docs/changelog.md" diff --git a/uv.lock b/uv.lock index fa1d7ae..705abdb 100644 --- a/uv.lock +++ b/uv.lock @@ -51,6 +51,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2f/f5/c36551e93acba41a59939ae6a0fb77ddb3f2e8e8caa716410c65f7341f72/asgi_lifespan-2.1.0-py3-none-any.whl", hash = "sha256:ed840706680e28428c01e14afb3875d7d76d3206f3d5b2f2294e059b5c23804f", size = 10895 }, ] +[[package]] +name = "babel" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, +] + [[package]] name = "certifi" version = "2024.8.30" @@ -255,7 +264,7 @@ wheels = [ [[package]] name = "fastsqla" -version = "0.2.3" +version = "0.2.4" source = { editable = "." } dependencies = [ { name = "fastapi" }, @@ -263,6 +272,12 @@ dependencies = [ { name = "structlog" }, ] +[package.optional-dependencies] +docs = [ + { name = "mkdocs-material" }, + { name = "mkdocstrings", extra = ["python"] }, +] + [package.dev-dependencies] dev = [ { name = "aiosqlite" }, @@ -283,6 +298,8 @@ dev = [ [package.metadata] requires-dist = [ { name = "fastapi", specifier = ">=0.115.6" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.50" }, + { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.27.0" }, { name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.37" }, { name = "structlog", specifier = ">=24.4.0" }, ] @@ -304,6 +321,18 @@ dev = [ { name = "twine", specifier = ">=5.1.1" }, ] +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, +] + [[package]] name = "gitdb" version = "4.0.11" @@ -361,6 +390,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112 }, ] +[[package]] +name = "griffe" +version = "1.5.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/74/cd35a98cb11f79de0581e8e1e6fbd738aeeed1f2d90e9b5106728b63f5f7/griffe-1.5.5.tar.gz", hash = "sha256:35ee5b38b93d6a839098aad0f92207e6ad6b70c3e8866c08ca669275b8cba585", size = 391124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/88/52c9422bc853cd7c2b6122090e887d17b5fad29b67f930e4277c9c557357/griffe-1.5.5-py3-none-any.whl", hash = "sha256:2761b1e8876c6f1f9ab1af274df93ea6bbadd65090de5f38f4cb5cc84897c7dd", size = 128221 }, +] + [[package]] name = "h11" version = "0.14.0" @@ -509,6 +550,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/42/ea8c9726e5ee5ff0731978aaf7cd5fa16674cf549c46279b279d7167c2b4/keyring-25.3.0-py3-none-any.whl", hash = "sha256:8d963da00ccdf06e356acd9bf3b743208878751032d8599c6cc89eb51310ffae", size = 38742 }, ] +[[package]] +name = "markdown" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, +] + [[package]] name = "markdown-it-py" version = "3.0.0" @@ -548,6 +598,136 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "platform_system == 'Windows'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, +] + +[[package]] +name = "mkdocs-autorefs" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/18/fb1e17fb705228b51bf7b2f791adaf83c0fa708e51bbc003411ba48ae21e/mkdocs_autorefs-1.3.0.tar.gz", hash = "sha256:6867764c099ace9025d6ac24fd07b85a98335fbd30107ef01053697c8f46db61", size = 42597 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/4a/960c441950f98becfa5dd419adab20274939fd575ab848aee2c87e3599ac/mkdocs_autorefs-1.3.0-py3-none-any.whl", hash = "sha256:d180f9778a04e78b7134e31418f238bba56f56d6a8af97873946ff661befffb3", size = 17642 }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, +] + +[[package]] +name = "mkdocs-material" +version = "9.5.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "regex" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/16/c48d5a28bc4a67c49808180b6009d4d1b4c0753739ffee3cc37046ab29d7/mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825", size = 3923354 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/b5/1bf29cd744896ae83bd38c72970782c843ba13e0240b1a85277bd3928637/mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385", size = 8645274 }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, +] + +[[package]] +name = "mkdocstrings" +version = "0.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, + { name = "mkdocs-autorefs" }, + { name = "platformdirs" }, + { name = "pymdown-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/5a/5de70538c2cefae7ac3a15b5601e306ef3717290cb2aab11d51cbbc2d1c0/mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657", size = 94830 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/10/4c27c3063c2b3681a4b7942f8dbdeb4fa34fecb2c19b594e7345ebf4f86f/mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332", size = 30658 }, +] + +[package.optional-dependencies] +python = [ + { name = "mkdocstrings-python" }, +] + +[[package]] +name = "mkdocstrings-python" +version = "1.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "griffe" }, + { name = "mkdocs-autorefs" }, + { name = "mkdocstrings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/ae/32703e35d74040051c672400fd9f5f2b48a6ea094f5071dd8a0e3be35322/mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c", size = 185697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/23/d02d86553327296c3bf369d444194ea83410cce8f0e690565264f37f3261/mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97", size = 112254 }, +] + [[package]] name = "more-itertools" version = "10.5.0" @@ -589,6 +769,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, ] +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + [[package]] name = "pkginfo" version = "1.10.0" @@ -598,6 +796,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/56/09/054aea9b7534a15ad38a363a2bd974c20646ab1582a387a95b8df1bfea1c/pkginfo-1.10.0-py3-none-any.whl", hash = "sha256:889a6da2ed7ffc58ab5b900d888ddce90bce912f2d2de1dc1c26f4cb9fe65097", size = 30392 }, ] +[[package]] +name = "platformdirs" +version = "4.3.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, +] + [[package]] name = "pluggy" version = "1.5.0" @@ -675,6 +882,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, ] +[[package]] +name = "pymdown-extensions" +version = "10.14.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/24/f7a412dc1630b1a6d7b288e7c736215ce878ee4aad24359f7f67b53bbaa9/pymdown_extensions-10.14.1.tar.gz", hash = "sha256:b65801996a0cd4f42a3110810c306c45b7313c09b0610a6f773730f2a9e3c96b", size = 845243 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/fb/79a8d27966e90feeeb686395c8b1bff8221727abcbd80d2485841393a955/pymdown_extensions-10.14.1-py3-none-any.whl", hash = "sha256:637951cbfbe9874ba28134fb3ce4b8bcadd6aca89ac4998ec29dcbafd554ae08", size = 264283 }, +] + [[package]] name = "pytest" version = "8.3.2" @@ -783,6 +1003,44 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8", size = 30756 }, ] +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, +] + [[package]] name = "readme-renderer" version = "44.0" @@ -797,6 +1055,44 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", size = 13310 }, ] +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, +] + [[package]] name = "requests" version = "2.32.3" From 5ec24a9118150a5dd30f9eb769f084dcdc3ad59e Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Mon, 27 Jan 2025 19:48:45 -0500 Subject: [PATCH 02/26] README.md is a symbolic link --- README.md | 220 +----------------------------------------------------- 1 file changed, 1 insertion(+), 219 deletions(-) mode change 100644 => 120000 README.md diff --git a/README.md b/README.md deleted file mode 100644 index e0a2caa..0000000 --- a/README.md +++ /dev/null @@ -1,219 +0,0 @@ -# 🚀 FastSQLA - -[![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) -[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) -[![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) -[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) -[![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) - -`FastSQLA` is an [`SQLAlchemy`] extension for [`FastAPI`]. -It offers support for asynchronous SQLAlchemy and features built-in, customizable pagination. - -## Features - -
- Automatic SQLAlchemy configuration at app startup. - - Using [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): -```python -from fastapi import FastAPI -from fastsqla import lifespan - -app = FastAPI(lifespan=lifespan) -``` -
-
- Async SQLAlchemy session as a FastAPI dependency. - -```python -... -from fastsqla import Session -from sqlalchemy import select -... - -@app.get("/heros") -async def get_heros(session:Session): - stmt = select(...) - result = await session.execute(stmt) - ... -``` -
-
- Built-in pagination. - -```python -... -from fastsqla import Page, Paginate -from sqlalchemy import select -... - -@app.get("/heros", response_model=Page[HeroModel]) -async def get_heros(paginate:Paginate): - return paginate(select(Hero)) -``` -
-
- Allows pagination customization. - -```python -... -from fastapi import Page, new_pagination -... - -Paginate = new_pagination(min_page_size=5, max_page_size=500) - -@app.get("/heros", response_model=Page[HeroModel]) -async def get_heros(paginate:Paginate): - return paginate(select(Hero)) -``` -
- -And more ... - - -## Installing - -Using [uv](https://docs.astral.sh/uv/): -```bash -uv add fastsqla -``` - -Using [pip](https://pip.pypa.io/): -``` -pip install fastsqla -``` - -## Quick Example - -```python -# example.py -from http import HTTPStatus - -from fastapi import FastAPI, HTTPException -from pydantic import BaseModel, ConfigDict -from sqlalchemy import select -from sqlalchemy.exc import IntegrityError -from sqlalchemy.orm import Mapped, mapped_column - -from fastsqla import Base, Item, Page, Paginate, Session, lifespan - -app = FastAPI(lifespan=lifespan) - - -class Hero(Base): - __tablename__ = "hero" - id: Mapped[int] = mapped_column(primary_key=True) - name: Mapped[str] = mapped_column(unique=True) - secret_identity: Mapped[str] - - -class HeroBase(BaseModel): - name: str - secret_identity: str - - -class HeroModel(HeroBase): - model_config = ConfigDict(from_attributes=True) - id: int - - -@app.get("/heros", response_model=Page[HeroModel]) -async def list_users(paginate: Paginate): - return await paginate(select(Hero)) - - -@app.get("/heros/{hero_id}", response_model=Item[HeroModel]) -async def get_user(hero_id: int, session: Session): - hero = await session.get(Hero, hero_id) - if hero is None: - raise HTTPException(HTTPStatus.NOT_FOUND, "Hero not found") - return {"data": hero} - - -@app.post("/heros", response_model=Item[HeroModel]) -async def create_user(new_hero: HeroBase, session: Session): - hero = Hero(**new_hero.model_dump()) - session.add(hero) - try: - await session.flush() - except IntegrityError: - raise HTTPException(HTTPStatus.CONFLICT, "Duplicate hero name") - return {"data": hero} -``` - -> [!NOTE] -> Sqlite is used for the sake of the example. -> FastSQLA is compatible with all async db drivers that SQLAlchemy is compatible with. - -
- Create an sqlite3 db: - -```bash -sqlite3 db.sqlite < - -
- Install dependencies & run the app - -```bash -pip install uvicorn aiosqlite fastsqla -sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn example:app -``` - -
- -Execute `GET /heros?offset=10`: - -```bash -curl -X 'GET' \ -'http://127.0.0.1:8000/heros?offset=10&limit=10' \ --H 'accept: application/json' -``` -Returns: -```json -{ - "data": [ - { - "name": "The Flash", - "secret_identity": "Barry Allen", - "id": 11 - }, - { - "name": "Green Lantern", - "secret_identity": "Hal Jordan", - "id": 12 - } - ], - "meta": { - "offset": 10, - "total_items": 12, - "total_pages": 2, - "page_number": 2 - } -} -``` - -[`FastAPI`]: https://fastapi.tiangolo.com/ -[`SQLAlchemy`]: http://sqlalchemy.org/ diff --git a/README.md b/README.md new file mode 120000 index 0000000..e892330 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +docs/index.md \ No newline at end of file From 98d1ac99aeebbc91d5cf50d8a653cda72d73d0ea Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Mon, 27 Jan 2025 19:50:21 -0500 Subject: [PATCH 03/26] revert --- README.md | 220 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 219 insertions(+), 1 deletion(-) mode change 120000 => 100644 README.md diff --git a/README.md b/README.md deleted file mode 120000 index e892330..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -docs/index.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e0a2caa --- /dev/null +++ b/README.md @@ -0,0 +1,219 @@ +# 🚀 FastSQLA + +[![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) +[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) +[![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) +[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) +[![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) + +`FastSQLA` is an [`SQLAlchemy`] extension for [`FastAPI`]. +It offers support for asynchronous SQLAlchemy and features built-in, customizable pagination. + +## Features + +
+ Automatic SQLAlchemy configuration at app startup. + + Using [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): +```python +from fastapi import FastAPI +from fastsqla import lifespan + +app = FastAPI(lifespan=lifespan) +``` +
+
+ Async SQLAlchemy session as a FastAPI dependency. + +```python +... +from fastsqla import Session +from sqlalchemy import select +... + +@app.get("/heros") +async def get_heros(session:Session): + stmt = select(...) + result = await session.execute(stmt) + ... +``` +
+
+ Built-in pagination. + +```python +... +from fastsqla import Page, Paginate +from sqlalchemy import select +... + +@app.get("/heros", response_model=Page[HeroModel]) +async def get_heros(paginate:Paginate): + return paginate(select(Hero)) +``` +
+
+ Allows pagination customization. + +```python +... +from fastapi import Page, new_pagination +... + +Paginate = new_pagination(min_page_size=5, max_page_size=500) + +@app.get("/heros", response_model=Page[HeroModel]) +async def get_heros(paginate:Paginate): + return paginate(select(Hero)) +``` +
+ +And more ... + + +## Installing + +Using [uv](https://docs.astral.sh/uv/): +```bash +uv add fastsqla +``` + +Using [pip](https://pip.pypa.io/): +``` +pip install fastsqla +``` + +## Quick Example + +```python +# example.py +from http import HTTPStatus + +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel, ConfigDict +from sqlalchemy import select +from sqlalchemy.exc import IntegrityError +from sqlalchemy.orm import Mapped, mapped_column + +from fastsqla import Base, Item, Page, Paginate, Session, lifespan + +app = FastAPI(lifespan=lifespan) + + +class Hero(Base): + __tablename__ = "hero" + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(unique=True) + secret_identity: Mapped[str] + + +class HeroBase(BaseModel): + name: str + secret_identity: str + + +class HeroModel(HeroBase): + model_config = ConfigDict(from_attributes=True) + id: int + + +@app.get("/heros", response_model=Page[HeroModel]) +async def list_users(paginate: Paginate): + return await paginate(select(Hero)) + + +@app.get("/heros/{hero_id}", response_model=Item[HeroModel]) +async def get_user(hero_id: int, session: Session): + hero = await session.get(Hero, hero_id) + if hero is None: + raise HTTPException(HTTPStatus.NOT_FOUND, "Hero not found") + return {"data": hero} + + +@app.post("/heros", response_model=Item[HeroModel]) +async def create_user(new_hero: HeroBase, session: Session): + hero = Hero(**new_hero.model_dump()) + session.add(hero) + try: + await session.flush() + except IntegrityError: + raise HTTPException(HTTPStatus.CONFLICT, "Duplicate hero name") + return {"data": hero} +``` + +> [!NOTE] +> Sqlite is used for the sake of the example. +> FastSQLA is compatible with all async db drivers that SQLAlchemy is compatible with. + +
+ Create an sqlite3 db: + +```bash +sqlite3 db.sqlite < + +
+ Install dependencies & run the app + +```bash +pip install uvicorn aiosqlite fastsqla +sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn example:app +``` + +
+ +Execute `GET /heros?offset=10`: + +```bash +curl -X 'GET' \ +'http://127.0.0.1:8000/heros?offset=10&limit=10' \ +-H 'accept: application/json' +``` +Returns: +```json +{ + "data": [ + { + "name": "The Flash", + "secret_identity": "Barry Allen", + "id": 11 + }, + { + "name": "Green Lantern", + "secret_identity": "Hal Jordan", + "id": 12 + } + ], + "meta": { + "offset": 10, + "total_items": 12, + "total_pages": 2, + "page_number": 2 + } +} +``` + +[`FastAPI`]: https://fastapi.tiangolo.com/ +[`SQLAlchemy`]: http://sqlalchemy.org/ From d3de7588fee6175f5aee830f640a7e6e85cb18ac Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 17:13:27 -0500 Subject: [PATCH 04/26] docs: add docs --- README.md | 2 +- docs/api.md | 10 ++ docs/configuration.md | 42 ++++++++ docs/images/favicon.png | Bin 0 -> 12245 bytes docs/index.md | 225 ++++++++-------------------------------- mkdocs.yml | 28 ++++- src/fastsqla.py | 10 +- 7 files changed, 132 insertions(+), 185 deletions(-) create mode 100644 docs/api.md create mode 100644 docs/configuration.md create mode 100644 docs/images/favicon.png diff --git a/README.md b/README.md index e0a2caa..5b3d871 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ async def get_heros(paginate:Paginate): ```
- Allows pagination customization. + Pagination customization. ```python ... diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 0000000..53db027 --- /dev/null +++ b/docs/api.md @@ -0,0 +1,10 @@ +# API + +## `fastsqla.lifespan` + +::: fastsqla.lifespan + options: + show_source: false + show_root_heading: false + heading_level: false + diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000..6236aef --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,42 @@ +# Configuration + +Configuration is exclusively done via environment variables to follow the +[**Twelve-Factor App methodology**](https://12factor.net/config). + +The only required key is **`SQLALCHEMY_URL`**, which specifies the database URL and +supports embedding specific database driver parameters in the query string. + +All parameters of [`sqlalchemy.create_engine`][] can be configured by setting environment +variables, with each parameter name prefixed by **`SQLALCHEMY_`**. + +!!! note + + FastSQLA is case-insensitive when reading environment variables, so parameter names + prefixed with **`SQLALCHEMY_`** can be provided in any letter case. + +## Examples + +1. :simple-postgresql: PostgreSQL url using [`asyncpg`][sqlalchemy.dialects.postgresql.asyncpg] + driver with a [`pool_recycle`][sqlalchemy.create_engine.params.pool_recycle] of 30 + minutes: + + ```bash + export SQLALCHEMY_URL=postgresql+asyncpg://postgres@localhost + export SQLALCHEMY_POOL_RECYCLE=1800 + ``` + +2. :simple-sqlite: SQLite db file using [`aiosqlite`][sqlalchemy.dialects.sqlite.aiosqlite] + driver with a [`pool_size`][sqlalchemy.create_engine.params.pool_size] of 50: + + ```bash + export sqlalchemy_url=sqlite+aiosqlite:////tmp/test.db?check_same_thread=false + export sqlalchemy_pool_size=10 + ``` + +3. :simple-mariadb: MariaDB url using [`aiomysql`][sqlalchemy.dialects.mysql.aiomysql] + driver with [`echo`][sqlalchemy.create_engine.params.echo] parameter set to `True` + + ```bash + export sqlalchemy_url=mysql+aiomysql://bob:password!@db.example.com/app + export sqlalchemy_echo=true + ``` \ No newline at end of file diff --git a/docs/images/favicon.png b/docs/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3200c85afe5f1b52f27accfa8c1d819695a6fc GIT binary patch literal 12245 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 Sl*#=7eT?+XkK`XBh5sKb^rCJ6 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index e0a2caa..895a90f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,4 @@ -# 🚀 FastSQLA +# FastSQLA [![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) @@ -6,214 +6,77 @@ [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) [![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) -`FastSQLA` is an [`SQLAlchemy`] extension for [`FastAPI`]. -It offers support for asynchronous SQLAlchemy and features built-in, customizable pagination. +`FastSQLA` is an [`SQLAlchemy 2`](https://docs.sqlalchemy.org/en/20/) extension for +[`FastAPI`](https://fastapi.tiangolo.com/). -## Features +It streamlines the configuration and asynchronous connection to relational databases by +providing boilerplate and intuitive helpers. Additionally, it offers built-in +customizable pagination and automatically manages the `SQLAlchemy` session lifecycle +following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/session_basics.html#when-do-i-construct-a-session-when-do-i-commit-it-and-when-do-i-close-it). -
- Automatic SQLAlchemy configuration at app startup. - - Using [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): -```python -from fastapi import FastAPI -from fastsqla import lifespan - -app = FastAPI(lifespan=lifespan) -``` -
-
- Async SQLAlchemy session as a FastAPI dependency. - -```python -... -from fastsqla import Session -from sqlalchemy import select -... - -@app.get("/heros") -async def get_heros(session:Session): - stmt = select(...) - result = await session.execute(stmt) - ... -``` -
-
- Built-in pagination. - -```python -... -from fastsqla import Page, Paginate -from sqlalchemy import select -... - -@app.get("/heros", response_model=Page[HeroModel]) -async def get_heros(paginate:Paginate): - return paginate(select(Hero)) -``` -
-
- Allows pagination customization. - -```python -... -from fastapi import Page, new_pagination -... - -Paginate = new_pagination(min_page_size=5, max_page_size=500) - -@app.get("/heros", response_model=Page[HeroModel]) -async def get_heros(paginate:Paginate): - return paginate(select(Hero)) -``` -
+## Installing -And more ... - +As advised on [`FastAPI` documentation](https://fastapi.tiangolo.com/virtual-environments/), +create and activate a virtual environment and then install `FastSQLA`. -## Installing +Using [`uv`](https://docs.astral.sh/uv): -Using [uv](https://docs.astral.sh/uv/): ```bash uv add fastsqla ``` -Using [pip](https://pip.pypa.io/): -``` +Using [pip](https://pip.pypa.io/en/stable/): + +```bash pip install fastsqla ``` -## Quick Example - -```python -# example.py -from http import HTTPStatus - -from fastapi import FastAPI, HTTPException -from pydantic import BaseModel, ConfigDict -from sqlalchemy import select -from sqlalchemy.exc import IntegrityError -from sqlalchemy.orm import Mapped, mapped_column - -from fastsqla import Base, Item, Page, Paginate, Session, lifespan - -app = FastAPI(lifespan=lifespan) - +## Setup -class Hero(Base): - __tablename__ = "hero" - id: Mapped[int] = mapped_column(primary_key=True) - name: Mapped[str] = mapped_column(unique=True) - secret_identity: Mapped[str] +### Lifespan +Setup using [FastSQLA lifespan context manager] -class HeroBase(BaseModel): - name: str - secret_identity: str - - -class HeroModel(HeroBase): - model_config = ConfigDict(from_attributes=True) - id: int +```python +from fastapi import FastAPI +from fastsqla import lifespan -@app.get("/heros", response_model=Page[HeroModel]) -async def list_users(paginate: Paginate): - return await paginate(select(Hero)) +app = FastAPI(lifespan=lifespan) +``` +If you need to open more than one lifespan context, create an async context manager +function to open as many lifespans as needed and set it as the lifespan of the app. +Use an [AsyncExitStack][contextlib.AsyncExitStack] to open multiple lifespan contexts: -@app.get("/heros/{hero_id}", response_model=Item[HeroModel]) -async def get_user(hero_id: int, session: Session): - hero = await session.get(Hero, hero_id) - if hero is None: - raise HTTPException(HTTPStatus.NOT_FOUND, "Hero not found") - return {"data": hero} +```python +from collections.abc import AsyncGenerator +from contextlib import asynccontextmanager +from fastapi import FastAPI +from fastsqla import lifespan as fastsqla_lifespan +from this_other_library import another_lifespan -@app.post("/heros", response_model=Item[HeroModel]) -async def create_user(new_hero: HeroBase, session: Session): - hero = Hero(**new_hero.model_dump()) - session.add(hero) - try: - await session.flush() - except IntegrityError: - raise HTTPException(HTTPStatus.CONFLICT, "Duplicate hero name") - return {"data": hero} -``` -> [!NOTE] -> Sqlite is used for the sake of the example. -> FastSQLA is compatible with all async db drivers that SQLAlchemy is compatible with. +@asynccontextmanager +async def lifespan(app:FastAPI) -> AsyncGenerator[dict, None]: + async with AsyncExitStack() as stack: + yield { + **stack.enter_async_context(lifespan(app)), + **stack.enter_async_context(another_lifespan(app)), + } -
- Create an sqlite3 db: -```bash -sqlite3 db.sqlite < +To know more about lifespan protocol: -
- Install dependencies & run the app +* [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) +* [Use Lifespan State instead of `app.state`](https://github.com/Kludex/fastapi-tips?tab=readme-ov-file#6-use-lifespan-state-instead-of-appstate) +* [FastAPI lifespan documentation](https://fastapi.tiangolo.com/advanced/events/): -```bash -pip install uvicorn aiosqlite fastsqla -sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn example:app -``` - -
-Execute `GET /heros?offset=10`: +### Get an async SQLAlchemy session -```bash -curl -X 'GET' \ -'http://127.0.0.1:8000/heros?offset=10&limit=10' \ --H 'accept: application/json' -``` -Returns: -```json -{ - "data": [ - { - "name": "The Flash", - "secret_identity": "Barry Allen", - "id": 11 - }, - { - "name": "Green Lantern", - "secret_identity": "Hal Jordan", - "id": 12 - } - ], - "meta": { - "offset": 10, - "total_items": 12, - "total_pages": 2, - "page_number": 2 - } -} -``` -[`FastAPI`]: https://fastapi.tiangolo.com/ -[`SQLAlchemy`]: http://sqlalchemy.org/ diff --git a/mkdocs.yml b/mkdocs.yml index 02f8fc5..0461283 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -7,9 +7,16 @@ edit_uri: edit/main/docs/ nav: - Get Started: - Welcome to FastSQLA: index.md + - Configuration: configuration.md + #- SQLAlchemy Session: session.md + #- Pagination: pagination.md + - API: api.md - Changelog: changelog.md theme: + favicon: images/favicon.png + icon: + logo: material/database name: material features: - content.tabs.link @@ -46,4 +53,23 @@ theme: plugins: - search - - mkdocstrings \ No newline at end of file + - autorefs + - mkdocstrings: + enable_inventory: true + handlers: + python: + import: + - https://docs.python.org/3/objects.inv + - https://docs.sqlalchemy.org/en/20/objects.inv + - https://fastapi.tiangolo.com/objects.inv + +markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences + - attr_list + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - toc: + permalink: true diff --git a/src/fastsqla.py b/src/fastsqla.py index e8e6269..3748d6a 100644 --- a/src/fastsqla.py +++ b/src/fastsqla.py @@ -4,7 +4,7 @@ from contextlib import asynccontextmanager from typing import Annotated, Generic, TypeVar, TypedDict -from fastapi import Depends, Query +from fastapi import Depends, FastAPI, Query from pydantic import BaseModel, Field from sqlalchemy import Result, Select, func, select from sqlalchemy.ext.asyncio import ( @@ -44,7 +44,13 @@ class State(TypedDict): @asynccontextmanager -async def lifespan(_) -> AsyncGenerator[State, None]: +async def lifespan(app: FastAPI) -> AsyncGenerator[State, None]: + """A lifespan context manager that setup `FastSQLA` when opened. + + This async context manager must be used to setup SQLAlchemy. + + TBD + """ prefix = "sqlalchemy_" sqla_config = {k.lower(): v for k, v in os.environ.items()} try: From 8232f351a013c283afdb5ae362a9df96f72685b9 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 18:33:01 -0500 Subject: [PATCH 05/26] add github action workflow to build & pubklish doc --- .github/workflows/doc.yml | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/doc.yml diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml new file mode 100644 index 0000000..eaaba14 --- /dev/null +++ b/.github/workflows/doc.yml @@ -0,0 +1,44 @@ +name: Build & Publish Doc + +on: + push: + branches: + - docs/mkdocs + +jobs: + + Build-Doc: + runs-on: ubuntu-latest + concurrency: release + permissions: + contents: write + id-token: write + steps: + - name: 📥 checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: 🔧 setup uv + uses: ./.github/uv + + - name: 📙 mkdocs build + run: mkdocs build + + - name: 📦 Upload artifacts + uses: actions/upload-artifact@v3 + with: + path: site + + Publish-Doc: + needs: Build-Doc + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} \ No newline at end of file From 805cfe9a858b8c8dd6b62e78b4518cd4a3ca0f5c Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 18:34:34 -0500 Subject: [PATCH 06/26] upgrade actions/upload-artifact to v4 --- .github/workflows/doc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index eaaba14..9db0f07 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -25,7 +25,7 @@ jobs: run: mkdocs build - name: 📦 Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: path: site From 71e9611f9f80899e9fc179fd71fc7b0dd09d8026 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 18:41:52 -0500 Subject: [PATCH 07/26] uv sync --extra docs --- .github/workflows/doc.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 9db0f07..c24a633 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -20,10 +20,10 @@ jobs: fetch-depth: 0 - name: 🔧 setup uv uses: ./.github/uv - + - name: ⚙️ install deps + run: uv sync --extra docs - name: 📙 mkdocs build - run: mkdocs build - + run: uv run mkdocs build - name: 📦 Upload artifacts uses: actions/upload-artifact@v4 with: From 250fa0cb769fa92f1d270b02c588073a93324c71 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 18:48:33 -0500 Subject: [PATCH 08/26] fix --- .github/workflows/doc.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index c24a633..7a32a60 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -28,6 +28,7 @@ jobs: uses: actions/upload-artifact@v4 with: path: site + name: github-pages Publish-Doc: needs: Build-Doc From f5b806902387435d62196999648bde1ef801f2b1 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 18:50:24 -0500 Subject: [PATCH 09/26] fix perms --- .github/workflows/doc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 7a32a60..ae4ba15 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -34,7 +34,7 @@ jobs: needs: Build-Doc runs-on: ubuntu-latest permissions: - contents: read + pages: write id-token: write steps: - name: Deploy to GitHub Pages From 6ba261e7217db60fed5b16ba1bd2062f5c174a6c Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 19:10:13 -0500 Subject: [PATCH 10/26] use actions/upload-pages-artifact@v2 instead of actions/upload-artifact --- .github/workflows/doc.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index ae4ba15..bf31195 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -25,10 +25,9 @@ jobs: - name: 📙 mkdocs build run: uv run mkdocs build - name: 📦 Upload artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-pages-artifact@v3 with: path: site - name: github-pages Publish-Doc: needs: Build-Doc From af193060621bca980bc9ccd596ea65e3c6b6f77e Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 19:16:10 -0500 Subject: [PATCH 11/26] is this necesary? --- .github/workflows/doc.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index bf31195..fe0e010 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -20,8 +20,6 @@ jobs: fetch-depth: 0 - name: 🔧 setup uv uses: ./.github/uv - - name: ⚙️ install deps - run: uv sync --extra docs - name: 📙 mkdocs build run: uv run mkdocs build - name: 📦 Upload artifacts From 1f360e57e359e8d8bed6c9f46a0e06adb6561666 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 19:17:08 -0500 Subject: [PATCH 12/26] yes it is --- .github/workflows/doc.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index fe0e010..bf31195 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -20,6 +20,8 @@ jobs: fetch-depth: 0 - name: 🔧 setup uv uses: ./.github/uv + - name: ⚙️ install deps + run: uv sync --extra docs - name: 📙 mkdocs build run: uv run mkdocs build - name: 📦 Upload artifacts From a07c41e39d5a8ba60cba87163fe42f054b182325 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 19:23:54 -0500 Subject: [PATCH 13/26] change branch path regex --- .github/workflows/doc.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index bf31195..cc44f46 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -3,7 +3,8 @@ name: Build & Publish Doc on: push: branches: - - docs/mkdocs + - main + - docs/** jobs: From 4821342b90843147dd58e99a52186964c4838ae3 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 21:24:56 -0500 Subject: [PATCH 14/26] document setup --- docs/api.md | 10 ---------- docs/index.md | 47 +++++---------------------------------------- mkdocs.yml | 3 --- src/fastsqla.py | 51 ++++++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 53 insertions(+), 58 deletions(-) delete mode 100644 docs/api.md diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index 53db027..0000000 --- a/docs/api.md +++ /dev/null @@ -1,10 +0,0 @@ -# API - -## `fastsqla.lifespan` - -::: fastsqla.lifespan - options: - show_source: false - show_root_heading: false - heading_level: false - diff --git a/docs/index.md b/docs/index.md index 895a90f..a0619ce 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,49 +33,12 @@ pip install fastsqla ## Setup -### Lifespan - -Setup using [FastSQLA lifespan context manager] - -```python -from fastapi import FastAPI -from fastsqla import lifespan - - -app = FastAPI(lifespan=lifespan) -``` - -If you need to open more than one lifespan context, create an async context manager -function to open as many lifespans as needed and set it as the lifespan of the app. -Use an [AsyncExitStack][contextlib.AsyncExitStack] to open multiple lifespan contexts: - -```python -from collections.abc import AsyncGenerator -from contextlib import asynccontextmanager - -from fastapi import FastAPI -from fastsqla import lifespan as fastsqla_lifespan -from this_other_library import another_lifespan - - -@asynccontextmanager -async def lifespan(app:FastAPI) -> AsyncGenerator[dict, None]: - async with AsyncExitStack() as stack: - yield { - **stack.enter_async_context(lifespan(app)), - **stack.enter_async_context(another_lifespan(app)), - } - - -app = FastAPI(lifespan=lifespan) -``` - -To know more about lifespan protocol: - -* [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) -* [Use Lifespan State instead of `app.state`](https://github.com/Kludex/fastapi-tips?tab=readme-ov-file#6-use-lifespan-state-instead-of-appstate) -* [FastAPI lifespan documentation](https://fastapi.tiangolo.com/advanced/events/): +### `fastsqla.lifespan` +::: fastsqla.lifespan + options: + heading_level: false + show_source: false ### Get an async SQLAlchemy session diff --git a/mkdocs.yml b/mkdocs.yml index 0461283..04b3a7f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -8,9 +8,6 @@ nav: - Get Started: - Welcome to FastSQLA: index.md - Configuration: configuration.md - #- SQLAlchemy Session: session.md - #- Pagination: pagination.md - - API: api.md - Changelog: changelog.md theme: diff --git a/src/fastsqla.py b/src/fastsqla.py index 3748d6a..aa916b4 100644 --- a/src/fastsqla.py +++ b/src/fastsqla.py @@ -45,11 +45,56 @@ class State(TypedDict): @asynccontextmanager async def lifespan(app: FastAPI) -> AsyncGenerator[State, None]: - """A lifespan context manager that setup `FastSQLA` when opened. + """Use `fastsqla.lifespan` to set up SQLAlchemy. - This async context manager must be used to setup SQLAlchemy. + In an ASGI application, [lifespan events](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) + are used to communicate startup & shutdown events. - TBD + The [`lifespan`](https://fastapi.tiangolo.com/advanced/events/#lifespan) parameter of + the `FastAPI` app can be set to a context manager. That context manager is + opened when app starts and closed when app stops. + + In order for `FastSQLA` to setup `SQLAlchemy` before the app is started, set + `lifespan` parameter to `fastsqla.lifespan`: + + ```python + from fastapi import FastAPI + from fastsqla import lifespan + + + app = FastAPI(lifespan=lifespan) + ``` + + If you need to open more than one lifespan context, create an async context manager + function to open as many lifespans as needed and set it as the lifespan of the app. + Use an [AsyncExitStack][contextlib.AsyncExitStack] to open multiple lifespan contexts: + + ```python + from collections.abc import AsyncGenerator + from contextlib import asynccontextmanager + + from fastapi import FastAPI + from fastsqla import lifespan as fastsqla_lifespan + from this_other_library import another_lifespan + + + @asynccontextmanager + async def lifespan(app:FastAPI) -> AsyncGenerator[dict, None]: + async with AsyncExitStack() as stack: + yield { + **stack.enter_async_context(lifespan(app)), + **stack.enter_async_context(another_lifespan(app)), + } + + + app = FastAPI(lifespan=lifespan) + ``` + + To know more about lifespan protocol: + + * [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) + * [Use Lifespan State instead of `app.state`](https://github.com/Kludex/fastapi-tips?tab=readme-ov-file#6-use-lifespan-state-instead-of-appstate) + * [FastAPI lifespan documentation](https://fastapi.tiangolo.com/advanced/events/): """ prefix = "sqlalchemy_" sqla_config = {k.lower(): v for k, v in os.environ.items()} From 66042768877b8fe30b08507f341f329fde6b6c53 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Thu, 30 Jan 2025 21:26:38 -0500 Subject: [PATCH 15/26] remove confusion --- docs/index.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index a0619ce..11eb567 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,9 +16,6 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ ## Installing -As advised on [`FastAPI` documentation](https://fastapi.tiangolo.com/virtual-environments/), -create and activate a virtual environment and then install `FastSQLA`. - Using [`uv`](https://docs.astral.sh/uv): ```bash From d498a256a20ff77c109b23c55b0314d2604d13c0 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Sat, 1 Feb 2025 15:02:12 -0500 Subject: [PATCH 16/26] Does a symbolic link work? --- README.md | 35 ++++++++++++++++++++++++++++++++--- docs/index.md | 43 +------------------------------------------ mkdocs.yml | 6 +++--- src/fastsqla.py | 12 ++++++------ 4 files changed, 42 insertions(+), 54 deletions(-) mode change 100644 => 120000 docs/index.md diff --git a/README.md b/README.md index 5b3d871..1999017 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# 🚀 FastSQLA +# FastSQLA + +_Async SQLAlchemy for FastAPI — boilerplate, pagination, and seamless session management._ [![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) @@ -6,8 +8,12 @@ [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) [![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) -`FastSQLA` is an [`SQLAlchemy`] extension for [`FastAPI`]. -It offers support for asynchronous SQLAlchemy and features built-in, customizable pagination. +`FastSQLA` is an [`SQLAlchemy 2`](https://docs.sqlalchemy.org/en/20/) extension for +[`FastAPI`](https://fastapi.tiangolo.com/). +It streamlines the configuration and asynchronous connection to relational databases by +providing boilerplate and intuitive helpers. Additionally, it offers built-in +customizable pagination and automatically manages the `SQLAlchemy` session lifecycle +following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/session_basics.html#when-do-i-construct-a-session-when-do-i-commit-it-and-when-do-i-close-it). ## Features @@ -51,6 +57,29 @@ from sqlalchemy import select async def get_heros(paginate:Paginate): return paginate(select(Hero)) ``` +Which would return something like: +```json +{ + "data": [ + { + "name": "The Flash", + "secret_identity": "Barry Allen", + "id": 11 + }, + { + "name": "Green Lantern", + "secret_identity": "Hal Jordan", + "id": 12 + } + ], + "meta": { + "offset": 10, + "total_items": 12, + "total_pages": 2, + "page_number": 2 + } +} +```
Pagination customization. diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 11eb567..0000000 --- a/docs/index.md +++ /dev/null @@ -1,42 +0,0 @@ -# FastSQLA - -[![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) -[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) -[![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) -[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) -[![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) - -`FastSQLA` is an [`SQLAlchemy 2`](https://docs.sqlalchemy.org/en/20/) extension for -[`FastAPI`](https://fastapi.tiangolo.com/). - -It streamlines the configuration and asynchronous connection to relational databases by -providing boilerplate and intuitive helpers. Additionally, it offers built-in -customizable pagination and automatically manages the `SQLAlchemy` session lifecycle -following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/session_basics.html#when-do-i-construct-a-session-when-do-i-commit-it-and-when-do-i-close-it). - -## Installing - -Using [`uv`](https://docs.astral.sh/uv): - -```bash -uv add fastsqla -``` - -Using [pip](https://pip.pypa.io/en/stable/): - -```bash -pip install fastsqla -``` - -## Setup - -### `fastsqla.lifespan` - -::: fastsqla.lifespan - options: - heading_level: false - show_source: false - -### Get an async SQLAlchemy session - - diff --git a/docs/index.md b/docs/index.md new file mode 120000 index 0000000..32d46ee --- /dev/null +++ b/docs/index.md @@ -0,0 +1 @@ +../README.md \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 04b3a7f..d2138bc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -16,16 +16,16 @@ theme: logo: material/database name: material features: - - content.tabs.link + - announce.dismiss - content.code.annotate - content.code.copy - - announce.dismiss - - navigation.tabs + - content.tabs.link - navigation.instant - navigation.instant.prefetch - navigation.instant.progress - navigation.path - navigation.sections + - navigation.tabs - navigation.top - navigation.tracking - search.suggest diff --git a/src/fastsqla.py b/src/fastsqla.py index aa916b4..ac03274 100644 --- a/src/fastsqla.py +++ b/src/fastsqla.py @@ -51,8 +51,8 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[State, None]: are used to communicate startup & shutdown events. The [`lifespan`](https://fastapi.tiangolo.com/advanced/events/#lifespan) parameter of - the `FastAPI` app can be set to a context manager. That context manager is - opened when app starts and closed when app stops. + the `FastAPI` app can be assigned to a context manager, which is opened when the app + starts and closed when the app stops. In order for `FastSQLA` to setup `SQLAlchemy` before the app is started, set `lifespan` parameter to `fastsqla.lifespan`: @@ -65,9 +65,8 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[State, None]: app = FastAPI(lifespan=lifespan) ``` - If you need to open more than one lifespan context, create an async context manager - function to open as many lifespans as needed and set it as the lifespan of the app. - Use an [AsyncExitStack][contextlib.AsyncExitStack] to open multiple lifespan contexts: + If multiple lifespan contexts are required, create an async context manager function + to handle them and set it as the app's lifespan: ```python from collections.abc import AsyncGenerator @@ -94,7 +93,7 @@ async def lifespan(app:FastAPI) -> AsyncGenerator[dict, None]: * [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) * [Use Lifespan State instead of `app.state`](https://github.com/Kludex/fastapi-tips?tab=readme-ov-file#6-use-lifespan-state-instead-of-appstate) - * [FastAPI lifespan documentation](https://fastapi.tiangolo.com/advanced/events/): + * [FastAPI lifespan documentation](https://fastapi.tiangolo.com/advanced/events/) """ prefix = "sqlalchemy_" sqla_config = {k.lower(): v for k, v in os.environ.items()} @@ -121,6 +120,7 @@ async def lifespan(app:FastAPI) -> AsyncGenerator[dict, None]: @asynccontextmanager async def open_session() -> AsyncGenerator[AsyncSession, None]: + """Context Open a new session and commit or rollback on exit.""" session = SessionFactory() try: yield session From 602da7450975837003c83963e209f00675aff511 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Sat, 1 Feb 2025 15:43:04 -0500 Subject: [PATCH 17/26] better readme/index --- README.md | 184 ++++++++++++++++++++++++++---------------------------- 1 file changed, 89 insertions(+), 95 deletions(-) diff --git a/README.md b/README.md index 1999017..6968089 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # FastSQLA -_Async SQLAlchemy for FastAPI — boilerplate, pagination, and seamless session management._ +_Async SQLAlchemy 2 for FastAPI — boilerplate, pagination, and seamless session management._ [![PyPI - Version](https://img.shields.io/pypi/v/FastSQLA?color=brightgreen)](https://pypi.org/project/FastSQLA/) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/hadrien/fastsqla/ci.yml?branch=main&logo=github&label=CI)](https://github.com/hadrien/FastSQLA/actions?query=branch%3Amain+event%3Apush) @@ -17,88 +17,82 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ ## Features -
- Automatic SQLAlchemy configuration at app startup. +* Automatic SQLAlchemy setup at app startup using + [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): - Using [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): -```python -from fastapi import FastAPI -from fastsqla import lifespan + ```python + from fastapi import FastAPI + from fastsqla import lifespan -app = FastAPI(lifespan=lifespan) -``` -
-
- Async SQLAlchemy session as a FastAPI dependency. + app = FastAPI(lifespan=lifespan) + ``` -```python -... -from fastsqla import Session -from sqlalchemy import select -... +* Async SQLAlchemy session as a FastAPI dependency: -@app.get("/heros") -async def get_heros(session:Session): - stmt = select(...) - result = await session.execute(stmt) + ```python + ... + from fastsqla import Session + from sqlalchemy import select ... -``` -
-
- Built-in pagination. -```python -... -from fastsqla import Page, Paginate -from sqlalchemy import select -... + @app.get("/heros") + async def get_heros(session:Session): + stmt = select(...) + result = await session.execute(stmt) + ... + ``` -@app.get("/heros", response_model=Page[HeroModel]) -async def get_heros(paginate:Paginate): - return paginate(select(Hero)) -``` -Which would return something like: -```json -{ - "data": [ - { - "name": "The Flash", - "secret_identity": "Barry Allen", - "id": 11 - }, +* Built-in pagination: + + ```python + ... + from fastsqla import Page, Paginate + from sqlalchemy import select + ... + + @app.get("/heros", response_model=Page[HeroModel]) + async def get_heros(paginate:Paginate): + return paginate(select(Hero)) + ``` + Returning data & pagination metadata: + ```json { - "name": "Green Lantern", - "secret_identity": "Hal Jordan", - "id": 12 + "data": [ + { + "name": "The Flash", + "secret_identity": "Barry Allen", + "id": 11 + }, + { + "name": "Green Lantern", + "secret_identity": "Hal Jordan", + "id": 12 + } + ], + "meta": { + "offset": 10, + "total_items": 12, + "total_pages": 2, + "page_number": 2 + } } - ], - "meta": { - "offset": 10, - "total_items": 12, - "total_pages": 2, - "page_number": 2 - } -} -``` -
-
- Pagination customization. + ``` -```python -... -from fastapi import Page, new_pagination -... +* Pagination customization: + ```python + ... + from fastapi import Page, new_pagination + ... -Paginate = new_pagination(min_page_size=5, max_page_size=500) + Paginate = new_pagination(min_page_size=5, max_page_size=500) -@app.get("/heros", response_model=Page[HeroModel]) -async def get_heros(paginate:Paginate): - return paginate(select(Hero)) -``` -
+ @app.get("/heros", response_model=Page[HeroModel]) + async def get_heros(paginate:Paginate): + return paginate(select(Hero)) + ``` And more ... - + ## Installing @@ -114,6 +108,14 @@ pip install fastsqla ## Quick Example +💡 The example uses an `SQLite` database for simplicity. + +`FastSQLA` is compatible with all asynchronous db drivers that `SQLAlchemy` is +compatible with. + +
+ Write the application code in example.py + ```python # example.py from http import HTTPStatus @@ -169,13 +171,11 @@ async def create_user(new_hero: HeroBase, session: Session): raise HTTPException(HTTPStatus.CONFLICT, "Duplicate hero name") return {"data": hero} ``` +
-> [!NOTE] -> Sqlite is used for the sake of the example. -> FastSQLA is compatible with all async db drivers that SQLAlchemy is compatible with.
- Create an sqlite3 db: + Create an SQLite using `sqlite3` db: ```bash sqlite3 db.sqlite <
- Install dependencies & run the app + Install dependencies & run the app ```bash pip install uvicorn aiosqlite fastsqla sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn example:app ``` -
- -Execute `GET /heros?offset=10`: +
+ Execute GET /heros?offset=10 using `curl` ```bash -curl -X 'GET' \ -'http://127.0.0.1:8000/heros?offset=10&limit=10' \ --H 'accept: application/json' +curl -X 'GET' -H 'accept: application/json' 'http://127.0.0.1:8000/heros?offset=10&limit=10' + ``` Returns: ```json @@ -243,6 +240,3 @@ Returns: } } ``` - -[`FastAPI`]: https://fastapi.tiangolo.com/ -[`SQLAlchemy`]: http://sqlalchemy.org/ From 411dfb8e03e94555484eb7278acc173ea041eae1 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Sat, 1 Feb 2025 16:01:25 -0500 Subject: [PATCH 18/26] refining more --- README.md | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6968089..fded40d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ ## Features -* Automatic SQLAlchemy setup at app startup using +* Easy setup at app startup using [`FastAPI` Lifespan](https://fastapi.tiangolo.com/advanced/events/#lifespan): ```python @@ -27,7 +27,7 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ app = FastAPI(lifespan=lifespan) ``` -* Async SQLAlchemy session as a FastAPI dependency: +* `SQLAlchemy` async session dependency: ```python ... @@ -42,6 +42,18 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ ... ``` +* `SQLAlchemy` async session with an async context manager: + + ```python + from fastsqla import open_session + + async def background_job(): + async with open_session() as session: + stmt = select(...) + result = await session.execute(stmt) + ... + ``` + * Built-in pagination: ```python @@ -52,10 +64,11 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ @app.get("/heros", response_model=Page[HeroModel]) async def get_heros(paginate:Paginate): - return paginate(select(Hero)) + return await paginate(select(Hero)) ``` - Returning data & pagination metadata: +
👇👇👇
```json + // /heros?offset=10&limit=10 { "data": [ { @@ -90,8 +103,8 @@ following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/ async def get_heros(paginate:Paginate): return paginate(select(Hero)) ``` - -And more ... +* Session lifecycle management: session is commited on request success or rollback on + failure. ## Installing From a5c282eaa3e1df834361060f399cb2c567699083 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Sat, 1 Feb 2025 16:23:25 -0500 Subject: [PATCH 19/26] last touch --- README.md | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index fded40d..ff48e54 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ _Async SQLAlchemy 2 for FastAPI — boilerplate, pagination, and seamless sessio [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) [![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) +**Documentation**: https://hadrien.github.io/FastSQLA/ + `FastSQLA` is an [`SQLAlchemy 2`](https://docs.sqlalchemy.org/en/20/) extension for [`FastAPI`](https://fastapi.tiangolo.com/). It streamlines the configuration and asynchronous connection to relational databases by @@ -121,13 +123,9 @@ pip install fastsqla ## Quick Example -💡 The example uses an `SQLite` database for simplicity. - -`FastSQLA` is compatible with all asynchronous db drivers that `SQLAlchemy` is -compatible with. +### `example.py` -
- Write the application code in example.py +Let's write some tiny app in `example.py`: ```python # example.py @@ -184,12 +182,15 @@ async def create_user(new_hero: HeroBase, session: Session): raise HTTPException(HTTPStatus.CONFLICT, "Duplicate hero name") return {"data": hero} ``` -
+### Database -
- Create an SQLite using `sqlite3` db: +💡 This example uses an `SQLite` database for simplicity. +`FastSQLA` is compatible with all asynchronous db drivers that `SQLAlchemy` is +compatible with. + +Let's create an `SQLite` database using `sqlite3`: ```bash sqlite3 db.sqlite < -
- Install dependencies & run the app +### Run the app +Let's install required dependencies & run the app: ```bash pip install uvicorn aiosqlite fastsqla sqlalchemy_url=sqlite+aiosqlite:///db.sqlite?check_same_thread=false uvicorn example:app ``` -
-
- Execute GET /heros?offset=10 using `curl` +### Check the result + +Execute `GET /heros?offset=10&limit=10` using `curl`: ```bash curl -X 'GET' -H 'accept: application/json' 'http://127.0.0.1:8000/heros?offset=10&limit=10' - ``` Returns: ```json @@ -253,3 +252,7 @@ Returns: } } ``` + +## License + +This project is licensed under the terms of the [MIT license](https://github.com/hadrien/FastSQLA/blob/main/LICENSE). \ No newline at end of file From 6949919e185c6178bd2596607089daf28e3ab643 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Sat, 1 Feb 2025 16:45:25 -0500 Subject: [PATCH 20/26] one tiny change --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff48e54..f8c3f51 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,8 @@ class HeroModel(HeroBase): @app.get("/heros", response_model=Page[HeroModel]) async def list_users(paginate: Paginate): - return await paginate(select(Hero)) + stmt = select(Hero) + return await paginate(stmt) @app.get("/heros/{hero_id}", response_model=Item[HeroModel]) From 14fd2ee476650f887ece9412b494bde4b6dc5e49 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Sun, 2 Feb 2025 13:58:07 -0500 Subject: [PATCH 21/26] openapi generated doc image --- README.md | 27 ++++++++++++------ docs/configuration.md | 15 +++++----- docs/images/example-openapi-generated-doc.png | Bin 0 -> 458942 bytes mkdocs.yml | 11 +++++-- pyproject.toml | 6 +++- uv.lock | 11 +++++++ 6 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 docs/images/example-openapi-generated-doc.png diff --git a/README.md b/README.md index f8c3f51..8e95ec8 100644 --- a/README.md +++ b/README.md @@ -186,21 +186,21 @@ async def create_user(new_hero: HeroBase, session: Session): ### Database -💡 This example uses an `SQLite` database for simplicity. +💡 This example uses an `SQLite` database for simplicity: `FastSQLA` is compatible with +all asynchronous db drivers that `SQLAlchemy` is compatible with. -`FastSQLA` is compatible with all asynchronous db drivers that `SQLAlchemy` is -compatible with. +Let's create an `SQLite` database using `sqlite3` and insert 12 rows in the `hero` table: -Let's create an `SQLite` database using `sqlite3`: ```bash sqlite3 db.sqlite <Vj5+Fe6p%*J&K|p$wCcOpe5Soe*rAmzu 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

KQ< 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
    |joN*ytbCBsFO|nm6@aE6CGOMv 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%0Dvw0Fo8Pny_FF0r*-3^En=|*% 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.5.50", "mkdocstrings[python]>=0.27.0"] +docs = [ + "mkdocs-glightbox>=0.4.0", + "mkdocs-material>=9.5.50", + "mkdocstrings[python]>=0.27.0", +] [tool.uv] package = true diff --git a/uv.lock b/uv.lock index 705abdb..3976e36 100644 --- a/uv.lock +++ b/uv.lock @@ -274,6 +274,7 @@ dependencies = [ [package.optional-dependencies] docs = [ + { name = "mkdocs-glightbox" }, { name = "mkdocs-material" }, { name = "mkdocstrings", extra = ["python"] }, ] @@ -298,6 +299,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "fastapi", specifier = ">=0.115.6" }, + { name = "mkdocs-glightbox", marker = "extra == 'docs'", specifier = ">=0.4.0" }, { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.5.50" }, { name = "mkdocstrings", extras = ["python"], marker = "extra == 'docs'", specifier = ">=0.27.0" }, { name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.37" }, @@ -659,6 +661,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, ] +[[package]] +name = "mkdocs-glightbox" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/86/5a/0bc456397ba0acc684b5b1daa4ca232ed717938fd37198251d8bcc4053bf/mkdocs-glightbox-0.4.0.tar.gz", hash = "sha256:392b34207bf95991071a16d5f8916d1d2f2cd5d5bb59ae2997485ccd778c70d9", size = 32010 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/72/b0c2128bb569c732c11ae8e49a777089e77d83c05946062caa19b841e6fb/mkdocs_glightbox-0.4.0-py3-none-any.whl", hash = "sha256:e0107beee75d3eb7380ac06ea2d6eac94c999eaa49f8c3cbab0e7be2ac006ccf", size = 31154 }, +] + [[package]] name = "mkdocs-material" version = "9.5.50" From dbcc1e0f46417b23b1abdf6ffe9345f1174b6f0a Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Fri, 7 Feb 2025 14:28:02 -0500 Subject: [PATCH 22/26] document setup, session & pagination --- README.md | 43 +++++---- docs/pagination.md | 8 ++ docs/session.md | 39 ++++++++ docs/{configuration.md => setup.md} | 28 ++++-- mkdocs.yml | 20 +++- src/fastsqla.py | 141 +++++++++++++++++++++++++++- 6 files changed, 247 insertions(+), 32 deletions(-) create mode 100644 docs/pagination.md create mode 100644 docs/session.md rename docs/{configuration.md => setup.md} (67%) diff --git a/README.md b/README.md index 8e95ec8..4fa0042 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,11 @@ _Async SQLAlchemy 2 for FastAPI — boilerplate, pagination, and seamless sessio [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) [![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) -**Documentation**: https://hadrien.github.io/FastSQLA/ +**Documentation**: [https://hadrien.github.io/FastSQLA/](https://hadrien.github.io/FastSQLA/) + +**Github Repo:** [https://github.com/hadrien/fastsqla](https://github.com/hadrien/fastsqla) + +----------------------------------------------------------------------------------------- `FastSQLA` is an [`SQLAlchemy 2`](https://docs.sqlalchemy.org/en/20/) extension for [`FastAPI`](https://fastapi.tiangolo.com/). @@ -147,11 +151,13 @@ class Hero(Base): id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(unique=True) secret_identity: Mapped[str] + age: Mapped[int] class HeroBase(BaseModel): name: str secret_identity: str + age: int class HeroModel(HeroBase): @@ -160,13 +166,13 @@ class HeroModel(HeroBase): @app.get("/heros", response_model=Page[HeroModel]) -async def list_users(paginate: Paginate): +async def list_heros(paginate: Paginate): stmt = select(Hero) return await paginate(stmt) @app.get("/heros/{hero_id}", response_model=Item[HeroModel]) -async def get_user(hero_id: int, session: Session): +async def get_hero(hero_id: int, session: Session): hero = await session.get(Hero, hero_id) if hero is None: raise HTTPException(HTTPStatus.NOT_FOUND, "Hero not found") @@ -174,7 +180,7 @@ async def get_user(hero_id: int, session: Session): @app.post("/heros", response_model=Item[HeroModel]) -async def create_user(new_hero: HeroBase, session: Session): +async def create_hero(new_hero: HeroBase, session: Session): hero = Hero(**new_hero.model_dump()) session.add(hero) try: @@ -197,22 +203,23 @@ sqlite3 db.sqlite < AsyncGenerator[dict, None]: app = FastAPI(lifespan=lifespan) ``` - To know more about lifespan protocol: + To learn more about lifespan protocol: * [Lifespan Protocol](https://asgi.readthedocs.io/en/latest/specs/lifespan.html) * [Use Lifespan State instead of `app.state`](https://github.com/Kludex/fastapi-tips?tab=readme-ov-file#6-use-lifespan-state-instead-of-appstate) @@ -120,7 +120,25 @@ async def lifespan(app:FastAPI) -> AsyncGenerator[dict, None]: @asynccontextmanager async def open_session() -> AsyncGenerator[AsyncSession, None]: - """Context Open a new session and commit or rollback on exit.""" + """An asynchronous context manager that opens a new `SQLAlchemy` async session. + + To the contrary of the [`Session`][fastsqla.Session] dependency which can only be + used in endpoints, `open_session` can be used anywhere such as in background tasks. + + On exit, it automatically commits the session if no errors occur inside the context, + or rolls back when an exception is raised. + In all cases, it closes the session and returns the associated connection to the + connection pool. + + ```python + from fastsqla import open_session + + async def example(): + async with open_session() as session: + await session.execute(...) + ``` + + """ session = SessionFactory() try: yield session @@ -151,6 +169,54 @@ async def new_session() -> AsyncGenerator[AsyncSession, None]: Session = Annotated[AsyncSession, Depends(new_session)] +"""A dependency used exclusively in endpoints to get an `SQLAlchemy` session. + +`Session` is a [`FastAPI` dependency](https://fastapi.tiangolo.com/tutorial/dependencies/) +that provides an asynchronous `SQLAlchemy` session. +By defining an argument with type `Session` in an endpoint, `FastAPI` will automatically +inject an `SQLAlchemy` async session into the endpoint. + +At the end of request handling: + +* If no exceptions are raised, the session is automatically committed. +* If an exception is raised, the session is automatically rolled back. +* In alls cases, the session is closed and the associated connection is returned to the + connection pool. + +Example: + +``` py title="example.py" hl_lines="3" +@app.get("/heros/{hero_id}", response_model=Item[HeroItem]) +async def get_items( + session: Session, # (1)! + item_id: int, +): + hero = await session.get(Hero, hero_id) + return {"data": hero} +``` + +1. Just define an argument with type `Session` to get an async session injected + in your endpoint. + +--- + +**Recommendation**: Unless there is a good reason to do so, avoid committing the session +manually, as `FastSQLA` handles it automatically. + +If you need data generated by the database server, such as auto-incremented IDs, flush +the session instead: + +```python +@app.post("/heros", response_model=Item[HeroItem]) +async def create_item(session: Session, new_hero: HeroBase): + hero = Hero(**new_hero.model_dump()) + session.add(hero) + await session.flush() + return {"data": hero} +``` + +Or use the [session context manager][fastsqla.open_session] instead. +""" class Meta(BaseModel): @@ -244,4 +310,75 @@ async def paginate(stmt: Select) -> Page: type PaginateType[T] = Callable[[Select], Awaitable[Page[T]]] + Paginate = Annotated[PaginateType[T], Depends(new_pagination())] +"""A dependency used in endpoints to paginate `SQLAlchemy` select queries. + +It adds `offset`and `limit` query parameters to the endpoint, which are used to paginate. +The model returned by the endpoint is a `Page` model, which contains the data and +metadata: + +```json +{ + "data": List[T], + "meta": { + "offset": int, + "total_items": int, + "total_pages": int, + "page_number": int, + } +} +``` + +----- + +Example: +``` py title="example.py" hl_lines="22 23 25" +from fastsqla import Base, Paginate, Page +from pydantic import BaseModel + + +class Hero(Base): + __tablename__ = "hero" + + +class Hero(Base): + __tablename__ = "hero" + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(unique=True) + secret_identity: Mapped[str] + age: Mapped[int] + + +class HeroModel(HeroBase): + model_config = ConfigDict(from_attributes=True) + id: int + + +@app.get("/heros", response_model=Page[HeroModel]) # (1)! +async def list_heros(paginate: Paginate): # (2)! + stmt = select(Hero) + return await paginate(stmt) # (3)! +``` + +1. The endpoint returns a `Page` model of `HeroModel`. +2. Just define an argument with type `Paginate` to get an async `paginate` function + injected in your endpoint function. +3. Await the `paginate` function with the `SQLAlchemy` select statement to get the + paginated result. + +To add filtering, just add whatever query parameters you need to the endpoint: + +```python + +from fastsqla import Paginate, Page + +@app.get("/heros", response_model=Page[HeroModel]) +async def list_heros(paginate: Paginate, age:int | None = None): + stmt = select(Hero) + if age: + stmt = stmt.where(Hero.age == age) + return await paginate(stmt) +``` + +""" From f454edd2b3c3eb3c9781a02135b49e0309c8e8b3 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Fri, 7 Feb 2025 14:39:10 -0500 Subject: [PATCH 23/26] =?UTF-8?q?=F0=9F=92=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/session.md | 4 ++-- src/fastsqla.py | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/session.md b/docs/session.md index 0dbb41b..de3b621 100644 --- a/docs/session.md +++ b/docs/session.md @@ -24,14 +24,14 @@ To learn more about `SQLAlchemy` sessions: * [Session Basics](https://docs.sqlalchemy.org/en/20/orm/session_basics.html#) -## Session dependency +## `fastsqla.Session` dependency ::: fastsqla.Session options: heading_level: false show_source: false -## Session context manager +## `fastsqla.open_session` context manager ::: fastsqla.open_session options: diff --git a/src/fastsqla.py b/src/fastsqla.py index 516ac04..e4b335e 100644 --- a/src/fastsqla.py +++ b/src/fastsqla.py @@ -315,7 +315,7 @@ async def paginate(stmt: Select) -> Page: """A dependency used in endpoints to paginate `SQLAlchemy` select queries. It adds `offset`and `limit` query parameters to the endpoint, which are used to paginate. -The model returned by the endpoint is a `Page` model, which contains the data and +The model returned by the endpoint is a `Page` model. It contains a page of data and metadata: ```json @@ -380,5 +380,4 @@ async def list_heros(paginate: Paginate, age:int | None = None): stmt = stmt.where(Hero.age == age) return await paginate(stmt) ``` - """ From 4fd8e8792e75231c3f6a5cc3f901966983c88c17 Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Fri, 7 Feb 2025 15:26:01 -0500 Subject: [PATCH 24/26] With love from canada --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4fa0042..fc60e74 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ _Async SQLAlchemy 2 for FastAPI — boilerplate, pagination, and seamless sessio [![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) [![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) +![ ](https://img.shields.io/badge/With%20love%20from%20Canada-ffffff?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiB2aWV3Qm94PSItMjAxNSAtMjAwMCA0MDMwIDQwMzAiPjxwYXRoIGZpbGw9IiNmMDAiIGQ9Im0tOTAgMjAzMCA0NS04NjNhOTUgOTUgMCAwIDAtMTExLTk4bC04NTkgMTUxIDExNi0zMjBhNjUgNjUgMCAwIDAtMjAtNzNsLTk0MS03NjIgMjEyLTk5YTY1IDY1IDAgMCAwIDM0LTc5bC0xODYtNTcyIDU0MiAxMTVhNjUgNjUgMCAwIDAgNzMtMzhsMTA1LTI0NyA0MjMgNDU0YTY1IDY1IDAgMCAwIDExMS01N2wtMjA0LTEwNTIgMzI3IDE4OWE2NSA2NSAwIDAgMCA5MS0yN2wzMzItNjUyIDMzMiA2NTJhNjUgNjUgMCAwIDAgOTEgMjdsMzI3LTE4OS0yMDQgMTA1MmE2NSA2NSAwIDAgMCAxMTEgNTdsNDIzLTQ1NCAxMDUgMjQ3YTY1IDY1IDAgMCAwIDczIDM4bDU0Mi0xMTUtMTg2IDU3MmE2NSA2NSAwIDAgMCAzNCA3OWwyMTIgOTktOTQxIDc2MmE2NSA2NSAwIDAgMC0yMCA3M2wxMTYgMzIwLTg1OS0xNTFhOTUgOTUgMCAwIDAtMTExIDk4bDQ1IDg2M3oiLz48L3N2Zz4K) **Documentation**: [https://hadrien.github.io/FastSQLA/](https://hadrien.github.io/FastSQLA/) @@ -21,6 +22,7 @@ providing boilerplate and intuitive helpers. Additionally, it offers built-in customizable pagination and automatically manages the `SQLAlchemy` session lifecycle following [`SQLAlchemy`'s best practices](https://docs.sqlalchemy.org/en/20/orm/session_basics.html#when-do-i-construct-a-session-when-do-i-commit-it-and-when-do-i-close-it). + ## Features * Easy setup at app startup using @@ -270,8 +272,6 @@ You can also check the generated openapi doc by opening your browser to ![OpenAPI generated documentation of the example API](images/example-openapi-generated-doc.png) - - ## License -This project is licensed under the terms of the [MIT license](https://github.com/hadrien/FastSQLA/blob/main/LICENSE). \ No newline at end of file +This project is licensed under the terms of the [MIT license](https://github.com/hadrien/FastSQLA/blob/main/LICENSE). From c780b50d7162c3d826d7c95894b5747f99211a6b Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Fri, 7 Feb 2025 15:48:21 -0500 Subject: [PATCH 25/26] document ORM --- README.md | 2 +- docs/orm.md | 9 +++++++++ mkdocs.yml | 1 + src/fastsqla.py | 22 ++++++++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 docs/orm.md diff --git a/README.md b/README.md index fc60e74..26d29d7 100644 --- a/README.md +++ b/README.md @@ -138,12 +138,12 @@ Let's write some tiny app in `example.py`: from http import HTTPStatus from fastapi import FastAPI, HTTPException +from fastsqla import Base, Item, Page, Paginate, Session, lifespan from pydantic import BaseModel, ConfigDict from sqlalchemy import select from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import Mapped, mapped_column -from fastsqla import Base, Item, Page, Paginate, Session, lifespan app = FastAPI(lifespan=lifespan) diff --git a/docs/orm.md b/docs/orm.md new file mode 100644 index 0000000..f4c9e4f --- /dev/null +++ b/docs/orm.md @@ -0,0 +1,9 @@ +# Object-relational mapping + +## `fastsqla.Base` + +::: fastsqla.Base + options: + heading_level: false + show_source: false + show_bases: false diff --git a/mkdocs.yml b/mkdocs.yml index 1cb7497..ce8f493 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,6 +9,7 @@ nav: - Welcome to FastSQLA: index.md - Usage: - Setup: setup.md + - Object-relational mapping: orm.md - SQLAlchemy Session: session.md - Pagination: pagination.md - Changelog: changelog.md diff --git a/src/fastsqla.py b/src/fastsqla.py index e4b335e..636afd4 100644 --- a/src/fastsqla.py +++ b/src/fastsqla.py @@ -36,6 +36,28 @@ class Base(DeclarativeBase, DeferredReflection): + """Inherit from `Base` to declare an `SQLAlchemy` model. + + Example: + ```py + from fastsqla import Base + from sqlalchemy.orm import Mapped, mapped_column + + + class Hero(Base): + __tablename__ = "hero" + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(unique=True) + secret_identity: Mapped[str] + age: Mapped[int] + ``` + + To learn more on `SQLAlchemy` ORM & Declarative mapping: + + * [ORM Quick Start](https://docs.sqlalchemy.org/en/20/orm/quickstart.html) + * [Declarative Mapping](https://docs.sqlalchemy.org/en/20/orm/mapping_styles.html#declarative-mapping) + """ + __abstract__ = True From b0c0516cb68758df1b0bea083bd68e2bdf62719c Mon Sep 17 00:00:00 2001 From: Hadrien David Date: Fri, 7 Feb 2025 15:51:57 -0500 Subject: [PATCH 26/26] alt text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26d29d7..b2e920a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ _Async SQLAlchemy 2 for FastAPI — boilerplate, pagination, and seamless sessio [![Codecov](https://img.shields.io/codecov/c/github/hadrien/fastsqla?token=XK3YT60MWK&logo=codecov)](https://codecov.io/gh/hadrien/FastSQLA) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-brightgreen.svg)](https://conventionalcommits.org) [![GitHub License](https://img.shields.io/github/license/hadrien/fastsqla)](https://github.com/hadrien/FastSQLA/blob/main/LICENSE) -![ ](https://img.shields.io/badge/With%20love%20from%20Canada-ffffff?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiB2aWV3Qm94PSItMjAxNSAtMjAwMCA0MDMwIDQwMzAiPjxwYXRoIGZpbGw9IiNmMDAiIGQ9Im0tOTAgMjAzMCA0NS04NjNhOTUgOTUgMCAwIDAtMTExLTk4bC04NTkgMTUxIDExNi0zMjBhNjUgNjUgMCAwIDAtMjAtNzNsLTk0MS03NjIgMjEyLTk5YTY1IDY1IDAgMCAwIDM0LTc5bC0xODYtNTcyIDU0MiAxMTVhNjUgNjUgMCAwIDAgNzMtMzhsMTA1LTI0NyA0MjMgNDU0YTY1IDY1IDAgMCAwIDExMS01N2wtMjA0LTEwNTIgMzI3IDE4OWE2NSA2NSAwIDAgMCA5MS0yN2wzMzItNjUyIDMzMiA2NTJhNjUgNjUgMCAwIDAgOTEgMjdsMzI3LTE4OS0yMDQgMTA1MmE2NSA2NSAwIDAgMCAxMTEgNTdsNDIzLTQ1NCAxMDUgMjQ3YTY1IDY1IDAgMCAwIDczIDM4bDU0Mi0xMTUtMTg2IDU3MmE2NSA2NSAwIDAgMCAzNCA3OWwyMTIgOTktOTQxIDc2MmE2NSA2NSAwIDAgMC0yMCA3M2wxMTYgMzIwLTg1OS0xNTFhOTUgOTUgMCAwIDAtMTExIDk4bDQ1IDg2M3oiLz48L3N2Zz4K) +![🍁 With love from Canada](https://img.shields.io/badge/With%20love%20from%20Canada-ffffff?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiB2aWV3Qm94PSItMjAxNSAtMjAwMCA0MDMwIDQwMzAiPjxwYXRoIGZpbGw9IiNmMDAiIGQ9Im0tOTAgMjAzMCA0NS04NjNhOTUgOTUgMCAwIDAtMTExLTk4bC04NTkgMTUxIDExNi0zMjBhNjUgNjUgMCAwIDAtMjAtNzNsLTk0MS03NjIgMjEyLTk5YTY1IDY1IDAgMCAwIDM0LTc5bC0xODYtNTcyIDU0MiAxMTVhNjUgNjUgMCAwIDAgNzMtMzhsMTA1LTI0NyA0MjMgNDU0YTY1IDY1IDAgMCAwIDExMS01N2wtMjA0LTEwNTIgMzI3IDE4OWE2NSA2NSAwIDAgMCA5MS0yN2wzMzItNjUyIDMzMiA2NTJhNjUgNjUgMCAwIDAgOTEgMjdsMzI3LTE4OS0yMDQgMTA1MmE2NSA2NSAwIDAgMCAxMTEgNTdsNDIzLTQ1NCAxMDUgMjQ3YTY1IDY1IDAgMCAwIDczIDM4bDU0Mi0xMTUtMTg2IDU3MmE2NSA2NSAwIDAgMCAzNCA3OWwyMTIgOTktOTQxIDc2MmE2NSA2NSAwIDAgMC0yMCA3M2wxMTYgMzIwLTg1OS0xNTFhOTUgOTUgMCAwIDAtMTExIDk4bDQ1IDg2M3oiLz48L3N2Zz4K) **Documentation**: [https://hadrien.github.io/FastSQLA/](https://hadrien.github.io/FastSQLA/)