content: [project]
  name = "rocky"
  version = "0.0.1.dev1"
  description = "KAT's Django front-end"
  authors = [{ name = "MinVWS", email = "maintainer@openkat.nl" }]
  requires-python = ">=3.10"
  license = "EUPL-1.2"
  dependencies = [
      "beautifulsoup4>=4.11.2,<5",
      "django>=5.1.13,<5.2",
      "django-two-factor-auth>=1.17.0,<2",
      "django-environ>=0.12.0,<0.13",
      "jsonschema>=4.17.0,<5",
      "phonenumbers>=9.0.4,<10",
      "psycopg2-binary>=2.9.10",
      "pydantic>=2.7.1,<3",
      "python-dotenv>=1.0.0,<2",
      "django-password-validators>=1.7.1,<2",
      "django-csp~=4.0",
      "djangorestframework>=3.16.0,<4",
      "django-tagulous>=2.1.0,<3",
      "drf-standardized-errors>=0.14.1,<0.15",
      "django-compressor",
      "django-weasyprint>=2.4.0,<3",
      "strenum>=0.4.15,<0.5",
      "django-rest-knox>=5.0.2,<6",
      "opentelemetry-sdk",
      "opentelemetry-exporter-otlp-proto-grpc",
      "opentelemetry-instrumentation-django",
      "opentelemetry-instrumentation-psycopg2",
      "whitenoise[brotli]>=6.5.0,<7",
      "opentelemetry-instrumentation",
      "opentelemetry-instrumentation-fastapi",
      "granian>=2.5",
      "django-components>=0.88,<0.89",
      "pyparsing>=3.1.1,<4",
      "pydantic-settings>=2.0.3,<3",
      "opentelemetry-instrumentation-httpx",
      "httpx>=0.27.0,<0.28",
      "opentelemetry-api",
      "opentelemetry-exporter-otlp-proto-common",
      "opentelemetry-instrumentation-asgi",
      "opentelemetry-instrumentation-dbapi",
      "opentelemetry-instrumentation-wsgi",
      "opentelemetry-proto",
      "opentelemetry-semantic-conventions",
      "opentelemetry-util-http",
      "structlog>=25.3.0,<26",
      "django-structlog>=9.1.1,<10",
      "cron-descriptor>=1.4.5,<2",
      "structlog>=25.3.0,<26",
      "django-structlog>=9.1.1,<10",
      "cron-descriptor>=1.4.5,<2",
      "weasyprint>=66",
  ]
  
  [dependency-groups]
  dev = [
      "djlint>=1.32.1,<2",
      "PyNaCl>=1.5.0,<2",
      "pytest>=7.4.0",
      "pytest-cov>=6.0.0,<7",
      "pytest-django>=4.5.2,<5",
      "pytest-drf>=1.1.3,<2",
      "pytest-mock>=3.11.1,<4",
      "pytest-httpx>=0.30.0,<0.31",
      "model-mommy>=2.0.0,<3",
      "factory-boy>=3.2.1,<4",
      "django-admin-auto-tests",
      "robotframework>=7.1.1,<8",
      "robotframework-browser>=19.0.1,<20",
      "robotframework-debuglibrary>=2.5.0,<3",
      "robotframework-otp>=1.1.0,<2",
      "robotframework-postgresqldb>=2.0.0,<3",
  ]
  
  [tool.uv]
  package = false
  
  [tool.uv.sources]
  django-admin-auto-tests = { git = "https://github.com/dekkers/django-admin-auto-tests", rev = "f6eb4cbb9112b5aa933313d79e4da823adb41e1e" }
  django-compressor = { git = "https://github.com/dekkers/django-compressor.git", rev = "csp-nonce" }
  
  [tool.coverage.run]
  relative_files = true
  omit = ["octopoes/*"]
  
  [tool.pytest.ini_options]
  addopts = "--cov --cov-report xml --cov-branch --cov-report=term-missing:skip-covered -m 'not slow' --ignore=tests/integration"
  DJANGO_SETTINGS_MODULE = "rocky.settings_test"
  markers = ["slow: marks tests as slow"]
  
  [tool.djlint]
  max_line_length = 120
  blank_line_after_tag = "load,extends,include"
  # https://www.djlint.com/docs/linter/#rules
  ignore = "H006,H016,H017,H030,H031"
  