]>
jfr.im git - dlqueue.git/blob - venv/lib/python3.11/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py
7 from ._text
import FoldedCase
8 from ._compat
import pypy_partial
11 # Do not remove prior to 2024-01-01 or Python 3.14
12 _warn
= functools
.partial(
14 "Implicit None on return values is deprecated and will raise KeyErrors.",
16 stacklevel
=pypy_partial(2),
20 class Message(email
.message
.Message
):
21 multiple_use_keys
= set(
39 Keys that may be indicated multiple times per PEP 566.
42 def __new__(cls
, orig
: email
.message
.Message
):
43 res
= super().__new
__(cls
)
44 vars(res
).update(vars(orig
))
47 def __init__(self
, *args
, **kwargs
):
48 self
._headers
= self
._repair
_headers
()
50 # suppress spurious error from mypy
52 return super().__iter
__()
54 def __getitem__(self
, item
):
56 Warn users that a ``KeyError`` can be expected when a
57 mising key is supplied. Ref python/importlib_metadata#371.
59 res
= super().__getitem
__(item
)
64 def _repair_headers(self
):
66 "Correct for RFC822 indentation"
67 if not value
or '\n' not in value
:
69 return textwrap
.dedent(' ' * 8 + value
)
71 headers
= [(key
, redent(value
)) for key
, value
in vars(self
)['_headers']]
73 headers
.append(('Description', self
.get_payload()))
79 Convert PackageMetadata to a JSON-compatible format
84 value
= self
.get_all(key
) if key
in self
.multiple_use_keys
else self
[key
]
86 value
= re
.split(r
'\s+', value
)
87 tk
= key
.lower().replace('-', '_')
90 return dict(map(transform
, map(FoldedCase
, self
)))