break up monolithic module
This commit is contained in:
parent
abeae9ef53
commit
6af087440b
@ -0,0 +1,3 @@
|
||||
from .extension import ExtensionManager
|
||||
from .enabled import EnabledExtensionManager
|
||||
from .named import NamedExtensionManager
|
23
stevedore/enabled.py
Normal file
23
stevedore/enabled.py
Normal file
@ -0,0 +1,23 @@
|
||||
from .extension import ExtensionManager
|
||||
|
||||
|
||||
class EnabledExtensionManager(ExtensionManager):
|
||||
"""An ExtensionManager that only loads plugins that pass a check function.
|
||||
"""
|
||||
|
||||
def __init__(self, namespace, check_func, invoke_on_load=False,
|
||||
invoke_args=(), invoke_kwds={}):
|
||||
self.check_func = check_func
|
||||
super(EnabledExtensionManager, self).__init__(namespace,
|
||||
invoke_on_load=invoke_on_load,
|
||||
invoke_args=invoke_args,
|
||||
invoke_kwds=invoke_kwds,
|
||||
)
|
||||
|
||||
def _load_one_plugin(self, ep, invoke_on_load, invoke_args, invoke_kwds):
|
||||
if not self.check_func(ep):
|
||||
LOG.debug('ignoring extension %r', ep.name)
|
||||
return None
|
||||
return super(EnabledExtensionManager, self)._load_one_plugin(
|
||||
ep, invoke_on_load, invoke_args, invoke_kwds,
|
||||
)
|
@ -81,44 +81,3 @@ class ExtensionManager(object):
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.extensions)
|
||||
|
||||
|
||||
class EnabledExtensionManager(ExtensionManager):
|
||||
"""An ExtensionManager that only loads plugins that pass a check function.
|
||||
"""
|
||||
|
||||
def __init__(self, namespace, check_func, invoke_on_load=False,
|
||||
invoke_args=(), invoke_kwds={}):
|
||||
self.check_func = check_func
|
||||
super(EnabledExtensionManager, self).__init__(namespace,
|
||||
invoke_on_load=invoke_on_load,
|
||||
invoke_args=invoke_args,
|
||||
invoke_kwds=invoke_kwds,
|
||||
)
|
||||
|
||||
def _load_one_plugin(self, ep, invoke_on_load, invoke_args, invoke_kwds):
|
||||
if not self.check_func(ep):
|
||||
LOG.debug('ignoring extension %r', ep.name)
|
||||
return None
|
||||
return super(EnabledExtensionManager, self)._load_one_plugin(
|
||||
ep, invoke_on_load, invoke_args, invoke_kwds,
|
||||
)
|
||||
|
||||
|
||||
class NamedExtensionManager(EnabledExtensionManager):
|
||||
"""ExtensionManager that only loads the named extensions.
|
||||
|
||||
This is useful for explictly enabling extensions in a
|
||||
configuration file, for example.
|
||||
"""
|
||||
|
||||
def __init__(self, namespace, names=[],
|
||||
invoke_on_load=False, invoke_args=(), invoke_kwds={}):
|
||||
def check(ep):
|
||||
return ep.name in names
|
||||
super(NamedExtensionManager, self).__init__(namespace,
|
||||
check,
|
||||
invoke_on_load=invoke_on_load,
|
||||
invoke_args=invoke_args,
|
||||
invoke_kwds=invoke_kwds,
|
||||
)
|
||||
|
20
stevedore/named.py
Normal file
20
stevedore/named.py
Normal file
@ -0,0 +1,20 @@
|
||||
from .enabled import EnabledExtensionManager
|
||||
|
||||
|
||||
class NamedExtensionManager(EnabledExtensionManager):
|
||||
"""ExtensionManager that only loads the named extensions.
|
||||
|
||||
This is useful for explictly enabling extensions in a
|
||||
configuration file, for example.
|
||||
"""
|
||||
|
||||
def __init__(self, namespace, names=[],
|
||||
invoke_on_load=False, invoke_args=(), invoke_kwds={}):
|
||||
def check(ep):
|
||||
return ep.name in names
|
||||
super(NamedExtensionManager, self).__init__(namespace,
|
||||
check,
|
||||
invoke_on_load=invoke_on_load,
|
||||
invoke_args=invoke_args,
|
||||
invoke_kwds=invoke_kwds,
|
||||
)
|
15
stevedore/tests/test_enabled.py
Normal file
15
stevedore/tests/test_enabled.py
Normal file
@ -0,0 +1,15 @@
|
||||
from stevedore import enabled
|
||||
|
||||
|
||||
def test_enabled():
|
||||
def check_enabled(ep):
|
||||
return ep.name == 't2'
|
||||
em = enabled.EnabledExtensionManager(
|
||||
'stevedore.test.extension',
|
||||
check_enabled,
|
||||
invoke_on_load=True,
|
||||
invoke_args=('a',),
|
||||
invoke_kwds={'b': 'B'},
|
||||
)
|
||||
assert len(em.extensions) == 1
|
||||
assert em.names() == ['t2']
|
@ -88,29 +88,3 @@ def test_map_errors_when_no_plugins():
|
||||
em.map(mapped, 1, 2, a='A', b='B')
|
||||
except RuntimeError as err:
|
||||
assert 'No stevedore.test.extension.none extensions found' == str(err)
|
||||
|
||||
|
||||
def test_enabled():
|
||||
def check_enabled(ep):
|
||||
return ep.name == 't2'
|
||||
em = extension.EnabledExtensionManager(
|
||||
'stevedore.test.extension',
|
||||
check_enabled,
|
||||
invoke_on_load=True,
|
||||
invoke_args=('a',),
|
||||
invoke_kwds={'b': 'B'},
|
||||
)
|
||||
assert len(em.extensions) == 1
|
||||
assert em.names() == ['t2']
|
||||
|
||||
|
||||
def test_named():
|
||||
em = extension.NamedExtensionManager(
|
||||
'stevedore.test.extension',
|
||||
['t1'],
|
||||
invoke_on_load=True,
|
||||
invoke_args=('a',),
|
||||
invoke_kwds={'b': 'B'},
|
||||
)
|
||||
assert len(em.extensions) == 1
|
||||
assert em.names() == ['t1']
|
||||
|
13
stevedore/tests/test_named.py
Normal file
13
stevedore/tests/test_named.py
Normal file
@ -0,0 +1,13 @@
|
||||
from stevedore import named
|
||||
|
||||
|
||||
def test_named():
|
||||
em = named.NamedExtensionManager(
|
||||
'stevedore.test.extension',
|
||||
['t1'],
|
||||
invoke_on_load=True,
|
||||
invoke_args=('a',),
|
||||
invoke_kwds={'b': 'B'},
|
||||
)
|
||||
assert len(em.extensions) == 1
|
||||
assert em.names() == ['t1']
|
Loading…
x
Reference in New Issue
Block a user