summaryrefslogtreecommitdiff
path: root/src/flake8
diff options
context:
space:
mode:
authorIan Stapleton Cordasco <graffatcolmingov@gmail.com>2018-12-28 15:39:49 +0000
committerIan Stapleton Cordasco <graffatcolmingov@gmail.com>2018-12-28 15:39:49 +0000
commit7f50c3acc4b98caff0d0f3fbd82de34c5fc93c8a (patch)
tree31b08b45819030d11a6321b88416082756241cd1 /src/flake8
parent6ad56f73daa1a23081ed40a409d53ef28bf53c3f (diff)
parentbe88d2639694da77d07a9075231a0bea2b8df3f5 (diff)
downloadflake8-7f50c3acc4b98caff0d0f3fbd82de34c5fc93c8a.tar.gz
Merge branch 'remove_unused_broken_flake8_listen' into 'master'
Remove unused and broken flake8.listen plugin type Closes #480 See merge request pycqa/flake8!274
Diffstat (limited to 'src/flake8')
-rw-r--r--src/flake8/main/application.py31
-rw-r--r--src/flake8/plugins/_trie.py95
-rw-r--r--src/flake8/plugins/manager.py33
-rw-r--r--src/flake8/plugins/notifier.py46
-rw-r--r--src/flake8/style_guide.py15
5 files changed, 11 insertions, 209 deletions
diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py
index 86d7fd4..ae33b13 100644
--- a/src/flake8/main/application.py
+++ b/src/flake8/main/application.py
@@ -57,14 +57,10 @@ class Application(object):
self.local_plugins = None
#: The instance of :class:`flake8.plugins.manager.Checkers`
self.check_plugins = None
- #: The instance of :class:`flake8.plugins.manager.Listeners`
- self.listening_plugins = None
#: The instance of :class:`flake8.plugins.manager.ReportFormatters`
self.formatting_plugins = None
#: The user-selected formatter from :attr:`formatting_plugins`
self.formatter = None
- #: The :class:`flake8.plugins.notifier.Notifier` for listening plugins
- self.listener_trie = None
#: The :class:`flake8.style_guide.StyleGuideManager` built from the
#: user's options
self.guide = None
@@ -166,11 +162,11 @@ class Application(object):
# type: () -> NoneType
"""Find and load the plugins for this application.
- If :attr:`check_plugins`, :attr:`listening_plugins`, or
- :attr:`formatting_plugins` are ``None`` then this method will update
- them with the appropriate plugin manager instance. Given the expense
- of finding plugins (via :mod:`entrypoints`) we want this to be
- idempotent and so only update those attributes if they are ``None``.
+ If :attr:`check_plugins`, or :attr:`formatting_plugins` are ``None``
+ then this method will update them with the appropriate plugin manager
+ instance. Given the expense of finding plugins (via :mod:`entrypoints`)
+ we want this to be idempotent and so only update those attributes if
+ they are ``None``.
"""
if self.local_plugins is None:
self.local_plugins = config.get_local_plugins(
@@ -186,16 +182,12 @@ class Application(object):
self.local_plugins.extension
)
- if self.listening_plugins is None:
- self.listening_plugins = plugin_manager.Listeners()
-
if self.formatting_plugins is None:
self.formatting_plugins = plugin_manager.ReportFormatters(
self.local_plugins.report
)
self.check_plugins.load_plugins()
- self.listening_plugins.load_plugins()
self.formatting_plugins.load_plugins()
def register_plugin_options(self):
@@ -203,7 +195,6 @@ class Application(object):
"""Register options provided by plugins to our option manager."""
self.check_plugins.register_options(self.option_manager)
self.check_plugins.register_plugin_versions(self.option_manager)
- self.listening_plugins.register_options(self.option_manager)
self.formatting_plugins.register_options(self.option_manager)
def parse_configuration_and_cli(self, argv=None):
@@ -229,9 +220,6 @@ class Application(object):
self.check_plugins.provide_options(
self.option_manager, self.options, self.args
)
- self.listening_plugins.provide_options(
- self.option_manager, self.options, self.args
- )
self.formatting_plugins.provide_options(
self.option_manager, self.options, self.args
)
@@ -264,18 +252,12 @@ class Application(object):
self.formatter = formatter_class(self.options)
- def make_notifier(self):
- # type: () -> NoneType
- """Initialize our listener Notifier."""
- if self.listener_trie is None:
- self.listener_trie = self.listening_plugins.build_notifier()
-
def make_guide(self):
# type: () -> NoneType
"""Initialize our StyleGuide."""
if self.guide is None:
self.guide = style_guide.StyleGuideManager(
- self.options, self.listener_trie, self.formatter
+ self.options, self.formatter
)
if self.running_against_diff:
@@ -373,7 +355,6 @@ class Application(object):
self.register_plugin_options()
self.parse_configuration_and_cli(argv)
self.make_formatter()
- self.make_notifier()
self.make_guide()
self.make_file_checker_manager()
diff --git a/src/flake8/plugins/_trie.py b/src/flake8/plugins/_trie.py
deleted file mode 100644
index 9a50b45..0000000
--- a/src/flake8/plugins/_trie.py
+++ /dev/null
@@ -1,95 +0,0 @@
-"""Independent implementation of a Trie tree."""
-
-__all__ = ("Trie", "TrieNode")
-
-
-def _iterate_stringlike_objects(string):
- for i in range(len(string)):
- yield string[i : i + 1]
-
-
-class Trie(object):
- """The object that manages the trie nodes."""
-
- def __init__(self):
- """Initialize an empty trie."""
- self.root = TrieNode(None, None)
-
- def add(self, path, node_data):
- """Add the node data to the path described."""
- node = self.root
- for prefix in _iterate_stringlike_objects(path):
- child = node.find_prefix(prefix)
- if child is None:
- child = node.add_child(prefix, [])
- node = child
- node.data.append(node_data)
-
- def find(self, path):
- """Find a node based on the path provided."""
- node = self.root
- for prefix in _iterate_stringlike_objects(path):
- child = node.find_prefix(prefix)
- if child is None:
- return None
- node = child
- return node
-
- def traverse(self):
- """Traverse this tree.
-
- This performs a depth-first pre-order traversal of children in this
- tree. It returns the results consistently by first sorting the
- children based on their prefix and then traversing them in
- alphabetical order.
- """
- return self.root.traverse()
-
-
-class TrieNode(object):
- """The majority of the implementation details of a Trie."""
-
- def __init__(self, prefix, data, children=None):
- """Initialize a TrieNode with data and children."""
- self.children = children or {}
- self.data = data
- self.prefix = prefix
-
- def __repr__(self):
- """Generate an easy to read representation of the node."""
- return "TrieNode(prefix={0}, data={1})".format(self.prefix, self.data)
-
- def find_prefix(self, prefix):
- """Find the prefix in the children of this node.
-
- :returns: A child matching the prefix or None.
- :rtype: :class:`~TrieNode` or None
- """
- return self.children.get(prefix, None)
-
- def add_child(self, prefix, data, children=None):
- """Create and add a new child node.
-
- :returns: The newly created node
- :rtype: :class:`~TrieNode`
- """
- new_node = TrieNode(prefix, data, children)
- self.children[prefix] = new_node
- return new_node
-
- def traverse(self):
- """Traverse children of this node.
-
- This performs a depth-first pre-order traversal of the remaining
- children in this sub-tree. It returns the results consistently by
- first sorting the children based on their prefix and then traversing
- them in alphabetical order.
- """
- if not self.children:
- return
-
- for prefix in sorted(self.children):
- child = self.children[prefix]
- yield child
- for child in child.traverse():
- yield child
diff --git a/src/flake8/plugins/manager.py b/src/flake8/plugins/manager.py
index 411e02f..045cfd7 100644
--- a/src/flake8/plugins/manager.py
+++ b/src/flake8/plugins/manager.py
@@ -6,7 +6,6 @@ import entrypoints
from flake8 import exceptions
from flake8 import utils
-from flake8.plugins import notifier
if sys.version_info >= (3, 3):
import collections.abc as collections_abc
@@ -15,13 +14,7 @@ else:
LOG = logging.getLogger(__name__)
-__all__ = (
- "Checkers",
- "Listeners",
- "Plugin",
- "PluginManager",
- "ReportFormatters",
-)
+__all__ = ("Checkers", "Plugin", "PluginManager", "ReportFormatters")
NO_GROUP_FOUND = object()
@@ -444,24 +437,6 @@ class PluginTypeManager(object):
list(self.manager.map(call_provide_options))
-class NotifierBuilderMixin(object): # pylint: disable=too-few-public-methods
- """Mixin class that builds a Notifier from a PluginManager."""
-
- def build_notifier(self):
- """Build a Notifier for our Listeners.
-
- :returns:
- Object to notify our listeners of certain error codes and
- warnings.
- :rtype:
- :class:`~flake8.notifier.Notifier`
- """
- notifier_trie = notifier.Notifier()
- for name in self.names:
- notifier_trie.register_listener(name, self.manager[name])
- return notifier_trie
-
-
class Checkers(PluginTypeManager):
"""All of the checkers registered through entry-points or config."""
@@ -542,12 +517,6 @@ class Checkers(PluginTypeManager):
return plugins
-class Listeners(PluginTypeManager, NotifierBuilderMixin):
- """All of the listeners registered through entry-points or config."""
-
- namespace = "flake8.listen"
-
-
class ReportFormatters(PluginTypeManager):
"""All of the report formatters registered through entry-points/config."""
diff --git a/src/flake8/plugins/notifier.py b/src/flake8/plugins/notifier.py
deleted file mode 100644
index 9efccd4..0000000
--- a/src/flake8/plugins/notifier.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""Implementation of the class that registers and notifies listeners."""
-from flake8.plugins import _trie
-
-
-class Notifier(object):
- """Object that tracks and notifies listener objects."""
-
- def __init__(self):
- """Initialize an empty notifier object."""
- self.listeners = _trie.Trie()
-
- def listeners_for(self, error_code):
- """Retrieve listeners for an error_code.
-
- There may be listeners registered for E1, E100, E101, E110, E112, and
- E126. To get all the listeners for one of E100, E101, E110, E112, or
- E126 you would also need to incorporate the listeners for E1 (since
- they're all in the same class).
-
- Example usage:
-
- .. code-block:: python
-
- from flake8 import notifier
-
- n = notifier.Notifier()
- # register listeners
- for listener in n.listeners_for('W102'):
- listener.notify(...)
- """
- path = error_code
- while path:
- node = self.listeners.find(path)
- listeners = getattr(node, "data", [])
- for listener in listeners:
- yield listener
- path = path[:-1]
-
- def notify(self, error_code, *args, **kwargs):
- """Notify all listeners for the specified error code."""
- for listener in self.listeners_for(error_code):
- listener.notify(error_code, *args, **kwargs)
-
- def register_listener(self, error_code, listener):
- """Register a listener for a specific error_code."""
- self.listeners.add(error_code, listener)
diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py
index 46f72fc..56fa832 100644
--- a/src/flake8/style_guide.py
+++ b/src/flake8/style_guide.py
@@ -325,19 +325,18 @@ class DecisionEngine(object):
class StyleGuideManager(object):
"""Manage multiple style guides for a single run."""
- def __init__(self, options, listener_trie, formatter, decider=None):
+ def __init__(self, options, formatter, decider=None):
"""Initialize our StyleGuide.
.. todo:: Add parameter documentation.
"""
self.options = options
- self.listener = listener_trie
self.formatter = formatter
self.stats = statistics.Statistics()
self.decider = decider or DecisionEngine(options)
self.style_guides = []
self.default_style_guide = StyleGuide(
- options, listener_trie, formatter, decider=decider
+ options, formatter, decider=decider
)
self.style_guides = list(
itertools.chain(
@@ -435,15 +434,12 @@ class StyleGuideManager(object):
class StyleGuide(object):
"""Manage a Flake8 user's style guide."""
- def __init__(
- self, options, listener_trie, formatter, filename=None, decider=None
- ):
+ def __init__(self, options, formatter, filename=None, decider=None):
"""Initialize our StyleGuide.
.. todo:: Add parameter documentation.
"""
self.options = options
- self.listener = listener_trie
self.formatter = formatter
self.stats = statistics.Statistics()
self.decider = decider or DecisionEngine(options)
@@ -461,9 +457,7 @@ class StyleGuide(object):
filename = filename or self.filename
options = copy.deepcopy(self.options)
options.ignore.extend(extend_ignore_with or [])
- return StyleGuide(
- options, self.listener, self.formatter, filename=filename
- )
+ return StyleGuide(options, self.formatter, filename=filename)
@contextlib.contextmanager
def processing_file(self, filename):
@@ -565,7 +559,6 @@ class StyleGuide(object):
):
self.formatter.handle(error)
self.stats.record(error)
- self.listener.notify(error.code, error)
return 1
return 0