mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Use pathlib version of `relative_path
`
This commit is contained in:
parent
230ccf2a44
commit
d374a1c30d
@ -20,7 +20,6 @@ from docutils import nodes
|
|||||||
from docutils.core import Publisher
|
from docutils.core import Publisher
|
||||||
from docutils.frontend import OptionParser
|
from docutils.frontend import OptionParser
|
||||||
from docutils.io import DocTreeInput, StringOutput
|
from docutils.io import DocTreeInput, StringOutput
|
||||||
from docutils.utils import relative_path
|
|
||||||
|
|
||||||
from sphinx import __display_version__, package_dir
|
from sphinx import __display_version__, package_dir
|
||||||
from sphinx import version_info as sphinx_version
|
from sphinx import version_info as sphinx_version
|
||||||
@ -56,6 +55,7 @@ from sphinx.util.matching import DOTFILES, Matcher, patmatch
|
|||||||
from sphinx.util.osutil import (
|
from sphinx.util.osutil import (
|
||||||
SEP,
|
SEP,
|
||||||
_last_modified_time,
|
_last_modified_time,
|
||||||
|
_relative_path,
|
||||||
copyfile,
|
copyfile,
|
||||||
ensuredir,
|
ensuredir,
|
||||||
relative_uri,
|
relative_uri,
|
||||||
@ -795,7 +795,7 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
|
|
||||||
def copy_download_files(self) -> None:
|
def copy_download_files(self) -> None:
|
||||||
def to_relpath(f: str) -> str:
|
def to_relpath(f: str) -> str:
|
||||||
return relative_path(self.srcdir, f)
|
return _relative_path(Path(f), self.srcdir).as_posix()
|
||||||
|
|
||||||
# copy downloadable files
|
# copy downloadable files
|
||||||
if self.env.dlfiles:
|
if self.env.dlfiles:
|
||||||
|
@ -5,10 +5,10 @@ from __future__ import annotations
|
|||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
from pathlib import Path
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
from docutils.utils import relative_path
|
|
||||||
|
|
||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
from sphinx.environment.collectors import EnvironmentCollector
|
from sphinx.environment.collectors import EnvironmentCollector
|
||||||
@ -16,6 +16,7 @@ from sphinx.locale import __
|
|||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
from sphinx.util.i18n import get_image_filename_for_language, search_image_for_language
|
from sphinx.util.i18n import get_image_filename_for_language, search_image_for_language
|
||||||
from sphinx.util.images import guess_mimetype
|
from sphinx.util.images import guess_mimetype
|
||||||
|
from sphinx.util.osutil import _relative_path
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from docutils.nodes import Node
|
from docutils.nodes import Node
|
||||||
@ -110,14 +111,14 @@ class ImageCollector(EnvironmentCollector):
|
|||||||
) -> None:
|
) -> None:
|
||||||
globbed: dict[str, list[str]] = {}
|
globbed: dict[str, list[str]] = {}
|
||||||
for filename in glob(imgpath):
|
for filename in glob(imgpath):
|
||||||
new_imgpath = relative_path(os.path.join(env.srcdir, 'dummy'), filename)
|
new_imgpath = _relative_path(Path(filename), env.srcdir)
|
||||||
try:
|
try:
|
||||||
mimetype = guess_mimetype(filename)
|
mimetype = guess_mimetype(filename)
|
||||||
if mimetype is None:
|
if mimetype is None:
|
||||||
basename, suffix = os.path.splitext(filename)
|
basename, suffix = os.path.splitext(filename)
|
||||||
mimetype = 'image/x-' + suffix[1:]
|
mimetype = 'image/x-' + suffix[1:]
|
||||||
if mimetype not in candidates:
|
if mimetype not in candidates:
|
||||||
globbed.setdefault(mimetype, []).append(new_imgpath)
|
globbed.setdefault(mimetype, []).append(new_imgpath.as_posix())
|
||||||
except OSError as err:
|
except OSError as err:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
__('image file %s not readable: %s'),
|
__('image file %s not readable: %s'),
|
||||||
|
@ -2,14 +2,11 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import os
|
from pathlib import Path
|
||||||
import os.path
|
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from docutils.utils import relative_path
|
|
||||||
|
|
||||||
from sphinx.environment.collectors import EnvironmentCollector
|
from sphinx.environment.collectors import EnvironmentCollector
|
||||||
from sphinx.util.osutil import fs_encoding
|
from sphinx.util.osutil import _relative_path, fs_encoding
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
@ -38,8 +35,7 @@ class DependenciesCollector(EnvironmentCollector):
|
|||||||
|
|
||||||
def process_doc(self, app: Sphinx, doctree: nodes.document) -> None:
|
def process_doc(self, app: Sphinx, doctree: nodes.document) -> None:
|
||||||
"""Process docutils-generated dependency info."""
|
"""Process docutils-generated dependency info."""
|
||||||
cwd = os.getcwd()
|
cwd = Path.cwd()
|
||||||
frompath = os.path.join(os.path.normpath(app.srcdir), 'dummy')
|
|
||||||
deps = doctree.settings.record_dependencies
|
deps = doctree.settings.record_dependencies
|
||||||
if not deps:
|
if not deps:
|
||||||
return
|
return
|
||||||
@ -48,7 +44,7 @@ class DependenciesCollector(EnvironmentCollector):
|
|||||||
# one relative to the srcdir
|
# one relative to the srcdir
|
||||||
if isinstance(dep, bytes):
|
if isinstance(dep, bytes):
|
||||||
dep = dep.decode(fs_encoding)
|
dep = dep.decode(fs_encoding)
|
||||||
relpath = relative_path(frompath, os.path.normpath(os.path.join(cwd, dep)))
|
relpath = _relative_path(cwd / dep, app.srcdir)
|
||||||
app.env.note_dependency(relpath)
|
app.env.note_dependency(relpath)
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,12 +2,11 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import posixpath
|
|
||||||
import re
|
import re
|
||||||
|
from pathlib import Path
|
||||||
from typing import TYPE_CHECKING, cast
|
from typing import TYPE_CHECKING, cast
|
||||||
|
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
from docutils.utils import relative_path
|
|
||||||
|
|
||||||
from sphinx.addnodes import pending_xref
|
from sphinx.addnodes import pending_xref
|
||||||
from sphinx.deprecation import _deprecation_warning
|
from sphinx.deprecation import _deprecation_warning
|
||||||
@ -16,6 +15,7 @@ from sphinx.ext.intersphinx._shared import LOGGER, InventoryAdapter
|
|||||||
from sphinx.locale import _, __
|
from sphinx.locale import _, __
|
||||||
from sphinx.transforms.post_transforms import ReferencesResolver
|
from sphinx.transforms.post_transforms import ReferencesResolver
|
||||||
from sphinx.util.docutils import CustomReSTDispatcher, SphinxRole
|
from sphinx.util.docutils import CustomReSTDispatcher, SphinxRole
|
||||||
|
from sphinx.util.osutil import _relative_path
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
@ -42,7 +42,7 @@ def _create_element_from_result(
|
|||||||
proj, version, uri, dispname = data
|
proj, version, uri, dispname = data
|
||||||
if '://' not in uri and node.get('refdoc'):
|
if '://' not in uri and node.get('refdoc'):
|
||||||
# get correct path in case of subdirectories
|
# get correct path in case of subdirectories
|
||||||
uri = posixpath.join(relative_path(node['refdoc'], '.'), uri)
|
uri = (_relative_path(Path(), Path(node['refdoc']).parent) / uri).as_posix()
|
||||||
if version:
|
if version:
|
||||||
reftitle = _('(in %s v%s)') % (proj, version)
|
reftitle = _('(in %s v%s)') % (proj, version)
|
||||||
else:
|
else:
|
||||||
|
@ -7,11 +7,9 @@ import posixpath
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from docutils.utils import relative_path
|
|
||||||
|
|
||||||
from sphinx.locale import __
|
from sphinx.locale import __
|
||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
from sphinx.util.osutil import copyfile, ensuredir
|
from sphinx.util.osutil import _relative_path, copyfile, ensuredir
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
@ -125,7 +123,8 @@ def copy_asset(
|
|||||||
:param onerror: The error handler.
|
:param onerror: The error handler.
|
||||||
:param bool force: Overwrite the destination file even if it exists.
|
:param bool force: Overwrite the destination file even if it exists.
|
||||||
"""
|
"""
|
||||||
if not os.path.exists(source):
|
source = Path(source)
|
||||||
|
if not source.exists():
|
||||||
return
|
return
|
||||||
|
|
||||||
if renderer is None:
|
if renderer is None:
|
||||||
@ -134,14 +133,14 @@ def copy_asset(
|
|||||||
renderer = SphinxRenderer()
|
renderer = SphinxRenderer()
|
||||||
|
|
||||||
ensuredir(destination)
|
ensuredir(destination)
|
||||||
if os.path.isfile(source):
|
if source.is_file():
|
||||||
copy_asset_file(
|
copy_asset_file(
|
||||||
source, destination, context=context, renderer=renderer, force=force
|
source, destination, context=context, renderer=renderer, force=force
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
for root, dirs, files in os.walk(source, followlinks=True):
|
for root, dirs, files in os.walk(source, followlinks=True):
|
||||||
reldir = relative_path(source, root)
|
reldir = _relative_path(Path(root), source).as_posix()
|
||||||
for dir in dirs.copy():
|
for dir in dirs.copy():
|
||||||
if excluded(posixpath.join(reldir, dir)):
|
if excluded(posixpath.join(reldir, dir)):
|
||||||
dirs.remove(dir)
|
dirs.remove(dir)
|
||||||
|
Loading…
Reference in New Issue
Block a user