mercurial/pycompat.py
changeset 29799 45fa8de47a0f
parent 29798 31d588fcd2b9
child 29800 178c89e8519a
equal deleted inserted replaced
29798:31d588fcd2b9 29799:45fa8de47a0f
    29     import urllib.parse as urlparse
    29     import urllib.parse as urlparse
    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     builtins.xrange = range
    35     builtins.xrange = range
       
    36 
       
    37     def _wrapattrfunc(f):
       
    38         @functools.wraps(f)
       
    39         def w(object, name, *args):
       
    40             if isinstance(name, bytes):
       
    41                 name = name.decode(u'utf-8')
       
    42             return f(object, name, *args)
       
    43         return w
       
    44 
       
    45     delattr = _wrapattrfunc(builtins.delattr)
       
    46     getattr = _wrapattrfunc(builtins.getattr)
       
    47     hasattr = _wrapattrfunc(builtins.hasattr)
       
    48     setattr = _wrapattrfunc(builtins.setattr)
    35 
    49 
    36 stringio = io.StringIO
    50 stringio = io.StringIO
    37 empty = _queue.Empty
    51 empty = _queue.Empty
    38 queue = _queue.Queue
    52 queue = _queue.Queue
    39 
    53