def scan_for_installed(dist, attr, value): # pylint: disable=unused-argument """ scan for entry points of the given groups in the already installed distributions :param value: a list of groups names to scan for """ ensure_list(value, attr) if value: from reentry import manager print('[ REENTRY ] scanning for plugins in groups {}...'.format(value), file=sys.stderr) print('[ REENTRY ] Current entry point map at {}:'.format( get_datafile()), file=sys.stderr) print(manager.format_map(manager.get_dist_map()), file=sys.stderr) scanned_map = manager.scan(groups=value, group_re=False, nodelete=True) print('[ REENTRY ] ... plugin scanning done.', file=sys.stderr) print('[ REENTRY ] Replaced following parts of the map at {}:'.format( get_datafile()), file=sys.stderr) print(manager.format_map(scanned_map), file=sys.stderr) print('[ REENTRY ] Current entry point map at {}:'.format( get_datafile()), file=sys.stderr) print(manager.format_map(manager.get_dist_map()), file=sys.stderr)
def main(with_noreg): """Test automatic scanning / registering""" entry_point_map = manager.get_entry_map( groups='reentry_test', ep_names=['test-plugin', 'test-noreg', 'builtin']) data_file = py_path.local(get_datafile()) assert entry_point_map, 'The test plugin entry point were not found\nMap:\n{}\n\nData File: {}\n\nContents:\n{}'.format( manager.get_entry_map(), data_file.strpath, data_file.read()) try: test_entry_point = entry_point_map['reentry_test']['test-plugin'] builtin_entry_point = entry_point_map['reentry_test']['builtin'] if with_noreg: noreg_entry_point = entry_point_map['reentry_test']['test-noreg'] except Exception as err: print('datafile: {}'.format(data_file.strpath)) print('\nCurrent relevant entry point map:\n\n') print(manager.format_map(entry_point_map)) print('\n') scan_map = manager.scan(groups=['reentry_test'], nocommit=True) print('\nFull entry point map after scan:\n\n') print(manager.format_map(scan_map)) raise err plugin_class = test_entry_point.load() builtin_class = builtin_entry_point.load() assert plugin_class.test_string == 'TEST', 'The test string was incorrect' assert builtin_class.test_string == 'TEST', 'The test string was incorrect' if with_noreg: noreg_class = noreg_entry_point.load() assert noreg_class.test_string == 'TEST', 'The test string was incorrect' plugin_list = [ ep.load() for ep in manager.iter_entry_points('reentry_test') ] assert plugin_class in plugin_list, 'iter_entry_points found differing test entry point from get_entry_map.' assert builtin_class in plugin_list, 'iter_entry_points found differing test entry point from get_entry_map.' if with_noreg: assert noreg_class in plugin_list, 'iter_entry_points found differing test entry point from get_entry_map.'
def register_dist(dist, attr, value): """If value is True, register the distribution's entry points in reentrys storage.""" from distutils.errors import DistutilsSetupError # pylint: disable=import-error,no-name-in-module # assert is boolean if not is_bool(value): raise DistutilsSetupError('{} must be a boolean, got {}'.format( attr, value)) if value: print('[ REENTRY ] registering entry points with reentry...', file=sys.stderr) from reentry import manager dist_name, entry_point_map = manager.register(dist) print('[ REENTRY ] ... registered to {}'.format(get_datafile()), file=sys.stderr) print('[ REENTRY ] Following entrypoints were registered\n', file=sys.stderr) print(manager.format_map({dist_name: entry_point_map}), file=sys.stderr) print('[ REENTRY ] Current entry point map at {}:'.format( get_datafile()), file=sys.stderr) print(manager.format_map(manager.get_dist_map()), file=sys.stderr)