5 from ._text import FoldedCase
8 class Message(email.message.Message):
9 multiple_use_keys = set(
27 Keys that may be indicated multiple times per PEP 566.
30 def __new__(cls, orig: email.message.Message):
31 res = super().__new__(cls)
32 vars(res).update(vars(orig))
35 def __init__(self, *args, **kwargs):
36 self._headers = self._repair_headers()
38 # suppress spurious error from mypy
40 return super().__iter__()
42 def _repair_headers(self):
44 "Correct for RFC822 indentation"
45 if not value or '\n' not in value:
47 return textwrap.dedent(' ' * 8 + value)
49 headers = [(key, redent(value)) for key, value in vars(self)['_headers']]
51 headers.append(('Description', self.get_payload()))
57 Convert PackageMetadata to a JSON-compatible format
62 value = self.get_all(key) if key in self.multiple_use_keys else self[key]
64 value = re.split(r'\s+', value)
65 tk = key.lower().replace('-', '_')
68 return dict(map(transform, map(FoldedCase, self)))