[tool.poetry]
name = "fastapi-sqlalchemy-asyncpg"
version = "0.0.11"
description = ""
authors = ["Jakub Miazek <the@grillazz.com>"]
packages = []
license = "MIT"

[tool.poetry.dependencies]
python = "^3.12"
fastapi = "0.110.2"
pydantic = {version = "2.7.1", extras = ["email"]}
pydantic-settings = "2.2.1"
sqlalchemy = "2.0.29"
uvicorn = { version = "0.29.0", extras = ["standard"]}
asyncpg = "0.29.0"
alembic = "1.13.1"
httpx = "0.27.0"
pytest = "^8.1.1"
pytest-cov = "5.0.0"
uvloop = "0.19.0"
httptools = "0.6.1"
rich = "13.7.1"
pyjwt = {version = "2.8.0", extras = ["cryptography"]}
redis = "5.0.4"
passlib = {version = "^1.7.4", extras = ["bcrypt"]}
polars = "^0.20.22"
python-multipart = "^0.0.9"
fastexcel = "^0.10.2"
fastapi-cache2 = {git = "https://github.com/yoco-tech/fastapi-cache.git",  rev = "main"}
inline-snapshot = "^0.8.1"
dirty-equals = "^0.7.1.post0"
polyfactory = "^2.15.0"

[tool.poetry.dev-dependencies]
devtools = { extras = ["pygments"], version = "*" }
safety = "*"
pyupgrade = "*"
ipython = "8.23.0"
ruff = "0.3.5"
psycopg2-binary = "*"
sqlacodegen = "3.0.0rc5"


[tool.poetry.group.dev.dependencies]
tryceratops = "^2.3.2"

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

[tool.ruff]
line-length = 120
indent-width = 4

lint.select = ["E", "F", "UP", "N", "C", "B"]
lint.ignore = ["E501"]

# Exclude a variety of commonly ignored directories.
exclude = ["alembic",]
# Assume Python 3.12
target-version = "py312"

[tool.ruff.lint.flake8-quotes]
docstring-quotes = "double"

[tool.ruff.lint.flake8-bugbear]
extend-immutable-calls = ["fastapi.Depends",]

[tool.pytest.ini_options]
addopts = "-v --doctest-modules --doctest-glob=*.md --ignore=alembic"
asyncio_mode = "strict"
env_files = [".env"]

[tool.tryceratops]
exclude = ["alembic",]

[tool.ruff.format]
# Like Black, use double quotes for strings.
quote-style = "double"

# Like Black, indent with spaces, rather than tabs.
indent-style = "space"

# Like Black, respect magic trailing commas.
skip-magic-trailing-comma = false

# Like Black, automatically detect the appropriate line ending.
line-ending = "auto"