[project] name = "ormar" [tool.poetry] name = "ormar" version = "0.20.0" description = "An async ORM with fastapi in mind and pydantic validation." authors = ["Radosław Drążkiewicz "] license = "MIT" readme = "README.md" homepage = "https://github.com/collerek/ormar" repository = "https://github.com/collerek/ormar" documentation = "https://collerek.github.io/ormar/" packages = [ { include="ormar" } ] keywords = [ "orm", "sqlalchemy", "fastapi", "pydantic", "databases", "async", "alembic", ] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Topic :: Internet :: WWW/HTTP", "Framework :: AsyncIO", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3 :: Only", ] [tool.poetry.dependencies] python = "^3.8.0" databases = "^0.7.0" pydantic = "v2.5.3" SQLAlchemy = "^1.4.42" cryptography = { version = ">=41.0.3,<43.0.0", optional = true } # Async database drivers aiosqlite = { version = "^0.19.0", optional = true } aiomysql = { version = ">=0.1.0", optional = true } aiopg = { version = "^1.3.3", optional = true } asyncpg = { version = "^0.28.0", optional = true } # Sync database drivers for standard tooling around setup/teardown/migrations. psycopg2-binary = { version = "^2.9.1", optional = true } mysqlclient = { version = "^2.1.0", optional = true } PyMySQL = { version = "^1.1.0", optional = true } [tool.poetry.dependencies.orjson] version = ">=3.6.4" optional = true [tool.poetry.extras] postgresql = ["asyncpg", "psycopg2-binary"] postgres = ["asyncpg", "psycopg2-binary"] aiopg = ["aiopg", "psycopg2-binary"] mysql = ["aiomysql", "PyMySQL"] sqlite = ["aiosqlite"] orjson = ["orjson"] crypto = ["cryptography"] all = [ "aiosqlite", "asyncpg", "aiopg", "psycopg2-binary", "aiomysql", "mysqlclient", "PyMySQL", "orjson", "cryptography", ] [tool.poetry.group.dev.dependencies] # Testing pytest = "^7.4.4" pytest-cov = "^4.0.0" codecov = "^2.1.13" pytest-asyncio = "^0.21.0" fastapi = "^0.109.1" black = "^24.1.0" ruff = "^0.0.275" # types mypy = "^1.8.0" types-ujson = "^5.7.0" types-PyMySQL = "^1.0.19" types-ipaddress = "^1.0.1" types-enum34 = "^1.1.1" types-cryptography = "^3.3.23" types-orjson = "^3.6.1" types-aiofiles = "^23.2.0" types-pkg-resources = "^0.1.3" types-requests = "^2.31.0" types-toml = "^0.10.8" # Documentation mkdocs = "^1.5.3" mkdocs-material = ">=8.1.2,<9.3" mkdocs-material-extensions = "^1.2" mkdocstrings = {version = "==0.22.0", extras = ["python"]} mkdocs-gen-files = "^0.5.0" mkdocs-literate-nav = "^0.6.1" mkdocs-section-index = "^0.3.7" dataclasses = { version = ">=0.6.0,<0.8 || >0.8,<1.0.0" } # Performance testing yappi = "^1.6.0" pytest-benchmark = "^4.0.0" nest-asyncio = "^1.6.0" pre-commit = "^2.21.0" httpx = "^0.24.1" asgi-lifespan = "^2.1.0" pydantic-extra-types = "^2.5.0" watchdog = "<4.0.0" pytest-codspeed = "^2.2.0" mike = "^2.0.0" faker = "^24.3.0" email-validator = "^2.1.1" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.mypy] # TODO: Enable mypy plugin after pydantic release supporting toml file disallow_untyped_calls = true disallow_untyped_defs = true disallow_incomplete_defs = true [[tool.mypy.overrides]] module = ["tests.*", "benchmarks.*"] disallow_untyped_calls = false disallow_untyped_defs = false disallow_incomplete_defs = false [[tool.mypy.overrides]] module = "docs_src.*" ignore_errors = true [[tool.mypy.overrides]] module = ["sqlalchemy.*", "asyncpg", "nest_asyncio"] ignore_missing_imports = true [tool.yapf] based_on_style = "pep8" disable_ending_comma_heuristic = true split_arguments_when_comma_terminated = true [tool.ruff] select = ["E", "F", "I"] ignore = ["E402"] line-length = 88 src = ["ormar", "tests"]