diff --git a/bob/bio/base/script/resources.py b/bob/bio/base/script/resources.py index 854dd80b2d9f72a7a7d1f1bf701a026cc634fbcf..ffeaedac6a8d6d6e9a813a5fdd4c08fc3c66c782 100644 --- a/bob/bio/base/script/resources.py +++ b/bob/bio/base/script/resources.py @@ -15,12 +15,14 @@ def resources(command_line_parameters = None): parser.add_argument("--details", '-d', action='store_true', help = "Prints the complete configuration for all resources") + parser.add_argument("--packages", '-p', nargs='+', help = "If given, shows only resources defined in the given package(s)") + parser.add_argument("--no-strip-dummy", '-s', action = 'store_true', help = "If given, the dummy elements (usually used for testing purposes only) are **not** removed from the list.") args = parser.parse_args(command_line_parameters) - kwargs = {'verbose' : args.details} + kwargs = {'verbose' : args.details, "packages" : args.packages} if args.no_strip_dummy: kwargs['strip'] = [] diff --git a/bob/bio/base/test/test_scripts.py b/bob/bio/base/test/test_scripts.py index 92280814d50c069c45cf6b4f6e419ab6ec2556f4..57e10b908c820eca96b008dc9a41fd48eb96dcb2 100644 --- a/bob/bio/base/test/test_scripts.py +++ b/bob/bio/base/test/test_scripts.py @@ -369,7 +369,7 @@ def test_resources(): # simply test that the collect_results script works from bob.bio.base.script.resources import resources, databases with utils.Quiet(): - resources(['--types', 'database', 'preprocessor', 'extractor', 'algorithm', 'grid', '--details']) + resources(['--types', 'database', 'preprocessor', 'extractor', 'algorithm', 'grid', '--details', '--packages', 'bob.bio.base']) databases([]) diff --git a/bob/bio/base/utils/resources.py b/bob/bio/base/utils/resources.py index f9106f40e7b97574d6e02f50e6d6099695c72643..7a2b72926b4158066aa8bcf3a3af275c382bf5c9 100644 --- a/bob/bio/base/utils/resources.py +++ b/bob/bio/base/utils/resources.py @@ -194,7 +194,7 @@ def resource_keys(keyword, exclude_packages=[], package_prefix='bob.bio.', strip if entry_point.dist.project_name not in exclude_packages]) -def list_resources(keyword, strip=['dummy'], package_prefix='bob.bio.', verbose=False): +def list_resources(keyword, strip=['dummy'], package_prefix='bob.bio.', verbose=False, packages=None): """Returns a string containing a detailed list of resources that are registered with the given keyword.""" if keyword not in valid_keywords: raise ValueError("The given keyword '%s' is not valid. Please use one of %s!" % (str(keyword), str(valid_keywords))) @@ -204,7 +204,10 @@ def list_resources(keyword, strip=['dummy'], package_prefix='bob.bio.', verbose= retval = "" length = max(len(entry_point.name) for entry_point in entry_points) if entry_points else 1 - for entry_point in sorted(entry_points, key=lambda p: p.dist.project_name): + if packages is not None: + entry_points = [entry_point for entry_point in entry_points if entry_point.dist.project_name in packages] + + for entry_point in sorted(entry_points, key=lambda p: (p.dist.project_name, p.name)): if last_dist != str(entry_point.dist): retval += "\n- %s @ %s: \n" % (str(entry_point.dist), str(entry_point.dist.location)) last_dist = str(entry_point.dist) @@ -224,7 +227,7 @@ def database_directories(strip=['dummy'], replacements = None, package_prefix='b entry_points = _get_entry_points('database', strip, package_prefix=package_prefix) dirs = {} - for entry_point in sorted(entry_points, key=lambda entry_point: entry_point.name): + for entry_point in sorted(entry_points, key=lambda entry_point: entry_point.name): try: db = load_resource(entry_point.name, 'database') db.replace_directories(replacements)