2021-03-08 06:54:22 -08:00
|
|
|
[build-system]
|
2025-09-10 13:01:47 -07:00
|
|
|
requires = ["scikit-build-core >=0.11.2"]
|
|
|
|
build-backend = "scikit_build_core.build"
|
|
|
|
|
|
|
|
[project]
|
|
|
|
name = "pybind11"
|
|
|
|
description = "Seamless operability between C++11 and Python"
|
|
|
|
authors = [{name = "Wenzel Jakob", email = "wenzel.jakob@epfl.ch"}]
|
|
|
|
license = "BSD-3-Clause"
|
|
|
|
license-files = ["LICENSE"]
|
|
|
|
readme = "README.rst"
|
|
|
|
classifiers = [
|
|
|
|
"Development Status :: 5 - Production/Stable",
|
|
|
|
"Intended Audience :: Developers",
|
|
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
|
|
"Topic :: Utilities",
|
|
|
|
"Programming Language :: C++",
|
|
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
|
|
"Programming Language :: Python :: 3.8",
|
|
|
|
"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 :: 3.14",
|
|
|
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
|
|
"Programming Language :: C++",
|
|
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
|
|
]
|
|
|
|
keywords = [
|
|
|
|
"C++11",
|
|
|
|
"Python bindings",
|
|
|
|
]
|
|
|
|
dynamic = ["version", "optional-dependencies"]
|
|
|
|
requires-python = ">=3.8"
|
|
|
|
|
|
|
|
[project.urls]
|
|
|
|
Homepage = "https://github.com/pybind/pybind11"
|
|
|
|
Documentation = "https://pybind11.readthedocs.io/"
|
|
|
|
"Bug Tracker" = "https://github.com/pybind/pybind11/issues"
|
|
|
|
Discussions = "https://github.com/pybind/pybind11/discussions"
|
|
|
|
Changelog = "https://pybind11.readthedocs.io/en/latest/changelog.html"
|
|
|
|
Chat = "https://gitter.im/pybind/Lobby"
|
|
|
|
|
|
|
|
[project.scripts]
|
|
|
|
pybind11-config = "pybind11.__main__:main"
|
|
|
|
|
|
|
|
[project.entry-points."pipx.run"]
|
|
|
|
pybind11 = "pybind11.__main__:main"
|
|
|
|
|
|
|
|
[project.entry-points.pkg_config]
|
|
|
|
pybind11 = "pybind11.share.pkgconfig"
|
|
|
|
|
|
|
|
|
|
|
|
[dependency-groups]
|
|
|
|
test = [
|
|
|
|
"pytest",
|
|
|
|
"build",
|
|
|
|
"tomlkit",
|
|
|
|
]
|
|
|
|
dev = [{ include-group = "test" }]
|
|
|
|
|
|
|
|
|
|
|
|
[tool.scikit-build]
|
|
|
|
minimum-version = "build-system.requires"
|
|
|
|
sdist.exclude = [
|
|
|
|
"/docs/**",
|
|
|
|
"/.**",
|
|
|
|
]
|
|
|
|
wheel.install-dir = "pybind11"
|
|
|
|
wheel.platlib = false
|
|
|
|
|
|
|
|
[tool.scikit-build.cmake.define]
|
|
|
|
BUILD_TESTING = false
|
|
|
|
PYBIND11_NOPYTHON = true
|
|
|
|
prefix_for_pc_file = "${pcfiledir}/../../"
|
|
|
|
|
|
|
|
[tool.scikit-build.metadata.version]
|
|
|
|
provider = "scikit_build_core.metadata.regex"
|
|
|
|
input = "include/pybind11/detail/common.h"
|
|
|
|
regex = '''(?sx)
|
|
|
|
\#define \s+ PYBIND11_VERSION_MAJOR \s+ (?P<major>\d+) .*?
|
|
|
|
\#define \s+ PYBIND11_VERSION_MINOR \s+ (?P<minor>\d+) .*?
|
|
|
|
\#define \s+ PYBIND11_VERSION_PATCH \s+ (?P<patch>\S+)
|
|
|
|
'''
|
|
|
|
result = "{major}.{minor}.{patch}"
|
|
|
|
|
|
|
|
[tool.scikit-build.metadata.optional-dependencies]
|
|
|
|
provider = "scikit_build_core.metadata.template"
|
|
|
|
result = { global = ["pybind11-global=={project[version]}"]}
|
|
|
|
|
|
|
|
[[tool.scikit-build.generate]]
|
|
|
|
path = "pybind11/_version.py"
|
|
|
|
template = '''
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
|
|
def _to_int(s: str) -> int | str:
|
|
|
|
try:
|
|
|
|
return int(s)
|
|
|
|
except ValueError:
|
|
|
|
return s
|
|
|
|
|
|
|
|
|
|
|
|
__version__ = "$version"
|
|
|
|
version_info = tuple(_to_int(s) for s in __version__.split("."))
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
|
|
[tool.uv]
|
|
|
|
# Can't use tool.uv.sources with requirements.txt
|
|
|
|
index-strategy = "unsafe-best-match"
|
|
|
|
# This extra confuses uv
|
|
|
|
override-dependencies = ["pybind11-global"]
|
2022-06-20 15:59:56 -07:00
|
|
|
|
|
|
|
|
|
|
|
[tool.mypy]
|
2025-09-10 13:01:47 -07:00
|
|
|
files = ["pybind11"]
|
|
|
|
python_version = "3.8"
|
|
|
|
strict = true
|
|
|
|
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
|
|
|
|
warn_unreachable = true
|
|
|
|
|
|
|
|
[[tool.mypy.overrides]]
|
|
|
|
module = ["ghapi.*", "tomlkit"] # tomlkit has types, but not very helpful
|
|
|
|
ignore_missing_imports = true
|
|
|
|
|
|
|
|
|
|
|
|
[tool.pylint]
|
|
|
|
master.py-version = "3.8"
|
|
|
|
reports.output-format = "colorized"
|
|
|
|
messages_control.disable = [
|
|
|
|
"design",
|
|
|
|
"fixme",
|
|
|
|
"imports",
|
|
|
|
"line-too-long",
|
|
|
|
"imports",
|
|
|
|
"invalid-name",
|
|
|
|
"protected-access",
|
|
|
|
"missing-module-docstring",
|
|
|
|
"unused-argument", # covered by Ruff ARG
|
|
|
|
"consider-using-f-string", # triggers in _version.py incorrectly
|
|
|
|
]
|
|
|
|
|
|
|
|
[tool.ruff.lint]
|
|
|
|
extend-select = [
|
|
|
|
"B", # flake8-bugbear
|
|
|
|
"I", # isort
|
|
|
|
"N", # pep8-naming
|
|
|
|
"ARG", # flake8-unused-arguments
|
|
|
|
"C4", # flake8-comprehensions
|
|
|
|
"EM", # flake8-errmsg
|
|
|
|
"ICN", # flake8-import-conventions
|
|
|
|
"PGH", # pygrep-hooks
|
|
|
|
"PIE", # flake8-pie
|
|
|
|
"PL", # pylint
|
|
|
|
"PT", # flake8-pytest-style
|
|
|
|
"RET", # flake8-return
|
|
|
|
"RUF100", # Ruff-specific
|
|
|
|
"SIM", # flake8-simplify
|
|
|
|
"UP", # pyupgrade
|
|
|
|
"YTT", # flake8-2020
|
|
|
|
]
|
|
|
|
ignore = [
|
|
|
|
"PLR", # Design related pylint
|
|
|
|
"PT011", # Too broad with raises in pytest
|
|
|
|
"SIM118", # iter(x) is not always the same as iter(x.keys())
|
|
|
|
"PLC0415", # We import in functions for various reasons
|
|
|
|
]
|
|
|
|
isort.known-first-party = ["env", "pybind11_cross_module_tests", "pybind11_tests"]
|
|
|
|
isort.required-imports = ["from __future__ import annotations"]
|
|
|
|
|
|
|
|
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
|
|
"tests/**" = [
|
|
|
|
"EM",
|
|
|
|
"N",
|
|
|
|
"E721",
|
|
|
|
]
|
|
|
|
"tests/test_call_policies.py" = ["PLC1901"]
|
|
|
|
|
|
|
|
[tool.repo-review]
|
|
|
|
ignore = ["PP"]
|