content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "nexios"
  version = "2.11.13"
  description = "Nexios is a modern, high-performance ASGI web framework for Python with multi-server support with zero overhead."
  authors = [
      {name = "Chidebele Dunamis", email = "techwithdunamix@gmail.com"}
  ]
  license = "BSD-3-Clause"
  homepage = "https://github.com/nexios-labs/nexios"
  repository = "https://github.com/nexios-labs/nexios"
  documentation = "https://nexios-docs.netlify.app/"
  readme = "readme.md"
  keywords = [
      "ASGI",
      "backend",
      "framework",
      "web",
      "Python",
      "async",
      "asynchronous",
      "uvicorn",
      "granian",
      "web server",
      "API",
      "scalable",
      "real-time",
      "concurrent",
      "HTTP",
      "websocket"
  ]
  requires-python = ">=3.9"
  dependencies = [
      "uvicorn>=0.27.0",
      "anyio==4.11.0",
      "itsdangerous>=2.1.2",
      "python-multipart>=0.0.6",
      "pydantic>=2.0,<3.0",
      "typing-extensions>=4.12.2; python_version<'3.10'",
  ]
  
  
  [project.optional-dependencies]
  templating = ["jinja2>=3.1.6"]
  jwt = ["pyjwt>=2.7.0"]
  granian = ["granian>=1.2.0"]
  cli = ["click>=8.1.3"]  
  
  # Feature groups
  http = [
      "uvicorn>=0.27.0",
      "anyio>=4.0.0",
      "itsdangerous>=2.1.2",
      "python-multipart>=0.0.6"
  ]
  
  all = [
      "uvicorn>=0.27.0",
      "anyio>=4.0.0",
      "itsdangerous>=2.1.2",
      "python-multipart>=0.0.6",
      "jinja2>=3.1.6",
      "pyjwt>=2.7.0",
      "granian>=1.2.0",
      "click>=8.1.3"
  ]
  dev = [
      "uvicorn>=0.27.0",
      "anyio>=4.0.0",
      "itsdangerous>=2.1.2",
      "python-multipart>=0.0.6",
      "jinja2>=3.1.6",
      "pyjwt>=2.7.0",
      "granian>=1.2.0",
      "click>=8.1.3",
      "mypy>=1.15.0",
      "pytest>=8.3.4,<8.5.0",
      "coverage>=6.3,<8.0",
      "httpx>=0.23.3,<0.29.0",
      "typing-extensions==4.15.0",
      "pytest-asyncio>=0.25.3,<0.27.0",
      "pyjwt>=2.7.0",
      "isort>=5.13.2",
      "ruff>=0.0.256",
      "black>=23.0.0",
  ]
  
  [project.scripts]
  nexios = "nexios.cli:cli"
  
  [tool.pytest.ini_options]
  asyncio_mode = "auto"
  addopts = "--ignore=benchmarks"
  
  [tool.mypy]
  python_version = "3.13"
  ignore_missing_imports = true
  warn_unused_ignores = true
  warn_redundant_casts = true
  warn_return_any = false
  disallow_untyped_calls = false
  disallow_untyped_defs = false
  files = ["nexios"]
  exclude = "(nexios/templates/.*)"
  
  [tool.black]
  line-length = 88
  target-version = ["py38"]
  include = '\.pyi?$'
  
  [tool.isort]
  profile = "black"
  multi_line_output = 3
  include_trailing_comma = true
  force_grid_wrap = 0
  use_parentheses = true
  ensure_newline_before_comments = true
  
  [tool.flake8]
  max-line-length = 88
  extend-ignore = ["E203", "W503", "E402", "E741"]
  exclude = [
      ".git",
      "__pycache__",
      "build",
      "dist",
      ".venv",
      ".pytest_cache",
      "htmlcov",
      "node_modules",
      "templates",
      "docs",
      "test/",
      "sandbox.py"
  
  ]
  per-file-ignores = [
      "__init__.py: F401",
      "test/*: F401",
      "examples/*: F401",
      "benchmarks/*: F401"
  ]
  max-complexity = 15
  
  [tool.ruff]
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".git-rewrite",
      ".hg",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "venv",
      "docker",
      "examples",
      "tests",
      "test",
      "nexios/templates",
      "docs",
      "benchmarks",
      "**/test_*.py",
      "**/tests/**",
      "**/test/**",
  ]
  
  # Same as Black.
  line-length = 88
  
  # Allow unused variables when underscore-prefixed.
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  # Assume Python 3.8
  target-version = "py38"
  
  [tool.ruff.mccabe]
  # Unlike Flake8, default to a complexity level of 10.
  max-complexity = 10
  
  [tool.ruff.isort]
  known-first-party = ["nexios"]
  
  [tool.ruff.per-file-ignores]
  "__init__.py" = ["F401"]
  "test/*" = ["F401"]
  "tests/*" = ["F401"]
  "examples/*" = ["F401"]
  "benchmarks/*" = ["F401"]
  
  [tool.commitizen]
  name = "cz_conventional_commits"
  version = "2.11.13"
  version_files = [
      "pyproject.toml:version",
      "nexios/__main__.py:__version__"
  ]
  tag_format = "v$version"
  update_changelog_on_bump = true
  