Alessio Placitelli 8cc68ed2dc Bug 1619555 - Add the missing sources to vendored python libs. r=ahal
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
2020-03-11 15:27:21 +00:00
..

*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