| 123456789101112131415161718192021222324252627282930313233343536373839 |
- from rope.base import exceptions
- def resources(project, rules):
- """Find python files in the `project` matching `rules`
- `rules` is a multi-line `str`; each line starts with either a '+'
- or '-'. Each '+' means include the file (or its children if it's
- a folder) that comes after it. '-' has the same meaning for
- exclusion.
- """
- all = set(project.pycore.get_python_files())
- files = None
- for line in rules.splitlines():
- if not line.strip():
- continue
- first, path = (line[0], line[1:])
- if first not in '+-':
- continue
- try:
- resource = project.get_resource(path.strip())
- except exceptions.ResourceNotFoundError:
- continue
- if resource.is_folder():
- matches = set(filter(lambda item: resource.contains(item), all))
- else:
- matches = set([resource])
- if first == '+':
- if files is None:
- files = set()
- files.update(matches)
- if first == '-':
- if files is None:
- files = set(all)
- files -= matches
- if files is None:
- return all
- return files
|