[build-system]
requires = [
"hatchling",
"hatch-cpp",
"pybind11",
]
build-backend = "hatchling.build"
[project]
name = "python-template-cpp"
authors = [
{name = "Python Project Template Authors", email = "3105306+timkpaine@users.noreply.github.com"},
]
description = "A C++-Python project template"
readme = "README.md"
license = { text = "Apache-2.0" }
version = "0.1.0"
requires-python = ">=3.10"
keywords = []
classifiers = [
"Development Status :: 3 - Alpha",
"Programming Language :: Python",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = []
[project.optional-dependencies]
develop = [
"build",
"bump-my-version",
"check-dist",
"cibuildwheel",
"codespell",
"hatch-cpp",
"hatchling",
"mdformat",
"mdformat-tables>=1",
"pybind11",
"pytest",
"pytest-cov",
"ruff",
"twine",
"ty",
"uv",
"wheel",
]
[project.scripts]
[project.urls]
Repository = "https://github.com/python-project-templates/python-template-cpp"
Homepage = "https://github.com/python-project-templates/python-template-cpp"
[tool.bumpversion]
current_version = "0.1.0"
commit = true
tag = true
commit_args = "-s"
[[tool.bumpversion.files]]
filename = "python_template_cpp/__init__.py"
search = '__version__ = "{current_version}"'
replace = '__version__ = "{new_version}"'
[[tool.bumpversion.files]]
filename = "pyproject.toml"
search = 'version = "{current_version}"'
replace = 'version = "{new_version}"'
[tool.cibuildwheel]
build = "cp310-* cp311-* cp312-* cp313-*"
test-command = "echo 'TODO'"
test-extras = "develop"
[tool.cibuildwheel.linux]
manylinux-x86_64-image = "manylinux_2_28"
skip = "*i686 musllinux*"
[tool.cibuildwheel.macos]
environment = {MACOSX_DEPLOYMENT_TARGET="11.0"}
archs = "arm64"
[tool.cibuildwheel.windows]
archs = "AMD64"
skip = "*win32 *arm_64"
[tool.coverage.run]
branch = true
omit = [
"python_template_cpp/tests/integration/",
]
[tool.coverage.report]
exclude_also = [
"raise NotImplementedError",
"if __name__ == .__main__.:",
"@(abc\\.)?abstractmethod",
]
ignore_errors = true
fail_under = 50
[tool.hatch.build]
artifacts = [
"python_template_cpp/*.dll",
"python_template_cpp/*.dylib",
"python_template_cpp/*.so",
]
[tool.hatch.build.sources]
src = "/"
[tool.hatch.build.hooks.hatch-cpp]
verbose = true
libraries = [
{name = "python_template_cpp/extension", sources = ["cpp/python-template-cpp/extension.cpp"], include-dirs = ["cpp"], binding="pybind11"}
]
[tool.hatch.build.targets.sdist]
packages = [
"python_template_cpp",
"cpp",
]
[tool.hatch.build.targets.wheel]
packages = [
"python_template_cpp",
]
[tool.pytest.ini_options]
addopts = [
"-vvv",
"--junitxml=junit.xml",
]
testpaths = "python_template_cpp/tests"
[tool.ruff]
line-length = 150
[tool.ruff.lint]
extend-select = [
"I",
]
[tool.ruff.lint.isort]
combine-as-imports = true
default-section = "third-party"
known-first-party = [
"python_template_cpp",
]
section-order = [
"future",
"standard-library",
"third-party",
"first-party",
"local-folder",
]
[tool.ruff.lint.per-file-ignores]
"__init__.py" = [
"F401",
"F403",
]
[tool.yardang]
title = "python template cpp"
root = "README.md"
pages = []
use-autoapi = true