mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-10 09:19:28 +00:00
8cc68ed2dc
The vendored packaged were fetched using vanilla "pip download", which downloads wheel files by default (missing LICENSE, setup.py, etc.). This changeset was created by downloading the "glean_parser" dependencies using "pip download --no-binary :all:" which is the same thing that "mach vendor python" does. It additionally removes all the /tests and /docs directories of the vendored dependencies. Differential Revision: https://phabricator.services.mozilla.com/D65171 --HG-- rename : third_party/python/Jinja2/jinja2/__init__.py => third_party/python/Jinja2/src/jinja2/__init__.py rename : third_party/python/Jinja2/jinja2/_compat.py => third_party/python/Jinja2/src/jinja2/_compat.py rename : third_party/python/Jinja2/jinja2/_identifier.py => third_party/python/Jinja2/src/jinja2/_identifier.py rename : third_party/python/Jinja2/jinja2/asyncfilters.py => third_party/python/Jinja2/src/jinja2/asyncfilters.py rename : third_party/python/Jinja2/jinja2/asyncsupport.py => third_party/python/Jinja2/src/jinja2/asyncsupport.py rename : third_party/python/Jinja2/jinja2/bccache.py => third_party/python/Jinja2/src/jinja2/bccache.py rename : third_party/python/Jinja2/jinja2/compiler.py => third_party/python/Jinja2/src/jinja2/compiler.py rename : third_party/python/Jinja2/jinja2/constants.py => third_party/python/Jinja2/src/jinja2/constants.py rename : third_party/python/Jinja2/jinja2/debug.py => third_party/python/Jinja2/src/jinja2/debug.py rename : third_party/python/Jinja2/jinja2/defaults.py => third_party/python/Jinja2/src/jinja2/defaults.py rename : third_party/python/Jinja2/jinja2/environment.py => third_party/python/Jinja2/src/jinja2/environment.py rename : third_party/python/Jinja2/jinja2/exceptions.py => third_party/python/Jinja2/src/jinja2/exceptions.py rename : third_party/python/Jinja2/jinja2/ext.py => third_party/python/Jinja2/src/jinja2/ext.py rename : third_party/python/Jinja2/jinja2/filters.py => third_party/python/Jinja2/src/jinja2/filters.py rename : third_party/python/Jinja2/jinja2/idtracking.py => third_party/python/Jinja2/src/jinja2/idtracking.py rename : third_party/python/Jinja2/jinja2/lexer.py => third_party/python/Jinja2/src/jinja2/lexer.py rename : third_party/python/Jinja2/jinja2/loaders.py => third_party/python/Jinja2/src/jinja2/loaders.py rename : third_party/python/Jinja2/jinja2/meta.py => third_party/python/Jinja2/src/jinja2/meta.py rename : third_party/python/Jinja2/jinja2/nativetypes.py => third_party/python/Jinja2/src/jinja2/nativetypes.py rename : third_party/python/Jinja2/jinja2/nodes.py => third_party/python/Jinja2/src/jinja2/nodes.py rename : third_party/python/Jinja2/jinja2/optimizer.py => third_party/python/Jinja2/src/jinja2/optimizer.py rename : third_party/python/Jinja2/jinja2/parser.py => third_party/python/Jinja2/src/jinja2/parser.py rename : third_party/python/Jinja2/jinja2/runtime.py => third_party/python/Jinja2/src/jinja2/runtime.py rename : third_party/python/Jinja2/jinja2/sandbox.py => third_party/python/Jinja2/src/jinja2/sandbox.py rename : third_party/python/Jinja2/jinja2/tests.py => third_party/python/Jinja2/src/jinja2/tests.py rename : third_party/python/Jinja2/jinja2/utils.py => third_party/python/Jinja2/src/jinja2/utils.py rename : third_party/python/Jinja2/jinja2/visitor.py => third_party/python/Jinja2/src/jinja2/visitor.py rename : third_party/python/importlib_metadata/importlib_metadata-1.5.0.dist-info/LICENSE => third_party/python/importlib_metadata/LICENSE rename : third_party/python/importlib_metadata/importlib_metadata-1.5.0.dist-info/top_level.txt => third_party/python/importlib_metadata/importlib_metadata.egg-info/top_level.txt rename : third_party/python/jsonschema/jsonschema-3.2.0.dist-info/COPYING => third_party/python/jsonschema/COPYING rename : third_party/python/jsonschema/jsonschema-3.2.0.dist-info/entry_points.txt => third_party/python/jsonschema/jsonschema.egg-info/entry_points.txt rename : third_party/python/jsonschema/jsonschema-3.2.0.dist-info/top_level.txt => third_party/python/jsonschema/jsonschema.egg-info/top_level.txt rename : third_party/python/pep487/pep487/__init__.py => third_party/python/pep487/lib/pep487/__init__.py rename : third_party/python/pep487/pep487/version.py => third_party/python/pep487/lib/pep487/version.py extra : moz-landing-system : lando
*pathspec*: Path Specification ============================== *pathspec* is a utility library for pattern matching of file paths. So far this only includes Git's wildmatch pattern matching which itself is derived from Rsync's wildmatch. Git uses wildmatch for its `gitignore`_ files. .. _`gitignore`: http://git-scm.com/docs/gitignore Tutorial -------- Say you have a "Projects" directory and you want to back it up, but only certain files, and ignore others depending on certain conditions:: >>> import pathspec >>> # The gitignore-style patterns for files to select, but we're including >>> # instead of ignoring. >>> spec = """ ... ... # This is a comment because the line begins with a hash: "#" ... ... # Include several project directories (and all descendants) relative to ... # the current directory. To reference a directory you must end with a ... # slash: "/" ... /project-a/ ... /project-b/ ... /project-c/ ... ... # Patterns can be negated by prefixing with exclamation mark: "!" ... ... # Ignore temporary files beginning or ending with "~" and ending with ... # ".swp". ... !~* ... !*~ ... !*.swp ... ... # These are python projects so ignore compiled python files from ... # testing. ... !*.pyc ... ... # Ignore the build directories but only directly under the project ... # directories. ... !/*/build/ ... ... """ We want to use the ``GitWildMatchPattern`` class to compile our patterns. The ``PathSpec`` class provides an interface around pattern implementations:: >>> spec = pathspec.PathSpec.from_lines(pathspec.patterns.GitWildMatchPattern, spec.splitlines()) That may be a mouthful but it allows for additional patterns to be implemented in the future without them having to deal with anything but matching the paths sent to them. ``GitWildMatchPattern`` is the implementation of the actual pattern which internally gets converted into a regular expression. ``PathSpec`` is a simple wrapper around a list of compiled patterns. To make things simpler, we can use the registered name for a pattern class instead of always having to provide a reference to the class itself. The ``GitWildMatchPattern`` class is registered as **gitwildmatch**:: >>> spec = pathspec.PathSpec.from_lines('gitwildmatch', spec.splitlines()) If we wanted to manually compile the patterns we can just do the following:: >>> patterns = map(pathspec.patterns.GitWildMatchPattern, spec.splitlines()) >>> spec = PathSpec(patterns) ``PathSpec.from_lines()`` is simply a class method which does just that. If you want to load the patterns from file, you can pass the file instance directly as well:: >>> with open('patterns.list', 'r') as fh: >>> spec = pathspec.PathSpec.from_lines('gitwildmatch', fh) You can perform matching on a whole directory tree with:: >>> matches = spec.match_tree('path/to/directory') Or you can perform matching on a specific set of file paths with:: >>> matches = spec.match_files(file_paths) Or check to see if an individual file matches:: >>> is_matched = spec.match_file(file_path) License ------- *pathspec* is licensed under the `Mozilla Public License Version 2.0`_. See `LICENSE`_ or the `FAQ`_ for more information. In summary, you may use *pathspec* with any closed or open source project without affecting the license of the larger work so long as you: - give credit where credit is due, - and release any custom changes made to *pathspec*. .. _`Mozilla Public License Version 2.0`: http://www.mozilla.org/MPL/2.0 .. _`LICENSE`: LICENSE .. _`FAQ`: http://www.mozilla.org/MPL/2.0/FAQ.html Source ------ The source code for *pathspec* is available from the GitHub repo `cpburnz/python-path-specification`_. .. _`cpburnz/python-path-specification`: https://github.com/cpburnz/python-path-specification Installation ------------ *pathspec* requires the following packages: - `setuptools`_ *pathspec* can be installed from source with:: python setup.py install *pathspec* is also available for install through `PyPI`_:: pip install pathspec .. _`setuptools`: https://pypi.python.org/pypi/setuptools .. _`PyPI`: http://pypi.python.org/pypi/pathspec Documentation ------------- Documentation for *pathspec* is available on `Read the Docs`_. .. _`Read the Docs`: http://python-path-specification.readthedocs.io Other Languages --------------- *pathspec* is also available as a `Ruby gem`_. .. _`Ruby gem`: https://github.com/highb/pathspec-ruby