21
21
# SOFTWARE.
22
22
23
23
from __future__ import absolute_import
24
- from future .utils import raise_from
25
24
26
25
import functools
27
26
import itertools
30
29
import types
31
30
32
31
__author__ = "Benjamin Peterson <benjamin@python.org>"
33
- __version__ = "1.9 .0"
32
+ __version__ = "1.10 .0"
34
33
35
34
36
35
# Useful for very coarse version differentiation.
37
36
PY2 = sys .version_info [0 ] == 2
38
37
PY3 = sys .version_info [0 ] == 3
38
+ PY34 = sys .version_info [0 :2 ] >= (3 , 4 )
39
39
40
40
if PY3 :
41
41
string_types = str ,
58
58
else :
59
59
# It's possible to have sizeof(long) != sizeof(Py_ssize_t).
60
60
class X (object ):
61
+
61
62
def __len__ (self ):
62
63
return 1 << 31
63
64
try :
@@ -161,6 +162,7 @@ def _resolve(self):
161
162
162
163
163
164
class _SixMetaPathImporter (object ):
165
+
164
166
"""
165
167
A meta path importer to import six.moves and its submodules.
166
168
@@ -187,8 +189,8 @@ def find_module(self, fullname, path=None):
187
189
def __get_module (self , fullname ):
188
190
try :
189
191
return self .known_modules [fullname ]
190
- except KeyError as e :
191
- raise_from ( ImportError ("This loader does not know module " + fullname ), e )
192
+ except KeyError :
193
+ raise ImportError ("This loader does not know module " + fullname )
192
194
193
195
def load_module (self , fullname ):
194
196
try :
@@ -225,6 +227,7 @@ def get_code(self, fullname):
225
227
226
228
227
229
class _MovedItems (_LazyModule ):
230
+
228
231
"""Lazy loading of moved objects"""
229
232
__path__ = [] # mark as package
230
233
@@ -236,8 +239,10 @@ class _MovedItems(_LazyModule):
236
239
MovedAttribute ("input" , "__builtin__" , "builtins" , "raw_input" , "input" ),
237
240
MovedAttribute ("intern" , "__builtin__" , "sys" ),
238
241
MovedAttribute ("map" , "itertools" , "builtins" , "imap" , "map" ),
242
+ MovedAttribute ("getcwd" , "os" , "os" , "getcwdu" , "getcwd" ),
243
+ MovedAttribute ("getcwdb" , "os" , "os" , "getcwd" , "getcwdb" ),
239
244
MovedAttribute ("range" , "__builtin__" , "builtins" , "xrange" , "range" ),
240
- MovedAttribute ("reload_module" , "__builtin__" , "imp" , "reload" ),
245
+ MovedAttribute ("reload_module" , "__builtin__" , "importlib" if PY34 else " imp" , "reload" ),
241
246
MovedAttribute ("reduce" , "__builtin__" , "functools" ),
242
247
MovedAttribute ("shlex_quote" , "pipes" , "shlex" , "quote" ),
243
248
MovedAttribute ("StringIO" , "StringIO" , "io" ),
@@ -247,7 +252,6 @@ class _MovedItems(_LazyModule):
247
252
MovedAttribute ("xrange" , "__builtin__" , "builtins" , "xrange" , "range" ),
248
253
MovedAttribute ("zip" , "itertools" , "builtins" , "izip" , "zip" ),
249
254
MovedAttribute ("zip_longest" , "itertools" , "itertools" , "izip_longest" , "zip_longest" ),
250
-
251
255
MovedModule ("builtins" , "__builtin__" ),
252
256
MovedModule ("configparser" , "ConfigParser" ),
253
257
MovedModule ("copyreg" , "copy_reg" ),
@@ -294,8 +298,13 @@ class _MovedItems(_LazyModule):
294
298
MovedModule ("urllib_robotparser" , "robotparser" , "urllib.robotparser" ),
295
299
MovedModule ("xmlrpc_client" , "xmlrpclib" , "xmlrpc.client" ),
296
300
MovedModule ("xmlrpc_server" , "SimpleXMLRPCServer" , "xmlrpc.server" ),
297
- MovedModule ("winreg" , "_winreg" ),
298
301
]
302
+ # Add windows specific modules.
303
+ if sys .platform == "win32" :
304
+ _moved_attributes += [
305
+ MovedModule ("winreg" , "_winreg" ),
306
+ ]
307
+
299
308
for attr in _moved_attributes :
300
309
setattr (_MovedItems , attr .name , attr )
301
310
if isinstance (attr , MovedModule ):
@@ -309,6 +318,7 @@ class _MovedItems(_LazyModule):
309
318
310
319
311
320
class Module_six_moves_urllib_parse (_LazyModule ):
321
+
312
322
"""Lazy loading of moved objects in six.moves.urllib_parse"""
313
323
314
324
@@ -348,6 +358,7 @@ class Module_six_moves_urllib_parse(_LazyModule):
348
358
349
359
350
360
class Module_six_moves_urllib_error (_LazyModule ):
361
+
351
362
"""Lazy loading of moved objects in six.moves.urllib_error"""
352
363
353
364
@@ -367,6 +378,7 @@ class Module_six_moves_urllib_error(_LazyModule):
367
378
368
379
369
380
class Module_six_moves_urllib_request (_LazyModule ):
381
+
370
382
"""Lazy loading of moved objects in six.moves.urllib_request"""
371
383
372
384
@@ -416,6 +428,7 @@ class Module_six_moves_urllib_request(_LazyModule):
416
428
417
429
418
430
class Module_six_moves_urllib_response (_LazyModule ):
431
+
419
432
"""Lazy loading of moved objects in six.moves.urllib_response"""
420
433
421
434
@@ -436,6 +449,7 @@ class Module_six_moves_urllib_response(_LazyModule):
436
449
437
450
438
451
class Module_six_moves_urllib_robotparser (_LazyModule ):
452
+
439
453
"""Lazy loading of moved objects in six.moves.urllib_robotparser"""
440
454
441
455
@@ -453,6 +467,7 @@ class Module_six_moves_urllib_robotparser(_LazyModule):
453
467
454
468
455
469
class Module_six_moves_urllib (types .ModuleType ):
470
+
456
471
"""Create a six.moves.urllib namespace that resembles the Python 3 namespace"""
457
472
__path__ = [] # mark as package
458
473
parse = _importer ._get_module ("moves.urllib_parse" )
@@ -523,6 +538,9 @@ def get_unbound_function(unbound):
523
538
524
539
create_bound_method = types .MethodType
525
540
541
+ def create_unbound_method (func , cls ):
542
+ return func
543
+
526
544
Iterator = object
527
545
else :
528
546
def get_unbound_function (unbound ):
@@ -531,6 +549,9 @@ def get_unbound_function(unbound):
531
549
def create_bound_method (func , obj ):
532
550
return types .MethodType (func , obj , obj .__class__ )
533
551
552
+ def create_unbound_method (func , cls ):
553
+ return types .MethodType (func , None , cls )
554
+
534
555
class Iterator (object ):
535
556
536
557
def next (self ):
@@ -569,16 +590,16 @@ def iterlists(d, **kw):
569
590
viewitems = operator .methodcaller ("items" )
570
591
else :
571
592
def iterkeys (d , ** kw ):
572
- return iter ( d .iterkeys (** kw ) )
593
+ return d .iterkeys (** kw )
573
594
574
595
def itervalues (d , ** kw ):
575
- return iter ( d .itervalues (** kw ) )
596
+ return d .itervalues (** kw )
576
597
577
598
def iteritems (d , ** kw ):
578
- return iter ( d .iteritems (** kw ) )
599
+ return d .iteritems (** kw )
579
600
580
601
def iterlists (d , ** kw ):
581
- return iter ( d .iterlists (** kw ) )
602
+ return d .iterlists (** kw )
582
603
583
604
viewkeys = operator .methodcaller ("viewkeys" )
584
605
@@ -601,21 +622,22 @@ def b(s):
601
622
def u (s ):
602
623
return s
603
624
unichr = chr
604
- if sys .version_info [1 ] <= 1 :
605
- def int2byte (i ):
606
- return bytes ((i ,))
607
- else :
608
- # This is about 2x faster than the implementation above on 3.2+
609
- int2byte = operator .methodcaller ("to_bytes" , 1 , "big" )
625
+ import struct
626
+ int2byte = struct .Struct (">B" ).pack
627
+ del struct
610
628
byte2int = operator .itemgetter (0 )
611
629
indexbytes = operator .getitem
612
630
iterbytes = iter
613
631
import io
614
632
StringIO = io .StringIO
615
633
BytesIO = io .BytesIO
616
634
_assertCountEqual = "assertCountEqual"
617
- _assertRaisesRegex = "assertRaisesRegex"
618
- _assertRegex = "assertRegex"
635
+ if sys .version_info [1 ] <= 1 :
636
+ _assertRaisesRegex = "assertRaisesRegexp"
637
+ _assertRegex = "assertRegexpMatches"
638
+ else :
639
+ _assertRaisesRegex = "assertRaisesRegex"
640
+ _assertRegex = "assertRegex"
619
641
else :
620
642
def b (s ):
621
643
return s
@@ -781,6 +803,7 @@ def with_metaclass(meta, *bases):
781
803
# metaclass for one level of class instantiation that replaces itself with
782
804
# the actual metaclass.
783
805
class metaclass (meta ):
806
+
784
807
def __new__ (cls , name , this_bases , d ):
785
808
return meta (name , bases , d )
786
809
return type .__new__ (metaclass , 'temporary_class' , (), {})
0 commit comments