Fixed bug in plugin.get_plugins(), edited docstrings
This commit is contained in:
parent
c35f48bd0b
commit
44cb975a61
|
@ -0,0 +1,7 @@
|
||||||
|
"""
|
||||||
|
Simple plugin system based on setuptools
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
# .. include:: pybitmessage.plugins.plugin.rst
|
|
@ -1,19 +1,28 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
src/plugins/plugin.py
|
Operating with plugins
|
||||||
===================================
|
|
||||||
"""
|
"""
|
||||||
|
import logging
|
||||||
|
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger('default')
|
||||||
|
|
||||||
|
|
||||||
def get_plugins(group, point='', name=None, fallback=None):
|
def get_plugins(group, point='', name=None, fallback=None):
|
||||||
"""
|
"""
|
||||||
Iterate through plugins (`connect_plugin` attribute of entry point)
|
:param str group: plugin group
|
||||||
which name starts with `point` or equals to `name`.
|
:param str point: plugin name prefix
|
||||||
If `fallback` kwarg specified, plugin with that name yield last.
|
:param name: exact plugin name
|
||||||
|
:param fallback: fallback plugin name
|
||||||
|
|
||||||
|
Iterate through plugins (``connect_plugin`` attribute of entry point)
|
||||||
|
which name starts with ``point`` or equals to ``name``.
|
||||||
|
If ``fallback`` kwarg specified, plugin with that name yield last.
|
||||||
"""
|
"""
|
||||||
for ep in pkg_resources.iter_entry_points('bitmessage.' + group):
|
for ep in pkg_resources.iter_entry_points('bitmessage.' + group):
|
||||||
if name and ep.name == name or ep.name.startswith(point):
|
if name and ep.name == name or not point or ep.name.startswith(point):
|
||||||
try:
|
try:
|
||||||
plugin = ep.load().connect_plugin
|
plugin = ep.load().connect_plugin
|
||||||
if ep.name == fallback:
|
if ep.name == fallback:
|
||||||
|
@ -25,6 +34,8 @@ def get_plugins(group, point='', name=None, fallback=None):
|
||||||
ValueError,
|
ValueError,
|
||||||
pkg_resources.DistributionNotFound,
|
pkg_resources.DistributionNotFound,
|
||||||
pkg_resources.UnknownExtra):
|
pkg_resources.UnknownExtra):
|
||||||
|
logger.debug(
|
||||||
|
'Problem while loading %s', ep.name, exc_info=True)
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
yield _fallback
|
yield _fallback
|
||||||
|
@ -33,6 +44,8 @@ def get_plugins(group, point='', name=None, fallback=None):
|
||||||
|
|
||||||
|
|
||||||
def get_plugin(*args, **kwargs):
|
def get_plugin(*args, **kwargs):
|
||||||
"""Returns first available plugin `from get_plugins()` if any."""
|
"""
|
||||||
|
:return: first available plugin from :func:`get_plugins` if any.
|
||||||
|
"""
|
||||||
for plugin in get_plugins(*args, **kwargs):
|
for plugin in get_plugins(*args, **kwargs):
|
||||||
return plugin
|
return plugin
|
||||||
|
|
Reference in New Issue
Block a user