noxfile.py
Go to the documentation of this file.
1 import os
2 
3 import nox
4 
5 nox.needs_version = ">=2022.1.7"
6 nox.options.sessions = ["lint", "tests", "tests_packaging"]
7 
8 PYTHON_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 
20 if os.environ.get("CI", None):
21  nox.options.error_on_missing_interpreters = True
22 
23 
24 @nox.session(reuse_venv=True)
25 def 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)
34 def 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
55 def 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)
65 def 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)
87 def 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)
96 def 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  )
noxfile.tests_packaging
None tests_packaging(nox.Session session)
Definition: noxfile.py:55
noxfile.build
None build(nox.Session session)
Definition: noxfile.py:96
noxfile.tests
None tests(nox.Session session)
Definition: noxfile.py:34
noxfile.docs
None docs(nox.Session session)
Definition: noxfile.py:65
noxfile.make_changelog
None make_changelog(nox.Session session)
Definition: noxfile.py:87
noxfile.lint
None lint(nox.Session session)
Definition: noxfile.py:25


gtsam
Author(s):
autogenerated on Tue Jun 25 2024 03:01:46