Back to index

python3.2  3.2.2
Public Member Functions | Public Attributes | Static Public Attributes | Private Attributes
lib2to3.fixer_base.ConditionalFix Class Reference
Inheritance diagram for lib2to3.fixer_base.ConditionalFix:
Inheritance graph
[legend]
Collaboration diagram for lib2to3.fixer_base.ConditionalFix:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def start_tree
def should_skip
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

 numbers
 used_names
 log
 first_log
_PyObject_HEAD_EXTRA Py_ssize_t ob_refcnt
struct _typeobjectob_type

Static Public Attributes

 skip_on = None
 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

Private Attributes

 _should_skip

Detailed Description

Base class for fixers which not execute if an import is found. 

Definition at line 172 of file fixer_base.py.


Member Function Documentation

def lib2to3.fixer_base.BaseFix.cannot_convert (   self,
  node,
  reason = None 
) [inherited]
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:

def lib2to3.fixer_base.BaseFix.compile_pattern (   self) [inherited]
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 
) [inherited]
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 
) [inherited]

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 
) [inherited]
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" 
) [inherited]
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 
) [inherited]
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)

Definition at line 182 of file fixer_base.py.

00182 
00183     def should_skip(self, node):
00184         if self._should_skip is not None:
00185             return self._should_skip
00186         pkg = self.skip_on.split(".")
00187         name = pkg[-1]
00188         pkg = ".".join(pkg[:-1])
00189         self._should_skip = does_tree_import(pkg, name, node)
00190         return self._should_skip

Here is the call graph for this function:

Here is the caller graph for this function:

def lib2to3.fixer_base.BaseFix.start_tree (   self,
  tree,
  filename 
) [inherited]
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

Definition at line 178 of file fixer_base.py.

00178 
00179     def start_tree(self, *args):
00180         super(ConditionalFix, self).start_tree(*args)
00181         self._should_skip = None

def lib2to3.fixer_base.BaseFix.transform (   self,
  node,
  results 
) [inherited]
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 
) [inherited]
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

Definition at line 180 of file fixer_base.py.

lib2to3.fixer_base.BaseFix.BM_compatible = False [static, inherited]

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.

lib2to3.fixer_base.BaseFix.explicit = False [static, inherited]
lib2to3.fixer_base.BaseFix.filename = None [static, inherited]

Definition at line 29 of file fixer_base.py.

Definition at line 121 of file fixer_base.py.

lib2to3.fixer_base.BaseFix.keep_line_order = False [static, inherited]

Definition at line 58 of file fixer_base.py.

lib2to3.fixer_base.BaseFix.logger = None [static, inherited]

Definition at line 30 of file fixer_base.py.

tuple lib2to3.fixer_base.BaseFix.numbers = itertools.count(1) [static, inherited]

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.

lib2to3.fixer_base.BaseFix.options = None [static, inherited]

Definition at line 28 of file fixer_base.py.

string lib2to3.fixer_base.BaseFix.order = "post" [static, inherited]
lib2to3.fixer_base.BaseFix.PATTERN = None [static, inherited]

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.

lib2to3.fixer_base.BaseFix.pattern = None [static, inherited]

Definition at line 26 of file fixer_base.py.

lib2to3.fixer_base.BaseFix.pattern_tree = None [static, inherited]

Definition at line 27 of file fixer_base.py.

int lib2to3.fixer_base.BaseFix.run_order = 5 [static, inherited]

Definition at line 47 of file fixer_base.py.

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

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: