content: [project]
  name = "flask_cognito_lib"
  version = "1.9.6"
  description = "A Flask extension that supports protecting routes with AWS Cognito following OAuth 2.1 best practices"
  authors = [
      { name = "mblackgeo", email = "18327836+mblackgeo@users.noreply.github.com" },
  ]
  requires-python = ">=3.9,<4.0,!=3.9.0,!=3.9.1"
  readme = "README.md"
  license = "MIT"
  keywords = ["Flask", "Extension", "OAuth", "Cognito"]
  classifiers = [
      "Framework :: Flask",
      "Environment :: Web Environment",
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3",
      "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
      "Topic :: Internet :: WWW/HTTP :: WSGI",
      "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Typing :: Typed",
  ]
  dependencies = [
      "Flask>=2.0,<4.0",
      "requests~=2.0",
      "PyJWT[crypto]>=2.4,<3.0",
      "urllib3<3.0",
      "cryptography",
      "typing-extensions~=4.0",
  ]
  
  [project.urls]
  Homepage = "https://github.com/mblackgeo/flask-cognito-lib"
  Repository = "https://github.com/mblackgeo/flask-cognito-lib"
  
  [project.optional-dependencies]
  build = ["uv ~= 0.7"] # required for python sematic release in CI
  
  [dependency-groups]
  dev = [
      "mdx-include>=1.4.1,<2",
      "mkdocs-material>=9.6.1,<10",
      "mypy~=1.0",
      "pytest-cov>=5.0,<8",
      "pytest-mock~=3.0",
      "pytest~=8.0",
      "python-semantic-release~=10.0",
      "ruff>=0.14.0",
      "types-requests~=2.0",
  ]
  
  [tool.hatch.build.targets.sdist]
  include = ["src/flask_cognito_lib"]
  
  [tool.hatch.build.targets.wheel]
  include = ["src/flask_cognito_lib"]
  
  [tool.hatch.build.targets.wheel.sources]
  "src/flask_cognito_lib" = "flask_cognito_lib"
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [tool.ruff]
  target-version = "py39"
  line-length = 88
  
  [tool.ruff.lint]
  select = ["E", "F", "I"]
  ignore = []
  
  # Optional per-file ignores
  # [tool.ruff.lint.per-file-ignores]
  # "tests/**.py" = ["S101"]
  
  [tool.ruff.format]
  quote-style = "double"
  docstring-code-format = true
  
  [tool.semantic_release]
  version_toml = ["pyproject.toml:project.version"]
  version_variables = ["src/flask_cognito_lib/__init__.py:__version__"]
  commit_parser = "conventional"
  changelog_file = "CHANGELOG.md"
  dist_path = "dist/"
  major_on_zero = false
  patch_without_tag = false
  
  # Build with uv and keep uv.lock in sync after PSR bumps the version
  build_command = """
    python -m pip install -e '.[build]'
    uv lock --upgrade-package "$PACKAGE_NAME"
    git add uv.lock
    uv build
  """
  
  # --- Multibranch release groups ---
  # Full releases only from main/master
  [tool.semantic_release.branches.main]
  match = "(main|master)"
  prerelease = false
  
  # RC prereleases from ANY other branch (manual or CI-dispatched)
  [tool.semantic_release.branches."rc-any"]
  match = ".*"
  prerelease = true
  prerelease_token = "rc"
  
  [tool.mypy]
  python_version = "3.9"
  warn_unused_ignores = true
  disallow_untyped_defs = true
  no_implicit_optional = true
  check_untyped_defs = true
  pretty = true
  