equal
deleted
inserted
replaced
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 |