lazy_compat Module¶
Compatibility tools to keep the same source working in both Python 2 and 3
Summary of module contents:
| Name | Description | 
|---|---|
| orange | Old Python 2 range (returns a list), working both in Python 2 and 3. | 
| PYTHON2 | bool(x) -> bool | 
| builtins | Built-in functions, exceptions, and other objects. | 
| xrange | range(stop) -> range object range(start, stop[, step]) -> range object | 
| xzip | zip(iter1 [,iter2 [...]]) –> zip object | 
| xzip_longest | zip_longest(iter1 [,iter2 [...]], [fillvalue=None]) –> zip_longest object | 
| xmap | map(func, *iterables) –> map object | 
| xfilter | filter(function or None, iterable) –> filter object | 
| STR_TYPES | tuple() -> empty tuple tuple(iterable) -> tuple initialized from iterable’s items | 
| INT_TYPES | tuple() -> empty tuple tuple(iterable) -> tuple initialized from iterable’s items | 
| SOME_GEN_TYPES | tuple() -> empty tuple tuple(iterable) -> tuple initialized from iterable’s items | 
| NEXT_NAME | str(object=’‘) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str | 
| iteritems | Function to use the generator-based items iterator over built-in dictionaries in both Python 2 and 3. | 
| itervalues | Function to use the generator-based value iterator over built-in dictionaries in both Python 2 and 3. | 
| im_func | Gets the function from the method in both Python 2 and 3. | 
| meta | Allows unique syntax similar to Python 3 for working with metaclasses in both Python 2 and Python 3. | 
- 
orange(*args, **kwargs)[source]¶ Old Python 2 range (returns a list), working both in Python 2 and 3.
- 
xrange¶ alias of
range
- 
xzip¶ alias of
zip
- 
xzip_longest¶ alias of
zip_longest
- 
xmap¶ alias of
map
- 
xfilter¶ alias of
filter
- 
iteritems(dictionary)[source]¶ Function to use the generator-based items iterator over built-in dictionaries in both Python 2 and 3.
- 
itervalues(dictionary)[source]¶ Function to use the generator-based value iterator over built-in dictionaries in both Python 2 and 3.
- 
meta(*bases, **kwargs)[source]¶ Allows unique syntax similar to Python 3 for working with metaclasses in both Python 2 and Python 3.
- Examples:
 >>> class BadMeta(type): # An usual metaclass definition ... def __new__(mcls, name, bases, namespace): ... if "bad" not in namespace: # A bad constraint ... raise Exception("Oops, not bad enough") ... value = len(name) # To ensure this metaclass is called again ... def really_bad(self): ... return self.bad() * value ... namespace["really_bad"] = really_bad ... return super(BadMeta, mcls).__new__(mcls, name, bases, namespace) ... >>> class Bady(meta(object, metaclass=BadMeta)): ... def bad(self): ... return "HUA " ... >>> class BadGuy(Bady): ... def bad(self): ... return "R" ... >>> issubclass(BadGuy, Bady) True >>> Bady().really_bad() # Here value = 4 'HUA HUA HUA HUA ' >>> BadGuy().really_bad() # Called metaclass ``__new__`` again, so value = 6 'RRRRRR'