[project] name = "ormar" [tool.poetry] name = "ormar" version = "0.12.2" 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.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3 :: Only", ] [tool.poetry.dependencies] python = "^3.7.0" databases = ">=0.3.2,!=0.5.0,!=0.5.1,!=0.5.2,!=0.5.3,<0.6.3" pydantic = ">=1.6.1,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<1.10.12" SQLAlchemy = ">=1.3.18,<1.4.42" cryptography = { version = ">=35,<42", optional = true } # Async database drivers aiosqlite = { version = ">=0.17,<0.20", optional = true } aiomysql = { version = ">=0.1.0", optional = true } aiopg = { version = "^1.3.3", optional = true } asyncpg = { version = ">=0.24,<0.29", 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 = ">=0.9", optional = true } [tool.poetry.dependencies.orjson] version = ">=3.6.4" optional = true [tool.poetry.dependencies.typing-extensions] version = ">=3.7,<=5.0" python = "<3.8" [tool.poetry.dependencies.importlib-metadata] version = ">=3.1" python = "<3.8" [tool.poetry.dev-dependencies] # Testing pytest = "^7.4.0" pytest-cov = "^4.0.0" codecov = "^2.1.13" pytest-asyncio = "^0.21.1" fastapi = ">=0.70.1,<=0.101.1" flake8 = "^3.9.2" flake8-black = "^0.3.6" flake8-bugbear = "^23.3.12" flake8-import-order = "^0.18.1" flake8-bandit = "^3.0.0" flake8-builtins = "^2.1.0" flake8-variables-names = "^0.0.6" flake8-cognitive-complexity = "^0.1.0" flake8-functions = "^0.0.8" flake8-expression-complexity = "^0.0.11" # types mypy = "^0.982" types-ujson = "^5.8.0" types-PyMySQL = "^1.1.0" 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.2" mkdocs-material = ">=8.1.2,<9.3" mkdocs-material-extensions = "^1.1" mkdocstrings = {version = "==0.22.0", extras = ["python"]} mkdocs-gen-files = "^0.5.0" mkdocs-literate-nav = "^0.6.0" mkdocs-section-index = "^0.3.4" dataclasses = { version = ">=0.6.0,<0.8 || >0.8,<1.0.0" } # Performance testing yappi = "^1.4.0" pytest-benchmark = "^4.0.0" nest-asyncio = "^1.5.7" pre-commit = "^2.21.0" [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] httpx = "^0.24.1" asgi-lifespan = "^2.1.0" [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