wand.compat — Compatibility layer

This module provides several subtle things to support multiple Python versions (2.6, 2.7, 3.2–3.5) and VM implementations (CPython, PyPy).

wand.compat.PY3 = False

(bool) Whether it is Python 3.x or not.

wand.compat.binary(string, var=None)

Makes string to str in Python 2. Makes string to bytes in Python 3.

  • string (bytes, str, unicode) – a string to cast it to binary_type
  • var (str) – an optional variable name to be used for error message

alias of __builtin__.str


If filename is a text_type, encode it to binary_type according to filesystem’s default encoding.

wand.compat.file_types = (<class 'io.RawIOBase'>, <type 'file'>)

(type, tuple) Types for file objects that have fileno().

wand.compat.nested(*args, **kwds)

Combine multiple context managers into a single nested context manager.

This function has been deprecated in favour of the multiple manager form of the with statement.

The one advantage of this function over the multiple manager form of the with statement is that argument unpacking allows it to be used with a variable number of context managers as follows:

with nested(*managers):

alias of __builtin__.basestring


Makes string to str in Python 3. Does nothing in Python 2.

Parameters:string (bytes, str, unicode) – a string to cast it to text_type

alias of __builtin__.unicode

class wand.compat.xrange(stop) → xrange object

xrange(start, stop[, step]) -> xrange object

Like range(), but instead of returning a list, returns an object that generates the numbers in the range on demand. For looping, this is slightly faster than range() and more memory efficient.