2323
2424
2525_builtin_dict = dict
26- ver = sys .version_info [: 2 ]
26+ ver = sys .version_info
2727
2828
2929class 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