@@ -521,7 +521,7 @@ class DocBuilder:
521521    version : Version 
522522    language : Language 
523523    cpython_repo : Repository 
524-     indexsidebar_content : bytes 
524+     docs_by_version_content : bytes 
525525    switchers_content : bytes 
526526    build_root : Path 
527527    www_root : Path 
@@ -657,8 +657,7 @@ def build(self) -> None:
657657                text  =  text .replace (" -A switchers=1" , "" )
658658                (self .checkout  /  "Doc"  /  "Makefile" ).write_text (text , encoding = "utf-8" )
659659
660-             indexsidebar_path  =  self .checkout  /  "Doc/tools/templates/indexsidebar.html" 
661-             indexsidebar_path .write_bytes (self .indexsidebar_content )
660+             self .setup_indexsidebar ()
662661        run_with_logging ([
663662            "make" ,
664663            "-C" ,
@@ -701,6 +700,18 @@ def build_venv(self) -> None:
701700        run ([venv_path  /  "bin"  /  "python" , "-m" , "pip" , "freeze" , "--all" ])
702701        self .venv  =  venv_path 
703702
703+     def  setup_indexsidebar (self ) ->  None :
704+         """Copy indexsidebar.html for Sphinx.""" 
705+         tmpl_src  =  HERE  /  "templates" 
706+         tmpl_dst  =  self .checkout  /  "Doc"  /  "tools"  /  "templates" 
707+         dbv_path  =  tmpl_dst  /  "_docs_by_version.html" 
708+ 
709+         shutil .copy (tmpl_src  /  "indexsidebar.html" , tmpl_dst  /  "indexsidebar.html" )
710+         if  self .version .status  !=  "EOL" :
711+             dbv_path .write_bytes (self .docs_by_version_content )
712+         else :
713+             shutil .copy (tmpl_src  /  "_docs_by_version.html" , dbv_path )
714+ 
704715    def  copy_build_to_webroot (self , http : urllib3 .PoolManager ) ->  None :
705716        """Copy a given build to the appropriate webroot with appropriate rights.""" 
706717        logging .info ("Publishing start." )
@@ -1086,7 +1097,7 @@ def build_docs(args: argparse.Namespace) -> bool:
10861097    force_build  =  args .force 
10871098    del  args .force 
10881099
1089-     isb_content ,  eol_isb_content   =   render_indexsidebar (versions )
1100+     docs_by_version_content   =   render_docs_by_version (versions ). encode ( )
10901101    switchers_content  =  render_switchers (versions , languages )
10911102
10921103    build_succeeded  =  set ()
@@ -1107,13 +1118,12 @@ def build_docs(args: argparse.Namespace) -> bool:
11071118            scope .set_tag ("version" , version .name )
11081119            scope .set_tag ("language" , language .tag )
11091120        cpython_repo .update ()
1110-         v_isb_content  =  isb_content  if  version .status  !=  "EOL"  else  eol_isb_content 
11111121        builder  =  DocBuilder (
11121122            version ,
11131123            versions ,
11141124            language ,
11151125            cpython_repo ,
1116-             v_isb_content ,
1126+             docs_by_version_content ,
11171127            switchers_content ,
11181128            ** vars (args ),
11191129        )
@@ -1169,21 +1179,10 @@ def parse_languages_from_config() -> Languages:
11691179    return  Languages .from_json (config ["defaults" ], config ["languages" ])
11701180
11711181
1172- def  render_indexsidebar (versions : Versions ) ->  tuple [bytes , bytes ]:
1173-     """Pre-render indexsidebar.html for Sphinx.""" 
1174-     docs_by_version  =  f"""\  
1175- 
1176- <ul> 
1177- { "\n " .join ([f'  <li><a href="{ v .url } { v .title }   for  v  in  reversed (versions )])} 
1178-   <li><a href="https://www.python.org/doc/versions/">{{% trans %}}All versions{{% endtrans %}}</a></li> 
1179- </ul> 
1180- """ 
1181- 
1182-     template_path  =  HERE  /  "templates"  /  "indexsidebar.html" 
1183-     template  =  Template (template_path .read_text (encoding = "UTF-8" ))
1184-     rendered_template  =  template .substitute (DOCS_BY_VERSION = docs_by_version ).encode ()
1185-     eol_template  =  template .substitute (DOCS_BY_VERSION = "" ).encode ()
1186-     return  rendered_template , eol_template 
1182+ def  render_docs_by_version (versions : Versions ) ->  str :
1183+     """Generate content for _docs_by_version.html.""" 
1184+     links  =  [f'<li><a href="{ v .url } { v .title }   for  v  in  reversed (versions )]
1185+     return  "\n " .join (links )
11871186
11881187
11891188def  render_switchers (versions : Versions , languages : Languages ) ->  bytes :
0 commit comments