30 import xmlrpc.client as xmlrpclib |
30 import xmlrpc.client as xmlrpclib |
31 |
31 |
32 if sys.version_info[0] >= 3: |
32 if sys.version_info[0] >= 3: |
33 import builtins |
33 import builtins |
34 import functools |
34 import functools |
35 builtins.xrange = range |
|
36 |
35 |
37 def _wrapattrfunc(f): |
36 def _wrapattrfunc(f): |
38 @functools.wraps(f) |
37 @functools.wraps(f) |
39 def w(object, name, *args): |
38 def w(object, name, *args): |
40 if isinstance(name, bytes): |
39 if isinstance(name, bytes): |
41 name = name.decode(u'utf-8') |
40 name = name.decode(u'utf-8') |
42 return f(object, name, *args) |
41 return f(object, name, *args) |
43 return w |
42 return w |
44 |
43 |
|
44 # these wrappers are automagically imported by hgloader |
45 delattr = _wrapattrfunc(builtins.delattr) |
45 delattr = _wrapattrfunc(builtins.delattr) |
46 getattr = _wrapattrfunc(builtins.getattr) |
46 getattr = _wrapattrfunc(builtins.getattr) |
47 hasattr = _wrapattrfunc(builtins.hasattr) |
47 hasattr = _wrapattrfunc(builtins.hasattr) |
48 setattr = _wrapattrfunc(builtins.setattr) |
48 setattr = _wrapattrfunc(builtins.setattr) |
|
49 xrange = builtins.range |
49 |
50 |
50 stringio = io.StringIO |
51 stringio = io.StringIO |
51 empty = _queue.Empty |
52 empty = _queue.Empty |
52 queue = _queue.Queue |
53 queue = _queue.Queue |
53 |
54 |