content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "ariadne-codegen"
  description = "Generate fully typed GraphQL client from schema, queries and mutations!"
  authors = [{ name = "Mirumee Software", email = "ariadne@mirumee.com" }]
  dynamic = ["version"]
  requires-python = ">= 3.9"
  readme = "README.md"
  license = "BSD-3-Clause"
  license-files = ["LICENSE"]
  classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: BSD License",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
    "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",
    "Topic :: Software Development :: Libraries :: Python Modules",
  ]
  dependencies = [
    "click~=8.1",
    "graphql-core>=3.2.0,<3.3",
    "toml~=0.10",
    "httpx~=0.23",
    "pydantic>=2.0.0,<3.0.0",
    "black",
    "isort",
    "autoflake",
  ]
  
  [project.optional-dependencies]
  dev = ["ipdb"]
  test = [
    "ariadne",
    "freezegun",
    "pytest",
    "pytest-asyncio",
    "pytest-httpx",
    "pytest-mock",
    "requests-toolbelt",
    "types-toml",
    "websockets>=14.2",
    "opentelemetry-api",
  ]
  types = ["mypy>=1.0.0"]
  subscriptions = ["websockets>=14.2"]
  opentelemetry = ["opentelemetry-api"]
  
  [project.scripts]
  ariadne-codegen = "ariadne_codegen.main:main"
  
  [project.urls]
  "Homepage" = "https://ariadnegraphql.org/"
  "Repository" = "https://github.com/mirumee/ariadne-codegen"
  "Bug Tracker" = "https://github.com/mirumee/ariadne-codegen/issues"
  "Community" = "https://github.com/mirumee/ariadne/discussions"
  "Twitter" = "https://twitter.com/AriadneGraphQL"
  
  # Hatch configuration
  
  [tool.hatch.build]
  include = ["ariadne_codegen/**/*.py", "ariadne_codegen/py.typed"]
  exclude = ["tests"]
  
  [tool.hatch.version]
  path = "ariadne_codegen/__about__.py"
  
  [tool.hatch.envs.default]
  features = ["dev", "types"]
  
  [tool.hatch.envs.default.scripts]
  check = [
      "hatch fmt",
      "hatch test -a -p",
      "hatch test --cover",
      "hatch run types:check",
  ]
  
  ## Types environment
  
  [tool.hatch.envs.types.scripts]
  check = [
      "mypy tests/main/clients/*/expected_client",
      "mypy tests/main/graphql_schemas/*/expected_schema.py",
      "mypy ariadne_codegen/client_generators/dependencies",
  ]
  
  ## Test environments
  
  [tool.hatch.envs.hatch-test]
  features = ["test"]
  extra-args = []
  
  [[tool.hatch.envs.hatch-test.matrix]]
  python = ["3.9", "3.10", "3.11", "3.12", "3.13"]
  
  ## Types configuration
  
  [tool.mypy]
  python_version = "3.9"
  files = ["ariadne_codegen", "tests"]
  check_untyped_defs = true
  # disallow_untyped_defs = true
  ignore_missing_imports = true
  # warn_redundant_casts = true
  # warn_unused_ignores = true
  # disallow_any_generics = true
  no_implicit_reexport = true
  # strict = true
  disable_error_code = ["import-untyped"]
  
  ## Coverage configuration
  
  [tool.coverage.run]
  source = ["ariadne_codegen", "tests"]
  
  [tool.coverage.report]
  exclude_also = [
      "def __repr__",
      "if self.debug:",
      "if settings.DEBUG",
      "raise AssertionError",
      "raise NotImplementedError",
      "if 0:",
      "if __name__ == .__main__.:",
      "if TYPE_CHECKING:",
      "class .*\\bProtocol\\):",
      "@(abc\\.)?abstractmethod",
  ]
  omit = ["*/__about__.py", "*/__main__.py", "*/cli/__init__.py"]
  fail_under = 90
  
  ## Ruff configuration
  
  [tool.ruff]
  line-length = 88
  target-version = "py39"
  
  [tool.ruff.format]
  docstring-code-format = true
  docstring-code-line-length = 99
  exclude = [
      "tests/main/clients/*/expected_client/*"
  ]
  
  [tool.ruff.lint]
  select = ["E", "F", "G", "I", "N", "Q", "UP", "C90", "T20", "TID"]
  ignore = ["TID252", "UP006", "UP035"]
  task-tags = ["NOTE", "TODO", "FIXME", "HACK", "XXX"]
  
  [tool.ruff.lint.per-file-ignores]
  # Some rules are ignored in auto-generated files.
  "tests/main/graphql_schemas/*/expected_schema.py" = ["E501"]
  "tests/main/clients/*/expected_client/*" = ["E501", "N801", "F401"]
  
  [tool.ruff.lint.pycodestyle]
  ignore-overlong-task-comments = true
  
  [tool.ruff.lint.mccabe]
  max-complexity = 11
  
  [tool.ruff.lint.isort]
  known-first-party = ["ariadne_codegen"]
  
  [tool.ruff.lint.flake8-pytest-style]
  fixture-parentheses = false
  mark-parentheses = false
  
  # Pytest configuration
  
  [tool.pytest.ini_options]
  testpaths = ["tests"]
  