content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  
  [project]
  name = "towncrier"
  # For dev   - 23.11.0.dev0
  # For RC    - 23.11.0rc1  (release candidate starts at 1)
  # For final - 23.11.0
  # make sure to follow PEP440
  version = "25.8.0.dev0"
  description = "Building newsfiles for your project."
  readme = "README.rst"
  license = "MIT"
  # Keep version list in-sync with noxfile/tests & ci.yml/test-linux.
  classifiers = [
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Operating System :: POSIX :: Linux",
      "Operating System :: MacOS :: MacOS X",
      "Operating System :: Microsoft :: Windows",
      "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",
      "Programming Language :: Python :: Implementation :: CPython",
      "Programming Language :: Python :: Implementation :: PyPy",
  ]
  requires-python = ">=3.9"
  dependencies = [
      "click",
      "importlib-resources>=5; python_version<'3.10'",
      "importlib-metadata>=4.6; python_version<'3.10'",
      "jinja2",
      "tomli; python_version<'3.11'",
  ]
  
  [project.optional-dependencies]
  dev = [
      "packaging",
      "sphinx >= 5",
      "furo >= 2024.05.06",
      "twisted",
      "nox",
  ]
  
  [project.scripts]
  towncrier = "towncrier._shell:cli"
  
  [project.urls]
  Documentation = "https://towncrier.readthedocs.io/"
  Chat = "https://web.libera.chat/?channels=%23twisted"
  "Mailing list" = "https://mail.python.org/mailman3/lists/twisted.python.org/"
  Issues = "https://github.com/twisted/towncrier/issues"
  Repository = "https://github.com/twisted/towncrier"
  Tests = "https://github.com/twisted/towncrier/actions?query=branch%3Atrunk"
  Coverage = "https://codecov.io/gh/twisted/towncrier"
  Distribution = "https://pypi.org/project/towncrier"
  
  [tool.hatch.build]
  exclude = [
      "admin",
      "bin",
      ".github",
      ".git-blame-ignore-revs",
      ".pre-commit-config.yaml",
      ".pre-commit-hooks.yaml",
      ".readthedocs.yaml",
      "src/towncrier/newsfragments",
  ]
  
  
  [tool.towncrier]
      package = "towncrier"
      package_dir = "src"
      filename = "NEWS.rst"
      issue_format = "`#{issue} <https://github.com/twisted/towncrier/issues/{issue}>`_"
  
      [[tool.towncrier.section]]
          path = ""
  
      [[tool.towncrier.type]]
          directory = "feature"
          name = "Features"
          showcontent = true
  
      [[tool.towncrier.type]]
          directory = "bugfix"
          name = "Bugfixes"
          showcontent = true
  
      [[tool.towncrier.type]]
          directory = "doc"
          name = "Improved Documentation"
          showcontent = true
  
      [[tool.towncrier.type]]
          directory = "removal"
          name = "Deprecations and Removals"
          showcontent = true
  
      [[tool.towncrier.type]]
          directory = "misc"
          name = "Misc"
          showcontent = false
  
  
  [tool.black]
  exclude = '''
  
  (
    /(
        \.eggs         # exclude a few common directories in the
      | \.git          # root of the project
      | \.nox
      | \.venv
      | \.env
      | env
      | _build
      | _trial_temp.*
      | build
      | dist
      | debian
    )/
  )
  '''
  
  
  [tool.isort]
  profile = "attrs"
  line_length = 88
  
  
  [tool.ruff.isort]
  # Match isort's "attrs" profile
  lines-after-imports = 2
  lines-between-types = 1
  
  
  [tool.mypy]
  strict = true
  # 2022-09-04: Trial's API isn't annotated yet, which limits the usefulness of type-checking
  #             the unit tests. Therefore they have not been annotated yet.
  exclude = '^src/towncrier/test/test_.*\.py$'
  
  [[tool.mypy.overrides]]
  module = 'towncrier.click_default_group'
  # Vendored module without type annotations.
  ignore_errors = true
  
  [tool.coverage.run]
  parallel = true
  branch = true
  source = ["towncrier"]
  
  [tool.coverage.paths]
  source = ["src", ".nox/tests-*/**/site-packages"]
  
  [tool.coverage.report]
  show_missing = true
  skip_covered = false
  exclude_lines = [
      "pragma: no cover",
      "if TYPE_CHECKING:",
      # Empty functions of a Protocol definition (used in _vcs.py) can never be
      # executed. Ignoring them.
      ": \\.\\.\\.$",
  ]
  omit = [
      "src/towncrier/__main__.py",
      "src/towncrier/test/*",
      "src/towncrier/click_default_group.py",
  ]
  