From 34bc4e69bb68f735dfeaeb73e45627f91782bada Mon Sep 17 00:00:00 2001 From: Adam Turner <9087854+aa-turner@users.noreply.github.com> Date: Tue, 23 Jul 2024 22:52:50 +0100 Subject: [PATCH] Fix ``IsADirectoryError`` --- sphinx/builders/_epub_base.py | 14 +++++++++++--- sphinx/builders/changes.py | 6 +++--- sphinx/builders/latex/__init__.py | 10 ++++++---- sphinx/builders/texinfo.py | 6 +++++- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/sphinx/builders/_epub_base.py b/sphinx/builders/_epub_base.py index 8f862f6e6..444e9812d 100644 --- a/sphinx/builders/_epub_base.py +++ b/sphinx/builders/_epub_base.py @@ -478,14 +478,22 @@ class EpubBuilder(StandaloneHTMLBuilder): def build_mimetype(self) -> None: """Write the metainfo file mimetype.""" logger.info(__('writing mimetype file...')) - copyfile(path.join(self.template_dir, 'mimetype'), self.outdir, force=True) + copyfile( + path.join(self.template_dir, 'mimetype'), + self.outdir / 'mimetype', + force=True, + ) def build_container(self, outname: str = 'META-INF/container.xml') -> None: """Write the metainfo file META-INF/container.xml.""" logger.info(__('writing META-INF/container.xml file...')) - outdir = path.join(self.outdir, 'META-INF') + outdir = self.outdir / 'META-INF' ensuredir(outdir) - copyfile(path.join(self.template_dir, 'container.xml'), outdir, force=True) + copyfile( + path.join(self.template_dir, 'container.xml'), + outdir / 'container.xml', + force=True, + ) def content_metadata(self) -> dict[str, Any]: """Create a dictionary with all metadata for the content.opf diff --git a/sphinx/builders/changes.py b/sphinx/builders/changes.py index c69683dea..afc5f064b 100644 --- a/sphinx/builders/changes.py +++ b/sphinx/builders/changes.py @@ -14,7 +14,7 @@ from sphinx.theming import HTMLThemeFactory from sphinx.util import logging from sphinx.util.console import bold from sphinx.util.fileutil import copy_asset_file -from sphinx.util.osutil import copyfile, ensuredir, os_path +from sphinx.util.osutil import ensuredir, os_path if TYPE_CHECKING: from sphinx.application import Sphinx @@ -147,9 +147,9 @@ class ChangesBuilder(Builder): renderer=self.templates, force=True, ) - copyfile( + copy_asset_file( path.join(package_dir, 'themes', 'basic', 'static', 'basic.css'), - self.outdir, + self.outdir / 'basic.css', force=True, ) diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py index 15e3c1c45..201ad5f49 100644 --- a/sphinx/builders/latex/__init__.py +++ b/sphinx/builders/latex/__init__.py @@ -432,9 +432,10 @@ class LaTeXBuilder(Builder): def copy_latex_additional_files(self) -> None: for filename in self.config.latex_additional_files: logger.info(' ' + filename, nonl=True) + source = self.confdir / filename copyfile( - self.confdir / filename, - self.outdir, + source, + self.outdir / source.name, force=True, ) @@ -457,9 +458,10 @@ class LaTeXBuilder(Builder): if self.config.latex_logo: if not path.isfile(path.join(self.confdir, self.config.latex_logo)): raise SphinxError(__('logo file %r does not exist') % self.config.latex_logo) + source = self.confdir / self.config.latex_logo copyfile( - self.confdir / self.config.latex_logo, - self.outdir, + source, + self.outdir / source.name, force=True, ) diff --git a/sphinx/builders/texinfo.py b/sphinx/builders/texinfo.py index 46dcb9ee5..d0aa1ee43 100644 --- a/sphinx/builders/texinfo.py +++ b/sphinx/builders/texinfo.py @@ -203,7 +203,11 @@ class TexinfoBuilder(Builder): try: with progress_message(__('copying Texinfo support files')): logger.info('Makefile ', nonl=True) - copyfile(os.path.join(template_dir, 'Makefile'), self.outdir, force=True) + copyfile( + os.path.join(template_dir, 'Makefile'), + self.outdir / 'Makefile', + force=True, + ) except OSError as err: logger.warning(__("error writing file Makefile: %s"), err)