mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-04 20:26:53 +00:00
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.
This commit is contained in:
parent
d5dfd1180d
commit
156f90369f
6 changed files with 65 additions and 48 deletions
|
|
@ -53,8 +53,14 @@ def information(option_manager):
|
|||
|
||||
def plugins_from(option_manager):
|
||||
"""Generate the list of plugins installed."""
|
||||
return [{'plugin': plugin, 'version': version}
|
||||
for (plugin, version) in sorted(option_manager.registered_plugins)]
|
||||
return [
|
||||
{
|
||||
'plugin': plugin.name,
|
||||
'version': plugin.version,
|
||||
'is_local': plugin.local,
|
||||
}
|
||||
for plugin in sorted(option_manager.registered_plugins)
|
||||
]
|
||||
|
||||
|
||||
def dependencies():
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -115,8 +115,6 @@ class Plugin(object):
|
|||
self._version = version_for(self)
|
||||
else:
|
||||
self._version = self.plugin.version
|
||||
if self.local:
|
||||
self._version += ' [local]'
|
||||
|
||||
return self._version
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue