Back to index

python3.2  3.2.2
Public Member Functions | Public Attributes | Static Public Attributes | Static Private Attributes
lib2to3.fixer_base.BaseFix Class Reference

Inherits _object.

Inherited by bad_order.FixBadOrder, lib2to3.fixer_base.ConditionalFix, lib2to3.fixes.fix_apply.FixApply, lib2to3.fixes.fix_basestring.FixBasestring, lib2to3.fixes.fix_buffer.FixBuffer, lib2to3.fixes.fix_callable.FixCallable, lib2to3.fixes.fix_dict.FixDict, lib2to3.fixes.fix_except.FixExcept, lib2to3.fixes.fix_exec.FixExec, lib2to3.fixes.fix_execfile.FixExecfile, lib2to3.fixes.fix_exitfunc.FixExitfunc, lib2to3.fixes.fix_funcattrs.FixFuncattrs, lib2to3.fixes.fix_future.FixFuture, lib2to3.fixes.fix_getcwdu.FixGetcwdu, lib2to3.fixes.fix_has_key.FixHasKey, lib2to3.fixes.fix_idioms.FixIdioms, lib2to3.fixes.fix_import.FixImport, lib2to3.fixes.fix_imports.FixImports, lib2to3.fixes.fix_input.FixInput, lib2to3.fixes.fix_intern.FixIntern, lib2to3.fixes.fix_isinstance.FixIsinstance, lib2to3.fixes.fix_itertools.FixItertools, lib2to3.fixes.fix_itertools_imports.FixItertoolsImports, lib2to3.fixes.fix_long.FixLong, lib2to3.fixes.fix_metaclass.FixMetaclass, lib2to3.fixes.fix_methodattrs.FixMethodattrs, lib2to3.fixes.fix_ne.FixNe, lib2to3.fixes.fix_next.FixNext, lib2to3.fixes.fix_nonzero.FixNonzero, lib2to3.fixes.fix_numliterals.FixNumliterals, lib2to3.fixes.fix_operator.FixOperator, lib2to3.fixes.fix_paren.FixParen, lib2to3.fixes.fix_print.FixPrint, lib2to3.fixes.fix_raise.FixRaise, lib2to3.fixes.fix_raw_input.FixRawInput, lib2to3.fixes.fix_reduce.FixReduce, lib2to3.fixes.fix_renames.FixRenames, lib2to3.fixes.fix_repr.FixRepr, lib2to3.fixes.fix_set_literal.FixSetLiteral, lib2to3.fixes.fix_standarderror.FixStandarderror, lib2to3.fixes.fix_sys_exc.FixSysExc, lib2to3.fixes.fix_throw.FixThrow, lib2to3.fixes.fix_tuple_params.FixTupleParams, lib2to3.fixes.fix_types.FixTypes, lib2to3.fixes.fix_unicode.FixUnicode, lib2to3.fixes.fix_ws_comma.FixWsComma, lib2to3.fixes.fix_xrange.FixXrange, lib2to3.fixes.fix_xreadlines.FixXreadlines, myfixes.fix_explicit.FixExplicit, myfixes.fix_first.FixFirst, myfixes.fix_last.FixLast, myfixes.fix_parrot.FixParrot, and myfixes.fix_preorder.FixPreorder.

Collaboration diagram for lib2to3.fixer_base.BaseFix:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def __init__
def compile_pattern
def set_filename
def match
def transform
def new_name
def log_message
def cannot_convert
def warning
def start_tree
def finish_tree

Public Attributes

 log
 first_log
 used_names
 numbers
_PyObject_HEAD_EXTRA Py_ssize_t ob_refcnt
struct _typeobjectob_type

Static Public Attributes

 PATTERN = None
 pattern = None
 pattern_tree = None
 options = None
 filename = None
 logger = None
tuple numbers = itertools.count(1)
tuple used_names = set()
string order = "post"
 explicit = False
int run_order = 5
 keep_line_order = False
 BM_compatible = False
 syms = pygram.python_symbols

Static Private Attributes

 _accept_type = None

Detailed Description

Optional base class for fixers.

The subclass name must be FixFooBar where FooBar is the result of
removing underscores and capitalizing the words of the fix name.
For example, the class name for a fixer named 'has_key' should be
FixHasKey.

Definition at line 15 of file fixer_base.py.


Constructor & Destructor Documentation

def lib2to3.fixer_base.BaseFix.__init__ (   self,
  options,
  log 
)
Initializer.  Subclass may override.

Args:
    options: an dict containing the options passed to RefactoringTool
    that could be used to customize the fixer through the command line.
    log: a list to append warnings and other messages to.

Definition at line 49 of file fixer_base.py.

00049 
00050     def __init__(self, options, log):
00051         """Initializer.  Subclass may override.
00052 
00053         Args:
00054             options: an dict containing the options passed to RefactoringTool
00055             that could be used to customize the fixer through the command line.
00056             log: a list to append warnings and other messages to.
00057         """
00058         self.options = options
00059         self.log = log
00060         self.compile_pattern()

Here is the caller graph for this function:


Member Function Documentation

def lib2to3.fixer_base.BaseFix.cannot_convert (   self,
  node,
  reason = None 
)
Warn the user that a given chunk of code is not valid Python 3,
but that it cannot be converted automatically.

First argument is the top-level node for the code in question.
Optional second argument is why it can't be converted.

Definition at line 125 of file fixer_base.py.

00125 
00126     def cannot_convert(self, node, reason=None):
00127         """Warn the user that a given chunk of code is not valid Python 3,
00128         but that it cannot be converted automatically.
00129 
00130         First argument is the top-level node for the code in question.
00131         Optional second argument is why it can't be converted.
00132         """
00133         lineno = node.get_lineno()
00134         for_output = node.clone()
00135         for_output.prefix = ""
00136         msg = "Line %d: could not convert: %s"
00137         self.log_message(msg % (lineno, for_output))
00138         if reason:
00139             self.log_message(reason)

Here is the call graph for this function:

Here is the caller graph for this function:

Compiles self.PATTERN into self.pattern.

Subclass may override if it doesn't want to use
self.{pattern,PATTERN} in .match().

Reimplemented in lib2to3.fixes.fix_imports.FixImports.

Definition at line 61 of file fixer_base.py.

00061 
00062     def compile_pattern(self):
00063         """Compiles self.PATTERN into self.pattern.
00064 
00065         Subclass may override if it doesn't want to use
00066         self.{pattern,PATTERN} in .match().
00067         """
00068         if self.PATTERN is not None:
00069             PC = PatternCompiler()
00070             self.pattern, self.pattern_tree = PC.compile_pattern(self.PATTERN,
00071                                                                  with_tree=True)

def lib2to3.fixer_base.BaseFix.finish_tree (   self,
  tree,
  filename 
)
Some fixers need to maintain tree-wide state.
This method is called once, at the conclusion of tree fix-up.

tree - the root node of the tree to be processed.
filename - the name of the file the tree came from.

Reimplemented in lib2to3.fixes.fix_xrange.FixXrange.

Definition at line 162 of file fixer_base.py.

00162 
00163     def finish_tree(self, tree, filename):
00164         """Some fixers need to maintain tree-wide state.
00165         This method is called once, at the conclusion of tree fix-up.
00166 
00167         tree - the root node of the tree to be processed.
00168         filename - the name of the file the tree came from.
00169         """
00170         pass
00171 

def lib2to3.fixer_base.BaseFix.log_message (   self,
  message 
)

Definition at line 119 of file fixer_base.py.

00119 
00120     def log_message(self, message):
00121         if self.first_log:
00122             self.first_log = False
00123             self.log.append("### In file %s ###" % self.filename)
00124         self.log.append(message)

Here is the caller graph for this function:

def lib2to3.fixer_base.BaseFix.match (   self,
  node 
)
Returns match for a given parse tree node.

Should return a true or false object (not necessarily a bool).
It may return a non-empty dict of matching sub-nodes as
returned by a matching pattern.

Subclass may override.

Reimplemented in lib2to3.fixes.fix_imports.FixImports, lib2to3.fixes.fix_idioms.FixIdioms, lib2to3.fixes.fix_renames.FixRenames, lib2to3.fixes.fix_ne.FixNe, lib2to3.fixes.fix_numliterals.FixNumliterals, myfixes.fix_last.FixLast, myfixes.fix_first.FixFirst, and myfixes.fix_preorder.FixPreorder.

Definition at line 80 of file fixer_base.py.

00080 
00081     def match(self, node):
00082         """Returns match for a given parse tree node.
00083 
00084         Should return a true or false object (not necessarily a bool).
00085         It may return a non-empty dict of matching sub-nodes as
00086         returned by a matching pattern.
00087 
00088         Subclass may override.
00089         """
00090         results = {"node": node}
00091         return self.pattern.match(node, results) and results

Here is the caller graph for this function:

def lib2to3.fixer_base.BaseFix.new_name (   self,
  template = "xxx_todo_changeme" 
)
Return a string suitable for use as an identifier

The new name is guaranteed not to conflict with other identifiers.

Definition at line 108 of file fixer_base.py.

00108 
00109     def new_name(self, template="xxx_todo_changeme"):
00110         """Return a string suitable for use as an identifier
00111 
00112         The new name is guaranteed not to conflict with other identifiers.
00113         """
00114         name = template
00115         while name in self.used_names:
00116             name = template + str(next(self.numbers))
00117         self.used_names.add(name)
00118         return name

Here is the caller graph for this function:

def lib2to3.fixer_base.BaseFix.set_filename (   self,
  filename 
)
Set the filename, and a logger derived from it.

The main refactoring tool should call this.

Definition at line 72 of file fixer_base.py.

00072 
00073     def set_filename(self, filename):
00074         """Set the filename, and a logger derived from it.
00075 
00076         The main refactoring tool should call this.
00077         """
00078         self.filename = filename
00079         self.logger = logging.getLogger(filename)

def lib2to3.fixer_base.BaseFix.start_tree (   self,
  tree,
  filename 
)
Some fixers need to maintain tree-wide state.
This method is called once, at the start of tree fix-up.

tree - the root node of the tree to be processed.
filename - the name of the file the tree came from.

Reimplemented in lib2to3.fixes.fix_imports.FixImports, lib2to3.fixes.fix_import.FixImport, lib2to3.fixes.fix_next.FixNext, lib2to3.fixes.fix_exitfunc.FixExitfunc, and lib2to3.fixes.fix_xrange.FixXrange.

Definition at line 150 of file fixer_base.py.

00150 
00151     def start_tree(self, tree, filename):
00152         """Some fixers need to maintain tree-wide state.
00153         This method is called once, at the start of tree fix-up.
00154 
00155         tree - the root node of the tree to be processed.
00156         filename - the name of the file the tree came from.
00157         """
00158         self.used_names = tree.used_names
00159         self.set_filename(filename)
00160         self.numbers = itertools.count(1)
00161         self.first_log = True

def lib2to3.fixer_base.BaseFix.transform (   self,
  node,
  results 
)
Returns the transformation for a given parse tree node.

Args:
  node: the root of the parse tree that matched the fixer.
  results: a dict mapping symbolic names to part of the match.

Returns:
  None, or a node that is a modified copy of the
  argument node.  The node argument may also be modified in-place to
  effect the same change.

Subclass *must* override.

Reimplemented in lib2to3.fixes.fix_urllib.FixUrllib, lib2to3.fixes.fix_metaclass.FixMetaclass, lib2to3.fixes.fix_imports.FixImports, lib2to3.fixes.fix_idioms.FixIdioms, lib2to3.fixes.fix_has_key.FixHasKey, lib2to3.fixes.fix_renames.FixRenames, lib2to3.fixes.fix_map.FixMap, lib2to3.fixes.fix_types.FixTypes, lib2to3.fixes.fix_dict.FixDict, lib2to3.fixes.fix_filter.FixFilter, lib2to3.fixes.fix_import.FixImport, lib2to3.fixes.fix_except.FixExcept, lib2to3.fixes.fix_next.FixNext, lib2to3.fixes.fix_tuple_params.FixTupleParams, lib2to3.fixes.fix_operator.FixOperator, lib2to3.fixes.fix_raise.FixRaise, lib2to3.fixes.fix_exitfunc.FixExitfunc, lib2to3.fixes.fix_paren.FixParen, lib2to3.fixes.fix_print.FixPrint, lib2to3.fixes.fix_reduce.FixReduce, lib2to3.fixes.fix_apply.FixApply, lib2to3.fixes.fix_callable.FixCallable, lib2to3.fixes.fix_isinstance.FixIsinstance, lib2to3.fixes.fix_intern.FixIntern, lib2to3.fixes.fix_itertools.FixItertools, lib2to3.fixes.fix_exec.FixExec, lib2to3.fixes.fix_set_literal.FixSetLiteral, lib2to3.fixes.fix_xrange.FixXrange, lib2to3.fixes.fix_throw.FixThrow, lib2to3.fixes.fix_execfile.FixExecfile, lib2to3.fixes.fix_ws_comma.FixWsComma, lib2to3.fixes.fix_zip.FixZip, lib2to3.fixes.fix_sys_exc.FixSysExc, lib2to3.fixes.fix_methodattrs.FixMethodattrs, lib2to3.fixes.fix_ne.FixNe, lib2to3.fixes.fix_numliterals.FixNumliterals, lib2to3.fixes.fix_buffer.FixBuffer, lib2to3.fixes.fix_future.FixFuture, lib2to3.fixes.fix_input.FixInput, lib2to3.fixes.fix_xreadlines.FixXreadlines, lib2to3.fixes.fix_funcattrs.FixFuncattrs, lib2to3.fixes.fix_nonzero.FixNonzero, lib2to3.fixes.fix_repr.FixRepr, lib2to3.fixes.fix_getcwdu.FixGetcwdu, lib2to3.fixes.fix_standarderror.FixStandarderror, lib2to3.fixes.fix_long.FixLong, lib2to3.fixes.fix_unicode.FixUnicode, lib2to3.fixes.fix_raw_input.FixRawInput, lib2to3.fixes.fix_itertools_imports.FixItertoolsImports, lib2to3.fixes.fix_basestring.FixBasestring, and myfixes.fix_parrot.FixParrot.

Definition at line 92 of file fixer_base.py.

00092 
00093     def transform(self, node, results):
00094         """Returns the transformation for a given parse tree node.
00095 
00096         Args:
00097           node: the root of the parse tree that matched the fixer.
00098           results: a dict mapping symbolic names to part of the match.
00099 
00100         Returns:
00101           None, or a node that is a modified copy of the
00102           argument node.  The node argument may also be modified in-place to
00103           effect the same change.
00104 
00105         Subclass *must* override.
00106         """
00107         raise NotImplementedError()

Here is the caller graph for this function:

def lib2to3.fixer_base.BaseFix.warning (   self,
  node,
  reason 
)
Used for warning the user about possible uncertainty in the
translation.

First argument is the top-level node for the code in question.
Optional second argument is why it can't be converted.

Definition at line 140 of file fixer_base.py.

00140 
00141     def warning(self, node, reason):
00142         """Used for warning the user about possible uncertainty in the
00143         translation.
00144 
00145         First argument is the top-level node for the code in question.
00146         Optional second argument is why it can't be converted.
00147         """
00148         lineno = node.get_lineno()
00149         self.log_message("Line %d: %s" % (lineno, reason))

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

lib2to3.fixer_base.BaseFix._accept_type = None [static, private]

Reimplemented in lib2to3.fixes.fix_metaclass.FixMetaclass, lib2to3.fixes.fix_imports.FixImports, lib2to3.fixes.fix_types.FixTypes, lib2to3.fixes.fix_dict.FixDict, lib2to3.fixes.fix_renames.FixRenames, lib2to3.fixes.fix_has_key.FixHasKey, lib2to3.fixes.fix_import.FixImport, lib2to3.fixes.fix_except.FixExcept, lib2to3.fixes.fix_tuple_params.FixTupleParams, lib2to3.fixes.fix_raise.FixRaise, lib2to3.fixes.fix_print.FixPrint, lib2to3.fixes.fix_map.FixMap, lib2to3.fixes.fix_operator.FixOperator, lib2to3.fixes.fix_filter.FixFilter, lib2to3.fixes.fix_exec.FixExec, lib2to3.fixes.fix_next.FixNext, lib2to3.fixes.fix_isinstance.FixIsinstance, lib2to3.fixes.fix_reduce.FixReduce, lib2to3.fixes.fix_sys_exc.FixSysExc, lib2to3.fixes.fix_throw.FixThrow, lib2to3.fixes.fix_execfile.FixExecfile, lib2to3.fixes.fix_methodattrs.FixMethodattrs, lib2to3.fixes.fix_zip.FixZip, lib2to3.fixes.fix_apply.FixApply, lib2to3.fixes.fix_intern.FixIntern, lib2to3.fixes.fix_itertools.FixItertools, lib2to3.fixes.fix_callable.FixCallable, lib2to3.fixes.fix_input.FixInput, lib2to3.fixes.fix_set_literal.FixSetLiteral, lib2to3.fixes.fix_exitfunc.FixExitfunc, lib2to3.fixes.fix_long.FixLong, lib2to3.fixes.fix_paren.FixParen, lib2to3.fixes.fix_repr.FixRepr, lib2to3.fixes.fix_unicode.FixUnicode, lib2to3.fixes.fix_xrange.FixXrange, lib2to3.fixes.fix_buffer.FixBuffer, lib2to3.fixes.fix_future.FixFuture, lib2to3.fixes.fix_standarderror.FixStandarderror, lib2to3.fixes.fix_xreadlines.FixXreadlines, lib2to3.fixes.fix_getcwdu.FixGetcwdu, lib2to3.fixes.fix_funcattrs.FixFuncattrs, lib2to3.fixes.fix_raw_input.FixRawInput, lib2to3.fixes.fix_basestring.FixBasestring, lib2to3.fixes.fix_itertools_imports.FixItertoolsImports, and lib2to3.fixes.fix_nonzero.FixNonzero.

Definition at line 42 of file fixer_base.py.

Definition at line 29 of file fixer_base.py.

Definition at line 121 of file fixer_base.py.

Definition at line 58 of file fixer_base.py.

Definition at line 30 of file fixer_base.py.

Definition at line 31 of file fixer_base.py.

Definition at line 159 of file fixer_base.py.

Definition at line 107 of file object.h.

struct _typeobject* _object::ob_type [inherited]

Definition at line 108 of file object.h.

Definition at line 28 of file fixer_base.py.

Reimplemented in lib2to3.fixes.fix_metaclass.FixMetaclass, lib2to3.fixes.fix_imports.FixImports, lib2to3.fixes.fix_types.FixTypes, lib2to3.fixes.fix_dict.FixDict, lib2to3.fixes.fix_renames.FixRenames, lib2to3.fixes.fix_has_key.FixHasKey, lib2to3.fixes.fix_import.FixImport, lib2to3.fixes.fix_idioms.FixIdioms, lib2to3.fixes.fix_except.FixExcept, lib2to3.fixes.fix_operator.FixOperator, lib2to3.fixes.fix_tuple_params.FixTupleParams, lib2to3.fixes.fix_raise.FixRaise, lib2to3.fixes.fix_print.FixPrint, lib2to3.fixes.fix_map.FixMap, lib2to3.fixes.fix_filter.FixFilter, lib2to3.fixes.fix_exec.FixExec, lib2to3.fixes.fix_callable.FixCallable, lib2to3.fixes.fix_reduce.FixReduce, lib2to3.fixes.fix_next.FixNext, lib2to3.fixes.fix_execfile.FixExecfile, lib2to3.fixes.fix_intern.FixIntern, lib2to3.fixes.fix_isinstance.FixIsinstance, lib2to3.fixes.fix_sys_exc.FixSysExc, lib2to3.fixes.fix_throw.FixThrow, lib2to3.fixes.fix_apply.FixApply, lib2to3.fixes.fix_itertools.FixItertools, lib2to3.fixes.fix_methodattrs.FixMethodattrs, lib2to3.fixes.fix_set_literal.FixSetLiteral, lib2to3.fixes.fix_zip.FixZip, lib2to3.fixes.fix_buffer.FixBuffer, lib2to3.fixes.fix_ws_comma.FixWsComma, lib2to3.fixes.fix_exitfunc.FixExitfunc, lib2to3.fixes.fix_input.FixInput, lib2to3.fixes.fix_paren.FixParen, lib2to3.fixes.fix_future.FixFuture, lib2to3.fixes.fix_long.FixLong, lib2to3.fixes.fix_repr.FixRepr, lib2to3.fixes.fix_unicode.FixUnicode, lib2to3.fixes.fix_xrange.FixXrange, lib2to3.fixes.fix_getcwdu.FixGetcwdu, lib2to3.fixes.fix_standarderror.FixStandarderror, lib2to3.fixes.fix_xreadlines.FixXreadlines, lib2to3.fixes.fix_funcattrs.FixFuncattrs, lib2to3.fixes.fix_basestring.FixBasestring, lib2to3.fixes.fix_raw_input.FixRawInput, lib2to3.fixes.fix_itertools_imports.FixItertoolsImports, lib2to3.fixes.fix_nonzero.FixNonzero, and myfixes.fix_parrot.FixParrot.

Definition at line 25 of file fixer_base.py.

Definition at line 26 of file fixer_base.py.

Definition at line 27 of file fixer_base.py.

Definition at line 47 of file fixer_base.py.

tuple lib2to3.fixer_base.BaseFix.used_names = set() [static]

Definition at line 32 of file fixer_base.py.

Definition at line 157 of file fixer_base.py.


The documentation for this class was generated from the following file: