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
unittest
method 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
basestring
tostr
.
-
buffer
¶ Converts
buffer
tomemoryview
. This fixer is optional because thememoryview
API 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, T
toexcept 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_closure
is converted tomy_function.__closure__
.
-
future
¶ Removes
from __future__ import new_feature
statements.
-
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 SomeClass
andtype(x) == SomeClass
are converted toisinstance(x, SomeClass)
.while 1
becomeswhile 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 alist
call. It also changesmap(None, x)
tolist(x)
. Usingfrom future_builtins import map
disables this fixer.
-
metaclass
¶ Converts the old metaclass syntax (
__metaclass__ = Meta
in the class body) to the new (class X(metaclass=Meta)
).
-
methodattrs
¶ Fixes old method attribute names. For example,
meth.im_func
is 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
operator
module to other, but equivalent, function calls. When needed, the appropriateimport
statements 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, V
toraise E(V)
, andraise E, V, T
toraise E(V).with_traceback(T)
. IfE
is 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.maxint
tosys.maxsize
.
-
sys_exc
¶ Changes the deprecated
sys.exc_value
,sys.exc_type
,sys.exc_traceback
to 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 alist
call. This is disabled whenfrom future_builtins import zip
appears.
-
sorted
¶ Wraps the argument
cmp()
insorted()
by :function:`functools.cmp_to_key` and pass it tosorted()
through thekey()
argument.