8000 Merge branch 'bugfix/pickleable-ep' into 'master' · python/importlib_metadata@e226573 · GitHub
[go: up one dir, main page]

Skip to content

Commit e226573

Browse files
committed
Merge branch 'bugfix/pickleable-ep' into 'master'
Allow entry points to be pickled. Closes #96 See merge request python-devs/importlib_metadata!99
2 parents 71697ae + 79db2b6 commit e226573

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

importlib_metadata/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ def __iter__(self):
123123
"""
124124
return iter((self.name, self))
125125

126+
def __reduce__(self):
127+
return (
128+
self.__class__,
129+
(self.name, self.value, self.group),
130+
)
131+
126132

127133
class PackagePath(pathlib.PurePosixPath):
128134
"""A reference to a path in a package"""

importlib_metadata/docs/changelog.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ v1.1.0
66
======
77

88
* Dropped support for Python 3.4.
9+
* EntryPoints are now pickleable. Closes #96.
910

1011
v1.0.0
1112
======

importlib_metadata/tests/test_main.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from __future__ import unicode_literals
33

44
import re
5+
import pickle
56
import textwrap
67
import unittest
78
import importlib
@@ -189,3 +190,10 @@ def test_egg(self):
189190
with self.add_sys_path(egg):
190191
with self.assertRaises(PackageNotFoundError):
191192
version('foo')
193+
194+
195+
class TestEntryPoints(unittest.TestCase):
196+
def test_entry_point_pickleable(self):
197+
ep = importlib_metadata.EntryPoint('name', 'value', 'group')
198+
revived = pickle.loads(pickle.dumps(ep))
199+
assert revived == ep

0 commit comments

Comments
 (0)
0