Skip to content

Commit e675da1

Browse files
committed
Dedent values in the headers during construction. Now metadata values are normalized with leading whitespace removed and Description available even if found in the payload.
1 parent 5ca5fd8 commit e675da1

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

importlib_metadata/_adapters.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import string
22
import textwrap
3-
import itertools
43
import email.message
54

65

@@ -11,12 +10,24 @@ def __new__(cls, orig: email.message.Message):
1110
return res
1211

1312
def __init__(self, *args, **kwargs):
14-
pass
13+
self._headers = self._repair_headers()
1514

1615
# suppress spurious error from mypy
1716
def __iter__(self):
1817
return super().__iter__()
1918

19+
def _repair_headers(self):
20+
def redent(value):
21+
"Correct for RFC822 indentation"
22+
if not value or '\n' not in value:
23+
return value
24+
return textwrap.dedent(' ' * 8 + value)
25+
26+
headers = [(key, redent(value)) for key, value in vars(self)['_headers']]
27+
if self._payload:
28+
headers.append(('Description', self.get_payload()))
29+
return headers
30+
2031
@property
2132
def json(self):
2233
"""
@@ -36,21 +47,11 @@ def json(self):
3647
'Supported-Platform',
3748
}
3849

39-
def redent(value):
40-
"Correct for RFC822 indentation"
41-
if not value or '\n' not in value:
42-
return value
43-
return textwrap.dedent(' ' * 8 + value)
44-
4550
def transform(key):
46-
value = self.get_all(key) if key in multiple_use else redent(self[key])
51+
value = self.get_all(key) if key in multiple_use else self[key]
4752
if key == 'Keywords':
4853
value = value.split(string.whitespace)
49-
if not value and key == 'Description':
50-
value = self.get_payload()
5154
tk = key.lower().replace('-', '_')
5255
return tk, value
5356

54-
desc = ['Description'] if self.get_payload() else []
55-
keys = itertools.chain(self, desc)
56-
return dict(map(transform, keys))
57+
return dict(map(transform, self))

0 commit comments

Comments
 (0)