Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eb21864

Browse files
committed
Use copyfile where possible
1 parent f09bc62 commit eb21864

6 files changed

Lines changed: 45 additions & 27 deletions

File tree

doc/development/html_themes/index.rst

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -373,13 +373,12 @@ example of code to accomplish this:
373373

374374
.. code-block:: python
375375
376-
from os import path
377-
from sphinx.util.fileutil import copy_asset_file
376+
import shutil
378377
379378
def copy_custom_files(app, exc):
380379
if app.builder.format == 'html' and not exc:
381-
staticdir = path.join(app.builder.outdir, '_static')
382-
copy_asset_file('path/to/myextension/_static/myjsfile.js', staticdir)
380+
static_dir = app.outdir / '_static'
381+
shutil.copyfile('path/to/myextension/_static/myjsfile.js', static_dir)
383382
384383
def setup(app):
385384
app.connect('build-finished', copy_custom_files)

sphinx/builders/_epub_base.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -412,8 +412,11 @@ def copy_image_files_pil(self) -> None:
412412
logger.warning(__('cannot read image file %r: copying it instead'),
413413
path.join(self.srcdir, src))
414414
try:
415-
copyfile(path.join(self.srcdir, src),
416-
path.join(self.outdir, self.imagedir, dest))
415+
copyfile(
416+
self.srcdir / src,
417+
self.outdir / self.imagedir / dest,
418+
force=True,
419+
)
417420
except OSError as err:
418421
logger.warning(__('cannot copy image file %r: %s'),
419422
path.join(self.srcdir, src), err)
@@ -475,14 +478,14 @@ def handle_page(
475478
def build_mimetype(self) -> None:
476479
"""Write the metainfo file mimetype."""
477480
logger.info(__('writing mimetype file...'))
478-
copy_asset_file(path.join(self.template_dir, 'mimetype'), self.outdir)
481+
copyfile(path.join(self.template_dir, 'mimetype'), self.outdir, force=True)
479482

480483
def build_container(self, outname: str = 'META-INF/container.xml') -> None:
481484
"""Write the metainfo file META-INF/container.xml."""
482485
logger.info(__('writing META-INF/container.xml file...'))
483486
outdir = path.join(self.outdir, 'META-INF')
484487
ensuredir(outdir)
485-
copy_asset_file(path.join(self.template_dir, 'container.xml'), outdir)
488+
copyfile(path.join(self.template_dir, 'container.xml'), outdir, force=True)
486489

487490
def content_metadata(self) -> dict[str, Any]:
488491
"""Create a dictionary with all metadata for the content.opf
@@ -625,7 +628,8 @@ def build_content(self) -> None:
625628
copy_asset_file(
626629
path.join(self.template_dir, 'content.opf.jinja'),
627630
self.outdir,
628-
context=metadata
631+
context=metadata,
632+
force=True,
629633
)
630634

631635
def new_navpoint(self, node: dict[str, Any], level: int, incr: bool = True) -> NavPoint:
@@ -709,8 +713,12 @@ def build_toc(self) -> None:
709713
navpoints = self.build_navpoints(refnodes)
710714
level = max(item['level'] for item in self.refnodes)
711715
level = min(level, self.config.epub_tocdepth)
712-
copy_asset_file(path.join(self.template_dir, 'toc.ncx.jinja'), self.outdir,
713-
context=self.toc_metadata(level, navpoints))
716+
copy_asset_file(
717+
path.join(self.template_dir, 'toc.ncx.jinja'),
718+
self.outdir,
719+
context=self.toc_metadata(level, navpoints),
720+
force=True,
721+
)
714722

715723
def build_epub(self) -> None:
716724
"""Write the epub file.

sphinx/builders/changes.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from sphinx.util import logging
1515
from sphinx.util.console import bold
1616
from sphinx.util.fileutil import copy_asset_file
17-
from sphinx.util.osutil import ensuredir, os_path
17+
from sphinx.util.osutil import copyfile, ensuredir, os_path
1818

1919
if TYPE_CHECKING:
2020
from sphinx.application import Sphinx
@@ -140,10 +140,18 @@ def hl(no: int, line: str) -> str:
140140
f.write(self.templates.render('changes/rstsource.html', ctx))
141141
themectx = {'theme_' + key: val for (key, val) in
142142
self.theme.get_options({}).items()}
143-
copy_asset_file(path.join(package_dir, 'themes', 'default', 'static', 'default.css.jinja'), # NoQA: E501
144-
self.outdir, context=themectx, renderer=self.templates)
145-
copy_asset_file(path.join(package_dir, 'themes', 'basic', 'static', 'basic.css'),
146-
self.outdir)
143+
copy_asset_file(
144+
path.join(package_dir, 'themes', 'default', 'static', 'default.css.jinja'),
145+
self.outdir,
146+
context=themectx,
147+
renderer=self.templates,
148+
force=True,
149+
)
150+
copyfile(
151+
path.join(package_dir, 'themes', 'basic', 'static', 'basic.css'),
152+
self.outdir,
153+
force=True,
154+
)
147155

148156
def hl(self, text: str, version: str) -> str:
149157
text = html.escape(text)

sphinx/builders/epub3.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ def build_navigation_doc(self) -> None:
197197
copy_asset_file(
198198
path.join(self.template_dir, 'nav.xhtml.jinja'),
199199
self.outdir,
200-
context=self.navigation_doc_metadata(navlist)
200+
context=self.navigation_doc_metadata(navlist),
201+
force=True,
201202
)
202203

203204
# Add nav.xhtml to epub file

sphinx/builders/latex/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from sphinx.util.fileutil import copy_asset_file
2727
from sphinx.util.i18n import format_date
2828
from sphinx.util.nodes import inline_all_toctrees
29-
from sphinx.util.osutil import SEP, make_filename_from_project
29+
from sphinx.util.osutil import SEP, copyfile, make_filename_from_project
3030
from sphinx.util.template import LaTeXRenderer
3131
from sphinx.writers.latex import LaTeXTranslator, LaTeXWriter
3232

@@ -432,7 +432,7 @@ def copy_support_files(self) -> None:
432432
def copy_latex_additional_files(self) -> None:
433433
for filename in self.config.latex_additional_files:
434434
logger.info(' ' + filename, nonl=True)
435-
copy_asset_file(
435+
copyfile(
436436
self.confdir / filename,
437437
self.outdir,
438438
force=True,
@@ -446,7 +446,7 @@ def copy_image_files(self) -> None:
446446
stringify_func=stringify_func):
447447
dest = self.images[src]
448448
try:
449-
copy_asset_file(
449+
copyfile(
450450
self.srcdir / src,
451451
self.outdir / dest,
452452
force=True,
@@ -457,7 +457,7 @@ def copy_image_files(self) -> None:
457457
if self.config.latex_logo:
458458
if not path.isfile(path.join(self.confdir, self.config.latex_logo)):
459459
raise SphinxError(__('logo file %r does not exist') % self.config.latex_logo)
460-
copy_asset_file(
460+
copyfile(
461461
self.confdir / self.config.latex_logo,
462462
self.outdir,
463463
force=True,

sphinx/builders/texinfo.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020
from sphinx.util.console import darkgreen
2121
from sphinx.util.display import progress_message, status_iterator
2222
from sphinx.util.docutils import new_document
23-
from sphinx.util.fileutil import copy_asset_file
2423
from sphinx.util.nodes import inline_all_toctrees
25-
from sphinx.util.osutil import SEP, ensuredir, make_filename_from_project
24+
from sphinx.util.osutil import SEP, copyfile, ensuredir, make_filename_from_project
2625
from sphinx.writers.texinfo import TexinfoTranslator, TexinfoWriter
2726

2827
if TYPE_CHECKING:
@@ -189,10 +188,13 @@ def copy_image_files(self, targetname: str) -> None:
189188
stringify_func=stringify_func):
190189
dest = self.images[src]
191190
try:
192-
imagedir = path.join(self.outdir, targetname + '-figures')
191+
imagedir = self.outdir / f'{targetname}-figures'
193192
ensuredir(imagedir)
194-
copy_asset_file(path.join(self.srcdir, src),
195-
path.join(imagedir, dest))
193+
copyfile(
194+
self.srcdir / src,
195+
imagedir / dest,
196+
force=True,
197+
)
196198
except Exception as err:
197199
logger.warning(__('cannot copy image file %r: %s'),
198200
path.join(self.srcdir, src), err)
@@ -201,7 +203,7 @@ def copy_support_files(self) -> None:
201203
try:
202204
with progress_message(__('copying Texinfo support files')):
203205
logger.info('Makefile ', nonl=True)
204-
copy_asset_file(os.path.join(template_dir, 'Makefile'), self.outdir)
206+
copyfile(os.path.join(template_dir, 'Makefile'), self.outdir, force=True)
205207
except OSError as err:
206208
logger.warning(__("error writing file Makefile: %s"), err)
207209

0 commit comments

Comments
 (0)