mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
Add pathlib._abc.PathModuleBase (#113893)
Path modules provide a subset of the `os.path` API, specifically those functions needed to provide `PurePathBase` functionality. Each `PurePathBase` subclass references its path module via a `pathmod` class attribute. This commit adds a new `PathModuleBase` class, which provides abstract methods that unconditionally raise `UnsupportedOperation`. An instance of this class is assigned to `PurePathBase.pathmod`, replacing `posixpath`. As a result, `PurePathBase` is no longer POSIX-y by default, and all its methods raise `UnsupportedOperation` courtesy of `pathmod`. Users who subclass `PurePathBase` or `PathBase` should choose the path syntax by setting `pathmod` to `posixpath`, `ntpath`, `os.path`, or their own subclass of `PathModuleBase`, as circumstances demand.
This commit is contained in:
parent
c2808431b3
commit
ca6cf56330
4 changed files with 182 additions and 59 deletions
|
|
@ -1151,6 +1151,7 @@ def tempdir(self):
|
|||
|
||||
def test_matches_pathbase_api(self):
|
||||
our_names = {name for name in dir(self.cls) if name[0] != '_'}
|
||||
our_names.remove('is_reserved') # only present in PurePath
|
||||
path_names = {name for name in dir(pathlib._abc.PathBase) if name[0] != '_'}
|
||||
self.assertEqual(our_names, path_names)
|
||||
for attr_name in our_names:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue