5252LANGUAGES = conf .languages
5353
5454# 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
5656
57+ # allowable values of `SPHINX_ENV`
58+ SPHINX_ENVS = ('production' , 'development' )
5759
5860@nox .session
5961def docs (session ):
6062 """Build the packaging guide."""
6163 session .install ("-e" , "." )
64+ sphinx_env = _sphinx_env (session )
6265 session .run (SPHINX_BUILD , * BUILD_PARAMETERS , SOURCE_DIR , OUTPUT_DIR , * session .posargs )
6366 # 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 ])
6568
6669
6770@nox .session (name = "docs-test" )
@@ -72,13 +75,14 @@ def docs_test(session):
7275 Note: this is the session used in CI/CD to release the guide.
7376 """
7477 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' })
7680 # When building the guide with additional parameters, also build the translations in RELEASE_LANGUAGES
7781 # with those same parameters.
78- session .notify ("build-translations" , ['release-build ' , * TEST_PARAMETERS ])
82+ session .notify ("build-translations" , ['production ' , * TEST_PARAMETERS ])
7983
8084def _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 ]
8286 for folder in AUTOBUILD_IGNORE :
8387 cmd .extend (["--ignore" , f"*/{ folder } /*" ])
8488 return cmd
@@ -104,7 +108,7 @@ def docs_live(session):
104108 # This part was commented in the previous version of the nox file, keeping the same here
105109 # for folder in AUTOBUILD_INCLUDE:
106110 # cmd.extend(["--watch", folder])
107- session .run (* cmd )
111+ session .run (* cmd , env = { 'SPHINX_ENV' : "development" } )
108112
109113
110114@nox .session (name = "docs-live-lang" )
@@ -156,20 +160,18 @@ def docs_live_langs(session):
156160
157161 session .install ("-e" , "." )
158162
159- cmds = ['"' + " " .join (_autobuild_cmd (session .posargs ) + ['--open-browser' ]) + '"' ]
163+ cmds = ['"' + " " .join ([ "SPHINX_ENV=development" ] + _autobuild_cmd (session .posargs ) + ['--open-browser' ]) + '"' ]
160164 for language in LANGUAGES :
161- if language == "en" :
162- continue
163165 cmds .append (
164166 '"' + " " .join (
165- [f"SPHINX_LANG={ language } " ] +
167+ [f"SPHINX_LANG={ language } " , "SPHINX_ENV=development" ] +
166168 _autobuild_cmd (
167169 session .posargs + ["-D" , f"language={ language } " ],
168170 output_dir = OUTPUT_DIR / language
169171 ) + ["--port=0" ]
170172 ) + '"'
171173 )
172- cmd = ['concurrently' , '--kill-others' , '-n' , ',' .join (LANGUAGES ), '-c' , 'auto' , * cmds ]
174+ cmd = ['concurrently' , '--kill-others' , '-n' , ',' .join ([ "en" ] + LANGUAGES ), '-c' , 'auto' , * cmds ]
173175 session .run (* cmd )
174176
175177@nox .session (name = "docs-clean" )
@@ -212,6 +214,9 @@ def build_languages(session):
212214 """
213215 if not session .posargs :
214216 session .error ("Please provide the list of languages to build the translation for" )
217+
218+ sphinx_env = _sphinx_env (session )
219+
215220 languages_to_build = session .posargs .pop (0 )
216221
217222 session .install ("-e" , "." )
@@ -224,7 +229,8 @@ def build_languages(session):
224229 out_dir = OUTPUT_DIR
225230 else :
226231 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 })
228234
229235
230236@nox .session (name = "build-translations" )
@@ -236,21 +242,19 @@ def build_translations(session):
236242 It is also called by the docs and docs-test sessions with 'release-build' as the first positional
237243 argument, to build only the translations defined in RELEASE_LANGUAGES.
238244 """
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+
243247 # 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
245249 # only build languages that have a locale folder
246250 BUILD_LANGUAGES = [lang for lang in BUILD_LANGUAGES if (TRANSLATION_LOCALES_DIR / lang ).exists ()]
247251 session .log (f"Declared languages: { LANGUAGES } " )
248252 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 } " )
250254 if not BUILD_LANGUAGES :
251255 session .warn ("No translations to build" )
252256 else :
253- session .notify ("build-languages" , [BUILD_LANGUAGES , * session .posargs ])
257+ session .notify ("build-languages" , [sphinx_env , BUILD_LANGUAGES , * session .posargs ])
254258
255259
256260@nox .session (name = "build-translations-test" )
@@ -262,3 +266,14 @@ def build_translations_test(session):
262266 in the same way docs-test does for the English version.
263267 """
264268 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