From 413899475dc99181abe9fece7847ecd0af5e4aba Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 May 2024 00:21:50 +0100 Subject: [PATCH 1/9] Rename template files in Sphinx to use preferred ``.jinja`` suffix. Follow-up to pull request https://github.com/sphinx-doc/sphinx/pull/11916 --- sphinx/templates/apidoc/{module.rst_t => module.rst.jinja} | 0 sphinx/templates/apidoc/{package.rst_t => package.rst.jinja} | 0 sphinx/templates/apidoc/{toc.rst_t => toc.rst.jinja} | 0 sphinx/templates/epub3/{content.opf_t => content.opf.jinja} | 0 sphinx/templates/epub3/{nav.xhtml_t => nav.xhtml.jinja} | 0 sphinx/templates/epub3/{toc.ncx_t => toc.ncx.jinja} | 0 sphinx/templates/gettext/{message.pot_t => message.pot.jinja} | 0 sphinx/templates/imgmath/{preview.tex_t => preview.tex.jinja} | 0 sphinx/templates/imgmath/{template.tex_t => template.tex.jinja} | 0 sphinx/templates/latex/{latex.tex_t => latex.tex.jinja} | 0 sphinx/templates/latex/{longtable.tex_t => longtable.tex.jinja} | 0 .../latex/{sphinxmessages.sty_t => sphinxmessages.sty.jinja} | 0 sphinx/templates/latex/{tabular.tex_t => tabular.tex.jinja} | 0 sphinx/templates/latex/{tabulary.tex_t => tabulary.tex.jinja} | 0 sphinx/templates/quickstart/{Makefile_t => Makefile.jinja} | 0 .../templates/quickstart/{Makefile.new_t => Makefile.new.jinja} | 0 sphinx/templates/quickstart/{conf.py_t => conf.py.jinja} | 0 sphinx/templates/quickstart/{make.bat_t => make.bat.jinja} | 0 .../templates/quickstart/{make.bat.new_t => make.bat.new.jinja} | 0 .../templates/quickstart/{root_doc.rst_t => root_doc.rst.jinja} | 0 sphinx/texinputs/{Makefile_t => Makefile.jinja} | 0 sphinx/texinputs/{latexmkjarc_t => latexmkjarc.jinja} | 0 sphinx/texinputs/{latexmkrc_t => latexmkrc.jinja} | 0 sphinx/texinputs/{make.bat_t => make.bat.jinja} | 0 sphinx/texinputs_win/{Makefile_t => Makefile.jinja} | 0 sphinx/themes/agogo/static/{agogo.css_t => agogo.css.jinja} | 0 sphinx/themes/basic/static/{basic.css_t => basic.css.jinja} | 0 ...{documentation_options.js_t => documentation_options.js.jinja} | 0 .../basic/static/{language_data.js_t => language_data.js.jinja} | 0 .../themes/bizstyle/static/{bizstyle.css_t => bizstyle.css.jinja} | 0 .../themes/bizstyle/static/{bizstyle.js_t => bizstyle.js.jinja} | 0 sphinx/themes/classic/static/{classic.css_t => classic.css.jinja} | 0 sphinx/themes/classic/static/{sidebar.js_t => sidebar.js.jinja} | 0 sphinx/themes/epub/static/{epub.css_t => epub.css.jinja} | 0 sphinx/themes/haiku/static/{haiku.css_t => haiku.css.jinja} | 0 sphinx/themes/nature/static/{nature.css_t => nature.css.jinja} | 0 sphinx/themes/nonav/static/{nonav.css_t => nonav.css.jinja} | 0 sphinx/themes/pyramid/static/{epub.css_t => epub.css.jinja} | 0 sphinx/themes/pyramid/static/{pyramid.css_t => pyramid.css.jinja} | 0 sphinx/themes/scrolls/static/{scrolls.css_t => scrolls.css.jinja} | 0 .../sphinxdoc/static/{sphinxdoc.css_t => sphinxdoc.css.jinja} | 0 .../static/{traditional.css_t => traditional.css.jinja} | 0 tests/roots/test-html_assets/extra/{API.html_t => API.html.jinja} | 0 .../roots/test-html_assets/static/{API.html_t => API.html.jinja} | 0 .../_mytemplates/latex/{longtable.tex_t => longtable.tex.jinja} | 0 45 files changed, 0 insertions(+), 0 deletions(-) rename sphinx/templates/apidoc/{module.rst_t => module.rst.jinja} (100%) rename sphinx/templates/apidoc/{package.rst_t => package.rst.jinja} (100%) rename sphinx/templates/apidoc/{toc.rst_t => toc.rst.jinja} (100%) rename sphinx/templates/epub3/{content.opf_t => content.opf.jinja} (100%) rename sphinx/templates/epub3/{nav.xhtml_t => nav.xhtml.jinja} (100%) rename sphinx/templates/epub3/{toc.ncx_t => toc.ncx.jinja} (100%) rename sphinx/templates/gettext/{message.pot_t => message.pot.jinja} (100%) rename sphinx/templates/imgmath/{preview.tex_t => preview.tex.jinja} (100%) rename sphinx/templates/imgmath/{template.tex_t => template.tex.jinja} (100%) rename sphinx/templates/latex/{latex.tex_t => latex.tex.jinja} (100%) rename sphinx/templates/latex/{longtable.tex_t => longtable.tex.jinja} (100%) rename sphinx/templates/latex/{sphinxmessages.sty_t => sphinxmessages.sty.jinja} (100%) rename sphinx/templates/latex/{tabular.tex_t => tabular.tex.jinja} (100%) rename sphinx/templates/latex/{tabulary.tex_t => tabulary.tex.jinja} (100%) rename sphinx/templates/quickstart/{Makefile_t => Makefile.jinja} (100%) rename sphinx/templates/quickstart/{Makefile.new_t => Makefile.new.jinja} (100%) rename sphinx/templates/quickstart/{conf.py_t => conf.py.jinja} (100%) rename sphinx/templates/quickstart/{make.bat_t => make.bat.jinja} (100%) rename sphinx/templates/quickstart/{make.bat.new_t => make.bat.new.jinja} (100%) rename sphinx/templates/quickstart/{root_doc.rst_t => root_doc.rst.jinja} (100%) rename sphinx/texinputs/{Makefile_t => Makefile.jinja} (100%) rename sphinx/texinputs/{latexmkjarc_t => latexmkjarc.jinja} (100%) rename sphinx/texinputs/{latexmkrc_t => latexmkrc.jinja} (100%) rename sphinx/texinputs/{make.bat_t => make.bat.jinja} (100%) rename sphinx/texinputs_win/{Makefile_t => Makefile.jinja} (100%) rename sphinx/themes/agogo/static/{agogo.css_t => agogo.css.jinja} (100%) rename sphinx/themes/basic/static/{basic.css_t => basic.css.jinja} (100%) rename sphinx/themes/basic/static/{documentation_options.js_t => documentation_options.js.jinja} (100%) rename sphinx/themes/basic/static/{language_data.js_t => language_data.js.jinja} (100%) rename sphinx/themes/bizstyle/static/{bizstyle.css_t => bizstyle.css.jinja} (100%) rename sphinx/themes/bizstyle/static/{bizstyle.js_t => bizstyle.js.jinja} (100%) rename sphinx/themes/classic/static/{classic.css_t => classic.css.jinja} (100%) rename sphinx/themes/classic/static/{sidebar.js_t => sidebar.js.jinja} (100%) rename sphinx/themes/epub/static/{epub.css_t => epub.css.jinja} (100%) rename sphinx/themes/haiku/static/{haiku.css_t => haiku.css.jinja} (100%) rename sphinx/themes/nature/static/{nature.css_t => nature.css.jinja} (100%) rename sphinx/themes/nonav/static/{nonav.css_t => nonav.css.jinja} (100%) rename sphinx/themes/pyramid/static/{epub.css_t => epub.css.jinja} (100%) rename sphinx/themes/pyramid/static/{pyramid.css_t => pyramid.css.jinja} (100%) rename sphinx/themes/scrolls/static/{scrolls.css_t => scrolls.css.jinja} (100%) rename sphinx/themes/sphinxdoc/static/{sphinxdoc.css_t => sphinxdoc.css.jinja} (100%) rename sphinx/themes/traditional/static/{traditional.css_t => traditional.css.jinja} (100%) rename tests/roots/test-html_assets/extra/{API.html_t => API.html.jinja} (100%) rename tests/roots/test-html_assets/static/{API.html_t => API.html.jinja} (100%) rename tests/roots/test-latex-table/_mytemplates/latex/{longtable.tex_t => longtable.tex.jinja} (100%) diff --git a/sphinx/templates/apidoc/module.rst_t b/sphinx/templates/apidoc/module.rst.jinja similarity index 100% rename from sphinx/templates/apidoc/module.rst_t rename to sphinx/templates/apidoc/module.rst.jinja diff --git a/sphinx/templates/apidoc/package.rst_t b/sphinx/templates/apidoc/package.rst.jinja similarity index 100% rename from sphinx/templates/apidoc/package.rst_t rename to sphinx/templates/apidoc/package.rst.jinja diff --git a/sphinx/templates/apidoc/toc.rst_t b/sphinx/templates/apidoc/toc.rst.jinja similarity index 100% rename from sphinx/templates/apidoc/toc.rst_t rename to sphinx/templates/apidoc/toc.rst.jinja diff --git a/sphinx/templates/epub3/content.opf_t b/sphinx/templates/epub3/content.opf.jinja similarity index 100% rename from sphinx/templates/epub3/content.opf_t rename to sphinx/templates/epub3/content.opf.jinja diff --git a/sphinx/templates/epub3/nav.xhtml_t b/sphinx/templates/epub3/nav.xhtml.jinja similarity index 100% rename from sphinx/templates/epub3/nav.xhtml_t rename to sphinx/templates/epub3/nav.xhtml.jinja diff --git a/sphinx/templates/epub3/toc.ncx_t b/sphinx/templates/epub3/toc.ncx.jinja similarity index 100% rename from sphinx/templates/epub3/toc.ncx_t rename to sphinx/templates/epub3/toc.ncx.jinja diff --git a/sphinx/templates/gettext/message.pot_t b/sphinx/templates/gettext/message.pot.jinja similarity index 100% rename from sphinx/templates/gettext/message.pot_t rename to sphinx/templates/gettext/message.pot.jinja diff --git a/sphinx/templates/imgmath/preview.tex_t b/sphinx/templates/imgmath/preview.tex.jinja similarity index 100% rename from sphinx/templates/imgmath/preview.tex_t rename to sphinx/templates/imgmath/preview.tex.jinja diff --git a/sphinx/templates/imgmath/template.tex_t b/sphinx/templates/imgmath/template.tex.jinja similarity index 100% rename from sphinx/templates/imgmath/template.tex_t rename to sphinx/templates/imgmath/template.tex.jinja diff --git a/sphinx/templates/latex/latex.tex_t b/sphinx/templates/latex/latex.tex.jinja similarity index 100% rename from sphinx/templates/latex/latex.tex_t rename to sphinx/templates/latex/latex.tex.jinja diff --git a/sphinx/templates/latex/longtable.tex_t b/sphinx/templates/latex/longtable.tex.jinja similarity index 100% rename from sphinx/templates/latex/longtable.tex_t rename to sphinx/templates/latex/longtable.tex.jinja diff --git a/sphinx/templates/latex/sphinxmessages.sty_t b/sphinx/templates/latex/sphinxmessages.sty.jinja similarity index 100% rename from sphinx/templates/latex/sphinxmessages.sty_t rename to sphinx/templates/latex/sphinxmessages.sty.jinja diff --git a/sphinx/templates/latex/tabular.tex_t b/sphinx/templates/latex/tabular.tex.jinja similarity index 100% rename from sphinx/templates/latex/tabular.tex_t rename to sphinx/templates/latex/tabular.tex.jinja diff --git a/sphinx/templates/latex/tabulary.tex_t b/sphinx/templates/latex/tabulary.tex.jinja similarity index 100% rename from sphinx/templates/latex/tabulary.tex_t rename to sphinx/templates/latex/tabulary.tex.jinja diff --git a/sphinx/templates/quickstart/Makefile_t b/sphinx/templates/quickstart/Makefile.jinja similarity index 100% rename from sphinx/templates/quickstart/Makefile_t rename to sphinx/templates/quickstart/Makefile.jinja diff --git a/sphinx/templates/quickstart/Makefile.new_t b/sphinx/templates/quickstart/Makefile.new.jinja similarity index 100% rename from sphinx/templates/quickstart/Makefile.new_t rename to sphinx/templates/quickstart/Makefile.new.jinja diff --git a/sphinx/templates/quickstart/conf.py_t b/sphinx/templates/quickstart/conf.py.jinja similarity index 100% rename from sphinx/templates/quickstart/conf.py_t rename to sphinx/templates/quickstart/conf.py.jinja diff --git a/sphinx/templates/quickstart/make.bat_t b/sphinx/templates/quickstart/make.bat.jinja similarity index 100% rename from sphinx/templates/quickstart/make.bat_t rename to sphinx/templates/quickstart/make.bat.jinja diff --git a/sphinx/templates/quickstart/make.bat.new_t b/sphinx/templates/quickstart/make.bat.new.jinja similarity index 100% rename from sphinx/templates/quickstart/make.bat.new_t rename to sphinx/templates/quickstart/make.bat.new.jinja diff --git a/sphinx/templates/quickstart/root_doc.rst_t b/sphinx/templates/quickstart/root_doc.rst.jinja similarity index 100% rename from sphinx/templates/quickstart/root_doc.rst_t rename to sphinx/templates/quickstart/root_doc.rst.jinja diff --git a/sphinx/texinputs/Makefile_t b/sphinx/texinputs/Makefile.jinja similarity index 100% rename from sphinx/texinputs/Makefile_t rename to sphinx/texinputs/Makefile.jinja diff --git a/sphinx/texinputs/latexmkjarc_t b/sphinx/texinputs/latexmkjarc.jinja similarity index 100% rename from sphinx/texinputs/latexmkjarc_t rename to sphinx/texinputs/latexmkjarc.jinja diff --git a/sphinx/texinputs/latexmkrc_t b/sphinx/texinputs/latexmkrc.jinja similarity index 100% rename from sphinx/texinputs/latexmkrc_t rename to sphinx/texinputs/latexmkrc.jinja diff --git a/sphinx/texinputs/make.bat_t b/sphinx/texinputs/make.bat.jinja similarity index 100% rename from sphinx/texinputs/make.bat_t rename to sphinx/texinputs/make.bat.jinja diff --git a/sphinx/texinputs_win/Makefile_t b/sphinx/texinputs_win/Makefile.jinja similarity index 100% rename from sphinx/texinputs_win/Makefile_t rename to sphinx/texinputs_win/Makefile.jinja diff --git a/sphinx/themes/agogo/static/agogo.css_t b/sphinx/themes/agogo/static/agogo.css.jinja similarity index 100% rename from sphinx/themes/agogo/static/agogo.css_t rename to sphinx/themes/agogo/static/agogo.css.jinja diff --git a/sphinx/themes/basic/static/basic.css_t b/sphinx/themes/basic/static/basic.css.jinja similarity index 100% rename from sphinx/themes/basic/static/basic.css_t rename to sphinx/themes/basic/static/basic.css.jinja diff --git a/sphinx/themes/basic/static/documentation_options.js_t b/sphinx/themes/basic/static/documentation_options.js.jinja similarity index 100% rename from sphinx/themes/basic/static/documentation_options.js_t rename to sphinx/themes/basic/static/documentation_options.js.jinja diff --git a/sphinx/themes/basic/static/language_data.js_t b/sphinx/themes/basic/static/language_data.js.jinja similarity index 100% rename from sphinx/themes/basic/static/language_data.js_t rename to sphinx/themes/basic/static/language_data.js.jinja diff --git a/sphinx/themes/bizstyle/static/bizstyle.css_t b/sphinx/themes/bizstyle/static/bizstyle.css.jinja similarity index 100% rename from sphinx/themes/bizstyle/static/bizstyle.css_t rename to sphinx/themes/bizstyle/static/bizstyle.css.jinja diff --git a/sphinx/themes/bizstyle/static/bizstyle.js_t b/sphinx/themes/bizstyle/static/bizstyle.js.jinja similarity index 100% rename from sphinx/themes/bizstyle/static/bizstyle.js_t rename to sphinx/themes/bizstyle/static/bizstyle.js.jinja diff --git a/sphinx/themes/classic/static/classic.css_t b/sphinx/themes/classic/static/classic.css.jinja similarity index 100% rename from sphinx/themes/classic/static/classic.css_t rename to sphinx/themes/classic/static/classic.css.jinja diff --git a/sphinx/themes/classic/static/sidebar.js_t b/sphinx/themes/classic/static/sidebar.js.jinja similarity index 100% rename from sphinx/themes/classic/static/sidebar.js_t rename to sphinx/themes/classic/static/sidebar.js.jinja diff --git a/sphinx/themes/epub/static/epub.css_t b/sphinx/themes/epub/static/epub.css.jinja similarity index 100% rename from sphinx/themes/epub/static/epub.css_t rename to sphinx/themes/epub/static/epub.css.jinja diff --git a/sphinx/themes/haiku/static/haiku.css_t b/sphinx/themes/haiku/static/haiku.css.jinja similarity index 100% rename from sphinx/themes/haiku/static/haiku.css_t rename to sphinx/themes/haiku/static/haiku.css.jinja diff --git a/sphinx/themes/nature/static/nature.css_t b/sphinx/themes/nature/static/nature.css.jinja similarity index 100% rename from sphinx/themes/nature/static/nature.css_t rename to sphinx/themes/nature/static/nature.css.jinja diff --git a/sphinx/themes/nonav/static/nonav.css_t b/sphinx/themes/nonav/static/nonav.css.jinja similarity index 100% rename from sphinx/themes/nonav/static/nonav.css_t rename to sphinx/themes/nonav/static/nonav.css.jinja diff --git a/sphinx/themes/pyramid/static/epub.css_t b/sphinx/themes/pyramid/static/epub.css.jinja similarity index 100% rename from sphinx/themes/pyramid/static/epub.css_t rename to sphinx/themes/pyramid/static/epub.css.jinja diff --git a/sphinx/themes/pyramid/static/pyramid.css_t b/sphinx/themes/pyramid/static/pyramid.css.jinja similarity index 100% rename from sphinx/themes/pyramid/static/pyramid.css_t rename to sphinx/themes/pyramid/static/pyramid.css.jinja diff --git a/sphinx/themes/scrolls/static/scrolls.css_t b/sphinx/themes/scrolls/static/scrolls.css.jinja similarity index 100% rename from sphinx/themes/scrolls/static/scrolls.css_t rename to sphinx/themes/scrolls/static/scrolls.css.jinja diff --git a/sphinx/themes/sphinxdoc/static/sphinxdoc.css_t b/sphinx/themes/sphinxdoc/static/sphinxdoc.css.jinja similarity index 100% rename from sphinx/themes/sphinxdoc/static/sphinxdoc.css_t rename to sphinx/themes/sphinxdoc/static/sphinxdoc.css.jinja diff --git a/sphinx/themes/traditional/static/traditional.css_t b/sphinx/themes/traditional/static/traditional.css.jinja similarity index 100% rename from sphinx/themes/traditional/static/traditional.css_t rename to sphinx/themes/traditional/static/traditional.css.jinja diff --git a/tests/roots/test-html_assets/extra/API.html_t b/tests/roots/test-html_assets/extra/API.html.jinja similarity index 100% rename from tests/roots/test-html_assets/extra/API.html_t rename to tests/roots/test-html_assets/extra/API.html.jinja diff --git a/tests/roots/test-html_assets/static/API.html_t b/tests/roots/test-html_assets/static/API.html.jinja similarity index 100% rename from tests/roots/test-html_assets/static/API.html_t rename to tests/roots/test-html_assets/static/API.html.jinja diff --git a/tests/roots/test-latex-table/_mytemplates/latex/longtable.tex_t b/tests/roots/test-latex-table/_mytemplates/latex/longtable.tex.jinja similarity index 100% rename from tests/roots/test-latex-table/_mytemplates/latex/longtable.tex_t rename to tests/roots/test-latex-table/_mytemplates/latex/longtable.tex.jinja From 0126b7a38592243c9b27cff599f8fc69b16e68eb Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 May 2024 11:22:12 +0100 Subject: [PATCH 2/9] Revert "change-isolation: undo template file extension coupling in application and test code" This reverts commit cef1059d78d77111dc4a64336b9f9069d99fff11. Conflicts: sphinx/builders/_epub_base.py sphinx/builders/changes.py sphinx/ext/imgmath.py sphinx/writers/latex.py --- sphinx/builders/_epub_base.py | 4 ++-- sphinx/builders/changes.py | 2 +- sphinx/builders/epub3.py | 2 +- sphinx/builders/gettext.py | 2 +- sphinx/builders/latex/__init__.py | 4 ++-- sphinx/cmd/quickstart.py | 18 +++++++++--------- sphinx/ext/apidoc.py | 6 +++--- sphinx/ext/imgmath.py | 2 +- sphinx/writers/latex.py | 2 +- tests/test_builders/test_build_html_assets.py | 2 +- tests/test_util/test_util_fileutil.py | 16 ++++++++-------- 11 files changed, 30 insertions(+), 30 deletions(-) diff --git a/sphinx/builders/_epub_base.py b/sphinx/builders/_epub_base.py index 31862e4b65e..9e8bc5d3f26 100644 --- a/sphinx/builders/_epub_base.py +++ b/sphinx/builders/_epub_base.py @@ -615,7 +615,7 @@ def build_content(self) -> None: html.escape(self.refnodes[0]['refuri']))) # write the project file - copy_asset_file(path.join(self.template_dir, 'content.opf_t'), self.outdir, metadata) + copy_asset_file(path.join(self.template_dir, 'content.opf.jinja'), self.outdir, metadata) # NoQA: E501 def new_navpoint(self, node: dict[str, Any], level: int, incr: bool = True) -> NavPoint: """Create a new entry in the toc from the node at given level.""" @@ -698,7 +698,7 @@ def build_toc(self) -> None: navpoints = self.build_navpoints(refnodes) level = max(item['level'] for item in self.refnodes) level = min(level, self.config.epub_tocdepth) - copy_asset_file(path.join(self.template_dir, 'toc.ncx_t'), self.outdir, + copy_asset_file(path.join(self.template_dir, 'toc.ncx.jinja'), self.outdir, self.toc_metadata(level, navpoints)) def build_epub(self) -> None: diff --git a/sphinx/builders/changes.py b/sphinx/builders/changes.py index 37f96d04f3e..48a0ed828da 100644 --- a/sphinx/builders/changes.py +++ b/sphinx/builders/changes.py @@ -140,7 +140,7 @@ def hl(no: int, line: str) -> str: f.write(self.templates.render('changes/rstsource.html', ctx)) themectx = {'theme_' + key: val for (key, val) in self.theme.get_options({}).items()} - copy_asset_file(path.join(package_dir, 'themes', 'default', 'static', 'default.css_t'), + copy_asset_file(path.join(package_dir, 'themes', 'default', 'static', 'default.css.jinja'), # NoQA: E501 self.outdir, context=themectx, renderer=self.templates) copy_asset_file(path.join(package_dir, 'themes', 'basic', 'static', 'basic.css'), self.outdir) diff --git a/sphinx/builders/epub3.py b/sphinx/builders/epub3.py index 91c76e41c32..68116243ba0 100644 --- a/sphinx/builders/epub3.py +++ b/sphinx/builders/epub3.py @@ -194,7 +194,7 @@ def build_navigation_doc(self) -> None: # 'includehidden' refnodes = self.refnodes navlist = self.build_navlist(refnodes) - copy_asset_file(path.join(self.template_dir, 'nav.xhtml_t'), self.outdir, + copy_asset_file(path.join(self.template_dir, 'nav.xhtml.jinja'), self.outdir, self.navigation_doc_metadata(navlist)) # Add nav.xhtml to epub file diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index fee3a2f8ef4..f1119e7daca 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -287,7 +287,7 @@ def finish(self) -> None: ensuredir(path.join(self.outdir, path.dirname(textdomain))) context['messages'] = list(catalog) - content = GettextRenderer(outdir=self.outdir).render('message.pot_t', context) + content = GettextRenderer(outdir=self.outdir).render('message.pot.jinja', context) pofn = path.join(self.outdir, textdomain + '.pot') if should_write(pofn, content): diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py index b40b754b918..03279db5dde 100644 --- a/sphinx/builders/latex/__init__.py +++ b/sphinx/builders/latex/__init__.py @@ -417,7 +417,7 @@ def copy_support_files(self) -> None: # use pre-1.6.x Makefile for make latexpdf on Windows if os.name == 'nt': staticdirname = path.join(package_dir, 'texinputs_win') - copy_asset_file(path.join(staticdirname, 'Makefile_t'), + copy_asset_file(path.join(staticdirname, 'Makefile.jinja'), self.outdir, context=context) @progress_message(__('copying additional files')) @@ -456,7 +456,7 @@ def write_message_catalog(self) -> None: if self.context['babel'] or self.context['polyglossia']: context['addtocaptions'] = r'\addto\captions%s' % self.babel.get_language() - filename = path.join(package_dir, 'templates', 'latex', 'sphinxmessages.sty_t') + filename = path.join(package_dir, 'templates', 'latex', 'sphinxmessages.sty.jinja') copy_asset_file(filename, self.outdir, context=context, renderer=LaTeXRenderer()) diff --git a/sphinx/cmd/quickstart.py b/sphinx/cmd/quickstart.py index 8fb7eebae48..8103276f0aa 100644 --- a/sphinx/cmd/quickstart.py +++ b/sphinx/cmd/quickstart.py @@ -372,32 +372,32 @@ def write_file(fpath: str, content: str, newline: str | None = None) -> None: if 'quiet' not in d: print(__('File %s already exists, skipping.') % fpath) - conf_path = os.path.join(templatedir, 'conf.py_t') if templatedir else None + conf_path = os.path.join(templatedir, 'conf.py.jinja') if templatedir else None if not conf_path or not path.isfile(conf_path): - conf_path = os.path.join(package_dir, 'templates', 'quickstart', 'conf.py_t') + conf_path = os.path.join(package_dir, 'templates', 'quickstart', 'conf.py.jinja') with open(conf_path, encoding="utf-8") as f: conf_text = f.read() write_file(path.join(srcdir, 'conf.py'), template.render_string(conf_text, d)) masterfile = path.join(srcdir, d['master'] + d['suffix']) - if template._has_custom_template('quickstart/master_doc.rst_t'): + if template._has_custom_template('quickstart/master_doc.rst.jinja'): msg = ('A custom template `master_doc.rst_t` found. It has been renamed to ' '`root_doc.rst_t`. Please rename it on your project too.') print(colorize('red', msg)) - write_file(masterfile, template.render('quickstart/master_doc.rst_t', d)) + write_file(masterfile, template.render('quickstart/master_doc.rst.jinja', d)) else: - write_file(masterfile, template.render('quickstart/root_doc.rst_t', d)) + write_file(masterfile, template.render('quickstart/root_doc.rst.jinja', d)) if d.get('make_mode'): - makefile_template = 'quickstart/Makefile.new_t' - batchfile_template = 'quickstart/make.bat.new_t' + makefile_template = 'quickstart/Makefile.new.jinja' + batchfile_template = 'quickstart/make.bat.new.jinja' else: # xref RemovedInSphinx80Warning msg = "Support for '--no-use-make-mode' will be removed in Sphinx 8." print(colorize('red', msg)) - makefile_template = 'quickstart/Makefile_t' - batchfile_template = 'quickstart/make.bat_t' + makefile_template = 'quickstart/Makefile.jinja' + batchfile_template = 'quickstart/make.bat.jinja' if d['makefile'] is True: d['rsrcdir'] = 'source' if d['sep'] else '.' diff --git a/sphinx/ext/apidoc.py b/sphinx/ext/apidoc.py index b2e2291be02..ebf2fdb6c4e 100644 --- a/sphinx/ext/apidoc.py +++ b/sphinx/ext/apidoc.py @@ -113,7 +113,7 @@ def create_module_file(package: str | None, basename: str, opts: Any, template_path = [user_template_dir, template_dir] else: template_path = [template_dir] - text = ReSTRenderer(template_path).render('module.rst_t', context) + text = ReSTRenderer(template_path).render('module.rst.jinja', context) write_file(qualname, text, opts) @@ -155,7 +155,7 @@ def create_package_file(root: str, master_package: str | None, subroot: str, template_path = [user_template_dir, template_dir] else: template_path = [template_dir] - text = ReSTRenderer(template_path).render('package.rst_t', context) + text = ReSTRenderer(template_path).render('package.rst.jinja', context) write_file(pkgname, text, opts) if submodules and opts.separatemodules: @@ -184,7 +184,7 @@ def create_modules_toc_file(modules: list[str], opts: Any, name: str = 'modules' template_path = [user_template_dir, template_dir] else: template_path = [template_dir] - text = ReSTRenderer(template_path).render('toc.rst_t', context) + text = ReSTRenderer(template_path).render('toc.rst.jinja', context) write_file(name, text, opts) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index c640bc77006..85d7cb12f42 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -112,7 +112,7 @@ def generate_latex_macro(image_format: str, if path.exists(template): return LaTeXRenderer().render(template, variables) - return LaTeXRenderer(templates_path).render(template_name, variables) + return LaTeXRenderer(templates_path).render(template_name + '.jinja', variables) def ensure_tempdir(builder: Builder) -> str: diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 5a2c4678105..0bacefd7f21 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -522,7 +522,7 @@ def render(self, template_name: str, variables: dict[str, Any]) -> str: if path.exists(template): return renderer.render(template, variables) - return renderer.render(template_name, variables) + return renderer.render(template_name + '.jinja', variables) @property def table(self) -> Table | None: diff --git a/tests/test_builders/test_build_html_assets.py b/tests/test_builders/test_build_html_assets.py index fc7a9871c26..e2c7c75b2e7 100644 --- a/tests/test_builders/test_build_html_assets.py +++ b/tests/test_builders/test_build_html_assets.py @@ -34,7 +34,7 @@ def test_html_assets(app): # html_extra_path assert (app.outdir / '.htaccess').exists() assert not (app.outdir / '.htpasswd').exists() - assert (app.outdir / 'API.html_t').exists() + assert (app.outdir / 'API.html.jinja').exists() assert (app.outdir / 'css/style.css').exists() assert (app.outdir / 'rimg.png').exists() assert not (app.outdir / '_build' / 'index.html').exists() diff --git a/tests/test_util/test_util_fileutil.py b/tests/test_util/test_util_fileutil.py index 344150e8e9c..6b8dfde90db 100644 --- a/tests/test_util/test_util_fileutil.py +++ b/tests/test_util/test_util_fileutil.py @@ -28,9 +28,9 @@ def test_copy_asset_file(tmp_path): assert src.read_text(encoding='utf8') == dest.read_text(encoding='utf8') # copy template file - src = (tmp_path / 'asset.txt_t') + src = (tmp_path / 'asset.txt.jinja') src.write_text('# {{var1}} data', encoding='utf8') - dest = (tmp_path / 'output.txt_t') + dest = (tmp_path / 'output.txt.jinja') copy_asset_file(str(src), str(dest), {'var1': 'template'}, renderer) assert not dest.exists() @@ -38,7 +38,7 @@ def test_copy_asset_file(tmp_path): assert (tmp_path / 'output.txt').read_text(encoding='utf8') == '# template data' # copy template file to subdir - src = (tmp_path / 'asset.txt_t') + src = (tmp_path / 'asset.txt.jinja') src.write_text('# {{var1}} data', encoding='utf8') subdir1 = (tmp_path / 'subdir') subdir1.mkdir(parents=True, exist_ok=True) @@ -48,14 +48,14 @@ def test_copy_asset_file(tmp_path): assert (subdir1 / 'asset.txt').read_text(encoding='utf8') == '# template data' # copy template file without context - src = (tmp_path / 'asset.txt_t') + src = (tmp_path / 'asset.txt.jinja') subdir2 = (tmp_path / 'subdir2') subdir2.mkdir(parents=True, exist_ok=True) copy_asset_file(src, subdir2) assert not (subdir2 / 'asset.txt').exists() - assert (subdir2 / 'asset.txt_t').exists() - assert (subdir2 / 'asset.txt_t').read_text(encoding='utf8') == '# {{var1}} data' + assert (subdir2 / 'asset.txt.jinja').exists() + assert (subdir2 / 'asset.txt.jinja').read_text(encoding='utf8') == '# {{var1}} data' def test_copy_asset(tmp_path): @@ -65,12 +65,12 @@ def test_copy_asset(tmp_path): source = (tmp_path / 'source') source.mkdir(parents=True, exist_ok=True) (source / 'index.rst').write_text('index.rst', encoding='utf8') - (source / 'foo.rst_t').write_text('{{var1}}.rst', encoding='utf8') + (source / 'foo.rst.jinja').write_text('{{var1}}.rst', encoding='utf8') (source / '_static').mkdir(parents=True, exist_ok=True) (source / '_static' / 'basic.css').write_text('basic.css', encoding='utf8') (source / '_templates').mkdir(parents=True, exist_ok=True) (source / '_templates' / 'layout.html').write_text('layout.html', encoding='utf8') - (source / '_templates' / 'sidebar.html_t').write_text('sidebar: {{var2}}', encoding='utf8') + (source / '_templates' / 'sidebar.html.jinja').write_text('sidebar: {{var2}}', encoding='utf8') # copy a single file assert not (tmp_path / 'test1').exists() From 7ce2e3433108a2bf97075cbd598a6ccd7e8e8994 Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 May 2024 11:22:31 +0100 Subject: [PATCH 3/9] Reapply "fixup: update a few lingering docstring and message variable references to '_t'-suffix templates" This reverts commit f0f22fd596031bf426fdccd652b564e7ef040633. --- doc/man/sphinx-apidoc.rst | 18 +++++++++--------- doc/man/sphinx-quickstart.rst | 12 ++++++------ sphinx/cmd/quickstart.py | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/doc/man/sphinx-apidoc.rst b/doc/man/sphinx-apidoc.rst index efc8230dc6d..afcbbb28ca4 100644 --- a/doc/man/sphinx-apidoc.rst +++ b/doc/man/sphinx-apidoc.rst @@ -142,15 +142,15 @@ These options are used when :option:`--full` is specified: sphinx project files generated by apidoc. Following Jinja2 template files are allowed: - * ``module.rst_t`` - * ``package.rst_t`` - * ``toc.rst_t`` - * ``root_doc.rst_t`` - * ``conf.py_t`` - * ``Makefile_t`` - * ``Makefile.new_t`` - * ``make.bat_t`` - * ``make.bat.new_t`` + * ``module.rst.jinja`` + * ``package.rst.jinja`` + * ``toc.rst.jinja`` + * ``root_doc.rst.jinja`` + * ``conf.py.jinja`` + * ``Makefile.jinja`` + * ``Makefile.new.jinja`` + * ``make.bat.jinja`` + * ``make.bat.new.jinja`` In detail, please refer the system template files Sphinx provides. (``sphinx/templates/apidoc`` and ``sphinx/templates/quickstart``) diff --git a/doc/man/sphinx-quickstart.rst b/doc/man/sphinx-quickstart.rst index cc6673d3afd..a8522ecda10 100644 --- a/doc/man/sphinx-quickstart.rst +++ b/doc/man/sphinx-quickstart.rst @@ -152,12 +152,12 @@ Options sphinx project files generated by quickstart. Following Jinja2 template files are allowed: - * ``root_doc.rst_t`` - * ``conf.py_t`` - * ``Makefile_t`` - * ``Makefile.new_t`` - * ``make.bat_t`` - * ``make.bat.new_t`` + * ``root_doc.rst.jinja`` + * ``conf.py.jinja`` + * ``Makefile.jinja`` + * ``Makefile.new.jinja`` + * ``make.bat.jinja`` + * ``make.bat.new.jinja`` In detail, please refer the system template files Sphinx provides. (``sphinx/templates/quickstart``) diff --git a/sphinx/cmd/quickstart.py b/sphinx/cmd/quickstart.py index 8103276f0aa..b75e0fafcae 100644 --- a/sphinx/cmd/quickstart.py +++ b/sphinx/cmd/quickstart.py @@ -382,8 +382,8 @@ def write_file(fpath: str, content: str, newline: str | None = None) -> None: masterfile = path.join(srcdir, d['master'] + d['suffix']) if template._has_custom_template('quickstart/master_doc.rst.jinja'): - msg = ('A custom template `master_doc.rst_t` found. It has been renamed to ' - '`root_doc.rst_t`. Please rename it on your project too.') + msg = ('A custom template `master_doc.rst.jinja` found. It has been renamed to ' + '`root_doc.rst.jinja`. Please rename it on your project too.') print(colorize('red', msg)) write_file(masterfile, template.render('quickstart/master_doc.rst.jinja', d)) else: From f2be104a44a98bddfbd10f8cdeaa5fbccc46719a Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 May 2024 11:26:53 +0100 Subject: [PATCH 4/9] Revert "change-isolation: undo modifications to LaTeX, imgmath writer template detection and rendering" This reverts commit 2a5a9a0b875c084910d5d19f78d65a5ec481a318. Conflicts: sphinx/ext/imgmath.py sphinx/writers/latex.py --- sphinx/ext/imgmath.py | 11 ++++++----- sphinx/writers/latex.py | 13 +++++++------ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index 85d7cb12f42..e5f88ce13b9 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -103,14 +103,15 @@ def generate_latex_macro(image_format: str, } if config.imgmath_use_preview: - template_name = 'preview.tex_t' + template_name = 'preview.tex' else: - template_name = 'template.tex_t' + template_name = 'template.tex' for template_dir in config.templates_path: - template = path.join(confdir, template_dir, template_name) - if path.exists(template): - return LaTeXRenderer().render(template, variables) + for template_suffix in ('_t', '.jinja'): + template = path.join(confdir, template_dir, template_name + template_suffix) + if path.exists(template): + return LaTeXRenderer().render(template, variables) return LaTeXRenderer(templates_path).render(template_name + '.jinja', variables) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 0bacefd7f21..c72f277cbe0 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -437,7 +437,7 @@ def astext(self) -> str: 'body': ''.join(self.body), 'indices': self.generate_indices(), }) - return self.render('latex.tex_t', self.elements) + return self.render('latex.tex', self.elements) def hypertarget(self, id: str, withdoc: bool = True, anchor: bool = True) -> str: if withdoc: @@ -517,10 +517,11 @@ def generate(content: list[tuple[str, list[IndexEntry]]], collapsed: bool) -> No def render(self, template_name: str, variables: dict[str, Any]) -> str: renderer = LaTeXRenderer(latex_engine=self.config.latex_engine) for template_dir in self.config.templates_path: - template = path.join(self.builder.confdir, template_dir, - template_name) - if path.exists(template): - return renderer.render(template, variables) + for template_suffix in ('_t', '.jinja'): + template = path.join(self.builder.confdir, template_dir, + template_name + template_suffix) + if path.exists(template): + return renderer.render(template, variables) return renderer.render(template_name + '.jinja', variables) @@ -1033,7 +1034,7 @@ def depart_table(self, node: Element) -> None: assert self.table is not None labels = self.hypertarget_to(node) table_type = self.table.get_table_type() - table = self.render(table_type + '.tex_t', + table = self.render(table_type + '.tex', {'table': self.table, 'labels': labels}) self.body.append(BLANKLINE) self.body.append(table) From ad9f5fac8ae1117e4fbd4efdbc4b5d244ccb08a0 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 3 Jul 2024 11:29:57 +0100 Subject: [PATCH 5/9] Backwards compatibility: retain the existing template name interface for ``LaTeXWriter.render``. --- sphinx/writers/latex.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index c72f277cbe0..7d958c0bafd 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -437,7 +437,7 @@ def astext(self) -> str: 'body': ''.join(self.body), 'indices': self.generate_indices(), }) - return self.render('latex.tex', self.elements) + return self.render('latex.tex.jinja', self.elements) def hypertarget(self, id: str, withdoc: bool = True, anchor: bool = True) -> str: if withdoc: @@ -517,13 +517,16 @@ def generate(content: list[tuple[str, list[IndexEntry]]], collapsed: bool) -> No def render(self, template_name: str, variables: dict[str, Any]) -> str: renderer = LaTeXRenderer(latex_engine=self.config.latex_engine) for template_dir in self.config.templates_path: - for template_suffix in ('_t', '.jinja'): - template = path.join(self.builder.confdir, template_dir, - template_name + template_suffix) - if path.exists(template): - return renderer.render(template, variables) + template = path.join(self.builder.confdir, template_dir, + template_name) + if path.exists(template): + return renderer.render(template, variables) + elif template_name.endswith('.jinja'): + legacy_template = template[:-len('.jinja')] + '_t' + if path.exists(legacy_template): + return renderer.render(legacy_template, variables) - return renderer.render(template_name + '.jinja', variables) + return renderer.render(template_name, variables) @property def table(self) -> Table | None: @@ -1034,7 +1037,7 @@ def depart_table(self, node: Element) -> None: assert self.table is not None labels = self.hypertarget_to(node) table_type = self.table.get_table_type() - table = self.render(table_type + '.tex', + table = self.render(table_type + '.tex.jinja', {'table': self.table, 'labels': labels}) self.body.append(BLANKLINE) self.body.append(table) From 12fda326cfab2edd4fc8d4009b38790c3e253324 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 3 Jul 2024 12:02:38 +0100 Subject: [PATCH 6/9] LaTeX writer: add warning when legacy template filename is loaded. --- sphinx/writers/latex.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 7d958c0bafd..7c2fca79dfa 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -524,6 +524,8 @@ def render(self, template_name: str, variables: dict[str, Any]) -> str: elif template_name.endswith('.jinja'): legacy_template = template[:-len('.jinja')] + '_t' if path.exists(legacy_template): + logger.warning(__('template %s not found; loading from legacy %s instead'), + template_name, legacy_template) return renderer.render(legacy_template, variables) return renderer.render(template_name, variables) From d0711332e3361c8cfc11671c15276a382d1eabef Mon Sep 17 00:00:00 2001 From: James Addison <55152140+jayaddison@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:23:42 +0100 Subject: [PATCH 7/9] Nitpick: ext.imgmath: attempt to load template files using '.jinja' suffix (preferred) before '_t' suffix. --- sphinx/ext/imgmath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index e5f88ce13b9..6f061f11643 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -108,7 +108,7 @@ def generate_latex_macro(image_format: str, template_name = 'template.tex' for template_dir in config.templates_path: - for template_suffix in ('_t', '.jinja'): + for template_suffix in ('.jinja', '_t'): template = path.join(confdir, template_dir, template_name + template_suffix) if path.exists(template): return LaTeXRenderer().render(template, variables) From e6d39322fc1b181894d945adad2eaea1c4413ea5 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 3 Jul 2024 12:33:41 +0100 Subject: [PATCH 8/9] Nitpick: use same variable for ``.jinja`` suffix check as ``_t`` suffix replacement. --- sphinx/writers/latex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 7c2fca79dfa..d006806db3a 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -521,7 +521,7 @@ def render(self, template_name: str, variables: dict[str, Any]) -> str: template_name) if path.exists(template): return renderer.render(template, variables) - elif template_name.endswith('.jinja'): + elif template.endswith('.jinja'): legacy_template = template[:-len('.jinja')] + '_t' if path.exists(legacy_template): logger.warning(__('template %s not found; loading from legacy %s instead'), From 1b6a1004cae6614054a142c620e6681a58641269 Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Thu, 11 Jul 2024 12:21:49 +0100 Subject: [PATCH 9/9] removesuffix --- sphinx/writers/latex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index ed1b335e1fd..b02975a0ea0 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -525,7 +525,7 @@ def render(self, template_name: str, variables: dict[str, Any]) -> str: if path.exists(template): return renderer.render(template, variables) elif template.endswith('.jinja'): - legacy_template = template[:-len('.jinja')] + '_t' + legacy_template = template.removesuffix('.jinja') + '_t' if path.exists(legacy_template): logger.warning(__('template %s not found; loading from legacy %s instead'), template_name, legacy_template)