Skip to content

Commit b9ce1b1

Browse files
committed
Implement Message with json property as a subclass to avoid repeating the interface.
1 parent 6eef087 commit b9ce1b1

File tree

2 files changed

+9
-23
lines changed

2 files changed

+9
-23
lines changed

importlib_metadata/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ def metadata(self) -> _meta.PackageMetadata:
491491
# (which points to the egg-info file) attribute unchanged.
492492
or self.read_text('')
493493
)
494-
return _adapters.JSONMeta(email.message_from_string(text))
494+
return _adapters.Message(email.message_from_string(text))
495495

496496
@property
497497
def name(self):

importlib_metadata/_adapters.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
11
import string
22
import textwrap
33
import itertools
4+
import email.message
45

5-
from . import _meta
66

7+
class Message(email.message.Message):
8+
def __new__(cls, orig: email.message.Message):
9+
res = super().__new__(cls)
10+
vars(res).update(vars(orig))
11+
return res
712

8-
class JSONMeta(_meta.PackageMetadata):
9-
def __init__(self, orig: _meta.PackageMetadata):
10-
self.orig = orig
11-
12-
def __getitem__(self, item):
13-
return self.orig.__getitem__(item)
14-
15-
def __len__(self):
16-
return self.orig.__len__() # pragma: nocover
17-
18-
def __contains__(self, item):
19-
return self.orig.__contains__(item) # pragma: nocover
20-
21-
def __iter__(self):
22-
return self.orig.__iter__()
23-
24-
def get_all(self, name):
25-
return self.orig.get_all(name)
26-
27-
def get_payload(self):
28-
return self.orig.get_payload()
13+
def __init__(self, *args, **kwargs):
14+
pass
2915

3016
@property
3117
def json(self):

0 commit comments

Comments
 (0)