Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_parse():
ep = entrypoints.EntryPoint.from_string(
'some.module:some.attr [extra1,extra2]', 'foo'
)
assert ep.module_name == 'some.module'
assert ep.object_name == 'some.attr'
assert ep.extras == ['extra1', 'extra2']
def test_load():
ep = entrypoints.EntryPoint('get_ep', 'entrypoints', 'get_single', None)
obj = ep.load()
assert obj is entrypoints.get_single
# The object part is optional (e.g. pytest plugins use just a module ref)
ep = entrypoints.EntryPoint('ep_mod', 'entrypoints', None)
obj = ep.load()
assert obj is entrypoints
def test_load():
ep = entrypoints.EntryPoint('get_ep', 'entrypoints', 'get_single', None)
obj = ep.load()
assert obj is entrypoints.get_single
# The object part is optional (e.g. pytest plugins use just a module ref)
ep = entrypoints.EntryPoint('ep_mod', 'entrypoints', None)
obj = ep.load()
assert obj is entrypoints
# Discover drivers via entrypoints.
group_all = entrypoints.get_group_all('intake.drivers', path=path)
for entrypoint in group_all:
logger.debug("Discovered entrypoint '%s = %s.%s'",
entrypoint.name,
entrypoint.module_name,
entrypoint.object_name)
# Discover drivers via config.
drivers_conf = conf.get('drivers', {})
logger.debug("Using configuration file at %s", cfile())
for name, dotted_object_name in drivers_conf.items():
if not dotted_object_name:
continue
module_name, object_name = dotted_object_name.rsplit('.', 1)
entrypoint = entrypoints.EntryPoint(name, module_name, object_name)
logger.debug("Discovered config-specified '%s = %s.%s'",
entrypoint.name,
entrypoint.module_name,
entrypoint.object_name)
group_all.append(entrypoint)
# Load entrypoints. Any that were shadowed or banned have already been
# removed above.
drivers = []
for entrypoint in group_all:
try:
drivers.append((entrypoint.name, _load_entrypoint(entrypoint)))
except ConfigurationError:
logger.exception(
"Error while loading entrypoint %s",
entrypoint.name)
logger.debug('Name %s is banned in config file', name)
if name in group:
entrypoint = group[name]
del group[name]
logger.debug("Disabled entrypoint '%s = %s.%s'",
entrypoint.name,
entrypoint.module_name,
entrypoint.object_name)
if name in package_scan_results:
cls = package_scan_results[name]
del package_scan_results[name]
logger.debug("Disabled package_scan result '%s = %s.%s'",
name, cls.__module__, cls.__name__)
continue
module_name, object_name = dotted_object_name.rsplit('.', 1)
entrypoint = entrypoints.EntryPoint(name, module_name, object_name)
logger.debug("Discovered config-specified '%s = %s.%s'",
entrypoint.name,
entrypoint.module_name,
entrypoint.object_name)
if name in group:
shadowed = group[name]
logger.debug("Config shadowed entrypoint '%s = %s.%s'",
shadowed.name,
shadowed.module_name,
shadowed.object_name)
if name in package_scan_results:
cls = package_scan_results[name]
del package_scan_results[name]
logger.debug("Config shadowed package scan result '%s = %s.%s'",
name, cls.__module__, cls.__name__)
group[name] = entrypoint
def _load_local_plugins(self, local_plugins):
"""Load local plugins from config.
:param list local_plugins:
Plugins from config (as "X = path.to:Plugin" strings).
"""
for plugin_str in local_plugins:
name, _, entry_str = plugin_str.partition("=")
name, entry_str = name.strip(), entry_str.strip()
entry_point = entrypoints.EntryPoint.from_string(entry_str, name)
self._load_plugin_from_entrypoint(entry_point, local=True)
def get_group_all(group, path=None):
"""Find all entry points in a group.
Returns a list of :class:`EntryPoint` objects.
"""
result = []
for distro, epinfo in iter_all_epinfo(path=path):
if epinfo['group'] != group:
continue
distro_obj = Distribution(distro['name'], distro['version'])
result.append(EntryPoint(
epinfo['name'], epinfo['module_name'], epinfo['object_name'],
distro=distro_obj
))
return result