copier/pyproject.toml

186 lines
4.0 KiB
TOML

[project]
name = "copier"
dynamic = ["version"]
description = "A library for rendering project templates."
license = { text = "MIT" }
requires-python = ">=3.9"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"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",
]
authors = [{ name = "Ben Felder", email = "ben@felder.io" }]
readme = "README.md"
dependencies = [
"colorama>=0.4.6",
"dunamai>=1.7.0",
"funcy>=1.17",
"jinja2>=3.1.5",
"jinja2-ansible-filters>=1.3.1",
"packaging>=23.0",
"pathspec>=0.9.0",
"plumbum>=1.6.9",
"pydantic>=2.4.2",
"pygments>=2.7.1",
"pyyaml>=5.3.1",
"questionary>=1.8.1",
"eval-type-backport>=0.1.3,<0.3.0; python_version < '3.10'",
"platformdirs>=4.3.6",
"typing-extensions>=4.0.0,<5.0.0; python_version < '3.11'",
]
[project.urls]
homepage = "https://github.com/copier-org/copier"
repository = "https://github.com/copier-org/copier"
"Bug Tracker" = "https://github.com/copier-org/copier/issues"
[project.scripts]
copier = "copier.__main__:CopierApp.run"
[dependency-groups]
dev = [
"mypy==1.15.0",
"pexpect==4.9.0",
"poethepoet==0.33.1",
"pre-commit==4.2.0",
"pytest==8.3.5",
"pytest-cov==6.1.1",
"pytest-gitconfig==0.7.0",
"pytest-xdist==3.6.1",
"types-backports==0.1.3",
"types-colorama==0.4.15.20240311",
"types-pygments==2.19.0.20250305",
"types-pyyaml==6.0.12.20250402",
"typing-extensions==4.13.1; python_version < '<3.10'",
]
docs = [
"markdown-exec==1.10.3",
"mkdocs-material==9.6.11",
"mkdocstrings[python]==0.29.1",
]
[tool.poe.tasks.coverage]
cmd = "pytest --cov-report html --cov copier copier tests"
help = "generate an HTML report of the coverage"
[tool.poe.tasks.dev-setup]
script = "devtasks:dev_setup"
help = "set up local development environment"
[tool.poe.tasks.docs]
cmd = "mkdocs serve"
help = "start local docs server"
[tool.poe.tasks.lint]
script = "devtasks:lint"
help = "check (and auto-fix) style with pre-commit"
[tool.poe.tasks.test]
cmd = "pytest --color=yes"
help = "run tests"
[tool.poe.tasks.types]
cmd = "mypy ."
help = "run the type (mypy) checker on the codebase"
[tool.ruff.lint]
extend-select = [
"ARG",
"B",
"C90",
"D",
"E",
"F",
"FA",
"I",
"PERF",
"PGH",
"PTH",
"UP",
]
extend-ignore = ['B028', "B904", "D105", "D107", "E501"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["D"]
[tool.ruff.lint.isort]
combine-as-imports = true
known-first-party = ["copier"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.pyupgrade]
keep-runtime-typing = true
[tool.mypy]
strict = true
plugins = ["pydantic.mypy"]
[[tool.mypy.overrides]]
module = [
"coverage.tracer",
"funcy",
"pexpect.*",
"plumbum.*",
"poethepoet.app",
]
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = [
"copier._subproject",
"copier._template",
"copier._tools",
"copier._user_data",
"copier._vcs",
"copier.subproject",
"copier.template",
"copier.tools",
"copier.user_data",
"copier.vcs",
]
warn_return_any = false
[[tool.mypy.overrides]]
module = ["tests.test_cli", "tests.test_prompt"]
disable_error_code = ["no-untyped-def"]
[tool.pytest.ini_options]
addopts = "-n auto -ra"
markers = ["impure: needs network or is not 100% reproducible"]
[tool.coverage.run]
omit = [
# Ignore deprecated modules
"copier/cli.py",
"copier/jinja_ext.py",
"copier/main.py",
"copier/subproject.py",
"copier/template.py",
"copier/tools.py",
"copier/types.py",
"copier/user_data.py",
"copier/vcs.py",
]
[tool.commitizen]
annotated_tag = true
changelog_incremental = true
tag_format = "v$version"
update_changelog_on_bump = true
version = "9.7.0"
[tool.hatch.version]
source = "vcs"
[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"