[project] name = "test-task-crm" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.14" dependencies = [ "alembic>=1.17.2", "asyncpg>=0.31.0", "fastapi[standard]>=0.121.3", "passlib[bcrypt]>=1.7.4", "pyjwt>=2.9.0", "pydantic-settings>=2.12.0", "sqlalchemy>=2.0.44", "redis>=5.2.0", ] [dependency-groups] dev = [ "isort>=7.0.0", "mypy>=1.18.2", "ruff>=0.14.6", "pytest>=8.3.3", "pytest-asyncio>=0.25.0", "aiosqlite>=0.20.0", ] [tool.mypy] python_version = "3.14" plugins = ["pydantic.mypy"] warn_unused_configs = true warn_return_any = true warn_unused_ignores = true disallow_untyped_defs = true disallow_untyped_calls = true disallow_any_unimported = true no_implicit_optional = true strict_optional = true show_error_codes = true exclude = ["migrations/"] [[tool.mypy.overrides]] module = ["tests.*"] ignore_missing_imports = true allow_untyped_defs = true [tool.ruff] line-length = 100 target-version = "py310" src = ["app", "migrations", "tests"] [tool.ruff.lint] select = [ "E", "F", "W", "B", "UP", "I", "N", "S", "Q", "C4", "COM", "DTZ", "G", "TID", ] ignore = ["E203", "E266", "E501", "S101"] [tool.ruff.lint.per-file-ignores] "app/api/**/*" = ["B008"] "tests/**/*" = ["S105", "S106", "S311"] "migrations/*" = ["B008", "DTZ001", "TID252"] [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto"