@@ -701,6 +701,7 @@ def translation_branch(self):
701701 def build (self ):
702702 """Build this version/language doc."""
703703 logging .info ("Build start." )
704+ start_time = perf_counter ()
704705 sphinxopts = list (self .language .sphinxopts )
705706 sphinxopts .extend (["-q" ])
706707 if self .language .tag != "en" :
@@ -777,7 +778,7 @@ def is_mac():
777778 setup_switchers (
778779 self .versions , self .languages , self .checkout / "Doc" / "build" / "html"
779780 )
780- logging .info ("Build done." )
781+ logging .info ("Build done (%s)." , format_seconds ( perf_counter () - start_time ) )
781782
782783 def build_venv (self ):
783784 """Build a venv for the specific Python version.
@@ -800,6 +801,7 @@ def build_venv(self):
800801 def copy_build_to_webroot (self , http : urllib3 .PoolManager ) -> None :
801802 """Copy a given build to the appropriate webroot with appropriate rights."""
802803 logging .info ("Publishing start." )
804+ start_time = perf_counter ()
803805 self .www_root .mkdir (parents = True , exist_ok = True )
804806 if self .language .tag == "en" :
805807 target = self .www_root / self .version .name
@@ -912,7 +914,9 @@ def copy_build_to_webroot(self, http: urllib3.PoolManager) -> None:
912914 purge (http , * prefixes )
913915 for prefix in prefixes :
914916 purge (http , * [prefix + p for p in changed ])
915- logging .info ("Publishing done" )
917+ logging .info (
918+ "Publishing done (%s)." , format_seconds (perf_counter () - start_time )
919+ )
916920
917921 def should_rebuild (self ):
918922 state = self .load_state ()
@@ -1141,8 +1145,24 @@ def parse_languages_from_config():
11411145 return languages
11421146
11431147
1148+ def format_seconds (seconds : float ) -> str :
1149+ hours , remainder = divmod (seconds , 3600 )
1150+ minutes , seconds = divmod (remainder , 60 )
1151+ hours , minutes , seconds = int (hours ), int (minutes ), round (seconds )
1152+
1153+ match (hours , minutes , seconds ):
1154+ case 0 , 0 , s :
1155+ return f"{ s } s"
1156+ case 0 , m , s :
1157+ return f"{ m } m { s } s"
1158+ case h , m , s :
1159+ return f"{ h } h { m } m { s } s"
1160+
1161+
11441162def build_docs (args ) -> bool :
11451163 """Build all docs (each language and each version)."""
1164+ logging .info ("Full build start." )
1165+ start_time = perf_counter ()
11461166 http = urllib3 .PoolManager ()
11471167 versions = parse_versions_from_devguide (http )
11481168 languages = parse_languages_from_config ()
@@ -1205,6 +1225,8 @@ def build_docs(args) -> bool:
12051225 )
12061226 proofread_canonicals (args .www_root , args .skip_cache_invalidation , http )
12071227
1228+ logging .info ("Full build done (%s)." , format_seconds (perf_counter () - start_time ))
1229+
12081230 return all_built_successfully
12091231
12101232
0 commit comments