content: [project]
  name = "trustpoint"
  version = "0.3.0"
  description = "Trustpoint Server Software"
  authors = [{ name = "Trustpoint-Project" }]
  requires-python = "==3.12.*"
  readme = "README.md"
  license = { file = "LICENSE" }
  keywords = ["django", "trustpoint", "server"]
  
  dependencies = [
      "crispy-bootstrap5~=2025.4",
      "cryptography>=46.0.1",
      "django>=5.2.6",
      "django-crispy-forms~=2.3",
      "django-dbbackup>=5.0.0",
      "django-filter~=25.1",
      "django-filter-stubs>=0.1.3",
      "django-stubs[compatible-mypy]>=5.2.2",
      "django-taggit>=6.1.0,<7",
      "packaging>=25.0",
      "paramiko>=3.5.1",
      "psycopg>=3.2.10",
      "psycopg-binary>=3.2.10",
      "pyasn1>=0.6.1,<0.7",
      "pyasn1-modules>=0.4.1,<0.5",
      "trustpoint-core==0.2.5",
      "types-paramiko>=3.5.0.20250516",
      "zeroconf>=0.147.2,<0.148",
  ]
  
  [dependency-groups]
  # For development: testing, linting, type-checking
  dev = [
      "pytest >= 8.3.5",
      "pytest-cov >= 6.1.1",
      "pytest-django >= 4.11.1",
      "pytest-emoji >= 0.2.0",
      "pytest-html >= 4.1.1",
      "pytest-md >= 0.2.0",
      "pytest-md-report >= 0.6.3",
      "devtools >= 0.12.2, < 0.13",
      "django-extensions >= 4.1",
      "docutils-stubs >= 0.0.22, < 0.0.23",
      "pyopenssl >= 25, < 26",
      "werkzeug >= 3.1.3, < 4",
      "beautifulsoup4 >= 4.13.4",
      "ruff>=0.13.1",
      "requests>=2.32.3",
      "behave>=1.2.7.dev6",
      "behave-django>=1.6.0",
      "behave-html-pretty-formatter>=1.14.1",
      "allure-behave>=2.14.3",
      "allure-pytest>=2.14.3",
  ]
  # For building docs
  docs = [
      "sphinx>=8.2.3",
      "sphinx-autoapi>=3.6.0",
      "sphinxcontrib-plantuml>=0.30",
      "furo >= 2024.8.6",
      "pillow >= 11.2.1",
  ]
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [tool.uv]
  required-version = ">=0.8.20"
  
  [tool.ruff]
  line-length = 120
  indent-width = 4
  
  [tool.ruff.lint.flake8-quotes]
  docstring-quotes = "double"
  inline-quotes = "single"
  multiline-quotes = "double"
  
  [tool.ruff.lint]
  select = ["ALL"]
  ignore = [
      "ANN401", # Since django makes extensive use of the Any type, we are OK with using it.
      "COM812", # Not compatible with the formatter
      # TODO(AlexHx8472): We should use this in the future:
      "TD003",
  ]
  exclude = ["**/migrations/*", "**/manage.py"]
  
  [tool.ruff.lint.per-file-ignores]
  "**/tests/**/**.py" = ["S101"]
  "**/tests.py" = ["S101"]
  
  
  [tool.ruff.format]
  quote-style = "single"
  indent-style = "space"
  docstring-code-format = true
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  
  [tool.pytest.ini_options]
  DJANGO_SETTINGS_MODULE = 'trustpoint.settings'
  pythonpath = ["trustpoint"]
  python_files = 'test_*.py'
  md_report = true
  md_report_output = 'md-report.md'
  
  [tool.behave.userdata]
  'behave.formatter.html-pretty.title_string' = 'Trustpoint Test Report'
  'behave.formatter.html-pretty.show_summary' = 'true'
  'behave.formatter.html-pretty.collapse' = 'all'
  