cpython/Lib
Miss Islington (bot) 5030e81ded
[3.12] gh-126565: Skip zipfile.Path.exists check in write mode (GH-126576) (#126643)
gh-126565: Skip `zipfile.Path.exists` check in write mode (GH-126576)

When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
(cherry picked from commit 160758a574)

Co-authored-by: Jan Hicken <janhicken@users.noreply.github.com>
2024-11-10 15:14:48 +00:00
..
__phello__
asyncio [3.12] gh-124594: Create and reuse the same context for the entire asyncio REPL session (GH-124595) (#124849) 2024-10-28 15:25:00 +01:00
collections [3.12] gh-117387 Remove hash mark from introductory text (GH-117409) (#gh- 2024-03-31 21:24:28 +00:00
concurrent [3.12] gh-125451: Fix deadlock in ProcessPoolExecutor shutdown (GH-125492) (#125599) 2024-10-16 14:03:32 -04:00
ctypes [3.12] gh-87969: Align docs and docstrings with implementation for ctypes' [w]string_at() (GH-25384) (GH-118046) 2024-04-19 13:23:26 +02:00
curses gh-60436: fix curses textbox backspace/del (#103783) 2023-04-26 22:54:07 +02:00
dbm
email [3.12] [CVE-2023-27043] gh-102988: Reject malformed addresses in email.parseaddr() (GH-111116) (#123766) 2024-09-06 12:46:16 +02:00
encodings
ensurepip [3.12] gh-122744: Bump bundled pip to 24.2 (#122747) 2024-08-06 18:50:14 +00:00
html gh-100210: Correct the comment link for unescaping HTML (#100212) 2023-02-19 11:18:12 +01:00
http [3.12] gh-123067: Fix quadratic complexity in parsing "-quoted cookie values with backslashes (GH-123075) (#123104) 2024-08-24 15:37:11 -07:00
idlelib [3.12] Fix idlelib typos (GH-125484) (#125488) 2024-10-14 21:34:38 +00:00
importlib [3.12] gh-125519: Improve traceback if importlib.reload() is called with a non-module object (GH-125520) (#125769) 2024-10-21 08:20:42 +00:00
json [3.12] gh-125660: Reject invalid unicode escapes for Python implementation of JSON decoder (GH-125683) (GH-125695) 2024-10-21 16:08:10 +03:00
lib2to3
logging [3.12] gh-124653: Relax (again) detection of queue API for logging handlers (GH-124897) (GH-125060) 2024-10-08 07:24:09 +01:00
msilib
multiprocessing [3.12] gh-117378: Fix multiprocessing forkserver preload sys.path inheritance. (GH-126538) (GH-126633) 2024-11-10 00:13:26 +00:00
pydoc_data Python 3.12.7 2024-10-01 04:05:46 +02:00
re [3.12] Fix syntax in generate_re_casefix.py (GH-122699) (#122722) 2024-08-06 06:42:27 +00:00
site-packages
sqlite3 [3.12] gh-118221: Always use the default row factory in sqlite3.iterdump() (#118223) (#118270) 2024-04-25 08:33:35 +00:00
test [3.12] gh-117378: Fix multiprocessing forkserver preload sys.path inheritance. (GH-126538) (GH-126633) 2024-11-10 00:13:26 +00:00
tkinter [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
tomllib
turtledemo [3.12] [3.13] gh-123370: Fix the canvas not clearing after running turtledemo.clock (gh-123457) (GH-125653) (#125656) 2024-10-17 17:09:05 +00:00
unittest [3.12] gh-124234: Improve docs for Mock.reset_mock (GH-124237) (#124592) 2024-09-26 12:24:27 +00:00
urllib [3.12] gh-85110: Preserve relative path in URL without netloc in urllib.parse.urlunsplit() (GH-123179) (#123188) 2024-09-06 15:48:23 +02:00
venv [3.12] gh-124651: Quote template strings in venv activation scripts (GH-124712) (GH-126185) 2024-10-31 18:09:20 +00:00
wsgiref bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
xml [3.12] gh-119577: Adjust DeprecationWarning when testing element truth values in Element tree (GH-119762) (#120190) 2024-08-06 17:20:06 +00:00
xmlrpc bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
zipfile [3.12] gh-126565: Skip zipfile.Path.exists check in write mode (GH-126576) (#126643) 2024-11-10 15:14:48 +00:00
zoneinfo [3.12] gh-106233: Fix stacklevel in zoneinfo.InvalidTZPathWarning (GH-106234) (GH-115081) 2024-02-06 13:26:39 +00:00
__future__.py
__hello__.py
_aix_support.py gh-96305: Fix AIX build by avoiding subprocess during bootstrap (#96429) 2023-02-02 12:30:49 -08:00
_collections_abc.py [3.12] gh-116938: Clarify documentation of dict and dict.update regarding the positional argument they accept (GH-125213) (#125337) 2024-10-11 23:23:54 +00:00
_compat_pickle.py
_compression.py
_markupbase.py
_osx_support.py [3.12] gh-102362: Fix macOS version number in result of sysconfig.get_platform() (GH-112942) (#113264) 2023-12-19 19:51:17 +01:00
_py_abc.py
_pydatetime.py Revert "[3.12] gh-120713: Normalize year with century for datetime.strftime (GH-120820) (GH-121145)" (GH-122409) 2024-07-29 21:55:12 +03:00
_pydecimal.py [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
_pyio.py [3.12] gh-95782: Fix io.BufferedReader.tell() etc. being able to return offsets < 0 (GH-99709) (GH-115599) 2024-02-17 14:56:00 +02:00
_pylong.py [3.12] gh-118164: Break a loop between _pydecimal and _pylong and optimize int to str conversion (GH-118483) (GH-118590) 2024-05-06 12:10:05 +03:00
_sitebuiltins.py
_strptime.py [3.12] gh-53203: Fix strptime() for %c, %x and %X formats on many locales (GH-125406) (GH-125454) (GH-125483) 2024-10-14 20:59:01 +00:00
_threading_local.py
_weakrefset.py
abc.py gh-87864: Use correct function definition syntax in the docs (#103312) 2023-04-11 16:50:25 +03:00
aifc.py
antigravity.py
argparse.py [3.12] gh-125355: Rewrite parse_intermixed_args() in argparse (GH-125356) (GH-125839) 2024-10-22 13:23:30 +00:00
ast.py [3.12] gh-112364: Correct unparsing of backslashes and quotes in ast.… (#115782) 2024-02-21 23:28:07 +00:00
base64.py [3.12] Clarify base64.a85encode docs: *wrapcols* doesn't count the newline (GH-119409) (GH-119482) 2024-05-28 16:55:43 +02:00
bdb.py [3.12] gh-125422: Don't set the caller's f_trace if it's botframe (GH-125427) (#125531) 2024-10-15 15:26:41 +00:00
bisect.py GH-102833: Mention the key function in the docstrings (GH-103009) 2023-03-25 02:19:20 -05:00
bz2.py
calendar.py [3.12] gh-120567: Clarify weekday return in calendar.monthrange docstring (GH-120570) (#120598) 2024-06-16 21:03:09 +00:00
cgi.py
cgitb.py
chunk.py
cmd.py
code.py [3.12] gh-122478: Remove internal frames from tracebacks in REPL (GH-122528) (GH-122816) 2024-08-23 09:27:03 +03:00
codecs.py [3.12] gh-50644: Forbid pickling of codecs streams (GH-109180) (#109231) 2023-10-02 16:55:52 +02:00
codeop.py [3.12] gh-111366: Correctly show custom syntax error messages in the codeop module functions (GH-111384). (#111517) 2023-10-30 19:53:01 +00:00
colorsys.py [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
compileall.py GH-84559: Deprecate fork being the multiprocessing default. (#100618) 2023-02-02 15:50:35 -08:00
configparser.py [3.12] gh-116957: configparser: Do post-process values after DuplicateOptionError (GH-116958) (GH-117013) 2024-03-19 18:18:50 +01:00
contextlib.py [3.12] gh-103791: handle BaseExceptionGroup in contextlib.suppress() (GH-111910) (#111955) 2023-11-10 14:00:48 +00:00
contextvars.py [3.12] gh-126451: Register contextvars.Context to collections.abc.Mapping (GH-126452) (#126519) 2024-11-06 22:37:37 +00:00
copy.py gh-100815: Normalize types module usage in copy module (#100816) 2023-01-07 21:29:53 +00:00
copyreg.py
cProfile.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 20:29:35 +00:00
crypt.py
csv.py gh-67230: add quoting rules to csv module (GH-29469) 2023-04-12 15:32:30 -07:00
dataclasses.py [3.12] gh-123935: Fix typo in _get_slots in dataclasses.py (GH-123941) (#123992) 2024-09-12 07:48:01 +00:00
datetime.py [3.12] gh-84976: Add back UTC to datetime.__all__ (GH-104920) (#106019) 2023-06-26 20:41:52 -07:00
decimal.py [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
difflib.py
dis.py [3.12] gh-108826: Document dis module CLI and rename _test function to main (#108827) (#110681) 2023-10-11 14:47:38 -06:00
doctest.py [3.12] gh-117692: Fix AttributeError in DocTestFinder on wrapped builtin_or_method (GH-117699) (#117708) 2024-04-10 14:17:15 +00:00
enum.py [3.12] gh-125259: Fix error notes removal in enum initialization (GH-125647) (GH-125953) 2024-10-25 16:03:52 -07:00
filecmp.py [3.12] gh-122400: Handle ValueError in filecmp (GH-122401) (GH-122442) 2024-07-30 09:07:06 +00:00
fileinput.py gh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (gh-102068) 2023-02-21 12:10:29 +09:00
fnmatch.py
fractions.py [3.12] gh-119189: Fix the power operator for Fraction (GH-119242) (GH-119835) 2024-07-16 10:44:05 +03:00
ftplib.py [3.12] gh-114241: Fix and improve the ftplib CLI (GH-114242) (GH-114404) 2024-01-21 20:48:12 +00:00
functools.py [3.12] Align functools.reduce() docstring with PEP-257 (GH-126045) (#126114) 2024-10-29 10:13:52 +01:00
genericpath.py gh-101196: Make isdir/isfile/exists faster on Windows (GH-101324) 2023-02-08 14:34:24 +00:00
getopt.py
getpass.py
gettext.py [3.12] gh-110519: Improve deprecation warning in the gettext module (GH-110520) (GH-110563) 2023-10-09 16:27:01 +02:00
glob.py [3.12] gh-79382: Fix recursive glob() with trailing "**" (GH-115134) (GH-115290) 2024-02-11 10:57:40 +00:00
graphlib.py
gzip.py [3.12] gh-108111: Flush gzip write buffer before seeking, fixing bad writes (GH-108341) (#108402) 2023-08-24 12:30:16 +02:00
hashlib.py gh-99108: Refactor _sha256 & _sha512 into _sha2. (#101924) 2023-02-15 22:08:20 -08:00
heapq.py
hmac.py [3.12] gh-112999: Replace the outdated "deprecated" directives with "versionchanged" (GH-113000) (GH-113019) 2023-12-12 17:20:51 +00:00
imaplib.py
imghdr.py
inspect.py [3.12] gh-70764: inspect.getclosurevars now identifies global variables with LOAD_GLOBAL (GH-120143) (#126460) 2024-11-06 00:12:08 +00:00
io.py gh-111356: io: Add missing documented objects to io.__all__ (GH-111370) 2023-11-10 07:37:19 +00:00
ipaddress.py [3.12] gh-124217, ipaddress: Add RFC 9637 reserved IPv6 block 3fff::/20 (GH-124240) (#124283) 2024-09-20 14:20:27 +02:00
keyword.py gh-103763: Implement PEP 695 (#103764) 2023-05-15 20:36:23 -07:00
linecache.py [3.12] gh-122170: Handle ValueError raised by os.stat() in linecache (GH-122176) (GH-122349) 2024-07-27 10:48:14 +00:00
locale.py [3.12] gh-91565: Replace bugs.python.org links with Devguide/GitHub ones (GH-91568) (GH-117890) 2024-04-15 12:59:34 +00:00
lzma.py
mailbox.py [3.12] gh-117467: Add preserving of mailbox owner on flush (GH-117510) (GH-117537) 2024-04-04 10:55:42 +00:00
mailcap.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
mimetypes.py [3.12] gh-83505: Add markdown mimetype mapping (GH-17995) (#118594) 2024-08-06 10:05:18 -04:00
modulefinder.py
netrc.py
nntplib.py
ntpath.py gh-118263: Add additional arguments to path_t (Argument Clinic type) in posixmodule (GH-119608) 2024-05-28 11:13:01 +01:00
nturl2path.py [3.12] GH-126212: Fix removal of slashes in file URIs on Windows (GH-126214) (#126591) 2024-11-08 17:21:42 +00:00
numbers.py
opcode.py gh-103865: add monitoring support to LOAD_SUPER_ATTR (#103866) 2023-05-16 10:29:00 -06:00
operator.py
optparse.py
os.py [3.12] GH-89727: Fix FD leak on os.fwalk() generator finalization. (GH-119766) (#119768) 2024-05-30 05:30:37 +01:00
pathlib.py [3.12] GH-125069: Fix inconsistent joining in WindowsPath(PosixPath(...)) (GH-125156) (#125410) 2024-10-13 18:18:41 +00:00
pdb.py [3.12] gh-125884: Support breakpoint on functions with annotations (G… (#125903) 2024-10-23 22:36:40 +00:00
pickle.py [3.12] gh-126489: Do not call persistent_id() for a persistent id in Python pickle (GH-126490) (GH-126516) 2024-11-06 21:11:37 +00:00
pickletools.py [3.12] gh-115146: Fix typo in pickletools.py documentation (GH-115148) (GH-115155) 2024-02-08 08:30:31 +00:00
pipes.py
pkgutil.py gh-97850: Deprecate find_loader and get_loader in pkgutil (GH-98520) 2023-05-03 16:11:54 -07:00
platform.py [3.12] gh-91565: Replace bugs.python.org links with Devguide/GitHub ones (GH-91568) (GH-117890) 2024-04-15 12:59:34 +00:00
plistlib.py gh-101992: update pstlib module documentation (#102133) 2023-03-04 13:35:25 -08:00
poplib.py
posixpath.py gh-118263: Add additional arguments to path_t (Argument Clinic type) in posixmodule (GH-119608) 2024-05-28 11:13:01 +01:00
pprint.py [3.12] [pprint]: Add docstring about PrettyPrinter.underscore_numbers parameter (GH-112963) (#113053) 2023-12-13 12:38:07 +00:00
profile.py gh-103935: Use io.open_code() when executing code in trace and profile modules (GH-103947) 2023-04-27 20:29:35 +00:00
pstats.py [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
pty.py gh-96522: Fix deadlock in pty.spawn (#96639) 2023-05-19 13:22:43 +00:00
py_compile.py
pyclbr.py
pydoc.py [3.12] bpo-37755: Use configured output in pydoc instead of pager (GH-15105) (GH-120262) 2024-06-08 09:46:25 +00:00
queue.py
quopri.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
random.py [3.12] gh-109653: Reduce the import time of random by 60% (GH-110221) (#110247) 2023-10-02 23:31:55 +00:00
reprlib.py [3.12] gh-113570: reprlib.repr does not use builtin __repr__ for reshadowed builtins (GH-113577) (GH-125655) 2024-10-17 16:59:01 +00:00
rlcompleter.py
runpy.py [3.12] gh-99437: runpy: decode path-like objects before setting globals (#114838) 2024-08-12 11:22:13 +03:00
sched.py [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
secrets.py
selectors.py [3.12] gh-110038: KqueueSelector must count all read/write events (GH-110039) (#110043) 2023-10-02 17:42:55 +02:00
shelve.py
shlex.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
shutil.py [3.12] GH-89727: Fix shutil.rmtree() recursion error on deep trees (GH-119808) (#119919) 2024-06-01 20:39:35 +01:00
signal.py [3.12] gh-112559: Avoid unnecessary conversion attempts to enum_klass in signal.py (GH-113040) (#113443) 2023-12-23 18:09:59 -08:00
site.py [3.12] GH-119496: accept UTF-8 BOM in .pth files (GH-119509) 2024-05-24 14:52:09 +00:00
smtplib.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
sndhdr.py
socket.py [3.12] gh-122133: Rework pure Python socketpair tests to avoid use of importlib.reload. (GH-122493) (GH-122505) 2024-07-31 09:23:10 -07:00
socketserver.py gh-103673: Add missing ForkingUnixStreamServer and ForkingUnixDatagramServer socketservers (#103674) 2023-04-24 22:35:52 +00:00
sre_compile.py
sre_constants.py
sre_parse.py
ssl.py [3.12] gh-79846: Make ssl.create_default_context() ignore invalid certificates (GH-91740) (#122769) 2024-08-09 12:55:36 -04:00
stat.py
statistics.py [3.12] gh-121905: Consistently use "floating-point" instead of "floating point" (GH-121907) (GH-122013) 2024-07-19 09:08:33 +00:00
string.py
stringprep.py
struct.py
subprocess.py [3.12] gh-90872: Fix subprocess.Popen.wait() for negative timeout (#116989) (#117002) 2024-03-19 14:15:05 +00:00
sunau.py
symtable.py [3.12] gh-119698: fix a special case in symtable.Class.get_methods (GH-121802) (#121910) 2024-07-17 22:32:29 +00:00
sysconfig.py gh-102515: Remove unused imports in the Lib/ directory (#102516) 2023-03-08 11:45:38 +00:00
tabnanny.py [3.12] gh-120495: Fix incorrect exception handling in Tab Nanny (GH-120498) (#120549) 2024-06-15 11:21:05 +00:00
tarfile.py [3.12] gh-121285: Remove backtracking when parsing tarfile headers (GH-121286) (GH-123543) 2024-08-31 22:35:24 +00:00
telnetlib.py [3.12] gh-118042: Fix error in Telnet.__del__ when __init__() was not called (GH-118274) 2024-04-26 08:53:54 +03:00
tempfile.py [3.12] gh-79325: Fix recursion error in TemporaryDirectory cleanup on Windows (GH-112762) (GH-112847) 2023-12-07 17:36:29 +00:00
textwrap.py
this.py
threading.py [3.12] gh-121474: Add threading.Barrier parties arg sanity check. (GH-121480) (GH-122443) 2024-07-30 09:12:11 +00:00
timeit.py [3.12] gh-105052:update timeit function's description (GH-105060) (#108534) 2023-08-27 16:15:01 +02:00
token.py gh-102856: Python tokenizer implementation for PEP 701 (#104323) 2023-05-21 01:03:02 +01:00
tokenize.py [3.12] gh-125008: Fix tokenize.untokenize roundtrip for \n{{ (GH-125013) (#125021) 2024-10-06 13:34:24 +00:00
trace.py [3.12] gh-103956: Fix trace output in case of missing source line (GH-103958) (GH-118832) 2024-05-09 12:51:03 +00:00
traceback.py [3.12] gh-113358: Fix rendering tracebacks with exceptions with a broken __getattr__ (GH-113359) (#114173) 2024-01-21 17:12:17 +00:00
tracemalloc.py
tty.py [3.12] gh-114328: tty cbreak mode should not alter ICRNL (GH-114335) (#114410) 2024-01-21 23:41:03 +00:00
turtle.py [3.12] Fix print usage in turtle doctests (GH-122940) (#122978) 2024-08-13 16:58:37 +00:00
types.py [3.12] gh-107576: Ensure __orig_bases__ are our own in get_original_bases (GH-107584) (#107592) 2023-08-03 17:07:43 +02:00
typing.py [3.12] gh-114053: Fix another edge case involving get_type_hints, PEP 695 and PEP 563 (GH-120272) (#121004) 2024-06-25 16:31:01 +00:00
uu.py gh-99889: Fix directory traversal security flaw in uu.decode() (#104096) 2023-05-09 16:01:58 +00:00
uuid.py gh-104396: uuid.py to skip platform check for emscripten and wasi (gh-104397) 2023-05-12 07:45:55 +09:00
warnings.py [3.12] gh-117535: Ignore made up file name "sys" for warnings (#118014) 2024-04-19 04:07:05 +00:00
wave.py [3.12] gh-105096: Reformat wave documentation (#105136) (#105138) 2023-05-31 12:04:21 +00:00
weakref.py
webbrowser.py [3.12] gh-123494: Improve documentation for `webbrowser` return types (GH-123495) (#123549) 2024-09-01 05:36:18 +00:00
xdrlib.py bpo-45975: Simplify some while-loops with walrus operator (GH-29347) 2022-11-26 14:33:25 -08:00
zipapp.py
zipimport.py [3.12] gh-121735: Fix module-adjacent references in zip files (gh-123037) (#124011) 2024-09-24 10:19:43 -07:00