content: # scriv's pyproject.toml
  
  [project]
  name = "scriv"
  description = "Scriv changelog management tool"
  authors = [
      {name = "Ned Batchelder", email = "ned@nedbatchelder.com"},
  ]
  license = "Apache-2.0"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Developers",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "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",
  ]
  
  requires-python = ">= 3.9"
  
  dynamic = ["readme", "version", "dependencies"]
  
  [project.urls]
  "Mastodon" = "https://hachyderm.io/@nedbat"
  "Funding" = "https://github.com/sponsors/nedbat"
  "Issues" = "https://github.com/nedbat/scriv/issues"
  "Source" = "https://github.com/nedbat/scriv"
  "Home" = "https://github.com/nedbat/scriv"
  "Documentation" = "https://scriv.readthedocs.io"
  
  [project.scripts]
  scriv = "scriv.cli:cli"
  
  [project.optional-dependencies]
  toml = [
      'tomli; python_version < "3.11"'
  ]
  yaml = [
      "pyyaml"
  ]
  
  [build-system]
  requires = ["setuptools"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools.packages.find]
  where = ["src"]
  
  [tool.setuptools.package-data]
  scriv = [
      "templates/*.*",
  ]
  
  [tool.setuptools.dynamic]
  version.attr = "scriv.__version__"
  readme.file = ["README.rst", "CHANGELOG.rst"]
  dependencies.file = ["requirements/core.txt"]
  
  [tool.scriv]
  ghrel_template = "file: ghrel_template.md.j2"
  rst_header_chars = "-."
  version = "literal: src/scriv/__init__.py: __version__"
  
  [tool.isort]
  indent = "    "
  line_length = 80
  multi_line_output = 3
  include_trailing_comma = true
  
  [tool.mypy]
  python_version = "3.9"
  show_column_numbers = true
  show_error_codes = true
  ignore_missing_imports = true
  check_untyped_defs = true
  warn_return_any = true
  
  [tool.doc8]
  max-line-length = 80
  
  [tool.pydocstyle]
  # D105 = Missing docstring in magic method
  # D200 = One-line docstring should fit on one line with quotes
  # D203 = 1 blank line required before class docstring
  # D212 = Multi-line docstring summary should start at the first line
  # D406 = Section name should end with a newline (numpy style)
  # D407 = Missing dashed underline after section (numpy style)
  # D413 = Missing blank line after last section (numpy style)
  ignore = ["D105", "D200", "D203", "D212", "D406", "D407", "D413"]
  