From 7558fa756e8688bdf6e1df57e73a0ea507322d5d Mon Sep 17 00:00:00 2001 From: Ivan Koldakov Date: Wed, 1 May 2024 20:40:34 +0200 Subject: [PATCH] Apply best practices That's a big commit, but it's needed. --- .dockerignore | 0 .github/workflows/python-app.yml | 7 +- .pre-commit-config.yaml | 5 +- CHANGELOG.md | 32 + Dockerfile | 46 - Makefile | 39 +- README.md | 6 +- alembic.ini | 2 +- app/core/__init__.py | 6 - app/graph_ql/routers.py | 7 - app/graph_ql/schemas.py | 286 --- app/graph_ql/tests/test_schemas.py | 16 - app/main.py | 83 - app/middlewares/secure.py | 56 - app/repositories/base.py | 198 -- app/repositories/models.py | 410 ---- app/repositories/sessions.py | 39 - app/repositories/tests/test_models.py | 12 - app/routers/root.py | 63 - app/routers/users.py | 94 - app/services/auth.py | 4 - app/services/base.py | 13 - app/services/callbacks.py | 248 -- app/services/characters.py | 109 - app/services/emails.py | 49 - app/services/episodes.py | 70 - app/services/notifications.py | 60 - app/services/root.py | 34 - app/services/seasons.py | 45 - app/services/security.py | 162 -- app/services/tokens.py | 75 - app/services/users.py | 227 -- app/templates.py | 30 - babel.cfg | 8 - configs/plugins/__init__.py | 0 configs/plugins/env_vars.py | 16 - docker-entrypoint.sh | 7 +- futuramaapi/__init__.py | 7 + futuramaapi/__main__.py | 11 + futuramaapi/apps/__init__.py | 11 + futuramaapi/apps/app.py | 86 + futuramaapi/apps/hypercorn.py | 28 + futuramaapi/core/__init__.py | 7 + .../core/configs.py | 69 +- .../helpers}/__init__.py | 0 .../helpers}/hashers.py | 100 +- futuramaapi/helpers/pydantic.py | 48 + futuramaapi/helpers/templates.py | 27 + .../middlewares}/__init__.py | 0 futuramaapi/middlewares/cors.py | 10 + futuramaapi/middlewares/secure.py | 64 + .../tests => futuramaapi/mixins}/__init__.py | 0 futuramaapi/mixins/pydantic.py | 231 ++ .../repositories}/__init__.py | 0 futuramaapi/repositories/base.py | 264 +++ .../repositories/migrations}/README | 0 .../repositories/migrations}/__init__.py | 0 .../repositories/migrations}/env.py | 8 +- .../repositories/migrations}/script.py.mako | 0 .../1353be8a56b8_initial_project_structure.py | 4 +- ...e33d1ba_add_broadcast_number_to_episode.py | 2 +- .../versions/928d4358646c_add_image_field.py | 5 +- .../migrations/versions}/__init__.py | 0 ...060df1b8_add_production_code_to_episode.py | 2 +- .../versions/d413d1284339_initial_revision.py | 1 + .../ee5656c8dc7f_define_user_model.py | 2 +- futuramaapi/repositories/models.py | 228 ++ futuramaapi/repositories/session.py | 69 + futuramaapi/routers/__init__.py | 27 + futuramaapi/routers/callbacks/__init__.py | 5 + .../routers/callbacks/api.py | 38 +- futuramaapi/routers/callbacks/schemas.py | 118 + futuramaapi/routers/characters/__init__.py | 5 + .../routers/characters/api.py | 103 +- futuramaapi/routers/characters/schemas.py | 31 + futuramaapi/routers/episodes/__init__.py | 5 + .../routers/episodes/api.py | 29 +- futuramaapi/routers/episodes/schemas.py | 41 + futuramaapi/routers/exceptions.py | 17 + futuramaapi/routers/graphql/__init__.py | 5 + futuramaapi/routers/graphql/api.py | 14 + futuramaapi/routers/graphql/context.py | 19 + futuramaapi/routers/graphql/conversion.py | 136 ++ futuramaapi/routers/graphql/dependencies.py | 9 + futuramaapi/routers/graphql/mixins.py | 55 + futuramaapi/routers/graphql/schemas.py | 218 ++ futuramaapi/routers/graphql/validators.py | 26 + futuramaapi/routers/notifications/__init__.py | 5 + .../routers/notifications/api.py | 19 +- futuramaapi/routers/notifications/schemas.py | 57 + futuramaapi/routers/root/__init__.py | 5 + futuramaapi/routers/root/api.py | 82 + futuramaapi/routers/root/schemas.py | 40 + futuramaapi/routers/seasons/__init__.py | 5 + .../routers/seasons/api.py | 29 +- futuramaapi/routers/seasons/schemas.py | 15 + futuramaapi/routers/tokens/__init__.py | 5 + .../routers/tokens/api.py | 41 +- futuramaapi/routers/tokens/dependencies.py | 42 + futuramaapi/routers/tokens/schemas.py | 84 + futuramaapi/routers/users/__init__.py | 5 + futuramaapi/routers/users/api.py | 137 ++ futuramaapi/routers/users/dependencies.py | 47 + futuramaapi/routers/users/schemas.py | 188 ++ install-dependencies.sh | 8 - locale/en_US/LC_MESSAGES/messages.po | 229 -- poetry.lock | 2004 +++++++++++++++++ pyproject.toml | 53 +- requirements.txt | 72 - static/intro-image.jpg | Bin 0 -> 701095 bytes templates/about.html | 39 +- templates/base.html | 33 +- templates/index.html | 64 +- tests/conftest.py | 22 + {app/routers => tests/unit}/__init__.py | 0 .../unit/helpers}/__init__.py | 0 tests/unit/helpers/test_hashers.py | 9 + .../unit/repositories}/__init__.py | 0 118 files changed, 5038 insertions(+), 3050 deletions(-) delete mode 100644 .dockerignore create mode 100644 CHANGELOG.md delete mode 100644 Dockerfile delete mode 100644 app/core/__init__.py delete mode 100644 app/graph_ql/routers.py delete mode 100644 app/graph_ql/schemas.py delete mode 100644 app/graph_ql/tests/test_schemas.py delete mode 100644 app/main.py delete mode 100644 app/middlewares/secure.py delete mode 100644 app/repositories/base.py delete mode 100644 app/repositories/models.py delete mode 100644 app/repositories/sessions.py delete mode 100644 app/repositories/tests/test_models.py delete mode 100644 app/routers/root.py delete mode 100644 app/routers/users.py delete mode 100644 app/services/auth.py delete mode 100644 app/services/base.py delete mode 100644 app/services/callbacks.py delete mode 100644 app/services/characters.py delete mode 100644 app/services/emails.py delete mode 100644 app/services/episodes.py delete mode 100644 app/services/notifications.py delete mode 100644 app/services/root.py delete mode 100644 app/services/seasons.py delete mode 100644 app/services/security.py delete mode 100644 app/services/tokens.py delete mode 100644 app/services/users.py delete mode 100644 app/templates.py delete mode 100644 babel.cfg delete mode 100644 configs/plugins/__init__.py delete mode 100644 configs/plugins/env_vars.py create mode 100644 futuramaapi/__init__.py create mode 100644 futuramaapi/__main__.py create mode 100644 futuramaapi/apps/__init__.py create mode 100644 futuramaapi/apps/app.py create mode 100644 futuramaapi/apps/hypercorn.py create mode 100644 futuramaapi/core/__init__.py rename app/core/settings.py => futuramaapi/core/configs.py (53%) rename {alembic/versions => futuramaapi/helpers}/__init__.py (100%) rename {app/services => futuramaapi/helpers}/hashers.py (58%) create mode 100644 futuramaapi/helpers/pydantic.py create mode 100644 futuramaapi/helpers/templates.py rename {app/graph_ql => futuramaapi/middlewares}/__init__.py (100%) create mode 100644 futuramaapi/middlewares/cors.py create mode 100644 futuramaapi/middlewares/secure.py rename {app/graph_ql/tests => futuramaapi/mixins}/__init__.py (100%) create mode 100644 futuramaapi/mixins/pydantic.py rename {app/middlewares => futuramaapi/repositories}/__init__.py (100%) create mode 100644 futuramaapi/repositories/base.py rename {alembic => futuramaapi/repositories/migrations}/README (100%) rename {app/repositories => futuramaapi/repositories/migrations}/__init__.py (100%) rename {alembic => futuramaapi/repositories/migrations}/env.py (93%) rename {alembic => futuramaapi/repositories/migrations}/script.py.mako (100%) rename {alembic => futuramaapi/repositories/migrations}/versions/1353be8a56b8_initial_project_structure.py (100%) rename {alembic => futuramaapi/repositories/migrations}/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py (100%) rename {alembic => futuramaapi/repositories/migrations}/versions/928d4358646c_add_image_field.py (95%) rename {app/repositories/tests => futuramaapi/repositories/migrations/versions}/__init__.py (100%) rename {alembic => futuramaapi/repositories/migrations}/versions/c03e060df1b8_add_production_code_to_episode.py (100%) rename {alembic => futuramaapi/repositories/migrations}/versions/d413d1284339_initial_revision.py (99%) rename {alembic => futuramaapi/repositories/migrations}/versions/ee5656c8dc7f_define_user_model.py (100%) create mode 100644 futuramaapi/repositories/models.py create mode 100644 futuramaapi/repositories/session.py create mode 100644 futuramaapi/routers/__init__.py create mode 100644 futuramaapi/routers/callbacks/__init__.py rename app/routers/callbacks.py => futuramaapi/routers/callbacks/api.py (77%) create mode 100644 futuramaapi/routers/callbacks/schemas.py create mode 100644 futuramaapi/routers/characters/__init__.py rename app/routers/characters.py => futuramaapi/routers/characters/api.py (52%) create mode 100644 futuramaapi/routers/characters/schemas.py create mode 100644 futuramaapi/routers/episodes/__init__.py rename app/routers/episodes.py => futuramaapi/routers/episodes/api.py (69%) create mode 100644 futuramaapi/routers/episodes/schemas.py create mode 100644 futuramaapi/routers/exceptions.py create mode 100644 futuramaapi/routers/graphql/__init__.py create mode 100644 futuramaapi/routers/graphql/api.py create mode 100644 futuramaapi/routers/graphql/context.py create mode 100644 futuramaapi/routers/graphql/conversion.py create mode 100644 futuramaapi/routers/graphql/dependencies.py create mode 100644 futuramaapi/routers/graphql/mixins.py create mode 100644 futuramaapi/routers/graphql/schemas.py create mode 100644 futuramaapi/routers/graphql/validators.py create mode 100644 futuramaapi/routers/notifications/__init__.py rename app/routers/notifications.py => futuramaapi/routers/notifications/api.py (58%) create mode 100644 futuramaapi/routers/notifications/schemas.py create mode 100644 futuramaapi/routers/root/__init__.py create mode 100644 futuramaapi/routers/root/api.py create mode 100644 futuramaapi/routers/root/schemas.py create mode 100644 futuramaapi/routers/seasons/__init__.py rename app/routers/seasons.py => futuramaapi/routers/seasons/api.py (68%) create mode 100644 futuramaapi/routers/seasons/schemas.py create mode 100644 futuramaapi/routers/tokens/__init__.py rename app/routers/tokens.py => futuramaapi/routers/tokens/api.py (55%) create mode 100644 futuramaapi/routers/tokens/dependencies.py create mode 100644 futuramaapi/routers/tokens/schemas.py create mode 100644 futuramaapi/routers/users/__init__.py create mode 100644 futuramaapi/routers/users/api.py create mode 100644 futuramaapi/routers/users/dependencies.py create mode 100644 futuramaapi/routers/users/schemas.py delete mode 100644 install-dependencies.sh delete mode 100644 locale/en_US/LC_MESSAGES/messages.po create mode 100644 poetry.lock delete mode 100644 requirements.txt create mode 100644 static/intro-image.jpg create mode 100644 tests/conftest.py rename {app/routers => tests/unit}/__init__.py (100%) rename {app/services => tests/unit/helpers}/__init__.py (100%) create mode 100644 tests/unit/helpers/test_hashers.py rename {configs => tests/unit/repositories}/__init__.py (100%) diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index e69de29..0000000 diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index bda7236..8693ef0 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -23,11 +23,10 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install ruff pytest - python -m pip install -r requirements.txt + make install-dev - name: Code style run: | - pre-commit run --all-files + poetry run pre-commit run --all-files - name: Pytest run: | - make tests + make test diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index feca58c..05bce2d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,13 +5,14 @@ repos: rev: v4.5.0 hooks: - id: check-added-large-files + args: ["--maxkb=700"] - id: check-yaml - id: check-toml - id: check-json - id: check-symlinks - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.7 + rev: v0.4.2 hooks: - id: ruff - id: ruff-format @@ -27,7 +28,7 @@ repos: - manual - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.1 + rev: v1.10.0 hooks: - id: mypy pass_filenames: false diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..cccb881 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,32 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.0.0] - 2024-06-01 + +### Added + +- API: Character selection by id +- API: Paginated characters selection by gender, status, species, order by, order by direction +- API: Character search by name +- API: Episode selection by id +- API: Paginated episodes selection +- API: Season selection by id +- API: Paginated seasons selection +- API: Callbacks for characters, episodes, seasons +- API: Server Sent Events (SSE) for characters +- API: User registration +- API: User authorization +- API: User activation +- API: User confirmation resend message +- API: User information update +- GraphQL: Character selection by id +- GraphQL: Paginated (Edged) characters selection by gender, status, species, order by, order by direction +- GraphQL: Episode selection by id +- GraphQL: Paginated (Edged) episodes selection +- GraphQL: Season selection by id +- GraphQL: Paginated (Edged) seasons selection + +[1.0.0]: https://github.com/koldakov/futuramaapi/releases/tag/1.0.0 diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index ad4c9c4..0000000 --- a/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM python:3.12.0-slim-bullseye - -# Environ -ENV PYTHONUNBUFFERED=1 -ENV PYTHONDONTWRITEBYTECODE=1 -ENV VIRTUAL_ENV=/opt/venv -ENV PATH="$VIRTUAL_ENV/bin:$PATH" - -# Arguments -ARG APP_USER=qworpa -ARG WORK_DIR=/app - -# Install OS dependencies -COPY install-dependencies.sh /tmp -RUN . /tmp/install-dependencies.sh - -# Install python environ -RUN python3 -m venv $VIRTUAL_ENV -COPY requirements.txt /tmp -RUN pip install --upgrade pip -RUN pip install --no-cache-dir -r /tmp/requirements.txt - -# Add user -RUN groupadd \ - --system ${APP_USER} \ - && useradd --no-log-init --system --gid ${APP_USER} ${APP_USER} - -# Copy project files to the work dir -COPY ./ ${WORK_DIR} - -# Set owner to the project -RUN chown -R ${APP_USER}:${APP_USER} ${WORK_DIR} - -# Set work dir -WORKDIR ${WORK_DIR} - -EXPOSE 8000 - -# Set project user -USER ${APP_USER}:${APP_USER} - -# Compile messages -RUN cd ${WORK_DIR}; make messages-compile - -# Main launch command -CMD ["./docker-entrypoint.sh"] diff --git a/Makefile b/Makefile index c35b0e3..eebbf64 100644 --- a/Makefile +++ b/Makefile @@ -1,28 +1,27 @@ SHELL = /bin/bash +PYTHON = python3.12 help: # Display this message @sed -ne '/@sed/!s/# //p' $(MAKEFILE_LIST) -messages-init: # locale=LANG, init LANG language - @test $${locale?Please specify locale. Example \"locale=en_CA\"} - @pybabel init -l $(locale) -i locale/messages.pot -d locale +install-dev: # Install DEV/TEST Environ and dependencies + @echo "Upgrading pip" + @$(PYTHON) -m pip install --upgrade pip + @echo "Installing poetry" + @$(PYTHON) -m pip install poetry + @echo "Installing dependencies" + @$(PYTHON) -m poetry install -messages-extract: # Extract messages to locale/messages.pot - @pybabel extract \ - --version=0.0.1 \ - --msgid-bugs-address=coldie322@gmail.com \ - --project=FuturamaAPI \ - --copyright-holder=FuturamaAPI \ - --mapping babel.cfg \ - --output-file=locale/messages.pot \ - . +install: # Install Environ and dependencies + @echo "Upgrading pip" + @$(PYTHON) -m pip install --upgrade pip + @echo "Installing poetry" + @$(PYTHON) -m pip install poetry + @echo "Installing dependencies" + @$(PYTHON) -m poetry install --without dev --without test -messages: # Update all locales - @$(MAKE) messages-extract - @pybabel update --input-file=locale/messages.pot --output-dir=locale +test: # Run tests + @poetry run $(PYTHON) -m pytest -messages-compile: # Generate .mo files for all locales - @pybabel compile --directory=locale - -tests: # Run tests - @python -m pytest +migrate: # Migrate + @poetry run $(PYTHON) -m alembic upgrade head diff --git a/README.md b/README.md index 18a54e3..216e860 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,8 @@ If you create models in a new file please import it in env.py. Because alembic does not detect child classes. ```commandline -alembic revision --autogenerate -m "Revision Name" -alembic upgrade head +poetry run alembic revision --autogenerate -m "Revision Name" +poetry run alembic upgrade head ```

(back to top)

@@ -72,7 +72,7 @@ export $(cat .env | xargs) # Compile tranlations make messages-compile # Run hypercorn server -hypercorn --reload app.main:app +hypercorn --reload futuramaapi.main:app ```

(back to top)

diff --git a/alembic.ini b/alembic.ini index e4ed6f6..5278187 100644 --- a/alembic.ini +++ b/alembic.ini @@ -2,7 +2,7 @@ [alembic] # path to migration scripts -script_location = alembic +script_location = futuramaapi/repositories/migrations # template used to generate migration file names; The default value is %%(rev)s_%%(slug)s # Uncomment the line below if you want the files to be prepended with date and time diff --git a/app/core/__init__.py b/app/core/__init__.py deleted file mode 100644 index 54be719..0000000 --- a/app/core/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from app.core.settings import feature_flags, settings - -__all__ = [ - "feature_flags", - "settings", -] diff --git a/app/graph_ql/routers.py b/app/graph_ql/routers.py deleted file mode 100644 index b2c4539..0000000 --- a/app/graph_ql/routers.py +++ /dev/null @@ -1,7 +0,0 @@ -import strawberry -from strawberry.fastapi import GraphQLRouter - -from app.graph_ql.schemas import Query - -schema = strawberry.Schema(Query) -router = GraphQLRouter(schema, path="/graphql") diff --git a/app/graph_ql/schemas.py b/app/graph_ql/schemas.py deleted file mode 100644 index 3c6ca3f..0000000 --- a/app/graph_ql/schemas.py +++ /dev/null @@ -1,286 +0,0 @@ -from typing import Any - -import strawberry - -from app.repositories.models import ( - Character as CharacterModel, -) -from app.repositories.models import ( - CharacterDoesNotExist, - CharacterGender, - CharacterGenderFilter, - CharacterSpecies, - CharacterSpeciesFilter, - CharacterStatus, - CharacterStatusFilter, - EpisodeDoesNotExist, - SeasonDoesNotExist, -) -from app.repositories.models import ( - Episode as EpisodeModel, -) -from app.repositories.models import ( - Season as SeasonModel, -) -from app.repositories.sessions import get_async_session_ctx -from app.services.base import EpisodeBase as EpisodeBaseSchema -from app.services.characters import Character as CharacterSchema -from app.services.episodes import ( - Episode as EpisodeSchema, -) -from app.services.episodes import ( - SeasonEpisode as SeasonEpisodeSchema, -) -from app.services.seasons import ( - EpisodeSeason as EpisodeSeasonSchema, -) -from app.services.seasons import ( - Season as SeasonSchema, -) - - -class BaseQueryException(Exception): - ... - - -class CharacterQueryException(BaseQueryException): - ... - - -class LimitViolation(CharacterQueryException): - ... - - -class OffsetViolation(CharacterQueryException): - ... - - -@strawberry.experimental.pydantic.type(model=CharacterSchema) -class Character: - id: strawberry.auto # noqa: A003 - name: strawberry.auto - gender: strawberry.enum(CharacterGender) # type: ignore - status: strawberry.enum(CharacterStatus) # type: ignore - species: strawberry.enum(CharacterSpecies) # type: ignore - created_at: strawberry.auto - image: strawberry.auto - - -@strawberry.type -class PageBase: - limit: int - offset: int - total: int - edges: list[Any] - - @staticmethod - def get_schema_class(): - raise NotImplementedError() - - @staticmethod - def get_edge_class(): - raise NotImplementedError() - - @classmethod - def from_params(cls, edges, limit: int, offset: int, total: int, /): - schema_class = cls.get_schema_class() - edge_class = cls.get_edge_class() - return cls( - limit=limit, # type: ignore - offset=offset, # type: ignore - total=total, # type: ignore - edges=[edge_class.from_pydantic(schema_class.model_validate(edge)) for edge in edges], # type: ignore - ) - - -@strawberry.type -class Characters(PageBase): - edges: list[Character] - - @staticmethod - def get_schema_class(): - return CharacterSchema - - @staticmethod - def get_edge_class(): - return Character - - -@strawberry.experimental.pydantic.type(model=SeasonEpisodeSchema, all_fields=True) -class SeasonEpisode: - ... - - -@strawberry.experimental.pydantic.type(model=EpisodeBaseSchema, all_fields=True) -class EpisodeBase: - ... - - -@strawberry.experimental.pydantic.type(model=EpisodeSchema) -class Episode(EpisodeBase): - air_date: strawberry.auto - duration: strawberry.auto - created_at: strawberry.auto - season: SeasonEpisode - broadcast_code: str - - -@strawberry.experimental.pydantic.type(model=EpisodeSeasonSchema) -class EpisodeSeason(EpisodeBase): - id: strawberry.auto # noqa: A003 - name: strawberry.auto - broadcast_number: strawberry.auto - production_code: strawberry.auto - - -@strawberry.type -class Episodes(PageBase): - edges: list[Episode] - - @staticmethod - def get_schema_class(): - return EpisodeSchema - - @staticmethod - def get_edge_class(): - return Episode - - -@strawberry.experimental.pydantic.type(model=SeasonSchema) -class Season: - id: strawberry.auto # noqa: A003 - episodes: list[EpisodeSeason] - - -def validate_limit(limit: int, min_: int, max_: int, /) -> None: - if not min_ <= limit <= max_: - raise LimitViolation(f"Limit can be more than {min_} and less than {max_}") from None - - -@strawberry.type -class Seasons(PageBase): - edges: list[Season] - - @staticmethod - def get_schema_class(): - return SeasonSchema - - @staticmethod - def get_edge_class(): - return Season - - -@strawberry.type -class Query: - @strawberry.field() - async def character(self, character_id: int) -> Character | None: - async with get_async_session_ctx() as session: - try: - character: CharacterModel = await CharacterModel.get( - session, - character_id, - ) - except CharacterDoesNotExist: - return None - return Character.from_pydantic(CharacterSchema.model_validate(character)) # type: ignore - - @strawberry.field() - async def characters( # noqa: PLR0913 - self, - *, - limit: int | None = 50, - offset: int | None = 0, - gender: strawberry.enum(CharacterGenderFilter) | None = None, # type: ignore - status: strawberry.enum(CharacterStatusFilter) | None = None, # type: ignore - species: strawberry.enum(CharacterSpeciesFilter) | None = None, # type: ignore - ) -> Characters: - if limit is None: - limit = 50 - if offset is None: - offset = 0 - # For some reason self does not work under strawberry decorator, - # so class attrs can't be used. Please find another way. - _min_l: int = 1 - _max_l: int = 50 - _min_offset: int = 0 - validate_limit(limit, _min_l, _max_l) - - async with get_async_session_ctx() as session: - total: int = await CharacterModel.count(session) - validate_limit(offset, _min_offset, total) - characters = await CharacterModel.filter( - session, - limit=limit, - offset=offset, - gender=gender, - character_status=status, - species=species, - ) - return Characters.from_params(characters, limit, offset, total) - - @strawberry.field() - async def episode(self, episode_id: int) -> Episode | None: - async with get_async_session_ctx() as session: - try: - episode: EpisodeModel = await EpisodeModel.get( - session, - episode_id, - ) - except EpisodeDoesNotExist: - return None - return Episode.from_pydantic(EpisodeSchema.model_validate(episode)) # type: ignore - - @strawberry.field() - async def episodes( - self, - *, - limit: int | None = 50, - offset: int | None = 0, - ) -> Episodes: - if limit is None: - limit = 50 - if offset is None: - offset = 0 - validate_limit(limit, 1, 50) - async with get_async_session_ctx() as session: - total: int = await CharacterModel.count(session) - validate_limit(offset, 0, total) - episodes = await EpisodeModel.filter( - session, - limit=limit, - select_in_load=EpisodeModel.season, - offset=offset, - ) - return Episodes.from_params(episodes, limit, offset, total) - - @strawberry.field() - async def season(self, season_id: int) -> Season | None: - async with get_async_session_ctx() as session: - try: - season: SeasonModel = await SeasonModel.get(session, season_id) - except SeasonDoesNotExist: - return None - return Season.from_pydantic(SeasonSchema.model_validate(season)) # type: ignore - - @strawberry.field() - async def seasons( - self, - *, - limit: int | None = 50, - offset: int | None = 0, - ) -> Seasons: - if limit is None: - limit = 50 - if offset is None: - offset = 0 - validate_limit(limit, 1, 50) - async with get_async_session_ctx() as session: - total: int = await SeasonModel.count(session) - validate_limit(offset, 0, total) - seasons = await SeasonModel.filter( - session, - limit=limit, - select_in_load=SeasonModel.episodes, - offset=offset, - ) - return Seasons.from_params(seasons, limit, offset, total) diff --git a/app/graph_ql/tests/test_schemas.py b/app/graph_ql/tests/test_schemas.py deleted file mode 100644 index e8457ff..0000000 --- a/app/graph_ql/tests/test_schemas.py +++ /dev/null @@ -1,16 +0,0 @@ -import pytest - -from app.graph_ql.schemas import LimitViolation, validate_limit - - -class TestLimitValidation: - def test_validate_limit_should_raise_limit_violation_when_limit_less_then_min_allowed_value(self): - with pytest.raises(LimitViolation): - validate_limit(0, 1, 3) - - def test_validate_limit_should_raise_limit_violation_when_limit_more_then_max_allowed_value(self): - with pytest.raises(LimitViolation): - validate_limit(4, 1, 3) - - def test_validate_limit_should_return_none_when_limit_more_then_min_value_and_less_then_max_value(self): - assert validate_limit(2, 1, 3) is None diff --git a/app/main.py b/app/main.py deleted file mode 100644 index 2974cd3..0000000 --- a/app/main.py +++ /dev/null @@ -1,83 +0,0 @@ -import mimetypes - -from fastapi import FastAPI -from fastapi.middleware.cors import CORSMiddleware -from fastapi.staticfiles import StaticFiles -from fastapi_pagination import add_pagination - -from app.core import feature_flags, settings -from app.graph_ql.routers import router as graphql_router -from app.middlewares.secure import HTTPSRedirectMiddleware -from app.routers.callbacks import router as callbacks_router -from app.routers.characters import router as characters_router -from app.routers.episodes import router as episodes_router -from app.routers.notifications import router as notifications_router -from app.routers.root import router as root_router -from app.routers.seasons import router as seasons_router -from app.routers.tokens import router as tokens_router -from app.routers.users import router as users_router - -mimetypes.add_type("image/webp", ".webp") - -app = FastAPI( - docs_url=None, - redoc_url=None, -) - -if feature_flags.enable_https_redirect: - app.add_middleware(HTTPSRedirectMiddleware) - -app.add_middleware( - CORSMiddleware, - allow_origins=settings.allow_origins, - allow_methods=["*"], - allow_headers=["*"], -) - -app.include_router(root_router) - -# API -app.include_router( - characters_router, - tags=["characters"], - prefix="/api", -) -app.include_router( - episodes_router, - tags=["episodes"], - prefix="/api", -) -app.include_router( - notifications_router, - tags=["notifications"], - prefix="/api", -) -app.include_router( - seasons_router, - tags=["seasons"], - prefix="/api", -) -app.include_router( - callbacks_router, - tags=["callbacks"], - prefix="/api", -) -app.include_router( - graphql_router, - prefix="/api", - include_in_schema=False, -) -app.include_router( - users_router, - tags=["users"], - prefix="/api", -) -app.include_router( - tokens_router, - tags=["tokens"], - prefix="/api", -) - -app.mount("/static", StaticFiles(directory="static"), name="static") - -add_pagination(app) diff --git a/app/middlewares/secure.py b/app/middlewares/secure.py deleted file mode 100644 index 6abd37a..0000000 --- a/app/middlewares/secure.py +++ /dev/null @@ -1,56 +0,0 @@ -import logging - -from starlette import status -from starlette.datastructures import URL -from starlette.responses import RedirectResponse -from starlette.types import ASGIApp, Receive, Scope, Send - -from app.core import settings - -logger = logging.getLogger(__name__) - - -class HTTPSRedirectMiddleware: - https_port = 443 - http_port = 80 - proto_header = "x-forwarded-proto" - port_header = "x-forwarded-port" - - def __init__(self, app: ASGIApp) -> None: - self.app = app - - def is_secure(self, headers: dict): - try: - host: str = headers["host"] - except KeyError: - logger.info("Host not found in headers") - return False - try: - proto: str = headers[self.proto_header] - except KeyError: - logger.info("x-forwarded-proto not found in headers") - return False - try: - port: str = headers[self.port_header] - except KeyError: - logger.info("x-forwarded-port not found in headers") - return False - - if host == settings.trusted_host and proto in ("https", "wss") and int(port) == self.https_port: - return True - return False - - async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: - headers: dict = {h[0].decode().lower(): h[1].decode() for h in scope["headers"]} - if not self.is_secure(headers): - url = URL(scope=scope) - redirect_scheme = {"http": "https", "ws": "wss"}[url.scheme] - netloc = url.hostname if url.port in (self.http_port, self.https_port) else url.netloc - url = url.replace(scheme=redirect_scheme, netloc=netloc) - response = RedirectResponse( - url, - status_code=status.HTTP_307_TEMPORARY_REDIRECT, - ) - await response(scope, receive, send) - else: - await self.app(scope, receive, send) diff --git a/app/repositories/base.py b/app/repositories/base.py deleted file mode 100644 index ce94779..0000000 --- a/app/repositories/base.py +++ /dev/null @@ -1,198 +0,0 @@ -from collections.abc import Sequence -from enum import Enum -from typing import TYPE_CHECKING, Any, Self -from uuid import UUID, uuid4 - -from asyncpg.exceptions import UniqueViolationError -from sqlalchemy import UUID as COLUMN_UUID -from sqlalchemy import Column, DateTime, Row, select -from sqlalchemy.exc import IntegrityError, NoResultFound -from sqlalchemy.ext.asyncio.session import AsyncSession -from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, selectinload -from sqlalchemy.orm.attributes import InstrumentedAttribute -from sqlalchemy.sql import func -from sqlalchemy.sql.elements import BinaryExpression, UnaryExpression - -if TYPE_CHECKING: - from sqlalchemy.engine.result import Result - - -class OrderByDirection(Enum): - ASC = "asc" - DESC = "desc" - - -class OrderBy(Enum): - ID = "id" - CREATED_AT = "createdAt" - - -class ModelDoesNotExist(Exception): - """Model Does Not Exist.""" - - -class ModelAlreadyExist(Exception): - """Model Already Exists""" - - -class Base(DeclarativeBase): - __abstract__ = True - - order_by = OrderBy - - model_already_exists: type[ModelAlreadyExist] = ModelAlreadyExist - model_does_not_exist: type[ModelDoesNotExist] = ModelDoesNotExist - - id: Mapped[int] = mapped_column(primary_key=True) # noqa: A003 - - created_at = Column( - DateTime( - timezone=True, - ), - server_default=func.now(), - nullable=False, - ) - uuid = Column( - COLUMN_UUID( - as_uuid=True, - ), - primary_key=False, - unique=True, - nullable=False, - default=uuid4, - ) - - @classmethod - async def get( - cls, - session: AsyncSession, - val: int | str | UUID, - /, - *, - field: InstrumentedAttribute | None = None, - ) -> Self: - if field is None: - field = cls.id - statement = select(cls).where(field == val) - cursor: Result = await session.execute(statement) - try: - return cursor.scalars().one() - except NoResultFound: - raise cls.model_does_not_exist() from None - - @staticmethod - def filter_obj_to_cond( - obj, - orig, - model_field: Column[str | Enum], - /, - ) -> BinaryExpression: - if obj.name.startswith("NOT_"): - return model_field != orig[obj.name.split("NOT_", 1)[1]] - return model_field == orig[obj.name] - - @classmethod - def get_filter_statement( # noqa: PLR0913 - cls, - *, - limit: int | None = None, - order_by=OrderBy.ID, - order_by_direction=OrderByDirection.ASC, - select_in_load: InstrumentedAttribute | None = None, - offset: int | None = None, - **kwargs, - ): - statement = select(cls) - statement = statement.order_by( - cls.get_order_by( - field=order_by, - direction=order_by_direction, - ) - ) - cond_list: list = cls.get_cond_list(**kwargs) - if cond_list: - statement = statement.where(*cond_list) - if select_in_load is not None: - statement = statement.options(selectinload(select_in_load)) - if offset: - statement = statement.offset(offset) - if limit is not None: - statement = statement.limit(limit) - return statement - - @classmethod - def get_cond_list(cls, **kwargs) -> list[BinaryExpression]: - return [] - - @classmethod - async def filter( # noqa: A003, PLR0913 - cls, - session: AsyncSession, - /, - *, - limit: int | None = None, - order_by=None, - order_by_direction=OrderByDirection.ASC, - select_in_load: InstrumentedAttribute | None = None, - **kwargs, - ) -> Sequence[Row[tuple[Any, ...] | Any]]: - if order_by is None: - order_by = cls.order_by.ID - statement = cls.get_filter_statement( - limit=limit, - order_by=order_by, - order_by_direction=order_by_direction, - select_in_load=select_in_load, - **kwargs, - ) - cursor: Result = await session.execute(statement) - return cursor.scalars().all() - - @classmethod - def get_order_by( - cls, - *, - field=OrderBy.ID, - direction=OrderByDirection.ASC, - ) -> UnaryExpression: - _field: InstrumentedAttribute - if field is None: - _field = cls.id - else: - _field = cls.__table__.c[field.name.lower()] - if direction == OrderByDirection.DESC: - return _field.desc() - return _field.asc() - - @classmethod - async def count(cls, session: AsyncSession) -> int: - res = await session.execute(func.count(cls.id)) - return res.scalar() - - @classmethod - async def add( - cls, - session: AsyncSession, - data, - /, - *, - commit: bool = True, - extra_fields: dict[ - str, - Any, - ] - | None = None, - ) -> Self: - obj: Self = cls(**data.model_dump()) - if extra_fields is not None: - for name, value in extra_fields.items(): - setattr(obj, name, value) - session.add(obj) - if commit is True: - try: - await session.commit() - except IntegrityError as err: - if err.orig.sqlstate == UniqueViolationError.sqlstate: - raise cls.model_already_exists() from None - raise - return obj diff --git a/app/repositories/models.py b/app/repositories/models.py deleted file mode 100644 index f172d6b..0000000 --- a/app/repositories/models.py +++ /dev/null @@ -1,410 +0,0 @@ -from enum import Enum -from typing import TYPE_CHECKING -from uuid import UUID - -from fastapi_storages import FileSystemStorage -from fastapi_storages.integrations.sqlalchemy import ImageType -from sqlalchemy import ( - VARCHAR, - Boolean, - Column, - Date, - ForeignKey, - Integer, - SmallInteger, - select, -) -from sqlalchemy.dialects.postgresql import ENUM # TODO: engine agnostic. -from sqlalchemy.exc import NoResultFound -from sqlalchemy.ext.asyncio.session import AsyncSession -from sqlalchemy.orm import Mapped, mapped_column, relationship, selectinload -from sqlalchemy.orm.attributes import InstrumentedAttribute -from sqlalchemy.sql.elements import BinaryExpression - -from app.core import settings -from app.repositories.base import Base, ModelAlreadyExist, ModelDoesNotExist - -if TYPE_CHECKING: - from sqlalchemy.engine.result import Result - - -def to_camel( - val: str, -): - return "".join([word if idx == 0 else word.capitalize() for idx, word in enumerate(val.lower().split("_"))]) - - -def generate_inverted_enum( - name: str, - proto_enum: type[Enum], - /, -) -> Enum: - return Enum(name, {f"NOT_{i.name}": f"!{i.value}" for i in [*proto_enum]}) - - -def generate_filter_enum( - name: str, - enums, -) -> Enum: - unpacked_enums: list[Enum] = [val for _e in enums for val in _e] - return Enum(name, {e.name: to_camel(e.value) for e in unpacked_enums}) - - -class CharacterStatus(Enum): - ALIVE = "ALIVE" - DEAD = "DEAD" - UNKNOWN = "UNKNOWN" - - -CharacterInvertedStatus = generate_inverted_enum( - "CharacterInvertedStatus", - CharacterStatus, -) - - -CharacterStatusFilter = generate_filter_enum( - "CharacterStatusFilter", - [ - CharacterStatus, - CharacterInvertedStatus, - ], -) - - -class CharacterGender(Enum): - MALE = "MALE" - FEMALE = "FEMALE" - UNKNOWN = "UNKNOWN" - - -CharacterInvertedGender = generate_inverted_enum( - "CharacterInvertedGender", - CharacterGender, -) - - -CharacterGenderFilter = generate_filter_enum( - "CharacterGenderFilter", - [ - CharacterGender, - CharacterInvertedGender, - ], -) - - -class CharacterSpecies(Enum): - HUMAN = "HUMAN" - ROBOT = "ROBOT" - HEAD = "HEAD" - ALIEN = "ALIEN" - MUTANT = "MUTANT" - MONSTER = "MONSTER" - UNKNOWN = "UNKNOWN" - - -CharacterInvertedSpecies = generate_inverted_enum( - "CharacterInvertedSpecies", - CharacterSpecies, -) - - -CharacterSpeciesFilter = generate_filter_enum( - "CharacterSpeciesFilter", - [ - CharacterSpecies, - CharacterInvertedSpecies, - ], -) - - -class Season(Base): - __tablename__ = "seasons" - - # Mappers - episodes: Mapped[list["Episode"]] = relationship( - back_populates="season", - ) - - @classmethod - async def get( - cls, - session: AsyncSession, - val: int | str | UUID, - /, - *, - field: InstrumentedAttribute = None, - ) -> "Season": - if field is None: - field = Season.id - cursor: "Result" = await session.execute( - select(Season).where(field == val).options(selectinload(Season.episodes)) - ) - try: - return cursor.scalars().one() - except NoResultFound as err: - raise SeasonDoesNotExist() from err - - -class SeasonDoesNotExist(ModelDoesNotExist): - """Season does not exist.""" - - -class EpisodeCharacterAssociation(Base): - __tablename__ = "episode_character_association" - - id = None # noqa: A003 - created_at = None - uuid = None - episode_id: Mapped[int] = mapped_column( - ForeignKey("episodes.id"), - primary_key=True, - ) - character_id: Mapped[int] = mapped_column( - ForeignKey("characters.id"), - primary_key=True, - ) - - -class Episode(Base): - __tablename__ = "episodes" - - name = Column( - VARCHAR( - length=128, - ), - nullable=True, - ) - air_date = Column( - Date(), - nullable=True, - ) - duration = Column( - Integer, - nullable=True, - ) - production_code = Column( - VARCHAR( - length=8, - ), - nullable=True, - ) - broadcast_number = Column( - SmallInteger, - nullable=True, - ) - - # Mappers - season_id: Mapped[int] = mapped_column( - ForeignKey("seasons.id"), - ) - season: Mapped["Season"] = relationship( - back_populates="episodes", - ) - - characters: Mapped[list["Character"]] = relationship( - secondary="episode_character_association", - back_populates="episodes", - ) - - @classmethod - async def get( - cls, - session: AsyncSession, - val: int | str | UUID, - /, - *, - field: InstrumentedAttribute = None, - ) -> "Episode": - if field is None: - field = Episode.id - cursor: "Result" = await session.execute( - select(Episode).where(field == val).options(selectinload(Episode.season)) - ) - try: - return cursor.scalars().one() - except NoResultFound as err: - raise EpisodeDoesNotExist() from err - - -class EpisodeDoesNotExist(ModelDoesNotExist): - """Episode does not exist.""" - - -class CharacterOrderBy(Enum): - ID = "id" - NAME = "name" - CREATED_AT = "createdAt" - - -class Character(Base): - __tablename__ = "characters" - order_by = CharacterOrderBy - - name = Column( - VARCHAR( - length=128, - ), - nullable=False, - ) - status = Column( - ENUM( - CharacterStatus, - ), - nullable=False, - ) - gender = Column( - ENUM( - CharacterGender, - ), - nullable=False, - ) - species = Column( - ENUM( - CharacterSpecies, - ), - nullable=False, - ) - image = Column( - ImageType( - storage=FileSystemStorage(path=settings.project_root / settings.static), - ), - ) - - # Mappers - episodes: Mapped[list["Episode"]] = relationship( - secondary="episode_character_association", - back_populates="characters", - ) - - @classmethod - async def get( - cls, - session: AsyncSession, - val: int | str | UUID, - /, - *, - field: InstrumentedAttribute = None, - ) -> "Character": - if field is None: - field = Character.id - cursor: "Result" = await session.execute(select(Character).where(field == val)) - try: - return cursor.scalars().one() - except NoResultFound as err: - raise CharacterDoesNotExist() from err - - @classmethod - def get_cond_list(cls, **kwargs) -> list[BinaryExpression]: - gender: CharacterGenderFilter | None = kwargs.get("gender") # type: ignore[valid-type] - character_status: CharacterStatusFilter | None = kwargs.get("character_status") # type: ignore[valid-type] - species: CharacterSpeciesFilter | None = kwargs.get("species") # type: ignore[valid-type] - query: str | None = kwargs.get("query") - cond_list = [] - if gender is not None: - cond_list.append( - cls.filter_obj_to_cond( - gender, - CharacterGender, - Character.gender, - ) - ) - if character_status is not None: - cond_list.append( - cls.filter_obj_to_cond( - character_status, - CharacterStatus, - Character.status, - ) - ) - if species is not None: - cond_list.append( - cls.filter_obj_to_cond( - species, - CharacterSpecies, - Character.species, - ) - ) - if query is not None: - cond_list.append(Character.name.ilike(f"%{query.lower()}%")) - return cond_list - - -class CharacterDoesNotExist(ModelDoesNotExist): - """Character does not exist.""" - - -class UserAlreadyExists(ModelAlreadyExist): - """User does not exist.""" - - -class User(Base): - __tablename__ = "users" - model_already_exists = UserAlreadyExists - - name = Column( - VARCHAR( - length=64, - ), - nullable=False, - ) - surname = Column( - VARCHAR( - length=64, - ), - nullable=False, - ) - middle_name = Column( - VARCHAR( - length=64, - ), - nullable=True, - ) - email = Column( - VARCHAR( - length=320, - ), - nullable=False, - unique=True, - ) - username = Column( - VARCHAR( - length=64, - ), - nullable=False, - unique=True, - ) - password = Column( - VARCHAR( - length=128, - ), - nullable=False, - ) - is_confirmed = Column( - Boolean, - default=False, - ) - is_subscribed = Column( - Boolean, - default=True, - ) - - @classmethod - async def get( - cls, - session: AsyncSession, - val: int | str | UUID, - /, - *, - field: InstrumentedAttribute = None, - ) -> "User": - if field is None: - field = User.id - cursor: "Result" = await session.execute(select(User).where(field == val)) - try: - return cursor.scalars().one() - except NoResultFound as err: - raise UserDoesNotExist() from err - - -class UserDoesNotExist(ModelDoesNotExist): - """User does not exist.""" diff --git a/app/repositories/sessions.py b/app/repositories/sessions.py deleted file mode 100644 index 5178fdb..0000000 --- a/app/repositories/sessions.py +++ /dev/null @@ -1,39 +0,0 @@ -from contextlib import asynccontextmanager - -from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.core import settings - -async_engine = create_async_engine( - str(settings.database_url), - echo=True, - future=True, -) - - -def build_async_session() -> async_sessionmaker: - return async_sessionmaker( - bind=async_engine, - class_=AsyncSession, - expire_on_commit=False, - ) - - -async def get_async_session() -> AsyncSession: - async_session: async_sessionmaker = build_async_session() - async with async_session() as session: - try: - yield session - finally: - await session.close() - - -@asynccontextmanager -async def get_async_session_ctx() -> AsyncSession: - async_session = build_async_session() - async with async_session() as session: - try: - yield session - finally: - await session.close() diff --git a/app/repositories/tests/test_models.py b/app/repositories/tests/test_models.py deleted file mode 100644 index db67e10..0000000 --- a/app/repositories/tests/test_models.py +++ /dev/null @@ -1,12 +0,0 @@ -from app.repositories.models import to_camel - - -class TestModelUtils: - def test_to_camel_should_return_snake_case_when_lower_case_text_has_one_underline(self): - assert to_camel("snake_case") == "snakeCase" - - def test_to_camel_should_return_snake_case_when_lower_case_text_has_two_underlines(self): - assert to_camel("snake_case_snake") == "snakeCaseSnake" - - def test_to_camel_should_return_snake_case_when_upper_case_text_has_one_underline(self): - assert to_camel("SNAKE_CASE") == "snakeCase" diff --git a/app/routers/root.py b/app/routers/root.py deleted file mode 100644 index bf43aff..0000000 --- a/app/routers/root.py +++ /dev/null @@ -1,63 +0,0 @@ -from fastapi import APIRouter, Depends, Request, status -from fastapi.openapi.docs import get_redoc_html -from fastapi.responses import FileResponse, Response -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.sessions import get_async_session -from app.services.root import process_about, process_get_root -from app.templates import gnu_translations - -router = APIRouter() - - -@router.get( - "/health", - tags=["health_check"], - include_in_schema=False, - status_code=status.HTTP_200_OK, -) -async def get_health() -> Response: - return Response(status_code=status.HTTP_200_OK) - - -@router.get( - "/", - include_in_schema=False, - status_code=status.HTTP_200_OK, - name="root", -) -async def get_root( - request: Request, - session: AsyncSession = Depends(get_async_session), # noqa: B008 -) -> Response: - return await process_get_root(request, session) - - -@router.get( - "/favicon.ico", - include_in_schema=False, -) -async def favicon() -> FileResponse: - return FileResponse("favicon.ico") - - -@router.get( - "/docs", - include_in_schema=False, - name="redoc_html", -) -async def get_redoc(): - return get_redoc_html( - openapi_url="/openapi.json", - title=f'{gnu_translations.gettext("FB00003")} | {gnu_translations.gettext("FB00001")}', - redoc_favicon_url="/favicon.ico", - ) - - -@router.get( - "/about", - include_in_schema=False, - name="about", -) -async def about(request: Request): - return await process_about(request) diff --git a/app/routers/users.py b/app/routers/users.py deleted file mode 100644 index 6069843..0000000 --- a/app/routers/users.py +++ /dev/null @@ -1,94 +0,0 @@ -from typing import Annotated - -from fastapi import APIRouter, Depends, status -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.sessions import get_async_session -from app.services.auth import oauth2_scheme -from app.services.security import AccessTokenData -from app.services.users import ( - User, - UserAdd, - UserUpdate, - process_activate, - process_add_user, - process_get_me, - process_update, -) - -router = APIRouter(prefix="/users") - - -@router.post( - "", - status_code=status.HTTP_201_CREATED, - response_model=User, - name="user", -) -async def add_user( - body: UserAdd, - session: AsyncSession = Depends(get_async_session), # noqa: B008 -) -> User: - """Create User. - - The user add endpoint is an API function allowing the creation of new user accounts. - It receives user details via HTTP requests, validates the information, - and stores it in the system's database. - This endpoint is essential for user registration and onboarding. - - Please note that currently endpoint is not protected. - However, if there are a lot of spam requests, the endpoint will be blocked or limited. - """ - return await process_add_user(body, session) - - -@router.get( - "/me", - response_model=User, - name="user_me", -) -async def get_me( - token: Annotated[AccessTokenData, Depends(oauth2_scheme)], - session: AsyncSession = Depends(get_async_session), # noqa: B008 -) -> User: - """Get user details. - - Retrieve authenticated user profile information, including username, email, and account details. - Personalize user experiences within the application using the JSON response containing user-specific data. - """ - return await process_get_me(token, session) - - -@router.get( - "/activate", - response_model=User, - name="activate_user", -) -async def activate( - sig: str, - session: AsyncSession = Depends(get_async_session), # noqa: B008 -) -> User: - """Get user details. - - Retrieve authenticated user profile information, including username, email, and account details. - Personalize user experiences within the application using the JSON response containing user-specific data. - """ - return await process_activate(sig, session) - - -@router.put( - "/", - response_model=User, - name="update_user", -) -async def update( - user: UserUpdate, - token: Annotated[AccessTokenData, Depends(oauth2_scheme)], - session: AsyncSession = Depends(get_async_session), # noqa: B008 -) -> User: - """Update user details. - - This endpoint is crucial for users to manage and maintain accurate profile information, - often including authentication and authorization checks for security. - """ - return await process_update(token, user, session) diff --git a/app/services/auth.py b/app/services/auth.py deleted file mode 100644 index 701c721..0000000 --- a/app/services/auth.py +++ /dev/null @@ -1,4 +0,0 @@ -from app.services.security import OAuth2JWTBearer, OAuth2JWTBearerRefresh - -oauth2_scheme = OAuth2JWTBearer(tokenUrl="token") -oauth2_refresh_scheme = OAuth2JWTBearerRefresh(tokenUrl="token") diff --git a/app/services/base.py b/app/services/base.py deleted file mode 100644 index 1bc8435..0000000 --- a/app/services/base.py +++ /dev/null @@ -1,13 +0,0 @@ -from pydantic import BaseModel, Field - - -class EpisodeBase(BaseModel): - id: int # noqa: A003 - name: str - broadcast_number: int = Field(alias="number") - production_code: str = Field( - alias="productionCode", - examples=[ - "1ACV01", - ], - ) diff --git a/app/services/callbacks.py b/app/services/callbacks.py deleted file mode 100644 index f93d7a6..0000000 --- a/app/services/callbacks.py +++ /dev/null @@ -1,248 +0,0 @@ -import json -from asyncio import sleep -from random import randint - -from fastapi import BackgroundTasks -from httpx import AsyncClient, Response -from pydantic import BaseModel, ConfigDict, Field, HttpUrl -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.models import ( - Character as CharacterModel, -) -from app.repositories.models import ( - CharacterDoesNotExist as CharacterDoesNotExistException, -) -from app.repositories.models import ( - Episode as EpisodeModel, -) -from app.repositories.models import ( - EpisodeDoesNotExist as EpisodeDoesNotExistException, -) -from app.repositories.models import ( - Season as SeasonModel, -) -from app.repositories.models import ( - SeasonDoesNotExist as SeasonDoesNotExistException, -) -from app.services.characters import Character -from app.services.episodes import Episode -from app.services.seasons import Season - -MIN_DELAY: int = 5 -MAX_DELAY: int = 10 - - -class CallbackRequest(BaseModel): - callback_url: HttpUrl = Field( - alias="callbackUrl", - ) - - model_config = ConfigDict(populate_by_name=True) - - -class CallbackResponse(BaseModel): - delay: int = Field( - ge=MIN_DELAY, - le=MAX_DELAY, - description="Delay after which the callback will be sent.", - ) - - -class _ObjectDoesNotExist(BaseModel): - id: int = Field( # noqa: A003 - description="Requested object ID.", - ) - detail: str = Field( - examples=[ - "Not found", - ], - ) - - -class CharacterDoesNotExist(_ObjectDoesNotExist): - """Character does not exist response.""" - - -class _ObjectType(BaseModel): - type: str = Field( # noqa: A003 - description="Requested Object type.", - ) - - -class CharacterCallbackResponse(_ObjectType): - item: Character | CharacterDoesNotExist - - -async def _get_character_or_not_found_object( - id_: int, - session: AsyncSession, - /, -) -> Character | CharacterDoesNotExist: - character: Character | CharacterDoesNotExist - try: - character = await CharacterModel.get(session, id_) - except CharacterDoesNotExistException: - character = CharacterDoesNotExist( - id=id_, - detail="Not found", - ) - return character - - -async def _send_callback(url: HttpUrl, body: BaseModel, /): - async with AsyncClient(http2=True) as client: - callback_response: Response = await client.post( - f"{url}", - json=json.loads(body.model_dump_json(by_alias=True)), - ) - callback_response.raise_for_status() - - -async def callback_characters_background_task( - character_id: int, - callback_request: CallbackRequest, - response: CallbackResponse, - session: AsyncSession, - /, -): - await sleep(response.delay) - character: Character | CharacterDoesNotExist = await _get_character_or_not_found_object(character_id, session) - body = CharacterCallbackResponse( - type=Character.__name__, - item=character, - ) - await _send_callback(callback_request.callback_url, body) - - -async def process_characters_callback( - character_id, - callback_request: CallbackRequest, - session: AsyncSession, - background_tasks: BackgroundTasks, - /, -) -> CallbackResponse: - response: CallbackResponse = CallbackResponse(delay=randint(MIN_DELAY, MAX_DELAY)) # noqa: S311 - background_tasks.add_task( - callback_characters_background_task, - character_id, - callback_request, - response, - session, - ) - return response - - -class EpisodeDoesNotExist(_ObjectDoesNotExist): - """Episode does not exist response.""" - - -async def _get_episode_or_not_found_object( - id_: int, - session: AsyncSession, - /, -) -> Episode | EpisodeDoesNotExist: - episode: Episode | EpisodeDoesNotExist - try: - episode = await EpisodeModel.get(session, id_) - except EpisodeDoesNotExistException: - episode = EpisodeDoesNotExist( - id=id_, - detail="Not found", - ) - return episode - - -class EpisodeCallbackResponse(_ObjectType): - item: Episode | EpisodeDoesNotExist - - -async def callback_episodes_background_task( - episode_id: int, - callback_request: CallbackRequest, - response: CallbackResponse, - session: AsyncSession, - /, -): - await sleep(response.delay) - episode: Episode | EpisodeDoesNotExist = await _get_episode_or_not_found_object(episode_id, session) - body = EpisodeCallbackResponse( - type=Episode.__name__, - item=episode, - ) - await _send_callback(callback_request.callback_url, body) - - -async def process_episodes_callback( - episode_id, - episode_request, - session, - background_tasks, -) -> CallbackResponse: - response: CallbackResponse = CallbackResponse(delay=randint(MIN_DELAY, MAX_DELAY)) # noqa: S311 - background_tasks.add_task( - callback_episodes_background_task, - episode_id, - episode_request, - response, - session, - ) - return response - - -# Season related part. -class SeasonDoesNotExist(_ObjectDoesNotExist): - """Season does not exist response.""" - - -async def _get_season_or_not_found_object( - id_: int, - session: AsyncSession, - /, -) -> Season | SeasonDoesNotExist: - season: Season | SeasonDoesNotExist - try: - season = await SeasonModel.get(session, id_) - except SeasonDoesNotExistException: - season = SeasonDoesNotExist( - id=id_, - detail="Not found", - ) - return season - - -class SeasonCallbackResponse(_ObjectType): - item: Season | SeasonDoesNotExist - - -async def callback_seasons_background_task( - season_id: int, - callback_request: CallbackRequest, - response: CallbackResponse, - session: AsyncSession, - /, -): - await sleep(response.delay) - season: Season | SeasonDoesNotExist = await _get_season_or_not_found_object(season_id, session) - body = SeasonCallbackResponse( - type=Season.__name__, - item=season, - ) - await _send_callback(callback_request.callback_url, body) - - -async def process_seasons_callback( - season_id, - season_request, - session, - background_tasks, -) -> CallbackResponse: - response: CallbackResponse = CallbackResponse(delay=randint(MIN_DELAY, MAX_DELAY)) # noqa: S311 - background_tasks.add_task( - callback_seasons_background_task, - season_id, - season_request, - response, - session, - ) - return response diff --git a/app/services/characters.py b/app/services/characters.py deleted file mode 100644 index 1f109ec..0000000 --- a/app/services/characters.py +++ /dev/null @@ -1,109 +0,0 @@ -from datetime import datetime -from typing import Any - -from fastapi import HTTPException, Request, status -from fastapi_pagination import Page -from fastapi_pagination.ext.sqlalchemy import paginate -from fastapi_storages import StorageImage -from pydantic import BaseModel, ConfigDict, Field, HttpUrl, field_validator -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.core import settings -from app.repositories.base import OrderByDirection -from app.repositories.models import Character as CharacterModel -from app.repositories.models import ( - CharacterDoesNotExist, - CharacterGender, - CharacterGenderFilter, - CharacterSpecies, - CharacterSpeciesFilter, - CharacterStatus, - CharacterStatusFilter, -) - - -def build_url(*, path: str | None = None): - path = f"{settings.static}/{path}" if path else f"{settings.static}" - return HttpUrl.build( - scheme="https", - host=settings.trusted_host, - path=path, - ) - - -class Character(BaseModel): - id: int # noqa: A003 - name: str - gender: CharacterGender - status: CharacterStatus - species: CharacterSpecies - created_at: datetime = Field(alias="createdAt") - image: HttpUrl | None = None - - @field_validator("image", mode="before") - @classmethod - def make_url(cls, value: StorageImage | None) -> HttpUrl | None: - """Makes URL from DB path. - - FastAPI does NOT work properly with proxy, so for now protocol will be hardcoded. - TODO: propagate forwarded headers, rely on trusted host. - - Args: - value (fastapi_storages.StorageImage): Image field. - - Returns: - ``pydantic.HttpUrl`` if Character has an image returns absolute URL to image and ``None`` otherwise. - """ - if value is None: - return None - return build_url(path=value._name) - - model_config = ConfigDict(from_attributes=True, populate_by_name=True) - - def __init__(self, request: Request | None = None, **data: Any): - self.request = request - super().__init__(**data) - - -async def get_character( - character_id: int, - session: AsyncSession, - /, -) -> Character: - try: - character: CharacterModel = await CharacterModel.get(session, character_id) - except CharacterDoesNotExist: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) from None - return Character.model_validate(character) - - -async def process_get_character( - character_id: int, - session: AsyncSession, - /, -) -> Character: - return await get_character(character_id, session) - - -async def process_get_characters( # noqa: PLR0913 - session: AsyncSession, - /, - *, - gender: CharacterGenderFilter | None = None, - character_status: CharacterStatusFilter | None = None, - species: CharacterSpeciesFilter | None = None, - order_by: CharacterModel.order_by | None = None, - direction: OrderByDirection | None = None, - query: str | None = None, -) -> Page[Character]: - return await paginate( - session, - CharacterModel.get_filter_statement( - order_by=order_by, - order_by_direction=direction, - gender=gender, - character_statusx=character_status, - species=species, - query=query, - ), - ) diff --git a/app/services/emails.py b/app/services/emails.py deleted file mode 100644 index 2617022..0000000 --- a/app/services/emails.py +++ /dev/null @@ -1,49 +0,0 @@ -from fastapi_mail import ConnectionConfig, FastMail, MessageSchema, MessageType -from pydantic import BaseModel, EmailStr, HttpUrl - -from app.core import settings - -conf = ConnectionConfig( - MAIL_USERNAME=settings.email.host_user, - MAIL_PASSWORD=settings.email.api_key, - MAIL_FROM=settings.email.default_from, - MAIL_PORT=settings.email.port, - MAIL_SERVER=settings.email.host, - MAIL_FROM_NAME=settings.email.from_name, - MAIL_STARTTLS=settings.email.start_tls, - MAIL_SSL_TLS=settings.email.ssl_tls, - USE_CREDENTIALS=settings.email.use_credentials, - VALIDATE_CERTS=settings.email.validate_certs, - TEMPLATE_FOLDER=settings.project_root / "templates", -) - - -fast_mail = FastMail(conf) - - -class _User(BaseModel): - name: str - surname: str - - -class ConfirmationBody(BaseModel): - url: HttpUrl - user: _User - - -async def send_confirmation( - emails: list[EmailStr], - subject: str, - template_body: ConfirmationBody, - /, -): - message = MessageSchema( - subject=subject, - recipients=emails, - template_body=template_body.model_dump(), - subtype=MessageType.html, - ) - await fast_mail.send_message( - message, - template_name="emails/confirmation.html", - ) diff --git a/app/services/episodes.py b/app/services/episodes.py deleted file mode 100644 index 292d0a0..0000000 --- a/app/services/episodes.py +++ /dev/null @@ -1,70 +0,0 @@ -from datetime import date, datetime - -from fastapi import HTTPException, status -from fastapi_pagination import Page -from fastapi_pagination.ext.sqlalchemy import paginate -from pydantic import BaseModel, ConfigDict, Field, computed_field -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.models import ( - Episode as EpisodeModel, -) -from app.repositories.models import ( - EpisodeDoesNotExist, -) -from app.services.base import EpisodeBase - - -class SeasonEpisode(BaseModel): - id: int # noqa: A003 - - model_config = ConfigDict(from_attributes=True, populate_by_name=True) - - -class Episode(EpisodeBase): - air_date: date | None = Field(alias="airDate") - duration: int | None - created_at: datetime = Field(alias="createdAt") - season: SeasonEpisode - - model_config = ConfigDict(from_attributes=True, populate_by_name=True) - - @computed_field( # type: ignore[misc] - alias="broadcastCode", - examples=[ - "S01E01", - ], - return_type=str, - ) - @property - def broadcast_code(self) -> str: - return f"S{self.season.id:02d}E{self.broadcast_number:02d}" - - -async def get_episode( - episode_id: int, - session: AsyncSession, - /, -) -> Episode: - try: - episode: EpisodeModel = await EpisodeModel.get(session, episode_id) - except EpisodeDoesNotExist: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) from None - return Episode.model_validate(episode) - - -async def process_get_episode( - episode_id: int, - session: AsyncSession, - /, -) -> Episode: - return await get_episode(episode_id, session) - - -async def process_get_episodes(session: AsyncSession, /) -> Page[Episode]: - return await paginate( - session, - EpisodeModel.get_filter_statement( - select_in_load=EpisodeModel.season, - ), - ) diff --git a/app/services/notifications.py b/app/services/notifications.py deleted file mode 100644 index 293f1e1..0000000 --- a/app/services/notifications.py +++ /dev/null @@ -1,60 +0,0 @@ -from asyncio import sleep -from datetime import datetime -from random import randint - -from fastapi import Request -from pydantic import BaseModel, Field -from sqlalchemy.ext.asyncio.session import AsyncSession -from sse_starlette import EventSourceResponse, ServerSentEvent - -from app.services.characters import Character, get_character -from app.templates import gnu_translations - -MIN_COORDINATE = 0 -MAX_COORDINATE = 2**6 - - -class CharacterMove(BaseModel): - name: str = Field(gnu_translations.gettext("FB00007")) - x: int = Field( - description=gnu_translations.gettext("FB00008"), - ge=MIN_COORDINATE, - le=MAX_COORDINATE, - ) - y: int = Field( - description=gnu_translations.gettext("FB00009"), - ge=MIN_COORDINATE, - le=MAX_COORDINATE, - ) - time: datetime = datetime.now() - - -async def generate_character_move( - request: Request, - character: Character, - /, -): - # I don't like infinite loops, please check if range can be used. - while True: - if await request.is_disconnected(): - # Can be removed. Do not trust lib, force connection close. - break - - yield ServerSentEvent( - data=CharacterMove( - name=character.name, - x=randint(MIN_COORDINATE, MAX_COORDINATE), # noqa: S311 - y=randint(MIN_COORDINATE, MAX_COORDINATE), # noqa: S311 - ).model_dump() - ) - await sleep(randint(1, 3)) # noqa: S311 - - -async def process_character_sse( - character_id: int, - request: Request, - session: AsyncSession, - /, -) -> EventSourceResponse: - character: Character = await get_character(character_id, session) - return EventSourceResponse(generate_character_move(request, character)) diff --git a/app/services/root.py b/app/services/root.py deleted file mode 100644 index f54a1f7..0000000 --- a/app/services/root.py +++ /dev/null @@ -1,34 +0,0 @@ -from fastapi import Request -from fastapi.responses import Response -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.models import Character as CharacterModel -from app.repositories.models import User as UserModel -from app.templates import templates - - -async def process_get_root( - request: Request, - session: AsyncSession, - /, -) -> Response: - characters = await CharacterModel.filter(session, limit=6) - user_count = await UserModel.count(session) - return templates.TemplateResponse( - request, - "index.html", - { - "characters": characters, - "user_count": user_count, - }, - ) - - -async def process_about( - request: Request, - /, -) -> Response: - return templates.TemplateResponse( - request, - "about.html", - ) diff --git a/app/services/seasons.py b/app/services/seasons.py deleted file mode 100644 index d416225..0000000 --- a/app/services/seasons.py +++ /dev/null @@ -1,45 +0,0 @@ -from fastapi import HTTPException, status -from fastapi_pagination import Page -from fastapi_pagination.ext.sqlalchemy import paginate -from pydantic import BaseModel, ConfigDict -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.models import ( - Season as SeasonModel, -) -from app.repositories.models import ( - SeasonDoesNotExist, -) -from app.services.base import EpisodeBase - - -class EpisodeSeason(EpisodeBase): - model_config = ConfigDict(from_attributes=True, populate_by_name=True) - - -class Season(BaseModel): - id: int # noqa: A003 - episodes: list[EpisodeSeason] - - model_config = ConfigDict(from_attributes=True, populate_by_name=True) - - -async def process_get_season( - season_id: int, - session: AsyncSession, - /, -) -> Season: - try: - season: SeasonModel = await SeasonModel.get(session, season_id) - except SeasonDoesNotExist: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) from None - return Season.model_validate(season) - - -async def process_get_seasons(session: AsyncSession, /) -> Page[Season]: - return await paginate( - session, - SeasonModel.get_filter_statement( - select_in_load=SeasonModel.episodes, - ), - ) diff --git a/app/services/security.py b/app/services/security.py deleted file mode 100644 index 7d0502a..0000000 --- a/app/services/security.py +++ /dev/null @@ -1,162 +0,0 @@ -from copy import deepcopy -from datetime import UTC, datetime, timedelta -from enum import Enum -from typing import Annotated -from uuid import UUID - -from fastapi import HTTPException, Request, status -from fastapi.param_functions import Body -from fastapi.security import OAuth2PasswordBearer -from jose import exceptions, jwt -from pydantic import BaseModel, Field, ValidationError -from typing_extensions import Doc - -from app.core import settings - -DEFAULT_JWT_EXPIRATION_TIME: int = 15 * 60 -REFRESH_JWT_EXPIRATION_TIME: int = 60 * 60 * 24 * 21 - - -class TokenType(Enum): - REFRESH = "REFRESH" - ACCESS = "ACCESS" - - -class TokenBase(BaseModel): - type: TokenType # noqa: A003 - - -class AccessTokenData(TokenBase): - uuid: UUID - type: TokenType = TokenType.ACCESS # noqa: A003 - - -class RefreshTokenData(TokenBase): - nonce: str = Field(min_length=32, max_length=32) - uuid: UUID - type: TokenType = TokenType.REFRESH # noqa: A003 - - -def generate_jwt_signature( - payload: dict, - /, - *, - expiration_time: int = DEFAULT_JWT_EXPIRATION_TIME, - algorithm: str = "HS256", -) -> str: - cleaned_payload: dict = deepcopy(payload) - - cleaned_payload.update( - { - "exp": datetime.now(UTC) + timedelta(seconds=expiration_time), - } - ) - - return jwt.encode(cleaned_payload, settings.secret_key, algorithm=algorithm) - - -class SignatureErrorBase(Exception): - """Base JWT Error""" - - -class FatalSignatureError(SignatureErrorBase): - """Fatal Signature Error""" - - -class SignatureExpiredError(SignatureErrorBase): - """Signature Expired Error""" - - -def decode_jwt_signature( - token: str, - /, - *, - algorithms: list[str] | None = None, -) -> dict: - if algorithms is None: - algorithms = ["HS256"] - - try: - return jwt.decode(token, settings.secret_key, algorithms=algorithms) - except (exceptions.JWSError, exceptions.JWSSignatureError, exceptions.JWTError): - raise FatalSignatureError() from None - except exceptions.ExpiredSignatureError: - raise SignatureExpiredError() from None - - -class UnauthorizedResponse(BaseModel): - detail: str - - -class OAuth2PasswordRequestJson: - def __init__( - self, - *, - username: Annotated[ - str, - Body(), - Doc( - """ - `username` string. The OAuth2 spec requires the exact field name - `username`. - """ - ), - ], - password: Annotated[ - str, - Body(), - Doc( - """ - `password` string. The OAuth2 spec requires the exact field name - `password". - """ - ), - ], - ): - self.username = username - self.password = password - - -class OAuth2JWTBearerBase(OAuth2PasswordBearer): - _model: type[BaseModel] | None = None - - def extra_checks(self, model): - raise NotImplementedError() from None - - async def __call__(self, request: Request) -> str | BaseModel | None: - if self._model is None: - raise ValueError("model is not defined") - param = await super().__call__(request) - try: - decoded_token: dict = decode_jwt_signature(param) - except SignatureExpiredError: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Token expired", - ) from None - except FatalSignatureError: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - ) from None - try: - model = self._model(**decoded_token) - except ValidationError: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - self.extra_checks(model) - return model - - -class OAuth2JWTBearer(OAuth2JWTBearerBase): - _model: type[BaseModel] | None = AccessTokenData - - def extra_checks(self, model): - if model.type != TokenType.ACCESS: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - - -class OAuth2JWTBearerRefresh(OAuth2JWTBearerBase): - _model: type[BaseModel] | None = RefreshTokenData - - def extra_checks(self, model): - if model.type != TokenType.REFRESH: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None diff --git a/app/services/tokens.py b/app/services/tokens.py deleted file mode 100644 index ff64e01..0000000 --- a/app/services/tokens.py +++ /dev/null @@ -1,75 +0,0 @@ -from json import loads -from uuid import uuid4 - -from fastapi import HTTPException, status -from pydantic import BaseModel, ConfigDict, Field -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.repositories.models import User as UserModel -from app.repositories.models import UserDoesNotExist -from app.services.hashers import hasher -from app.services.security import ( - REFRESH_JWT_EXPIRATION_TIME, - AccessTokenData, - OAuth2PasswordRequestJson, - RefreshTokenData, - generate_jwt_signature, -) - - -class Token(BaseModel): - access_token: str = Field(alias="accessToken") - refresh_token: str = Field(alias="refreshToken") - - model_config = ConfigDict( - from_attributes=True, - populate_by_name=True, - ) - - -async def process_token_auth_user( - session: AsyncSession, - data: OAuth2PasswordRequestJson, - /, -) -> Token: - try: - user: UserModel = await UserModel.get( - session, - data.username, - field=UserModel.username, - ) - except UserDoesNotExist: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - if not hasher.verify(data.password, user.password): - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - - return Token( - access_token=generate_jwt_signature( - loads( - AccessTokenData(uuid=user.uuid).model_dump_json(by_alias=True), - ), - ), - refresh_token=generate_jwt_signature( - loads( - RefreshTokenData( - uuid=user.uuid, - nonce=uuid4().hex, - ).model_dump_json(by_alias=True) - ), - expiration_time=REFRESH_JWT_EXPIRATION_TIME, - ), - ) - - -class RefreshToken(BaseModel): - access_token: str - - -async def process_refresh_token_auth_user(data: RefreshTokenData) -> RefreshToken: - return RefreshToken( - access_token=generate_jwt_signature( - loads( - AccessTokenData(**data.model_dump()).model_dump_json(by_alias=True), - ), - ) - ) diff --git a/app/services/users.py b/app/services/users.py deleted file mode 100644 index d90c2d7..0000000 --- a/app/services/users.py +++ /dev/null @@ -1,227 +0,0 @@ -from datetime import datetime -from gettext import gettext as _ -from json import dumps, loads -from urllib.parse import urlencode -from uuid import UUID - -from fastapi import HTTPException, status -from pydantic import BaseModel, ConfigDict, EmailStr, Field, HttpUrl, field_validator -from sqlalchemy.ext.asyncio.session import AsyncSession - -from app.core import feature_flags, settings -from app.repositories.models import ( - User as UserModel, -) -from app.repositories.models import ( - UserAlreadyExists, - UserDoesNotExist, -) -from app.services.emails import ConfirmationBody, send_confirmation -from app.services.hashers import hasher -from app.services.security import ( - AccessTokenData, - FatalSignatureError, - SignatureExpiredError, - decode_jwt_signature, - generate_jwt_signature, -) - - -class UserBase(BaseModel): - name: str = Field( - min_length=1, - max_length=64, - ) - surname: str = Field( - min_length=1, - max_length=64, - ) - middle_name: str | None = Field( - default=None, - alias="middleName", - min_length=1, - max_length=64, - ) - email: EmailStr - username: str = Field( - min_length=5, - max_length=64, - ) - password: str = Field( - min_length=8, - max_length=128, - ) - is_subscribed: bool = Field( - default=True, - alias="isSubscribed", - ) - - model_config = ConfigDict( - from_attributes=True, - populate_by_name=True, - ) - - -class PasswordHashMixin: - @field_validator("password", mode="before") - @classmethod - def hash_password(cls, value: str) -> str: - return hasher.encode(value) - - -class UserAdd(UserBase, PasswordHashMixin): - ... - - -class User(UserBase): - id: int # noqa: A003 - is_confirmed: bool = Field(alias="isConfirmed") - created_at: datetime = Field(alias="createdAt") - - -EXPIRATION_72_HOURS = 60 * 60 * 72 - - -def _get_signature(uuid: UUID): - return generate_jwt_signature( - loads( - dumps( - { - "uuid": uuid, - }, - default=str, - ) - ), - expiration_time=EXPIRATION_72_HOURS, - ) - - -def get_confirmation_body(user: UserModel, /) -> ConfirmationBody: - url = HttpUrl.build( - scheme="https", - host=settings.trusted_host, - path="api/users/activate", - query=urlencode( - { - "sig": _get_signature(user.uuid), - } - ), - ) - return ConfirmationBody( - url=url, - user={ - "name": user.name, - "surname": user.surname, - }, - ) - - -async def process_add_user(body: UserAdd, session: AsyncSession, /) -> User: - try: - user: UserModel = await UserModel.add(session, body) - except UserAlreadyExists: - raise HTTPException( - detail="User with username or email already exists", - status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, - ) from None - if feature_flags.activate_users: - await send_confirmation( - [user.email], - _("FuturamaAPI - Account Activation"), - get_confirmation_body(user), - ) - return User.model_validate(user) - - -async def process_get_me(token: AccessTokenData, session: AsyncSession, /) -> User: - try: - user: UserModel = await UserModel.get(session, token.uuid, field=UserModel.uuid) - except UserDoesNotExist: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - return User.model_validate(user) - - -def _get_uuid(signature: str, /) -> UUID: - try: - decoded_signature = decode_jwt_signature(signature) - except SignatureExpiredError: - raise HTTPException( - detail="Token has expired", - status_code=status.HTTP_401_UNAUTHORIZED, - ) from None - except FatalSignatureError: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - - try: - uuid = decoded_signature["uuid"] - except KeyError: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - - return UUID(uuid) - - -async def process_activate(signature: str, session: AsyncSession, /) -> User: - uuid = _get_uuid(signature) - try: - user: UserModel = await UserModel.get(session, uuid, field=UserModel.uuid) - except UserDoesNotExist: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - if user.is_confirmed: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - - user.is_confirmed = True - await session.commit() - - return User.model_validate(user) - - -class UserUpdate(BaseModel, PasswordHashMixin): - name: str | None = Field( - min_length=1, - max_length=64, - default=None, - ) - surname: str | None = Field( - min_length=1, - max_length=64, - default=None, - ) - middle_name: str | None = Field( - default=None, - alias="middleName", - min_length=1, - max_length=64, - ) - password: str | None = Field( - default=None, - min_length=8, - max_length=128, - ) - is_subscribed: bool | None = Field( - default=None, - alias="isSubscribed", - ) - - model_config = ConfigDict( - from_attributes=True, - populate_by_name=True, - ) - - -async def process_update( - token: AccessTokenData, - request_user: UserUpdate, - session: AsyncSession, - /, -) -> User: - request_user_dict: dict = request_user.model_dump(exclude_none=True) - if not request_user_dict: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - try: - user: UserModel = await UserModel.get(session, token.uuid, field=UserModel.uuid) - except UserDoesNotExist: - raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None - for field, value in request_user_dict.items(): - setattr(user, field, value) - await session.commit() - return user diff --git a/app/templates.py b/app/templates.py deleted file mode 100644 index a5374d8..0000000 --- a/app/templates.py +++ /dev/null @@ -1,30 +0,0 @@ -import gettext -from typing import TYPE_CHECKING - -from fastapi.templating import Jinja2Templates -from jinja2 import pass_context - -if TYPE_CHECKING: - from fastapi import Request - from starlette.datastructures import URL - -try: - gnu_translations = gettext.translation( - domain="messages", - localedir="locale", - languages=["en_US"], - ) -except FileNotFoundError: - raise RuntimeError("Please compile messages first") from None - - -@pass_context -def relative_path_for(context: dict, name: str, /, **path_params) -> str: - request: "Request" = context["request"] - http_url: "URL" = request.url_for(name, **path_params) - return http_url.path - - -templates = Jinja2Templates(directory="templates", extensions=["jinja2.ext.i18n"]) -templates.env.globals["relative_path_for"] = relative_path_for -templates.env.install_gettext_translations(gnu_translations) diff --git a/babel.cfg b/babel.cfg deleted file mode 100644 index d75463f..0000000 --- a/babel.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[ignore: **/static/**] -[ignore: **/theme/**] - -[python: **.py] - -[jinja2: **/templates/**.html] -encoding = utf-8 -silent = false diff --git a/configs/plugins/__init__.py b/configs/plugins/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/configs/plugins/env_vars.py b/configs/plugins/env_vars.py deleted file mode 100644 index f369e86..0000000 --- a/configs/plugins/env_vars.py +++ /dev/null @@ -1,16 +0,0 @@ -import os - -import pytest - - -@pytest.hookimpl(tryfirst=True) -def pytest_load_initial_conftests(args, early_config, parser): - with open(".env.template") as file: - data = file.read() - - for line in data.splitlines(): - if not line.strip() or line.startswith("#"): - continue - - key, value = line.split()[0].split("=", 1) - os.environ[key] = value diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index e6619e4..016ac74 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -5,10 +5,7 @@ then PORT=8080 fi -# locale -make messages-compile - # Migrations -alembic upgrade head +make migrate -hypercorn -b :$PORT -k uvloop app.main:app +poetry run python -m futuramaapi -b :$PORT diff --git a/futuramaapi/__init__.py b/futuramaapi/__init__.py new file mode 100644 index 0000000..f955241 --- /dev/null +++ b/futuramaapi/__init__.py @@ -0,0 +1,7 @@ +from .apps import app +from .apps.hypercorn import hypercorn_config + +__all__ = [ + "app", + "hypercorn_config", +] diff --git a/futuramaapi/__main__.py b/futuramaapi/__main__.py new file mode 100644 index 0000000..23e27bf --- /dev/null +++ b/futuramaapi/__main__.py @@ -0,0 +1,11 @@ +import sys + +from .apps import run + + +def _run() -> int: + return run(sys.argv[1:]) + + +if __name__ == "__main__": + sys.exit(_run()) diff --git a/futuramaapi/apps/__init__.py b/futuramaapi/apps/__init__.py new file mode 100644 index 0000000..85aabcf --- /dev/null +++ b/futuramaapi/apps/__init__.py @@ -0,0 +1,11 @@ +from fastapi import FastAPI + +from .app import futurama_api +from .hypercorn import run + +app: FastAPI = futurama_api.app + +__all__ = [ + "app", + "run", +] diff --git a/futuramaapi/apps/app.py b/futuramaapi/apps/app.py new file mode 100644 index 0000000..d9995a9 --- /dev/null +++ b/futuramaapi/apps/app.py @@ -0,0 +1,86 @@ +import mimetypes +from collections.abc import Generator +from contextlib import asynccontextmanager +from typing import Any + +from fastapi import FastAPI +from fastapi.routing import APIRouter +from fastapi.staticfiles import StaticFiles +from fastapi_pagination import add_pagination + +from futuramaapi.core import feature_flags, settings +from futuramaapi.middlewares.cors import CORSMiddleware +from futuramaapi.middlewares.secure import HTTPSRedirectMiddleware +from futuramaapi.repositories.session import session_manager + +mimetypes.add_type("image/webp", ".webp") + + +class FuturamaAPI: + def __init__( + self, + routers: list[APIRouter], + *, + lifespan: Generator[Any, Any, None] | Any | None, + ) -> None: + self.routers: list[APIRouter] = routers + self.app: FastAPI = FastAPI( + docs_url=None, + redoc_url=None, + lifespan=lifespan, + ) + + self.build() + + def _add_middlewares(self) -> None: + if feature_flags.enable_https_redirect: + self.app.add_middleware(HTTPSRedirectMiddleware) + + self.app.add_middleware( + CORSMiddleware, + allow_origins=settings.allow_origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + ) + + def _add_routers(self) -> None: + for router in self.routers: + self.app.include_router(router) + + def _add_static(self) -> None: + self.app.mount( + "/static", + StaticFiles(directory="static"), + name="static", + ) + + def build(self) -> None: + self._add_middlewares() + self._add_routers() + self._add_static() + + add_pagination(self.app) + + +@asynccontextmanager +async def _lifespan(_: FastAPI): + yield + if session_manager.engine is not None: + await session_manager.close() + + +def _get_routers() -> list[APIRouter]: + from futuramaapi.routers import api_router, graphql_router, root_router + + return [ + api_router, + graphql_router, + root_router, + ] + + +futurama_api: FuturamaAPI = FuturamaAPI( + _get_routers(), + lifespan=_lifespan, +) diff --git a/futuramaapi/apps/hypercorn.py b/futuramaapi/apps/hypercorn.py new file mode 100644 index 0000000..4b5960e --- /dev/null +++ b/futuramaapi/apps/hypercorn.py @@ -0,0 +1,28 @@ +import sys +from typing import TYPE_CHECKING + +from hypercorn.__main__ import main + +if TYPE_CHECKING: + from collections.abc import Sequence + + +class Config: + worker_class = "uvloop" + + +hypercorn_config: Config = Config() + + +def run( + args: list[str] | None, +) -> int: + argv: Sequence[str] = args if args is not None else sys.argv[1:] + main( + [ + "futuramaapi:app", + "--config=python:futuramaapi.hypercorn_config", + *argv, + ] + ) + return 0 diff --git a/futuramaapi/core/__init__.py b/futuramaapi/core/__init__.py new file mode 100644 index 0000000..40dd32c --- /dev/null +++ b/futuramaapi/core/__init__.py @@ -0,0 +1,7 @@ +from futuramaapi.core.configs import email_settings, feature_flags, settings + +__all__ = [ + "feature_flags", + "email_settings", + "settings", +] diff --git a/app/core/settings.py b/futuramaapi/core/configs.py similarity index 53% rename from app/core/settings.py rename to futuramaapi/core/configs.py index af20f56..70a5c59 100644 --- a/app/core/settings.py +++ b/futuramaapi/core/configs.py @@ -2,7 +2,8 @@ from typing import Any from urllib.parse import ParseResult, urlparse -from pydantic import EmailStr, Field, PostgresDsn +from fastapi_mail import ConnectionConfig, FastMail, MessageSchema, MessageType +from pydantic import BaseModel, EmailStr, Field, HttpUrl, PostgresDsn from pydantic.fields import FieldInfo from pydantic_settings import ( BaseSettings, @@ -11,6 +12,8 @@ SettingsConfigDict, ) +from futuramaapi.helpers.templates import TEMPLATES_PATH + class EmailSettings(BaseSettings): default_from: EmailStr = Field( @@ -30,6 +33,59 @@ class EmailSettings(BaseSettings): env_prefix="email_", ) + @property + def fast_mail(self) -> FastMail: + return FastMail(self.connection_config) + + @property + def connection_config(self) -> ConnectionConfig: + return ConnectionConfig( + MAIL_USERNAME=self.host_user, + MAIL_PASSWORD=self.api_key, + MAIL_FROM=self.default_from, + MAIL_PORT=self.port, + MAIL_SERVER=self.host, + MAIL_FROM_NAME=self.from_name, + MAIL_STARTTLS=self.start_tls, + MAIL_SSL_TLS=self.ssl_tls, + USE_CREDENTIALS=self.use_credentials, + VALIDATE_CERTS=self.validate_certs, + TEMPLATE_FOLDER=settings.project_root / TEMPLATES_PATH, + ) + + @staticmethod + def get_message_schema( + subject: str, + emails: list[EmailStr], + template_body: BaseModel, + ) -> MessageSchema: + return MessageSchema( + subject=subject, + recipients=emails, + template_body=template_body.model_dump(), + subtype=MessageType.html, + ) + + async def send( + self, + emails: list[EmailStr], + subject: str, + template_body: BaseModel, + template_name: str, + /, + ): + if feature_flags.send_emails is False: + return + + await self.fast_mail.send_message( + self.get_message_schema( + subject, + emails, + template_body, + ), + template_name=template_name, + ) + email_settings = EmailSettings() @@ -78,13 +134,22 @@ def settings_customise_sources( # noqa: PLR0913 ) -> tuple[PydanticBaseSettingsSource, ...]: return (_EnvSource(settings_cls),) + def build_url(self, *, path: str | None = None) -> HttpUrl: + path = f"{self.static}/{path}" if path else f"{self.static}" + return HttpUrl.build( + scheme="https", + host=self.trusted_host, + path=path, + ) + settings = Settings() class FeatureFlags(BaseSettings): - activate_users: bool = False enable_https_redirect: bool = False + send_emails: bool = True + activate_users: bool = False feature_flags = FeatureFlags() diff --git a/alembic/versions/__init__.py b/futuramaapi/helpers/__init__.py similarity index 100% rename from alembic/versions/__init__.py rename to futuramaapi/helpers/__init__.py diff --git a/app/services/hashers.py b/futuramaapi/helpers/hashers.py similarity index 58% rename from app/services/hashers.py rename to futuramaapi/helpers/hashers.py index 1b819d7..ce33ef0 100644 --- a/app/services/hashers.py +++ b/futuramaapi/helpers/hashers.py @@ -1,69 +1,72 @@ import base64 import hashlib +import logging import math import secrets +from abc import ABC, abstractmethod from collections.abc import Callable from pydantic import BaseModel -RANDOM_STRING_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +logger = logging.getLogger(__name__) class HasherBaseException(Exception): """Hasher Base Exception.""" -def pbkdf2( - password: bytes, - salt: bytes, - iterations: int, - /, - *, - dk_len: int | None = 0, - digest: Callable | None = None, -): - if digest is None: - digest = hashlib.sha256 - dk_len = dk_len or None - return hashlib.pbkdf2_hmac(digest().name, password, salt, iterations, dk_len) - - -def compare( - val1: bytes, - val2: bytes, - /, -) -> bool: - return secrets.compare_digest(val1, val2) - - -def get_random_string( - length: int, - /, - *, - allowed_chars=RANDOM_STRING_CHARS, -): - return "".join(secrets.choice(allowed_chars) for i in range(length)) - - class DecodedPassword(BaseModel): algorithm: str - hash: str # noqa: A003 + hash: str iterations: int salt: str -class PasswordHasherBase: +class PasswordHasherBase(ABC): algorithm: str | None = None - library = None - salt_entropy = 128 - separator = "." + salt_entropy: int = 128 + separator: str = "." + random_string_chars: str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + + @staticmethod + def pbkdf2( + password: bytes, + salt: bytes, + iterations: int, + /, + *, + dk_len: int | None = 0, + digest: Callable | None = None, + ): + if digest is None: + digest = hashlib.sha256 + dk_len = dk_len or None + return hashlib.pbkdf2_hmac(digest().name, password, salt, iterations, dk_len) + + def get_random_string( + self, + length: int, + /, + *, + allowed_chars: str | None = None, + ): + chars = allowed_chars if allowed_chars is not None else self.random_string_chars + return "".join(secrets.choice(chars) for _ in range(length)) + + @staticmethod + def compare( + val1: bytes, + val2: bytes, + /, + ) -> bool: + return secrets.compare_digest(val1, val2) def salt(self) -> str: - count = math.ceil(self.salt_entropy / math.log2(len(RANDOM_STRING_CHARS))) - return get_random_string(count, allowed_chars=RANDOM_STRING_CHARS) + count = math.ceil(self.salt_entropy / math.log2(len(self.random_string_chars))) + return self.get_random_string(count, allowed_chars=self.random_string_chars) - def verify(self, password, encoded, /) -> bool: - raise NotImplementedError() + @abstractmethod + def verify(self, password, encoded, /) -> bool: ... def _check_encode_args(self, password: str, salt: str, /): if not password: @@ -71,6 +74,7 @@ def _check_encode_args(self, password: str, salt: str, /): if not salt or self.separator in salt: raise ValueError() from None + @abstractmethod def encode( self, password: str, @@ -78,11 +82,10 @@ def encode( *, salt: str | None = None, iterations: int | None = None, - ) -> str: - raise NotImplementedError() + ) -> str: ... - def decode(self, encoded, /) -> DecodedPassword: - raise NotImplementedError() + @abstractmethod + def decode(self, encoded, /) -> DecodedPassword: ... class HashMismatch(HasherBaseException): @@ -109,7 +112,7 @@ def encode( if iterations is None: iterations = self.iterations - hash_ = pbkdf2( + hash_ = self.pbkdf2( password.encode(), salt.encode(), iterations, @@ -121,6 +124,7 @@ def encode( def decode(self, encoded, /) -> DecodedPassword: algorithm, iterations, salt, hash_ = encoded.split(self.separator, 3) if algorithm != self.algorithm: + logger.exception("Algorithm mismatch") raise HashMismatch() from None return DecodedPassword( algorithm=algorithm, @@ -136,7 +140,7 @@ def verify(self, password: str, encoded: str, /) -> bool: salt=decoded_password.salt, iterations=decoded_password.iterations, ) - return compare(encoded.encode(), encoded_.encode()) + return self.compare(encoded.encode(), encoded_.encode()) hasher = PasswordHasherPBKDF2() diff --git a/futuramaapi/helpers/pydantic.py b/futuramaapi/helpers/pydantic.py new file mode 100644 index 0000000..ed55fdf --- /dev/null +++ b/futuramaapi/helpers/pydantic.py @@ -0,0 +1,48 @@ +import json +import uuid +from typing import Any, ClassVar + +import pydash +from pydantic import BaseModel as BaseModelOrig +from pydantic import ConfigDict, Field, SecretStr +from pydash import camel_case + +from futuramaapi.helpers.hashers import PasswordHasherBase, hasher + + +class BaseModel(BaseModelOrig): + hasher: ClassVar[PasswordHasherBase] = hasher + + model_config = ConfigDict( + from_attributes=True, + populate_by_name=True, + alias_generator=camel_case, + ) + + def to_dict(self, *, by_alias: bool = True, reveal_secrets: bool = False, exclude_unset=False) -> dict: + result: dict = json.loads(self.model_dump_json(by_alias=by_alias, exclude_unset=exclude_unset)) + if reveal_secrets is False: + return result + + secret_dict: dict = {} + name: str + for name in self.model_fields_set: + field: Any = getattr(self, name) + if isinstance(field, SecretStr): + secret_dict.update( + { + name: field.get_secret_value(), + } + ) + return pydash.merge(result, secret_dict) + + +class BaseTokenModel(BaseModel): + def refresh_nonce(self) -> None: + self.nonce = self._get_nonce() + + @staticmethod + def _get_nonce() -> str: + return uuid.uuid4().hex + + nonce: str = Field(default_factory=_get_nonce) diff --git a/futuramaapi/helpers/templates.py b/futuramaapi/helpers/templates.py new file mode 100644 index 0000000..44f469e --- /dev/null +++ b/futuramaapi/helpers/templates.py @@ -0,0 +1,27 @@ +from pathlib import Path +from typing import TYPE_CHECKING + +from fastapi.templating import Jinja2Templates +from jinja2 import pass_context + +if TYPE_CHECKING: + from fastapi import Request + from starlette.datastructures import URL + +TEMPLATES_PATH: Path = Path("templates") + + +@pass_context +def relative_path_for(context: dict, name: str, /, **path_params) -> str: + request: "Request" = context["request"] + http_url: "URL" = request.url_for(name, **path_params) + return http_url.path + + +def _build_templates(templates_dir: Path) -> Jinja2Templates: + _templates: Jinja2Templates = Jinja2Templates(directory=str(templates_dir)) + _templates.env.globals["relative_path_for"] = relative_path_for + return _templates + + +templates: Jinja2Templates = _build_templates(TEMPLATES_PATH) diff --git a/app/graph_ql/__init__.py b/futuramaapi/middlewares/__init__.py similarity index 100% rename from app/graph_ql/__init__.py rename to futuramaapi/middlewares/__init__.py diff --git a/futuramaapi/middlewares/cors.py b/futuramaapi/middlewares/cors.py new file mode 100644 index 0000000..c77fb32 --- /dev/null +++ b/futuramaapi/middlewares/cors.py @@ -0,0 +1,10 @@ +from fastapi.middleware.cors import CORSMiddleware as CORSMiddlewareBase + + +class CORSMiddleware(CORSMiddlewareBase): + def is_allowed_origin(self, origin: str) -> bool: + # Starlette restricts to have origin "*" with allow_credentials for ``fastapi.middleware.cors.CORSMiddleware``. + # But for FuturamaAPI it's fine if anyone can access API. + # Not a security issue at all. But if you have any suggestions you are free to create a task here: + # https://github.com/koldakov/futuramaapi/issues. + return True diff --git a/futuramaapi/middlewares/secure.py b/futuramaapi/middlewares/secure.py new file mode 100644 index 0000000..1d2eaca --- /dev/null +++ b/futuramaapi/middlewares/secure.py @@ -0,0 +1,64 @@ +import logging + +from starlette import status +from starlette.datastructures import URL +from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint +from starlette.requests import Request +from starlette.responses import RedirectResponse, Response +from starlette.types import Scope + +from futuramaapi.core import settings + +logger = logging.getLogger(__name__) + + +class HTTPSRedirectMiddleware(BaseHTTPMiddleware): + https_port: int = 443 + http_port: int = 80 + + def is_secure(self, headers: dict): + try: + host: str = headers["host"] + except KeyError: + logger.info("Host not found in headers") + return False + try: + proto: str = headers["x-forwarded-proto"] + except KeyError: + logger.info("x-forwarded-proto not found in headers") + return False + try: + port: str = headers["x-forwarded-port"] + except KeyError: + logger.info("x-forwarded-port not found in headers") + return False + + if host == settings.trusted_host and proto in ("https", "wss") and int(port) == self.https_port: + return True + return False + + def _fix_url(self, scope: Scope, /): + url = URL(scope=scope) + redirect_scheme = {"http": "https", "ws": "wss"}[url.scheme] + netloc = url.hostname if url.port in (self.http_port, self.https_port) else url.netloc + return url.replace(scheme=redirect_scheme, netloc=netloc) + + @staticmethod + def headers_to_dict(headers: list, /) -> dict: + return {h[0].decode(): h[1].decode() for h in headers} + + async def dispatch( + self, + request: Request, + call_next: RequestResponseEndpoint, + ) -> Response: + headers: dict = self.headers_to_dict(request.scope["headers"]) + if self.is_secure(headers): + return await call_next(request) + + url: URL = self._fix_url(request.scope) + return RedirectResponse( + url, + status_code=status.HTTP_301_MOVED_PERMANENTLY, + headers={h[0].decode(): h[1].decode() for h in request.scope["headers"]}, + ) diff --git a/app/graph_ql/tests/__init__.py b/futuramaapi/mixins/__init__.py similarity index 100% rename from app/graph_ql/tests/__init__.py rename to futuramaapi/mixins/__init__.py diff --git a/futuramaapi/mixins/pydantic.py b/futuramaapi/mixins/pydantic.py new file mode 100644 index 0000000..f76ed29 --- /dev/null +++ b/futuramaapi/mixins/pydantic.py @@ -0,0 +1,231 @@ +import json +import logging +from abc import ABC, abstractmethod +from copy import deepcopy +from datetime import UTC, datetime, timedelta +from typing import TYPE_CHECKING, Any, ClassVar, Literal, Self + +import jwt +from fastapi import Request +from fastapi_pagination import Page +from fastapi_pagination.ext.sqlalchemy import paginate +from jwt.exceptions import ExpiredSignatureError, InvalidSignatureError, InvalidTokenError +from pydantic.main import IncEx +from sqlalchemy.ext.asyncio.session import AsyncSession +from starlette.templating import _TemplateResponse + +from futuramaapi.core import settings +from futuramaapi.helpers.pydantic import BaseModel +from futuramaapi.helpers.templates import templates +from futuramaapi.repositories.base import Base, FilterStatementKwargs, ModelAlreadyExistsError, ModelDoesNotExistError +from futuramaapi.routers.exceptions import ModelExistsError, ModelNotFoundError + +if TYPE_CHECKING: + from sqlalchemy import Select + +logger = logging.getLogger(__name__) + + +class _PydanticSanityCheck[Model: BaseModel]: # type: ignore[valid-type] + _required_methods: ClassVar[tuple[str, ...]] = ( + "model_validate", + "model_dump_json", + "model_dump", + ) + + @classmethod + @abstractmethod + def model_validate( + cls: type[Model], # type: ignore[name-defined] + obj: Any, + *, + strict: bool | None = None, + from_attributes: bool | None = None, + context: dict[str, Any] | None = None, + ) -> Model: # type: ignore[name-defined] + ... + + @abstractmethod + def model_dump_json( # noqa: PLR0913 + self, + *, + indent: int | None = None, + include: IncEx = None, + exclude: IncEx = None, + context: dict[str, Any] | None = None, + by_alias: bool = False, + exclude_unset: bool = False, + exclude_defaults: bool = False, + exclude_none: bool = False, + round_trip: bool = False, + warnings: bool | Literal["none", "warn", "error"] = True, + serialize_as_any: bool = False, + ) -> str: ... + + @abstractmethod + def model_dump( # noqa: PLR0913 + self, + *, + mode: Literal["json", "python"] | str = "python", + include: IncEx = None, + exclude: IncEx = None, + context: dict[str, Any] | None = None, + by_alias: bool = False, + exclude_unset: bool = False, + exclude_defaults: bool = False, + exclude_none: bool = False, + round_trip: bool = False, + warnings: bool | Literal["none", "warn", "error"] = True, + serialize_as_any: bool = False, + ) -> dict[str, Any]: ... + + def __init_subclass__(cls): + """ + Sanity check. + """ + if not all(hasattr(cls, attr) for attr in cls._required_methods): + raise RuntimeError(f"Class {cls.__name__} should be inherited from ``pydantic.BaseModel``.") + + +class BaseModelDatabaseMixin[Model: BaseModel](ABC, _PydanticSanityCheck): # type: ignore[valid-type] + model: ClassVar[type[Base]] + + id: int + + @classmethod + async def count(cls, session: AsyncSession, /) -> int: + return await cls.model.count(session) + + @classmethod + async def get(cls, session: AsyncSession, id_: int, /) -> Self: + try: + obj: Base = await cls.model.get(session, id_) + except ModelDoesNotExistError as err: + logger.info( + "Model already exists", + extra={ + "id": id_, + "err": err, + }, + ) + raise ModelNotFoundError() from None + return cls.model_validate(obj) + + @classmethod + async def paginate( + cls, + session: AsyncSession, + /, + filter_params: FilterStatementKwargs | None = None, + ) -> Page[Model]: # type: ignore[name-defined] + if filter_params is None: + filter_params = FilterStatementKwargs( + offset=0, + limit=20, + ) + + statement: Select[tuple[Base]] = cls.model.get_filter_statement(filter_params) + return await paginate( + session, + statement, + ) + + @classmethod + async def create(cls, session: AsyncSession, data: BaseModel, /) -> Self: + try: + obj: Base = await cls.model.create(session, data) + except ModelAlreadyExistsError as err: + logger.info( + "Model already exists", + extra={ + "data": data.model_dump(), + "err": err, + }, + ) + raise ModelExistsError() from None + return cls.model_validate(obj) + + async def update(self, session: AsyncSession, data: BaseModel): + data_dict: dict[str, str] = data.to_dict(by_alias=False, reveal_secrets=True, exclude_unset=True) + obj: Base = await self.model.update(session, self.id, data_dict) + + updated: BaseModel = self.model_validate(obj) + for field in updated.model_fields_set: + val: Any = getattr(updated, field) + setattr(self, field, val) + + @classmethod + async def filter(cls, session: AsyncSession, kwargs: FilterStatementKwargs, /) -> list[Self]: + return [cls.model_validate(character) for character in await cls.model.filter(session, kwargs)] + + +class TokenBaseError(Exception): ... + + +class DecodedTokenError(TokenBaseError): ... + + +class BaseModelTokenMixin(ABC, _PydanticSanityCheck): + @staticmethod + def _get_payload(payload: dict, exp: datetime, /) -> dict: + cleaned_payload: dict = deepcopy(payload) + cleaned_payload.update( + { + "exp": exp, + } + ) + + return cleaned_payload + + def tokenize(self, exp: int, /, *, algorithm="HS256") -> str: + """Tokenizes the given model. + + Args: + exp (int): Expiration time in seconds. + algorithm (str): Tokenize algorithm. Default is HS256. + + Returns: + str: JWT. + """ + exp_time: datetime = datetime.now(UTC) + timedelta(seconds=exp) + payload = json.loads(self.model_dump_json(by_alias=True)) + return jwt.encode( + self._get_payload(payload, exp_time), + settings.secret_key, + algorithm=algorithm, + ) + + @classmethod + def decode(cls, token: str, /, *, algorithm="HS256"): + try: + token_: dict = jwt.decode(token, key=settings.secret_key, algorithms=[algorithm]) + except (ExpiredSignatureError, InvalidSignatureError, InvalidTokenError): + raise DecodedTokenError() from None + return cls(**token_) + + +class BaseModelTemplateMixin(ABC, _PydanticSanityCheck): + template_name: ClassVar[str] + + def get_context(self) -> dict: + return self.model_dump() + + def get_response( + self, + request: Request, + /, + *, + template_name: str | None = None, + ) -> _TemplateResponse: + if template_name is None: + template_name = self.template_name + + return templates.TemplateResponse( + request, + template_name, + context=self.get_context(), + ) + + @classmethod + @abstractmethod + async def from_request(cls, session: AsyncSession, request: Request, /) -> Self: ... diff --git a/app/middlewares/__init__.py b/futuramaapi/repositories/__init__.py similarity index 100% rename from app/middlewares/__init__.py rename to futuramaapi/repositories/__init__.py diff --git a/futuramaapi/repositories/base.py b/futuramaapi/repositories/base.py new file mode 100644 index 0000000..d6f6268 --- /dev/null +++ b/futuramaapi/repositories/base.py @@ -0,0 +1,264 @@ +import logging +from collections.abc import Sequence +from enum import Enum +from typing import TYPE_CHECKING, Any, Literal, NamedTuple, Self +from uuid import UUID, uuid4 + +from asyncpg.exceptions import UniqueViolationError +from sqlalchemy import UUID as COLUMN_UUID +from sqlalchemy import Column, DateTime, Row, Select, select +from sqlalchemy.exc import IntegrityError, NoResultFound +from sqlalchemy.ext.asyncio.session import AsyncSession +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column +from sqlalchemy.orm.attributes import InstrumentedAttribute +from sqlalchemy.orm.strategy_options import Load +from sqlalchemy.sql import func +from sqlalchemy.sql.elements import BinaryExpression, UnaryExpression + +from futuramaapi.helpers.pydantic import BaseModel + +if TYPE_CHECKING: + from sqlalchemy.engine.result import Result + +logger = logging.getLogger(__name__) + + +class ModelBaseError(Exception): ... + + +class ModelDoesNotExistError(ModelBaseError): ... + + +class ModelAlreadyExistsError(ModelBaseError): ... + + +class ModelFieldError(ModelBaseError): ... + + +class FilterStatementKwargs(NamedTuple): + offset: int | None = None + limit: int | None = None + order_by: str | None = "id" + order_by_direction: Literal["asc", "desc"] = "asc" + extra: dict | None = None + + +class Base(DeclarativeBase): + __abstract__ = True + + negation: str = "!" + + id: Mapped[int] = mapped_column(primary_key=True) + + created_at = Column( + DateTime( + timezone=True, + ), + server_default=func.now(), + nullable=False, + ) + uuid = Column( + COLUMN_UUID( + as_uuid=True, + ), + primary_key=False, + unique=True, + nullable=False, + default=uuid4, + ) + + order_by_direction: Literal["asc", "desc"] = "asc" + + @classmethod + async def count(cls, session: AsyncSession, /) -> int: + cursor: Result = await session.execute(func.count(cls.id)) + return cursor.scalar() + + @staticmethod + def get_select_in_load() -> list[Load]: + return [] + + @classmethod + def get_options(cls) -> list[Load]: + return [*cls.get_select_in_load()] + + @classmethod + def get_cond_list(cls, **kwargs) -> list[BinaryExpression]: + return [] + + @classmethod + async def get( + cls, + session: AsyncSession, + val: int | str | UUID, + /, + *, + field: InstrumentedAttribute | None = None, + ) -> Self: + options: list[Load] = cls.get_options() + if field is None: + field = cls.id + + statement: Select = select(cls).where(field == val) + if options: + statement = statement.options(*options) + + cursor: Result = await session.execute(statement) + try: + return cursor.scalars().one() + except NoResultFound as err: + raise ModelDoesNotExistError() from err + + @classmethod + async def get_or_none( + cls, + session: AsyncSession, + val: int | str | UUID, + /, + field: InstrumentedAttribute | None = None, + ) -> Self | None: + try: + return await cls.get(session, val, field=field) + except ModelDoesNotExistError: + return None + + @classmethod + def get_order_by( + cls, + *, + field_name: str | None = None, + direction: Literal["asc", "desc"] = "asc", + ) -> UnaryExpression: + field: InstrumentedAttribute + if field_name is None: + field = cls.id + else: + field = cls.__table__.c[field_name.lower()] + + if direction == "desc": + return field.desc() + return field.asc() + + @classmethod + def get_filter_statement( + cls, + kwargs: FilterStatementKwargs, + /, + ) -> Select[tuple[Self]]: + statement: Select[tuple[Base]] = select(cls) + statement = statement.order_by( + cls.get_order_by( + field_name=kwargs.order_by, + direction=kwargs.order_by_direction, + ) + ) + + cond_list: list = [] + if kwargs.extra is not None: + cond_list = cls.get_cond_list(**kwargs.extra) + if cond_list: + statement = statement.where(*cond_list) + options: list[Load] = cls.get_options() + if options: + statement = statement.options(*options) + if kwargs.offset is not None: + statement = statement.offset(kwargs.offset) + if kwargs.limit is not None: + statement = statement.limit(kwargs.limit) + return statement + + @classmethod + def get_binary_cond(cls, field: Column[str | Enum], value: str, /) -> BinaryExpression: + if value.startswith(cls.negation): + return field != value[1:] + + return field == value + + @classmethod + async def create( + cls, + session: AsyncSession, + data: BaseModel, + /, + *, + commit: bool = True, + extra_fields: dict[ + str, + Any, + ] + | None = None, + ) -> Self: + obj: Self = cls(**data.to_dict(by_alias=False, reveal_secrets=True)) + if extra_fields is not None: + for name, value in extra_fields.items(): + setattr(obj, name, value) + session.add(obj) + if commit is True: + try: + await session.commit() + except IntegrityError as err: + if err.orig.sqlstate == UniqueViolationError.sqlstate: + raise ModelAlreadyExistsError() from None + await session.rollback() + raise + return obj + + @classmethod + def validate_field(cls, field: str, value: Any, /) -> None: + try: + field_: InstrumentedAttribute = getattr(cls, field) + except AttributeError as err: + logger.exception( + "Field does not exist.", + extra={ + "data": { + "field": field, + "err": err, + "model": cls, + } + }, + ) + raise ModelFieldError() from None + if field_.nullable is False and value is None: + logger.exception( + "Attempt to assign None to non nullable field.", + extra={ + "data": { + "field": field, + "model": cls, + } + }, + ) + raise ModelFieldError() from None + + @classmethod + async def update( + cls, + session: AsyncSession, + id_: int, + data: dict, + /, + ) -> Self: + try: + obj: Self = await cls.get(session, id_) + except ModelDoesNotExistError: + raise + + for field, value in data.items(): + if value is not None: + setattr(obj, field, value) + + await session.commit() + + return obj + + @classmethod + async def filter( + cls, + session: AsyncSession, + kwargs: FilterStatementKwargs, + /, + ) -> Sequence[Row[tuple[Any, ...] | Any]]: + statement = cls.get_filter_statement(kwargs) + cursor: Result = await session.execute(statement) + return cursor.scalars().all() diff --git a/alembic/README b/futuramaapi/repositories/migrations/README similarity index 100% rename from alembic/README rename to futuramaapi/repositories/migrations/README diff --git a/app/repositories/__init__.py b/futuramaapi/repositories/migrations/__init__.py similarity index 100% rename from app/repositories/__init__.py rename to futuramaapi/repositories/migrations/__init__.py diff --git a/alembic/env.py b/futuramaapi/repositories/migrations/env.py similarity index 93% rename from alembic/env.py rename to futuramaapi/repositories/migrations/env.py index 4f8e26c..9e0a565 100644 --- a/alembic/env.py +++ b/futuramaapi/repositories/migrations/env.py @@ -1,14 +1,14 @@ import asyncio from logging.config import fileConfig +from alembic import context from sqlalchemy import pool from sqlalchemy.engine import Connection from sqlalchemy.ext.asyncio import async_engine_from_config -from alembic import context -from app.core import settings -from app.repositories import models # noqa: F401, do not remove. -from app.repositories.base import Base +from futuramaapi.core import settings +from futuramaapi.repositories import models # noqa: F401, do not remove. +from futuramaapi.repositories.base import Base # this is the Alembic Config object, which provides # access to the values within the .ini file in use. diff --git a/alembic/script.py.mako b/futuramaapi/repositories/migrations/script.py.mako similarity index 100% rename from alembic/script.py.mako rename to futuramaapi/repositories/migrations/script.py.mako diff --git a/alembic/versions/1353be8a56b8_initial_project_structure.py b/futuramaapi/repositories/migrations/versions/1353be8a56b8_initial_project_structure.py similarity index 100% rename from alembic/versions/1353be8a56b8_initial_project_structure.py rename to futuramaapi/repositories/migrations/versions/1353be8a56b8_initial_project_structure.py index c1d72f3..2f4fc4e 100644 --- a/alembic/versions/1353be8a56b8_initial_project_structure.py +++ b/futuramaapi/repositories/migrations/versions/1353be8a56b8_initial_project_structure.py @@ -4,12 +4,12 @@ Revises: d413d1284339 Create Date: 2023-12-02 18:33:01.171361 """ + from collections.abc import Sequence import sqlalchemy as sa -from sqlalchemy.dialects import postgresql - from alembic import op +from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision: str = "1353be8a56b8" diff --git a/alembic/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py b/futuramaapi/repositories/migrations/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py similarity index 100% rename from alembic/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py rename to futuramaapi/repositories/migrations/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py index b420ea5..a1936da 100644 --- a/alembic/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py +++ b/futuramaapi/repositories/migrations/versions/1b86ee33d1ba_add_broadcast_number_to_episode.py @@ -4,10 +4,10 @@ Revises: c03e060df1b8 Create Date: 2023-12-21 21:57:04.032458 """ + from collections.abc import Sequence import sqlalchemy as sa - from alembic import op # revision identifiers, used by Alembic. diff --git a/alembic/versions/928d4358646c_add_image_field.py b/futuramaapi/repositories/migrations/versions/928d4358646c_add_image_field.py similarity index 95% rename from alembic/versions/928d4358646c_add_image_field.py rename to futuramaapi/repositories/migrations/versions/928d4358646c_add_image_field.py index 73b3652..de3144d 100644 --- a/alembic/versions/928d4358646c_add_image_field.py +++ b/futuramaapi/repositories/migrations/versions/928d4358646c_add_image_field.py @@ -4,14 +4,15 @@ Revises: 1353be8a56b8 Create Date: 2023-12-08 20:58:59.382849 """ + from collections.abc import Sequence import sqlalchemy as sa +from alembic import op from fastapi_storages import FileSystemStorage from fastapi_storages.integrations.sqlalchemy import ImageType -from alembic import op -from app.core import settings +from futuramaapi.core import settings # revision identifiers, used by Alembic. revision: str = "928d4358646c" diff --git a/app/repositories/tests/__init__.py b/futuramaapi/repositories/migrations/versions/__init__.py similarity index 100% rename from app/repositories/tests/__init__.py rename to futuramaapi/repositories/migrations/versions/__init__.py diff --git a/alembic/versions/c03e060df1b8_add_production_code_to_episode.py b/futuramaapi/repositories/migrations/versions/c03e060df1b8_add_production_code_to_episode.py similarity index 100% rename from alembic/versions/c03e060df1b8_add_production_code_to_episode.py rename to futuramaapi/repositories/migrations/versions/c03e060df1b8_add_production_code_to_episode.py index 190fb65..dc07e25 100644 --- a/alembic/versions/c03e060df1b8_add_production_code_to_episode.py +++ b/futuramaapi/repositories/migrations/versions/c03e060df1b8_add_production_code_to_episode.py @@ -4,10 +4,10 @@ Revises: 928d4358646c Create Date: 2023-12-21 20:12:27.108201 """ + from collections.abc import Sequence import sqlalchemy as sa - from alembic import op # revision identifiers, used by Alembic. diff --git a/alembic/versions/d413d1284339_initial_revision.py b/futuramaapi/repositories/migrations/versions/d413d1284339_initial_revision.py similarity index 99% rename from alembic/versions/d413d1284339_initial_revision.py rename to futuramaapi/repositories/migrations/versions/d413d1284339_initial_revision.py index 1484abe..ea24303 100644 --- a/alembic/versions/d413d1284339_initial_revision.py +++ b/futuramaapi/repositories/migrations/versions/d413d1284339_initial_revision.py @@ -4,6 +4,7 @@ Revises: Create Date: 2023-11-25 19:46:49.496715 """ + from collections.abc import Sequence revision: str = "d413d1284339" diff --git a/alembic/versions/ee5656c8dc7f_define_user_model.py b/futuramaapi/repositories/migrations/versions/ee5656c8dc7f_define_user_model.py similarity index 100% rename from alembic/versions/ee5656c8dc7f_define_user_model.py rename to futuramaapi/repositories/migrations/versions/ee5656c8dc7f_define_user_model.py index 2cfd326..ab5d552 100644 --- a/alembic/versions/ee5656c8dc7f_define_user_model.py +++ b/futuramaapi/repositories/migrations/versions/ee5656c8dc7f_define_user_model.py @@ -4,10 +4,10 @@ Revises: 1b86ee33d1ba Create Date: 2024-01-21 21:40:59.557432 """ + from collections.abc import Sequence import sqlalchemy as sa - from alembic import op revision: str = "ee5656c8dc7f" diff --git a/futuramaapi/repositories/models.py b/futuramaapi/repositories/models.py new file mode 100644 index 0000000..72ae71b --- /dev/null +++ b/futuramaapi/repositories/models.py @@ -0,0 +1,228 @@ +from enum import Enum + +from fastapi_storages import FileSystemStorage +from fastapi_storages.integrations.sqlalchemy import ImageType +from sqlalchemy import ( + VARCHAR, + Boolean, + Column, + Date, + ForeignKey, + Integer, + SmallInteger, +) +from sqlalchemy.dialects.postgresql import ENUM # TODO: engine agnostic. +from sqlalchemy.orm import Mapped, mapped_column, relationship, selectinload +from sqlalchemy.orm.strategy_options import Load +from sqlalchemy.sql.elements import BinaryExpression + +from futuramaapi.core import settings +from futuramaapi.repositories.base import Base + + +class SeasonModel(Base): + __tablename__ = "seasons" + + # Mappers + episodes: Mapped[list["EpisodeModel"]] = relationship( + back_populates="season", + ) + + @staticmethod + def get_select_in_load() -> list[Load]: + return [selectinload(SeasonModel.episodes)] + + +class EpisodeCharacterAssociationModel(Base): + __tablename__ = "episode_character_association" + + id = None + created_at = None + uuid = None + + episode_id: Mapped[int] = mapped_column( + ForeignKey("episodes.id"), + primary_key=True, + ) + character_id: Mapped[int] = mapped_column( + ForeignKey("characters.id"), + primary_key=True, + ) + + +class EpisodeModel(Base): + __tablename__ = "episodes" + + name = Column( + VARCHAR( + length=128, + ), + nullable=True, + ) + air_date = Column( + Date(), + nullable=True, + ) + duration = Column( + Integer, + nullable=True, + ) + production_code = Column( + VARCHAR( + length=8, + ), + nullable=True, + ) + broadcast_number = Column( + SmallInteger, + nullable=True, + ) + + # Mappers + season_id: Mapped[int] = mapped_column( + ForeignKey("seasons.id"), + ) + season: Mapped["SeasonModel"] = relationship( + back_populates="episodes", + ) + + characters: Mapped[list["CharacterModel"]] = relationship( + secondary="episode_character_association", + back_populates="episodes", + ) + + @staticmethod + def get_select_in_load() -> list[Load]: + return [selectinload(EpisodeModel.season)] + + +class CharacterModel(Base): + __tablename__ = "characters" + + class CharacterSpecies(Enum): + HUMAN = "HUMAN" + ROBOT = "ROBOT" + HEAD = "HEAD" + ALIEN = "ALIEN" + MUTANT = "MUTANT" + MONSTER = "MONSTER" + UNKNOWN = "UNKNOWN" + + class CharacterStatus(Enum): + ALIVE = "ALIVE" + DEAD = "DEAD" + UNKNOWN = "UNKNOWN" + + class CharacterGender(Enum): + MALE = "MALE" + FEMALE = "FEMALE" + UNKNOWN = "UNKNOWN" + + name = Column( + VARCHAR( + length=128, + ), + nullable=False, + ) + status = Column( + ENUM( + CharacterStatus, + ), + nullable=False, + ) + gender = Column( + ENUM( + CharacterGender, + ), + nullable=False, + ) + species = Column( + ENUM( + CharacterSpecies, + ), + nullable=False, + ) + image = Column( + ImageType( + storage=FileSystemStorage(path=settings.project_root / settings.static), + ), + ) + + # Mappers + episodes: Mapped[list["EpisodeModel"]] = relationship( + secondary="episode_character_association", + back_populates="characters", + ) + + @classmethod + def get_cond_list(cls, **kwargs) -> list[BinaryExpression]: + gender: str | None = kwargs.get("gender") + status: str | None = kwargs.get("status") + species: str | None = kwargs.get("species") + query: str | None = kwargs.get("query") + + cond_list = [] + if gender is not None: + gender = gender.upper() + cond_list.append(cls.get_binary_cond(cls.gender, gender)) + if status is not None: + status = status.upper() + cond_list.append(cls.get_binary_cond(cls.status, status)) + if species is not None: + species = species.upper() + cond_list.append(cls.get_binary_cond(cls.species, species)) + + if query is not None: + cond_list.append(cls.name.ilike(f"%{query.lower()}%")) + return cond_list + + +class UserModel(Base): + __tablename__ = "users" + + name = Column( + VARCHAR( + length=64, + ), + nullable=False, + ) + surname = Column( + VARCHAR( + length=64, + ), + nullable=False, + ) + middle_name = Column( + VARCHAR( + length=64, + ), + nullable=True, + ) + email = Column( + VARCHAR( + length=320, + ), + nullable=False, + unique=True, + ) + username = Column( + VARCHAR( + length=64, + ), + nullable=False, + unique=True, + ) + password = Column( + VARCHAR( + length=128, + ), + nullable=False, + ) + is_confirmed = Column( + Boolean, + default=False, + ) + is_subscribed = Column( + Boolean, + default=True, + ) diff --git a/futuramaapi/repositories/session.py b/futuramaapi/repositories/session.py new file mode 100644 index 0000000..b7fc1d5 --- /dev/null +++ b/futuramaapi/repositories/session.py @@ -0,0 +1,69 @@ +from collections.abc import AsyncIterator +from contextlib import asynccontextmanager +from typing import Any + +from pydantic import PostgresDsn +from sqlalchemy.ext.asyncio import AsyncConnection, AsyncEngine, AsyncSession, async_sessionmaker, create_async_engine + +from futuramaapi.core import settings + + +class SessionManager: + def __init__(self, host: PostgresDsn, /, *, kwargs: dict[str, Any] | None = None) -> None: + if kwargs is None: + kwargs = {} + + self.engine: AsyncEngine | None = create_async_engine(str(host), **kwargs) + self._session_maker: async_sessionmaker[AsyncSession] | None = async_sessionmaker( + autocommit=False, + bind=self.engine, + expire_on_commit=False, + ) + + async def close(self) -> None: + if self.engine is None: + raise Exception("DatabaseSessionManager is not initialized") + + await self.engine.dispose() + + self.engine = None + self._session_maker = None + + @asynccontextmanager + async def connect(self) -> AsyncIterator[AsyncConnection]: + if self.engine is None: + raise RuntimeError("DatabaseSessionManager is not initialized") + + async with self.engine.begin() as connection: + try: + yield connection + except Exception: + await connection.rollback() + raise + + @asynccontextmanager + async def session(self) -> AsyncIterator[AsyncSession]: + if self._session_maker is None: + raise Exception("DatabaseSessionManager is not initialized") + + session = self._session_maker() + try: + yield session + except Exception: + await session.rollback() + raise + finally: + await session.close() + + +session_manager: SessionManager = SessionManager( + settings.database_url, + kwargs={ + "echo": True, + }, +) + + +async def get_async_session(): + async with session_manager.session() as session: + yield session diff --git a/futuramaapi/routers/__init__.py b/futuramaapi/routers/__init__.py new file mode 100644 index 0000000..083141e --- /dev/null +++ b/futuramaapi/routers/__init__.py @@ -0,0 +1,27 @@ +from fastapi import APIRouter + +from .callbacks import router as callbacks_router +from .characters import router as characters_router +from .episodes import router as episodes_router +from .graphql import router as graphql_router +from .notifications import router as notification_router +from .root import router as root_router +from .seasons import router as seasons_router +from .tokens import router as tokens_router +from .users import router as users_router + +__all__ = [ + "api_router", + "graphql_router", + "root_router", +] + +api_router = APIRouter(prefix="/api") + +api_router.include_router(callbacks_router) +api_router.include_router(characters_router) +api_router.include_router(episodes_router) +api_router.include_router(notification_router) +api_router.include_router(seasons_router) +api_router.include_router(tokens_router) +api_router.include_router(users_router) diff --git a/futuramaapi/routers/callbacks/__init__.py b/futuramaapi/routers/callbacks/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/callbacks/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/app/routers/callbacks.py b/futuramaapi/routers/callbacks/api.py similarity index 77% rename from app/routers/callbacks.py rename to futuramaapi/routers/callbacks/api.py index be2ab7e..10454e2 100644 --- a/app/routers/callbacks.py +++ b/futuramaapi/routers/callbacks/api.py @@ -1,19 +1,21 @@ from fastapi import APIRouter, BackgroundTasks, Depends, status from sqlalchemy.ext.asyncio.session import AsyncSession -from app.repositories.sessions import get_async_session -from app.services.callbacks import ( +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.callbacks.schemas import Character +from futuramaapi.routers.episodes.schemas import Episode +from futuramaapi.routers.seasons.schemas import Season + +from .schemas import ( + CallbackObjectResponse, CallbackRequest, CallbackResponse, - CharacterCallbackResponse, - EpisodeCallbackResponse, - SeasonCallbackResponse, - process_characters_callback, - process_episodes_callback, - process_seasons_callback, ) -router = APIRouter(prefix="/callbacks") +router = APIRouter( + prefix="/callbacks", + tags=["callbacks"], +) _characters_callbacks_router = APIRouter() @@ -23,7 +25,7 @@ status_code=status.HTTP_200_OK, ) def character_callback( - body: CharacterCallbackResponse, + body: CallbackObjectResponse, ): """Request to the provided callback URL.""" @@ -37,7 +39,7 @@ def character_callback( ) async def create_characters_callback_request( character_id: int, - character_request: CallbackRequest, + request: CallbackRequest, background_tasks: BackgroundTasks, session: AsyncSession = Depends(get_async_session), # noqa: B008 ) -> CallbackResponse: @@ -49,7 +51,7 @@ async def create_characters_callback_request( * Receive a delay after which the callback will be sent. * Receive a notification back to the API, as a callback. """ - return await process_characters_callback(character_id, character_request, session, background_tasks) + return await CallbackResponse.process(session, Character, request, character_id, background_tasks) _episodes_callbacks_router = APIRouter() @@ -60,7 +62,7 @@ async def create_characters_callback_request( status_code=status.HTTP_200_OK, ) def episodes_callback( - body: EpisodeCallbackResponse, + body: CallbackObjectResponse, ): """Request to the provided callback URL.""" @@ -74,7 +76,7 @@ def episodes_callback( ) async def create_episodes_callback_request( episode_id: int, - episode_request: CallbackRequest, + request: CallbackRequest, background_tasks: BackgroundTasks, session: AsyncSession = Depends(get_async_session), # noqa: B008 ) -> CallbackResponse: @@ -86,7 +88,7 @@ async def create_episodes_callback_request( * Receive a delay after which the callback will be sent. * Receive a notification back to the API, as a callback. """ - return await process_episodes_callback(episode_id, episode_request, session, background_tasks) + return await CallbackResponse.process(session, Episode, request, episode_id, background_tasks) # Season related endpoints. @@ -98,7 +100,7 @@ async def create_episodes_callback_request( status_code=status.HTTP_200_OK, ) def seasons_callback( - body: SeasonCallbackResponse, + body: CallbackObjectResponse, ): """Request to the provided callback URL.""" @@ -112,7 +114,7 @@ def seasons_callback( ) async def create_seasons_callback_request( season_id: int, - season_request: CallbackRequest, + request: CallbackRequest, background_tasks: BackgroundTasks, session: AsyncSession = Depends(get_async_session), # noqa: B008 ) -> CallbackResponse: @@ -124,4 +126,4 @@ async def create_seasons_callback_request( * Receive a delay after which the callback will be sent. * Receive a notification back to the API, as a callback. """ - return await process_seasons_callback(season_id, season_request, session, background_tasks) + return await CallbackResponse.process(session, Season, request, season_id, background_tasks) diff --git a/futuramaapi/routers/callbacks/schemas.py b/futuramaapi/routers/callbacks/schemas.py new file mode 100644 index 0000000..0222606 --- /dev/null +++ b/futuramaapi/routers/callbacks/schemas.py @@ -0,0 +1,118 @@ +from asyncio import sleep +from random import randint +from typing import Literal, Self + +from fastapi import BackgroundTasks, HTTPException +from httpx import AsyncClient, Response +from pydantic import Field, HttpUrl +from sqlalchemy.ext.asyncio.session import AsyncSession + +from futuramaapi.helpers.pydantic import BaseModel +from futuramaapi.routers.characters.schemas import Character +from futuramaapi.routers.episodes.schemas import Episode +from futuramaapi.routers.seasons.schemas import Season + +MIN_DELAY: int = 5 +MAX_DELAY: int = 10 + + +class DoesNotExist(BaseModel): + id: int = Field( + description="Requested Object ID.", + ) + detail: str = Field( + "Not found", + examples=[ + "Not found", + ], + ) + + +class CallbackObjectResponse(BaseModel): + # Can't use type even with noqa: A003, cause native type is being used for a arg typing below. + kind: Literal["Character", "Episode", "Season"] = Field( + alias="type", + description="Requested Object type.", + ) + item: Character | Episode | Season | DoesNotExist + + @classmethod + async def from_item( + cls, + session: AsyncSession, + requested_object: type[Character | Episode | Season], + id_: int, + /, + ) -> Self: + item: Character | Episode | Season | DoesNotExist + try: + item = await requested_object.get(session, id_) + except HTTPException: + item = DoesNotExist( + id=id_, + ) + return cls( + kind=requested_object.__name__, + item=item, + ) + + async def send_callback(self, url: HttpUrl, /) -> None: + async with AsyncClient(http2=True) as client: + callback_response: Response = await client.post( + f"{url}", + json=self.to_dict(), + ) + callback_response.raise_for_status() + + +class CallbackRequest(BaseModel): + callback_url: HttpUrl + + +class CallbackResponse(BaseModel): + @staticmethod + def _generate_random_delay() -> int: + return randint(MIN_DELAY, MAX_DELAY) # noqa: S311 + + delay: int = Field( + default_factory=_generate_random_delay, + ge=MIN_DELAY, + le=MAX_DELAY, + description="Delay after which the callback will be sent.", + ) + + async def process_background_task( + self, + session: AsyncSession, + requested_object: type[Character | Episode | Season], + request: CallbackRequest, + id_: int, + /, + ) -> None: + await sleep(self.delay) + callback_response: CallbackObjectResponse = await CallbackObjectResponse.from_item( + session, + requested_object, + id_, + ) + await callback_response.send_callback(request.callback_url) + + @classmethod + async def process( # noqa: PLR0913 + cls, + session: AsyncSession, + requested_object: type[Character | Episode | Season], + request: CallbackRequest, + id_: int, + background_tasks: BackgroundTasks, + /, + ) -> Self: + response: Self = cls() + background_tasks.add_task( + response.process_background_task, + session, + requested_object, + request, + id_, + ) + return response diff --git a/futuramaapi/routers/characters/__init__.py b/futuramaapi/routers/characters/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/characters/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/app/routers/characters.py b/futuramaapi/routers/characters/api.py similarity index 52% rename from app/routers/characters.py rename to futuramaapi/routers/characters/api.py index 21b83e4..4c91938 100644 --- a/app/routers/characters.py +++ b/futuramaapi/routers/characters/api.py @@ -1,31 +1,29 @@ -from typing import Annotated +from typing import Annotated, Literal -from fastapi import APIRouter, Depends, Query, status +from fastapi import APIRouter, Depends, HTTPException, Query, status from fastapi_pagination import Page from sqlalchemy.ext.asyncio.session import AsyncSession -from app.repositories.base import OrderByDirection -from app.repositories.models import ( - Character as CharacterModel, -) -from app.repositories.models import ( - CharacterGenderFilter, - CharacterSpeciesFilter, - CharacterStatusFilter, -) -from app.repositories.sessions import get_async_session -from app.services.characters import ( - Character, - process_get_character, - process_get_characters, -) +from futuramaapi.repositories.base import FilterStatementKwargs +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelNotFoundError, NotFoundResponse -router = APIRouter(prefix="/characters") +from .schemas import Character + +router = APIRouter( + prefix="/characters", + tags=["characters"], +) @router.get( "/{character_id}", status_code=status.HTTP_200_OK, + responses={ + status.HTTP_404_NOT_FOUND: { + "model": NotFoundResponse, + }, + }, response_model=Character, name="character", ) @@ -42,7 +40,10 @@ async def get_character( Can be used to utilize this endpoint to obtain in-depth insights into a particular character from the Futurama universe. """ - return await process_get_character(character_id, session) + try: + return await Character.get(session, character_id) + except ModelNotFoundError: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) from None @router.get( @@ -52,20 +53,52 @@ async def get_character( name="characters", ) async def get_characters( # noqa: PLR0913 - gender: CharacterGenderFilter | None = None, + gender: Literal[ + "male", + "!male", + "female", + "!female", + "unknown", + "!unknown", + ] + | None = None, character_status: Annotated[ - CharacterStatusFilter | None, + Literal[ + "alive", + "!alive", + "dead", + "!dead", + "unknown", + "!unknown", + ] + | None, Query(alias="status"), ] = None, - species: CharacterSpeciesFilter | None = None, + species: Literal[ + "human", + "!human", + "robot", + "!robot", + "head", + "!head", + "alien", + "!alien", + "mutant", + "!mutant", + "monster", + "!monster", + "unknown", + "!unknown", + ] + | None = None, order_by: Annotated[ - CharacterModel.order_by | None, + Literal["id"] | None, Query(alias="orderBy"), - ] = CharacterModel.order_by.ID, + ] = "id", direction: Annotated[ - OrderByDirection | None, + Literal["asc", "desc"], Query(alias="orderByDirection"), - ] = OrderByDirection.ASC, + ] = "asc", query: Annotated[ str | None, Query( @@ -87,12 +120,16 @@ async def get_characters( # noqa: PLR0913 `/api/characters/?gender=!unknown&status=!unknown&species=alien`. Check query Parameters to more info. """ - return await process_get_characters( + return await Character.paginate( session, - gender=gender, - character_status=character_status, - species=species, - order_by=order_by, - direction=direction, - query=query, + filter_params=FilterStatementKwargs( + order_by=order_by, + order_by_direction=direction, + extra={ + "gender": gender, + "species": species, + "status": character_status, + "query": query, + }, + ), ) diff --git a/futuramaapi/routers/characters/schemas.py b/futuramaapi/routers/characters/schemas.py new file mode 100644 index 0000000..036d310 --- /dev/null +++ b/futuramaapi/routers/characters/schemas.py @@ -0,0 +1,31 @@ +from datetime import datetime +from typing import ClassVar + +from fastapi_storages import StorageImage +from pydantic import HttpUrl, field_validator + +from futuramaapi.core import settings +from futuramaapi.helpers.pydantic import BaseModel +from futuramaapi.mixins.pydantic import BaseModelDatabaseMixin +from futuramaapi.repositories.models import CharacterModel + + +class Character(BaseModel, BaseModelDatabaseMixin): + model: ClassVar[type[CharacterModel]] = CharacterModel + + id: int + name: str + gender: CharacterModel.CharacterGender + status: CharacterModel.CharacterStatus + species: CharacterModel.CharacterSpecies + created_at: datetime + image: HttpUrl | None = None + + @field_validator("image", mode="before") + @classmethod + def make_url(cls, value: StorageImage | str | None, /) -> HttpUrl | None: + if value is None: + return None + if isinstance(value, StorageImage): + return settings.build_url(path=value._name) + return HttpUrl(value) diff --git a/futuramaapi/routers/episodes/__init__.py b/futuramaapi/routers/episodes/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/episodes/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/app/routers/episodes.py b/futuramaapi/routers/episodes/api.py similarity index 69% rename from app/routers/episodes.py rename to futuramaapi/routers/episodes/api.py index 4ef1f8f..b6098ca 100644 --- a/app/routers/episodes.py +++ b/futuramaapi/routers/episodes/api.py @@ -1,20 +1,26 @@ -from fastapi import APIRouter, Depends, status +from fastapi import APIRouter, Depends, HTTPException, status from fastapi_pagination import Page from sqlalchemy.ext.asyncio.session import AsyncSession -from app.repositories.sessions import get_async_session -from app.services.episodes import ( - Episode, - process_get_episode, - process_get_episodes, -) +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelNotFoundError, NotFoundResponse + +from .schemas import Episode -router = APIRouter(prefix="/episodes") +router = APIRouter( + prefix="/episodes", + tags=["episodes"], +) @router.get( "/{episode_id}", status_code=status.HTTP_200_OK, + responses={ + status.HTTP_404_NOT_FOUND: { + "model": NotFoundResponse, + }, + }, response_model=Episode, name="episode", ) @@ -31,7 +37,10 @@ async def get_episode( Can be used to get in-depth information about a particular episode of Futurama. """ - return await process_get_episode(episode_id, session) + try: + return await Episode.get(session, episode_id) + except ModelNotFoundError: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) from None @router.get( @@ -52,4 +61,4 @@ async def get_episodes( and other relevant details. It's particularly useful for those who want to explore the entire catalog of Futurama episodes or implement features such as episode browsing on your site. """ - return await process_get_episodes(session) + return await Episode.paginate(session) diff --git a/futuramaapi/routers/episodes/schemas.py b/futuramaapi/routers/episodes/schemas.py new file mode 100644 index 0000000..8487cf7 --- /dev/null +++ b/futuramaapi/routers/episodes/schemas.py @@ -0,0 +1,41 @@ +from datetime import date, datetime +from typing import ClassVar + +from pydantic import Field, computed_field + +from futuramaapi.helpers.pydantic import BaseModel +from futuramaapi.mixins.pydantic import BaseModelDatabaseMixin +from futuramaapi.repositories.models import EpisodeModel + + +class EpisodeBase(BaseModel, BaseModelDatabaseMixin): + model: ClassVar[type[EpisodeModel]] = EpisodeModel + + id: int + name: str + broadcast_number: int = Field(alias="number") + production_code: str = Field( + examples=[ + "1ACV01", + ], + ) + + +class Episode(EpisodeBase): + class Season(BaseModel): + id: int + + air_date: date | None + duration: int | None + created_at: datetime + season: Season + + @computed_field( # type: ignore[misc] + examples=[ + "S01E01", + ], + return_type=str, + ) + @property + def broadcast_code(self) -> str: + return f"S{self.season.id:02d}E{self.broadcast_number:02d}" diff --git a/futuramaapi/routers/exceptions.py b/futuramaapi/routers/exceptions.py new file mode 100644 index 0000000..c3e1eb9 --- /dev/null +++ b/futuramaapi/routers/exceptions.py @@ -0,0 +1,17 @@ +from pydantic import Field + +from futuramaapi.helpers.pydantic import BaseModel + + +class ModelNotFoundError(Exception): ... + + +class ModelExistsError(Exception): ... + + +class NotFoundResponse(BaseModel): + detail: str = Field("Not Found") + + +class UnauthorizedResponse(BaseModel): + detail: str = Field("Unauthorized") diff --git a/futuramaapi/routers/graphql/__init__.py b/futuramaapi/routers/graphql/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/graphql/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/futuramaapi/routers/graphql/api.py b/futuramaapi/routers/graphql/api.py new file mode 100644 index 0000000..6a1efef --- /dev/null +++ b/futuramaapi/routers/graphql/api.py @@ -0,0 +1,14 @@ +import strawberry +from strawberry.fastapi import GraphQLRouter + +from .dependencies import get_context +from .schemas import Query + +schema = strawberry.Schema(Query) + +router = GraphQLRouter( + schema, + path="/graphql", + context_getter=get_context, + include_in_schema=False, +) diff --git a/futuramaapi/routers/graphql/context.py b/futuramaapi/routers/graphql/context.py new file mode 100644 index 0000000..1854541 --- /dev/null +++ b/futuramaapi/routers/graphql/context.py @@ -0,0 +1,19 @@ +from fastapi import Depends +from sqlalchemy.ext.asyncio.session import AsyncSession +from strawberry.fastapi import BaseContext + +from futuramaapi.repositories.session import get_async_session + + +class Context(BaseContext): + def __init__(self, session: AsyncSession): + self.session: AsyncSession = session + + super().__init__() + + @classmethod + async def from_dependency( + cls, + session: AsyncSession = Depends(get_async_session), # noqa: B008 + ): + return cls(session) diff --git a/futuramaapi/routers/graphql/conversion.py b/futuramaapi/routers/graphql/conversion.py new file mode 100644 index 0000000..4b4625f --- /dev/null +++ b/futuramaapi/routers/graphql/conversion.py @@ -0,0 +1,136 @@ +""" +Actually wanted to move this code to ``futuramaapi.routers.graphql.mixins.StrawberryDatabaseMixin``, but happened +as happened, in this case there won't be a need to pass type, cls and so on. +""" + +from abc import ABC, abstractmethod +from functools import singledispatch +from typing import TYPE_CHECKING, Any, cast + +from fastapi_storages.base import StorageImage +from strawberry.enum import EnumDefinition +from strawberry.type import ( + StrawberryList, + StrawberryOptional, + has_object_definition, +) +from strawberry.union import StrawberryUnion + +from futuramaapi.core import settings +from futuramaapi.repositories.base import Base + +if TYPE_CHECKING: + from strawberry.field import StrawberryField + + +@singledispatch +def _convert( + type_: Any, + data: Any, + /, +): + if has_object_definition(type_): + if hasattr(type(data), "_strawberry_type"): + type_ = type(data)._strawberry_type + if hasattr(type_, "from_model"): + return type_.from_model(data) + return _convert(type_, data) + + if isinstance(data, StorageImage): + if data is None: + return None + + return settings.build_url(path=data._name) + + return data + + +@_convert.register +def _(type_: StrawberryOptional, data: Any, /): + if data is None: + return data + + return _convert(type_.of_type, data) + + +@_convert.register +def _(type_: StrawberryUnion, data: Any, /): + for option_type in type_.types: + if hasattr(option_type, "_pydantic_type"): + source_type = option_type._pydantic_type + else: + source_type = cast(type, option_type) + if isinstance(data, source_type): + return _convert(option_type, data) + + +@_convert.register +def _(type_: EnumDefinition, data: Any, /): + return data + + +@_convert.register +def _(type_: StrawberryList, data: Any, /) -> list: + items: list = [] + for item in data: + items.append(_convert(type_.of_type, item)) + + return items + + +class ConverterBase(ABC): + @staticmethod + @abstractmethod + def to_strawberry[S]( # type: ignore[valid-type] + cls: type[S], # type: ignore[name-defined] + model_instance: Base, + /, + ) -> S: # type: ignore[name-defined] + ... + + @staticmethod + @abstractmethod + def get_edges[S]( # type: ignore[valid-type] + cls: type[S], # type: ignore[name-defined] + model_instance: list[Base], + /, + ) -> S: # type: ignore[name-defined] + ... + + +class ModelConverter(ConverterBase): + @staticmethod + def to_strawberry[S]( # type: ignore[valid-type] + cls: type[S], # type: ignore[name-defined] + model_instance: Base, + /, + ) -> S: # type: ignore[name-defined] + kwargs: dict = {} + + field: StrawberryField + for field in cls.__strawberry_definition__.fields: + data: Any = getattr(model_instance, field.python_name, None) + if field.init: + kwargs[field.python_name] = _convert( + field.type, + data, + ) + + return cls(**kwargs) + + @staticmethod + def get_edges[S]( # type: ignore[valid-type] + cls: type[S], # type: ignore[name-defined] + data: list[Base], + /, + ) -> list[S] | None: # type: ignore[name-defined] + field: StrawberryField = next(f for f in cls.__strawberry_definition__.fields if f.python_name == "edges") + if field.init: + return _convert( + field.type, + data, + ) + return None + + +converter: ConverterBase = ModelConverter() diff --git a/futuramaapi/routers/graphql/dependencies.py b/futuramaapi/routers/graphql/dependencies.py new file mode 100644 index 0000000..5509a0e --- /dev/null +++ b/futuramaapi/routers/graphql/dependencies.py @@ -0,0 +1,9 @@ +from fastapi import Depends + +from .context import Context + + +async def get_context( + context: Context = Depends(Context.from_dependency), # noqa: B008 +) -> Context: + return context diff --git a/futuramaapi/routers/graphql/mixins.py b/futuramaapi/routers/graphql/mixins.py new file mode 100644 index 0000000..70c4f3e --- /dev/null +++ b/futuramaapi/routers/graphql/mixins.py @@ -0,0 +1,55 @@ +from typing import ClassVar, Self, cast + +from fastapi_storages.base import StorageImage +from sqlalchemy.ext.asyncio.session import AsyncSession +from strawberry.field import StrawberryField + +from futuramaapi.core import settings +from futuramaapi.repositories.base import Base, FilterStatementKwargs, ModelDoesNotExistError + +from .conversion import ConverterBase, converter + + +class StrawberryDatabaseMixin: + model: ClassVar[type[Base]] + + converter: ClassVar[ConverterBase] = converter + + @classmethod + def get_fields(cls) -> list[StrawberryField]: + return cls.__strawberry_definition__.fields # type: ignore[attr-defined] + + @staticmethod + def to_img(field: StorageImage | None, /) -> str | None: + if field is None: + return None + + return settings.build_url(path=field._name) + + @classmethod + def from_model(cls, instance: Base, /) -> Self: + return cls.converter.to_strawberry(cls, instance) + + @classmethod + async def get(cls, session: AsyncSession, id_: int, /) -> Self | None: + try: + obj: Base = await cls.model.get( + session, + id_, + ) + except ModelDoesNotExistError: + return None + + return cls.from_model(obj) + + @classmethod + async def paginate(cls, session: AsyncSession, kwargs: FilterStatementKwargs, /) -> Self: + total: int = await cls.model.count(session) + edges: list[Base] = cast(list[Base], await cls.model.filter(session, kwargs)) + + return cls( + limit=kwargs.limit, # type: ignore[call-arg] + offset=kwargs.offset, # type: ignore[call-arg] + total=total, # type: ignore[call-arg] + edges=cls.converter.get_edges(cls, edges), # type: ignore[call-arg] + ) diff --git a/futuramaapi/routers/graphql/schemas.py b/futuramaapi/routers/graphql/schemas.py new file mode 100644 index 0000000..72adec3 --- /dev/null +++ b/futuramaapi/routers/graphql/schemas.py @@ -0,0 +1,218 @@ +from datetime import date, datetime +from enum import StrEnum +from typing import Any, ClassVar + +import strawberry +from strawberry.types import Info + +from futuramaapi.repositories.base import Base, FilterStatementKwargs +from futuramaapi.repositories.models import CharacterModel, EpisodeModel, SeasonModel + +from .mixins import StrawberryDatabaseMixin +from .validators import LimitsRule + + +@strawberry.type +class PageBase(StrawberryDatabaseMixin): + limit: int + offset: int + total: int + edges: list[Any] + + +@strawberry.type +class Character(StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = CharacterModel + + id: int + name: str + status: strawberry.enum(CharacterModel.CharacterStatus) # type: ignore[valid-type] + gender: strawberry.enum(CharacterModel.CharacterGender) # type: ignore[valid-type] + species: strawberry.enum(CharacterModel.CharacterSpecies) # type: ignore[valid-type] + image: str | None + + +@strawberry.type +class Characters(PageBase, StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = CharacterModel + + edges: list[Character] + + +@strawberry.type +class Episode(StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = EpisodeModel + + @strawberry.type + class SeasonEpisode(StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = SeasonModel + + id: int + + id: int + air_date: date | None + duration: int | None + created_at: datetime + season: SeasonEpisode + + +@strawberry.type +class Episodes(PageBase, StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = EpisodeModel + + edges: list[Episode] + + +@strawberry.type +class Season(StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = SeasonModel + + @strawberry.type + class EpisodeSeason(StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = EpisodeModel + + id: int + air_date: date | None + duration: int | None + created_at: datetime + + id: int + episodes: list[EpisodeSeason] + + +@strawberry.type +class Seasons(PageBase, StrawberryDatabaseMixin): + model: ClassVar[type[Base]] = SeasonModel + + edges: list[Season] + + +@strawberry.type +class Query: + @strawberry.enum + class GenderFilter(StrEnum): + male = "male" + not_male = "!male" + female = "female" + not_femail = "!female" + unknown = "unknown" + not_unknown = "!unknown" + + @strawberry.enum + class StatusFilter(StrEnum): + alive = "alive" + not_alive = "!alive" + dead = "dead" + not_dead = "!dead" + unknown = "unknown" + not_unknown = "!unknown" + + @strawberry.enum + class SpeciesFilter(StrEnum): + human = "human" + not_human = "!human" + robot = "robot" + not_robot = "!robot" + head = "head" + not_head = "!head" + alien = "alien" + not_alien = "!alien" + mutant = "mutant" + not_mutant = "!mutant" + monster = "monster" + not_monster = "!monster" + unknown = "unknown" + not_unknown = "!unknown" + + @strawberry.field() + async def character( + self, + info: Info, + character_id: int, + /, + ) -> Character | None: + return await Character.get(info.context.session, character_id) + + @strawberry.field( + extensions=[ + LimitsRule(), + ], + ) + async def characters( # noqa: PLR0913 + self, + info: Info, + /, + *, + limit: int | None = 50, + offset: int | None = 0, + gender: GenderFilter | None = None, + status: StatusFilter | None = None, + species: SpeciesFilter | None = None, + ) -> Characters: + kwargs: FilterStatementKwargs = FilterStatementKwargs( + offset=offset, + limit=limit, + extra={ + "gender": gender, + "species": species, + "status": status, + }, + ) + + return await Characters.paginate(info.context.session, kwargs) + + @strawberry.field() + async def episode( + self, + info: Info, + episode_id: int, + /, + ) -> Episode | None: + return await Episode.get(info.context.session, episode_id) + + @strawberry.field( + extensions=[ + LimitsRule(), + ], + ) + async def episodes( + self, + info: Info, + *, + limit: int | None = 50, + offset: int | None = 0, + ) -> Episodes: + kwargs: FilterStatementKwargs = FilterStatementKwargs( + offset=offset, + limit=limit, + ) + + return await Episodes.paginate(info.context.session, kwargs) + + @strawberry.field() + async def season( + self, + info: Info, + season_id: int, + /, + ) -> Season | None: + return await Season.get(info.context.session, season_id) + + @strawberry.field( + extensions=[ + LimitsRule(), + ], + ) + async def seasons( + self, + info: Info, + *, + limit: int | None = 50, + offset: int | None = 0, + ) -> Seasons: + kwargs: FilterStatementKwargs = FilterStatementKwargs( + offset=offset, + limit=limit, + ) + + return await Seasons.paginate(info.context.session, kwargs) diff --git a/futuramaapi/routers/graphql/validators.py b/futuramaapi/routers/graphql/validators.py new file mode 100644 index 0000000..13e96e9 --- /dev/null +++ b/futuramaapi/routers/graphql/validators.py @@ -0,0 +1,26 @@ +from typing import Any + +from strawberry import Info +from strawberry.extensions.field_extension import AsyncExtensionResolver, FieldExtension + + +class LimitsRule(FieldExtension): + @staticmethod + def validate_range(name: str, value: int, min_: int, max_: int, /) -> None: + if not min_ <= value <= max_: + raise ValueError(f"{name} can be more than {min_} and less than {max_}") from None + + def validate_limits(self, kwargs: dict): + for limit in ["limit", "offset"]: + self.validate_range(limit, kwargs[limit], 0, 50) + + async def resolve_async( + self, + next_: AsyncExtensionResolver, + source: Any, + info: Info, + **kwargs, + ): + self.validate_limits(kwargs) + + return await next_(source, info, **kwargs) diff --git a/futuramaapi/routers/notifications/__init__.py b/futuramaapi/routers/notifications/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/notifications/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/app/routers/notifications.py b/futuramaapi/routers/notifications/api.py similarity index 58% rename from app/routers/notifications.py rename to futuramaapi/routers/notifications/api.py index 2942789..e8031f8 100644 --- a/app/routers/notifications.py +++ b/futuramaapi/routers/notifications/api.py @@ -1,12 +1,15 @@ -from fastapi import APIRouter, Depends, Request, status +from fastapi import APIRouter, Depends, HTTPException, Request, status from sqlalchemy.ext.asyncio.session import AsyncSession from sse_starlette.sse import EventSourceResponse -from app.repositories.sessions import get_async_session -from app.services.notifications import CharacterMove, process_character_sse +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelNotFoundError + +from .schemas import CharacterNotification router = APIRouter( prefix="/notifications", + tags=["notifications"], ) @@ -15,7 +18,7 @@ response_class=EventSourceResponse, responses={ status.HTTP_200_OK: { - "model": CharacterMove, + "model": CharacterNotification, } }, status_code=status.HTTP_200_OK, @@ -33,4 +36,10 @@ async def character_sse( It facilitates real-time updates on character path. Exercise caution when using this endpoint to ensure responsible and accurate data retrieval. """ - return await process_character_sse(character_id, request, session) + try: + return await CharacterNotification.from_request(character_id, request, session) + except ModelNotFoundError: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Character with id={character_id} not found", + ) from None diff --git a/futuramaapi/routers/notifications/schemas.py b/futuramaapi/routers/notifications/schemas.py new file mode 100644 index 0000000..87cec79 --- /dev/null +++ b/futuramaapi/routers/notifications/schemas.py @@ -0,0 +1,57 @@ +from asyncio import sleep +from datetime import datetime +from random import randint + +from fastapi import Request +from pydantic import Field +from sqlalchemy.ext.asyncio.session import AsyncSession +from sse_starlette import EventSourceResponse, ServerSentEvent + +from futuramaapi.helpers.pydantic import BaseModel +from futuramaapi.routers.characters.schemas import Character + +MIN_COORDINATE: int = 0 +MAX_COORDINATE: int = 2**6 + + +class CharacterNotification(BaseModel): + class Notification(BaseModel): + time: datetime = Field(default_factory=datetime.now) + x: int = Field( + description="Character X coordinate", + ge=MIN_COORDINATE, + le=MAX_COORDINATE, + ) + y: int = Field( + description="Character Y coordinate", + ge=MIN_COORDINATE, + le=MAX_COORDINATE, + ) + + item: Character + notification: Notification + + @classmethod + async def get_move(cls, request: Request, character: Character, /): + while True: + if await request.is_disconnected(): + # Can be removed. Do not trust lib, force connection close. + break + + yield ServerSentEvent( + data=cls( + item=character, + notification=cls.Notification( + x=randint(MIN_COORDINATE, MAX_COORDINATE), # noqa: S311 + y=randint(MIN_COORDINATE, MAX_COORDINATE), # noqa: S311 + ), + ).model_dump() + ) + await sleep( + randint(1, 3), # noqa: S311 + ) + + @classmethod + async def from_request(cls, id_: int, request: Request, session: AsyncSession, /): + character: Character = await Character.get(session, id_) + return EventSourceResponse(cls.get_move(request, character)) diff --git a/futuramaapi/routers/root/__init__.py b/futuramaapi/routers/root/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/root/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/futuramaapi/routers/root/api.py b/futuramaapi/routers/root/api.py new file mode 100644 index 0000000..056b1a2 --- /dev/null +++ b/futuramaapi/routers/root/api.py @@ -0,0 +1,82 @@ +from fastapi import APIRouter, Depends, Request, Response, status +from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html +from fastapi.responses import FileResponse +from sqlalchemy.ext.asyncio.session import AsyncSession + +from futuramaapi.repositories.session import get_async_session + +from .schemas import About, Root + +router = APIRouter() + + +@router.get( + "/health", + tags=[ + "health", + ], + include_in_schema=False, +) +def health() -> Response: + return Response(status_code=status.HTTP_200_OK) + + +@router.get( + "/favicon.ico", + include_in_schema=False, +) +async def favicon(): + return FileResponse("favicon.ico") + + +@router.get( + "/swagger", + include_in_schema=False, + name="swagger", +) +async def get_swagger(): + return get_swagger_ui_html( + openapi_url="/openapi.json", + title="Documentation | Futurama API", + swagger_favicon_url="/favicon.ico", + ) + + +@router.get( + "/docs", + include_in_schema=False, + name="redoc_html", +) +async def get_redoc(): + return get_redoc_html( + openapi_url="/openapi.json", + title="Documentation | Futurama API", + redoc_favicon_url="/favicon.ico", + ) + + +@router.get( + "/", + include_in_schema=False, + status_code=status.HTTP_200_OK, + name="root", +) +async def get_root( + request: Request, + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> Response: + obj: Root = await Root.from_request(session, request) + return obj.get_response(request) + + +@router.get( + "/about", + include_in_schema=False, + name="about", +) +async def about( + request: Request, + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> Response: + obj: About = await About.from_request(session, request) + return obj.get_response(request) diff --git a/futuramaapi/routers/root/schemas.py b/futuramaapi/routers/root/schemas.py new file mode 100644 index 0000000..e6b93da --- /dev/null +++ b/futuramaapi/routers/root/schemas.py @@ -0,0 +1,40 @@ +from typing import ClassVar, Self + +from sqlalchemy.ext.asyncio import AsyncSession +from starlette.requests import Request + +from futuramaapi.helpers.pydantic import BaseModel, Field +from futuramaapi.mixins.pydantic import BaseModelTemplateMixin +from futuramaapi.repositories.base import FilterStatementKwargs +from futuramaapi.routers.characters.schemas import Character +from futuramaapi.routers.users.schemas import User + + +class Root(BaseModel, BaseModelTemplateMixin): + characters: list[Character] + user_count: int = Field(alias="user_count") + + template_name: ClassVar[str] = "index.html" + + @classmethod + async def from_request(cls, session: AsyncSession, request: Request, /) -> Self: + user_count: int = await User.count(session) + characters: list[Character] = await Character.filter( + session, + FilterStatementKwargs( + limit=6, + ), + ) + + return cls( + characters=characters, + user_count=user_count, + ) + + +class About(BaseModel, BaseModelTemplateMixin): + template_name: ClassVar[str] = "about.html" + + @classmethod + async def from_request(cls, session: AsyncSession, request: Request, /) -> Self: + return cls() diff --git a/futuramaapi/routers/seasons/__init__.py b/futuramaapi/routers/seasons/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/seasons/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/app/routers/seasons.py b/futuramaapi/routers/seasons/api.py similarity index 68% rename from app/routers/seasons.py rename to futuramaapi/routers/seasons/api.py index bf2d003..23422a2 100644 --- a/app/routers/seasons.py +++ b/futuramaapi/routers/seasons/api.py @@ -1,20 +1,26 @@ -from fastapi import APIRouter, Depends, status +from fastapi import APIRouter, Depends, HTTPException, status from fastapi_pagination import Page from sqlalchemy.ext.asyncio.session import AsyncSession -from app.repositories.sessions import get_async_session -from app.services.seasons import ( - Season, - process_get_season, - process_get_seasons, -) +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelNotFoundError, NotFoundResponse + +from .schemas import Season -router = APIRouter(prefix="/seasons") +router = APIRouter( + prefix="/seasons", + tags=["seasons"], +) @router.get( "/{season_id}", status_code=status.HTTP_200_OK, + responses={ + status.HTTP_404_NOT_FOUND: { + "model": NotFoundResponse, + }, + }, response_model=Season, name="season", ) @@ -29,7 +35,10 @@ async def get_season( Can be used to gain in-depth insights into a particular season of Futurama. """ - return await process_get_season(season_id, session) + try: + return await Season.get(session, season_id) + except ModelNotFoundError: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) from None @router.get( @@ -50,4 +59,4 @@ async def get_seasons( This endpoint is valuable for those interested in exploring the entirety of Futurama's seasons or implementing features like season browsing on your site. """ - return await process_get_seasons(session) + return await Season.paginate(session) diff --git a/futuramaapi/routers/seasons/schemas.py b/futuramaapi/routers/seasons/schemas.py new file mode 100644 index 0000000..2ca4a4d --- /dev/null +++ b/futuramaapi/routers/seasons/schemas.py @@ -0,0 +1,15 @@ +from typing import ClassVar + +from futuramaapi.helpers.pydantic import BaseModel +from futuramaapi.mixins.pydantic import BaseModelDatabaseMixin +from futuramaapi.repositories.models import SeasonModel +from futuramaapi.routers.episodes.schemas import EpisodeBase + + +class Season(BaseModel, BaseModelDatabaseMixin): + model: ClassVar[type[SeasonModel]] = SeasonModel + + class Episode(EpisodeBase): ... + + id: int + episodes: list[Episode] diff --git a/futuramaapi/routers/tokens/__init__.py b/futuramaapi/routers/tokens/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/tokens/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/app/routers/tokens.py b/futuramaapi/routers/tokens/api.py similarity index 55% rename from app/routers/tokens.py rename to futuramaapi/routers/tokens/api.py index c8a15cd..b8bc36b 100644 --- a/app/routers/tokens.py +++ b/futuramaapi/routers/tokens/api.py @@ -1,23 +1,17 @@ from typing import Annotated from fastapi import APIRouter, Depends, status -from sqlalchemy.ext.asyncio.session import AsyncSession -from app.repositories.sessions import get_async_session -from app.services.auth import oauth2_refresh_scheme -from app.services.security import ( - OAuth2PasswordRequestJson, - RefreshTokenData, - UnauthorizedResponse, -) -from app.services.tokens import ( - RefreshToken, - Token, - process_refresh_token_auth_user, - process_token_auth_user, -) +from futuramaapi.routers.exceptions import UnauthorizedResponse +from futuramaapi.routers.users.schemas import User -router = APIRouter(prefix="/tokens") +from .dependencies import from_form_data, refresh_token +from .schemas import UserToken + +router = APIRouter( + prefix="/tokens", + tags=["tokens"], +) @router.post( @@ -27,13 +21,12 @@ "model": UnauthorizedResponse, }, }, - response_model=Token, + response_model=UserToken, name="user_token_auth", ) async def token_auth_user( - form_data: Annotated[OAuth2PasswordRequestJson, Depends()], - session: AsyncSession = Depends(get_async_session), # noqa: B008 -) -> Token: + user: Annotated[User, Depends(from_form_data)], +) -> UserToken: """Authenticate user. JSON Web Token (JWT) authentication is a popular method for securing web applications and APIs. @@ -42,7 +35,7 @@ async def token_auth_user( Use a token in a response to get secured stored data of your user. """ - return await process_token_auth_user(session, form_data) + return UserToken.from_user(user) @router.post( @@ -52,15 +45,15 @@ async def token_auth_user( "model": UnauthorizedResponse, }, }, - response_model=RefreshToken, + response_model=UserToken, name="user_token_auth_refresh", ) async def refresh_token_auth_user( - token: Annotated[RefreshTokenData, Depends(oauth2_refresh_scheme)], -) -> RefreshToken: + token: Annotated[UserToken, Depends(refresh_token)], +) -> UserToken: """Refresh JWT. The Refresh JWT Token endpoint extends the lifespan of JSON Web Tokens (JWTs) without requiring user reauthentication. This API feature ensures uninterrupted access to secured resources. """ - return await process_refresh_token_auth_user(token) + return token diff --git a/futuramaapi/routers/tokens/dependencies.py b/futuramaapi/routers/tokens/dependencies.py new file mode 100644 index 0000000..bad8504 --- /dev/null +++ b/futuramaapi/routers/tokens/dependencies.py @@ -0,0 +1,42 @@ +from typing import Annotated + +from fastapi import Depends, HTTPException, status +from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm +from sqlalchemy.ext.asyncio.session import AsyncSession + +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelNotFoundError +from futuramaapi.routers.users.schemas import User, UserPasswordError + +from .schemas import DecodedTokenError, UserToken, UserTokenRefreshRequest + +_oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/tokens/users/auth") + + +async def from_form_data( + form_data: Annotated[OAuth2PasswordRequestForm, Depends()], + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> User: + try: + user: User = await User.auth(session, form_data.username, form_data.password) + except (ModelNotFoundError, UserPasswordError): + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None + + return user + + +def refresh_token( + token: Annotated[str, Depends(_oauth2_scheme)], + data: UserTokenRefreshRequest, +) -> UserToken: + token_: UserToken = UserToken( + access_token=token, + refresh_token=data.refresh_token, + ) + + try: + token_.refresh() + except DecodedTokenError: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None + + return token_ diff --git a/futuramaapi/routers/tokens/schemas.py b/futuramaapi/routers/tokens/schemas.py new file mode 100644 index 0000000..e99f3bb --- /dev/null +++ b/futuramaapi/routers/tokens/schemas.py @@ -0,0 +1,84 @@ +from typing import TYPE_CHECKING, ClassVar, Literal, Self + +from pydantic import Field + +from futuramaapi.helpers.pydantic import BaseModel, BaseTokenModel +from futuramaapi.mixins.pydantic import BaseModelTokenMixin, DecodedTokenError + +if TYPE_CHECKING: + from futuramaapi.routers.users.schemas import User + + +class _DecodedTokenBase(BaseTokenModel): + type: Literal["access", "refresh"] + + +class DecodedUserToken(_DecodedTokenBase, BaseModelTokenMixin): + id: int + + @classmethod + def from_user(cls, user: "User", type_: Literal["access", "refresh"], /) -> Self: + return cls(type=type_, **user.model_dump()) + + @classmethod + def decode( + cls, + token: str, + /, + *, + algorithm="HS256", + allowed_type: Literal["access", "refresh"] = "access", + ) -> Self: + decoded_token: Self = super().decode(token, algorithm=algorithm) + if decoded_token.type != allowed_type: + raise DecodedTokenError() from None + + return decoded_token + + +class UserTokenRefreshRequest(BaseModel): + refresh_token: str + + +class UserToken(BaseModel): + access_token: str = Field( + alias="access_token", + description="Keep in mind, that the field is not in a camel case. That's the standard.", + ) + refresh_token: str = Field( + alias="refresh_token", + description="Keep in mind, that the field is not in a camel case. That's the standard.", + ) + + _default_access_seconds: ClassVar[int] = 15 * 60 + _default_refresh_seconds: ClassVar[int] = 5 * 24 * 60 * 60 + + @classmethod + def from_user( + cls, + user: "User", + /, + ) -> Self: + access: DecodedUserToken = DecodedUserToken.from_user(user, "access") + refresh: DecodedUserToken = DecodedUserToken.from_user(user, "refresh") + return cls( + access_token=access.tokenize(cls._default_access_seconds), + refresh_token=refresh.tokenize(cls._default_refresh_seconds), + ) + + def refresh(self) -> None: + try: + access: DecodedUserToken = DecodedUserToken.decode(self.access_token) + except DecodedTokenError: + raise + + try: + refresh: DecodedUserToken = DecodedUserToken.decode(self.refresh_token, allowed_type="refresh") + except DecodedTokenError: + raise + + access.refresh_nonce() + refresh.refresh_nonce() + + self.access_token = access.tokenize(self._default_access_seconds) + self.refresh_token = refresh.tokenize(self._default_refresh_seconds) diff --git a/futuramaapi/routers/users/__init__.py b/futuramaapi/routers/users/__init__.py new file mode 100644 index 0000000..9726651 --- /dev/null +++ b/futuramaapi/routers/users/__init__.py @@ -0,0 +1,5 @@ +from .api import router + +__all__ = [ + "router", +] diff --git a/futuramaapi/routers/users/api.py b/futuramaapi/routers/users/api.py new file mode 100644 index 0000000..7eb7b15 --- /dev/null +++ b/futuramaapi/routers/users/api.py @@ -0,0 +1,137 @@ +from typing import Annotated + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.ext.asyncio.session import AsyncSession + +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelExistsError, UnauthorizedResponse + +from .dependencies import from_signature, from_token +from .schemas import User, UserAlreadyActivatedError, UserCreateRequest, UserUpdateRequest + +router = APIRouter( + prefix="/users", + tags=["users"], +) + + +@router.post( + "", + status_code=status.HTTP_201_CREATED, + response_model=User, + name="user", +) +async def create_user( + data: UserCreateRequest, + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> User: + """Create User. + + The user add endpoint is an API function allowing the creation of new user accounts. + It receives user details via HTTP requests, validates the information, + and stores it in the system's database. + This endpoint is essential for user registration and onboarding. + + Please note that currently endpoint is not protected. + However, if there are a lot of spam requests, the endpoint will be blocked or limited. + """ + try: + return await User.create(session, data) + except ModelExistsError: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail="User already exists.", + ) from None + + +@router.get( + "/me", + responses={ + status.HTTP_401_UNAUTHORIZED: { + "model": UnauthorizedResponse, + }, + }, + name="user_me", +) +async def get_me( + user: Annotated[User, Depends(from_token)], +) -> User: + """Get user details. + + Retrieve authenticated user profile information, including username, email, and account details. + Personalize user experiences within the application using the JSON response containing user-specific data. + """ + return user + + +@router.get( + "/activate", + responses={ + status.HTTP_401_UNAUTHORIZED: { + "model": UnauthorizedResponse, + } + }, + status_code=status.HTTP_200_OK, + name="activate_user", +) +async def activate_user( + user: User = Depends(from_signature), # noqa: B008 + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> None: + """Activate user.""" + try: + await user.activate(session) + except UserAlreadyActivatedError: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="User already activated.", + ) from None + + +@router.put( + "", + responses={ + status.HTTP_401_UNAUTHORIZED: { + "model": UnauthorizedResponse, + }, + }, + name="update_user", +) +async def update_user( + user: Annotated[User, Depends(from_token)], + data: UserUpdateRequest, + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> User: + """Update user details. + + This endpoint is crucial for users to manage and maintain accurate profile information, + often including authentication and authorization checks for security. + """ + await user.update(session, data) + return user + + +@router.post( + "/confirmations/resend", + responses={ + status.HTTP_401_UNAUTHORIZED: { + "model": UnauthorizedResponse, + }, + }, + status_code=status.HTTP_200_OK, + name="resend_user_confirmation", +) +async def resend_user_confirmation( + user: Annotated[User, Depends(from_token)], +) -> None: + """Resend user confirmation. + + If the confirmation message is not delivered or got lost, user can request another message. + """ + try: + await user.send_confirmation_email() + except UserAlreadyActivatedError: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="User already activated.", + ) from None diff --git a/futuramaapi/routers/users/dependencies.py b/futuramaapi/routers/users/dependencies.py new file mode 100644 index 0000000..fd9fb44 --- /dev/null +++ b/futuramaapi/routers/users/dependencies.py @@ -0,0 +1,47 @@ +from typing import Annotated + +from fastapi import Depends, HTTPException, status +from fastapi.security import OAuth2PasswordBearer +from sqlalchemy.ext.asyncio.session import AsyncSession + +from futuramaapi.mixins.pydantic import DecodedTokenError +from futuramaapi.repositories.session import get_async_session +from futuramaapi.routers.exceptions import ModelNotFoundError +from futuramaapi.routers.tokens.schemas import DecodedUserToken +from futuramaapi.routers.users.schemas import DecodedUserSignature, User + +_oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/tokens/users/auth") + + +async def from_token( + token: Annotated[str, Depends(_oauth2_scheme)], + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> User: + try: + decoded_token: DecodedUserToken = DecodedUserToken.decode(token, allowed_type="access") + except DecodedTokenError: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None + + try: + user: User = await User.get(session, decoded_token.id) + except ModelNotFoundError: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None + + return user + + +async def from_signature( + sig: str, + session: AsyncSession = Depends(get_async_session), # noqa: B008 +) -> User: + try: + decoded_signature: DecodedUserSignature = DecodedUserSignature.decode(sig) + except DecodedTokenError: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None + + try: + user: User = await User.get(session, decoded_signature.id) + except ModelNotFoundError: + raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) from None + + return user diff --git a/futuramaapi/routers/users/schemas.py b/futuramaapi/routers/users/schemas.py new file mode 100644 index 0000000..4e81008 --- /dev/null +++ b/futuramaapi/routers/users/schemas.py @@ -0,0 +1,188 @@ +from datetime import datetime +from typing import ClassVar, Self + +from pydantic import EmailStr, Field, HttpUrl, SecretStr, field_validator, model_validator +from sqlalchemy.ext.asyncio.session import AsyncSession + +from futuramaapi.core import feature_flags, settings +from futuramaapi.helpers.pydantic import BaseModel, BaseTokenModel +from futuramaapi.mixins.pydantic import BaseModelDatabaseMixin, BaseModelTokenMixin +from futuramaapi.repositories.base import ModelDoesNotExistError +from futuramaapi.repositories.models import UserModel +from futuramaapi.routers.exceptions import ModelNotFoundError + + +class UserBase(BaseModel): + model: ClassVar[type[UserModel]] = UserModel + + name: str = Field( + min_length=1, + max_length=64, + ) + surname: str = Field( + min_length=1, + max_length=64, + ) + middle_name: str | None = Field( + default=None, + min_length=1, + max_length=64, + ) + email: EmailStr + username: str = Field( + min_length=5, + max_length=64, + ) + password: SecretStr = Field( + min_length=8, + max_length=128, + ) + is_subscribed: bool = Field( + default=True, + ) + + +class UserCreateRequest(UserBase): + @field_validator("password", mode="after") + @classmethod + def hash_password(cls, value: SecretStr, /) -> SecretStr: + return SecretStr(cls.hasher.encode(value.get_secret_value())) + + +class UserBaseError(Exception): ... + + +class UserPasswordError(UserBaseError): ... + + +class UserAlreadyActivatedError(UserBaseError): ... + + +class UserUpdateRequest(BaseModel): + name: str | None = Field( + min_length=1, + max_length=64, + default=None, + ) + surname: str | None = Field( + min_length=1, + max_length=64, + default=None, + ) + middle_name: str | None = Field( + default=None, + min_length=1, + max_length=64, + ) + password: SecretStr | None = Field( + default=None, + min_length=8, + max_length=128, + ) + is_subscribed: bool | None = None + + @field_validator("password", mode="after") + @classmethod + def hash_password(cls, value: SecretStr | None, /) -> SecretStr | None: + if value is None: + return None + return SecretStr(cls.hasher.encode(value.get_secret_value())) + + +class DecodedUserSignature(BaseTokenModel, BaseModelTokenMixin): + id: int + + +class UserActivateRequest(BaseModel): + is_confirmed: bool + + +class ConfirmationBody(BaseModel): + class _User(BaseModel): + id: int + name: str + surname: str + + user: _User + url: HttpUrl = HttpUrl.build( + scheme="https", + host=settings.trusted_host, + ) + + @property + def signature(self) -> str: + return DecodedUserSignature(id=self.user.id).tokenize(3 * 24 * 60 * 60) + + @model_validator(mode="after") + def build_confirmation_url(self) -> Self: + self.url = HttpUrl.build( + scheme=self.url.scheme, + host=self.url.host, + path="api/users/activate", + query=f"sig={self.signature}", + ) + return self + + @classmethod + def from_user(cls, user: "User", /) -> Self: + return cls( + user=user.model_dump(), + ) + + +class User(UserBase, BaseModelDatabaseMixin): + id: int + is_confirmed: bool + created_at: datetime + + def verify_password(self, password: str, /): + if not self.hasher.verify(password, self.password.get_secret_value()): + raise UserPasswordError() from None + + @classmethod + async def from_username(cls, session: AsyncSession, username: str, /) -> Self: + try: + obj: UserModel = await cls.model.get(session, username, field=UserModel.username) + except ModelDoesNotExistError: + raise ModelNotFoundError() from None + return cls.model_validate(obj) + + @classmethod + async def auth(cls, session: AsyncSession, username: str, password: str, /) -> Self: + try: + user: User = await User.from_username(session, username) + except ModelNotFoundError: + raise + + try: + user.verify_password(password) + except UserPasswordError: + raise + + return user + + async def activate(self, session: AsyncSession, /) -> None: + if self.is_confirmed is True: + raise UserAlreadyActivatedError() from None + + await self.update(session, UserActivateRequest(is_confirmed=True)) + + async def send_confirmation_email(self) -> None: + if self.is_confirmed is True: + raise UserAlreadyActivatedError() from None + + if feature_flags.activate_users is False: + return + + await settings.email.send( + [self.email], + "FuturamaAPI - Account Activation", + ConfirmationBody.from_user(self), + "emails/confirmation.html", + ) + + @classmethod + async def create(cls, session: AsyncSession, data: BaseModel, /) -> Self: + user: Self = await super().create(session, data) + await user.send_confirmation_email() + return user diff --git a/install-dependencies.sh b/install-dependencies.sh deleted file mode 100644 index f3abe4f..0000000 --- a/install-dependencies.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -apt-get update -apt-get install --assume-yes --no-install-recommends \ - make - -apt-get clean -rm -rf /var/lib/apt/lists/* diff --git a/locale/en_US/LC_MESSAGES/messages.po b/locale/en_US/LC_MESSAGES/messages.po deleted file mode 100644 index d4a22c7..0000000 --- a/locale/en_US/LC_MESSAGES/messages.po +++ /dev/null @@ -1,229 +0,0 @@ -# English (United States) translations for FuturamaAPI. -# Copyright (C) 2023 FuturamaAPI -# This file is distributed under the same license as the FuturamaAPI -# project. -# FIRST AUTHOR , 2023. -# -msgid "" -msgstr "" -"Project-Id-Version: FuturamaAPI 0.0.1\n" -"Report-Msgid-Bugs-To: coldie322@gmail.com\n" -"POT-Creation-Date: 2024-03-13 21:39+0100\n" -"PO-Revision-Date: 2023-11-24 14:14+0100\n" -"Last-Translator: FULL NAME \n" -"Language: en_US\n" -"Language-Team: en_US \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.13.1\n" - -#: app/routers/root.py:52 templates/base.html:89 -msgid "FB00003" -msgstr "Documentation" - -#: app/routers/root.py:52 templates/about.html:5 templates/base.html:8 -#: templates/base.html:25 templates/base.html:77 -msgid "FB00001" -msgstr "Futurama API" - -#: app/services/notifications.py:18 -msgid "FB00007" -msgstr "Character name" - -#: app/services/notifications.py:20 -msgid "FB00008" -msgstr "Character X coordinate" - -#: app/services/notifications.py:25 -msgid "FB00009" -msgstr "Character Y coordinate" - -#: app/services/users.py:130 -msgid "FuturamaAPI - Account Activation" -msgstr "" - -#: templates/about.html:5 templates/about.html:13 templates/base.html:54 -msgid "FB00012" -msgstr "About" - -#: templates/about.html:14 -msgid "What is this?" -msgstr "" - -#: templates/about.html:16 -msgid "" -"\n" -" Welcome to\n" -" Hulurama, a REST API and GraphQL API dedicated to " -"celebrating the iconic TV show Futurama.\n" -" Created with the intention of providing a learning playground for " -"enthusiasts like you,\n" -" FuturamaAPI opens the door for exploration and experimentation with " -"new technologies.\n" -" Dive into the world of Futurama, study, and try out the latest in web" -" development.\n" -" " -msgstr "" - -#: templates/about.html:28 -msgid "Check our" -msgstr "" - -#: templates/about.html:29 -msgid "documentation" -msgstr "" - -#: templates/about.html:29 -msgid "to get started." -msgstr "" - -#: templates/about.html:31 -msgid "Key Features" -msgstr "" - -#: templates/about.html:32 -msgid "" -"\n" -"
\n" -"

Comprehensive Access

\n" -"

\n" -" Explore detailed information about characters, seasons, episodes, " -"and more.\n" -"

\n" -"

Real-time Updates

\n" -"

\n" -" Experience the excitement of Server Sent Events (SSE) as " -"FuturamaAPI\n" -" keeps you in the loop with the latest happenings.\n" -"

\n" -"

Documentation

\n" -"

Get started quickly by checking out our documentation for a " -"seamless learning experience.

\n" -"
\n" -" " -msgstr "" - -#: templates/about.html:47 -msgid "Why?" -msgstr "" - -#: templates/about.html:48 -msgid "" -"\n" -"

\n" -" FuturamaAPI was born out of the idea that even lesser-known TV shows " -"deserve dedicated projects.\n" -" It's a space to have fun with Futurama and simultaneously push the " -"boundaries of technology.\n" -" Embrace the challenge and discover the possibilities with FastAPI, " -"SSE, WebSockets, GraphQL, Hypercorn,\n" -" HTTP/2.0, and more.\n" -"

\n" -" " -msgstr "" - -#: templates/about.html:56 -msgid "Technical Stack?" -msgstr "" - -#: templates/about.html:57 -msgid "" -"\n" -"

Futurama is powered by a robust technical stack, including

\n" -"
    \n" -"
  • Python
  • \n" -"
  • FastAPI
  • \n" -"
  • Docker
  • \n" -"
  • Hypercorn
  • \n" -"
  • PostgreSQL + SQLAlchemy (async)
  • \n" -"
  • Alembic for Migrations
  • \n" -"
  • Strawberry for GraphQL
  • \n" -"
\n" -" " -msgstr "" - -#: templates/about.html:69 -msgid "Can I contribute?" -msgstr "" - -#: templates/about.html:70 -msgid "" -"\n" -"

\n" -" Absolutely! Feel free to contribute to the project.\n" -" Here is the link to get started.\n" -" Whether you're a seasoned developer or just starting, your " -"contributions are valuable.\n" -"

\n" -" " -msgstr "" - -#: templates/about.html:77 -msgid "Design?" -msgstr "" - -#: templates/about.html:78 -msgid "" -"\n" -"

\n" -" Admittedly, design is not my strong suit. If you have HTML skills and" -" a passion for design,\n" -" please consider creating a\n" -" pull request for this project.\n" -" Any help is greatly appreciated.\n" -"

\n" -" " -msgstr "" - -#: templates/about.html:86 -msgid "Who are you?" -msgstr "" - -#: templates/about.html:87 -msgid "" -"\n" -"

\n" -" I'm Ivan " -"Koldakov,\n" -" a Python developer and enthusiast.\n" -" Connect with me on LinkedIn\n" -" to stay in the loop and share your thoughts.\n" -"

\n" -" " -msgstr "" - -#: templates/base.html:8 -msgid "FB00002" -msgstr "Welcome" - -#: templates/base.html:62 -msgid "FB00011" -msgstr "GraphQL" - -#: templates/base.html:95 -#, python-format -msgid "" -"Join our community today! Already, %(user_count)s have registered, and " -"we're excited to welcome even more members." -msgstr "" - -#: templates/index.html:31 -msgid "FB00004" -msgstr "Gender" - -#: templates/index.html:33 -msgid "FB00005" -msgstr "Status" - -#: templates/index.html:47 -msgid "FB00006" -msgstr "View" diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..a660a3a --- /dev/null +++ b/poetry.lock @@ -0,0 +1,2004 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "aiosmtplib" +version = "2.0.2" +description = "asyncio SMTP client" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "aiosmtplib-2.0.2-py3-none-any.whl", hash = "sha256:1e631a7a3936d3e11c6a144fb8ffd94bb4a99b714f2cb433e825d88b698e37bc"}, + {file = "aiosmtplib-2.0.2.tar.gz", hash = "sha256:138599a3227605d29a9081b646415e9e793796ca05322a78f69179f0135016a3"}, +] + +[package.extras] +docs = ["sphinx (>=5.3.0,<6.0.0)", "sphinx_autodoc_typehints (>=1.7.0,<2.0.0)"] +uvloop = ["uvloop (>=0.14,<0.15)", "uvloop (>=0.14,<0.15)", "uvloop (>=0.17,<0.18)"] + +[[package]] +name = "alembic" +version = "1.13.1" +description = "A database migration tool for SQLAlchemy." +optional = false +python-versions = ">=3.8" +files = [ + {file = "alembic-1.13.1-py3-none-any.whl", hash = "sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43"}, + {file = "alembic-1.13.1.tar.gz", hash = "sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595"}, +] + +[package.dependencies] +Mako = "*" +SQLAlchemy = ">=1.3.0" +typing-extensions = ">=4" + +[package.extras] +tz = ["backports.zoneinfo"] + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.4.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "asyncpg" +version = "0.29.0" +description = "An asyncio PostgreSQL driver" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "asyncpg-0.29.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72fd0ef9f00aeed37179c62282a3d14262dbbafb74ec0ba16e1b1864d8a12169"}, + {file = "asyncpg-0.29.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:52e8f8f9ff6e21f9b39ca9f8e3e33a5fcdceaf5667a8c5c32bee158e313be385"}, + {file = "asyncpg-0.29.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e6823a7012be8b68301342ba33b4740e5a166f6bbda0aee32bc01638491a22"}, + {file = "asyncpg-0.29.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:746e80d83ad5d5464cfbf94315eb6744222ab00aa4e522b704322fb182b83610"}, + {file = "asyncpg-0.29.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ff8e8109cd6a46ff852a5e6bab8b0a047d7ea42fcb7ca5ae6eaae97d8eacf397"}, + {file = "asyncpg-0.29.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:97eb024685b1d7e72b1972863de527c11ff87960837919dac6e34754768098eb"}, + {file = "asyncpg-0.29.0-cp310-cp310-win32.whl", hash = "sha256:5bbb7f2cafd8d1fa3e65431833de2642f4b2124be61a449fa064e1a08d27e449"}, + {file = "asyncpg-0.29.0-cp310-cp310-win_amd64.whl", hash = "sha256:76c3ac6530904838a4b650b2880f8e7af938ee049e769ec2fba7cd66469d7772"}, + {file = "asyncpg-0.29.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4900ee08e85af01adb207519bb4e14b1cae8fd21e0ccf80fac6aa60b6da37b4"}, + {file = "asyncpg-0.29.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a65c1dcd820d5aea7c7d82a3fdcb70e096f8f70d1a8bf93eb458e49bfad036ac"}, + {file = "asyncpg-0.29.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b52e46f165585fd6af4863f268566668407c76b2c72d366bb8b522fa66f1870"}, + {file = "asyncpg-0.29.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc600ee8ef3dd38b8d67421359779f8ccec30b463e7aec7ed481c8346decf99f"}, + {file = "asyncpg-0.29.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:039a261af4f38f949095e1e780bae84a25ffe3e370175193174eb08d3cecab23"}, + {file = "asyncpg-0.29.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6feaf2d8f9138d190e5ec4390c1715c3e87b37715cd69b2c3dfca616134efd2b"}, + {file = "asyncpg-0.29.0-cp311-cp311-win32.whl", hash = "sha256:1e186427c88225ef730555f5fdda6c1812daa884064bfe6bc462fd3a71c4b675"}, + {file = "asyncpg-0.29.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfe73ffae35f518cfd6e4e5f5abb2618ceb5ef02a2365ce64f132601000587d3"}, + {file = "asyncpg-0.29.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6011b0dc29886ab424dc042bf9eeb507670a3b40aece3439944006aafe023178"}, + {file = "asyncpg-0.29.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b544ffc66b039d5ec5a7454667f855f7fec08e0dfaf5a5490dfafbb7abbd2cfb"}, + {file = "asyncpg-0.29.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d84156d5fb530b06c493f9e7635aa18f518fa1d1395ef240d211cb563c4e2364"}, + {file = "asyncpg-0.29.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54858bc25b49d1114178d65a88e48ad50cb2b6f3e475caa0f0c092d5f527c106"}, + {file = "asyncpg-0.29.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bde17a1861cf10d5afce80a36fca736a86769ab3579532c03e45f83ba8a09c59"}, + {file = "asyncpg-0.29.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:37a2ec1b9ff88d8773d3eb6d3784dc7e3fee7756a5317b67f923172a4748a175"}, + {file = "asyncpg-0.29.0-cp312-cp312-win32.whl", hash = "sha256:bb1292d9fad43112a85e98ecdc2e051602bce97c199920586be83254d9dafc02"}, + {file = "asyncpg-0.29.0-cp312-cp312-win_amd64.whl", hash = "sha256:2245be8ec5047a605e0b454c894e54bf2ec787ac04b1cb7e0d3c67aa1e32f0fe"}, + {file = "asyncpg-0.29.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0009a300cae37b8c525e5b449233d59cd9868fd35431abc470a3e364d2b85cb9"}, + {file = "asyncpg-0.29.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cad1324dbb33f3ca0cd2074d5114354ed3be2b94d48ddfd88af75ebda7c43cc"}, + {file = "asyncpg-0.29.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:012d01df61e009015944ac7543d6ee30c2dc1eb2f6b10b62a3f598beb6531548"}, + {file = "asyncpg-0.29.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000c996c53c04770798053e1730d34e30cb645ad95a63265aec82da9093d88e7"}, + {file = "asyncpg-0.29.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e0bfe9c4d3429706cf70d3249089de14d6a01192d617e9093a8e941fea8ee775"}, + {file = "asyncpg-0.29.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:642a36eb41b6313ffa328e8a5c5c2b5bea6ee138546c9c3cf1bffaad8ee36dd9"}, + {file = "asyncpg-0.29.0-cp38-cp38-win32.whl", hash = "sha256:a921372bbd0aa3a5822dd0409da61b4cd50df89ae85150149f8c119f23e8c408"}, + {file = "asyncpg-0.29.0-cp38-cp38-win_amd64.whl", hash = "sha256:103aad2b92d1506700cbf51cd8bb5441e7e72e87a7b3a2ca4e32c840f051a6a3"}, + {file = "asyncpg-0.29.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5340dd515d7e52f4c11ada32171d87c05570479dc01dc66d03ee3e150fb695da"}, + {file = "asyncpg-0.29.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e17b52c6cf83e170d3d865571ba574577ab8e533e7361a2b8ce6157d02c665d3"}, + {file = "asyncpg-0.29.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f100d23f273555f4b19b74a96840aa27b85e99ba4b1f18d4ebff0734e78dc090"}, + {file = "asyncpg-0.29.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48e7c58b516057126b363cec8ca02b804644fd012ef8e6c7e23386b7d5e6ce83"}, + {file = "asyncpg-0.29.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f9ea3f24eb4c49a615573724d88a48bd1b7821c890c2effe04f05382ed9e8810"}, + {file = "asyncpg-0.29.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8d36c7f14a22ec9e928f15f92a48207546ffe68bc412f3be718eedccdf10dc5c"}, + {file = "asyncpg-0.29.0-cp39-cp39-win32.whl", hash = "sha256:797ab8123ebaed304a1fad4d7576d5376c3a006a4100380fb9d517f0b59c1ab2"}, + {file = "asyncpg-0.29.0-cp39-cp39-win_amd64.whl", hash = "sha256:cce08a178858b426ae1aa8409b5cc171def45d4293626e7aa6510696d46decd8"}, + {file = "asyncpg-0.29.0.tar.gz", hash = "sha256:d1c49e1f44fffafd9a55e1a9b101590859d881d639ea2922516f5d9c512d354e"}, +] + +[package.extras] +docs = ["Sphinx (>=5.3.0,<5.4.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["flake8 (>=6.1,<7.0)", "uvloop (>=0.15.3)"] + +[[package]] +name = "blinker" +version = "1.8.2" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.8" +files = [ + {file = "blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01"}, + {file = "blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"}, +] + +[[package]] +name = "boto3" +version = "1.34.117" +description = "The AWS SDK for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "boto3-1.34.117-py3-none-any.whl", hash = "sha256:1506589e30566bbb2f4997b60968ff7d4ef8a998836c31eedd36437ac3b7408a"}, + {file = "boto3-1.34.117.tar.gz", hash = "sha256:c8a383b904d6faaf7eed0c06e31b423db128e4c09ce7bd2afc39d1cd07030a51"}, +] + +[package.dependencies] +botocore = ">=1.34.117,<1.35.0" +jmespath = ">=0.7.1,<2.0.0" +s3transfer = ">=0.10.0,<0.11.0" + +[package.extras] +crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] + +[[package]] +name = "botocore" +version = "1.34.117" +description = "Low-level, data-driven core of boto 3." +optional = false +python-versions = ">=3.8" +files = [ + {file = "botocore-1.34.117-py3-none-any.whl", hash = "sha256:26a431997f882bcdd1e835f44c24b2a1752b1c4e5183c2ce62999ce95d518d6c"}, + {file = "botocore-1.34.117.tar.gz", hash = "sha256:4637ca42e6c51aebc4d9a2d92f97bf4bdb042e3f7985ff31a659a11e4c170e73"}, +] + +[package.dependencies] +jmespath = ">=0.7.1,<2.0.0" +python-dateutil = ">=2.1,<3.0.0" +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} + +[package.extras] +crt = ["awscrt (==0.20.9)"] + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "distlib" +version = "0.3.8" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, +] + +[[package]] +name = "dnspython" +version = "2.6.1" +description = "DNS toolkit" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, +] + +[package.extras] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] +dnssec = ["cryptography (>=41)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=0.9.25)"] +idna = ["idna (>=3.6)"] +trio = ["trio (>=0.23)"] +wmi = ["wmi (>=1.5.1)"] + +[[package]] +name = "email-validator" +version = "2.1.1" +description = "A robust email address syntax and deliverability validation library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "email_validator-2.1.1-py3-none-any.whl", hash = "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"}, + {file = "email_validator-2.1.1.tar.gz", hash = "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84"}, +] + +[package.dependencies] +dnspython = ">=2.0.0" +idna = ">=2.0.0" + +[[package]] +name = "fastapi" +version = "0.111.0" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0"}, + {file = "fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7"}, +] + +[package.dependencies] +email_validator = ">=2.0.0" +fastapi-cli = ">=0.0.2" +httpx = ">=0.23.0" +jinja2 = ">=2.11.2" +orjson = ">=3.2.1" +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +python-multipart = ">=0.0.7" +starlette = ">=0.37.2,<0.38.0" +typing-extensions = ">=4.8.0" +ujson = ">=4.0.1,<4.0.2 || >4.0.2,<4.1.0 || >4.1.0,<4.2.0 || >4.2.0,<4.3.0 || >4.3.0,<5.0.0 || >5.0.0,<5.1.0 || >5.1.0" +uvicorn = {version = ">=0.12.0", extras = ["standard"]} + +[package.extras] +all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] + +[[package]] +name = "fastapi-cli" +version = "0.0.4" +description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi_cli-0.0.4-py3-none-any.whl", hash = "sha256:a2552f3a7ae64058cdbb530be6fa6dbfc975dc165e4fa66d224c3d396e25e809"}, + {file = "fastapi_cli-0.0.4.tar.gz", hash = "sha256:e2e9ffaffc1f7767f488d6da34b6f5a377751c996f397902eb6abb99a67bde32"}, +] + +[package.dependencies] +typer = ">=0.12.3" + +[package.extras] +standard = ["fastapi", "uvicorn[standard] (>=0.15.0)"] + +[[package]] +name = "fastapi-mail" +version = "1.4.1" +description = "Simple lightweight mail library for FastApi" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "fastapi_mail-1.4.1-py3-none-any.whl", hash = "sha256:fa5ef23b2dea4d3ba4587f4bbb53f8f15274124998fb4e40629b3b636c76c398"}, + {file = "fastapi_mail-1.4.1.tar.gz", hash = "sha256:9095b713bd9d3abb02fe6d7abb637502aaf680b52e177d60f96273ef6bc8bb70"}, +] + +[package.dependencies] +aiosmtplib = ">=2.0,<3.0" +blinker = ">=1.5,<2.0" +email-validator = ">=2.0,<3.0" +httpx = {version = ">=0.23,<0.24", extras = ["httpx"], optional = true, markers = "extra == \"httpx\""} +Jinja2 = ">=3.0,<4.0" +pydantic = ">=2.0,<3.0" +pydantic_settings = ">=2.0,<3.0" +starlette = ">=0.24,<1.0" + +[package.extras] +httpx = ["httpx[httpx] (>=0.23,<0.24)"] +redis = ["redis[redis] (>=4.3,<5.0)"] + +[[package]] +name = "fastapi-pagination" +version = "0.12.24" +description = "FastAPI pagination" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "fastapi_pagination-0.12.24-py3-none-any.whl", hash = "sha256:a639df7301a89414244c6763bb97cff043815cb839070b8a38c58c007cf75d48"}, + {file = "fastapi_pagination-0.12.24.tar.gz", hash = "sha256:c9c6508e0182aab679a13b1de261d4923e3b530b410500dcb271638ff714fb14"}, +] + +[package.dependencies] +fastapi = ">=0.93.0" +pydantic = ">=1.9.1" +typing-extensions = ">=4.8.0,<5.0.0" + +[package.extras] +all = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)", "beanie (>=1.25.0)", "bunnet (>=1.1.0,<2.0.0)", "databases (>=0.6.0)", "django (<5.0.0)", "mongoengine (>=0.23.1,<0.29.0)", "motor (>=2.5.1,<4.0.0)", "orm (>=0.3.1)", "ormar (>=0.11.2)", "piccolo (>=0.89,<0.122)", "pony (>=0.7.16,<0.8.0)", "scylla-driver (>=3.25.6,<4.0.0)", "sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.15)", "tortoise-orm (>=0.16.18,<0.21.0)"] +asyncpg = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)"] +beanie = ["beanie (>=1.25.0)"] +bunnet = ["bunnet (>=1.1.0,<2.0.0)"] +databases = ["databases (>=0.6.0)"] +django = ["databases (>=0.6.0)", "django (<5.0.0)"] +mongoengine = ["mongoengine (>=0.23.1,<0.29.0)"] +motor = ["motor (>=2.5.1,<4.0.0)"] +orm = ["databases (>=0.6.0)", "orm (>=0.3.1)"] +ormar = ["ormar (>=0.11.2)"] +piccolo = ["piccolo (>=0.89,<0.122)"] +scylla-driver = ["scylla-driver (>=3.25.6,<4.0.0)"] +sqlalchemy = ["SQLAlchemy (>=1.3.20)", "sqlakeyset (>=2.0.1680321678,<3.0.0)"] +sqlmodel = ["sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.15)"] +tortoise = ["tortoise-orm (>=0.16.18,<0.21.0)"] + +[[package]] +name = "fastapi-storages" +version = "0.3.0" +description = "FastAPI Storages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi_storages-0.3.0-py3-none-any.whl", hash = "sha256:91adb41a80fdef2a84c0f8244c27ade7ff8bd5db9b7fa95c496c06c03e192477"}, + {file = "fastapi_storages-0.3.0.tar.gz", hash = "sha256:f784335fff9cd163b783e842da04c6d9ed1b306fce8995fda109b170d6d453df"}, +] + +[package.dependencies] +boto3 = ">=1.25,<2.0" + +[package.extras] +full = ["peewee (>=3)", "pillow (>=9.4,<10.0)", "sqlalchemy (>=1.4)"] + +[[package]] +name = "filelock" +version = "3.14.0" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, + {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] + +[[package]] +name = "graphql-core" +version = "3.2.3" +description = "GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL." +optional = false +python-versions = ">=3.6,<4" +files = [ + {file = "graphql-core-3.2.3.tar.gz", hash = "sha256:06d2aad0ac723e35b1cb47885d3e5c45e956a53bc1b209a9fc5369007fe46676"}, + {file = "graphql_core-3.2.3-py3-none-any.whl", hash = "sha256:5766780452bd5ec8ba133f8bf287dc92713e3868ddd83aee4faab9fc3e303dc3"}, +] + +[[package]] +name = "greenlet" +version = "3.0.3" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "h2" +version = "4.1.0" +description = "HTTP/2 State-Machine based protocol implementation" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, + {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, +] + +[package.dependencies] +hpack = ">=4.0,<5" +hyperframe = ">=6.0,<7" + +[[package]] +name = "hpack" +version = "4.0.0" +description = "Pure-Python HPACK header compression" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, + {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, +] + +[[package]] +name = "httpcore" +version = "0.16.3" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, + {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, +] + +[package.dependencies] +anyio = ">=3.0,<5.0" +certifi = "*" +h11 = ">=0.13,<0.15" +sniffio = "==1.*" + +[package.extras] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "httptools" +version = "0.6.1" +description = "A collection of framework independent HTTP protocol utils." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, + {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, + {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, + {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, + {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, + {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, + {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, + {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, + {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, + {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, + {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, + {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, + {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, + {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, + {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, + {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, + {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, + {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, + {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, + {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, + {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, + {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, +] + +[package.extras] +test = ["Cython (>=0.29.24,<0.30.0)"] + +[[package]] +name = "httpx" +version = "0.23.3" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, + {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, +] + +[package.dependencies] +certifi = "*" +httpcore = ">=0.15.0,<0.17.0" +rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "hypercorn" +version = "0.16.0" +description = "A ASGI Server based on Hyper libraries and inspired by Gunicorn" +optional = false +python-versions = ">=3.8" +files = [ + {file = "hypercorn-0.16.0-py3-none-any.whl", hash = "sha256:929e45c4acde3fbf7c58edf55336d30a009d2b4cb1f1eb96e6a515d61b663f58"}, + {file = "hypercorn-0.16.0.tar.gz", hash = "sha256:3b17d1dcf4992c1f262d9f9dd799c374125d0b9a8e40e1e2d11e2938b0adfe03"}, +] + +[package.dependencies] +h11 = "*" +h2 = ">=3.1.0" +priority = "*" +uvloop = {version = "*", optional = true, markers = "platform_system != \"Windows\" and extra == \"uvloop\""} +wsproto = ">=0.14.0" + +[package.extras] +docs = ["pydata_sphinx_theme", "sphinxcontrib_mermaid"] +h3 = ["aioquic (>=0.9.0,<1.0)"] +trio = ["exceptiongroup (>=1.1.0)", "trio (>=0.22.0)"] +uvloop = ["uvloop"] + +[[package]] +name = "hyperframe" +version = "6.0.1" +description = "HTTP/2 framing layer for Python" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, + {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, +] + +[[package]] +name = "identify" +version = "2.5.36" +description = "File identification library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, + {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] + +[[package]] +name = "mako" +version = "1.3.5" +description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Mako-1.3.5-py3-none-any.whl", hash = "sha256:260f1dbc3a519453a9c856dedfe4beb4e50bd5a26d96386cb6c80856556bb91a"}, + {file = "Mako-1.3.5.tar.gz", hash = "sha256:48dbc20568c1d276a2698b36d968fa76161bf127194907ea6fc594fa81f943bc"}, +] + +[package.dependencies] +MarkupSafe = ">=0.9.2" + +[package.extras] +babel = ["Babel"] +lingua = ["lingua"] +testing = ["pytest"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "nodeenv" +version = "1.9.0" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.0-py2.py3-none-any.whl", hash = "sha256:508ecec98f9f3330b636d4448c0f1a56fc68017c68f1e7857ebc52acf0eb879a"}, + {file = "nodeenv-1.9.0.tar.gz", hash = "sha256:07f144e90dae547bf0d4ee8da0ee42664a42a04e02ed68e06324348dafe4bdb1"}, +] + +[[package]] +name = "orjson" +version = "3.10.3" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, + {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, + {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, + {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, + {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, + {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, + {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, + {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, + {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, + {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, + {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, + {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, + {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, + {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, + {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, + {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, +] + +[[package]] +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] + +[[package]] +name = "pillow" +version = "10.3.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "platformdirs" +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pre-commit" +version = "3.7.1" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, + {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "priority" +version = "2.0.0" +description = "A pure-Python implementation of the HTTP/2 priority tree" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "priority-2.0.0-py3-none-any.whl", hash = "sha256:6f8eefce5f3ad59baf2c080a664037bb4725cd0a790d53d59ab4059288faf6aa"}, + {file = "priority-2.0.0.tar.gz", hash = "sha256:c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0"}, +] + +[[package]] +name = "pydantic" +version = "2.7.2" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.7.2-py3-none-any.whl", hash = "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7"}, + {file = "pydantic-2.7.2.tar.gz", hash = "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7"}, +] + +[package.dependencies] +annotated-types = ">=0.4.0" +email-validator = {version = ">=2.0.0", optional = true, markers = "extra == \"email\""} +pydantic-core = "2.18.3" +typing-extensions = ">=4.6.1" + +[package.extras] +email = ["email-validator (>=2.0.0)"] + +[[package]] +name = "pydantic-core" +version = "2.18.3" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.18.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:744697428fcdec6be5670460b578161d1ffe34743a5c15656be7ea82b008197c"}, + {file = "pydantic_core-2.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37b40c05ced1ba4218b14986fe6f283d22e1ae2ff4c8e28881a70fb81fbfcda7"}, + {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a9a75622357076efb6b311983ff190fbfb3c12fc3a853122b34d3d358126c"}, + {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2e253af04ceaebde8eb201eb3f3e3e7e390f2d275a88300d6a1959d710539e2"}, + {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:855ec66589c68aa367d989da5c4755bb74ee92ccad4fdb6af942c3612c067e34"}, + {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d3e42bb54e7e9d72c13ce112e02eb1b3b55681ee948d748842171201a03a98a"}, + {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6ac9ffccc9d2e69d9fba841441d4259cb668ac180e51b30d3632cd7abca2b9b"}, + {file = "pydantic_core-2.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c56eca1686539fa0c9bda992e7bd6a37583f20083c37590413381acfc5f192d6"}, + {file = "pydantic_core-2.18.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426"}, + {file = "pydantic_core-2.18.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:98ed737567d8f2ecd54f7c8d4f8572ca7c7921ede93a2e52939416170d357812"}, + {file = "pydantic_core-2.18.3-cp310-none-win32.whl", hash = "sha256:9f9e04afebd3ed8c15d67a564ed0a34b54e52136c6d40d14c5547b238390e779"}, + {file = "pydantic_core-2.18.3-cp310-none-win_amd64.whl", hash = "sha256:45e4ffbae34f7ae30d0047697e724e534a7ec0a82ef9994b7913a412c21462a0"}, + {file = "pydantic_core-2.18.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b9ebe8231726c49518b16b237b9fe0d7d361dd221302af511a83d4ada01183ab"}, + {file = "pydantic_core-2.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b8e20e15d18bf7dbb453be78a2d858f946f5cdf06c5072453dace00ab652e2b2"}, + {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0d9ff283cd3459fa0bf9b0256a2b6f01ac1ff9ffb034e24457b9035f75587cb"}, + {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f7ef5f0ebb77ba24c9970da18b771711edc5feaf00c10b18461e0f5f5949231"}, + {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73038d66614d2e5cde30435b5afdced2b473b4c77d4ca3a8624dd3e41a9c19be"}, + {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6afd5c867a74c4d314c557b5ea9520183fadfbd1df4c2d6e09fd0d990ce412cd"}, + {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd7df92f28d351bb9f12470f4c533cf03d1b52ec5a6e5c58c65b183055a60106"}, + {file = "pydantic_core-2.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80aea0ffeb1049336043d07799eace1c9602519fb3192916ff525b0287b2b1e4"}, + {file = "pydantic_core-2.18.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaee40f25bba38132e655ffa3d1998a6d576ba7cf81deff8bfa189fb43fd2bbe"}, + {file = "pydantic_core-2.18.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9128089da8f4fe73f7a91973895ebf2502539d627891a14034e45fb9e707e26d"}, + {file = "pydantic_core-2.18.3-cp311-none-win32.whl", hash = "sha256:fec02527e1e03257aa25b1a4dcbe697b40a22f1229f5d026503e8b7ff6d2eda7"}, + {file = "pydantic_core-2.18.3-cp311-none-win_amd64.whl", hash = "sha256:58ff8631dbab6c7c982e6425da8347108449321f61fe427c52ddfadd66642af7"}, + {file = "pydantic_core-2.18.3-cp311-none-win_arm64.whl", hash = "sha256:3fc1c7f67f34c6c2ef9c213e0f2a351797cda98249d9ca56a70ce4ebcaba45f4"}, + {file = "pydantic_core-2.18.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f0928cde2ae416a2d1ebe6dee324709c6f73e93494d8c7aea92df99aab1fc40f"}, + {file = "pydantic_core-2.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9"}, + {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e862823be114387257dacbfa7d78547165a85d7add33b446ca4f4fae92c7ff5c"}, + {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a36f78674cbddc165abab0df961b5f96b14461d05feec5e1f78da58808b97e7"}, + {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba905d184f62e7ddbb7a5a751d8a5c805463511c7b08d1aca4a3e8c11f2e5048"}, + {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fdd362f6a586e681ff86550b2379e532fee63c52def1c666887956748eaa326"}, + {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24b214b7ee3bd3b865e963dbed0f8bc5375f49449d70e8d407b567af3222aae4"}, + {file = "pydantic_core-2.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:691018785779766127f531674fa82bb368df5b36b461622b12e176c18e119022"}, + {file = "pydantic_core-2.18.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:60e4c625e6f7155d7d0dcac151edf5858102bc61bf959d04469ca6ee4e8381bd"}, + {file = "pydantic_core-2.18.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4e651e47d981c1b701dcc74ab8fec5a60a5b004650416b4abbef13db23bc7be"}, + {file = "pydantic_core-2.18.3-cp312-none-win32.whl", hash = "sha256:ffecbb5edb7f5ffae13599aec33b735e9e4c7676ca1633c60f2c606beb17efc5"}, + {file = "pydantic_core-2.18.3-cp312-none-win_amd64.whl", hash = "sha256:2c8333f6e934733483c7eddffdb094c143b9463d2af7e6bd85ebcb2d4a1b82c6"}, + {file = "pydantic_core-2.18.3-cp312-none-win_arm64.whl", hash = "sha256:7a20dded653e516a4655f4c98e97ccafb13753987434fe7cf044aa25f5b7d417"}, + {file = "pydantic_core-2.18.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:eecf63195be644b0396f972c82598cd15693550f0ff236dcf7ab92e2eb6d3522"}, + {file = "pydantic_core-2.18.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c44efdd3b6125419c28821590d7ec891c9cb0dff33a7a78d9d5c8b6f66b9702"}, + {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e59fca51ffbdd1638b3856779342ed69bcecb8484c1d4b8bdb237d0eb5a45e2"}, + {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70cf099197d6b98953468461d753563b28e73cf1eade2ffe069675d2657ed1d5"}, + {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63081a49dddc6124754b32a3774331467bfc3d2bd5ff8f10df36a95602560361"}, + {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:370059b7883485c9edb9655355ff46d912f4b03b009d929220d9294c7fd9fd60"}, + {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a64faeedfd8254f05f5cf6fc755023a7e1606af3959cfc1a9285744cc711044"}, + {file = "pydantic_core-2.18.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19d2e725de0f90d8671f89e420d36c3dd97639b98145e42fcc0e1f6d492a46dc"}, + {file = "pydantic_core-2.18.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:67bc078025d70ec5aefe6200ef094576c9d86bd36982df1301c758a9fff7d7f4"}, + {file = "pydantic_core-2.18.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:adf952c3f4100e203cbaf8e0c907c835d3e28f9041474e52b651761dc248a3c0"}, + {file = "pydantic_core-2.18.3-cp38-none-win32.whl", hash = "sha256:9a46795b1f3beb167eaee91736d5d17ac3a994bf2215a996aed825a45f897558"}, + {file = "pydantic_core-2.18.3-cp38-none-win_amd64.whl", hash = "sha256:200ad4e3133cb99ed82342a101a5abf3d924722e71cd581cc113fe828f727fbc"}, + {file = "pydantic_core-2.18.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:304378b7bf92206036c8ddd83a2ba7b7d1a5b425acafff637172a3aa72ad7083"}, + {file = "pydantic_core-2.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c826870b277143e701c9ccf34ebc33ddb4d072612683a044e7cce2d52f6c3fef"}, + {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e201935d282707394f3668380e41ccf25b5794d1b131cdd96b07f615a33ca4b1"}, + {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5560dda746c44b48bf82b3d191d74fe8efc5686a9ef18e69bdabccbbb9ad9442"}, + {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b32c2a1f8032570842257e4c19288eba9a2bba4712af542327de9a1204faff8"}, + {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:929c24e9dea3990bc8bcd27c5f2d3916c0c86f5511d2caa69e0d5290115344a9"}, + {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1a8376fef60790152564b0eab376b3e23dd6e54f29d84aad46f7b264ecca943"}, + {file = "pydantic_core-2.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dccf3ef1400390ddd1fb55bf0632209d39140552d068ee5ac45553b556780e06"}, + {file = "pydantic_core-2.18.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41dbdcb0c7252b58fa931fec47937edb422c9cb22528f41cb8963665c372caf6"}, + {file = "pydantic_core-2.18.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:666e45cf071669fde468886654742fa10b0e74cd0fa0430a46ba6056b24fb0af"}, + {file = "pydantic_core-2.18.3-cp39-none-win32.whl", hash = "sha256:f9c08cabff68704a1b4667d33f534d544b8a07b8e5d039c37067fceb18789e78"}, + {file = "pydantic_core-2.18.3-cp39-none-win_amd64.whl", hash = "sha256:4afa5f5973e8572b5c0dcb4e2d4fda7890e7cd63329bd5cc3263a25c92ef0026"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:77319771a026f7c7d29c6ebc623de889e9563b7087911b46fd06c044a12aa5e9"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:df11fa992e9f576473038510d66dd305bcd51d7dd508c163a8c8fe148454e059"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d531076bdfb65af593326ffd567e6ab3da145020dafb9187a1d131064a55f97c"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d33ce258e4e6e6038f2b9e8b8a631d17d017567db43483314993b3ca345dcbbb"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1f9cd7f5635b719939019be9bda47ecb56e165e51dd26c9a217a433e3d0d59a9"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cd4a032bb65cc132cae1fe3e52877daecc2097965cd3914e44fbd12b00dae7c5"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f2718430098bcdf60402136c845e4126a189959d103900ebabb6774a5d9fdb"}, + {file = "pydantic_core-2.18.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c0037a92cf0c580ed14e10953cdd26528e8796307bb8bb312dc65f71547df04d"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b95a0972fac2b1ff3c94629fc9081b16371dad870959f1408cc33b2f78ad347a"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a62e437d687cc148381bdd5f51e3e81f5b20a735c55f690c5be94e05da2b0d5c"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b367a73a414bbb08507da102dc2cde0fa7afe57d09b3240ce82a16d608a7679c"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd4435b8d83f0c9561a2a9585b1de78f1abb17cb0cef5f39bf6a4b47d19bafe3"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:616221a6d473c5b9aa83fa8982745441f6a4a62a66436be9445c65f241b86c94"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7e6382ce89a92bc1d0c0c5edd51e931432202b9080dc921d8d003e616402efd1"}, + {file = "pydantic_core-2.18.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff58f379345603d940e461eae474b6bbb6dab66ed9a851ecd3cb3709bf4dcf6a"}, + {file = "pydantic_core-2.18.3.tar.gz", hash = "sha256:432e999088d85c8f36b9a3f769a8e2b57aabd817bbb729a90d1fe7f18f6f1f39"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pydantic-settings" +version = "2.2.1" +description = "Settings management using Pydantic" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, +] + +[package.dependencies] +pydantic = ">=2.3.0" +python-dotenv = ">=0.21.0" + +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "pydash" +version = "8.0.1" +description = "The kitchen sink of Python utility libraries for doing \"stuff\" in a functional way. Based on the Lo-Dash Javascript library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydash-8.0.1-py3-none-any.whl", hash = "sha256:60265bab97fd00d5afd27dfbff9b6abfa22d0a965e166476b9066d84cd44c940"}, + {file = "pydash-8.0.1.tar.gz", hash = "sha256:a24619643d3c054bfd56a9ae1cb7bd00e9774eaf369d7bb8d62b3daa2462bdbd"}, +] + +[package.dependencies] +typing-extensions = ">3.10,<4.6.0 || >4.6.0" + +[package.extras] +dev = ["build", "coverage", "furo", "invoke", "mypy", "pytest", "pytest-cov", "pytest-mypy-testing", "ruff", "sphinx", "sphinx-autodoc-typehints", "tox", "twine", "wheel"] + +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pyjwt" +version = "2.8.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, +] + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] + +[[package]] +name = "pytest" +version = "8.2.1" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"}, + {file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2.0" + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "python-multipart" +version = "0.0.9" +description = "A streaming multipart parser for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, + {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, +] + +[package.extras] +dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "rfc3986" +version = "1.5.0" +description = "Validating URI References per RFC 3986" +optional = false +python-versions = "*" +files = [ + {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, + {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, +] + +[package.dependencies] +idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} + +[package.extras] +idna2008 = ["idna"] + +[[package]] +name = "rich" +version = "13.7.1" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "s3transfer" +version = "0.10.1" +description = "An Amazon S3 Transfer Manager" +optional = false +python-versions = ">= 3.8" +files = [ + {file = "s3transfer-0.10.1-py3-none-any.whl", hash = "sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d"}, + {file = "s3transfer-0.10.1.tar.gz", hash = "sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19"}, +] + +[package.dependencies] +botocore = ">=1.33.2,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] + +[[package]] +name = "shellingham" +version = "1.5.4" +description = "Tool to Detect Surrounding Shell" +optional = false +python-versions = ">=3.7" +files = [ + {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, + {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, +] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.30" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3b48154678e76445c7ded1896715ce05319f74b1e73cf82d4f8b59b46e9c0ddc"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2753743c2afd061bb95a61a51bbb6a1a11ac1c44292fad898f10c9839a7f75b2"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7bfc726d167f425d4c16269a9a10fe8630ff6d14b683d588044dcef2d0f6be7"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4f61ada6979223013d9ab83a3ed003ded6959eae37d0d685db2c147e9143797"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a365eda439b7a00732638f11072907c1bc8e351c7665e7e5da91b169af794af"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bba002a9447b291548e8d66fd8c96a6a7ed4f2def0bb155f4f0a1309fd2735d5"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-win32.whl", hash = "sha256:0138c5c16be3600923fa2169532205d18891b28afa817cb49b50e08f62198bb8"}, + {file = "SQLAlchemy-2.0.30-cp310-cp310-win_amd64.whl", hash = "sha256:99650e9f4cf3ad0d409fed3eec4f071fadd032e9a5edc7270cd646a26446feeb"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:955991a09f0992c68a499791a753523f50f71a6885531568404fa0f231832aa0"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f69e4c756ee2686767eb80f94c0125c8b0a0b87ede03eacc5c8ae3b54b99dc46"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69c9db1ce00e59e8dd09d7bae852a9add716efdc070a3e2068377e6ff0d6fdaa"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1429a4b0f709f19ff3b0cf13675b2b9bfa8a7e79990003207a011c0db880a13"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:efedba7e13aa9a6c8407c48facfdfa108a5a4128e35f4c68f20c3407e4376aa9"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16863e2b132b761891d6c49f0a0f70030e0bcac4fd208117f6b7e053e68668d0"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-win32.whl", hash = "sha256:2ecabd9ccaa6e914e3dbb2aa46b76dede7eadc8cbf1b8083c94d936bcd5ffb49"}, + {file = "SQLAlchemy-2.0.30-cp311-cp311-win_amd64.whl", hash = "sha256:0b3f4c438e37d22b83e640f825ef0f37b95db9aa2d68203f2c9549375d0b2260"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5a79d65395ac5e6b0c2890935bad892eabb911c4aa8e8015067ddb37eea3d56c"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a5baf9267b752390252889f0c802ea13b52dfee5e369527da229189b8bd592e"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cb5a646930c5123f8461f6468901573f334c2c63c795b9af350063a736d0134"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:296230899df0b77dec4eb799bcea6fbe39a43707ce7bb166519c97b583cfcab3"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c62d401223f468eb4da32627bffc0c78ed516b03bb8a34a58be54d618b74d472"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3b69e934f0f2b677ec111b4d83f92dc1a3210a779f69bf905273192cf4ed433e"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-win32.whl", hash = "sha256:77d2edb1f54aff37e3318f611637171e8ec71472f1fdc7348b41dcb226f93d90"}, + {file = "SQLAlchemy-2.0.30-cp312-cp312-win_amd64.whl", hash = "sha256:b6c7ec2b1f4969fc19b65b7059ed00497e25f54069407a8701091beb69e591a5"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a8e3b0a7e09e94be7510d1661339d6b52daf202ed2f5b1f9f48ea34ee6f2d57"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b60203c63e8f984df92035610c5fb76d941254cf5d19751faab7d33b21e5ddc0"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1dc3eabd8c0232ee8387fbe03e0a62220a6f089e278b1f0aaf5e2d6210741ad"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:40ad017c672c00b9b663fcfcd5f0864a0a97828e2ee7ab0c140dc84058d194cf"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e42203d8d20dc704604862977b1470a122e4892791fe3ed165f041e4bf447a1b"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-win32.whl", hash = "sha256:2a4f4da89c74435f2bc61878cd08f3646b699e7d2eba97144030d1be44e27584"}, + {file = "SQLAlchemy-2.0.30-cp37-cp37m-win_amd64.whl", hash = "sha256:b6bf767d14b77f6a18b6982cbbf29d71bede087edae495d11ab358280f304d8e"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc0c53579650a891f9b83fa3cecd4e00218e071d0ba00c4890f5be0c34887ed3"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:311710f9a2ee235f1403537b10c7687214bb1f2b9ebb52702c5aa4a77f0b3af7"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:408f8b0e2c04677e9c93f40eef3ab22f550fecb3011b187f66a096395ff3d9fd"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37a4b4fb0dd4d2669070fb05b8b8824afd0af57587393015baee1cf9890242d9"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a943d297126c9230719c27fcbbeab57ecd5d15b0bd6bfd26e91bfcfe64220621"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0a089e218654e740a41388893e090d2e2c22c29028c9d1353feb38638820bbeb"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-win32.whl", hash = "sha256:fa561138a64f949f3e889eb9ab8c58e1504ab351d6cf55259dc4c248eaa19da6"}, + {file = "SQLAlchemy-2.0.30-cp38-cp38-win_amd64.whl", hash = "sha256:7d74336c65705b986d12a7e337ba27ab2b9d819993851b140efdf029248e818e"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae8c62fe2480dd61c532ccafdbce9b29dacc126fe8be0d9a927ca3e699b9491a"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2383146973a15435e4717f94c7509982770e3e54974c71f76500a0136f22810b"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8409de825f2c3b62ab15788635ccaec0c881c3f12a8af2b12ae4910a0a9aeef6"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0094c5dc698a5f78d3d1539853e8ecec02516b62b8223c970c86d44e7a80f6c7"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:edc16a50f5e1b7a06a2dcc1f2205b0b961074c123ed17ebda726f376a5ab0953"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f7703c2010355dd28f53deb644a05fc30f796bd8598b43f0ba678878780b6e4c"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-win32.whl", hash = "sha256:1f9a727312ff6ad5248a4367358e2cf7e625e98b1028b1d7ab7b806b7d757513"}, + {file = "SQLAlchemy-2.0.30-cp39-cp39-win_amd64.whl", hash = "sha256:a0ef36b28534f2a5771191be6edb44cc2673c7b2edf6deac6562400288664221"}, + {file = "SQLAlchemy-2.0.30-py3-none-any.whl", hash = "sha256:7108d569d3990c71e26a42f60474b4c02c8586c4681af5fd67e51a044fdea86a"}, + {file = "SQLAlchemy-2.0.30.tar.gz", hash = "sha256:2b1708916730f4830bc69d6f49d37f7698b5bd7530aca7f04f785f8849e95255"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +typing-extensions = ">=4.6.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3_binary"] + +[[package]] +name = "sse-starlette" +version = "2.1.0" +description = "SSE plugin for Starlette" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sse_starlette-2.1.0-py3-none-any.whl", hash = "sha256:ea92bcb366c12482c1e23cab6b5afed19eb1320efe9ddfba8a0cf1f7f73ffba9"}, + {file = "sse_starlette-2.1.0.tar.gz", hash = "sha256:ffff6e7d948f925f347e662be77af5783a6b93efce15d42c03004dcd7d6d91d3"}, +] + +[package.dependencies] +anyio = "*" +starlette = "*" +uvicorn = "*" + +[package.extras] +examples = ["fastapi"] + +[[package]] +name = "starlette" +version = "0.37.2" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, + {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + +[[package]] +name = "strawberry-graphql" +version = "0.230.0" +description = "A library for creating GraphQL APIs" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "strawberry_graphql-0.230.0-py3-none-any.whl", hash = "sha256:83700255420102d7192a31223e165f83b140191f7800d18314e533dc73b723f8"}, + {file = "strawberry_graphql-0.230.0.tar.gz", hash = "sha256:34672bab677ce35fe92837dc6c2f194b018daa5b11cf330e71104bec18dc2922"}, +] + +[package.dependencies] +graphql-core = ">=3.2.0,<3.3.0" +python-dateutil = ">=2.7.0,<3.0.0" +typing-extensions = ">=4.5.0" + +[package.extras] +aiohttp = ["aiohttp (>=3.7.4.post0,<4.0.0)"] +asgi = ["python-multipart (>=0.0.7)", "starlette (>=0.18.0)"] +chalice = ["chalice (>=1.22,<2.0)"] +channels = ["asgiref (>=3.2,<4.0)", "channels (>=3.0.5)"] +cli = ["graphlib_backport", "libcst (>=0.4.7)", "pygments (>=2.3,<3.0)", "rich (>=12.0.0)", "typer (>=0.7.0)"] +debug = ["libcst (>=0.4.7)", "rich (>=12.0.0)"] +debug-server = ["libcst (>=0.4.7)", "pygments (>=2.3,<3.0)", "python-multipart (>=0.0.7)", "rich (>=12.0.0)", "starlette (>=0.18.0)", "typer (>=0.7.0)", "uvicorn (>=0.11.6)"] +django = ["Django (>=3.2)", "asgiref (>=3.2,<4.0)"] +fastapi = ["fastapi (>=0.65.2)", "python-multipart (>=0.0.7)"] +flask = ["flask (>=1.1)"] +litestar = ["litestar (>=2)"] +opentelemetry = ["opentelemetry-api (<2)", "opentelemetry-sdk (<2)"] +pydantic = ["pydantic (>1.6.1)"] +pyinstrument = ["pyinstrument (>=4.0.0)"] +quart = ["quart (>=0.19.3)"] +sanic = ["sanic (>=20.12.2)"] +starlite = ["starlite (>=1.48.0)"] + +[[package]] +name = "typer" +version = "0.12.3" +description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +optional = false +python-versions = ">=3.7" +files = [ + {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"}, + {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"}, +] + +[package.dependencies] +click = ">=8.0.0" +rich = ">=10.11.0" +shellingham = ">=1.3.0" +typing-extensions = ">=3.7.4.3" + +[[package]] +name = "typing-extensions" +version = "4.12.1" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.1-py3-none-any.whl", hash = "sha256:6024b58b69089e5a89c347397254e35f1bf02a907728ec7fee9bf0fe837d203a"}, + {file = "typing_extensions-4.12.1.tar.gz", hash = "sha256:915f5e35ff76f56588223f15fdd5938f9a1cf9195c0de25130c627e4d597f6d1"}, +] + +[[package]] +name = "ujson" +version = "5.10.0" +description = "Ultra fast JSON encoder and decoder for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, + {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, + {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, + {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, + {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, + {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, + {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, + {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, + {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, + {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, + {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, + {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, + {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, + {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, + {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, + {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, + {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, + {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, + {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, + {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, + {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, + {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, + {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, + {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, + {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, + {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, + {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, + {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, + {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, + {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, + {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, + {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, + {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, + {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, + {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, +] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "uvicorn" +version = "0.30.0" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.30.0-py3-none-any.whl", hash = "sha256:78fa0b5f56abb8562024a59041caeb555c86e48d0efdd23c3fe7de7a4075bdab"}, + {file = "uvicorn-0.30.0.tar.gz", hash = "sha256:f678dec4fa3a39706bbf49b9ec5fc40049d42418716cea52b53f07828a60aa37"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} +h11 = ">=0.8" +httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} +python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} +websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[[package]] +name = "uvloop" +version = "0.19.0" +description = "Fast implementation of asyncio event loop on top of libuv" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, + {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, + {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, + {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, + {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, + {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, + {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, + {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, + {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, + {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, + {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, + {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, + {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, + {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, + {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, + {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, + {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, +] + +[package.extras] +docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] +test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] + +[[package]] +name = "virtualenv" +version = "20.26.2" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.26.2-py3-none-any.whl", hash = "sha256:a624db5e94f01ad993d476b9ee5346fdf7b9de43ccaee0e0197012dc838a0e9b"}, + {file = "virtualenv-20.26.2.tar.gz", hash = "sha256:82bf0f4eebbb78d36ddaee0283d43fe5736b53880b8a8cdcd37390a07ac3741c"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "watchfiles" +version = "0.22.0" +description = "Simple, modern and high performance file watching and code reload in python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "watchfiles-0.22.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:da1e0a8caebf17976e2ffd00fa15f258e14749db5e014660f53114b676e68538"}, + {file = "watchfiles-0.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61af9efa0733dc4ca462347becb82e8ef4945aba5135b1638bfc20fad64d4f0e"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d9188979a58a096b6f8090e816ccc3f255f137a009dd4bbec628e27696d67c1"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2bdadf6b90c099ca079d468f976fd50062905d61fae183f769637cb0f68ba59a"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:067dea90c43bf837d41e72e546196e674f68c23702d3ef80e4e816937b0a3ffd"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbf8a20266136507abf88b0df2328e6a9a7c7309e8daff124dda3803306a9fdb"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1235c11510ea557fe21be5d0e354bae2c655a8ee6519c94617fe63e05bca4171"}, + {file = "watchfiles-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2444dc7cb9d8cc5ab88ebe792a8d75709d96eeef47f4c8fccb6df7c7bc5be71"}, + {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c5af2347d17ab0bd59366db8752d9e037982e259cacb2ba06f2c41c08af02c39"}, + {file = "watchfiles-0.22.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9624a68b96c878c10437199d9a8b7d7e542feddda8d5ecff58fdc8e67b460848"}, + {file = "watchfiles-0.22.0-cp310-none-win32.whl", hash = "sha256:4b9f2a128a32a2c273d63eb1fdbf49ad64852fc38d15b34eaa3f7ca2f0d2b797"}, + {file = "watchfiles-0.22.0-cp310-none-win_amd64.whl", hash = "sha256:2627a91e8110b8de2406d8b2474427c86f5a62bf7d9ab3654f541f319ef22bcb"}, + {file = "watchfiles-0.22.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8c39987a1397a877217be1ac0fb1d8b9f662c6077b90ff3de2c05f235e6a8f96"}, + {file = "watchfiles-0.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a927b3034d0672f62fb2ef7ea3c9fc76d063c4b15ea852d1db2dc75fe2c09696"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052d668a167e9fc345c24203b104c313c86654dd6c0feb4b8a6dfc2462239249"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e45fb0d70dda1623a7045bd00c9e036e6f1f6a85e4ef2c8ae602b1dfadf7550"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c49b76a78c156979759d759339fb62eb0549515acfe4fd18bb151cc07366629c"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4a65474fd2b4c63e2c18ac67a0c6c66b82f4e73e2e4d940f837ed3d2fd9d4da"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc0cba54f47c660d9fa3218158b8963c517ed23bd9f45fe463f08262a4adae1"}, + {file = "watchfiles-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94ebe84a035993bb7668f58a0ebf998174fb723a39e4ef9fce95baabb42b787f"}, + {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e0f0a874231e2839abbf473256efffe577d6ee2e3bfa5b540479e892e47c172d"}, + {file = "watchfiles-0.22.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:213792c2cd3150b903e6e7884d40660e0bcec4465e00563a5fc03f30ea9c166c"}, + {file = "watchfiles-0.22.0-cp311-none-win32.whl", hash = "sha256:b44b70850f0073b5fcc0b31ede8b4e736860d70e2dbf55701e05d3227a154a67"}, + {file = "watchfiles-0.22.0-cp311-none-win_amd64.whl", hash = "sha256:00f39592cdd124b4ec5ed0b1edfae091567c72c7da1487ae645426d1b0ffcad1"}, + {file = "watchfiles-0.22.0-cp311-none-win_arm64.whl", hash = "sha256:3218a6f908f6a276941422b035b511b6d0d8328edd89a53ae8c65be139073f84"}, + {file = "watchfiles-0.22.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c7b978c384e29d6c7372209cbf421d82286a807bbcdeb315427687f8371c340a"}, + {file = "watchfiles-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd4c06100bce70a20c4b81e599e5886cf504c9532951df65ad1133e508bf20be"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:425440e55cd735386ec7925f64d5dde392e69979d4c8459f6bb4e920210407f2"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68fe0c4d22332d7ce53ad094622b27e67440dacefbaedd29e0794d26e247280c"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8a31bfd98f846c3c284ba694c6365620b637debdd36e46e1859c897123aa232"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc2e8fe41f3cac0660197d95216c42910c2b7e9c70d48e6d84e22f577d106fc1"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b7cc10261c2786c41d9207193a85c1db1b725cf87936df40972aab466179b6"}, + {file = "watchfiles-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28585744c931576e535860eaf3f2c0ec7deb68e3b9c5a85ca566d69d36d8dd27"}, + {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00095dd368f73f8f1c3a7982a9801190cc88a2f3582dd395b289294f8975172b"}, + {file = "watchfiles-0.22.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:52fc9b0dbf54d43301a19b236b4a4614e610605f95e8c3f0f65c3a456ffd7d35"}, + {file = "watchfiles-0.22.0-cp312-none-win32.whl", hash = "sha256:581f0a051ba7bafd03e17127735d92f4d286af941dacf94bcf823b101366249e"}, + {file = "watchfiles-0.22.0-cp312-none-win_amd64.whl", hash = "sha256:aec83c3ba24c723eac14225194b862af176d52292d271c98820199110e31141e"}, + {file = "watchfiles-0.22.0-cp312-none-win_arm64.whl", hash = "sha256:c668228833c5619f6618699a2c12be057711b0ea6396aeaece4ded94184304ea"}, + {file = "watchfiles-0.22.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d47e9ef1a94cc7a536039e46738e17cce058ac1593b2eccdede8bf72e45f372a"}, + {file = "watchfiles-0.22.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:28f393c1194b6eaadcdd8f941307fc9bbd7eb567995232c830f6aef38e8a6e88"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd64f3a4db121bc161644c9e10a9acdb836853155a108c2446db2f5ae1778c3d"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2abeb79209630da981f8ebca30a2c84b4c3516a214451bfc5f106723c5f45843"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cc382083afba7918e32d5ef12321421ef43d685b9a67cc452a6e6e18920890e"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d048ad5d25b363ba1d19f92dcf29023988524bee6f9d952130b316c5802069cb"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:103622865599f8082f03af4214eaff90e2426edff5e8522c8f9e93dc17caee13"}, + {file = "watchfiles-0.22.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3e1f3cf81f1f823e7874ae563457828e940d75573c8fbf0ee66818c8b6a9099"}, + {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8597b6f9dc410bdafc8bb362dac1cbc9b4684a8310e16b1ff5eee8725d13dcd6"}, + {file = "watchfiles-0.22.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0b04a2cbc30e110303baa6d3ddce8ca3664bc3403be0f0ad513d1843a41c97d1"}, + {file = "watchfiles-0.22.0-cp38-none-win32.whl", hash = "sha256:b610fb5e27825b570554d01cec427b6620ce9bd21ff8ab775fc3a32f28bba63e"}, + {file = "watchfiles-0.22.0-cp38-none-win_amd64.whl", hash = "sha256:fe82d13461418ca5e5a808a9e40f79c1879351fcaeddbede094028e74d836e86"}, + {file = "watchfiles-0.22.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3973145235a38f73c61474d56ad6199124e7488822f3a4fc97c72009751ae3b0"}, + {file = "watchfiles-0.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:280a4afbc607cdfc9571b9904b03a478fc9f08bbeec382d648181c695648202f"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a0d883351a34c01bd53cfa75cd0292e3f7e268bacf2f9e33af4ecede7e21d1d"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9165bcab15f2b6d90eedc5c20a7f8a03156b3773e5fb06a790b54ccecdb73385"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc1b9b56f051209be458b87edb6856a449ad3f803315d87b2da4c93b43a6fe72"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dc1fc25a1dedf2dd952909c8e5cb210791e5f2d9bc5e0e8ebc28dd42fed7562"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dc92d2d2706d2b862ce0568b24987eba51e17e14b79a1abcd2edc39e48e743c8"}, + {file = "watchfiles-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97b94e14b88409c58cdf4a8eaf0e67dfd3ece7e9ce7140ea6ff48b0407a593ec"}, + {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96eec15e5ea7c0b6eb5bfffe990fc7c6bd833acf7e26704eb18387fb2f5fd087"}, + {file = "watchfiles-0.22.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:28324d6b28bcb8d7c1041648d7b63be07a16db5510bea923fc80b91a2a6cbed6"}, + {file = "watchfiles-0.22.0-cp39-none-win32.whl", hash = "sha256:8c3e3675e6e39dc59b8fe5c914a19d30029e36e9f99468dddffd432d8a7b1c93"}, + {file = "watchfiles-0.22.0-cp39-none-win_amd64.whl", hash = "sha256:25c817ff2a86bc3de3ed2df1703e3d24ce03479b27bb4527c57e722f8554d971"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b810a2c7878cbdecca12feae2c2ae8af59bea016a78bc353c184fa1e09f76b68"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7e1f9c5d1160d03b93fc4b68a0aeb82fe25563e12fbcdc8507f8434ab6f823c"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:030bc4e68d14bcad2294ff68c1ed87215fbd9a10d9dea74e7cfe8a17869785ab"}, + {file = "watchfiles-0.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace7d060432acde5532e26863e897ee684780337afb775107c0a90ae8dbccfd2"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5834e1f8b71476a26df97d121c0c0ed3549d869124ed2433e02491553cb468c2"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0bc3b2f93a140df6806c8467c7f51ed5e55a931b031b5c2d7ff6132292e803d6"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fdebb655bb1ba0122402352b0a4254812717a017d2dc49372a1d47e24073795"}, + {file = "watchfiles-0.22.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c8e0aa0e8cc2a43561e0184c0513e291ca891db13a269d8d47cb9841ced7c71"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2f350cbaa4bb812314af5dab0eb8d538481e2e2279472890864547f3fe2281ed"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7a74436c415843af2a769b36bf043b6ccbc0f8d784814ba3d42fc961cdb0a9dc"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00ad0bcd399503a84cc688590cdffbe7a991691314dde5b57b3ed50a41319a31"}, + {file = "watchfiles-0.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a44e9481afc7a5ee3291b09c419abab93b7e9c306c9ef9108cb76728ca58d2"}, + {file = "watchfiles-0.22.0.tar.gz", hash = "sha256:988e981aaab4f3955209e7e28c7794acdb690be1efa7f16f8ea5aba7ffdadacb"}, +] + +[package.dependencies] +anyio = ">=3.0.0" + +[[package]] +name = "websockets" +version = "12.0" +description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, + {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, + {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, + {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, + {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, + {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, + {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, + {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, + {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, + {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, + {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, + {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, + {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, + {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, + {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, + {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, + {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, + {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, + {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, + {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, + {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, + {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, + {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, + {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, + {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, + {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, + {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, + {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, + {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, + {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, + {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, + {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, + {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, + {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, + {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, + {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, + {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, + {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, + {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, + {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, + {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, + {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, +] + +[[package]] +name = "wsproto" +version = "1.2.0" +description = "WebSockets state-machine based protocol implementation" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"}, + {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"}, +] + +[package.dependencies] +h11 = ">=0.9.0,<1" + +[metadata] +lock-version = "2.0" +python-versions = "^3.12" +content-hash = "65edde0001bccd4ea92cd760138a136e9122364ebf3ecc276ea4e423d3270c52" diff --git a/pyproject.toml b/pyproject.toml index d3d66f2..7012d3e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,38 @@ -[project] -name = "FuturamaAPI" -requires-python = ">= 3.12" - -[tool.pytest.ini_options] -addopts = "-ra -p configs.plugins.env_vars" -pythonpath = [ - "." -] +[tool.poetry] +name = "futuramaapi" +version = "1.0.0" +description = "Inspired REST and GraphQL API based on TV show Futurama" +authors = ["Ivan Koldakov "] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.12" +fastapi = "^0.111.0" +hypercorn = {extras = ["uvloop"], version = "^0.16.0"} +sqlalchemy = "^2.0.29" +pydantic-settings = "^2.2.1" +alembic = "^1.13.1" +pydantic = {extras = ["email"], version = "^2.7.1"} +fastapi-storages = "^0.3.0" +asyncpg = "^0.29.0" +pillow = "^10.3.0" +fastapi-pagination = "^0.12.24" +anyio = "^4.3.0" +sse-starlette = "^2.1.0" +pydash = "^8.0.1" +pyjwt = "^2.8.0" +fastapi-mail = {extras = ["httpx"], version = "^1.4.1"} +strawberry-graphql = "^0.230.0" + +[tool.poetry.group.dev.dependencies] +pre-commit = "^3.7.0" + +[tool.poetry.group.test.dependencies] +pytest = "^8.2.0" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" [tool.ruff] # Exclude a variety of commonly ignored directories. @@ -42,7 +68,7 @@ exclude = [ fix = true show-fixes = true -show-source = true +output-format = "full" line-length = 120 indent-width = 4 @@ -111,7 +137,7 @@ line-ending = "auto" # enabled. # docstring-code-line-length = "dynamic" -[tool.ruff.mccabe] +[tool.ruff.lint.mccabe] max-complexity = 10 [tool.ruff.lint.extend-per-file-ignores] @@ -125,7 +151,6 @@ follow_imports = "skip" ignore_missing_imports = true check_untyped_defs = true files = [ - "app", - "alembic", - "configs", + "futuramaapi", + "tests", ] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index bea8587..0000000 --- a/requirements.txt +++ /dev/null @@ -1,72 +0,0 @@ -aiosmtplib==2.0.2 -alembic==1.12.1 -annotated-types==0.6.0 -anyio==3.7.1 -asyncpg==0.29.0 -Babel==2.13.1 -blinker==1.7.0 -boto3==1.33.10 -botocore==1.33.10 -certifi==2023.11.17 -cffi==1.16.0 -cfgv==3.4.0 -click==8.1.7 -cryptography==42.0.4 -distlib==0.3.7 -dnspython==2.5.0 -ecdsa==0.18.0 -email-validator==2.1.0.post1 -fastapi==0.109.2 -fastapi-mail==1.4.1 -fastapi-pagination==0.12.13 -fastapi-storages==0.2.1 -filelock==3.13.1 -graphql-core==3.2.3 -greenlet==3.0.1 -h11==0.14.0 -h2==4.1.0 -hpack==4.0.0 -httpcore==0.16.3 -httpx==0.23.3 -Hypercorn==0.15.0 -hyperframe==6.0.1 -identify==2.5.32 -idna==3.4 -iniconfig==2.0.0 -Jinja2==3.1.3 -jmespath==1.0.1 -Mako==1.3.0 -MarkupSafe==2.1.3 -nodeenv==1.8.0 -packaging==23.2 -pillow==10.2.0 -platformdirs==4.0.0 -pluggy==1.3.0 -pre-commit==3.5.0 -priority==2.0.0 -pyasn1==0.5.1 -pycparser==2.21 -pydantic==2.5.1 -pydantic-settings==2.1.0 -pydantic_core==2.14.3 -pytest==7.4.3 -python-dateutil==2.8.2 -python-dotenv==1.0.1 -python-jose==3.3.0 -python-multipart==0.0.9 -PyYAML==6.0.1 -rfc3986==1.5.0 -rsa==4.9 -s3transfer==0.8.2 -setuptools==69.0.2 -six==1.16.0 -sniffio==1.3.0 -SQLAlchemy==2.0.23 -sse-starlette==1.8.2 -starlette==0.36.3 -strawberry-graphql==0.217.1 -typing_extensions==4.8.0 -urllib3==2.0.7 -uvloop==0.19.0 -virtualenv==20.24.7 -wsproto==1.2.0 diff --git a/static/intro-image.jpg b/static/intro-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07d63e31a4d41cd3e2877eca74e1091d075fbee0 GIT binary patch literal 701095 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 z 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 HJ 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

yaz&3Q7 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

)^Qk2EUJ7r& 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%0A#GI4UDYi-4_JFp6l) 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ਭ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 -

{{ _("FB00012") }}

-

{{ _("What is this?") }}

+

About

+

What is this?

- {% trans %} Welcome to {{ _("What is this?") }} Created with the intention of providing a learning playground for enthusiasts like you, FuturamaAPI opens the door for exploration and experimentation with new technologies. Dive into the world of Futurama, study, and try out the latest in web development. - {% endtrans %}

- {{ _("Check our") }} - {{ _("documentation") }} {{ _("to get started.") }} + Check our + documentation to get started.

-

{{ _("Key Features") }}

- {% trans %} +

+ Or you can start with Swagger Playground. +

+

Key Features

Comprehensive Access

@@ -43,18 +43,14 @@

Real-time Updates

Documentation

Get started quickly by checking out our documentation for a seamless learning experience.

- {% endtrans %} -

{{ _("Why?") }}

- {% trans %} +

Why?

FuturamaAPI was born out of the idea that even lesser-known TV shows deserve dedicated projects. It's a space to have fun with Futurama and simultaneously push the boundaries of technology. Embrace the challenge and discover the possibilities with FastAPI, SSE, WebSockets, GraphQL, Hypercorn, HTTP/2.0, and more.

- {% endtrans %} -

{{ _("Technical Stack?") }}

- {% trans %} +

Technical Stack?

Futurama is powered by a robust technical stack, including

  • Python
  • @@ -65,32 +61,25 @@

    {{ _("Technical Stack?") }}

  • Alembic for Migrations
  • Strawberry for GraphQL
- {% endtrans %} -

{{ _("Can I contribute?") }}

- {% trans %} +

Can I contribute?

Absolutely! Feel free to contribute to the project. Here is the link to get started. Whether you're a seasoned developer or just starting, your contributions are valuable.

- {% endtrans %} -

{{ _("Design?") }}

- {% trans %} +

Design?

Admittedly, design is not my strong suit. If you have HTML skills and a passion for design, please consider creating a pull request for this project. Any help is greatly appreciated.

- {% endtrans %} -

{{ _("Who are you?") }}

- {% trans %} +

Who are you?

I'm Ivan Koldakov, a Python developer and enthusiast. Connect with me on LinkedIn to stay in the loop and share your thoughts.

- {% endtrans %} {% endblock %} diff --git a/templates/base.html b/templates/base.html index d102ec3..2098453 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,7 +5,7 @@ - {% block titile %}{{ _("FB00002") }}{% endblock %} | {{ _("FB00001") }} + {% block title %}Welcome{% endblock %} | Futurama API {% block extra_styles %}{% endblock %} @@ -22,7 +22,7 @@ class="navbar-brand" href="{{ relative_path_for('root') }}" > - {{ _( "FB00001" ) }} + Futurama API