Now there is a library called pathspec that implements the full .gitignore specification, including things like **/*.py ; the documentation does not describe the parameters in detail, but says that it is compatible with git, and the code processes them.
>>> import pathspec >>> spec_src = '**/*.pyc' >>> spec = pathspec.PathSpec.from_lines(pathspec.patterns.GitWildMatchPattern,, spec_src.splitlines()) >>> set(spec.match_files({"test.py", "test.pyc", "deeper/file.pyc", "even/deeper/file.pyc"})) set(['test.pyc', 'even/deeper/file.pyc', 'deeper/file.pyc']) >>> set(spec.match_tree("pathspec/")) set(['__init__.pyc', 'gitignore.pyc', 'util.pyc', 'pattern.pyc', 'tests/__init__.pyc', 'tests/test_gitignore.pyc', 'compat.pyc', 'pathspec.pyc'])
David fraser
source share