diff options
Diffstat (limited to 'scripts-dev/definitions.py')
-rwxr-xr-x | scripts-dev/definitions.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/scripts-dev/definitions.py b/scripts-dev/definitions.py index 8340c72618..47dac7772d 100755 --- a/scripts-dev/definitions.py +++ b/scripts-dev/definitions.py @@ -86,9 +86,12 @@ def used_names(prefix, item, defs, names): for name, funcs in defs.get('class', {}).items(): used_names(prefix + name + ".", name, funcs, names) + path = prefix.rstrip('.') for used in defs.get('uses', ()): if used in names: - names[used].setdefault('used', {}).setdefault(item, []).append(prefix.rstrip('.')) + if item: + names[item].setdefault('uses', []).append(used) + names[used].setdefault('used', {}).setdefault(item, []).append(path) if __name__ == '__main__': @@ -114,6 +117,10 @@ if __name__ == '__main__': help="Include referrers up to the given depth" ) parser.add_argument( + "--referred", default=0, type=int, + help="Include referred down to the given depth" + ) + parser.add_argument( "--format", default="yaml", help="Output format, one of 'yaml' or 'dot'" ) @@ -161,6 +168,20 @@ if __name__ == '__main__': continue result[name] = definition + referred_depth = args.referred + referred = set() + while referred_depth: + referred_depth -= 1 + for entry in result.values(): + for uses in entry.get("uses", ()): + referred.add(uses) + for name, definition in names.items(): + if not name in referred: + continue + if ignore and any(pattern.match(name) for pattern in ignore): + continue + result[name] = definition + if args.format == 'yaml': yaml.dump(result, sys.stdout, default_flow_style=False) elif args.format == 'dot': |