Fixers¶
Each step of transforming code is encapsulated in a fixer. The command
python -m fissix -l lists them. Each can be turned on
and off individually. They are described here in more detail.
- apply¶
Removes usage of
apply(). For exampleapply(function, *args, **kwargs)is converted tofunction(*args, **kwargs).
- asserts¶
Replaces deprecated
unittestmethod names with the correct ones.From
To
failUnlessEqual(a, b)assertEquals(a, b)failIfEqual(a, b)assertNotEquals(a, b)failUnless(a)assert_(a)failIf(a)failUnlessRaises(exc, cal)failUnlessAlmostEqual(a, b)assertAlmostEquals(a, b)failIfAlmostEqual(a, b)assertNotAlmostEquals(a, b)
- basestring¶
Converts
basestringtostr.
- buffer¶
Converts
buffertomemoryview. This fixer is optional because thememoryviewAPI is similar but not exactly the same as that ofbuffer.
- dict¶
Fixes dictionary iteration methods.
dict.iteritems()is converted todict.items(),dict.iterkeys()todict.keys(), anddict.itervalues()todict.values(). Similarly,dict.viewitems(),dict.viewkeys()anddict.viewvalues()are converted respectively todict.items(),dict.keys()anddict.values(). It also wraps existing usages ofdict.items(),dict.keys(), anddict.values()in a call tolist.
- except¶
Converts
except X, Ttoexcept X as T.
- execfile¶
Removes usage of
execfile(). The argument toexecfile()is wrapped in calls toopen(),compile(), andexec().
- funcattrs¶
Fixes function attributes that have been renamed. For example,
my_function.func_closureis converted tomy_function.__closure__.
- future¶
Removes
from __future__ import new_featurestatements.
- getcwdu¶
Renames
os.getcwdu()toos.getcwd().
- has_key¶
Changes
dict.has_key(key)tokey in dict.
- idioms¶
This optional fixer performs several transformations that make Python code more idiomatic. Type comparisons like
type(x) is SomeClassandtype(x) == SomeClassare converted toisinstance(x, SomeClass).while 1becomeswhile True. This fixer also tries to make use ofsorted()in appropriate places. For example, this blockL = list(some_iterable) L.sort()
is changed to
L = sorted(some_iterable)
- import¶
Detects sibling imports and converts them to relative imports.
- imports¶
Handles module renames in the standard library.
- imports2¶
Handles other modules renames in the standard library. It is separate from the :attribute:`imports` fixer only because of technical limitations.
- input¶
Converts
input(prompt)toeval(input(prompt)).
- intern¶
Converts
intern()tosys.intern().
- isinstance¶
Fixes duplicate types in the second argument of
isinstance(). For example,isinstance(x, (int, int))is converted toisinstance(x, int)andisinstance(x, (int, float, int))is converted toisinstance(x, (int, float)).
- itertools_imports¶
Removes imports of
itertools.ifilter(),itertools.izip(), anditertools.imap(). Imports ofitertools.ifilterfalse()are also changed toitertools.filterfalse().
- itertools¶
Changes usage of
itertools.ifilter(),itertools.izip(), anditertools.imap()to their built-in equivalents.itertools.ifilterfalse()is changed toitertools.filterfalse().
- map¶
Wraps
map()in alistcall. It also changesmap(None, x)tolist(x). Usingfrom future_builtins import mapdisables this fixer.
- metaclass¶
Converts the old metaclass syntax (
__metaclass__ = Metain the class body) to the new (class X(metaclass=Meta)).
- methodattrs¶
Fixes old method attribute names. For example,
meth.im_funcis converted tometh.__func__.
- ne¶
Converts the old not-equal syntax,
<>, to!=.
- next¶
Converts the use of iterator’s
next()methods to thenext()function. It also renamesnext()methods to__next__().
- nonzero¶
Renames
__nonzero__()to__bool__().
- numliterals¶
Converts octal literals into the new syntax.
- operator¶
Converts calls to various functions in the
operatormodule to other, but equivalent, function calls. When needed, the appropriateimportstatements are added, e.g.import collections.abc. The following mapping are made:From
To
operator.isCallable(obj)callable(obj)operator.sequenceIncludes(obj)operator.contains(obj)operator.isSequenceType(obj)isinstance(obj, collections.abc.Sequence)operator.isMappingType(obj)isinstance(obj, collections.abc.Mapping)operator.isNumberType(obj)isinstance(obj, numbers.Number)operator.repeat(obj, n)operator.mul(obj, n)operator.irepeat(obj, n)operator.imul(obj, n)
- paren¶
Add extra parenthesis where they are required in list comprehensions. For example,
[x for x in 1, 2]becomes[x for x in (1, 2)].
- raise¶
Converts
raise E, Vtoraise E(V), andraise E, V, Ttoraise E(V).with_traceback(T). IfEis a tuple, the translation will be incorrect because substituting tuples for exceptions has been removed in 3.0.
- raw_input¶
Converts
raw_input()toinput().
- reduce¶
Handles the move of
reduce()tofunctools.reduce().
- reload¶
Converts
reload()toimportlib.reload().
- renames¶
Changes
sys.maxinttosys.maxsize.
- sys_exc¶
Changes the deprecated
sys.exc_value,sys.exc_type,sys.exc_tracebackto usesys.exc_info().
- tuple_params¶
Removes implicit tuple parameter unpacking. This fixer inserts temporary variables.
- ws_comma¶
Removes excess whitespace from comma separated items. This fixer is optional.
- xreadlines¶
Changes
for x in file.xreadlines()tofor x in file.
- zip¶
Wraps
zip()usage in alistcall. This is disabled whenfrom future_builtins import zipappears.
- sorted¶
Wraps the argument
cmp()insorted()by :function:`functools.cmp_to_key` and pass it tosorted()through thekey()argument.