cpython/Lib
Shantanu 2124a3ddcc
gh-109653: Improve import time of importlib.metadata / email.utils (#114664)
My criterion for delayed imports is that they're only worth it if the
majority of users of the module would benefit from it, otherwise you're
just moving latency around unpredictably.

mktime_tz is not used anywhere in the standard library and grep.app
indicates it's not got much use in the ecosystem either.

Distribution.files is not nearly as widely used as other
importlib.metadata APIs, so we defer the csv import.

Before:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      65.1 ms ±   0.5 ms    [User: 55.3 ms, System: 9.8 ms]
  Range (min … max):    64.4 ms …  66.4 ms    44 runs
```

After:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      62.0 ms ±   0.3 ms    [User: 52.5 ms, System: 9.6 ms]
  Range (min … max):    61.3 ms …  62.8 ms    46 runs
```

for about a 3ms saving with warm disk cache, maybe 7-11ms with cold disk
cache.
2024-01-29 01:30:22 -08:00
..
__phello__
asyncio gh-75128: Ignore EADDRNOTAVAIL error in asyncio.BaseEventLoop.create_server() (GH-114420) 2024-01-22 18:40:35 +02:00
collections gh-110275: Named tuple's __replace__() now raises TypeError for invalid arguments (GH-110299) 2023-12-04 13:30:32 +02:00
concurrent Simplify concurrent.futures.process code by using itertools.batched() (GH-114221) 2024-01-27 10:29:38 +02:00
ctypes gh-114257: Ignore the FileNotFound error in ctypes.util._is_elf() (GH-114394) 2024-01-22 17:15:29 +00:00
curses
dbm
email gh-109653: Improve import time of importlib.metadata / email.utils (#114664) 2024-01-29 01:30:22 -08:00
encodings
ensurepip gh-113246: Updated bundled pip to 23.3.2 (gh-113249) 2023-12-18 10:21:46 +00:00
html
http gh-113199: Make read1() and readline() of HTTPResponse close IO after reading all data (GH-113200) 2023-12-18 22:17:16 +02:00
idlelib gh-96905: In IDLE code, stop redefining built-ins 'dict' and 'object' (#114227) 2024-01-18 04:39:12 +00:00
importlib gh-109653: Improve import time of importlib.metadata / email.utils (#114664) 2024-01-29 01:30:22 -08:00
json gh-58032: Do not use argparse.FileType in module CLIs and scripts (GH-113649) 2024-01-10 15:07:19 +02:00
logging gh-114494: Change logging docstring to bool for exec_info (GH=114558) 2024-01-26 21:48:22 +02:00
multiprocessing gh-101225: Increase the socket backlog when creating a multiprocessing.connection.Listener (#113567) 2024-01-13 10:48:33 +01:00
pathlib GH-79634: Speed up pathlib globbing by removing joinpath() call. (#114623) 2024-01-27 19:59:51 +00:00
pydoc_data Python 3.13.0a3 2024-01-17 13:14:40 +01:00
re GH-83162: Rename re.error for better clarity. (#101677) 2023-12-11 15:45:08 -05:00
site-packages
sqlite3 gh-108364: In sqlite3, disable foreign keys before dumping SQL schema (#113957) 2024-01-12 10:50:37 +01:00
sysconfig gh-103708: Make directory layout in sysconfig implementation configurable (#103709) 2023-12-29 17:55:17 +00:00
test gh-55664: Add warning when creating a type using a namespace dictionary with non-string keys. (GH-105338) 2024-01-29 01:05:29 +02:00
tkinter gh-110345: show Tcl/Tk patchlevel in tkinter._test() (GH-110350) 2024-01-18 17:46:58 +02:00
tomllib
turtledemo gh-111092: Make turtledemo run without default root enabled (#111093) 2023-10-19 23:58:41 -04:00
unittest GH-113661: unittest runner: Don't exit 5 if tests were skipped (#113856) 2024-01-09 19:50:01 +00:00
urllib gh-91539: Small performance improvement of urrlib.request.getproxies_environment() (#108771) 2024-01-15 15:45:01 -08:00
venv gh-89427: Provide the original prompt value for VIRTUAL_ENV_PROMPT (GH-106726) 2024-01-23 08:53:04 +00:00
wsgiref gh-111768: Add wsgiref.util.is_hop_by_hop to __all__ (#111770) 2023-11-08 15:29:47 +00:00
xml gh-101438: Avoid reference cycle in ElementTree.iterparse. (GH-114269) 2024-01-23 20:14:46 +00:00
xmlrpc xmlrpc.client uses datetime.datetime.isoformat() (#105741) 2023-06-14 17:00:40 +02:00
zipfile gh-113971: Make zipfile.ZipInfo._compresslevel public as .compress_level (#113969) 2024-01-12 20:15:05 +00:00
zoneinfo bpo-42663: Fix parsing TZ strings in zoneinfo module (GH-23825) 2023-10-14 23:24:33 +03:00
__future__.py
__hello__.py
_aix_support.py
_collections_abc.py
_compat_pickle.py gh-75552: Remove deprecated tkinter.tix module (GH-104902) 2023-05-27 12:34:19 -05:00
_compression.py
_markupbase.py
_opcode_metadata.py GH-111485: Generate instruction and uop metadata (GH-113287) 2023-12-20 14:27:25 +00:00
_osx_support.py gh-102362: Fix macOS version number in result of sysconfig.get_platform() (GH-112942) 2023-12-18 18:51:58 -05:00
_py_abc.py
_pydatetime.py gh-112451: Prohibit subclassing of datetime.timezone. (#114190) 2024-01-26 09:33:13 +01:00
_pydecimal.py
_pyio.py gh-80109: Fix io.TextIOWrapper dropping the internal buffer during write() (GH-22535) 2024-01-08 12:33:34 +02:00
_pylong.py
_sitebuiltins.py
_strptime.py bpo-36959: Fix error messages for invalid ISO format string in _strptime() (GH-13408) 2023-12-26 19:26:17 +00:00
_threading_local.py
_weakrefset.py
abc.py
antigravity.py
argparse.py gh-109653: Defer importing warnings in several modules (#110286) 2023-10-04 06:09:43 +01:00
ast.py Clean up backslash avoiding code in ast, fix typo (#113605) 2024-01-16 11:24:25 -08:00
base64.py gh-61199: Remove superfluous global statements from base64._b32{en,de}code()* (GH-111785) 2023-11-07 16:32:44 -06:00
bdb.py gh-80675: Set f_trace_lines = True on all frames upon pdb.set_trace() (#110881) 2023-11-04 19:59:36 +00:00
bisect.py
bz2.py
calendar.py gh-109653: Defer importing warnings in several modules (#110286) 2023-10-04 06:09:43 +01:00
cmd.py gh-52161: Enhance Cmd support for docstrings (#110987) 2024-01-03 19:37:34 +00:00
code.py GH-102895 Add an option local_exit in code.interact to block exit() from terminating the whole process (GH-102896) 2023-10-18 11:36:43 -07:00
codecs.py gh-66143: Allow copying and pickling of CodecInfo object (GH-109235) 2023-09-29 20:07:09 +03:00
codeop.py gh-111366: Correctly show custom syntax error messages in the codeop module functions (#111384) 2023-10-30 19:24:21 +00:00
colorsys.py gh-106498: Revert incorrect colorsys.rgb_to_hls change (#106627) 2023-07-11 11:07:20 -04:00
compileall.py gh-105931: Fix surprising compileall stripdir behaviour (GH-108671) 2023-10-23 13:55:39 +00:00
configparser.py Fix typo in configparser module docstring (#105652) 2023-06-11 15:06:42 +01:00
contextlib.py gh-103791: handle BaseExceptionGroup in contextlib.suppress() (#111910) 2023-11-10 13:32:36 +00:00
contextvars.py
copy.py gh-109868: Skip deepcopy memo check for empty memo (GH-109869) 2023-09-29 10:28:01 +03:00
copyreg.py
cProfile.py
csv.py gh-114123: Migrate docstring from _csv to csv (#114124) 2024-01-18 22:18:42 +00:00
dataclasses.py gh-114087: Speed up dataclasses._asdict_inner (#114088) 2024-01-18 09:03:20 -07:00
datetime.py
decimal.py
difflib.py
dis.py gh-58032: Do not use argparse.FileType in module CLIs and scripts (GH-113649) 2024-01-10 15:07:19 +02:00
doctest.py gh-61648: Detect line numbers of properties in doctests (GH-113161) 2023-12-15 15:24:30 +02:00
enum.py gh-114149: [Enum] revert #114160 and add more tuple-subclass tests (GH-114215) 2024-01-17 16:31:00 -08:00
filecmp.py
fileinput.py Use bool in fileinput.input() docstring and tests for the inplace argument (GH-111998) 2024-01-27 23:47:55 +02:00
fnmatch.py GH-72904: Add glob.translate() function (#106703) 2023-11-13 17:15:56 +00:00
fractions.py gh-114014: Update fractions.Fraction()'s rational parsing regex (#114015) 2024-01-13 12:02:39 +00:00
ftplib.py gh-114241: Fix and improve the ftplib CLI (GH-114242) 2024-01-21 22:16:45 +02:00
functools.py gh-109653: Avoid a top-level import of types in functools (#109804) 2023-09-24 17:18:27 +01:00
genericpath.py
getopt.py
getpass.py gh-76912: Raise OSError from any failure in getpass.getuser() (#29739) 2023-11-27 10:05:55 -08:00
gettext.py gh-88434: Emit deprecation warnings for non-integer numbers in gettext if translation not found (GH-110574) 2023-10-14 09:07:02 +03:00
glob.py GH-72904: Add glob.translate() function (#106703) 2023-11-13 17:15:56 +00:00
graphlib.py
gzip.py gh-112529: Implement GC for free-threaded builds (#114262) 2024-01-25 10:27:36 -08:00
hashlib.py
heapq.py
hmac.py gh-112999: Replace the outdated "deprecated" directives with "versionchanged" (GH-113000) 2023-12-12 18:31:04 +02:00
imaplib.py
inspect.py gh-112316: improve docs for inspect.signature and inspect.Signature (#112631) 2023-12-03 01:37:34 -08:00
io.py gh-111356: io: Add missing documented objects to io.__all__ (#111370) 2023-11-10 16:18:52 +09:00
ipaddress.py gh-109466: Add ipv6_mapped property to IPv4Address (#109467) 2023-11-05 16:50:31 +00:00
keyword.py
linecache.py gh-67224: Show source lines in tracebacks when using the -c option when running Python (#111200) 2023-10-26 15:17:28 +09:00
locale.py gh-111187: Postpone removal version for locale.getdefaultlocale() to 3.15 (#111188) 2023-10-25 16:47:41 +03:00
lzma.py
mailbox.py gh-66515: Fix locking of an MH mailbox without ".mh_sequences" file (GH-113482) 2024-01-10 15:31:55 +02:00
mimetypes.py
modulefinder.py
netrc.py
ntpath.py gh-88569: add ntpath.isreserved() (#95486) 2024-01-26 18:14:24 +00:00
nturl2path.py
numbers.py
opcode.py gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
operator.py
optparse.py
os.py gh-113191: Add support of os.fchmod() on Windows (GH-113192) 2023-12-24 10:57:11 +00:00
pdb.py gh-111051: Check if file is modifed during debugging in pdb (#111052) 2024-01-25 16:48:50 +00:00
pickle.py gh-85567: Fix resouce warnings in pickle and pickletools CLIs (GH-113618) 2024-01-06 00:12:34 +02:00
pickletools.py gh-85567: Fix resouce warnings in pickle and pickletools CLIs (GH-113618) 2024-01-06 00:12:34 +02:00
pkgutil.py
platform.py gh-114490: Add check for Mach-O linkage in Lib/platform.py (#114491) 2024-01-26 21:36:50 +01:00
plistlib.py gh-111803: Support loading more deeply nested lists in binary plist format (GH-114024) 2024-01-13 15:26:55 +02:00
poplib.py gh-106200: Remove unused imports (#106201) 2023-06-28 11:55:41 +00:00
posixpath.py
pprint.py [pprint]: Add docstring about PrettyPrinter.underscore_numbers parameter (#112963) 2023-12-13 12:04:17 +00:00
profile.py
pstats.py GH-83162: Rename re.error for better clarity. (#101677) 2023-12-11 15:45:08 -05:00
pty.py
py_compile.py
pyclbr.py
pydoc.py gh-64020: Deprecate pydoc.ispackage() (GH-20908) 2023-12-27 14:04:31 +00:00
queue.py
quopri.py
random.py gh-111881: Import _sha2 lazily in random (#111889) 2023-11-09 23:10:21 +01:00
reprlib.py gh-109818: reprlib.recursive_repr copies __type_params__ (#109819) 2023-09-27 19:26:42 -07:00
rlcompleter.py
runpy.py gh-99437: runpy: decode path-like objects before setting globals 2024-01-15 16:58:50 +00:00
sched.py
secrets.py
selectors.py gh-110038: KqueueSelector must count all read/write events (#110039) 2023-09-28 17:25:10 +00:00
shelve.py gh-107089: Improve Shelf.clear method performance (gh-107090) 2023-07-29 09:08:11 +09:00
shlex.py
shutil.py bpo-26791: Update shutil.move() to provide the same symlink move behavior as the mv shell when moving a symlink into a directory that is the target of the symlink (GH-21759) 2023-12-27 16:23:42 +00:00
signal.py gh-112559: Avoid unnecessary conversion attempts to enum_klass in signal.py (#113040) 2023-12-23 17:07:52 -08:00
site.py gh-113659: Skip hidden .pth files (GH-113660) 2024-01-16 20:23:05 +02:00
smtplib.py gh-65495: Use lowercase mail from and rcpt to in smtplib.SMTP (#107019) 2023-07-22 16:46:59 +02:00
socket.py gh-114077: Fix OverflowError in socket.sendfile() when pass count >2GiB (GH-114079) 2024-01-16 11:31:34 +00:00
socketserver.py
sre_compile.py
sre_constants.py
sre_parse.py
ssl.py gh-89532: Remove LibreSSL workarounds (#28728) 2024-01-06 23:25:58 +00:00
stat.py gh-113666: Adding missing UF_ and SF_ flags to module 'stat' (#113667) 2024-01-15 12:22:43 +01:00
statistics.py gh-112540: Support zero inputs in geometric_mean() (gh-112880) 2023-12-08 12:05:56 -06:00
string.py
stringprep.py
struct.py
subprocess.py gh-104522: Fix OSError raised when run a subprocess (#114195) 2024-01-17 16:52:42 -08:00
symtable.py gh-85098: Implement functional CLI of symtable (#109112) 2023-11-07 16:32:16 +00:00
tabnanny.py
tarfile.py gh-67641: Clarify documentation on bytes vs text with non-seeking tarfile stream (GH-31610) 2023-12-27 17:16:36 +00:00
tempfile.py gh-59616: Support os.chmod(follow_symlinks=True) and os.lchmod() on Windows (GH-113049) 2023-12-14 13:28:37 +02:00
textwrap.py gh-107369: optimize textwrap.indent() (#107374) 2023-07-29 06:37:23 +00:00
this.py
threading.py gh-114315: Make threading.Lock a real class, not a factory function (#114479) 2024-01-25 19:46:32 +00:00
timeit.py gh-105052:update timeit function's description (#105060) 2023-08-27 03:22:27 -04:00
token.py gh-107015: Remove async_hacks from the tokenizer (#107018) 2023-07-26 16:34:15 +01:00
tokenize.py gh-104169: Fix test_peg_generator after tokenizer refactoring (#110727) 2023-10-12 09:34:35 +02:00
trace.py gh-38807: Fix race condition in Lib/trace.py (GH-110143) 2024-01-17 22:02:14 +02:00
traceback.py gh-113358: Fix rendering tracebacks with exceptions with a broken __getattr__ (GH-113359) 2024-01-16 09:49:24 +00:00
tracemalloc.py
tty.py gh-114328: tty cbreak mode should not alter ICRNL (#114335) 2024-01-21 15:25:52 -08:00
turtle.py no-issue: Capitalise 'PhotoImage' (gh-108958) 2023-09-25 21:37:40 +09:00
types.py gh-109599: Add types.CapsuleType (#109600) 2023-09-25 19:50:39 +02:00
typing.py gh-113320: Reduce the number of dangerous getattr() calls when constructing protocol classes (#113401) 2024-01-05 01:01:48 +00:00
uuid.py
warnings.py gh-113781: Silence AttributeError in warning module during Python finalization (GH-113813) 2024-01-09 21:44:05 +02:00
wave.py gh-105096: Deprecate wave getmarkers() method (#105098) 2023-05-31 12:09:41 +00:00
weakref.py
webbrowser.py gh-113543: Make sure that MacOSXOSAScript sends webbrowser.open audit event (#113544) 2023-12-28 19:58:06 +01:00
zipapp.py gh-104527: zippapp will now avoid appending an archive to itself. (gh-106076) 2023-06-26 10:09:08 +01:00
zipimport.py Fix typos in variable names, function names, and comments (GH-101868) 2023-12-01 09:37:40 +00:00