# Настройки инструментов качества. Зависимости — в requirements*.txt, pytest — в pytest.ini. [tool.ruff] line-length = 120 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "PL"] [tool.ruff.lint.isort] known-first-party = ["src", "scripts"] [tool.mypy] python_version = "3.11" strict = false check_untyped_defs = true plugins = ["pydantic.mypy"] mypy_path = "." explicit_package_bases = true # Строгий режим для ORM-моделей и чистого домена. `strict = true` в overrides mypy (2.x) применяет глобально, # а не к модулю, поэтому флаги семейства strict перечислены явно. [[tool.mypy.overrides]] module = ["src.models.*", "src.domain.*"] disallow_any_generics = true disallow_subclassing_any = true disallow_untyped_calls = true disallow_untyped_defs = true disallow_incomplete_defs = true disallow_untyped_decorators = true warn_return_any = true warn_unused_ignores = true no_implicit_reexport = true strict_equality = true extra_checks = true # Сторонние пакеты без типов (или недоступные вне банка) [[tool.mypy.overrides]] module = ["smbclient.*", "nkeys.*", "nats.*", "raisa_fastapi_protected_api", "raisa_fastapi_protected_api.*", "pydbml.*"] ignore_missing_imports = true # miniopy_async: пакет типизирован с ошибкой (Minio не виден mypy при реэкспорте) — типы не подтягиваем, Minio = Any [[tool.mypy.overrides]] module = ["miniopy_async", "miniopy_async.*"] follow_imports = "skip" ignore_missing_imports = true