Visitors

Contains detailed documentation about how to write a visitor.

Creating new visitor

First of all, you have to decide what base class do you want to use?

Available base classes

BaseNodeVisitor Allows to store violations while traversing node tree.
BaseFilenameVisitor Abstract base class that allows to visit and check module file names.
BaseTokenVisitor Allows to check tokenize sequences.

The decision relies on what parameters do you need for the task. It is highly unlikely that you will need two parameters at the same time.

Visitors API

class BaseVisitor(options, filename='stdin')[source]

Bases: object

Abstract base class for different types of visitors.

options

contains the options objects passed and parsed by flake8.

filename

filename passed by flake8, each visitor has a file name.

violations

list of violations for the specific visitor.

classmethod from_checker(checker)[source]

Constructs visitor instance from the checker.

Each unique visitor class should know how to construct itself from the checker instance.

Generally speaking, each visitor class needs to eject required parameters from checker and then run its constructor with these parameters.

Return type:BaseVisitor
add_violation(violation)[source]

Adds violation to the visitor.

Return type:None
run()[source]

Abstract method to run a visitor.

Each visitor should know what exactly it needs to do when it was told to run. This method should be defined in all subclasses.

Return type:None
class BaseNodeVisitor(options, tree, **kwargs)[source]

Bases: ast.NodeVisitor, wemake_python_styleguide.visitors.base.BaseVisitor

Allows to store violations while traversing node tree.

This class should be used as a base class for all ast based checkers. Method visit() is defined in NodeVisitor class.

tree

ast tree to be checked.

classmethod from_checker(checker)[source]

Constructs visitor instance from the checker.

Return type:BaseNodeVisitor
run()[source]

Recursively visits all ast nodes. Then executes post hook.

Return type:None
class BaseFilenameVisitor(options, filename='stdin')[source]

Bases: wemake_python_styleguide.visitors.base.BaseVisitor

Abstract base class that allows to visit and check module file names.

Has visit_filename() method that should be defined in subclasses.

visit_filename()[source]

Abstract method to check module file names.

This method should be overridden in a subclass.

Return type:None
run()[source]

Checks module’s filename.

Skips modules that are checked as piped output. Since these modules are checked as a stdin input. And do not have names.

Return type:None
class BaseTokenVisitor(options, file_tokens, **kwargs)[source]

Bases: wemake_python_styleguide.visitors.base.BaseVisitor

Allows to check tokenize sequences.

file_tokens

tokenize.TokenInfo sequence to be checked.

classmethod from_checker(checker)[source]

Constructs tokenize based visitor instance from the checker.

Return type:BaseTokenVisitor
visit(token)[source]

Runs custom defined handlers in a visitor for each specific token type.

Uses .exact_type property to fetch the token name. So, you have to be extra careful with tokens like -> and other operators, since they might resolve in just OP name.

Does nothing if handler for any token type is not defined.

Return type:None
run()[source]

Visits all token types that have a handler method.

Return type:None