content: [project]
  name = "natlas"
  requires-python = ">=3.12"
  version = "0.6.12"
  
  [tool.mypy]
  disable_error_code = [
    "import-untyped",
    "no-untyped-call"
  ]
  enable_error_code = [
    "ignore-without-code",
    "possibly-undefined",
    "redundant-self",
    "truthy-bool",
    "truthy-iterable",
    "unimported-reveal",
    "unused-awaitable"
  ]
  exclude = [
    # This is weird because technically the exclude is for natlas-server/migrations, but mypy runs from within natlas-server using this config file
    # so this is technically correct to ignore mypy for migrations.
    'migrations/versions/.*\.py$'
  ]
  files = "."
  local_partial_types = true
  mypy_path = "mypy_stubs"
  no_implicit_reexport = true
  plugins = ["pydantic.mypy"]
  pretty = false
  strict = true
  strict_optional = true
  warn_unreachable = true
  
  [tool.pydantic-mypy]
  init_forbid_extra = true
  init_typed = true
  warn_required_dynamic_aliases = true
  
  [tool.ruff]
  
  [tool.ruff.lint]
  ignore = [
    "PLC0414",
    "PLR0911",
    "PLR0912",
    "PLR0915",
    "PLR2004"
  ]
  select = [
    # flake8-bugbear
    "B",
    # flake8-comprehensions
    "C4",
    # pyflakes
    "F",
    # flynt
    "FLY",
    # isort
    "I",
    # pylint
    "PL",
    # flake8-return
    "RET",
    # Ruff's own rules
    "RUF",
    # flake8-simplify
    "SIM",
    # flake8-tidy-imports
    "TID",
    # pyupgrade
    "UP"
  ]
  
  [tool.ruff.lint.flake8-tidy-imports]
  ban-relative-imports = "all"
  
  # UV does not manage this pyproject
  # This pyproject does not have dependencies
  # It's just used for pre-commit linting and mypy
  # So that all code is standardized.
  [tool.uv]
  managed = false
  