Skip to content

Commit 2141781

Browse files
committed
Merge branch 'newdict-fix' of https://github.com/MitalAshok/python-future into MitalAshok-newdict-fix
2 parents cfaf9c0 + 99030ec commit 2141781

File tree

1 file changed

+14
-49
lines changed

1 file changed

+14
-49
lines changed

src/future/types/newdict.py

+14-49
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424

2525
_builtin_dict = dict
26-
ver = sys.version_info[:2]
26+
ver = sys.version_info
2727

2828

2929
class BaseNewDict(type):
@@ -38,47 +38,18 @@ class newdict(with_metaclass(BaseNewDict, _builtin_dict)):
3838
"""
3939
A backport of the Python 3 dict object to Py2
4040
"""
41-
def items(self):
42-
"""
43-
On Python 2.7+:
44-
D.items() -> a set-like object providing a view on D's items
45-
On Python 2.6:
46-
D.items() -> an iterator over D's items
47-
"""
48-
if ver == (2, 7):
49-
return self.viewitems()
50-
elif ver == (2, 6):
51-
return self.iteritems()
52-
elif ver >= (3, 0):
53-
return self.items()
54-
55-
def keys(self):
56-
"""
57-
On Python 2.7+:
58-
D.keys() -> a set-like object providing a view on D's keys
59-
On Python 2.6:
60-
D.keys() -> an iterator over D's keys
61-
"""
62-
if ver == (2, 7):
63-
return self.viewkeys()
64-
elif ver == (2, 6):
65-
return self.iterkeys()
66-
elif ver >= (3, 0):
67-
return self.keys()
68-
69-
def values(self):
70-
"""
71-
On Python 2.7+:
72-
D.values() -> a set-like object providing a view on D's values
73-
On Python 2.6:
74-
D.values() -> an iterator over D's values
75-
"""
76-
if ver == (2, 7):
77-
return self.viewvalues()
78-
elif ver == (2, 6):
79-
return self.itervalues()
80-
elif ver >= (3, 0):
81-
return self.values()
41+
42+
if ver >= (3,):
43+
# Inherit items, keys and values from `dict` in 3.x
44+
pass
45+
elif ver >= (2, 7):
46+
items = dict.viewitems
47+
keys = dict.viewkeys
48+
values = dict.viewvalues
49+
else:
50+
items = dict.iteritems
51+
keys = dict.iterkeys
52+
values = dict.itervalues
8253

8354
def __new__(cls, *args, **kwargs):
8455
"""
@@ -93,13 +64,7 @@ def __new__(cls, *args, **kwargs):
9364
in the keyword argument list. For example: dict(one=1, two=2)
9465
"""
9566

96-
if len(args) == 0:
97-
return super(newdict, cls).__new__(cls)
98-
elif type(args[0]) == newdict:
99-
value = args[0]
100-
else:
101-
value = args[0]
102-
return super(newdict, cls).__new__(cls, value)
67+
return super(newdict, cls).__new__(cls, *args)
10368

10469
def __native__(self):
10570
"""

0 commit comments

Comments
 (0)