mercurial/pycompat.py
changeset 39201 45e05d39d9ce
parent 38782 7eba8f83129b
child 39302 11d3cd3f0ae5
equal deleted inserted replaced
39197:d859b48730b8 39201:45e05d39d9ce
   276     delattr = _wrapattrfunc(builtins.delattr)
   276     delattr = _wrapattrfunc(builtins.delattr)
   277     getattr = _wrapattrfunc(builtins.getattr)
   277     getattr = _wrapattrfunc(builtins.getattr)
   278     hasattr = _wrapattrfunc(builtins.hasattr)
   278     hasattr = _wrapattrfunc(builtins.hasattr)
   279     setattr = _wrapattrfunc(builtins.setattr)
   279     setattr = _wrapattrfunc(builtins.setattr)
   280     xrange = builtins.range
   280     xrange = builtins.range
       
   281     membershiprange = builtins.range
   281     unicode = str
   282     unicode = str
   282 
   283 
   283     def open(name, mode='r', buffering=-1, encoding=None):
   284     def open(name, mode='r', buffering=-1, encoding=None):
   284         return builtins.open(name, sysstr(mode), buffering, encoding)
   285         return builtins.open(name, sysstr(mode), buffering, encoding)
   285 
   286 
   340     maybebytestr = identity
   341     maybebytestr = identity
   341     sysbytes = identity
   342     sysbytes = identity
   342     sysstr = identity
   343     sysstr = identity
   343     strurl = identity
   344     strurl = identity
   344     bytesurl = identity
   345     bytesurl = identity
       
   346 
       
   347     class membershiprange(object):
       
   348         "Like xrange(a,b) but with constant-time membership test"
       
   349         def __init__(self, a, b):
       
   350             self._range = xrange(a, b)
       
   351         def __getitem__(self, n):
       
   352             return self._range[n]
       
   353         def __hash__(self):
       
   354             return hash(self._range)
       
   355         def __iter__(self):
       
   356             return iter(self._range)
       
   357         def __len__(self):
       
   358             return len(self._range)
       
   359         def __reversed__(self):
       
   360             return reversed(self._range)
       
   361         def __contains__(self, n):
       
   362             if not self._range:
       
   363                 return False
       
   364             return n >= self._range[0] and n <= self._range[-1]
   345 
   365 
   346     # this can't be parsed on Python 3
   366     # this can't be parsed on Python 3
   347     exec('def raisewithtb(exc, tb):\n'
   367     exec('def raisewithtb(exc, tb):\n'
   348          '    raise exc, None, tb\n')
   368          '    raise exc, None, tb\n')
   349 
   369