[project]
name = "taskncoffee"
version = "0.1.0"
description = "simple task-manager"
authors = [
    {name = "IluaAir",email = "ilya@air.ru"}
]
license = {text = "MIT"}
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "sqlalchemy (>=2.0.41,<3.0.0)",
    "uvicorn (>=0.34.2,<0.35.0)",
    "aiosqlite (>=0.21.0,<0.22.0)",
    "pydantic-settings (>=2.9.1,<3.0.0)",
    "alembic (>=1.16.1,<2.0.0)",
    "ruff (>=0.11.12,<0.12.0)",
    "greenlet (>=3.2.2,<4.0.0)",
    "pydantic (>=2.11.7,<3.0.0)",
    "idna (>=3.10,<4.0)",
    "fastapi (>=0.115.14,<0.116.0)",
    "pyjwt (>=2.10.1,<3.0.0)",
    "passlib (>=1.7.4,<2.0.0)",
    "email-validator (>=2.2.0,<3.0.0)",
    "bcrypt (==4.0.1)",
    "python-multipart (>=0.0.20,<0.0.21)",
]


[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.ruff]
# Exclude commonly ignored directories and files.
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".ipynb_checkpoints",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pyenv",
    ".pytest_cache",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    ".vscode",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "site-packages",
    "venv",
]
# Set the maximum line length for both linting and formatting.
line-length = 88
# Assume Python 3.9 for compatibility checks.
target-version = "py312"
# Enable preview features for early access to new rules and formatting changes.
preview = true

[tool.ruff.lint]
# Select specific rule groups to enable.
# 'E' for pycodestyle, 'F' for Pyflakes, 'I' for isort, 'B' for flake8-bugbear.
select = [
    "E",
    "F",
    "I",
    "B",
    "UP", # pyupgrade
    "SIM", # flake8-simplify
]
# Ignore specific rules within the selected groups.
ignore = [
    "UP",
    "B903",
    "B904",
    "E501", 
    "B008",
]

[tool.ruff.format]
# Enable Ruff's formatter.
docstring-code-format = true
[tool.poetry.group.test.dependencies]
pytest = "^8.4.1"
pytest-asyncio = "^1.1.0"

