content: [project]
  name = "openapi-pydantic"
  version = "0.5.1"
  description = "Modern, type-safe OpenAPI schemas in Python using Pydantic 1.8+ and 2.x"
  authors = [
    { name = "Mike Oakley", email = "mike-oakley@users.noreply.github.com" },
  ]
  readme = "README.md"
  requires-python = ">=3.8"
  license = { text = "MIT" }
  keywords = ["openapi", "schema", "parser", "pydantic", "validation"]
  classifiers = [
    "Framework :: Pydantic :: 1",
    "Framework :: Pydantic :: 2",
    "Framework :: Pydantic",
    "Intended Audience :: Developers",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Software Development :: Libraries",
    "Topic :: Software Development",
    "Typing :: Typed",
  ]
  dependencies = ["pydantic>=1.8"]
  
  [project.urls]
  Homepage = "https://github.com/mike-oakley/openapi-pydantic"
  Repository = "https://github.com/mike-oakley/openapi-pydantic"
  Issues = "https://github.com/mike-oakley/openapi-pydantic/issues"
  Changelog = "https://github.com/mike-oakley/openapi-pydantic/releases"
  
  [dependency-groups]
  test = ["pytest>=8.2.2", "coverage>=6.5.0", "openapi-spec-validator>=0.7.0"]
  dev = ["mypy>=1.8.0", "ruff>=0.7.2"]
  
  [build-system]
  requires = ["hatchling >= 1.26"]
  build-backend = "hatchling.build"
  
  [tool.mypy]
  warn_unused_ignores = true
  warn_redundant_casts = true
  warn_unused_configs = true
  warn_unreachable = true
  warn_return_any = true
  strict = true
  disallow_any_generics = false
  implicit_reexport = false
  show_error_codes = true
  files = ["openapi_pydantic/", "tests/"]
  plugins = ["pydantic.mypy"]
  
  [tool.ruff]
  line-length = 88
  target-version = "py38"
  include = ["openapi_pydantic/**/*.py", "tests/**/*.py"]
  
  [tool.ruff.lint]
  select = [
    # https://docs.astral.sh/ruff/rules/#pydocstyle-d
    "D",
    # https://docs.astral.sh/ruff/rules/#error-e
    "E",
    # https://docs.astral.sh/ruff/rules/#pyflakes-f
    "F",
    # https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
    "B",
    # https://docs.astral.sh/ruff/rules/#isort-i
    "I",
    # https://docs.astral.sh/ruff/rules/complex-structure/
    "C901",
    # https://docs.astral.sh/ruff/rules/#warning-w
    "W",
  ]
  
  ignore = [
    # Lint rules which are recommended to be disabled when using the ruff formatter.
    # https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
    "W191",
    "E111",
    "E114",
    "E117",
    "D100",
    "D106",
    "D206",
    "D300",
    "Q000",
    "Q001",
    "Q002",
    "Q003",
    "COM812",
    "COM819",
    "ISC001",
    "ISC002",
  ]
  
  [tool.ruff.lint.isort]
  known-first-party = ["openapi_pydantic"]
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  [tool.ruff.lint.per-file-ignores]
  # Ignore docstring violations outside of the primer package.
  "!openapi_pydantic/**.py" = ["D"]
  
  [tool.ruff.format]
  quote-style = "double"
  indent-style = "space"
  line-ending = "auto"
  skip-magic-trailing-comma = false
  
  [tool.pytest.ini_options]
  cache_dir = "${XDG_CACHE_DIR}/.pytest_cache"
  