Skip to content

Commit 50315d7

Browse files
committed
Add more helper properties in the Language class
1 parent fe84a0b commit 50315d7

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

build_docs.py

+21-17
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,14 @@ class Language:
280280
def tag(self) -> str:
281281
return self.iso639_tag.replace("_", "-").lower()
282282

283+
@property
284+
def is_translation(self) -> bool:
285+
return self.tag != "en"
286+
287+
@property
288+
def locale_repo_url(self) -> str:
289+
return f"https://github.com/python/python-docs-{self.tag}.git"
290+
283291
@property
284292
def switcher_label(self) -> str:
285293
if self.translated_name:
@@ -549,7 +557,7 @@ def run(self, http: urllib3.PoolManager, force_build: bool) -> bool | None:
549557
logging.info("Skipping non-HTML build (language is HTML-only).")
550558
return None # skipped
551559
self.cpython_repo.switch(self.version.branch_or_tag)
552-
if self.language.tag != "en":
560+
if self.language.is_translation:
553561
self.clone_translation()
554562
if trigger_reason := self.should_rebuild(force_build):
555563
self.build_venv()
@@ -569,6 +577,10 @@ def run(self, http: urllib3.PoolManager, force_build: bool) -> bool | None:
569577
return False
570578
return True
571579

580+
@property
581+
def locale_dir(self) -> Path:
582+
return self.build_root / self.version.name / "locale"
583+
572584
@property
573585
def checkout(self) -> Path:
574586
"""Path to CPython git clone."""
@@ -582,15 +594,8 @@ def clone_translation(self) -> None:
582594
def translation_repo(self) -> Repository:
583595
"""See PEP 545 for translations repository naming convention."""
584596

585-
locale_repo = f"https://github.com/python/python-docs-{self.language.tag}.git"
586-
locale_clone_dir = (
587-
self.build_root
588-
/ self.version.name
589-
/ "locale"
590-
/ self.language.iso639_tag
591-
/ "LC_MESSAGES"
592-
)
593-
return Repository(locale_repo, locale_clone_dir)
597+
locale_clone_dir = self.locale_dir / self.language.iso639_tag / "LC_MESSAGES"
598+
return Repository(self.language.locale_repo_url, locale_clone_dir)
594599

595600
@property
596601
def translation_branch(self) -> str:
@@ -611,10 +616,9 @@ def build(self) -> None:
611616
logging.info("Build start.")
612617
start_time = perf_counter()
613618
sphinxopts = list(self.language.sphinxopts)
614-
if self.language.tag != "en":
615-
locale_dirs = self.build_root / self.version.name / "locale"
619+
if self.language.is_translation:
616620
sphinxopts.extend((
617-
f"-D locale_dirs={locale_dirs}",
621+
f"-D locale_dirs={self.locale_dir}",
618622
f"-D language={self.language.iso639_tag}",
619623
"-D gettext_compact=0",
620624
"-D translation_progress_classes=1",
@@ -636,7 +640,7 @@ def build(self) -> None:
636640

637641
if self.includes_html:
638642
site_url = self.version.url
639-
if self.language.tag != "en":
643+
if self.language.is_translation:
640644
site_url += f"{self.language.tag}/"
641645
# Define a tag to enable opengraph socialcards previews
642646
# (used in Doc/conf.py and requires matplotlib)
@@ -718,7 +722,7 @@ def copy_build_to_webroot(self, http: urllib3.PoolManager) -> None:
718722
logging.info("Publishing start.")
719723
start_time = perf_counter()
720724
self.www_root.mkdir(parents=True, exist_ok=True)
721-
if self.language.tag == "en":
725+
if not self.language.is_translation:
722726
target = self.www_root / self.version.name
723727
else:
724728
language_dir = self.www_root / self.language.tag
@@ -786,7 +790,7 @@ def should_rebuild(self, force: bool) -> str | Literal[False]:
786790
logging.info("Should rebuild: no previous state found.")
787791
return "no previous state"
788792
cpython_sha = self.cpython_repo.run("rev-parse", "HEAD").stdout.strip()
789-
if self.language.tag != "en":
793+
if self.language.is_translation:
790794
translation_sha = self.translation_repo.run(
791795
"rev-parse", "HEAD"
792796
).stdout.strip()
@@ -849,7 +853,7 @@ def save_state(
849853
"triggered_by": trigger,
850854
"cpython_sha": self.cpython_repo.run("rev-parse", "HEAD").stdout.strip(),
851855
}
852-
if self.language.tag != "en":
856+
if self.language.is_translation:
853857
state["translation_sha"] = self.translation_repo.run(
854858
"rev-parse", "HEAD"
855859
).stdout.strip()

0 commit comments

Comments
 (0)