aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/pathlib/_abc.py
diff options
context:
space:
mode:
authorBarney Gale <barney.gale@gmail.com>2024-05-05 20:57:19 +0100
committerGitHub <noreply@github.com>2024-05-05 20:57:19 +0100
commitd8d94911e2393bd30ca58a32b33d792307fdc00d (patch)
tree102b598fe0bac8fe52c3cf25be48e78bf945e2a9 /Lib/pathlib/_abc.py
parentf27f8c790af1233d499b795af1c0d1b36aaecaf5 (diff)
downloadcpython-d8d94911e2393bd30ca58a32b33d792307fdc00d.tar.gz
cpython-d8d94911e2393bd30ca58a32b33d792307fdc00d.zip
Move pathlib implementation out of `__init__.py` (#118582)
Use the `__init__.py` file only for imports that define the API, following the example of asyncio.
Diffstat (limited to 'Lib/pathlib/_abc.py')
-rw-r--r--Lib/pathlib/_abc.py32
1 files changed, 5 insertions, 27 deletions
diff --git a/Lib/pathlib/_abc.py b/Lib/pathlib/_abc.py
index 591df443be0..9ef016a060f 100644
--- a/Lib/pathlib/_abc.py
+++ b/Lib/pathlib/_abc.py
@@ -12,11 +12,13 @@ resemble pathlib's PurePath and Path respectively.
"""
import functools
-import operator
from errno import ENOENT, ENOTDIR, EBADF, ELOOP, EINVAL
from stat import S_ISDIR, S_ISLNK, S_ISREG, S_ISSOCK, S_ISBLK, S_ISCHR, S_ISFIFO
-from . import _glob
+from ._glob import Globber, no_recurse_symlinks
+
+
+__all__ = ["UnsupportedOperation"]
#
# Internals
@@ -44,30 +46,6 @@ def _is_case_sensitive(parser):
return parser.normcase('Aa') == 'Aa'
-class Globber(_glob.Globber):
- lstat = operator.methodcaller('lstat')
- add_slash = operator.methodcaller('joinpath', '')
-
- @staticmethod
- def scandir(path):
- # Emulate os.scandir(), which returns an object that can be used as a
- # context manager. This method is called by walk() and glob().
- from contextlib import nullcontext
- return nullcontext(path.iterdir())
-
- @staticmethod
- def concat_path(path, text):
- """Appends text to the given path.
- """
- return path.with_segments(path._raw_path + text)
-
- @staticmethod
- def parse_entry(entry):
- """Returns the path of an entry yielded from scandir().
- """
- return entry
-
-
class UnsupportedOperation(NotImplementedError):
"""An exception that is raised when an unsupported operation is called on
a path object.
@@ -693,7 +671,7 @@ class PathBase(PurePathBase):
# know the case sensitivity of the underlying filesystem, so we
# must use scandir() for everything, including non-wildcard parts.
case_pedantic = True
- recursive = True if recurse_symlinks else _glob.no_recurse_symlinks
+ recursive = True if recurse_symlinks else no_recurse_symlinks
globber = self._globber(self.parser.sep, case_sensitive, case_pedantic, recursive)
return globber.selector(parts)