[tool.black] line-length = 88 target-version = ['py311'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist | alembic/versions )/ ''' [tool.isort] profile = "black" line_length = 88 known_first_party = ["app", "tests"] known_third_party = ["fastapi", "sqlalchemy", "pydantic", "pytest", "httpx"] multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true skip = [ ".git", "__pycache__", ".venv", "venv", "env", ".tox", "build", "dist", "*.egg-info", ".pytest_cache", "alembic/versions" ] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = 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_no_return = true warn_unreachable = true strict_equality = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false disallow_incomplete_defs = false disallow_untyped_decorators = false [[tool.mypy.overrides]] module = [ "alembic.*", "qdrant_client.*", "redis.*", "uvicorn.*", "factory.*", "faker.*", "locust.*", "responses.*", "aioresponses.*" ] ignore_missing_imports = true [tool.pytest.ini_options] minversion = "7.0" testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" asyncio_mode = "auto" addopts = """ -v --strict-markers --strict-config --tb=short --cov=app --cov-report=term-missing --cov-report=html --cov-report=xml --cov-fail-under=80 """ markers = [ "unit: Unit tests", "integration: Integration tests", "e2e: End-to-end tests", "slow: Slow tests", "db: Tests that require database", "redis: Tests that require redis", "qdrant: Tests that require qdrant", ] [build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta"