content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "grpc_interfaces"
  version = "1.0.0"
  description = "Geti GRPC interfaces with clients"
  authors = [{ name = "Intel" }]
  license = { text = "Copyright (c) Intel - All Rights Reserved. Unauthorized copying of any part of the software via any medium is strictly prohibited. Proprietary and confidential." }
  requires-python = ">=3.10, <3.11"
  
  dependencies = [
      "grpcio==1.62.*"
  ]
  
  [project.optional-dependencies]
  account_service = [
      "google-api-python-client==2.90.0",
      "pydantic==2.6.1"
  ]
  credit_system = []
  job_submission = [
      "readerwriterlock~=1.0",
      "geti-types"
  ]
  job_update = []
  model_registration = [
      "protobuf~=4.24"
  ]
  all = [
      "grpc_interfaces[account_service,credit_system,job_submission,job_update,model_registration]",
  ]
  
  [tool.uv.sources]
  geti-types = { path = "../types", editable = true }
  
  [dependency-groups]
  dev = [
      "pytest~=8.3",
      "ruff~=0.11.2",
      "pre-commit~=4.1",
      "mypy~=1.15",
      "grpc_interfaces[all]",
      "grpcio-tools",
      "mypy-protobuf",
  ]
  
  [tool.hatch.build]
  only-packages = true
  
  [tool.hatch.build.targets.wheel]
  packages = [ "src/grpc_interfaces" ]
  
  [tool.ruff]
  target-version = "py310"
  line-length = 120
  exclude = [".venv*", "*/pb/*"]
  src = ["."]
  
  [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
  
  [tool.ruff.lint.pylint]
  max-args=7
  
  [tool.mypy]
  python_version = "3.10"
  ignore_missing_imports = true
  show_error_codes = true
  