mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-24 22:25:10 +00:00
chore: add nox support (#3101)
* chore: add nox support * chore: add more lines to CODEOWNERS
This commit is contained in:
parent
9f11951b5b
commit
ddf0efb990
3
.github/CODEOWNERS
vendored
3
.github/CODEOWNERS
vendored
@ -4,3 +4,6 @@ CMakeLists.txt @henryiii
|
|||||||
*.yaml @henryiii
|
*.yaml @henryiii
|
||||||
/tools/ @henryiii
|
/tools/ @henryiii
|
||||||
/pybind11/ @henryiii
|
/pybind11/ @henryiii
|
||||||
|
noxfile.py @henryiii
|
||||||
|
.clang-format @henryiii
|
||||||
|
.clang-tidy @henryiii
|
||||||
|
27
.github/CONTRIBUTING.md
vendored
27
.github/CONTRIBUTING.md
vendored
@ -53,6 +53,33 @@ derivative works thereof, in binary and source code form.
|
|||||||
|
|
||||||
## Development of pybind11
|
## Development of pybind11
|
||||||
|
|
||||||
|
### Quick setup
|
||||||
|
|
||||||
|
To setup a quick development environment, use [`nox`](https://nox.thea.codes).
|
||||||
|
This will allow you to do some common tasks with minimal setup effort, but will
|
||||||
|
take more time to run and be less flexible than a full development environment.
|
||||||
|
If you use [`pipx run nox`](https://pipx.pypa.io), you don't even need to
|
||||||
|
install `nox`. Examples:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all available sessions
|
||||||
|
nox -l
|
||||||
|
|
||||||
|
# Run linters
|
||||||
|
nox -s lint
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
nox -s tests
|
||||||
|
|
||||||
|
# Build and preview docs
|
||||||
|
nox -s docs -- serve
|
||||||
|
|
||||||
|
# Build SDists and wheels
|
||||||
|
nox -s build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Full setup
|
||||||
|
|
||||||
To setup an ideal development environment, run the following commands on a
|
To setup an ideal development environment, run the following commands on a
|
||||||
system with CMake 3.14+:
|
system with CMake 3.14+:
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ repos:
|
|||||||
- id: requirements-txt-fixer
|
- id: requirements-txt-fixer
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- id: fix-encoding-pragma
|
- id: fix-encoding-pragma
|
||||||
|
exclude: ^noxfile.py$
|
||||||
|
|
||||||
# Black, the code formatter, natively supports pre-commit
|
# Black, the code formatter, natively supports pre-commit
|
||||||
- repo: https://github.com/psf/black
|
- repo: https://github.com/psf/black
|
||||||
|
83
noxfile.py
Normal file
83
noxfile.py
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
import nox
|
||||||
|
|
||||||
|
|
||||||
|
nox.options.sessions = ["lint", "tests", "tests_packaging"]
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session(reuse_venv=True)
|
||||||
|
def lint(session: nox.Session) -> None:
|
||||||
|
"""
|
||||||
|
Lint the codebase (except for clang-format/tidy).
|
||||||
|
"""
|
||||||
|
session.install("pre-commit")
|
||||||
|
session.run("pre-commit", "run", "-a")
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session
|
||||||
|
def tests(session: nox.Session) -> None:
|
||||||
|
"""
|
||||||
|
Run the tests (requires a compiler).
|
||||||
|
"""
|
||||||
|
tmpdir = session.create_tmp()
|
||||||
|
session.install("pytest", "cmake")
|
||||||
|
session.run(
|
||||||
|
"cmake",
|
||||||
|
"-S",
|
||||||
|
".",
|
||||||
|
"-B",
|
||||||
|
tmpdir,
|
||||||
|
"-DPYBIND11_WERROR=ON",
|
||||||
|
"-DDOWNLOAD_CATCH=ON",
|
||||||
|
"-DDOWNLOAD_EIGEN=ON",
|
||||||
|
*session.posargs
|
||||||
|
)
|
||||||
|
session.run("cmake", "--build", tmpdir)
|
||||||
|
session.run("cmake", "--build", tmpdir, "--config=Release", "--target", "check")
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session
|
||||||
|
def tests_packaging(session: nox.Session) -> None:
|
||||||
|
"""
|
||||||
|
Run the packaging tests.
|
||||||
|
"""
|
||||||
|
|
||||||
|
session.install("-r", "tests/requirements.txt", "--prefer-binary")
|
||||||
|
session.run("pytest", "tests/extra_python_package")
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session(reuse_venv=True)
|
||||||
|
def docs(session: nox.Session) -> None:
|
||||||
|
"""
|
||||||
|
Build the docs. Pass "serve" to serve.
|
||||||
|
"""
|
||||||
|
|
||||||
|
session.install("-r", "docs/requirements.txt")
|
||||||
|
session.chdir("docs")
|
||||||
|
session.run("sphinx-build", "-M", "html", ".", "_build")
|
||||||
|
|
||||||
|
if session.posargs:
|
||||||
|
if "serve" in session.posargs:
|
||||||
|
print("Launching docs at http://localhost:8000/ - use Ctrl-C to quit")
|
||||||
|
session.run("python", "-m", "http.server", "8000", "-d", "_build/html")
|
||||||
|
else:
|
||||||
|
print("Unsupported argument to docs")
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session(reuse_venv=True)
|
||||||
|
def make_changelog(session: nox.Session) -> None:
|
||||||
|
"""
|
||||||
|
Inspect the closed issues and make entries for a changelog.
|
||||||
|
"""
|
||||||
|
session.install("ghapi", "rich")
|
||||||
|
session.run("python", "tools/make_changelog.py")
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session(reuse_venv=True)
|
||||||
|
def build(session: nox.Session) -> None:
|
||||||
|
"""
|
||||||
|
Build SDists and wheels.
|
||||||
|
"""
|
||||||
|
|
||||||
|
session.install("build")
|
||||||
|
session.run("python", "-m", "build")
|
||||||
|
session.run("python", "-m", "build", env={"PYBIND11_GLOBAL_SDIST": "1"})
|
Loading…
Reference in New Issue
Block a user