52
52
LANGUAGES = conf .languages
53
53
54
54
# List of languages that should be built when releasing the guide (docs or docs-test sessions)
55
- RELEASE_LANGUAGES = [ lang for lang in conf .languages if lang != "en" ]
55
+ RELEASE_LANGUAGES = conf .release_languages
56
56
57
+ # allowable values of `SPHINX_ENV`
58
+ SPHINX_ENVS = ('production' , 'development' )
57
59
58
60
@nox .session
59
61
def docs (session ):
60
62
"""Build the packaging guide."""
61
63
session .install ("-e" , "." )
64
+ sphinx_env = _sphinx_env (session )
62
65
session .run (SPHINX_BUILD , * BUILD_PARAMETERS , SOURCE_DIR , OUTPUT_DIR , * session .posargs )
63
66
# When building the guide, also build the translations in RELEASE_LANGUAGES
64
- session .notify ("build-translations" , ['release-build' ])
67
+ session .notify ("build-translations" , [sphinx_env ])
65
68
66
69
67
70
@nox .session (name = "docs-test" )
@@ -72,13 +75,14 @@ def docs_test(session):
72
75
Note: this is the session used in CI/CD to release the guide.
73
76
"""
74
77
session .install ("-e" , "." )
75
- session .run (SPHINX_BUILD , * BUILD_PARAMETERS , * TEST_PARAMETERS , SOURCE_DIR , OUTPUT_DIR , * session .posargs )
78
+ session .run (SPHINX_BUILD , * BUILD_PARAMETERS , * TEST_PARAMETERS , SOURCE_DIR , OUTPUT_DIR , * session .posargs ,
79
+ env = {'SPHINX_ENV' : 'production' })
76
80
# When building the guide with additional parameters, also build the translations in RELEASE_LANGUAGES
77
81
# with those same parameters.
78
- session .notify ("build-translations" , ['release-build ' , * TEST_PARAMETERS ])
82
+ session .notify ("build-translations" , ['production ' , * TEST_PARAMETERS ])
79
83
80
84
def _autobuild_cmd (posargs : list [str ], output_dir = OUTPUT_DIR ) -> list [str ]:
81
- cmd = ["SPHINX_DEV=true" , SPHINX_AUTO_BUILD , * BUILD_PARAMETERS , str (SOURCE_DIR ), str (output_dir ), * posargs ]
85
+ cmd = [SPHINX_AUTO_BUILD , * BUILD_PARAMETERS , str (SOURCE_DIR ), str (output_dir ), * posargs ]
82
86
for folder in AUTOBUILD_IGNORE :
83
87
cmd .extend (["--ignore" , f"*/{ folder } /*" ])
84
88
return cmd
@@ -104,7 +108,7 @@ def docs_live(session):
104
108
# This part was commented in the previous version of the nox file, keeping the same here
105
109
# for folder in AUTOBUILD_INCLUDE:
106
110
# cmd.extend(["--watch", folder])
107
- session .run (* cmd )
111
+ session .run (* cmd , env = { 'SPHINX_ENV' : "development" } )
108
112
109
113
110
114
@nox .session (name = "docs-live-lang" )
@@ -156,20 +160,18 @@ def docs_live_langs(session):
156
160
157
161
session .install ("-e" , "." )
158
162
159
- cmds = ['"' + " " .join (_autobuild_cmd (session .posargs ) + ['--open-browser' ]) + '"' ]
163
+ cmds = ['"' + " " .join ([ "SPHINX_ENV=development" ] + _autobuild_cmd (session .posargs ) + ['--open-browser' ]) + '"' ]
160
164
for language in LANGUAGES :
161
- if language == "en" :
162
- continue
163
165
cmds .append (
164
166
'"' + " " .join (
165
- [f"SPHINX_LANG={ language } " ] +
167
+ [f"SPHINX_LANG={ language } " , "SPHINX_ENV=development" ] +
166
168
_autobuild_cmd (
167
169
session .posargs + ["-D" , f"language={ language } " ],
168
170
output_dir = OUTPUT_DIR / language
169
171
) + ["--port=0" ]
170
172
) + '"'
171
173
)
172
- cmd = ['concurrently' , '--kill-others' , '-n' , ',' .join (LANGUAGES ), '-c' , 'auto' , * cmds ]
174
+ cmd = ['concurrently' , '--kill-others' , '-n' , ',' .join ([ "en" ] + LANGUAGES ), '-c' , 'auto' , * cmds ]
173
175
session .run (* cmd )
174
176
175
177
@nox .session (name = "docs-clean" )
@@ -212,6 +214,9 @@ def build_languages(session):
212
214
"""
213
215
if not session .posargs :
214
216
session .error ("Please provide the list of languages to build the translation for" )
217
+
218
+ sphinx_env = _sphinx_env (session )
219
+
215
220
languages_to_build = session .posargs .pop (0 )
216
221
217
222
session .install ("-e" , "." )
@@ -224,7 +229,8 @@ def build_languages(session):
224
229
out_dir = OUTPUT_DIR
225
230
else :
226
231
out_dir = OUTPUT_DIR / lang
227
- session .run (SPHINX_BUILD , * BUILD_PARAMETERS , "-D" , f"language={ lang } " , "." , out_dir , * session .posargs , env = {"SPHINX_LANG" : lang })
232
+ session .run (SPHINX_BUILD , * BUILD_PARAMETERS , "-D" , f"language={ lang } " , "." , out_dir , * session .posargs ,
233
+ env = {"SPHINX_LANG" : lang , "SPHINX_ENV" : sphinx_env })
228
234
229
235
230
236
@nox .session (name = "build-translations" )
@@ -236,21 +242,19 @@ def build_translations(session):
236
242
It is also called by the docs and docs-test sessions with 'release-build' as the first positional
237
243
argument, to build only the translations defined in RELEASE_LANGUAGES.
238
244
"""
239
- release_build = False
240
- if session .posargs and session .posargs [0 ] == 'release-build' :
241
- session .posargs .pop (0 )
242
- release_build = True
245
+ sphinx_env = _sphinx_env (session )
246
+
243
247
# if running from the docs or docs-test sessions, build only release languages
244
- BUILD_LANGUAGES = RELEASE_LANGUAGES if release_build else LANGUAGES
248
+ BUILD_LANGUAGES = RELEASE_LANGUAGES if sphinx_env == "production" else LANGUAGES
245
249
# only build languages that have a locale folder
246
250
BUILD_LANGUAGES = [lang for lang in BUILD_LANGUAGES if (TRANSLATION_LOCALES_DIR / lang ).exists ()]
247
251
session .log (f"Declared languages: { LANGUAGES } " )
248
252
session .log (f"Release languages: { RELEASE_LANGUAGES } " )
249
- session .log (f"Building languages{ ' for release' if release_build else '' } : { BUILD_LANGUAGES } " )
253
+ session .log (f"Building languages{ ' for release' if sphinx_env == 'production' else '' } : { BUILD_LANGUAGES } " )
250
254
if not BUILD_LANGUAGES :
251
255
session .warn ("No translations to build" )
252
256
else :
253
- session .notify ("build-languages" , [BUILD_LANGUAGES , * session .posargs ])
257
+ session .notify ("build-languages" , [sphinx_env , BUILD_LANGUAGES , * session .posargs ])
254
258
255
259
256
260
@nox .session (name = "build-translations-test" )
@@ -262,3 +266,14 @@ def build_translations_test(session):
262
266
in the same way docs-test does for the English version.
263
267
"""
264
268
session .notify ("build-translations" , [* TEST_PARAMETERS ])
269
+
270
+
271
+ def _sphinx_env (session ) -> str :
272
+ """
273
+ Get the sphinx env, from the first positional argument if present or from the
274
+ ``SPHINX_ENV`` environment variable, defaulting to "development"
275
+ """
276
+ if session .posargs and session .posargs [0 ] in SPHINX_ENVS :
277
+ return session .posargs .pop (0 )
278
+ else :
279
+ return os .environ .get ('SPHINX_ENV' , 'development' )
0 commit comments