cpython/Lib/email
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
..
mime gh-102542 Remove unused bytes object and bytes slicing (#106433) 2023-07-05 09:17:37 -07:00
__init__.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
_encoded_words.py bpo-43323: Fix UnicodeEncodeError in the email module (GH-32137) 2022-04-30 13:17:23 +03:00
_header_value_parser.py gh-113594: Fix UnicodeEncodeError in TokenList.fold() (GH-113730) 2024-01-10 14:54:36 +02:00
_parseaddr.py gh-109653: Improve import time of importlib.metadata / email.utils (#114664) 2024-01-29 01:30:22 -08:00
_policybase.py [email] bpo-29478: Fix passing max_line_length=None from Compat32 policy (GH-595) 2017-06-11 23:43:41 -07:00
architecture.rst Fix typos in multiple `.rst` files (#1668) 2017-05-19 23:37:57 +03:00
base64mime.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
charset.py gh-102498 Clean up unused variables and imports in the email module (#102482) 2023-04-24 19:19:28 +00:00
contentmanager.py bpo-46565: `del` loop vars that are leaking into module namespaces (GH-30993) 2022-02-03 11:20:08 +02:00
encoders.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
errors.py Fix typos in the Lib directory (GH-28775) 2021-10-06 16:13:48 -07:00
feedparser.py gh-106186: Don't report MultipartInvariantViolationDefect for valid multipart emails when parsing header only (#107016) 2023-07-23 12:25:18 +02:00
generator.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
header.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
headerregistry.py bpo-26579: Add object.__getstate__(). (GH-2821) 2022-04-06 20:00:14 +03:00
iterators.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
message.py gh-94606: Fix error when message with Unicode surrogate not surrogateescaped string (GH-94641) 2023-12-11 18:21:18 +02:00
parser.py gh-102507 Remove invisible pagebreak characters (#102531) 2023-03-08 13:58:14 +00:00
policy.py gh-77749: Fix inconsistent behavior of non-ASCII handling in EmailPolicy.fold() (GH-6986) 2024-01-26 15:19:41 +00:00
quoprimime.py bpo-46565: `del` loop vars that are leaking into module namespaces (GH-30993) 2022-02-03 11:20:08 +02:00
utils.py [CVE-2023-27043] gh-102988: Reject malformed addresses in email.parseaddr() (#111116) 2023-12-15 16:10:40 +01:00