8000 Merge remote-tracking branch 'upstream/main' into build-fresh-commit · python/docsbuild-scripts@0f466ec · GitHub
[go: up one dir, main page]

Skip to content

Commit 0f466ec

Browse files
committed
Merge remote-tracking branch 'upstream/main' into build-fresh-commit
2 parents ed42020 + 76c0d0a commit 0f466ec

File tree

4 files changed

+38
-36
lines changed

4 files changed

+38
-36
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/build_root/
22
/logs/
33
/www/
4+
# temporary lock file created while building the docs
5+
build_docs.lock
46

57

68
# Created by https://www.gitignore.io/api/python

build_docs.py

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@
1010
1111
-q selects "quick build", which means to build only HTML.
1212
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.
1616
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.
1918
Modified by Benjamin Peterson to do CDN cache invalidation.
2019
Modified by Julien Palard to build translations.
2120
@@ -69,7 +68,7 @@
6968

7069
@total_ordering
7170
class Version:
72-
"""Represents a cpython version and its documentation builds dependencies."""
71+
"""Represents a CPython version and its documentation build dependencies."""
7372

7473
STATUSES = {"EOL", "security-fixes", "stable", "pre-release", "in development"}
7574

@@ -147,7 +146,7 @@ def filter(versions, branch=None):
147146
148147
If *branch* is given, only *versions* matching *branch* are returned.
149148
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
151150
security-fixes branches).
152151
"""
153152
if branch:
@@ -156,12 +155,12 @@ def filter(versions, branch=None):
156155

157156
@staticmethod
158157
def current_stable(versions):
159-
"""Find the current stable cPython version."""
158+
"""Find the current stable CPython version."""
160159
return max((v for v in versions if v.status == "stable"), key=Version.as_tuple)
161160

162161
@staticmethod
163162
def current_dev(versions):
164-
"""Find the current de cPython version."""
163+
"""Find the current CPython version in development."""
165164
return max(versions, key=Version.as_tuple)
166165

167166
@property
@@ -360,7 +359,7 @@ def locate_nearest_version(available_versions, target_version):
360359
def edit(file: Path):
361360
"""Context manager to edit a file "in place", use it as:
362361
363-
with edit("/etc/hosts") as i, o:
362+
with edit("/etc/hosts") as (i, o):
364363
for line in i:
365364
o.write(line.replace("localhoat", "localhost"))
366365
"""
@@ -376,7 +375,7 @@ def edit(file: Path):
376375
def setup_switchers(
377376
versions: Iterable[Version], languages: Iterable[Language], html_root: Path
378377
):
379-
"""Setup cross-links between cpython versions:
378+
"""Setup cross-links between CPython versions:
380379
- Cross-link various languages in a language switcher
381380
- Cross-link various versions in a version switcher
382381
"""
@@ -437,7 +436,7 @@ def build_robots_txt(
437436
):
438437
"""Disallow crawl of EOL versions in robots.txt."""
439438
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).")
441440
return
442441
robots_file = www_root / "robots.txt"
443442
with open(HERE / "templates" / "robots.txt", encoding="UTF-8") as template_file:
@@ -457,7 +456,7 @@ def build_sitemap(
457456
):
458457
"""Build a sitemap with all live versions and translations."""
459458
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).")
461460
return
462461
with open(HERE / "templates" / "sitemap.xml", encoding="UTF-8") as template_file:
463462
template = jinja2.Template(template_file.read())
@@ -472,7 +471,7 @@ def build_sitemap(
472471
def build_404(www_root: Path, group):
473472
"""Build a nice 404 error page to display in case PDFs are not built yet."""
474473
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).")
476475
return
477476
not_found_file = www_root / "404.html"
478477
shutil.copyfile(HERE / "templates" / "404.html", not_found_file)
@@ -550,7 +549,7 @@ def parse_args():
550549
)
551550
parser.add_argument(
552551
"--skip-cache-invalidation",
553-
help="Skip fastly cache invalidation.",
552+
help="Skip Fastly cache invalidation.",
554553
action="store_true",
555554
)
556555
parser.add_argument(
@@ -580,7 +579,7 @@ def parse_args():
580579
parser.add_argument(
581580
"--theme",
582581
default="python-docs-theme",
583-
help="Python package to use for python-docs-theme: Usefull to test branches:"
582+
help="Python package to use for python-docs-theme: Useful to test branches:"
584583
" --theme git+https://github.com/obulat/python-docs-theme@master",
585584
)
586585
args = parser.parse_args()
@@ -598,7 +597,7 @@ def parse_args():
598597

599598

600599
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."""
602601
if sys.stderr.isatty():
603602
logging.basicConfig(
604603
format="%(asctime)s %(levelname)s: %(message)s", stream=sys.stderr
@@ -615,7 +614,7 @@ def setup_logging(log_directory: Path):
615614

616615
@dataclass
617616
class DocBuilder:
618-
"""Builder for a cpython version and a language."""
617+
"""Builder for a CPython version and a language."""
619618

620619
version: Version
621620
versions: Iterable[Version]
@@ -634,7 +633,7 @@ class DocBuilder:
634633
def full_build(self):
635634
"""Tell if a full build is needed.
636635
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
638637
archives everything.
639638
640639
A partial build only builds HTML and does not archive, it's
@@ -664,7 +663,7 @@ def run(self) -> bool:
664663

665664
@property
666665
def checkout(self) -> Path:
667-
"""Path to cpython git clone."""
666+
"""Path to CPython git clone."""
668667
return self.build_root / "cpython"
669668

670669
def clone_translation(self):
@@ -687,7 +686,7 @@ def translation_repo(self):
687686

688687
@property
689688
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
691690
too new.
692691
693692
This function looks for remote branches on the given repo, and
@@ -745,7 +744,7 @@ def build(self):
745744
python = self.venv / "bin" / "python"
746745
sphinxbuild = self.venv / "bin" / "sphinx-build"
747746
blurb = self.venv / "bin" / "blurb"
748-
# Disable cpython switchers, we handle them now:
747+
# Disable CPython switchers, we handle them now:
749748

750749
def is_mac():
751750
return platform.system() == 'Darwin'
@@ -790,6 +789,7 @@ def build_venv(self):
790789
run([sys.executable, "-m", "venv", venv_path])
791790
run(
792791
[venv_path / "bin" / "python", "-m", "pip", "install", "--upgrade"]
792+
+ ["--upgrade-strategy=eager"]
793793
+ [self.theme]
794794
+ self.version.requirements,
795795
cwd=self.checkout / "Doc",
@@ -955,7 +955,7 @@ def load_state(self) -> dict:
955955
return {}
956956

957957
def save_state(self, build_duration: float):
958-
"""Save current cpython sha1 and current translation sha1.
958+
"""Save current CPython sha1 and current translation sha1.
959959
960960
Using this we can deduce if a rebuild is needed or not.
961961
"""
@@ -979,7 +979,7 @@ def save_state(self, build_duration: float):
979979

980980
def symlink(www_root: Path, language: Language, directory: str, name: str, group: str, skip_cache_invalidation: bool):
981981
"""Used by major_symlinks and dev_symlink to maintain symlinks."""
982-
if language.tag == "en": # english is rooted on /, no /en/
982+
if language.tag == "en": # English is rooted on /, no /en/
983983
path = www_root
984984
else:
985985
path = www_root / language.tag
@@ -1000,7 +1000,7 @@ def symlink(www_root: Path, language: Language, directory: str, name: str, group
10001000
def major_symlinks(
10011001
www_root: Path, group, versions: Iterable[Version], languages: Iterable[Language], skip_cache_invalidation: bool
10021002
):
1003-
"""Maintains the /2/ and /3/ symlinks for each languages.
1003+
"""Maintains the /2/ and /3/ symlinks for each language.
10041004
10051005
Like:
10061006
- /3/ → /3.9/
@@ -1014,7 +1014,7 @@ def major_symlinks(
10141014

10151015

10161016
def dev_symlink(www_root: Path, group, versions, languages, skip_cache_invalidation: bool):
1017-
"""Maintains the /dev/ symlinks for each languages.
1017+
"""Maintains the /dev/ symlinks for each language.
10181018
10191019
Like:
10201020
- /dev/ → /3.11/
@@ -1029,7 +1029,7 @@ def dev_symlink(www_root: Path, group, versions, languages, skip_cache_invalidat
10291029
def purge(*paths):
10301030
"""Remove one or many paths from docs.python.org's CDN.
10311031
1032-
To be used when a file change, so the CDN fetch the new one.
1032+
To be used when a file changes, so the CDN fetches the new one.
10331033
"""
10341034
base = "https://docs.python.org/"
10351035
for path in paths:
@@ -1041,7 +1041,7 @@ def purge(*paths):
10411041
def purge_path(www_root: Path, path: Path):
10421042
"""Recursively remove a path from docs.python.org's CDN.
10431043
1044-
To be used when a directory change, so the CDN fetch the new one.
1044+
To be used when a directory changes, so the CDN fetches the new one.
10451045
"""
10461046
purge(*[file.relative_to(www_root) for file in path.glob("**/*")])
10471047
purge(path.relative_to(www_root))
@@ -1103,7 +1103,7 @@ def parse_languages_from_config():
11031103

11041104

11051105
def build_docs(args) -> bool:
1106-
"""Build all docs (each languages and each versions)."""
1106+
"""Build all docs (each language and each version)."""
11071107
versions = parse_versions_from_devguide()
11081108
languages = parse_languages_from_config()
11091109
todo = [
@@ -1125,10 +1125,10 @@ def build_docs(args) -> bool:
11251125
)
11261126
)
11271127
if sentry_sdk:
1128-
with sentry_sdk.configure_scope() as scope:
1129-
scope.set_tag("version", version.name)
1130-
scope.set_tag("language", language.tag)
1131-
cpython_repo.update()
1128+
scope = sentry_sdk.get_isolation_scope()
1129+
scope.set_tag("version", version.name)
1130+
scope.set_tag("language", language.tag)
1131+
cpython_repo.update()
11321132
builder = DocBuilder(
11331133
version, versions, language, languages, cpython_repo, **vars(args)
11341134
)

check_versions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ def parse_args():
2222
description="""Check the version of our build in different branches
2323
Hint: Use with | column -t"""
2424
)
25-
parser.add_argument("cpython_clone", help="Path to a clone of cpython", type=Path)
25+
parser.add_argument("cpython_clone", help="Path to a clone of CPython", type=Path)
2626
return parser.parse_args()
2727

2828

2929
def find_upstream_remote_name(repo: git.Repo) -> str:
30-
"""Find a remote of repo matching the regex url_pattern."""
30+
"""Find a remote in the repo that matches the URL pattern."""
3131
for remote in repo.remotes:
3232
for url in remote.urls:
3333
if "github.com/python" in url:

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
jinja2
22
requests
3-
sentry-sdk
3+
sentry-sdk>=2
44
tomlkit
55
zc.lockfile

0 commit comments

Comments
 (0)
0