2929import types
3030
3131__author__ = "Benjamin Peterson <benjamin@python.org>"
32- __version__ = "1.9 .0"
32+ __version__ = "1.10 .0"
3333
3434
3535# Useful for very coarse version differentiation.
3636PY2 = sys .version_info [0 ] == 2
3737PY3 = sys .version_info [0 ] == 3
38+ PY34 = sys .version_info [0 :2 ] >= (3 , 4 )
3839
3940if PY3 :
4041 string_types = str ,
5758 else :
5859 # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
5960 class X (object ):
61+
6062 def __len__ (self ):
6163 return 1 << 31
6264 try :
@@ -160,6 +162,7 @@ def _resolve(self):
160162
161163
162164class _SixMetaPathImporter (object ):
165+
163166 """
164167 A meta path importer to import six.moves and its submodules.
165168
@@ -224,6 +227,7 @@ def get_code(self, fullname):
224227
225228
226229class _MovedItems (_LazyModule ):
230+
227231 """Lazy loading of moved objects"""
228232 __path__ = [] # mark as package
229233
@@ -235,8 +239,10 @@ class _MovedItems(_LazyModule):
235239 MovedAttribute ("input" , "__builtin__" , "builtins" , "raw_input" , "input" ),
236240 MovedAttribute ("intern" , "__builtin__" , "sys" ),
237241 MovedAttribute ("map" , "itertools" , "builtins" , "imap" , "map" ),
242+ MovedAttribute ("getcwd" , "os" , "os" , "getcwdu" , "getcwd" ),
243+ MovedAttribute ("getcwdb" , "os" , "os" , "getcwd" , "getcwdb" ),
238244 MovedAttribute ("range" , "__builtin__" , "builtins" , "xrange" , "range" ),
239- MovedAttribute ("reload_module" , "__builtin__" , "imp" , "reload" ),
245+ MovedAttribute ("reload_module" , "__builtin__" , "importlib" if PY34 else " imp" , "reload" ),
240246 MovedAttribute ("reduce" , "__builtin__" , "functools" ),
241247 MovedAttribute ("shlex_quote" , "pipes" , "shlex" , "quote" ),
242248 MovedAttribute ("StringIO" , "StringIO" , "io" ),
@@ -246,7 +252,6 @@ class _MovedItems(_LazyModule):
246252 MovedAttribute ("xrange" , "__builtin__" , "builtins" , "xrange" , "range" ),
247253 MovedAttribute ("zip" , "itertools" , "builtins" , "izip" , "zip" ),
248254 MovedAttribute ("zip_longest" , "itertools" , "itertools" , "izip_longest" , "zip_longest" ),
249-
250255 MovedModule ("builtins" , "__builtin__" ),
251256 MovedModule ("configparser" , "ConfigParser" ),
252257 MovedModule ("copyreg" , "copy_reg" ),
@@ -293,8 +298,13 @@ class _MovedItems(_LazyModule):
293298 MovedModule ("urllib_robotparser" , "robotparser" , "urllib.robotparser" ),
294299 MovedModule ("xmlrpc_client" , "xmlrpclib" , "xmlrpc.client" ),
295300 MovedModule ("xmlrpc_server" , "SimpleXMLRPCServer" , "xmlrpc.server" ),
296- MovedModule ("winreg" , "_winreg" ),
297301]
302+ # Add windows specific modules.
303+ if sys .platform == "win32" :
304+ _moved_attributes += [
305+ MovedModule ("winreg" , "_winreg" ),
306+ ]
307+
298308for attr in _moved_attributes :
299309 setattr (_MovedItems , attr .name , attr )
300310 if isinstance (attr , MovedModule ):
@@ -308,6 +318,7 @@ class _MovedItems(_LazyModule):
308318
309319
310320class Module_six_moves_urllib_parse (_LazyModule ):
321+
311322 """Lazy loading of moved objects in six.moves.urllib_parse"""
312323
313324
@@ -347,6 +358,7 @@ class Module_six_moves_urllib_parse(_LazyModule):
347358
348359
349360class Module_six_moves_urllib_error (_LazyModule ):
361+
350362 """Lazy loading of moved objects in six.moves.urllib_error"""
351363
352364
@@ -366,6 +378,7 @@ class Module_six_moves_urllib_error(_LazyModule):
366378
367379
368380class Module_six_moves_urllib_request (_LazyModule ):
381+
369382 """Lazy loading of moved objects in six.moves.urllib_request"""
370383
371384
@@ -415,6 +428,7 @@ class Module_six_moves_urllib_request(_LazyModule):
415428
416429
417430class Module_six_moves_urllib_response (_LazyModule ):
431+
418432 """Lazy loading of moved objects in six.moves.urllib_response"""
419433
420434
@@ -435,6 +449,7 @@ class Module_six_moves_urllib_response(_LazyModule):
435449
436450
437451class Module_six_moves_urllib_robotparser (_LazyModule ):
452+
438453 """Lazy loading of moved objects in six.moves.urllib_robotparser"""
439454
440455
@@ -452,6 +467,7 @@ class Module_six_moves_urllib_robotparser(_LazyModule):
452467
453468
454469class Module_six_moves_urllib (types .ModuleType ):
470+
455471 """Create a six.moves.urllib namespace that resembles the Python 3 namespace"""
456472 __path__ = [] # mark as package
457473 parse = _importer ._get_module ("moves.urllib_parse" )
@@ -522,6 +538,9 @@ def get_unbound_function(unbound):
522538
523539 create_bound_method = types .MethodType
524540
541+ def create_unbound_method (func , cls ):
542+ return func
543+
525544 Iterator = object
526545else :
527546 def get_unbound_function (unbound ):
@@ -530,6 +549,9 @@ def get_unbound_function(unbound):
530549 def create_bound_method (func , obj ):
531550 return types .MethodType (func , obj , obj .__class__ )
532551
552+ def create_unbound_method (func , cls ):
553+ return types .MethodType (func , None , cls )
554+
533555 class Iterator (object ):
534556
535557 def next (self ):
@@ -568,16 +590,16 @@ def iterlists(d, **kw):
568590 viewitems = operator .methodcaller ("items" )
569591else :
570592 def iterkeys (d , ** kw ):
571- return iter ( d .iterkeys (** kw ) )
593+ return d .iterkeys (** kw )
572594
573595 def itervalues (d , ** kw ):
574- return iter ( d .itervalues (** kw ) )
596+ return d .itervalues (** kw )
575597
576598 def iteritems (d , ** kw ):
577- return iter ( d .iteritems (** kw ) )
599+ return d .iteritems (** kw )
578600
579601 def iterlists (d , ** kw ):
580- return iter ( d .iterlists (** kw ) )
602+ return d .iterlists (** kw )
581603
582604 viewkeys = operator .methodcaller ("viewkeys" )
583605
@@ -600,21 +622,22 @@ def b(s):
600622 def u (s ):
601623 return s
602624 unichr = chr
603- if sys .version_info [1 ] <= 1 :
604- def int2byte (i ):
605- return bytes ((i ,))
606- else :
607- # This is about 2x faster than the implementation above on 3.2+
608- int2byte = operator .methodcaller ("to_bytes" , 1 , "big" )
625+ import struct
626+ int2byte = struct .Struct (">B" ).pack
627+ del struct
609628 byte2int = operator .itemgetter (0 )
610629 indexbytes = operator .getitem
611630 iterbytes = iter
612631 import io
613632 StringIO = io .StringIO
614633 BytesIO = io .BytesIO
615634 _assertCountEqual = "assertCountEqual"
616- _assertRaisesRegex = "assertRaisesRegex"
617- _assertRegex = "assertRegex"
635+ if sys .version_info [1 ] <= 1 :
636+ _assertRaisesRegex = "assertRaisesRegexp"
637+ _assertRegex = "assertRegexpMatches"
638+ else :
639+ _assertRaisesRegex = "assertRaisesRegex"
640+ _assertRegex = "assertRegex"
618641else :
619642 def b (s ):
620643 return s
@@ -780,6 +803,7 @@ def with_metaclass(meta, *bases):
780803 # metaclass for one level of class instantiation that replaces itself with
781804 # the actual metaclass.
782805 class metaclass (meta ):
806+
783807 def __new__ (cls , name , this_bases , d ):
784808 return meta (name , bases , d )
785809 return type .__new__ (metaclass , 'temporary_class' , (), {})
0 commit comments