summaryrefslogtreecommitdiff
path: root/src/flake8/options
diff options
context:
space:
mode:
authorIan Stapleton Cordasco <graffatcolmingov@gmail.com>2017-08-08 08:54:40 -0500
committerIan Stapleton Cordasco <graffatcolmingov@gmail.com>2017-08-08 08:54:40 -0500
commit156f90369f007928f26c6a4980b1ac0cc0691e53 (patch)
tree4e0b91dc8dfffa1966fcaf770921adbf4d44d2b8 /src/flake8/options
parentd5dfd1180dffa5f479b286a40fad9a0b704ef62e (diff)
downloadflake8-156f90369f007928f26c6a4980b1ac0cc0691e53.tar.gz
Update our plugin registration for debugging
This allows us to report whether or not a plugin is local when users provide `flake8 --bug-report` output.
Diffstat (limited to 'src/flake8/options')
-rw-r--r--src/flake8/options/manager.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py
index 7b23732..5b4796f 100644
--- a/src/flake8/options/manager.py
+++ b/src/flake8/options/manager.py
@@ -1,4 +1,5 @@
"""Option handling and Option management logic."""
+import collections
import logging
import optparse # pylint: disable=deprecated-module
@@ -153,6 +154,10 @@ class Option(object):
return self._opt
+PluginVersion = collections.namedtuple("PluginVersion",
+ ["name", "version", "local"])
+
+
class OptionManager(object):
"""Manage Options and OptionParser while adding post-processing."""
@@ -178,9 +183,9 @@ class OptionManager(object):
self.extended_default_select = set()
@staticmethod
- def format_plugin(plugin_tuple):
- """Convert a plugin tuple into a dictionary mapping name to value."""
- return dict(zip(["name", "version"], plugin_tuple))
+ def format_plugin(plugin):
+ """Convert a PluginVersion into a dictionary mapping name to value."""
+ return {attr: getattr(plugin, attr) for attr in ["name", "version"]}
def add_option(self, *args, **kwargs):
"""Create and register a new option.
@@ -306,7 +311,7 @@ class OptionManager(object):
self._normalize(options)
return options, xargs
- def register_plugin(self, name, version):
+ def register_plugin(self, name, version, local=False):
"""Register a plugin relying on the OptionManager.
:param str name:
@@ -314,5 +319,7 @@ class OptionManager(object):
attribute of the class or function loaded from the entry-point.
:param str version:
The version of the checker that we're using.
+ :param bool local:
+ Whether the plugin is local to the project/repository or not.
"""
- self.registered_plugins.add((name, version))
+ self.registered_plugins.add(PluginVersion(name, version, local))