10
10
11
11
-q selects "quick build", which means to build only HTML.
12
12
13
- Translations are fetched from github repositories according to PEP
14
- 545. `--languages` allows to select translations, like `--languages
15
- en` to just build the english documents.
13
+ Translations are fetched from GitHub repositories according to PEP
14
+ 545. `--languages` allows selecting translations, like `--languages
15
+ en` to just build the English documents.
16
16
17
- This script was originally created and by Georg Brandl in March
18
- 2010.
17
+ This script was originally created by Georg Brandl in March 2010.
19
18
Modified by Benjamin Peterson to do CDN cache invalidation.
20
19
Modified by Julien Palard to build translations.
21
20
69
68
70
69
@total_ordering
71
70
class Version :
72
- """Represents a cpython version and its documentation builds dependencies."""
71
+ """Represents a CPython version and its documentation build dependencies."""
73
72
74
73
STATUSES = {"EOL" , "security-fixes" , "stable" , "pre-release" , "in development" }
75
74
@@ -147,7 +146,7 @@ def filter(versions, branch=None):
147
146
148
147
If *branch* is given, only *versions* matching *branch* are returned.
149
148
150
- Else all live version are returned (this mean no EOL and no
149
+ Else all live versions are returned (this means no EOL and no
151
150
security-fixes branches).
152
151
"""
153
152
if branch :
@@ -156,12 +155,12 @@ def filter(versions, branch=None):
156
155
157
156
@staticmethod
158
157
def current_stable (versions ):
159
- """Find the current stable cPython version."""
158
+ """Find the current stable CPython version."""
160
159
return max ((v for v in versions if v .status == "stable" ), key = Version .as_tuple )
161
160
162
161
@staticmethod
163
162
def current_dev (versions ):
164
- """Find the current de cPython version."""
163
+ """Find the current CPython version in development ."""
165
164
return max (versions , key = Version .as_tuple )
166
165
167
166
@property
@@ -360,7 +359,7 @@ def locate_nearest_version(available_versions, target_version):
360
359
def edit (file : Path ):
361
360
"""Context manager to edit a file "in place", use it as:
362
361
363
- with edit("/etc/hosts") as i, o:
362
+ with edit("/etc/hosts") as ( i, o) :
364
363
for line in i:
365
364
o.write(line.replace("localhoat", "localhost"))
366
365
"""
@@ -376,7 +375,7 @@ def edit(file: Path):
376
375
def setup_switchers (
377
376
versions : Iterable [Version ], languages : Iterable [Language ], html_root : Path
378
377
):
379
- """Setup cross-links between cpython versions:
378
+ """Setup cross-links between CPython versions:
380
379
- Cross-link various languages in a language switcher
381
380
- Cross-link various versions in a version switcher
382
381
"""
@@ -437,7 +436,7 @@ def build_robots_txt(
437
436
):
438
437
"""Disallow crawl of EOL versions in robots.txt."""
439
438
if not www_root .exists ():
440
- logging .info ("Skipping robots.txt generation (www root does not even exists )." )
439
+ logging .info ("Skipping robots.txt generation (www root does not even exist )." )
441
440
return
442
441
robots_file = www_root / "robots.txt"
443
442
with open (HERE / "templates" / "robots.txt" , encoding = "UTF-8" ) as template_file :
@@ -457,7 +456,7 @@ def build_sitemap(
457
456
):
458
457
"""Build a sitemap with all live versions and translations."""
459
458
if not www_root .exists ():
460
- logging .info ("Skipping sitemap generation (www root does not even exists )." )
459
+ logging .info ("Skipping sitemap generation (www root does not even exist )." )
461
460
return
462
461
with open (HERE / "templates" / "sitemap.xml" , encoding = "UTF-8" ) as template_file :
463
462
template = jinja2 .Template (template_file .read ())
@@ -472,7 +471,7 @@ def build_sitemap(
472
471
def build_404 (www_root : Path , group ):
473
472
"""Build a nice 404 error page to display in case PDFs are not built yet."""
474
473
if not www_root .exists ():
475
- logging .info ("Skipping 404 page generation (www root does not even exists )." )
474
+ logging .info ("Skipping 404 page generation (www root does not even exist )." )
476
475
return
477
476
not_found_file = www_root / "404.html"
478
477
shutil .copyfile (HERE / "templates" / "404.html" , not_found_file )
@@ -550,7 +549,7 @@ def parse_args():
550
549
)
551
550
parser .add_argument (
552
551
"--skip-cache-invalidation" ,
553
- help = "Skip fastly cache invalidation." ,
552
+ help = "Skip Fastly cache invalidation." ,
554
553
action = "store_true" ,
555
554
)
556
555
parser .add_argument (
@@ -598,7 +597,7 @@ def parse_args():
598
597
599
598
600
599
def setup_logging (log_directory : Path ):
601
- """Setup logging to stderr if ran by a human, or to a file if ran from a cron."""
600
+ """Setup logging to stderr if run by a human, or to a file if run from a cron."""
602
601
if sys .stderr .isatty ():
603
602
logging .basicConfig (
604
603
format = "%(asctime)s %(levelname)s: %(message)s" , stream = sys .stderr
@@ -615,7 +614,7 @@ def setup_logging(log_directory: Path):
615
614
616
615
@dataclass
617
616
class DocBuilder :
618
- """Builder for a cpython version and a language."""
617
+ """Builder for a CPython version and a language."""
619
618
620
619
version : Version
621
620
versions : Iterable [Version ]
@@ -634,7 +633,7 @@ class DocBuilder:
634
633
def full_build (self ):
635
634
"""Tell if a full build is needed.
636
635
637
- A full build is slow, it builds pdf, txt, epub, texinfo, and
636
+ A full build is slow; it builds pdf, txt, epub, texinfo, and
638
637
archives everything.
639
638
640
639
A partial build only builds HTML and does not archive, it's
@@ -664,7 +663,7 @@ def run(self) -> bool:
664
663
665
664
@property
666
665
def checkout (self ) -> Path :
667
- """Path to cpython git clone."""
666
+ """Path to CPython git clone."""
668
667
return self .build_root / "cpython"
669
668
670
669
def clone_translation (self ):
@@ -687,7 +686,7 @@ def translation_repo(self):
687
686
688
687
@property
689
688
def translation_branch (self ):
690
- """Some cpython versions may be untranslated, being either too old or
689
+ """Some CPython versions may be untranslated, being either too old or
691
690
too new.
692
691
693
692
This function looks for remote branches on the given repo, and
@@ -745,7 +744,7 @@ def build(self):
745
744
python = self .venv / "bin" / "python"
746
745
sphinxbuild = self .venv / "bin" / "sphinx-build"
747
746
blurb = self .venv / "bin" / "blurb"
748
- # Disable cpython switchers, we handle them now:
747
+ # Disable CPython switchers, we handle them now:
749
748
750
749
def is_mac ():
751
750
return platform .system () == 'Darwin'
@@ -955,7 +954,7 @@ def load_state(self) -> dict:
955
954
return {}
956
955
957
956
def save_state (self , build_duration : float ):
958
- """Save current cpython sha1 and current translation sha1.
957
+ """Save current CPython sha1 and current translation sha1.
959
958
960
959
Using this we can deduce if a rebuild is needed or not.
961
960
"""
@@ -979,7 +978,7 @@ def save_state(self, build_duration: float):
979
978
980
979
def symlink (www_root : Path , language : Language , directory : str , name : str , group : str , skip_cache_invalidation : bool ):
981
980
"""Used by major_symlinks and dev_symlink to maintain symlinks."""
982
- if language .tag == "en" : # english is rooted on /, no /en/
981
+ if language .tag == "en" : # English is rooted on /, no /en/
983
982
path = www_root
984
983
else :
985
984
path = www_root / language .tag
@@ -1000,7 +999,7 @@ def symlink(www_root: Path, language: Language, directory: str, name: str, group
1000
999
def major_symlinks (
1001
1000
www_root : Path , group , versions : Iterable [Version ], languages : Iterable [Language ], skip_cache_invalidation : bool
1002
1001
):
1003
- """Maintains the /2/ and /3/ symlinks for each languages .
1002
+ """Maintains the /2/ and /3/ symlinks for each language .
1004
1003
1005
1004
Like:
1006
1005
- /3/ → /3.9/
@@ -1014,7 +1013,7 @@ def major_symlinks(
1014
1013
1015
1014
1016
1015
def dev_symlink (www_root : Path , group , versions , languages , skip_cache_invalidation : bool ):
1017
- """Maintains the /dev/ symlinks for each languages .
1016
+ """Maintains the /dev/ symlinks for each language .
1018
1017
1019
1018
Like:
1020
1019
- /dev/ → /3.11/
@@ -1029,7 +1028,7 @@ def dev_symlink(www_root: Path, group, versions, languages, skip_cache_invalidat
1029
1028
def purge (* paths ):
1030
1029
"""Remove one or many paths from docs.python.org's CDN.
1031
1030
1032
- To be used when a file change , so the CDN fetch the new one.
1031
+ To be used when a file changes , so the CDN fetches the new one.
1033
1032
"""
1034
1033
base = "https://docs.python.org/"
1035
1034
for path in paths :
@@ -1041,7 +1040,7 @@ def purge(*paths):
1041
1040
def purge_path (www_root : Path , path : Path ):
1042
1041
"""Recursively remove a path from docs.python.org's CDN.
1043
1042
1044
- To be used when a directory change , so the CDN fetch the new one.
1043
+ To be used when a directory changes , so the CDN fetches the new one.
1045
1044
"""
1046
1045
purge (* [file .relative_to (www_root ) for file in path .glob ("**/*" )])
1047
1046
purge (path .relative_to (www_root ))
@@ -1103,7 +1102,7 @@ def parse_languages_from_config():
1103
1102
1104
1103
1105
1104
def build_docs (args ) -> bool :
1106
- """Build all docs (each languages and each versions )."""
1105
+ """Build all docs (each language and each version )."""
1107
1106
versions = parse_versions_from_devguide ()
1108
1107
languages = parse_languages_from_config ()
1109
1108
todo = [
0 commit comments