diff options
author | Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com> | 2019-12-08 20:31:15 (GMT) |
---|---|---|
committer | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-12-08 20:31:15 (GMT) |
commit | 526606baf76e7a5309bb00f3bfaefa861a2014ba (patch) | |
tree | a08b64df10f2a555fbc2c45be3849750fbbb9d52 | |
parent | cd90a52983db34896a6335a572d55bdda274778f (diff) | |
download | cpython-526606baf76e7a5309bb00f3bfaefa861a2014ba.zip cpython-526606baf76e7a5309bb00f3bfaefa861a2014ba.tar.gz cpython-526606baf76e7a5309bb00f3bfaefa861a2014ba.tar.bz2 |
bpo-38994: Implement __class_getitem__ for PathLike (GH-17498)
https://bugs.python.org/issue38994
-rw-r--r-- | Lib/os.py | 3 | ||||
-rw-r--r-- | Lib/pathlib.py | 3 | ||||
-rw-r--r-- | Lib/test/test_os.py | 3 | ||||
-rw-r--r-- | Lib/test/test_pathlib.py | 3 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-12-07-18-58-44.bpo-38994.IJYhz_.rst | 1 |
5 files changed, 13 insertions, 0 deletions
@@ -1072,6 +1072,9 @@ class PathLike(abc.ABC): def __subclasshook__(cls, subclass): return hasattr(subclass, '__fspath__') + def __class_getitem__(cls, type): + return cls + if name == 'nt': class _AddedDllDirectory: diff --git a/Lib/pathlib.py b/Lib/pathlib.py index d70fde0..f0537cf 100644 --- a/Lib/pathlib.py +++ b/Lib/pathlib.py @@ -777,6 +777,9 @@ class PurePath(object): return NotImplemented return self._cparts >= other._cparts + def __class_getitem__(cls, type): + return cls + drive = property(attrgetter('_drv'), doc="""The drive prefix (letter or UNC path), if any.""") diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index bf40cb1..f44ddba 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -4048,6 +4048,9 @@ class TestPEP519(unittest.TestCase): self.assertRaises(ZeroDivisionError, self.fspath, FakePath(ZeroDivisionError())) + def test_pathlike_class_getitem(self): + self.assertIs(os.PathLike[bytes], os.PathLike) + class TimesTests(unittest.TestCase): def test_times(self): diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 058a201..b8e7fcc 100644 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -2217,6 +2217,9 @@ class _BasePathTest(object): class PathTest(_BasePathTest, unittest.TestCase): cls = pathlib.Path + def test_class_getitem(self): + self.assertIs(self.cls[str], self.cls) + def test_concrete_class(self): p = self.cls('a') self.assertIs(type(p), diff --git a/Misc/NEWS.d/next/Library/2019-12-07-18-58-44.bpo-38994.IJYhz_.rst b/Misc/NEWS.d/next/Library/2019-12-07-18-58-44.bpo-38994.IJYhz_.rst new file mode 100644 index 0000000..b9cb417 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-12-07-18-58-44.bpo-38994.IJYhz_.rst @@ -0,0 +1 @@ +Implement ``__class_getitem__`` for ``os.PathLike``, ``pathlib.Path`` |