mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
[3.14] gh-135276: Refresh zipfile.Path from zipp 3.23 (GH-135277) (#135278)
* gh-135276: Refresh `zipfile.Path` from zipp 3.23 (GH-135277)
Apply changes from zipp 3.23
(cherry picked from commit 8d6eb0c262)
Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
* Removed features slated for Python 3.15 only.
---------
Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
This commit is contained in:
parent
cf2209f5b9
commit
00f824dc5a
7 changed files with 29 additions and 19 deletions
|
|
@ -1,5 +1,5 @@
|
|||
import types
|
||||
import functools
|
||||
import types
|
||||
|
||||
from ._itertools import always_iterable
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,8 @@
|
|||
|
||||
from ._functools import compose
|
||||
from ._itertools import consume
|
||||
|
||||
from ._support import import_or_skip
|
||||
|
||||
|
||||
big_o = import_or_skip('big_o')
|
||||
pytest = import_or_skip('pytest')
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import contextlib
|
||||
import io
|
||||
import itertools
|
||||
import contextlib
|
||||
import pathlib
|
||||
import pickle
|
||||
import stat
|
||||
|
|
@ -9,12 +9,11 @@
|
|||
import zipfile
|
||||
import zipfile._path
|
||||
|
||||
from test.support.os_helper import temp_dir, FakePath
|
||||
from test.support.os_helper import FakePath, temp_dir
|
||||
|
||||
from ._functools import compose
|
||||
from ._itertools import Counter
|
||||
|
||||
from ._test_params import parameterize, Invoked
|
||||
from ._test_params import Invoked, parameterize
|
||||
|
||||
|
||||
class jaraco:
|
||||
|
|
@ -193,10 +192,10 @@ def test_encoding_warnings(self, alpharep):
|
|||
"""EncodingWarning must blame the read_text and open calls."""
|
||||
assert sys.flags.warn_default_encoding
|
||||
root = zipfile.Path(alpharep)
|
||||
with self.assertWarns(EncodingWarning) as wc:
|
||||
with self.assertWarns(EncodingWarning) as wc: # noqa: F821 (astral-sh/ruff#13296)
|
||||
root.joinpath("a.txt").read_text()
|
||||
assert __file__ == wc.filename
|
||||
with self.assertWarns(EncodingWarning) as wc:
|
||||
with self.assertWarns(EncodingWarning) as wc: # noqa: F821 (astral-sh/ruff#13296)
|
||||
root.joinpath("a.txt").open("r").close()
|
||||
assert __file__ == wc.filename
|
||||
|
||||
|
|
@ -364,6 +363,17 @@ def test_root_name(self, alpharep):
|
|||
root = zipfile.Path(alpharep)
|
||||
assert root.name == 'alpharep.zip' == root.filename.name
|
||||
|
||||
@pass_alpharep
|
||||
def test_root_on_disk(self, alpharep):
|
||||
"""
|
||||
The name/stem of the root should match the zipfile on disk.
|
||||
|
||||
This condition must hold across platforms.
|
||||
"""
|
||||
root = zipfile.Path(self.zipfile_ondisk(alpharep))
|
||||
assert root.name == 'alpharep.zip' == root.filename.name
|
||||
assert root.stem == 'alpharep' == root.filename.stem
|
||||
|
||||
@pass_alpharep
|
||||
def test_suffix(self, alpharep):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
from . import test_path
|
||||
|
||||
|
||||
__name__ == '__main__' and test_path.build_alpharep_fixture().extractall('alpharep')
|
||||
|
|
|
|||
|
|
@ -7,19 +7,18 @@
|
|||
for more detail.
|
||||
"""
|
||||
|
||||
import io
|
||||
import posixpath
|
||||
import zipfile
|
||||
import itertools
|
||||
import contextlib
|
||||
import io
|
||||
import itertools
|
||||
import pathlib
|
||||
import posixpath
|
||||
import re
|
||||
import stat
|
||||
import sys
|
||||
import zipfile
|
||||
|
||||
from .glob import Translator
|
||||
|
||||
|
||||
__all__ = ['Path']
|
||||
|
||||
|
||||
|
|
@ -192,11 +191,13 @@ def _name_set(self):
|
|||
self.__lookup = super()._name_set()
|
||||
return self.__lookup
|
||||
|
||||
|
||||
def _extract_text_encoding(encoding=None, *args, **kwargs):
|
||||
# compute stack level so that the caller of the caller sees any warning.
|
||||
is_pypy = sys.implementation.name == 'pypy'
|
||||
stack_level = 3 + is_pypy
|
||||
# PyPy no longer special cased after 7.3.19 (or maybe 7.3.18)
|
||||
# See jaraco/zipp#143
|
||||
is_old_pypi = is_pypy and sys.pypy_version_info < (7, 3, 19)
|
||||
stack_level = 3 + is_old_pypi
|
||||
return io.text_encoding(encoding, stack_level), args, kwargs
|
||||
|
||||
|
||||
|
|
@ -351,7 +352,7 @@ def open(self, mode='r', *args, pwd=None, **kwargs):
|
|||
return io.TextIOWrapper(stream, encoding, *args, **kwargs)
|
||||
|
||||
def _base(self):
|
||||
return pathlib.PurePosixPath(self.at or self.root.filename)
|
||||
return pathlib.PurePosixPath(self.at) if self.at else self.filename
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
|
||||
_default_seps = os.sep + str(os.altsep) * bool(os.altsep)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
Backported bugfixes in zipfile.Path from zipp 3.23. Fixed
|
||||
``.name``, ``.stem`` and other basename-based properties on Windows when
|
||||
working with a zipfile on disk.
|
||||
Loading…
Add table
Add a link
Reference in a new issue