diff -r 1d8eadd8873e -r 2b768afcaee1 src/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html --- a/src/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html Wed Sep 14 11:07:55 2022 +0200 +++ b/src/eric7/Documentation/Source/eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html Thu Sep 15 10:09:53 2022 +0200 @@ -14,7 +14,7 @@ <h3>Global Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>BugBearContext</td></tr> </table> <h3>Classes</h3> @@ -33,6 +33,10 @@ <td>Class implementing a node visitor to check logging statements.</td> </tr> <tr> +<td><a href="#M520NameFinder">M520NameFinder</a></td> +<td>Class to extract a name out of a tree of nodes ignoring names defined within the local scope of a comprehension.</td> +</tr> +<tr> <td><a href="#MiscellaneousChecker">MiscellaneousChecker</a></td> <td>Class implementing a checker for miscellaneous checks.</td> </tr> @@ -75,7 +79,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>NodeWindowSize</td></tr> +<tr><td>CONTEXTFUL_NODES</td></tr><tr><td>FUNCTION_NODES</td></tr><tr><td>NodeWindowSize</td></tr> </table> <h3>Class Methods</h3> @@ -91,7 +95,7 @@ <td>Constructor</td> </tr> <tr> -<td><a href="#BugBearVisitor.__checkForM502">__checkForM502</a></td> +<td><a href="#BugBearVisitor.__checkForM505">__checkForM505</a></td> <td>Private method to check the use of *strip().</td> </tr> <tr> @@ -99,6 +103,98 @@ <td>Private method to check for unused loop variables.</td> </tr> <tr> +<td><a href="#BugBearVisitor.__checkForM512">__checkForM512</a></td> +<td>Private method to check for return/continue/break inside finally blocks.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM515">__checkForM515</a></td> +<td>Private method to check for pointless comparisons.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM516">__checkForM516</a></td> +<td>Private method to check for raising a literal instead of an exception.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM517">__checkForM517</a></td> +<td>Private method to check for use of the evil syntax 'with assertRaises(Exception):.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM518">__checkForM518</a></td> +<td>Private method to check for useless expressions.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM519">__checkForM519</a></td> +<td>Private method to check for use of 'functools.lru_cache' or 'functools.cache'.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM520">__checkForM520</a></td> +<td>Private method to check for a loop that modifies its iterable.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM521">__checkForM521</a></td> +<td>Private method to check for use of an f-string as docstring.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM522">__checkForM522</a></td> +<td>Private method to check for use of an f-string as docstring.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM523">__checkForM523</a></td> +<td>Private method to check that functions (including lambdas) do not use loop variables.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM524">__checkForM524</a></td> +<td>Private method to check for inheritance from abstract classes in abc and lack of any methods decorated with abstract*.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__checkForM525">__checkForM525</a></td> +<td>Private method to check for exceptions being handled multiple times.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__childrenInScope">__childrenInScope</a></td> +<td>Private method to get all child nodes in the given scope.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__composeCallPath">__composeCallPath</a></td> +<td>Private method get the individual elements of the call path of a node.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__getAssignedNames">__getAssignedNames</a></td> +<td>Private method to get the names of a for loop.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__isIdentifier">__isIdentifier</a></td> +<td>Private method to check if arg is a valid identifier.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__namesFromAssignments">__namesFromAssignments</a></td> +<td>Private method to get names of an assignment.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__toNameStr">__toNameStr</a></td> +<td>Private method to turn Name and Attribute nodes to strings, handling any depth of attribute accesses.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.__typesafeIssubclass">__typesafeIssubclass</a></td> +<td>Private method implementing a type safe issubclass() function.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor._loop">_loop</a></td> +<td></td> +</tr> +<tr> +<td><a href="#BugBearVisitor.isAbcClass">isAbcClass</a></td> +<td></td> +</tr> +<tr> +<td><a href="#BugBearVisitor.isAbstractDecorator">isAbstractDecorator</a></td> +<td></td> +</tr> +<tr> +<td><a href="#BugBearVisitor.nodeStack">nodeStack</a></td> +<td>Public method to get a reference to the most recent node stack.</td> +</tr> +<tr> <td><a href="#BugBearVisitor.visit">visit</a></td> <td>Public method to traverse a given AST node.</td> </tr> @@ -115,25 +211,69 @@ <td>Public method to handle 'for' statements.</td> </tr> <tr> -<td><a href="#BugBearVisitor.visit_Attribute">visit_Attribute</a></td> -<td>Public method to handle attributes.</td> +<td><a href="#BugBearVisitor.visit_Call">visit_Call</a></td> +<td>Public method to handle a function call.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_ClassDef">visit_ClassDef</a></td> +<td>Public method to handle class definitions.</td> </tr> <tr> -<td><a href="#BugBearVisitor.visit_Call">visit_Call</a></td> -<td>Public method to handle a function call.</td> +<td><a href="#BugBearVisitor.visit_Compare">visit_Compare</a></td> +<td>Public method to handle comparison statements.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_DictComp">visit_DictComp</a></td> +<td>Public method to handle dictionary comprehensions.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_ExceptHandler">visit_ExceptHandler</a></td> +<td>Public method to handle exception handlers.</td> </tr> <tr> <td><a href="#BugBearVisitor.visit_For">visit_For</a></td> <td>Public method to handle 'for' statements.</td> </tr> <tr> +<td><a href="#BugBearVisitor.visit_FunctionDef">visit_FunctionDef</a></td> +<td>Public method to handle function definitions.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_GeneratorExp">visit_GeneratorExp</a></td> +<td>Public method to handle generator expressions.</td> +</tr> +<tr> <td><a href="#BugBearVisitor.visit_JoinedStr">visit_JoinedStr</a></td> <td>Public method to handle f-string arguments.</td> </tr> <tr> +<td><a href="#BugBearVisitor.visit_ListComp">visit_ListComp</a></td> +<td>Public method to handle list comprehensions.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_Raise">visit_Raise</a></td> +<td>Public method to handle 'raise' statements.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_SetComp">visit_SetComp</a></td> +<td>Public method to handle set comprehensions.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_Try">visit_Try</a></td> +<td>Public method to handle 'try' statements'.</td> +</tr> +<tr> <td><a href="#BugBearVisitor.visit_UAdd">visit_UAdd</a></td> <td>Public method to handle unary additions.</td> </tr> +<tr> +<td><a href="#BugBearVisitor.visit_While">visit_While</a></td> +<td>Public method to handle 'while' statements.</td> +</tr> +<tr> +<td><a href="#BugBearVisitor.visit_With">visit_With</a></td> +<td>Public method to handle 'with' statements.</td> +</tr> </table> <h3>Static Methods</h3> @@ -148,9 +288,9 @@ <p> Constructor </p> -<a NAME="BugBearVisitor.__checkForM502" ID="BugBearVisitor.__checkForM502"></a> -<h4>BugBearVisitor.__checkForM502</h4> -<b>__checkForM502</b>(<i>node</i>) +<a NAME="BugBearVisitor.__checkForM505" ID="BugBearVisitor.__checkForM505"></a> +<h4>BugBearVisitor.__checkForM505</h4> +<b>__checkForM505</b>(<i>node</i>) <p> Private method to check the use of *strip(). @@ -171,11 +311,407 @@ </p> <dl> -<dt><i>node</i> (ast.For)</dt> +<dt><i>node</i> (ast.For or ast.AsyncFor)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM512" ID="BugBearVisitor.__checkForM512"></a> +<h4>BugBearVisitor.__checkForM512</h4> +<b>__checkForM512</b>(<i>node</i>) + +<p> + Private method to check for return/continue/break inside finally blocks. +</p> +<dl> + +<dt><i>node</i> (ast.Try)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM515" ID="BugBearVisitor.__checkForM515"></a> +<h4>BugBearVisitor.__checkForM515</h4> +<b>__checkForM515</b>(<i>node</i>) + +<p> + Private method to check for pointless comparisons. +</p> +<dl> + +<dt><i>node</i> (ast.Compare)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM516" ID="BugBearVisitor.__checkForM516"></a> +<h4>BugBearVisitor.__checkForM516</h4> +<b>__checkForM516</b>(<i>node</i>) + +<p> + Private method to check for raising a literal instead of an exception. +</p> +<dl> + +<dt><i>node</i> (ast.Raise)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM517" ID="BugBearVisitor.__checkForM517"></a> +<h4>BugBearVisitor.__checkForM517</h4> +<b>__checkForM517</b>(<i>node</i>) + +<p> + Private method to check for use of the evil syntax + 'with assertRaises(Exception):. +</p> +<dl> + +<dt><i>node</i> (ast.With)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM518" ID="BugBearVisitor.__checkForM518"></a> +<h4>BugBearVisitor.__checkForM518</h4> +<b>__checkForM518</b>(<i>node</i>) + +<p> + Private method to check for useless expressions. +</p> +<dl> + +<dt><i>node</i> (ast.FunctionDef)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM519" ID="BugBearVisitor.__checkForM519"></a> +<h4>BugBearVisitor.__checkForM519</h4> +<b>__checkForM519</b>(<i>node</i>) + +<p> + Private method to check for use of 'functools.lru_cache' or 'functools.cache'. +</p> +<dl> + +<dt><i>node</i> (ast.FunctionDef)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM520" ID="BugBearVisitor.__checkForM520"></a> +<h4>BugBearVisitor.__checkForM520</h4> +<b>__checkForM520</b>(<i>node</i>) + +<p> + Private method to check for a loop that modifies its iterable. +</p> +<dl> + +<dt><i>node</i> (ast.For or ast.AsyncFor)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM521" ID="BugBearVisitor.__checkForM521"></a> +<h4>BugBearVisitor.__checkForM521</h4> +<b>__checkForM521</b>(<i>node</i>) + +<p> + Private method to check for use of an f-string as docstring. +</p> +<dl> + +<dt><i>node</i> (ast.FunctionDef or ast.ClassDef)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM522" ID="BugBearVisitor.__checkForM522"></a> +<h4>BugBearVisitor.__checkForM522</h4> +<b>__checkForM522</b>(<i>node</i>) + +<p> + Private method to check for use of an f-string as docstring. +</p> +<dl> + +<dt><i>node</i> (ast.With)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM523" ID="BugBearVisitor.__checkForM523"></a> +<h4>BugBearVisitor.__checkForM523</h4> +<b>__checkForM523</b>(<i>loopNode</i>) + +<p> + Private method to check that functions (including lambdas) do not use loop + variables. +</p> +<dl> + +<dt><i>loopNode</i> (ast.For, ast.AsyncFor, ast.While, ast.ListComp, ast.SetComp,ast.DictComp,)</dt> +<dd> +reference to the node to be processed + or ast.GeneratorExp +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM524" ID="BugBearVisitor.__checkForM524"></a> +<h4>BugBearVisitor.__checkForM524</h4> +<b>__checkForM524</b>(<i>node</i>) + +<p> + Private method to check for inheritance from abstract classes in abc and lack of + any methods decorated with abstract*. +</p> +<dl> + +<dt><i>node</i> (ast.ClassDef)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__checkForM525" ID="BugBearVisitor.__checkForM525"></a> +<h4>BugBearVisitor.__checkForM525</h4> +<b>__checkForM525</b>(<i>node</i>) + +<p> + Private method to check for exceptions being handled multiple times. +</p> +<dl> + +<dt><i>node</i> (ast.Try)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.__childrenInScope" ID="BugBearVisitor.__childrenInScope"></a> +<h4>BugBearVisitor.__childrenInScope</h4> +<b>__childrenInScope</b>(<i>node</i>) + +<p> + Private method to get all child nodes in the given scope. +</p> +<dl> + +<dt><i>node</i> (ast.Node)</dt> <dd> reference to the node to be processed </dd> </dl> +<dl> +<dt>Yield:</dt> +<dd> +reference to a child node +</dd> +</dl> +<dl> +<dt>Yield Type:</dt> +<dd> +ast.Node +</dd> +</dl> +<a NAME="BugBearVisitor.__composeCallPath" ID="BugBearVisitor.__composeCallPath"></a> +<h4>BugBearVisitor.__composeCallPath</h4> +<b>__composeCallPath</b>(<i>node</i>) + +<p> + Private method get the individual elements of the call path of a node. +</p> +<dl> + +<dt><i>node</i> (ast.Node)</dt> +<dd> +reference to the node +</dd> +</dl> +<dl> +<dt>Yield:</dt> +<dd> +one element of the call path +</dd> +</dl> +<dl> +<dt>Yield Type:</dt> +<dd> +ast.Node +</dd> +</dl> +<a NAME="BugBearVisitor.__getAssignedNames" ID="BugBearVisitor.__getAssignedNames"></a> +<h4>BugBearVisitor.__getAssignedNames</h4> +<b>__getAssignedNames</b>(<i>loopNode</i>) + +<p> + Private method to get the names of a for loop. +</p> +<dl> + +<dt><i>loopNode</i> (ast.For)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<dl> +<dt>Yield:</dt> +<dd> +DESCRIPTION +</dd> +</dl> +<dl> +<dt>Yield Type:</dt> +<dd> +TYPE +</dd> +</dl> +<a NAME="BugBearVisitor.__isIdentifier" ID="BugBearVisitor.__isIdentifier"></a> +<h4>BugBearVisitor.__isIdentifier</h4> +<b>__isIdentifier</b>(<i>arg</i>) + +<p> + Private method to check if arg is a valid identifier. +</p> +<p> + See https://docs.python.org/2/reference/lexical_analysis.html#identifiers +</p> +<dl> + +<dt><i>arg</i> (ast.Node)</dt> +<dd> +reference to an argument node +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +flag indicating a valid identifier +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +TYPE +</dd> +</dl> +<a NAME="BugBearVisitor.__namesFromAssignments" ID="BugBearVisitor.__namesFromAssignments"></a> +<h4>BugBearVisitor.__namesFromAssignments</h4> +<b>__namesFromAssignments</b>(<i>assignTarget</i>) + +<p> + Private method to get names of an assignment. +</p> +<dl> + +<dt><i>assignTarget</i> (ast.Node)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<dl> +<dt>Yield:</dt> +<dd> +name of the assignment +</dd> +</dl> +<dl> +<dt>Yield Type:</dt> +<dd> +str +</dd> +</dl> +<a NAME="BugBearVisitor.__toNameStr" ID="BugBearVisitor.__toNameStr"></a> +<h4>BugBearVisitor.__toNameStr</h4> +<b>__toNameStr</b>(<i>node</i>) + +<p> + Private method to turn Name and Attribute nodes to strings, handling any + depth of attribute accesses. +</p> +<p> + +</p> +<dl> + +<dt><i>node</i> (ast.Name or ast.Attribute)</dt> +<dd> +reference to the node +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +string representation +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<a NAME="BugBearVisitor.__typesafeIssubclass" ID="BugBearVisitor.__typesafeIssubclass"></a> +<h4>BugBearVisitor.__typesafeIssubclass</h4> +<b>__typesafeIssubclass</b>(<i>obj, classOrTuple</i>) + +<p> + Private method implementing a type safe issubclass() function. +</p> +<dl> + +<dt><i>obj</i> (any)</dt> +<dd> +reference to the object to be tested +</dd> +<dt><i>classOrTuple</i> (type)</dt> +<dd> +type to check against +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +flag indicating a subclass +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="BugBearVisitor._loop" ID="BugBearVisitor._loop"></a> +<h4>BugBearVisitor._loop</h4> +<b>_loop</b>(<i>badNodeTypes</i>) + +<a NAME="BugBearVisitor.isAbcClass" ID="BugBearVisitor.isAbcClass"></a> +<h4>BugBearVisitor.isAbcClass</h4> +<b>isAbcClass</b>(<i></i>) + +<a NAME="BugBearVisitor.isAbstractDecorator" ID="BugBearVisitor.isAbstractDecorator"></a> +<h4>BugBearVisitor.isAbstractDecorator</h4> +<b>isAbstractDecorator</b>(<i></i>) + +<a NAME="BugBearVisitor.nodeStack" ID="BugBearVisitor.nodeStack"></a> +<h4>BugBearVisitor.nodeStack</h4> +<b>nodeStack</b>(<i></i>) + +<p> + Public method to get a reference to the most recent node stack. +</p> +<dl> +<dt>Return:</dt> +<dd> +reference to the most recent node stack +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list +</dd> +</dl> <a NAME="BugBearVisitor.visit" ID="BugBearVisitor.visit"></a> <h4>BugBearVisitor.visit</h4> <b>visit</b>(<i>node</i>) @@ -232,20 +768,6 @@ reference to the node to be processed </dd> </dl> -<a NAME="BugBearVisitor.visit_Attribute" ID="BugBearVisitor.visit_Attribute"></a> -<h4>BugBearVisitor.visit_Attribute</h4> -<b>visit_Attribute</b>(<i>node</i>) - -<p> - Public method to handle attributes. -</p> -<dl> - -<dt><i>node</i> (ast.Attribute)</dt> -<dd> -reference to the node to be processed -</dd> -</dl> <a NAME="BugBearVisitor.visit_Call" ID="BugBearVisitor.visit_Call"></a> <h4>BugBearVisitor.visit_Call</h4> <b>visit_Call</b>(<i>node</i>) @@ -260,6 +782,62 @@ reference to the node to be processed </dd> </dl> +<a NAME="BugBearVisitor.visit_ClassDef" ID="BugBearVisitor.visit_ClassDef"></a> +<h4>BugBearVisitor.visit_ClassDef</h4> +<b>visit_ClassDef</b>(<i>node</i>) + +<p> + Public method to handle class definitions. +</p> +<dl> + +<dt><i>node</i> (ast.ClassDef)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_Compare" ID="BugBearVisitor.visit_Compare"></a> +<h4>BugBearVisitor.visit_Compare</h4> +<b>visit_Compare</b>(<i>node</i>) + +<p> + Public method to handle comparison statements. +</p> +<dl> + +<dt><i>node</i> (ast.Compare)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_DictComp" ID="BugBearVisitor.visit_DictComp"></a> +<h4>BugBearVisitor.visit_DictComp</h4> +<b>visit_DictComp</b>(<i>node</i>) + +<p> + Public method to handle dictionary comprehensions. +</p> +<dl> + +<dt><i>node</i> (ast.DictComp)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_ExceptHandler" ID="BugBearVisitor.visit_ExceptHandler"></a> +<h4>BugBearVisitor.visit_ExceptHandler</h4> +<b>visit_ExceptHandler</b>(<i>node</i>) + +<p> + Public method to handle exception handlers. +</p> +<dl> + +<dt><i>node</i> (ast.ExceptHandler)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> <a NAME="BugBearVisitor.visit_For" ID="BugBearVisitor.visit_For"></a> <h4>BugBearVisitor.visit_For</h4> <b>visit_For</b>(<i>node</i>) @@ -274,6 +852,34 @@ reference to the node to be processed </dd> </dl> +<a NAME="BugBearVisitor.visit_FunctionDef" ID="BugBearVisitor.visit_FunctionDef"></a> +<h4>BugBearVisitor.visit_FunctionDef</h4> +<b>visit_FunctionDef</b>(<i>node</i>) + +<p> + Public method to handle function definitions. +</p> +<dl> + +<dt><i>node</i> (ast.FunctionDef)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_GeneratorExp" ID="BugBearVisitor.visit_GeneratorExp"></a> +<h4>BugBearVisitor.visit_GeneratorExp</h4> +<b>visit_GeneratorExp</b>(<i>node</i>) + +<p> + Public method to handle generator expressions. +</p> +<dl> + +<dt><i>node</i> (ast.GeneratorExp)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> <a NAME="BugBearVisitor.visit_JoinedStr" ID="BugBearVisitor.visit_JoinedStr"></a> <h4>BugBearVisitor.visit_JoinedStr</h4> <b>visit_JoinedStr</b>(<i>node</i>) @@ -288,6 +894,62 @@ reference to the node to be processed </dd> </dl> +<a NAME="BugBearVisitor.visit_ListComp" ID="BugBearVisitor.visit_ListComp"></a> +<h4>BugBearVisitor.visit_ListComp</h4> +<b>visit_ListComp</b>(<i>node</i>) + +<p> + Public method to handle list comprehensions. +</p> +<dl> + +<dt><i>node</i> (ast.ListComp)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_Raise" ID="BugBearVisitor.visit_Raise"></a> +<h4>BugBearVisitor.visit_Raise</h4> +<b>visit_Raise</b>(<i>node</i>) + +<p> + Public method to handle 'raise' statements. +</p> +<dl> + +<dt><i>node</i> (ast.Raise)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_SetComp" ID="BugBearVisitor.visit_SetComp"></a> +<h4>BugBearVisitor.visit_SetComp</h4> +<b>visit_SetComp</b>(<i>node</i>) + +<p> + Public method to handle set comprehensions. +</p> +<dl> + +<dt><i>node</i> (ast.SetComp)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_Try" ID="BugBearVisitor.visit_Try"></a> +<h4>BugBearVisitor.visit_Try</h4> +<b>visit_Try</b>(<i>node</i>) + +<p> + Public method to handle 'try' statements'. +</p> +<dl> + +<dt><i>node</i> (ast.Try)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> <a NAME="BugBearVisitor.visit_UAdd" ID="BugBearVisitor.visit_UAdd"></a> <h4>BugBearVisitor.visit_UAdd</h4> <b>visit_UAdd</b>(<i>node</i>) @@ -302,6 +964,34 @@ reference to the node to be processed </dd> </dl> +<a NAME="BugBearVisitor.visit_While" ID="BugBearVisitor.visit_While"></a> +<h4>BugBearVisitor.visit_While</h4> +<b>visit_While</b>(<i>node</i>) + +<p> + Public method to handle 'while' statements. +</p> +<dl> + +<dt><i>node</i> (ast.While)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="BugBearVisitor.visit_With" ID="BugBearVisitor.visit_With"></a> +<h4>BugBearVisitor.visit_With</h4> +<b>visit_With</b>(<i>node</i>) + +<p> + Public method to handle 'with' statements. +</p> +<dl> + +<dt><i>node</i> (ast.With)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> @@ -645,6 +1335,129 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> +<a NAME="M520NameFinder" ID="M520NameFinder"></a> +<h2>M520NameFinder</h2> + +<p> + Class to extract a name out of a tree of nodes ignoring names defined within the + local scope of a comprehension. +</p> +<h3>Derived from</h3> +NameFinder +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#M520NameFinder.visit_DictComp">visit_DictComp</a></td> +<td>Public method to handle a dictionary comprehension.</td> +</tr> +<tr> +<td><a href="#M520NameFinder.visit_GeneratorExp">visit_GeneratorExp</a></td> +<td>Public method to handle a generator expressions.</td> +</tr> +<tr> +<td><a href="#M520NameFinder.visit_Lambda">visit_Lambda</a></td> +<td>Public method to handle a Lambda function.</td> +</tr> +<tr> +<td><a href="#M520NameFinder.visit_ListComp">visit_ListComp</a></td> +<td>Public method to handle a list comprehension.</td> +</tr> +<tr> +<td><a href="#M520NameFinder.visit_comprehension">visit_comprehension</a></td> +<td>Public method to handle the 'for' of a comprehension.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="M520NameFinder.visit_DictComp" ID="M520NameFinder.visit_DictComp"></a> +<h4>M520NameFinder.visit_DictComp</h4> +<b>visit_DictComp</b>(<i>node</i>) + +<p> + Public method to handle a dictionary comprehension. +</p> +<dl> + +<dt><i>node</i> (TYPE)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="M520NameFinder.visit_GeneratorExp" ID="M520NameFinder.visit_GeneratorExp"></a> +<h4>M520NameFinder.visit_GeneratorExp</h4> +<b>visit_GeneratorExp</b>(<i>node</i>) + +<p> + Public method to handle a generator expressions. +</p> +<dl> + +<dt><i>node</i> (ast.GeneratorExp)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="M520NameFinder.visit_Lambda" ID="M520NameFinder.visit_Lambda"></a> +<h4>M520NameFinder.visit_Lambda</h4> +<b>visit_Lambda</b>(<i>node</i>) + +<p> + Public method to handle a Lambda function. +</p> +<dl> + +<dt><i>node</i> (ast.Lambda)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="M520NameFinder.visit_ListComp" ID="M520NameFinder.visit_ListComp"></a> +<h4>M520NameFinder.visit_ListComp</h4> +<b>visit_ListComp</b>(<i>node</i>) + +<p> + Public method to handle a list comprehension. +</p> +<dl> + +<dt><i>node</i> (TYPE)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<a NAME="M520NameFinder.visit_comprehension" ID="M520NameFinder.visit_comprehension"></a> +<h4>M520NameFinder.visit_comprehension</h4> +<b>visit_comprehension</b>(<i>node</i>) + +<p> + Public method to handle the 'for' of a comprehension. +</p> +<dl> + +<dt><i>node</i> (ast.comprehension)</dt> +<dd> +reference to the node to be processed +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> <a NAME="MiscellaneousChecker" ID="MiscellaneousChecker"></a> <h2>MiscellaneousChecker</h2> @@ -1174,6 +1987,18 @@ AST node to be traversed </dd> </dl> +<dl> +<dt>Return:</dt> +<dd> +reference to the last processed node +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +ast.Node +</dd> +</dl> <a NAME="NameFinder.visit_Name" ID="NameFinder.visit_Name"></a> <h4>NameFinder.visit_Name</h4> <b>visit_Name</b>(<i>node</i>)