5
5
import types
6
6
7
7
__author__ = "Benjamin Peterson <[email protected] >"
8
- __version__ = "1.1 .0-mpl"
8
+ __version__ = "1.2 .0-mpl"
9
9
10
10
11
11
# True if we are running on Python 3.
26
26
text_type = unicode
27
27
binary_type = str
28
28
29
- # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
30
- class X (object ):
31
- def __len__ (self ):
32
- return 1 << 31
33
- try :
34
- len (X ())
35
- except OverflowError :
36
- # 32-bit
29
+ if sys .platform == "java" :
30
+ # Jython always uses 32 bits.
37
31
MAXSIZE = int ((1 << 31 ) - 1 )
38
32
else :
39
- # 64-bit
40
- MAXSIZE = int ((1 << 63 ) - 1 )
41
- del X
33
+ # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
34
+ class X (object ):
35
+ def __len__ (self ):
36
+ return 1 << 31
37
+ try :
38
+ len (X ())
39
+ except OverflowError :
40
+ # 32-bit
41
+ MAXSIZE = int ((1 << 31 ) - 1 )
42
+ else :
43
+ # 64-bit
44
+ MAXSIZE = int ((1 << 63 ) - 1 )
45
+ del X
42
46
43
47
44
48
def _add_doc (func , doc ):
@@ -113,6 +117,7 @@ class _MovedItems(types.ModuleType):
113
117
_moved_attributes = [
114
118
MovedAttribute ("cStringIO" , "cStringIO" , "io" , "StringIO" ),
115
119
MovedAttribute ("filter" , "itertools" , "builtins" , "ifilter" , "filter" ),
120
+ MovedAttribute ("input" , "__builtin__" , "builtins" , "raw_input" , "input" ),
116
121
MovedAttribute ("map" , "itertools" , "builtins" , "imap" , "map" ),
117
122
MovedAttribute ("reload_module" , "__builtin__" , "imp" , "reload" ),
118
123
MovedAttribute ("reduce" , "__builtin__" , "functools" ),
@@ -200,22 +205,30 @@ def remove_move(name):
200
205
_iteritems = "iteritems"
201
206
202
207
208
+ try :
209
+ advance_iterator = next
210
+ except NameError :
211
+ def advance_iterator (it ):
212
+ return it .next ()
213
+ next = advance_iterator
214
+
215
+
203
216
if PY3 :
204
217
def get_unbound_function (unbound ):
205
218
return unbound
206
219
207
-
208
- advance_iterator = next
220
+ Iterator = object
209
221
210
222
def callable (obj ):
211
223
return any ("__call__" in klass .__dict__ for klass in type (obj ).__mro__ )
212
224
else :
213
225
def get_unbound_function (unbound ):
214
226
return unbound .im_func
215
227
228
+ class Iterator (object ):
216
229
217
- def advance_iterator ( it ):
218
- return it . next ( )
230
+ def next ( self ):
231
+ return type ( self ). __next__ ( self )
219
232
220
233
callable = callable
221
234
_add_doc (get_unbound_function ,
@@ -230,15 +243,15 @@ def advance_iterator(it):
230
243
231
244
def iterkeys (d ):
232
245
"""Return an iterator over the keys of a dictionary."""
233
- return getattr (d , _iterkeys )()
246
+ return iter ( getattr (d , _iterkeys )() )
234
247
235
248
def itervalues (d ):
236
249
"""Return an iterator over the values of a dictionary."""
237
- return getattr (d , _itervalues )()
250
+ return iter ( getattr (d , _itervalues )() )
238
251
239
252
def iteritems (d ):
240
253
"""Return an iterator over the (key, value) pairs of a dictionary."""
241
- return getattr (d , _iteritems )()
254
+ return iter ( getattr (d , _iteritems )() )
242
255
243
256
244
257
if PY3 :
0 commit comments