mirror of
https://github.com/python/cpython.git
synced 2024-12-01 13:55:45 +08:00
bpo-46483: change PurePath.__class_getitem__
to return GenericAlias
(GH-30822)
This commit is contained in:
parent
c7f20f1cc8
commit
1f715d5bd3
@ -12,6 +12,7 @@ from errno import ENOENT, ENOTDIR, EBADF, ELOOP
|
||||
from operator import attrgetter
|
||||
from stat import S_ISDIR, S_ISLNK, S_ISREG, S_ISSOCK, S_ISBLK, S_ISCHR, S_ISFIFO
|
||||
from urllib.parse import quote_from_bytes as urlquote_from_bytes
|
||||
from types import GenericAlias
|
||||
|
||||
|
||||
__all__ = [
|
||||
@ -690,8 +691,7 @@ class PurePath(object):
|
||||
return NotImplemented
|
||||
return self._cparts >= other._cparts
|
||||
|
||||
def __class_getitem__(cls, type):
|
||||
return cls
|
||||
__class_getitem__ = classmethod(GenericAlias)
|
||||
|
||||
drive = property(attrgetter('_drv'),
|
||||
doc="""The drive prefix (letter or UNC path), if any.""")
|
||||
|
@ -2429,13 +2429,19 @@ class _BasePathTest(object):
|
||||
def test_complex_symlinks_relative_dot_dot(self):
|
||||
self._check_complex_symlinks(os.path.join('dirA', '..'))
|
||||
|
||||
def test_class_getitem(self):
|
||||
from types import GenericAlias
|
||||
|
||||
alias = self.cls[str]
|
||||
self.assertIsInstance(alias, GenericAlias)
|
||||
self.assertIs(alias.__origin__, self.cls)
|
||||
self.assertEqual(alias.__args__, (str,))
|
||||
self.assertEqual(alias.__parameters__, ())
|
||||
|
||||
|
||||
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),
|
||||
|
@ -0,0 +1,2 @@
|
||||
Change :meth:`pathlib.PurePath.__class_getitem__` to return
|
||||
:class:`types.GenericAlias`.
|
Loading…
Reference in New Issue
Block a user