13
13
nox .options .sessions = []
14
14
15
15
16
- def session (default = True , ** kwargs ):
16
+ def session (default = True , ** kwargs ): # noqa: D103
17
17
def _session (fn ):
18
18
if default :
19
19
nox .options .sessions .append (kwargs .get ("name" , fn .__name__ ))
@@ -24,19 +24,28 @@ def _session(fn):
24
24
25
25
@session (python = ["3.8" , "3.9" , "3.10" , "3.11" , "3.12" , "pypy3" ])
26
26
def tests (session ):
27
+ """
28
+ Run the test suite with a corresponding Python version.
29
+ """
27
30
session .install ("pytest" , ROOT )
28
31
env = dict (os .environ , PYTHONWARNDEFAULTENCODING = "1" )
29
32
session .run ("pytest" , "--verbosity=3" , "--pythonwarnings=error" , env = env )
30
33
31
34
32
35
@session ()
33
36
def audit (session ):
37
+ """
38
+ Audit dependencies for vulnerabilities.
39
+ """
34
40
session .install ("pip-audit" , ROOT )
35
41
session .run ("python" , "-m" , "pip_audit" )
36
42
37
43
38
44
@session (tags = ["build" ])
39
45
def build (session ):
46
+ """
47
+ Build a distribution suitable for PyPI and check its validity.
48
+ """
40
49
session .install ("build" , "twine" )
41
50
with TemporaryDirectory () as tmpdir :
42
51
session .run ("python" , "-m" , "build" , ROOT , "--outdir" , tmpdir )
@@ -45,12 +54,18 @@ def build(session):
45
54
46
55
@session (tags = ["style" ])
47
56
def style (session ):
57
+ """
58
+ Check Python code style.
59
+ """
48
60
session .install ("ruff" )
49
61
session .run ("ruff" , "check" , ROOT )
50
62
51
63
52
64
@session ()
53
65
def typing (session ):
66
+ """
67
+ Check static typing.
68
+ """
54
69
session .install ("mypy" , ROOT )
55
70
session .run ("python" , "-m" , "mypy" , PACKAGE )
56
71
@@ -70,26 +85,33 @@ def typing(session):
70
85
],
71
86
)
72
87
def docs (session , builder ):
88
+ """
89
+ Build the documentation using a specific Sphinx builder.
90
+ """
73
91
session .install ("-r" , DOCS / "requirements.txt" )
74
92
with TemporaryDirectory () as tmpdir_str :
75
93
tmpdir = Path (tmpdir_str )
76
94
argv = ["-n" , "-T" , "-W" ]
77
95
if builder != "spelling" :
78
96
argv += ["-q" ]
97
+ posargs = session .posargs or [tmpdir / builder ]
79
98
session .run (
80
99
"python" ,
81
100
"-m" ,
82
101
"sphinx" ,
83
102
"-b" ,
84
103
builder ,
85
104
DOCS ,
86
- tmpdir / builder ,
87
105
* argv ,
106
+ * posargs ,
88
107
)
89
108
90
109
91
110
@session (tags = ["docs" , "style" ], name = "docs(style)" )
92
111
def docs_style (session ):
112
+ """
113
+ Check the documentation style.
114
+ """
93
115
session .install (
94
116
"doc8" ,
95
117
"pygments" ,
@@ -109,6 +131,7 @@ def requirements(session):
109
131
"pip-compile" ,
110
132
"--resolver" ,
111
133
"backtracking" ,
134
+ "--strip-extras" ,
112
135
"-U" ,
113
136
each .relative_to (ROOT ),
114
137
)
0 commit comments