[tool.poetry]
name = "sqlmodel"
version = "0"
description = "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness."
authors = ["Sebastián Ramírez <tiangolo@gmail.com>"]
readme = "README.md"
homepage = "https://github.com/tiangolo/sqlmodel"
documentation = "https://sqlmodel.tiangolo.com"
repository = "https://github.com/tiangolo/sqlmodel"
license = "MIT"
exclude = ["sqlmodel/sql/expression.py.jinja2"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Framework :: AsyncIO",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "Intended Audience :: System Administrators",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.7",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Topic :: Database",
    "Topic :: Database :: Database Engines/Servers",
    "Topic :: Internet",
    "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
    "Topic :: Internet :: WWW/HTTP",
    "Typing :: Typed",
]

[tool.poetry.dependencies]
python = "^3.7"
SQLAlchemy = ">=1.4.17,<=1.4.41"
pydantic = "^1.8.2"
sqlalchemy2-stubs = {version = "*", allow-prereleases = true}

[tool.poetry.group.dev.dependencies]
pytest = "^7.0.1"
mypy = "0.971"
black = "^22.10.0"
mkdocs = "^1.2.1"
mkdocs-material = "^8.1.4"
pillow = "^9.3.0"
cairosvg = "^2.5.2"
mdx-include = "^1.4.1"
coverage = {extras = ["toml"], version = "^6.2"}
fastapi = "^0.68.1"
requests = "^2.26.0"
ruff = "^0.1.1"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.poetry-version-plugin]
source = "init"

[tool.coverage.run]
parallel = true
source = [
    "docs_src",
    "tests",
    "sqlmodel"
]
context = '${CONTEXT}'

[tool.coverage.report]
exclude_lines = [
    "pragma: no cover",
    "@overload",
    'if __name__ == "__main__":',
    "if TYPE_CHECKING:",
]

[tool.mypy]
# --strict
disallow_any_generics = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
disallow_untyped_decorators = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_return_any = true
implicit_reexport = false
strict_equality = true
# --strict end

[[tool.mypy.overrides]]
module = "sqlmodel.sql.expression"
warn_unused_ignores = false

[tool.ruff]
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort
    "C",  # flake8-comprehensions
    "B",  # flake8-bugbear
]
ignore = [
    "E501",  # line too long, handled by black
    "B008",  # do not perform function calls in argument defaults
    "C901",  # too complex
]

[tool.ruff.per-file-ignores]
# "__init__.py" = ["F401"]

[tool.ruff.isort]
known-third-party = ["sqlmodel", "sqlalchemy", "pydantic", "fastapi"]
