content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "fastapi-maintenance"
  dynamic = ["version"]
  authors = [
      { name = "Mehdi Samsami", email = "mehdisamsami@live.com" },
  ]
  description = "Flexible maintenance mode middleware for FastAPI applications."
  readme = "README.md"
  keywords = [
      "fastapi",
      "maintenance",
      "offline",
      "unavailable",
      "503",
  ]
  requires-python = ">=3.8"
  classifiers = [
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.8",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
      "Framework :: FastAPI",
      "Intended Audience :: Developers",
  ]
  dependencies = [
      "fastapi>=0.99.0",
      "typing-extensions>=4.8.0 ; python_full_version < '3.10'",
  ]
  
  [project.optional-dependencies]
  cli = [
      "rich>=14.0.0",
      "typer>=0.16.0",
  ]
  
  [project.scripts]
  fastapi-maintenance = "fastapi_maintenance.cli:app"
  
  [dependency-groups]
  dev = [
      "coverage>=7.6.1",
      "httpx>=0.28.1",
      "isort>=5.13.2",
      "mypy>=1.14.1",
      "pre-commit>=3.5.0",
      "pytest>=8.3.5",
      "pytest-anyio>=0.0.0",
      "pytest-cov>=5.0.0",
      "ruff>=0.11.8",
      "uvicorn[standard]>=0.33.0",
  ]
  docs = [
      "mkdocs>=1.6.1",
      "mkdocs-material>=9.6.13",
  ]
  
  [project.urls]
  Homepage = "https://github.com/msamsami/fastapi-maintenance"
  Documentation = "https://msamsami.github.io/fastapi-maintenance"
  Repository = "https://github.com/msamsami/fastapi-maintenance"
  Issues = "https://github.com/msamsami/fastapi-maintenance/issues"
  
  [tool.hatch.version]
  path = "src/fastapi_maintenance/__init__.py"
  
  [tool.hatch.metadata]
  allow-direct-references = true
  
  [tool.pytest.ini_options]
  testpaths = ["tests"]
  filterwarnings = ["ignore"]
  
  [tool.coverage.run]
  parallel = true
  data_file = "coverage/.coverage"
  source = [
      "src/fastapi_maintenance",
  ]
  context = '${CONTEXT}'
  dynamic_context = "test_function"
  
  [tool.coverage.report]
  show_missing = true
  sort = "-Cover"
  exclude_also = [
      "pass",
      "if __name__ == .__main__.:",
      "from typing import *",
  ]
  
  [tool.coverage.html]
  show_contexts = true
  
  [tool.mypy]
  exclude=["tests", "examples"]
  namespace_packages = false
  files = ["src/fastapi_maintenance/**/*.py"]
  check_untyped_defs = true
  disable_error_code = ["empty-body", "unused-ignore"]
  strict = true
  
  [tool.ruff]
  include = ["*.py", "*.pyi", "**/pyproject.toml"]
  line-length = 120
  
  [tool.ruff.format]
  docstring-code-format = true
  
  [tool.ruff.lint]
  select = [
      "E",  # pycodestyle errors
      "W",  # pycodestyle warnings
      "F",  # pyflakes
      "I",  # isort
      "B",  # flake8-bugbear
      "C4",  # flake8-comprehensions
      # Compatibility with ruff formatter
      "E501",
      "ISC001",
      "Q000",
      "Q001",
      "Q002",
      "Q003",
      "W191",
  ]
  ignore = [
      "E501",  # line too long, handled by black
      "B008",  # do not perform function calls in argument defaults
      "C901",  # too complex
      "B904",  # raise exceptions with 'raise ... from err' within an `except` clause
  ]
  
  [tool.isort]
  atomic = true
  profile = "black"
  skip_gitignore = true
  known_first_party = ["fastapi_maintenance"]
  
  [tool.uv]
  default-groups = ["dev", "docs"]
  