23
23
24
24
25
25
_builtin_dict = dict
26
- ver = sys .version_info [: 2 ]
26
+ ver = sys .version_info
27
27
28
28
29
29
class BaseNewDict (type ):
@@ -38,47 +38,18 @@ class newdict(with_metaclass(BaseNewDict, _builtin_dict)):
38
38
"""
39
39
A backport of the Python 3 dict object to Py2
40
40
"""
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
82
53
83
54
def __new__ (cls , * args , ** kwargs ):
84
55
"""
@@ -93,13 +64,7 @@ def __new__(cls, *args, **kwargs):
93
64
in the keyword argument list. For example: dict(one=1, two=2)
94
65
"""
95
66
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 )
103
68
104
69
def __native__ (self ):
105
70
"""
0 commit comments