μHAL (v2.8.19)
Part of the IPbus software repository
Loading...
Searching...
No Matches
noxfile.py
Go to the documentation of this file.
1import os
2
3import nox
4
5nox.needs_version = ">=2022.1.7"
6nox.options.sessions = ["lint", "tests", "tests_packaging"]
7
8PYTHON_VERSIONS = [
9 "3.6",
10 "3.7",
11 "3.8",
12 "3.9",
13 "3.10",
14 "3.11",
15 "pypy3.7",
16 "pypy3.8",
17 "pypy3.9",
18]
19
20if os.environ.get("CI", None):
21 nox.options.error_on_missing_interpreters = True
22
23
24@nox.session(reuse_venv=True)
25def lint(session: nox.Session) -> None:
26 """
27 Lint the codebase (except for clang-format/tidy).
28 """
29 session.install("pre-commit")
30 session.run("pre-commit", "run", "-a", *session.posargs)
31
32
33@nox.session(python=PYTHON_VERSIONS)
34def tests(session: nox.Session) -> None:
35 """
36 Run the tests (requires a compiler).
37 """
38 tmpdir = session.create_tmp()
39 session.install("cmake")
40 session.install("-r", "tests/requirements.txt")
41 session.run(
42 "cmake",
43 "-S.",
44 f"-B{tmpdir}",
45 "-DPYBIND11_WERROR=ON",
46 "-DDOWNLOAD_CATCH=ON",
47 "-DDOWNLOAD_EIGEN=ON",
48 *session.posargs,
49 )
50 session.run("cmake", "--build", tmpdir)
51 session.run("cmake", "--build", tmpdir, "--config=Release", "--target", "check")
52
53
54@nox.session
55def tests_packaging(session: nox.Session) -> None:
56 """
57 Run the packaging tests.
58 """
59
60 session.install("-r", "tests/requirements.txt", "--prefer-binary")
61 session.run("pytest", "tests/extra_python_package", *session.posargs)
62
63
64@nox.session(reuse_venv=True)
65def docs(session: nox.Session) -> None:
66 """
67 Build the docs. Pass "serve" to serve.
68 """
69
70 session.install("-r", "docs/requirements.txt")
71 session.chdir("docs")
72
73 if "pdf" in session.posargs:
74 session.run("sphinx-build", "-M", "latexpdf", ".", "_build")
75 return
76
77 session.run("sphinx-build", "-M", "html", ".", "_build")
78
79 if "serve" in session.posargs:
80 session.log("Launching docs at http://localhost:8000/ - use Ctrl-C to quit")
81 session.run("python", "-m", "http.server", "8000", "-d", "_build/html")
82 elif session.posargs:
83 session.error("Unsupported argument to docs")
84
85
86@nox.session(reuse_venv=True)
87def make_changelog(session: nox.Session) -> None:
88 """
89 Inspect the closed issues and make entries for a changelog.
90 """
91 session.install("ghapi", "rich")
92 session.run("python", "tools/make_changelog.py")
93
94
95@nox.session(reuse_venv=True)
96def build(session: nox.Session) -> None:
97 """
98 Build SDists and wheels.
99 """
100
101 session.install("build")
102 session.log("Building normal files")
103 session.run("python", "-m", "build", *session.posargs)
104 session.log("Building pybind11-global files (PYBIND11_GLOBAL_SDIST=1)")
105 session.run(
106 "python", "-m", "build", *session.posargs, env={"PYBIND11_GLOBAL_SDIST": "1"}
107 )
None tests_packaging(nox.Session session)
Definition: noxfile.py:40
None tests(nox.Session session)
Definition: noxfile.py:19
None build(nox.Session session)
Definition: noxfile.py:81
None docs(nox.Session session)
Definition: noxfile.py:50
None lint(nox.Session session)
Definition: noxfile.py:10