content: [project]
  name = "director"
  version = "1.0.0"
  description = "Director service for Geti"
  requires-python = ">=3.10, <3.11"
  
  dependencies = [
    "attrs>=21.4.0",
    "fastapi==0.117.1",
    "starlette>=0.47.2", # Lower bound due to CVEs
    "jsonschema>=4.18.0a10",
    "PyYAML==6.0.1",
    "rx==3.1.1",
    "scipy~=1.14",
    "uvicorn~=0.17",
    "scikit-learn~=1.6",
    "iai_core",
    "geti-kafka-tools",
    "geti-telemetry-tools[telemetry,fastapi,grpc,logger,kafka]",
    "geti-types",
    "geti-fastapi-tools",
    "grpc_interfaces[job_submission]",
    "geti-configuration-tools",
    "geti-supported-models",
    "geti-feature-tools",
  ]
  
  [tool.uv.sources]
  geti-kafka-tools = { path = "../../../libs/kafka_tools" , editable = true}
  geti-fastapi-tools = { path = "../../../libs/fastapi_tools" , editable = true}
  geti-types = { path = "../../../libs/types" , editable = true}
  geti-telemetry-tools = { path = "../../../libs/telemetry_tools" , editable = true}
  geti-configuration-tools = { path = "../../../libs/configuration_tools" , editable = true}
  iai_core = { path = "../../libs/iai_core_py" , editable = true}
  geti-supported-models = { path = "../../supported_models", editable = true }
  grpc_interfaces = { path = "../../../libs/grpc_interfaces" , editable = true}
  geti-feature-tools = { path = "../../../libs/feature_tools", editable = true}
  
  [dependency-groups]
  dev = [
    "pytest~=8.3",
    "ruff~=0.11.2",
    "pre-commit~=4.1",
    "mypy~=1.15",
    "pdbpp~=0.10",
    "flaky~=3.8",
    "testfixtures~=8.2",
    "pytest-freezegun~=0.4",
    "httpx~=0.24",
    "retry~=0.9",
    "grpcio_tools~=1.60",
    "mypy-protobuf~=3.0",
    "types-PyYAML",
    "types-protobuf",
    "grpc-stubs",
    "testcontainers[mongodb]~=4.9",
  ]
  
  [tool.ruff]
  target-version = "py310"
  line-length = 120
  
  exclude = [".venv*"]
  
  src = ["app"]
  
  [tool.ruff.lint]
  select = ["ARG", "E", "F", "I", "N", "UP", "YTT", "ASYNC", "S", "COM", "C4", "FA", "PIE", "PYI", "Q", "RSE", "RET", "SIM",
      "TID", "TC", "PL", "RUF", "C90", "D103", "ANN001", "ANN201", "ANN205", "FAST"]
  
  ignore = ["N801", "N805","N806","N807", "N818", "COM812", "RET503", "SIM108", "SIM105", "PLR2004",
  
      "RUF010", "TC001",  "RUF012"]
  
  fixable = ["ALL"]
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  [tool.ruff.lint.per-file-ignores]
  "*test*.py" = ["S", "ANN", "D", "ARG", "PLR"]
  
  [tool.ruff.lint.isort]
  split-on-trailing-comma = false
  known-local-folder = ["geti_types", "geti_kafka_tools", "geti_telemetry_tools", "geti_fastapi_tools", "grpc_interfaces", "iai_core"]
  
  [tool.ruff.lint.pylint]
  max-args=7
  
  [tool.mypy]
  python_version = "3.10"
  ignore_missing_imports = true
  show_error_codes = true
  