Remove `sys.intern(str(x))` calls when normalizing a path in pathlib. This
speeds up `str(Path('foo/bar'))` by about 10%.
elif len(drv_parts) == 6:
# e.g. //?/unc/server/share
root = sep
- parsed = [sys.intern(str(x)) for x in rel.split(sep) if x and x != '.']
- return drv, root, parsed
+ return drv, root, [x for x in rel.split(sep) if x and x != '.']
@property
def _raw_path(self):
# Special case for the empty path.
self._check_str('.', ('',))
- def test_parts_interning(self):
- P = self.cls
- p = P('/usr/bin/foo')
- q = P('/usr/local/bin')
- # 'usr'
- self.assertIs(p.parts[1], q.parts[1])
- # 'bin'
- self.assertIs(p.parts[2], q.parts[3])
-
def test_join_nested(self):
P = self.cls
p = P('a/b').joinpath(P('c'))
--- /dev/null
+Speed up normalization of :class:`pathlib.PurePath` and
+:class:`~pathlib.Path` objects by not interning string parts.