Skip to content

Commit b2091cd

Browse files
committed
Add more tests for Python 3 Metaclasses
1 parent 7131b12 commit b2091cd

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

dill/_dill.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1746,7 +1746,6 @@ def save_type(pickler, obj, postproc_list=None):
17461746
logger.trace(pickler, "# T7")
17471747

17481748
else:
1749-
obj_name = getattr(obj, '__qualname__', getattr(obj, '__name__', None))
17501749
_byref = getattr(pickler, '_byref', None)
17511750
obj_recursive = id(obj) in getattr(pickler, '_postproc', ())
17521751
incorrectly_named = not _locate_function(obj, pickler)

dill/tests/test_classdef.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# - https://github.com/uqfoundation/dill/blob/master/LICENSE
88

99
import dill
10+
from enum import EnumMeta
1011
import sys
1112
dill.settings['recurse'] = True
1213

@@ -97,6 +98,7 @@ def test_specialtypes():
9798
assert dill.pickles(type(None))
9899
assert dill.pickles(type(NotImplemented))
99100
assert dill.pickles(type(Ellipsis))
101+
assert dill.pickles(type(EnumMeta))
100102

101103
from collections import namedtuple
102104
Z = namedtuple("Z", ['a','b'])
@@ -107,13 +109,17 @@ def test_specialtypes():
107109
Xi = X(0,1)
108110
Bad = namedtuple("FakeName", ['a','b'])
109111
Badi = Bad(0,1)
112+
Defaults = namedtuple('Defaults', ['x', 'y'], defaults=[1])
113+
Defaultsi = Defaults(2)
110114

111115
# test namedtuple
112116
def test_namedtuple():
113117
assert Z is dill.loads(dill.dumps(Z))
114118
assert Zi == dill.loads(dill.dumps(Zi))
115119
assert X is dill.loads(dill.dumps(X))
116120
assert Xi == dill.loads(dill.dumps(Xi))
121+
assert Defaults is dill.loads(dill.dumps(Defaults))
122+
assert Defaultsi == dill.loads(dill.dumps(Defaultsi))
117123
assert Bad is not dill.loads(dill.dumps(Bad))
118124
assert Bad._fields == dill.loads(dill.dumps(Bad))._fields
119125
assert tuple(Badi) == tuple(dill.loads(dill.dumps(Badi)))
@@ -221,11 +227,17 @@ def __init__(self, y):
221227
value = 123
222228
y = Y(value)
223229

230+
class Y2(object):
231+
__slots__ = 'y'
232+
def __init__(self, y):
233+
self.y = y
234+
224235
def test_slots():
225236
assert dill.pickles(Y)
226237
assert dill.pickles(y)
227238
assert dill.pickles(Y.y)
228239
assert dill.copy(y).y == value
240+
assert dill.copy(Y2(value)).y == value
229241

230242
def test_origbases():
231243
assert dill.copy(customIntList).__orig_bases__ == customIntList.__orig_bases__
@@ -258,6 +270,12 @@ def __new__(cls):
258270

259271
assert dill.copy(subclass_with_new())
260272

273+
def test_enummeta():
274+
from http import HTTPStatus
275+
import enum
276+
assert dill.copy(HTTPStatus.OK) is HTTPStatus.OK
277+
assert dill.copy(enum.EnumMeta) is enum.EnumMeta
278+
261279
if __name__ == '__main__':
262280
test_class_instances()
263281
test_class_objects()
@@ -270,3 +288,4 @@ def __new__(cls):
270288
test_slots()
271289
test_origbases()
272290
test_metaclass()
291+
test_enummeta()

0 commit comments

Comments
 (0)