μHAL (v2.8.17)
Part of the IPbus software repository
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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