content: [build-system]
  requires = ["setuptools>=48", "setuptools_scm[toml]>=6.3.1"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "any-guardrail"
  readme = "README.md"
  license = {text = "Apache-2.0"}
  requires-python = ">=3.11"
  dynamic = ["version"]
  dependencies = [
    "any-llm-sdk>=0.11.0,<1",
    "pydantic"
  ]
  
  [project.optional-dependencies]
  all = [
    "any-guardrail[flowjudge,huggingface]"
  ]
  
  flowjudge = [
    "flow-judge[hf]>=0.1.2"
  ]
  
  huggingface = [
    "huggingface-hub>=0.33.4",
    "transformers>=4.53.2",
    "torch>=2.7.1"
  ]
  
  [project.urls]
  Documentation = "https://mozilla-ai.github.io/any-guardrail/"
  Issues = "https://github.com/mozilla-ai/any-guardrail/issues"
  Source = "https://github.com/mozilla-ai/any-guardrail"
  
  [tool.setuptools.package-data]
  "*" = ["py.typed"]
  
  [tool.setuptools.packages.find]
  exclude = ["tests", "tests.*"]
  where = ["src"]
  namespaces = false
  
  [tool.setuptools_scm]
  
  [tool.pylint.messages_control]
  disable = [
      "import-outside-toplevel",
  ]
  
  [tool.ruff]
  line-length = 120
  
  [tool.ruff.lint]
  ignore = [
    "TD",
    "FIX",
    "D100",  # We don't use module docstrings
    "D104",  # We don't use package docstrings
    "D203",  # <- disable to resolve conflict with D211
    "D213",  # <- disable to resolve conflict with D212
    "FBT",
    "COM",
    "ANN",
    "ARG",
    "S101",
    "E501",
    "INP001",
    "PERF",
    "PLR",
    "SIM",
    "PTH",
    "DTZ005",
    "BLE001",
    "TRY004",
    "S113",
    "PLW2901",
    "C901",
    "ERA001",
    "SLF001",
    "PD901",
    "PLC0415", # We use lazy imports in several places
    "PLR0912",
    "PLR0913",
    "N999",
    "B024",
  ]
  extend-select = ["ALL"]
  
  [tool.ruff.lint.per-file-ignores]
  "tests/**" = ["D"]
  "docs/cookbook/**" = ["T201"]
  
  [tool.mypy]
  strict = true
  disallow_untyped_calls = true
  disallow_untyped_defs = true
  follow_untyped_imports = true
  
  [[tool.mypy.overrides]]
  module = "tests.*"
  disallow_untyped_decorators = false # mypy gets confused by pytest decorators
  
  [[tool.mypy.overrides]]
  module = ["pytest", "mktestdocs", "pytest_lazy_fixtures"]
  ignore_missing_imports = true # pytest related modules are not found
  
  [tool.pytest.ini_options]
  timeout = 120
  
  [dependency-groups]
  dev = [
    { include-group = "docs" },
    { include-group = "lint" },
    { include-group = "tests" },
  ]
  
  docs = [
    "mkdocs",
    "mkdocs-material",
    "mkdocstrings-python",
    "mkdocs-include-markdown-plugin>=7.1.5",
    "mkdocs-jupyter>=0.25.1",
  ]
  
  
  lint = [
    "pre-commit==4.3.0",
    "pre-commit-uv==4.1.5",
    "mypy",
  ]
  
  tests = [
    "pytest>=8,<9",
    "pytest-asyncio>=0.26.0",
    "mktestdocs>=0.2.4",
    "pytest-xdist>=3.6.1",
    "pytest-timeout",
    "debugpy",
  ]
  
  # For completeness, but 'uv sync --group dev' currently installs the others too.
  all = [
    { include-group = "lint" },
    { include-group = "tests" },
    { include-group = "docs" },
  ]
  