Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/INSTALLER +1 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/LICENSE.txt +20 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/METADATA +92 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/RECORD +1037 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/REQUESTED +0 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/WHEEL +5 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/entry_points.txt +5 -0
- venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/top_level.txt +1 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py +937 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py +153 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py +84 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py +108 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py +168 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py +983 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py +641 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py +179 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py +511 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py +161 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py +83 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py +146 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py +188 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py +127 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py +338 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py +341 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py +580 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py +1188 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py +93 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc +0 -0
- venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py +328 -0
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/INSTALLER
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/LICENSE.txt
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Copyright (c) 2008-present The pip developers (see AUTHORS.txt file)
|
| 2 |
+
|
| 3 |
+
Permission is hereby granted, free of charge, to any person obtaining
|
| 4 |
+
a copy of this software and associated documentation files (the
|
| 5 |
+
"Software"), to deal in the Software without restriction, including
|
| 6 |
+
without limitation the rights to use, copy, modify, merge, publish,
|
| 7 |
+
distribute, sublicense, and/or sell copies of the Software, and to
|
| 8 |
+
permit persons to whom the Software is furnished to do so, subject to
|
| 9 |
+
the following conditions:
|
| 10 |
+
|
| 11 |
+
The above copyright notice and this permission notice shall be
|
| 12 |
+
included in all copies or substantial portions of the Software.
|
| 13 |
+
|
| 14 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 15 |
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 16 |
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
| 17 |
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
| 18 |
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
| 19 |
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
| 20 |
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/METADATA
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.1
|
| 2 |
+
Name: pip
|
| 3 |
+
Version: 22.0.2
|
| 4 |
+
Summary: The PyPA recommended tool for installing Python packages.
|
| 5 |
+
Home-page: https://pip.pypa.io/
|
| 6 |
+
Author: The pip developers
|
| 7 |
+
Author-email: distutils-sig@python.org
|
| 8 |
+
License: MIT
|
| 9 |
+
Project-URL: Documentation, https://pip.pypa.io
|
| 10 |
+
Project-URL: Source, https://github.com/pypa/pip
|
| 11 |
+
Project-URL: Changelog, https://pip.pypa.io/en/stable/news/
|
| 12 |
+
Platform: UNKNOWN
|
| 13 |
+
Classifier: Development Status :: 5 - Production/Stable
|
| 14 |
+
Classifier: Intended Audience :: Developers
|
| 15 |
+
Classifier: License :: OSI Approved :: MIT License
|
| 16 |
+
Classifier: Topic :: Software Development :: Build Tools
|
| 17 |
+
Classifier: Programming Language :: Python
|
| 18 |
+
Classifier: Programming Language :: Python :: 3
|
| 19 |
+
Classifier: Programming Language :: Python :: 3 :: Only
|
| 20 |
+
Classifier: Programming Language :: Python :: 3.7
|
| 21 |
+
Classifier: Programming Language :: Python :: 3.8
|
| 22 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 23 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 24 |
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
| 25 |
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
| 26 |
+
Requires-Python: >=3.7
|
| 27 |
+
License-File: LICENSE.txt
|
| 28 |
+
|
| 29 |
+
pip - The Python Package Installer
|
| 30 |
+
==================================
|
| 31 |
+
|
| 32 |
+
.. image:: https://img.shields.io/pypi/v/pip.svg
|
| 33 |
+
:target: https://pypi.org/project/pip/
|
| 34 |
+
|
| 35 |
+
.. image:: https://readthedocs.org/projects/pip/badge/?version=latest
|
| 36 |
+
:target: https://pip.pypa.io/en/latest
|
| 37 |
+
|
| 38 |
+
pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes.
|
| 39 |
+
|
| 40 |
+
Please take a look at our documentation for how to install and use pip:
|
| 41 |
+
|
| 42 |
+
* `Installation`_
|
| 43 |
+
* `Usage`_
|
| 44 |
+
|
| 45 |
+
We release updates regularly, with a new version every 3 months. Find more details in our documentation:
|
| 46 |
+
|
| 47 |
+
* `Release notes`_
|
| 48 |
+
* `Release process`_
|
| 49 |
+
|
| 50 |
+
In pip 20.3, we've `made a big improvement to the heart of pip`_; `learn more`_. We want your input, so `sign up for our user experience research studies`_ to help us do it right.
|
| 51 |
+
|
| 52 |
+
**Note**: pip 21.0, in January 2021, removed Python 2 support, per pip's `Python 2 support policy`_. Please migrate to Python 3.
|
| 53 |
+
|
| 54 |
+
If you find bugs, need help, or want to talk to the developers, please use our mailing lists or chat rooms:
|
| 55 |
+
|
| 56 |
+
* `Issue tracking`_
|
| 57 |
+
* `Discourse channel`_
|
| 58 |
+
* `User IRC`_
|
| 59 |
+
|
| 60 |
+
If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms:
|
| 61 |
+
|
| 62 |
+
* `GitHub page`_
|
| 63 |
+
* `Development documentation`_
|
| 64 |
+
* `Development mailing list`_
|
| 65 |
+
* `Development IRC`_
|
| 66 |
+
|
| 67 |
+
Code of Conduct
|
| 68 |
+
---------------
|
| 69 |
+
|
| 70 |
+
Everyone interacting in the pip project's codebases, issue trackers, chat
|
| 71 |
+
rooms, and mailing lists is expected to follow the `PSF Code of Conduct`_.
|
| 72 |
+
|
| 73 |
+
.. _package installer: https://packaging.python.org/guides/tool-recommendations/
|
| 74 |
+
.. _Python Package Index: https://pypi.org
|
| 75 |
+
.. _Installation: https://pip.pypa.io/en/stable/installation/
|
| 76 |
+
.. _Usage: https://pip.pypa.io/en/stable/
|
| 77 |
+
.. _Release notes: https://pip.pypa.io/en/stable/news.html
|
| 78 |
+
.. _Release process: https://pip.pypa.io/en/latest/development/release-process/
|
| 79 |
+
.. _GitHub page: https://github.com/pypa/pip
|
| 80 |
+
.. _Development documentation: https://pip.pypa.io/en/latest/development
|
| 81 |
+
.. _made a big improvement to the heart of pip: https://pyfound.blogspot.com/2020/11/pip-20-3-new-resolver.html
|
| 82 |
+
.. _learn more: https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-3-2020
|
| 83 |
+
.. _sign up for our user experience research studies: https://pyfound.blogspot.com/2020/03/new-pip-resolver-to-roll-out-this-year.html
|
| 84 |
+
.. _Python 2 support policy: https://pip.pypa.io/en/latest/development/release-process/#python-2-support
|
| 85 |
+
.. _Issue tracking: https://github.com/pypa/pip/issues
|
| 86 |
+
.. _Discourse channel: https://discuss.python.org/c/packaging
|
| 87 |
+
.. _Development mailing list: https://mail.python.org/mailman3/lists/distutils-sig.python.org/
|
| 88 |
+
.. _User IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa
|
| 89 |
+
.. _Development IRC: https://kiwiirc.com/nextclient/#ircs://irc.libera.chat:+6697/pypa-dev
|
| 90 |
+
.. _PSF Code of Conduct: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md
|
| 91 |
+
|
| 92 |
+
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/RECORD
ADDED
|
@@ -0,0 +1,1037 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
../../../bin/pip,sha256=YcrAqwCdjR8zKfGuOon-X0xTmfREFsYdXzKddIrssnA,386
|
| 2 |
+
../../../bin/pip3,sha256=YcrAqwCdjR8zKfGuOon-X0xTmfREFsYdXzKddIrssnA,386
|
| 3 |
+
../../../bin/pip3.10,sha256=YcrAqwCdjR8zKfGuOon-X0xTmfREFsYdXzKddIrssnA,386
|
| 4 |
+
../../../bin/pip3.10,sha256=YcrAqwCdjR8zKfGuOon-X0xTmfREFsYdXzKddIrssnA,386
|
| 5 |
+
pip-22.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 6 |
+
pip-22.0.2.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093
|
| 7 |
+
pip-22.0.2.dist-info/METADATA,sha256=Yixa0LKkyzjT2N5JQO5qYDgZcmTs6Z6dg4UbwBNyT2A,4166
|
| 8 |
+
pip-22.0.2.dist-info/RECORD,,
|
| 9 |
+
pip-22.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 10 |
+
pip-22.0.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
| 11 |
+
pip-22.0.2.dist-info/entry_points.txt,sha256=vUvIlB_ga0fFQuWvFEq6uJKftMG_HNuoe4kgXkb5rNY,126
|
| 12 |
+
pip-22.0.2.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
| 13 |
+
pip/__init__.py,sha256=PZBF-ESk5Q0DZxQd4HHmTU_wX8y1ynzxBCRdu_fxHSI,357
|
| 14 |
+
pip/__main__.py,sha256=mXwWDftNLMKfwVqKFWGE_uuBZvGSIiUELhLkeysIuZc,1198
|
| 15 |
+
pip/__pycache__/__init__.cpython-310.pyc,,
|
| 16 |
+
pip/__pycache__/__main__.cpython-310.pyc,,
|
| 17 |
+
pip/_internal/__init__.py,sha256=nnFCuxrPMgALrIDxSoy-H6Zj4W4UY60D-uL1aJyq0pc,573
|
| 18 |
+
pip/_internal/__pycache__/__init__.cpython-310.pyc,,
|
| 19 |
+
pip/_internal/__pycache__/build_env.cpython-310.pyc,,
|
| 20 |
+
pip/_internal/__pycache__/cache.cpython-310.pyc,,
|
| 21 |
+
pip/_internal/__pycache__/configuration.cpython-310.pyc,,
|
| 22 |
+
pip/_internal/__pycache__/exceptions.cpython-310.pyc,,
|
| 23 |
+
pip/_internal/__pycache__/main.cpython-310.pyc,,
|
| 24 |
+
pip/_internal/__pycache__/pyproject.cpython-310.pyc,,
|
| 25 |
+
pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc,,
|
| 26 |
+
pip/_internal/__pycache__/wheel_builder.cpython-310.pyc,,
|
| 27 |
+
pip/_internal/build_env.py,sha256=QAsnxJFvj74jS2cZUcxk7zXLvrtAYiRL0EkSPkpSJTo,9739
|
| 28 |
+
pip/_internal/cache.py,sha256=71eaYwrls34HJ6gzbmmYiotiKhPNFTM_tqYJXD5nf3s,9441
|
| 29 |
+
pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132
|
| 30 |
+
pip/_internal/cli/__pycache__/__init__.cpython-310.pyc,,
|
| 31 |
+
pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc,,
|
| 32 |
+
pip/_internal/cli/__pycache__/base_command.cpython-310.pyc,,
|
| 33 |
+
pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc,,
|
| 34 |
+
pip/_internal/cli/__pycache__/command_context.cpython-310.pyc,,
|
| 35 |
+
pip/_internal/cli/__pycache__/main.cpython-310.pyc,,
|
| 36 |
+
pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc,,
|
| 37 |
+
pip/_internal/cli/__pycache__/parser.cpython-310.pyc,,
|
| 38 |
+
pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc,,
|
| 39 |
+
pip/_internal/cli/__pycache__/req_command.cpython-310.pyc,,
|
| 40 |
+
pip/_internal/cli/__pycache__/spinners.cpython-310.pyc,,
|
| 41 |
+
pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc,,
|
| 42 |
+
pip/_internal/cli/autocompletion.py,sha256=wY2JPZY2Eji1vhR7bVo-yCBPJ9LCy6P80iOAhZD1Vi8,6676
|
| 43 |
+
pip/_internal/cli/base_command.py,sha256=6IVFmOjObv0ILip28QcgP8glhXHiGRvU_9kO35Hr7Z0,8037
|
| 44 |
+
pip/_internal/cli/cmdoptions.py,sha256=GT2G2YKBj-851qGseugn2Veq7fJe3FA30gWdcziPQvo,28525
|
| 45 |
+
pip/_internal/cli/command_context.py,sha256=a1pBBvvGLDiZ1Kw64_4tT6HmRTwYDoYy8JFgG5Czn7s,760
|
| 46 |
+
pip/_internal/cli/main.py,sha256=ioJ8IVlb2K1qLOxR-tXkee9lURhYV89CDM71MKag7YY,2472
|
| 47 |
+
pip/_internal/cli/main_parser.py,sha256=Q9TnytfuC5Z2JSjBFWVGtEdYLFy7rukNIb04movHdAo,2614
|
| 48 |
+
pip/_internal/cli/parser.py,sha256=CDXTuFr2UD8ozOlZYf1KDziQdo9-X_IaYOiUcyJQwrA,10788
|
| 49 |
+
pip/_internal/cli/progress_bars.py,sha256=_52w11WoZrvDSR3oItLWvLrEZFUKAfLf4Y6I6WtOnIU,10339
|
| 50 |
+
pip/_internal/cli/req_command.py,sha256=VwqonOy18QwZsRsVjHhp-6w15fG9x3Ltwoa8yJqQno8,18669
|
| 51 |
+
pip/_internal/cli/spinners.py,sha256=TFhjxtOnLeNJ5YmRvQm4eKPgPbJNkZiqO8jOXuxRaYU,5076
|
| 52 |
+
pip/_internal/cli/status_codes.py,sha256=sEFHUaUJbqv8iArL3HAtcztWZmGOFX01hTesSytDEh0,116
|
| 53 |
+
pip/_internal/commands/__init__.py,sha256=Vc1HjsLEtyCh7506OozPHPKXe2Hk-z9cFkFF3BMj1lM,3736
|
| 54 |
+
pip/_internal/commands/__pycache__/__init__.cpython-310.pyc,,
|
| 55 |
+
pip/_internal/commands/__pycache__/cache.cpython-310.pyc,,
|
| 56 |
+
pip/_internal/commands/__pycache__/check.cpython-310.pyc,,
|
| 57 |
+
pip/_internal/commands/__pycache__/completion.cpython-310.pyc,,
|
| 58 |
+
pip/_internal/commands/__pycache__/configuration.cpython-310.pyc,,
|
| 59 |
+
pip/_internal/commands/__pycache__/debug.cpython-310.pyc,,
|
| 60 |
+
pip/_internal/commands/__pycache__/download.cpython-310.pyc,,
|
| 61 |
+
pip/_internal/commands/__pycache__/freeze.cpython-310.pyc,,
|
| 62 |
+
pip/_internal/commands/__pycache__/hash.cpython-310.pyc,,
|
| 63 |
+
pip/_internal/commands/__pycache__/help.cpython-310.pyc,,
|
| 64 |
+
pip/_internal/commands/__pycache__/index.cpython-310.pyc,,
|
| 65 |
+
pip/_internal/commands/__pycache__/install.cpython-310.pyc,,
|
| 66 |
+
pip/_internal/commands/__pycache__/list.cpython-310.pyc,,
|
| 67 |
+
pip/_internal/commands/__pycache__/search.cpython-310.pyc,,
|
| 68 |
+
pip/_internal/commands/__pycache__/show.cpython-310.pyc,,
|
| 69 |
+
pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc,,
|
| 70 |
+
pip/_internal/commands/__pycache__/wheel.cpython-310.pyc,,
|
| 71 |
+
pip/_internal/commands/cache.py,sha256=p9gvc6W_xgxE2zO0o8NXqO1gGJEinEK42qEC-a7Cnuk,7524
|
| 72 |
+
pip/_internal/commands/check.py,sha256=0gjXR7j36xJT5cs2heYU_dfOfpnFfzX8OoPNNoKhqdM,1685
|
| 73 |
+
pip/_internal/commands/completion.py,sha256=kTG_I1VR3N5kGC4Ma9pQTSoY9Q1URCrNyseHSQ-rCL4,2958
|
| 74 |
+
pip/_internal/commands/configuration.py,sha256=arE8vLstjBg-Ar1krXF-bBmT1qBtnL7Fpk-NVh38a0U,8944
|
| 75 |
+
pip/_internal/commands/debug.py,sha256=krET-y45CnQzXwKR1qA3M_tJE4LE2vnQtm3yfGyDSnE,6629
|
| 76 |
+
pip/_internal/commands/download.py,sha256=gVIAEOcpWolhRj9hl89Qzn52G2b_pcZ8naXhxaXobdo,4942
|
| 77 |
+
pip/_internal/commands/freeze.py,sha256=PaJJB9mT_3vHeZ3mbFL_m1fzTYL-_Or3kDtXwTdZZ-A,2968
|
| 78 |
+
pip/_internal/commands/hash.py,sha256=EVVOuvGtoPEdFi8SNnmdqlCQrhCxV-kJsdwtdcCnXGQ,1703
|
| 79 |
+
pip/_internal/commands/help.py,sha256=gcc6QDkcgHMOuAn5UxaZwAStsRBrnGSn_yxjS57JIoM,1132
|
| 80 |
+
pip/_internal/commands/index.py,sha256=8pYkICUJlccjm3E83b7UuZ5DtOfLh1N7ZHXAgkajjHo,4849
|
| 81 |
+
pip/_internal/commands/install.py,sha256=YVygBF6vfrNi0jmdNBCM6bcoWb7vaALEGG1--8Mmf88,27893
|
| 82 |
+
pip/_internal/commands/list.py,sha256=aKt1PP7enTiNLD_1qDXXaIKQ2QvLmUDfoQU6SYxJ8Ek,12318
|
| 83 |
+
pip/_internal/commands/search.py,sha256=sbBZiARRc050QquOKcCvOr2K3XLsoYebLKZGRi__iUI,5697
|
| 84 |
+
pip/_internal/commands/show.py,sha256=2VicM3jF0YWgn4O1jG_QF5oxOT0ln57VDu1NE6hqWcM,5859
|
| 85 |
+
pip/_internal/commands/uninstall.py,sha256=DNTYAGJNljMO_YYBxrpcwj0FEl7lo_P55_98O6g2TNk,3526
|
| 86 |
+
pip/_internal/commands/wheel.py,sha256=7HAjLclZxIzBrX6JmhmGBVxH5xrjaBYCtSdpQi1pWCE,6206
|
| 87 |
+
pip/_internal/configuration.py,sha256=qmCX3uuVM73PQeAuWQHic22bhops8s31B8k02nFAoiQ,13171
|
| 88 |
+
pip/_internal/distributions/__init__.py,sha256=Hq6kt6gXBgjNit5hTTWLAzeCNOKoB-N0pGYSqehrli8,858
|
| 89 |
+
pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc,,
|
| 90 |
+
pip/_internal/distributions/__pycache__/base.cpython-310.pyc,,
|
| 91 |
+
pip/_internal/distributions/__pycache__/installed.cpython-310.pyc,,
|
| 92 |
+
pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc,,
|
| 93 |
+
pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc,,
|
| 94 |
+
pip/_internal/distributions/base.py,sha256=3FUYD8Gb4YuSu3pggC_FRctZBDbpm5ZK89tPksIUjoE,1172
|
| 95 |
+
pip/_internal/distributions/installed.py,sha256=HzfNRu3smoOm54m8H2iK6LHzBx6_DEnka4OPEsizbXg,680
|
| 96 |
+
pip/_internal/distributions/sdist.py,sha256=0nJvU1RhZtbwaeYtLbzSwYrbGRcY6IgNsWdEhAHROK8,5499
|
| 97 |
+
pip/_internal/distributions/wheel.py,sha256=-NgzdIs-w_hcer_U81yzgpVTljJRg5m79xufqvbjv0s,1115
|
| 98 |
+
pip/_internal/exceptions.py,sha256=U-dV1ixkSz6NAU6Aw9dosKi2EzZ5D3BA7ilYZuTLKeU,20912
|
| 99 |
+
pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30
|
| 100 |
+
pip/_internal/index/__pycache__/__init__.cpython-310.pyc,,
|
| 101 |
+
pip/_internal/index/__pycache__/collector.cpython-310.pyc,,
|
| 102 |
+
pip/_internal/index/__pycache__/package_finder.cpython-310.pyc,,
|
| 103 |
+
pip/_internal/index/__pycache__/sources.cpython-310.pyc,,
|
| 104 |
+
pip/_internal/index/collector.py,sha256=8kXlmlnZ-qAknyxd0duCn5mxFHX-zr468ykutk8WOwo,21392
|
| 105 |
+
pip/_internal/index/package_finder.py,sha256=9UVg-7582nYNEWa0cIIl8otzPm4mlfyrQVuozAcssLo,36783
|
| 106 |
+
pip/_internal/index/sources.py,sha256=SVyPitv08-Qalh2_Bk5diAJ9GAA_d-a93koouQodAG0,6557
|
| 107 |
+
pip/_internal/locations/__init__.py,sha256=ergvPwlfNTmQYFmaRYbj--ZwTN5izgTL9KE5d0FB7-8,17362
|
| 108 |
+
pip/_internal/locations/__pycache__/__init__.cpython-310.pyc,,
|
| 109 |
+
pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc,,
|
| 110 |
+
pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc,,
|
| 111 |
+
pip/_internal/locations/__pycache__/base.cpython-310.pyc,,
|
| 112 |
+
pip/_internal/locations/_distutils.py,sha256=Sk7tw8ZP1DWMYJ8MibABsa8IME2Ejv1PKeGlYQCBTZc,5871
|
| 113 |
+
pip/_internal/locations/_sysconfig.py,sha256=LQNKTJKyjVqxXaPntlBwdUqTG1xwYf6GVCKMbyRJx5M,7918
|
| 114 |
+
pip/_internal/locations/base.py,sha256=x5D1ONktmPJd8nnUTh-ELsAJ7fiXA-k-0a_vhfi2_Us,1579
|
| 115 |
+
pip/_internal/main.py,sha256=r-UnUe8HLo5XFJz8inTcOOTiu_sxNhgHb6VwlGUllOI,340
|
| 116 |
+
pip/_internal/metadata/__init__.py,sha256=iGoDbe_iTXQTIAEVy9f7dm-VQfZANO8kkwFr1CpqxqI,2036
|
| 117 |
+
pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc,,
|
| 118 |
+
pip/_internal/metadata/__pycache__/base.cpython-310.pyc,,
|
| 119 |
+
pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc,,
|
| 120 |
+
pip/_internal/metadata/base.py,sha256=SCRPtShrtPy0lfFxuaFTgJJHsRXToGFToQUAZoBBbeA,19429
|
| 121 |
+
pip/_internal/metadata/pkg_resources.py,sha256=wAnEtrcgH9YtV996MfoBjR2hGLHvi3uxk0vUOHbqBak,9456
|
| 122 |
+
pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63
|
| 123 |
+
pip/_internal/models/__pycache__/__init__.cpython-310.pyc,,
|
| 124 |
+
pip/_internal/models/__pycache__/candidate.cpython-310.pyc,,
|
| 125 |
+
pip/_internal/models/__pycache__/direct_url.cpython-310.pyc,,
|
| 126 |
+
pip/_internal/models/__pycache__/format_control.cpython-310.pyc,,
|
| 127 |
+
pip/_internal/models/__pycache__/index.cpython-310.pyc,,
|
| 128 |
+
pip/_internal/models/__pycache__/link.cpython-310.pyc,,
|
| 129 |
+
pip/_internal/models/__pycache__/scheme.cpython-310.pyc,,
|
| 130 |
+
pip/_internal/models/__pycache__/search_scope.cpython-310.pyc,,
|
| 131 |
+
pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc,,
|
| 132 |
+
pip/_internal/models/__pycache__/target_python.cpython-310.pyc,,
|
| 133 |
+
pip/_internal/models/__pycache__/wheel.cpython-310.pyc,,
|
| 134 |
+
pip/_internal/models/candidate.py,sha256=6pcABsaR7CfIHlbJbr2_kMkVJFL_yrYjTx6SVWUnCPQ,990
|
| 135 |
+
pip/_internal/models/direct_url.py,sha256=7XtGQSLLDQb5ZywI2EMnnLcddtf5CJLx44lMtTHPxFw,6350
|
| 136 |
+
pip/_internal/models/format_control.py,sha256=DJpMYjxeYKKQdwNcML2_F0vtAh-qnKTYe-CpTxQe-4g,2520
|
| 137 |
+
pip/_internal/models/index.py,sha256=tYnL8oxGi4aSNWur0mG8DAP7rC6yuha_MwJO8xw0crI,1030
|
| 138 |
+
pip/_internal/models/link.py,sha256=hoT_qsOBAgLBm9GKqpBrNF_mrEXeGXQE-aH_RX2cGgg,9817
|
| 139 |
+
pip/_internal/models/scheme.py,sha256=3EFQp_ICu_shH1-TBqhl0QAusKCPDFOlgHFeN4XowWs,738
|
| 140 |
+
pip/_internal/models/search_scope.py,sha256=LwloG0PJAmtI1hFXIypsD95kWE9xfR5hf_a2v1Vw7sk,4520
|
| 141 |
+
pip/_internal/models/selection_prefs.py,sha256=KZdi66gsR-_RUXUr9uejssk3rmTHrQVJWeNA2sV-VSY,1907
|
| 142 |
+
pip/_internal/models/target_python.py,sha256=qKpZox7J8NAaPmDs5C_aniwfPDxzvpkrCKqfwndG87k,3858
|
| 143 |
+
pip/_internal/models/wheel.py,sha256=wlyz23BcZ40nBLX3rXKtrV6tmc8-8RxHyV-hq5zJ74Q,3525
|
| 144 |
+
pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50
|
| 145 |
+
pip/_internal/network/__pycache__/__init__.cpython-310.pyc,,
|
| 146 |
+
pip/_internal/network/__pycache__/auth.cpython-310.pyc,,
|
| 147 |
+
pip/_internal/network/__pycache__/cache.cpython-310.pyc,,
|
| 148 |
+
pip/_internal/network/__pycache__/download.cpython-310.pyc,,
|
| 149 |
+
pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc,,
|
| 150 |
+
pip/_internal/network/__pycache__/session.cpython-310.pyc,,
|
| 151 |
+
pip/_internal/network/__pycache__/utils.cpython-310.pyc,,
|
| 152 |
+
pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc,,
|
| 153 |
+
pip/_internal/network/auth.py,sha256=a3C7Xaa8kTJjXkdi_wrUjqaySc8Z9Yz7U6QIbXfzMyc,12190
|
| 154 |
+
pip/_internal/network/cache.py,sha256=FJ3uTUo3wgf2KHmeZ3ltN9x3tQoy_0X6qNsRtNXsuL0,2131
|
| 155 |
+
pip/_internal/network/download.py,sha256=12Ef_L7MlhNUN_0-n_3DggozWJER8c9J0us16cbvkKA,6062
|
| 156 |
+
pip/_internal/network/lazy_wheel.py,sha256=1b8ZJ1w4bSBzpGzGwJR_CL2yQ6AFIwWQkS1vbPPw2XU,7627
|
| 157 |
+
pip/_internal/network/session.py,sha256=38IKGKC64MTVUIH5XOR1hr2pOCzp39RccykdmGAvqRU,16729
|
| 158 |
+
pip/_internal/network/utils.py,sha256=igLlTu_-q0LmL8FdJKq-Uj7AT_owrQ-T9FfyarkhK5U,4059
|
| 159 |
+
pip/_internal/network/xmlrpc.py,sha256=AzQgG4GgS152_cqmGr_Oz2MIXsCal-xfsis7fA7nmU0,1791
|
| 160 |
+
pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 161 |
+
pip/_internal/operations/__pycache__/__init__.cpython-310.pyc,,
|
| 162 |
+
pip/_internal/operations/__pycache__/check.cpython-310.pyc,,
|
| 163 |
+
pip/_internal/operations/__pycache__/freeze.cpython-310.pyc,,
|
| 164 |
+
pip/_internal/operations/__pycache__/prepare.cpython-310.pyc,,
|
| 165 |
+
pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 166 |
+
pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc,,
|
| 167 |
+
pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc,,
|
| 168 |
+
pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc,,
|
| 169 |
+
pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc,,
|
| 170 |
+
pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc,,
|
| 171 |
+
pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc,,
|
| 172 |
+
pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc,,
|
| 173 |
+
pip/_internal/operations/build/metadata.py,sha256=ES_uRmAvhrNm_nDTpZxshBfUsvnXtkj-g_4rZrH9Rww,1404
|
| 174 |
+
pip/_internal/operations/build/metadata_editable.py,sha256=_Rai0VZjxoeJUkjkuICrq45LtjwFoDOveosMYH43rKc,1456
|
| 175 |
+
pip/_internal/operations/build/metadata_legacy.py,sha256=o-eU21As175hDC7dluM1fJJ_FqokTIShyWpjKaIpHZw,2198
|
| 176 |
+
pip/_internal/operations/build/wheel.py,sha256=AO9XnTGhTgHtZmU8Dkbfo1OGr41rBuSDjIgAa4zUKgE,1063
|
| 177 |
+
pip/_internal/operations/build/wheel_editable.py,sha256=TVETY-L_M_dSEKBhTIcQOP75zKVXw8tuq1U354Mm30A,1405
|
| 178 |
+
pip/_internal/operations/build/wheel_legacy.py,sha256=C9j6rukgQI1n_JeQLoZGuDdfUwzCXShyIdPTp6edbMQ,3064
|
| 179 |
+
pip/_internal/operations/check.py,sha256=ca4O9CkPt9Em9sLCf3H0iVt1GIcW7M8C0U5XooaBuT4,5109
|
| 180 |
+
pip/_internal/operations/freeze.py,sha256=ZiYw5GlUpLVx4VJHz4S1AP2JFNyvH0iq5kpcYj2ovyw,9770
|
| 181 |
+
pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51
|
| 182 |
+
pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc,,
|
| 183 |
+
pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc,,
|
| 184 |
+
pip/_internal/operations/install/__pycache__/legacy.cpython-310.pyc,,
|
| 185 |
+
pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc,,
|
| 186 |
+
pip/_internal/operations/install/editable_legacy.py,sha256=ee4kfJHNuzTdKItbfAsNOSEwq_vD7DRPGkBdK48yBhU,1354
|
| 187 |
+
pip/_internal/operations/install/legacy.py,sha256=x7BG8kBm0K3JO6AR4sBl0zh2LOrfUaz7EdNt-keHBv4,4091
|
| 188 |
+
pip/_internal/operations/install/wheel.py,sha256=QuQyCZE-XjuJjDYRixo40oUt2ucFhNmSrCbcXY7A9aE,27412
|
| 189 |
+
pip/_internal/operations/prepare.py,sha256=LJP97jsuiCAaTGVIRrcINvxc1ntVsB45MoRbyMIukg4,24145
|
| 190 |
+
pip/_internal/pyproject.py,sha256=Wm2ljdT6spC-tSdf1LBRaMYSJaXr1xUxV3OwdHCW9jc,6722
|
| 191 |
+
pip/_internal/req/__init__.py,sha256=A7mUvT1KAcCYP3H7gUOTx2GRMlgoDur3H68Q0OJqM5A,2793
|
| 192 |
+
pip/_internal/req/__pycache__/__init__.cpython-310.pyc,,
|
| 193 |
+
pip/_internal/req/__pycache__/constructors.cpython-310.pyc,,
|
| 194 |
+
pip/_internal/req/__pycache__/req_file.cpython-310.pyc,,
|
| 195 |
+
pip/_internal/req/__pycache__/req_install.cpython-310.pyc,,
|
| 196 |
+
pip/_internal/req/__pycache__/req_set.cpython-310.pyc,,
|
| 197 |
+
pip/_internal/req/__pycache__/req_tracker.cpython-310.pyc,,
|
| 198 |
+
pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc,,
|
| 199 |
+
pip/_internal/req/constructors.py,sha256=fXmtNI_J77JFP_HRvYcQW-1nKw3AiUu6Q3b1Nm8aMm0,16094
|
| 200 |
+
pip/_internal/req/req_file.py,sha256=5N8OTouPCof-305StC2YK9HBxQMw-xO46skRoBPbkZo,17421
|
| 201 |
+
pip/_internal/req/req_install.py,sha256=jU1HQBT_DnXZean7jY8wPNMhb6_CzdKHcilHFY_o-Fc,32524
|
| 202 |
+
pip/_internal/req/req_set.py,sha256=kHYiLvkKRx21WaLTwOI-54Ng0SSzZZ9SE7FD0PsfvYA,7584
|
| 203 |
+
pip/_internal/req/req_tracker.py,sha256=jK7JDu-Wt73X-gqozrFtgJVlUlnQo0P4IQ4x4_gPlfM,4117
|
| 204 |
+
pip/_internal/req/req_uninstall.py,sha256=K2BHYRRJAfkSpFqcPzc9XfX2EvbhaRtQIPRFmMtUdfo,23814
|
| 205 |
+
pip/_internal/resolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 206 |
+
pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc,,
|
| 207 |
+
pip/_internal/resolution/__pycache__/base.cpython-310.pyc,,
|
| 208 |
+
pip/_internal/resolution/base.py,sha256=qlmh325SBVfvG6Me9gc5Nsh5sdwHBwzHBq6aEXtKsLA,583
|
| 209 |
+
pip/_internal/resolution/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 210 |
+
pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc,,
|
| 211 |
+
pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc,,
|
| 212 |
+
pip/_internal/resolution/legacy/resolver.py,sha256=b7bf5qL1ROg73sl8dhTvLdD1w5XF8xybBAF6eF_kz7c,18288
|
| 213 |
+
pip/_internal/resolution/resolvelib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 214 |
+
pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc,,
|
| 215 |
+
pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc,,
|
| 216 |
+
pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc,,
|
| 217 |
+
pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc,,
|
| 218 |
+
pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc,,
|
| 219 |
+
pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc,,
|
| 220 |
+
pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc,,
|
| 221 |
+
pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc,,
|
| 222 |
+
pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc,,
|
| 223 |
+
pip/_internal/resolution/resolvelib/base.py,sha256=u1O4fkvCO4mhmu5i32xrDv9AX5NgUci_eYVyBDQhTIM,5220
|
| 224 |
+
pip/_internal/resolution/resolvelib/candidates.py,sha256=KR5jxZRSahByOABXbwrX-zNoawa7Gm9Iss-HrvrcvNw,18357
|
| 225 |
+
pip/_internal/resolution/resolvelib/factory.py,sha256=0bbxnUSSjaeTmtIEgeeKtEqhEFfNhv3xpq7j9IaMq2c,28298
|
| 226 |
+
pip/_internal/resolution/resolvelib/found_candidates.py,sha256=hvL3Hoa9VaYo-qEOZkBi2Iqw251UDxPz-uMHVaWmLpE,5705
|
| 227 |
+
pip/_internal/resolution/resolvelib/provider.py,sha256=LzQQyzMVaZYAwLgKInbq-it6mbQL1gX0hGohz5Cr5wg,9915
|
| 228 |
+
pip/_internal/resolution/resolvelib/reporter.py,sha256=3ZVVYrs5PqvLFJkGLcuXoMK5mTInFzl31xjUpDBpZZk,2526
|
| 229 |
+
pip/_internal/resolution/resolvelib/requirements.py,sha256=B1ndvKPSuyyyTEXt9sKhbwminViSWnBrJa7qO2ln4Z0,5455
|
| 230 |
+
pip/_internal/resolution/resolvelib/resolver.py,sha256=ucoVKHtwH6gkZjcfIVJbUiOIHLqJxeYlrKTMIJciYwM,11335
|
| 231 |
+
pip/_internal/self_outdated_check.py,sha256=GKSatNlt2cz_CMGxu72FbUzuPaXpWOnIVKOOYIk0gvY,6849
|
| 232 |
+
pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 233 |
+
pip/_internal/utils/__pycache__/__init__.cpython-310.pyc,,
|
| 234 |
+
pip/_internal/utils/__pycache__/_log.cpython-310.pyc,,
|
| 235 |
+
pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc,,
|
| 236 |
+
pip/_internal/utils/__pycache__/compat.cpython-310.pyc,,
|
| 237 |
+
pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc,,
|
| 238 |
+
pip/_internal/utils/__pycache__/datetime.cpython-310.pyc,,
|
| 239 |
+
pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc,,
|
| 240 |
+
pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc,,
|
| 241 |
+
pip/_internal/utils/__pycache__/distutils_args.cpython-310.pyc,,
|
| 242 |
+
pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc,,
|
| 243 |
+
pip/_internal/utils/__pycache__/encoding.cpython-310.pyc,,
|
| 244 |
+
pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc,,
|
| 245 |
+
pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc,,
|
| 246 |
+
pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc,,
|
| 247 |
+
pip/_internal/utils/__pycache__/glibc.cpython-310.pyc,,
|
| 248 |
+
pip/_internal/utils/__pycache__/hashes.cpython-310.pyc,,
|
| 249 |
+
pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc,,
|
| 250 |
+
pip/_internal/utils/__pycache__/logging.cpython-310.pyc,,
|
| 251 |
+
pip/_internal/utils/__pycache__/misc.cpython-310.pyc,,
|
| 252 |
+
pip/_internal/utils/__pycache__/models.cpython-310.pyc,,
|
| 253 |
+
pip/_internal/utils/__pycache__/packaging.cpython-310.pyc,,
|
| 254 |
+
pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc,,
|
| 255 |
+
pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc,,
|
| 256 |
+
pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc,,
|
| 257 |
+
pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc,,
|
| 258 |
+
pip/_internal/utils/__pycache__/urls.cpython-310.pyc,,
|
| 259 |
+
pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc,,
|
| 260 |
+
pip/_internal/utils/__pycache__/wheel.cpython-310.pyc,,
|
| 261 |
+
pip/_internal/utils/_log.py,sha256=-jHLOE_THaZz5BFcCnoSL9EYAtJ0nXem49s9of4jvKw,1015
|
| 262 |
+
pip/_internal/utils/appdirs.py,sha256=swgcTKOm3daLeXTW6v5BUS2Ti2RvEnGRQYH_yDXklAo,1665
|
| 263 |
+
pip/_internal/utils/compat.py,sha256=ACyBfLgj3_XG-iA5omEDrXqDM0cQKzi8h8HRBInzG6Q,1884
|
| 264 |
+
pip/_internal/utils/compatibility_tags.py,sha256=ydin8QG8BHqYRsPY4OL6cmb44CbqXl1T0xxS97VhHkk,5377
|
| 265 |
+
pip/_internal/utils/datetime.py,sha256=m21Y3wAtQc-ji6Veb6k_M5g6A0ZyFI4egchTdnwh-pQ,242
|
| 266 |
+
pip/_internal/utils/deprecation.py,sha256=NKo8VqLioJ4nnXXGmW4KdasxF90EFHkZaHeX1fT08C8,3627
|
| 267 |
+
pip/_internal/utils/direct_url_helpers.py,sha256=6F1tc2rcKaCZmgfVwsE6ObIe_Pux23mUVYA-2D9wCFc,3206
|
| 268 |
+
pip/_internal/utils/distutils_args.py,sha256=mcAscyp80vTt3xAGTipnpgc83V-_wCvydNELVXLq7JI,1249
|
| 269 |
+
pip/_internal/utils/egg_link.py,sha256=5MVlpz5LirT4iLQq86OYzjXaYF0D4Qk1dprEI7ThST4,2203
|
| 270 |
+
pip/_internal/utils/encoding.py,sha256=bdZ3YgUpaOEBI5MP4-DEXiQarCW3V0rxw1kRz-TaU1Q,1169
|
| 271 |
+
pip/_internal/utils/entrypoints.py,sha256=aPvCnQVi9Hdk35Kloww_D5ibjUpqxgqcJP8O9VuMZek,1055
|
| 272 |
+
pip/_internal/utils/filesystem.py,sha256=rrl-rY1w8TYyKYndUyZlE9ffkQyA4-jI9x_59zXkn5s,5893
|
| 273 |
+
pip/_internal/utils/filetypes.py,sha256=i8XAQ0eFCog26Fw9yV0Yb1ygAqKYB1w9Cz9n0fj8gZU,716
|
| 274 |
+
pip/_internal/utils/glibc.py,sha256=tDfwVYnJCOC0BNVpItpy8CGLP9BjkxFHdl0mTS0J7fc,3110
|
| 275 |
+
pip/_internal/utils/hashes.py,sha256=anpZfFGIT6HcIj2td9NHtE8AWg6GeAIhwpP8GPvZE0E,4811
|
| 276 |
+
pip/_internal/utils/inject_securetransport.py,sha256=o-QRVMGiENrTJxw3fAhA7uxpdEdw6M41TjHYtSVRrcg,795
|
| 277 |
+
pip/_internal/utils/logging.py,sha256=Rvght-fDXL70VWib1cpgZ3iU-kXODV98bNeLUlbqVto,11522
|
| 278 |
+
pip/_internal/utils/misc.py,sha256=MdUB12BMhj73sEmskEutmPyWFaJB7asoPCfLzs_YeT0,19359
|
| 279 |
+
pip/_internal/utils/models.py,sha256=5GoYU586SrxURMvDn_jBMJInitviJg4O5-iOU-6I0WY,1193
|
| 280 |
+
pip/_internal/utils/packaging.py,sha256=5Wm6_x7lKrlqVjPI5MBN_RurcRHwVYoQ7Ksrs84de7s,2108
|
| 281 |
+
pip/_internal/utils/setuptools_build.py,sha256=vNH9hQB9wT6d-h1hVQhBKw91jNeT42meHpVeii-urOI,5652
|
| 282 |
+
pip/_internal/utils/subprocess.py,sha256=vIWGpet5ARBmZ2Qn4NEHNgzCOduqbPIuByZmhhmr6mM,9182
|
| 283 |
+
pip/_internal/utils/temp_dir.py,sha256=zob3PYMVevONkheOMUp_4jDofrEY3HIu5DHK78cSspI,7662
|
| 284 |
+
pip/_internal/utils/unpacking.py,sha256=HUFlMEyCa9dPwdLh6sWeh95DeKytV8rsOyKShEw9y6g,8906
|
| 285 |
+
pip/_internal/utils/urls.py,sha256=AhaesUGl-9it6uvG6fsFPOr9ynFpGaTMk4t5XTX7Z_Q,1759
|
| 286 |
+
pip/_internal/utils/virtualenv.py,sha256=4_48qMzCwB_F5jIK5BC_ua7uiAMVifmQWU9NdaGUoVA,3459
|
| 287 |
+
pip/_internal/utils/wheel.py,sha256=lXOgZyTlOm5HmK8tw5iw0A3_5A6wRzsXHOaQkIvvloU,4549
|
| 288 |
+
pip/_internal/vcs/__init__.py,sha256=UAqvzpbi0VbZo3Ub6skEeZAw-ooIZR-zX_WpCbxyCoU,596
|
| 289 |
+
pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc,,
|
| 290 |
+
pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc,,
|
| 291 |
+
pip/_internal/vcs/__pycache__/git.cpython-310.pyc,,
|
| 292 |
+
pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc,,
|
| 293 |
+
pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc,,
|
| 294 |
+
pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc,,
|
| 295 |
+
pip/_internal/vcs/bazaar.py,sha256=IGb5ca1xSZfgegRD2_JeyoZPrQQHs7lEYEIgpVsKpoU,3047
|
| 296 |
+
pip/_internal/vcs/git.py,sha256=mjhwudCx9WlLNkxZ6_kOKmueF0rLoU2i1xeASKF6yiQ,18116
|
| 297 |
+
pip/_internal/vcs/mercurial.py,sha256=Bzbd518Jsx-EJI0IhIobiQqiRsUv5TWYnrmRIFWE0Gw,5238
|
| 298 |
+
pip/_internal/vcs/subversion.py,sha256=TEMRdwECvMcXakZX0pTNUep79kmBYkWDkWFkrYmcmac,11718
|
| 299 |
+
pip/_internal/vcs/versioncontrol.py,sha256=KUOc-hN51em9jrqxKwUR3JnkgSE-xSOqMiiJcSaL6B8,22811
|
| 300 |
+
pip/_internal/wheel_builder.py,sha256=65rOA8FSYt3c3HyqEw17uujjlCgqmoKEIv6rv9xN2NM,12307
|
| 301 |
+
pip/_vendor/__init__.py,sha256=xjcBX0EP50pkaMdCssrsBXoZgo2hTtYxlcH1CIyA3T4,4708
|
| 302 |
+
pip/_vendor/__pycache__/__init__.cpython-310.pyc,,
|
| 303 |
+
pip/_vendor/__pycache__/distro.cpython-310.pyc,,
|
| 304 |
+
pip/_vendor/__pycache__/six.cpython-310.pyc,,
|
| 305 |
+
pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc,,
|
| 306 |
+
pip/_vendor/cachecontrol/__init__.py,sha256=1j_YQfjmiix6YyouLrftC6NzksAm8e8xGSjMKMRPIkM,465
|
| 307 |
+
pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc,,
|
| 308 |
+
pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc,,
|
| 309 |
+
pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc,,
|
| 310 |
+
pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc,,
|
| 311 |
+
pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc,,
|
| 312 |
+
pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc,,
|
| 313 |
+
pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc,,
|
| 314 |
+
pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc,,
|
| 315 |
+
pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc,,
|
| 316 |
+
pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc,,
|
| 317 |
+
pip/_vendor/cachecontrol/_cmd.py,sha256=lxUXqfNTVx84zf6tcWbkLZHA6WVBRtJRpfeA9ZqhaAY,1379
|
| 318 |
+
pip/_vendor/cachecontrol/adapter.py,sha256=ew9OYEQHEOjvGl06ZsuX8W3DAvHWsQKHwWAxISyGug8,5033
|
| 319 |
+
pip/_vendor/cachecontrol/cache.py,sha256=eMS9Bn9JWQkHiIYA5GPRBqKVU95uS-yXkxrzpoafRig,917
|
| 320 |
+
pip/_vendor/cachecontrol/caches/__init__.py,sha256=gGFOtIH8QDRvkP4YAfGIh-u9YYcGZVxwLM1-6e1mPNI,170
|
| 321 |
+
pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc,,
|
| 322 |
+
pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc,,
|
| 323 |
+
pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc,,
|
| 324 |
+
pip/_vendor/cachecontrol/caches/file_cache.py,sha256=P2KHcNXiqxEW7fCq5KC-NYHGSk0nNR9NIKuN-vBTn-E,4251
|
| 325 |
+
pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=tu_YBV7EV8vdBRGazUErkoRqYYjSBmNcB8dZ7BNomqk,940
|
| 326 |
+
pip/_vendor/cachecontrol/compat.py,sha256=LNx7vqBndYdHU8YuJt53ab_8rzMGTXVrvMb7CZJkxG0,778
|
| 327 |
+
pip/_vendor/cachecontrol/controller.py,sha256=9DSEiV58Gx7Ce69fLCrRcpN-_sHzXTY4ol9bEviatR0,15625
|
| 328 |
+
pip/_vendor/cachecontrol/filewrapper.py,sha256=X4BAQOO26GNOR7nH_fhTzAfeuct2rBQcx_15MyFBpcs,3946
|
| 329 |
+
pip/_vendor/cachecontrol/heuristics.py,sha256=8kAyuZLSCyEIgQr6vbUwfhpqg9ows4mM0IV6DWazevI,4154
|
| 330 |
+
pip/_vendor/cachecontrol/serialize.py,sha256=dlySaeA5U7Q5eHvjiObgo1M8j8_huVjfWjid7Aq-r8c,6783
|
| 331 |
+
pip/_vendor/cachecontrol/wrapper.py,sha256=X3-KMZ20Ho3VtqyVaXclpeQpFzokR5NE8tZSfvKVaB8,774
|
| 332 |
+
pip/_vendor/certifi/__init__.py,sha256=xWdRgntT3j1V95zkRipGOg_A1UfEju2FcpujhysZLRI,62
|
| 333 |
+
pip/_vendor/certifi/__main__.py,sha256=1k3Cr95vCxxGRGDljrW3wMdpZdL3Nhf0u1n-k2qdsCY,255
|
| 334 |
+
pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc,,
|
| 335 |
+
pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc,,
|
| 336 |
+
pip/_vendor/certifi/__pycache__/core.cpython-310.pyc,,
|
| 337 |
+
pip/_vendor/certifi/cacert.pem,sha256=-og4Keu4zSpgL5shwfhd4kz0eUnVILzrGCi0zRy2kGw,265969
|
| 338 |
+
pip/_vendor/certifi/core.py,sha256=CcwptmiI-3M50jIdO0HT6Fh6W_wqGsf8QcX9yfzvyuc,2791
|
| 339 |
+
pip/_vendor/chardet/__init__.py,sha256=mWZaWmvZkhwfBEAT9O1Y6nRTfKzhT7FHhQTTAujbqUA,3271
|
| 340 |
+
pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc,,
|
| 341 |
+
pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc,,
|
| 342 |
+
pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc,,
|
| 343 |
+
pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc,,
|
| 344 |
+
pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc,,
|
| 345 |
+
pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc,,
|
| 346 |
+
pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc,,
|
| 347 |
+
pip/_vendor/chardet/__pycache__/compat.cpython-310.pyc,,
|
| 348 |
+
pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc,,
|
| 349 |
+
pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc,,
|
| 350 |
+
pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc,,
|
| 351 |
+
pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc,,
|
| 352 |
+
pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc,,
|
| 353 |
+
pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc,,
|
| 354 |
+
pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc,,
|
| 355 |
+
pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc,,
|
| 356 |
+
pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc,,
|
| 357 |
+
pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc,,
|
| 358 |
+
pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc,,
|
| 359 |
+
pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc,,
|
| 360 |
+
pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc,,
|
| 361 |
+
pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc,,
|
| 362 |
+
pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc,,
|
| 363 |
+
pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc,,
|
| 364 |
+
pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc,,
|
| 365 |
+
pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc,,
|
| 366 |
+
pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc,,
|
| 367 |
+
pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc,,
|
| 368 |
+
pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc,,
|
| 369 |
+
pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc,,
|
| 370 |
+
pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc,,
|
| 371 |
+
pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc,,
|
| 372 |
+
pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc,,
|
| 373 |
+
pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc,,
|
| 374 |
+
pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc,,
|
| 375 |
+
pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc,,
|
| 376 |
+
pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc,,
|
| 377 |
+
pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc,,
|
| 378 |
+
pip/_vendor/chardet/__pycache__/version.cpython-310.pyc,,
|
| 379 |
+
pip/_vendor/chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254
|
| 380 |
+
pip/_vendor/chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757
|
| 381 |
+
pip/_vendor/chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411
|
| 382 |
+
pip/_vendor/chardet/charsetgroupprober.py,sha256=GZLReHP6FRRn43hvSOoGCxYamErKzyp6RgOQxVeC3kg,3839
|
| 383 |
+
pip/_vendor/chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110
|
| 384 |
+
pip/_vendor/chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
| 385 |
+
pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc,,
|
| 386 |
+
pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc,,
|
| 387 |
+
pip/_vendor/chardet/cli/chardetect.py,sha256=XK5zqjUG2a4-y6eLHZ8ThYcp6WWUrdlmELxNypcc2SE,2747
|
| 388 |
+
pip/_vendor/chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590
|
| 389 |
+
pip/_vendor/chardet/compat.py,sha256=40zr6wICZwknxyuLGGcIOPyve8DTebBCbbvttvnmp5Q,1200
|
| 390 |
+
pip/_vendor/chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855
|
| 391 |
+
pip/_vendor/chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661
|
| 392 |
+
pip/_vendor/chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950
|
| 393 |
+
pip/_vendor/chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510
|
| 394 |
+
pip/_vendor/chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749
|
| 395 |
+
pip/_vendor/chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546
|
| 396 |
+
pip/_vendor/chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748
|
| 397 |
+
pip/_vendor/chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621
|
| 398 |
+
pip/_vendor/chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747
|
| 399 |
+
pip/_vendor/chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715
|
| 400 |
+
pip/_vendor/chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754
|
| 401 |
+
pip/_vendor/chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838
|
| 402 |
+
pip/_vendor/chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777
|
| 403 |
+
pip/_vendor/chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643
|
| 404 |
+
pip/_vendor/chardet/langbulgarianmodel.py,sha256=rk9CJpuxO0bObboJcv6gNgWuosYZmd8qEEds5y7DS_Y,105697
|
| 405 |
+
pip/_vendor/chardet/langgreekmodel.py,sha256=S-uNQ1ihC75yhBvSux24gLFZv3QyctMwC6OxLJdX-bw,99571
|
| 406 |
+
pip/_vendor/chardet/langhebrewmodel.py,sha256=DzPP6TPGG_-PV7tqspu_d8duueqm7uN-5eQ0aHUw1Gg,98776
|
| 407 |
+
pip/_vendor/chardet/langhungarianmodel.py,sha256=RtJH7DZdsmaHqyK46Kkmnk5wQHiJwJPPJSqqIlpeZRc,102498
|
| 408 |
+
pip/_vendor/chardet/langrussianmodel.py,sha256=THqJOhSxiTQcHboDNSc5yofc2koXXQFHFyjtyuntUfM,131180
|
| 409 |
+
pip/_vendor/chardet/langthaimodel.py,sha256=R1wXHnUMtejpw0JnH_JO8XdYasME6wjVqp1zP7TKLgg,103312
|
| 410 |
+
pip/_vendor/chardet/langturkishmodel.py,sha256=rfwanTptTwSycE4-P-QasPmzd-XVYgevytzjlEzBBu8,95946
|
| 411 |
+
pip/_vendor/chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370
|
| 412 |
+
pip/_vendor/chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413
|
| 413 |
+
pip/_vendor/chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012
|
| 414 |
+
pip/_vendor/chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481
|
| 415 |
+
pip/_vendor/chardet/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 416 |
+
pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc,,
|
| 417 |
+
pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc,,
|
| 418 |
+
pip/_vendor/chardet/metadata/languages.py,sha256=41tLq3eLSrBEbEVVQpVGFq9K7o1ln9b1HpY1l0hCUQo,19474
|
| 419 |
+
pip/_vendor/chardet/sbcharsetprober.py,sha256=nmyMyuxzG87DN6K3Rk2MUzJLMLR69MrWpdnHzOwVUwQ,6136
|
| 420 |
+
pip/_vendor/chardet/sbcsgroupprober.py,sha256=hqefQuXmiFyDBArOjujH6hd6WFXlOD1kWCsxDhjx5Vc,4309
|
| 421 |
+
pip/_vendor/chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774
|
| 422 |
+
pip/_vendor/chardet/universaldetector.py,sha256=DpZTXCX0nUHXxkQ9sr4GZxGB_hveZ6hWt3uM94cgWKs,12503
|
| 423 |
+
pip/_vendor/chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766
|
| 424 |
+
pip/_vendor/chardet/version.py,sha256=A4CILFAd8MRVG1HoXPp45iK9RLlWyV73a1EtwE8Tvn8,242
|
| 425 |
+
pip/_vendor/colorama/__init__.py,sha256=pCdErryzLSzDW5P-rRPBlPLqbBtIRNJB6cMgoeJns5k,239
|
| 426 |
+
pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc,,
|
| 427 |
+
pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc,,
|
| 428 |
+
pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc,,
|
| 429 |
+
pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc,,
|
| 430 |
+
pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc,,
|
| 431 |
+
pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc,,
|
| 432 |
+
pip/_vendor/colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522
|
| 433 |
+
pip/_vendor/colorama/ansitowin32.py,sha256=yV7CEmCb19MjnJKODZEEvMH_fnbJhwnpzo4sxZuGXmA,10517
|
| 434 |
+
pip/_vendor/colorama/initialise.py,sha256=PprovDNxMTrvoNHFcL2NZjpH2XzDc8BLxLxiErfUl4k,1915
|
| 435 |
+
pip/_vendor/colorama/win32.py,sha256=bJ8Il9jwaBN5BJ8bmN6FoYZ1QYuMKv2j8fGrXh7TJjw,5404
|
| 436 |
+
pip/_vendor/colorama/winterm.py,sha256=2y_2b7Zsv34feAsP67mLOVc-Bgq51mdYGo571VprlrM,6438
|
| 437 |
+
pip/_vendor/distlib/__init__.py,sha256=y-rKDBB99QJ3N1PJGAXQo89ou615aAeBjV2brBxKgM8,581
|
| 438 |
+
pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc,,
|
| 439 |
+
pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc,,
|
| 440 |
+
pip/_vendor/distlib/__pycache__/database.cpython-310.pyc,,
|
| 441 |
+
pip/_vendor/distlib/__pycache__/index.cpython-310.pyc,,
|
| 442 |
+
pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc,,
|
| 443 |
+
pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc,,
|
| 444 |
+
pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc,,
|
| 445 |
+
pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc,,
|
| 446 |
+
pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc,,
|
| 447 |
+
pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc,,
|
| 448 |
+
pip/_vendor/distlib/__pycache__/util.cpython-310.pyc,,
|
| 449 |
+
pip/_vendor/distlib/__pycache__/version.cpython-310.pyc,,
|
| 450 |
+
pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc,,
|
| 451 |
+
pip/_vendor/distlib/compat.py,sha256=tfoMrj6tujk7G4UC2owL6ArgDuCKabgBxuJRGZSmpko,41259
|
| 452 |
+
pip/_vendor/distlib/database.py,sha256=hBO2dgvDF7W3BqX8Ecns6p_RPerCaIbNKbdUOuJ1a14,51456
|
| 453 |
+
pip/_vendor/distlib/index.py,sha256=UfcimNW19AB7IKWam4VaJbXuCBvArKfSxhV16EwavzE,20739
|
| 454 |
+
pip/_vendor/distlib/locators.py,sha256=4D2hEcHePNuW4mXEZ3Cuw12eW-vbO-4WuAlbf4h5K7w,51963
|
| 455 |
+
pip/_vendor/distlib/manifest.py,sha256=nQEhYmgoreaBZzyFzwYsXxJARu3fo4EkunU163U16iE,14811
|
| 456 |
+
pip/_vendor/distlib/markers.py,sha256=TpHHHLgkzyT7YHbwj-2i6weRaq-Ivy2-MUnrDkjau-U,5058
|
| 457 |
+
pip/_vendor/distlib/metadata.py,sha256=vatoxFdmBr6ie-sTVXVNPOPG3uwMDWJTnEECnm7xDCw,39109
|
| 458 |
+
pip/_vendor/distlib/resources.py,sha256=LwbPksc0A1JMbi6XnuPdMBUn83X7BPuFNWqPGEKI698,10820
|
| 459 |
+
pip/_vendor/distlib/scripts.py,sha256=tjSwENINeV91ROZxec5zTSMRg2jEeKc4enyCHDzNvEE,17720
|
| 460 |
+
pip/_vendor/distlib/util.py,sha256=31dPXn3Rfat0xZLeVoFpuniyhe6vsbl9_QN-qd9Lhlk,66262
|
| 461 |
+
pip/_vendor/distlib/version.py,sha256=WG__LyAa2GwmA6qSoEJtvJE8REA1LZpbSizy8WvhJLk,23513
|
| 462 |
+
pip/_vendor/distlib/wheel.py,sha256=pj5VVCjqZMcHvgizORWwAFPS7hOk61CZ59dxP8laQ4E,42943
|
| 463 |
+
pip/_vendor/distro.py,sha256=O1EeHMq1-xAO373JI2_6pYEtd09yEkxtmrYkdY-9S-w,48414
|
| 464 |
+
pip/_vendor/html5lib/__init__.py,sha256=BYzcKCqeEii52xDrqBFruhnmtmkiuHXFyFh-cglQ8mk,1160
|
| 465 |
+
pip/_vendor/html5lib/__pycache__/__init__.cpython-310.pyc,,
|
| 466 |
+
pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-310.pyc,,
|
| 467 |
+
pip/_vendor/html5lib/__pycache__/_inputstream.cpython-310.pyc,,
|
| 468 |
+
pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-310.pyc,,
|
| 469 |
+
pip/_vendor/html5lib/__pycache__/_utils.cpython-310.pyc,,
|
| 470 |
+
pip/_vendor/html5lib/__pycache__/constants.cpython-310.pyc,,
|
| 471 |
+
pip/_vendor/html5lib/__pycache__/html5parser.cpython-310.pyc,,
|
| 472 |
+
pip/_vendor/html5lib/__pycache__/serializer.cpython-310.pyc,,
|
| 473 |
+
pip/_vendor/html5lib/_ihatexml.py,sha256=ifOwF7pXqmyThIXc3boWc96s4MDezqRrRVp7FwDYUFs,16728
|
| 474 |
+
pip/_vendor/html5lib/_inputstream.py,sha256=jErNASMlkgs7MpOM9Ve_VdLDJyFFweAjLuhVutZz33U,32353
|
| 475 |
+
pip/_vendor/html5lib/_tokenizer.py,sha256=04mgA2sNTniutl2fxFv-ei5bns4iRaPxVXXHh_HrV_4,77040
|
| 476 |
+
pip/_vendor/html5lib/_trie/__init__.py,sha256=nqfgO910329BEVJ5T4psVwQtjd2iJyEXQ2-X8c1YxwU,109
|
| 477 |
+
pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-310.pyc,,
|
| 478 |
+
pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-310.pyc,,
|
| 479 |
+
pip/_vendor/html5lib/_trie/__pycache__/py.cpython-310.pyc,,
|
| 480 |
+
pip/_vendor/html5lib/_trie/_base.py,sha256=CaybYyMro8uERQYjby2tTeSUatnWDfWroUN9N7ety5w,1013
|
| 481 |
+
pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775
|
| 482 |
+
pip/_vendor/html5lib/_utils.py,sha256=Dx9AKntksRjFT1veBj7I362pf5OgIaT0zglwq43RnfU,4931
|
| 483 |
+
pip/_vendor/html5lib/constants.py,sha256=Ll-yzLU_jcjyAI_h57zkqZ7aQWE5t5xA4y_jQgoUUhw,83464
|
| 484 |
+
pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 485 |
+
pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-310.pyc,,
|
| 486 |
+
pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-310.pyc,,
|
| 487 |
+
pip/_vendor/html5lib/filters/__pycache__/base.cpython-310.pyc,,
|
| 488 |
+
pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-310.pyc,,
|
| 489 |
+
pip/_vendor/html5lib/filters/__pycache__/lint.cpython-310.pyc,,
|
| 490 |
+
pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-310.pyc,,
|
| 491 |
+
pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-310.pyc,,
|
| 492 |
+
pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-310.pyc,,
|
| 493 |
+
pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=lViZc2JMCclXi_5gduvmdzrRxtO5Xo9ONnbHBVCsykU,919
|
| 494 |
+
pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286
|
| 495 |
+
pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=egDXUEHXmAG9504xz0K6ALDgYkvUrC2q15YUVeNlVQg,2945
|
| 496 |
+
pip/_vendor/html5lib/filters/lint.py,sha256=jk6q56xY0ojiYfvpdP-OZSm9eTqcAdRqhCoPItemPYA,3643
|
| 497 |
+
pip/_vendor/html5lib/filters/optionaltags.py,sha256=8lWT75J0aBOHmPgfmqTHSfPpPMp01T84NKu0CRedxcE,10588
|
| 498 |
+
pip/_vendor/html5lib/filters/sanitizer.py,sha256=m6oGmkBhkGAnn2nV6D4hE78SCZ6WEnK9rKdZB3uXBIc,26897
|
| 499 |
+
pip/_vendor/html5lib/filters/whitespace.py,sha256=8eWqZxd4UC4zlFGW6iyY6f-2uuT8pOCSALc3IZt7_t4,1214
|
| 500 |
+
pip/_vendor/html5lib/html5parser.py,sha256=anr-aXre_ImfrkQ35c_rftKXxC80vJCREKe06Tq15HA,117186
|
| 501 |
+
pip/_vendor/html5lib/serializer.py,sha256=_PpvcZF07cwE7xr9uKkZqh5f4UEaI8ltCU2xPJzaTpk,15759
|
| 502 |
+
pip/_vendor/html5lib/treeadapters/__init__.py,sha256=A0rY5gXIe4bJOiSGRO_j_tFhngRBO8QZPzPtPw5dFzo,679
|
| 503 |
+
pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-310.pyc,,
|
| 504 |
+
pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-310.pyc,,
|
| 505 |
+
pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-310.pyc,,
|
| 506 |
+
pip/_vendor/html5lib/treeadapters/genshi.py,sha256=CH27pAsDKmu4ZGkAUrwty7u0KauGLCZRLPMzaO3M5vo,1715
|
| 507 |
+
pip/_vendor/html5lib/treeadapters/sax.py,sha256=BKS8woQTnKiqeffHsxChUqL4q2ZR_wb5fc9MJ3zQC8s,1776
|
| 508 |
+
pip/_vendor/html5lib/treebuilders/__init__.py,sha256=AysSJyvPfikCMMsTVvaxwkgDieELD5dfR8FJIAuq7hY,3592
|
| 509 |
+
pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-310.pyc,,
|
| 510 |
+
pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-310.pyc,,
|
| 511 |
+
pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-310.pyc,,
|
| 512 |
+
pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-310.pyc,,
|
| 513 |
+
pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-310.pyc,,
|
| 514 |
+
pip/_vendor/html5lib/treebuilders/base.py,sha256=z-o51vt9r_l2IDG5IioTOKGzZne4Fy3_Fc-7ztrOh4I,14565
|
| 515 |
+
pip/_vendor/html5lib/treebuilders/dom.py,sha256=22whb0C71zXIsai5mamg6qzBEiigcBIvaDy4Asw3at0,8925
|
| 516 |
+
pip/_vendor/html5lib/treebuilders/etree.py,sha256=w5ZFpKk6bAxnrwD2_BrF5EVC7vzz0L3LMi9Sxrbc_8w,12836
|
| 517 |
+
pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=9gqDjs-IxsPhBYa5cpvv2FZ1KZlG83Giusy2lFmvIkE,14766
|
| 518 |
+
pip/_vendor/html5lib/treewalkers/__init__.py,sha256=OBPtc1TU5mGyy18QDMxKEyYEz0wxFUUNj5v0-XgmYhY,5719
|
| 519 |
+
pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-310.pyc,,
|
| 520 |
+
pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-310.pyc,,
|
| 521 |
+
pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-310.pyc,,
|
| 522 |
+
pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-310.pyc,,
|
| 523 |
+
pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-310.pyc,,
|
| 524 |
+
pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-310.pyc,,
|
| 525 |
+
pip/_vendor/html5lib/treewalkers/base.py,sha256=ouiOsuSzvI0KgzdWP8PlxIaSNs9falhbiinAEc_UIJY,7476
|
| 526 |
+
pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413
|
| 527 |
+
pip/_vendor/html5lib/treewalkers/etree.py,sha256=xo1L5m9VtkfpFJK0pFmkLVajhqYYVisVZn3k9kYpPkI,4551
|
| 528 |
+
pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=_b0LAVWLcVu9WaU_-w3D8f0IRSpCbjf667V-3NRdhTw,6357
|
| 529 |
+
pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309
|
| 530 |
+
pip/_vendor/idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849
|
| 531 |
+
pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc,,
|
| 532 |
+
pip/_vendor/idna/__pycache__/codec.cpython-310.pyc,,
|
| 533 |
+
pip/_vendor/idna/__pycache__/compat.cpython-310.pyc,,
|
| 534 |
+
pip/_vendor/idna/__pycache__/core.cpython-310.pyc,,
|
| 535 |
+
pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc,,
|
| 536 |
+
pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc,,
|
| 537 |
+
pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc,,
|
| 538 |
+
pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc,,
|
| 539 |
+
pip/_vendor/idna/codec.py,sha256=6ly5odKfqrytKT9_7UrlGklHnf1DSK2r9C6cSM4sa28,3374
|
| 540 |
+
pip/_vendor/idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321
|
| 541 |
+
pip/_vendor/idna/core.py,sha256=pNlI-XmwJ8ZseGTa0PLGxI6SOyaaAMwgfWvi7zwVNpE,12658
|
| 542 |
+
pip/_vendor/idna/idnadata.py,sha256=TmP9_NBUtQ0pCZDjJxCjYtflgfroWC-LA9ueaNNtT90,78019
|
| 543 |
+
pip/_vendor/idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881
|
| 544 |
+
pip/_vendor/idna/package_data.py,sha256=szxQhV0ZD0nKJ84Kuobw3l8q4_KeCyXjFRdpwIpKZmw,21
|
| 545 |
+
pip/_vendor/idna/uts46data.py,sha256=o-D7V-a0fOLZNd7tvxof6MYfUd0TBZzE2bLR5XO67xU,204400
|
| 546 |
+
pip/_vendor/msgpack/__init__.py,sha256=2gJwcsTIaAtCM0GMi2rU-_Y6kILeeQuqRkrQ22jSANc,1118
|
| 547 |
+
pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc,,
|
| 548 |
+
pip/_vendor/msgpack/__pycache__/_version.cpython-310.pyc,,
|
| 549 |
+
pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc,,
|
| 550 |
+
pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc,,
|
| 551 |
+
pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc,,
|
| 552 |
+
pip/_vendor/msgpack/_version.py,sha256=JpTcnRd3YUioA24NDtDZbLW0Nhl2yA-N1Rq2lLDBB-g,20
|
| 553 |
+
pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081
|
| 554 |
+
pip/_vendor/msgpack/ext.py,sha256=4l356Y4sVEcvCla2dh_cL57vh4GMhZfa3kuWHFHYz6A,6088
|
| 555 |
+
pip/_vendor/msgpack/fallback.py,sha256=L5jriXysURbf6rPbbHbvXgvoFrKZiryIBmujMTcrf3A,34475
|
| 556 |
+
pip/_vendor/packaging/__about__.py,sha256=ugASIO2w1oUyH8_COqQ2X_s0rDhjbhQC3yJocD03h2c,661
|
| 557 |
+
pip/_vendor/packaging/__init__.py,sha256=b9Kk5MF7KxhhLgcDmiUWukN-LatWFxPdNug0joPhHSk,497
|
| 558 |
+
pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc,,
|
| 559 |
+
pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc,,
|
| 560 |
+
pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc,,
|
| 561 |
+
pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc,,
|
| 562 |
+
pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc,,
|
| 563 |
+
pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc,,
|
| 564 |
+
pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc,,
|
| 565 |
+
pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc,,
|
| 566 |
+
pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc,,
|
| 567 |
+
pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc,,
|
| 568 |
+
pip/_vendor/packaging/__pycache__/version.cpython-310.pyc,,
|
| 569 |
+
pip/_vendor/packaging/_manylinux.py,sha256=XcbiXB-qcjv3bcohp6N98TMpOP4_j3m-iOA8ptK2GWY,11488
|
| 570 |
+
pip/_vendor/packaging/_musllinux.py,sha256=_KGgY_qc7vhMGpoqss25n2hiLCNKRtvz9mCrS7gkqyc,4378
|
| 571 |
+
pip/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
|
| 572 |
+
pip/_vendor/packaging/markers.py,sha256=AJBOcY8Oq0kYc570KuuPTkvuqjAlhufaE2c9sCUbm64,8487
|
| 573 |
+
pip/_vendor/packaging/requirements.py,sha256=NtDlPBtojpn1IUC85iMjPNsUmufjpSlwnNA-Xb4m5NA,4676
|
| 574 |
+
pip/_vendor/packaging/specifiers.py,sha256=LRQ0kFsHrl5qfcFNEEJrIFYsnIHQUJXY9fIsakTrrqE,30110
|
| 575 |
+
pip/_vendor/packaging/tags.py,sha256=lmsnGNiJ8C4D_Pf9PbM0qgbZvD9kmB9lpZBQUZa3R_Y,15699
|
| 576 |
+
pip/_vendor/packaging/utils.py,sha256=dJjeat3BS-TYn1RrUFVwufUMasbtzLfYRoy_HXENeFQ,4200
|
| 577 |
+
pip/_vendor/packaging/version.py,sha256=_fLRNrFrxYcHVfyo8vk9j8s6JM8N_xsSxVFr6RJyco8,14665
|
| 578 |
+
pip/_vendor/pep517/__init__.py,sha256=Y1bATL2qbFNN6M_DQa4yyrwqjpIiL-j9T6kBmR0DS14,130
|
| 579 |
+
pip/_vendor/pep517/__pycache__/__init__.cpython-310.pyc,,
|
| 580 |
+
pip/_vendor/pep517/__pycache__/build.cpython-310.pyc,,
|
| 581 |
+
pip/_vendor/pep517/__pycache__/check.cpython-310.pyc,,
|
| 582 |
+
pip/_vendor/pep517/__pycache__/colorlog.cpython-310.pyc,,
|
| 583 |
+
pip/_vendor/pep517/__pycache__/compat.cpython-310.pyc,,
|
| 584 |
+
pip/_vendor/pep517/__pycache__/dirtools.cpython-310.pyc,,
|
| 585 |
+
pip/_vendor/pep517/__pycache__/envbuild.cpython-310.pyc,,
|
| 586 |
+
pip/_vendor/pep517/__pycache__/meta.cpython-310.pyc,,
|
| 587 |
+
pip/_vendor/pep517/__pycache__/wrappers.cpython-310.pyc,,
|
| 588 |
+
pip/_vendor/pep517/build.py,sha256=2bar6EdjwIz2Dlfy94qdxn3oA9mVnnny40mfoT5f-qI,3457
|
| 589 |
+
pip/_vendor/pep517/check.py,sha256=bCORq1WrHjhpTONa-zpAqG0EB9rHNuhO1ORu6DsDuL8,6084
|
| 590 |
+
pip/_vendor/pep517/colorlog.py,sha256=Tk9AuYm_cLF3BKTBoSTJt9bRryn0aFojIQOwbfVUTxQ,4098
|
| 591 |
+
pip/_vendor/pep517/compat.py,sha256=NmLImE5oiDT3gbEhJ4w7xeoMFcpAPrGu_NltBytSJUY,1253
|
| 592 |
+
pip/_vendor/pep517/dirtools.py,sha256=2mkAkAL0mRz_elYFjRKuekTJVipH1zTn4tbf1EDev84,1129
|
| 593 |
+
pip/_vendor/pep517/envbuild.py,sha256=zFde--rmzjXMLXcm7SA_3hDtgk5VCTA8hjpk88RbF6E,6100
|
| 594 |
+
pip/_vendor/pep517/in_process/__init__.py,sha256=MyWoAi8JHdcBv7yXuWpUSVADbx6LSB9rZh7kTIgdA8Y,563
|
| 595 |
+
pip/_vendor/pep517/in_process/__pycache__/__init__.cpython-310.pyc,,
|
| 596 |
+
pip/_vendor/pep517/in_process/__pycache__/_in_process.cpython-310.pyc,,
|
| 597 |
+
pip/_vendor/pep517/in_process/_in_process.py,sha256=D3waguyNSGcwosociD5USfcycYr2RCzCjYtxX5UHQmQ,11201
|
| 598 |
+
pip/_vendor/pep517/meta.py,sha256=8mnM5lDnT4zXQpBTliJbRGfesH7iioHwozbDxALPS9Y,2463
|
| 599 |
+
pip/_vendor/pep517/wrappers.py,sha256=impq7Cz_LL1iDF1iiOzYWB4MaEu6O6Gps7TJ5qsJz1Q,13429
|
| 600 |
+
pip/_vendor/pkg_resources/__init__.py,sha256=NnpQ3g6BCHzpMgOR_OLBmYtniY4oOzdKpwqghfq_6ug,108287
|
| 601 |
+
pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc,,
|
| 602 |
+
pip/_vendor/pkg_resources/__pycache__/py31compat.cpython-310.pyc,,
|
| 603 |
+
pip/_vendor/pkg_resources/py31compat.py,sha256=CRk8fkiPRDLsbi5pZcKsHI__Pbmh_94L8mr9Qy9Ab2U,562
|
| 604 |
+
pip/_vendor/platformdirs/__init__.py,sha256=Aizpxewwd4nY63Gqw-Od1Rso9Ah4bSoc6rkx-GBRu2Y,12676
|
| 605 |
+
pip/_vendor/platformdirs/__main__.py,sha256=ZmsnTxEOxtTvwa-Y_Vfab_JN3X4XCVeN8X0yyy9-qnc,1176
|
| 606 |
+
pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc,,
|
| 607 |
+
pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc,,
|
| 608 |
+
pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc,,
|
| 609 |
+
pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc,,
|
| 610 |
+
pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc,,
|
| 611 |
+
pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc,,
|
| 612 |
+
pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc,,
|
| 613 |
+
pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc,,
|
| 614 |
+
pip/_vendor/platformdirs/android.py,sha256=xhlD4NmrKCARe5lgnpBGYo4lOYxEOBOByNDNYy91gEE,4012
|
| 615 |
+
pip/_vendor/platformdirs/api.py,sha256=MXKHXOL3eh_-trSok-JUTjAR_zjmmKF3rjREVABjP8s,4910
|
| 616 |
+
pip/_vendor/platformdirs/macos.py,sha256=-3UXQewbT0yMhMdkzRXfXGAntmLIH7Qt4a9Hlf8I5_Y,2655
|
| 617 |
+
pip/_vendor/platformdirs/unix.py,sha256=b4aVYTz0qZ50HntwOXo8r6tp82jAa3qTjxw-WlnC2yc,6910
|
| 618 |
+
pip/_vendor/platformdirs/version.py,sha256=bXzLJCe23FNQRQrf7ZRWKejxWnct_wft7dxdkMGT33E,80
|
| 619 |
+
pip/_vendor/platformdirs/windows.py,sha256=ISruopR5UGBePC0BxCxXevkZYfjJsIZc49YWU5iYfQ4,6439
|
| 620 |
+
pip/_vendor/progress/__init__.py,sha256=1HejNZtv2ouUNQeStUDAtZrtwkz_3FmYKQ476hJ7zOs,5294
|
| 621 |
+
pip/_vendor/progress/__pycache__/__init__.cpython-310.pyc,,
|
| 622 |
+
pip/_vendor/progress/__pycache__/bar.cpython-310.pyc,,
|
| 623 |
+
pip/_vendor/progress/__pycache__/colors.cpython-310.pyc,,
|
| 624 |
+
pip/_vendor/progress/__pycache__/counter.cpython-310.pyc,,
|
| 625 |
+
pip/_vendor/progress/__pycache__/spinner.cpython-310.pyc,,
|
| 626 |
+
pip/_vendor/progress/bar.py,sha256=GbedY0oZ-Q1duXjmvVLO0tSf-uTSH7hJ3zzyI91Esws,2942
|
| 627 |
+
pip/_vendor/progress/colors.py,sha256=cCYXQnYFYVmQKKmYEbQ_lj6SPSFzdw4FN98F2x2kR-U,2655
|
| 628 |
+
pip/_vendor/progress/counter.py,sha256=zYt9DWH0_05s8Q9TrJwHVud-WwsyyaR3PwYtk5hxwwQ,1613
|
| 629 |
+
pip/_vendor/progress/spinner.py,sha256=u5ElzW94XEiLGH-aAlr54VJtKfeK745xr6UfGvvflzU,1461
|
| 630 |
+
pip/_vendor/pygments/__init__.py,sha256=CAmA9UthykwxvtutUcH0IxqtiyQcSg6CmYdM-jKlcRY,3002
|
| 631 |
+
pip/_vendor/pygments/__main__.py,sha256=X7rGLMUC54EXgO14FZ9goKXZDmhPzKXTsUglmb_McIU,353
|
| 632 |
+
pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc,,
|
| 633 |
+
pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc,,
|
| 634 |
+
pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc,,
|
| 635 |
+
pip/_vendor/pygments/__pycache__/console.cpython-310.pyc,,
|
| 636 |
+
pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc,,
|
| 637 |
+
pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc,,
|
| 638 |
+
pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc,,
|
| 639 |
+
pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc,,
|
| 640 |
+
pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc,,
|
| 641 |
+
pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc,,
|
| 642 |
+
pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc,,
|
| 643 |
+
pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc,,
|
| 644 |
+
pip/_vendor/pygments/__pycache__/style.cpython-310.pyc,,
|
| 645 |
+
pip/_vendor/pygments/__pycache__/token.cpython-310.pyc,,
|
| 646 |
+
pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc,,
|
| 647 |
+
pip/_vendor/pygments/__pycache__/util.cpython-310.pyc,,
|
| 648 |
+
pip/_vendor/pygments/cmdline.py,sha256=XpsyWgErcSqHC7rXiYKLF3Y61Uy8SR2DNQDDhZGuezg,23408
|
| 649 |
+
pip/_vendor/pygments/console.py,sha256=QZXBUAkyl4dPLQ1e6XHjQu3mmXBWvuGQwsQT2q1mtCY,1697
|
| 650 |
+
pip/_vendor/pygments/filter.py,sha256=35iMZiB1rcuogxokm92kViB2DPXPp_wWoxWuMmwvvzY,1938
|
| 651 |
+
pip/_vendor/pygments/filters/__init__.py,sha256=-veOimzCyYGEARru2Dfo6ofSYcZ8tGsIVuMprtaZQ24,40292
|
| 652 |
+
pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc,,
|
| 653 |
+
pip/_vendor/pygments/formatter.py,sha256=zSBbX2U_OOriy7SJvSTK6OAxjuXtROWxQlNpJEJZjBA,2917
|
| 654 |
+
pip/_vendor/pygments/formatters/__init__.py,sha256=fjkYDy5-F998XczKi0ymHFayr5ObIRLHF8cgp9k8kpA,5119
|
| 655 |
+
pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc,,
|
| 656 |
+
pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc,,
|
| 657 |
+
pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc,,
|
| 658 |
+
pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc,,
|
| 659 |
+
pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc,,
|
| 660 |
+
pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc,,
|
| 661 |
+
pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc,,
|
| 662 |
+
pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc,,
|
| 663 |
+
pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc,,
|
| 664 |
+
pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc,,
|
| 665 |
+
pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc,,
|
| 666 |
+
pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc,,
|
| 667 |
+
pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc,,
|
| 668 |
+
pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc,,
|
| 669 |
+
pip/_vendor/pygments/formatters/_mapping.py,sha256=3A1rYSjYN9MLduCFWy2_mYhllPVpwlw55anRYnPXX8w,6516
|
| 670 |
+
pip/_vendor/pygments/formatters/bbcode.py,sha256=cSKMOioUnE4TzvCCsK4IbJ6G78W07ZwHtkz4V1Wte0U,3314
|
| 671 |
+
pip/_vendor/pygments/formatters/groff.py,sha256=ULgMKvGeLswX0KZn3IBp0p0U3rruiSHBtpl6O5qbqLs,5005
|
| 672 |
+
pip/_vendor/pygments/formatters/html.py,sha256=0jM7Jc4xA4tsjmPq35uklm_En_OVdcNb0__SEXp2pDQ,35330
|
| 673 |
+
pip/_vendor/pygments/formatters/img.py,sha256=r4iag_jCfyv_LhIt-1fRDeVEEoAfVJzkD9nZChIwiS8,21819
|
| 674 |
+
pip/_vendor/pygments/formatters/irc.py,sha256=gi_IeIZeNaTfTMtvseLigZdS6lNicN7r7O7rnI6myo0,5871
|
| 675 |
+
pip/_vendor/pygments/formatters/latex.py,sha256=qZUerrHt2Nn2aB4gJcdqj99qBkIxl_1v1ukYsf230Gk,18930
|
| 676 |
+
pip/_vendor/pygments/formatters/other.py,sha256=Q01LtkqPZ8m_EYdgMVzXPUGjHoL00lXI3By97wzytYU,5073
|
| 677 |
+
pip/_vendor/pygments/formatters/pangomarkup.py,sha256=ZpjALTSuGFwviJd5kOYwr-1NgqxCX3XRJrjXC7x1UbQ,2212
|
| 678 |
+
pip/_vendor/pygments/formatters/rtf.py,sha256=qh7-z_wbUsTY6z7fZUGrYECYBlWB0wEdBwIZVEVybL0,5014
|
| 679 |
+
pip/_vendor/pygments/formatters/svg.py,sha256=T7Jj004I3JUPOr48aAhQ368K2qWCciUyMQ2tdU-LB-4,7335
|
| 680 |
+
pip/_vendor/pygments/formatters/terminal.py,sha256=cRD5hitINOkYlGZo9ma252vpJYPSGNgLivrsm6zGyec,4674
|
| 681 |
+
pip/_vendor/pygments/formatters/terminal256.py,sha256=Bvz9zZL3UWc94TDm1GhKMI4x0BTit0XplhyRL0zmtkw,11753
|
| 682 |
+
pip/_vendor/pygments/lexer.py,sha256=ECXWlEsbRnKs_njozZns6BGQ4riTMzct_BzAr3zV6dY,31937
|
| 683 |
+
pip/_vendor/pygments/lexers/__init__.py,sha256=6Ds0GVBP3jrIU02wmjRdpoL4eFGhwT2IVD1zf3cV5_Y,11307
|
| 684 |
+
pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc,,
|
| 685 |
+
pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc,,
|
| 686 |
+
pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc,,
|
| 687 |
+
pip/_vendor/pygments/lexers/_mapping.py,sha256=jAxmvh5wvNkD-p3Fh6E7hY_B0sGbcxWRfseT6iq7ex4,70032
|
| 688 |
+
pip/_vendor/pygments/lexers/python.py,sha256=LXnk43Lcngqn9xj6eRqdk2f73oF4kHZWiwgHMM_RlVM,52776
|
| 689 |
+
pip/_vendor/pygments/modeline.py,sha256=37fen3cf1moCz4vMVJqX41eAQCmj8pzUchikgPcHp-U,986
|
| 690 |
+
pip/_vendor/pygments/plugin.py,sha256=zGSig3S7QX-3o6RDxd4_Uvice_t25l_BN9aQQ9k8vmU,1727
|
| 691 |
+
pip/_vendor/pygments/regexopt.py,sha256=mj8Fgu3sT0d5PZwRwDLexEvVOQbuHeosubQnqVwgiqs,3072
|
| 692 |
+
pip/_vendor/pygments/scanner.py,sha256=nGoHy-Npk2ylUd4bws_CJN1hK785Xqo8e0teRmNX2jo,3091
|
| 693 |
+
pip/_vendor/pygments/sphinxext.py,sha256=FZ2puvLe2Bztqtj6UJvQd7D8TvtOZ1GsfRJObvH59tE,4630
|
| 694 |
+
pip/_vendor/pygments/style.py,sha256=lGyan5bU42q1kGMfFqafwL3g1j5EurTvfkv8vdP7NzQ,6257
|
| 695 |
+
pip/_vendor/pygments/styles/__init__.py,sha256=Qx2zq6ufbDNE2cTp51M-s9zW-sDE-KLIqFw31qr3Bhg,3252
|
| 696 |
+
pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc,,
|
| 697 |
+
pip/_vendor/pygments/token.py,sha256=lNPgeaQTzu2DEUi6n_lxAIU7uy4DVj8LMI3nSVnTjks,6143
|
| 698 |
+
pip/_vendor/pygments/unistring.py,sha256=Xs0FzOzE0l0iWRoTlcgi-Q_kAMdF5Gt5FL_goGKJc98,63188
|
| 699 |
+
pip/_vendor/pygments/util.py,sha256=s9n8BQXIxG3lIwCPWv5-ci8yhaqq5JbEVK9v8Z-8_3I,9123
|
| 700 |
+
pip/_vendor/pyparsing/__init__.py,sha256=jXheGTFT1b6r_4WxuOE0uVUqiouLJ3WHzOScpLieRgQ,9107
|
| 701 |
+
pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc,,
|
| 702 |
+
pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc,,
|
| 703 |
+
pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc,,
|
| 704 |
+
pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc,,
|
| 705 |
+
pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc,,
|
| 706 |
+
pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc,,
|
| 707 |
+
pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc,,
|
| 708 |
+
pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc,,
|
| 709 |
+
pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc,,
|
| 710 |
+
pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc,,
|
| 711 |
+
pip/_vendor/pyparsing/actions.py,sha256=60v7mETOBzc01YPH_qQD5isavgcSJpAfIKpzgjM3vaU,6429
|
| 712 |
+
pip/_vendor/pyparsing/common.py,sha256=lFL97ooIeR75CmW5hjURZqwDCTgruqltcTCZ-ulLO2Q,12936
|
| 713 |
+
pip/_vendor/pyparsing/core.py,sha256=GtQsD06HlwKPc7M8K8hyOuOW-cRnd87AxAHq-ad5lEk,212248
|
| 714 |
+
pip/_vendor/pyparsing/diagram/__init__.py,sha256=h0gsUwmo5N3shgvfXVQTtqvTpUAv-ZdQjSQ6IUJmsxY,22165
|
| 715 |
+
pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc,,
|
| 716 |
+
pip/_vendor/pyparsing/exceptions.py,sha256=H4D9gqMavqmAFSsdrU_J6bO-jA-T-A7yvtXWZpooIUA,9030
|
| 717 |
+
pip/_vendor/pyparsing/helpers.py,sha256=kqpIZFG-y0fQ3g_TmloYllo9we6YCYiewZMXIK0y5wc,38299
|
| 718 |
+
pip/_vendor/pyparsing/results.py,sha256=4D-oURF1cLeL7k0d3zMqUuWH_gTjop_OrZwik9O0HXU,25339
|
| 719 |
+
pip/_vendor/pyparsing/testing.py,sha256=szs8AKZREZMhL0y0vsMfaTVAnpqPHetg6VKJBNmc4QY,13388
|
| 720 |
+
pip/_vendor/pyparsing/unicode.py,sha256=IR-ioeGY29cZ49tG8Ts7ITPWWNP5G2DcZs58oa8zn44,10381
|
| 721 |
+
pip/_vendor/pyparsing/util.py,sha256=kq772O5YSeXOSdP-M31EWpbH_ayj7BMHImBYo9xPD5M,6805
|
| 722 |
+
pip/_vendor/requests/__init__.py,sha256=6IUFQM6K9V2NIu4fe4LtUsN21-TFbw_w3EfPpdUN-qc,5130
|
| 723 |
+
pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc,,
|
| 724 |
+
pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc,,
|
| 725 |
+
pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc,,
|
| 726 |
+
pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc,,
|
| 727 |
+
pip/_vendor/requests/__pycache__/api.cpython-310.pyc,,
|
| 728 |
+
pip/_vendor/requests/__pycache__/auth.cpython-310.pyc,,
|
| 729 |
+
pip/_vendor/requests/__pycache__/certs.cpython-310.pyc,,
|
| 730 |
+
pip/_vendor/requests/__pycache__/compat.cpython-310.pyc,,
|
| 731 |
+
pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc,,
|
| 732 |
+
pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc,,
|
| 733 |
+
pip/_vendor/requests/__pycache__/help.cpython-310.pyc,,
|
| 734 |
+
pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc,,
|
| 735 |
+
pip/_vendor/requests/__pycache__/models.cpython-310.pyc,,
|
| 736 |
+
pip/_vendor/requests/__pycache__/packages.cpython-310.pyc,,
|
| 737 |
+
pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc,,
|
| 738 |
+
pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc,,
|
| 739 |
+
pip/_vendor/requests/__pycache__/structures.cpython-310.pyc,,
|
| 740 |
+
pip/_vendor/requests/__pycache__/utils.cpython-310.pyc,,
|
| 741 |
+
pip/_vendor/requests/__version__.py,sha256=q8miOQaomOv3S74lK4eQs1zZ5jwcnOusyEU-M2idhts,441
|
| 742 |
+
pip/_vendor/requests/_internal_utils.py,sha256=Zx3PnEUccyfsB-ie11nZVAW8qClJy0gx1qNME7rgT18,1096
|
| 743 |
+
pip/_vendor/requests/adapters.py,sha256=WazYJQ_b2LHhNDb_y0hscNlWVsSe5ca5I3pymPrer5w,21861
|
| 744 |
+
pip/_vendor/requests/api.py,sha256=hjuoP79IAEmX6Dysrw8t032cLfwLHxbI_wM4gC5G9t0,6402
|
| 745 |
+
pip/_vendor/requests/auth.py,sha256=OMoJIVKyRLy9THr91y8rxysZuclwPB-K1Xg1zBomUhQ,10207
|
| 746 |
+
pip/_vendor/requests/certs.py,sha256=nXRVq9DtGmv_1AYbwjTu9UrgAcdJv05ZvkNeaoLOZxY,465
|
| 747 |
+
pip/_vendor/requests/compat.py,sha256=N1281mkcTluMjKqCSLf88LR6HNOygEhS1TbR9LLsoVY,2114
|
| 748 |
+
pip/_vendor/requests/cookies.py,sha256=Y-bKX6TvW3FnYlE6Au0SXtVVWcaNdFvuAwQxw-G0iTI,18430
|
| 749 |
+
pip/_vendor/requests/exceptions.py,sha256=VcpBXOL-9JYhNbK8OZxCIImBgpQSXJlUelDPf1f-pmM,3446
|
| 750 |
+
pip/_vendor/requests/help.py,sha256=dyhe3lcmHXnFCzDiZVjcGmVvvO_jtsfAm-AC542ndw8,3972
|
| 751 |
+
pip/_vendor/requests/hooks.py,sha256=QReGyy0bRcr5rkwCuObNakbYsc7EkiKeBwG4qHekr2Q,757
|
| 752 |
+
pip/_vendor/requests/models.py,sha256=7pzscX_47qxx7-zEaBWGxMoB33Vdf6HLoUKZh1ktEvM,35116
|
| 753 |
+
pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695
|
| 754 |
+
pip/_vendor/requests/sessions.py,sha256=HiFx6LQ-pINGxzmdfKbU3C5o_-NF1OViwFoWKjSILG4,30028
|
| 755 |
+
pip/_vendor/requests/status_codes.py,sha256=gT79Pbs_cQjBgp-fvrUgg1dn2DQO32bDj4TInjnMPSc,4188
|
| 756 |
+
pip/_vendor/requests/structures.py,sha256=msAtr9mq1JxHd-JRyiILfdFlpbJwvvFuP3rfUQT_QxE,3005
|
| 757 |
+
pip/_vendor/requests/utils.py,sha256=4-8IEAnpoRvepu6y5qk1aTI_NkfUqO4yxProY71MkZQ,33030
|
| 758 |
+
pip/_vendor/resolvelib/__init__.py,sha256=UL-B2BDI0_TRIqkfGwLHKLxY-LjBlomz7941wDqzB1I,537
|
| 759 |
+
pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc,,
|
| 760 |
+
pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc,,
|
| 761 |
+
pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc,,
|
| 762 |
+
pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc,,
|
| 763 |
+
pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc,,
|
| 764 |
+
pip/_vendor/resolvelib/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 765 |
+
pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc,,
|
| 766 |
+
pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc,,
|
| 767 |
+
pip/_vendor/resolvelib/compat/collections_abc.py,sha256=uy8xUZ-NDEw916tugUXm8HgwCGiMO0f-RcdnpkfXfOs,156
|
| 768 |
+
pip/_vendor/resolvelib/providers.py,sha256=roVmFBItQJ0TkhNua65h8LdNny7rmeqVEXZu90QiP4o,5872
|
| 769 |
+
pip/_vendor/resolvelib/reporters.py,sha256=fW91NKf-lK8XN7i6Yd_rczL5QeOT3sc6AKhpaTEnP3E,1583
|
| 770 |
+
pip/_vendor/resolvelib/resolvers.py,sha256=2wYzVGBGerbmcIpH8cFmgSKgLSETz8jmwBMGjCBMHG4,17592
|
| 771 |
+
pip/_vendor/resolvelib/structs.py,sha256=IVIYof6sA_N4ZEiE1C1UhzTX495brCNnyCdgq6CYq28,4794
|
| 772 |
+
pip/_vendor/rich/__init__.py,sha256=wF1th4JGBCVC02xfaw8j6P2MrFcJaQJL72scKtEmDYQ,5804
|
| 773 |
+
pip/_vendor/rich/__main__.py,sha256=vd1PP-o7_1un-ThdgMU9LHV-D8z56yz_-fryczn38eE,8810
|
| 774 |
+
pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc,,
|
| 775 |
+
pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc,,
|
| 776 |
+
pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc,,
|
| 777 |
+
pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc,,
|
| 778 |
+
pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc,,
|
| 779 |
+
pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc,,
|
| 780 |
+
pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc,,
|
| 781 |
+
pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc,,
|
| 782 |
+
pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc,,
|
| 783 |
+
pip/_vendor/rich/__pycache__/_lru_cache.cpython-310.pyc,,
|
| 784 |
+
pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc,,
|
| 785 |
+
pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc,,
|
| 786 |
+
pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc,,
|
| 787 |
+
pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc,,
|
| 788 |
+
pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc,,
|
| 789 |
+
pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc,,
|
| 790 |
+
pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc,,
|
| 791 |
+
pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc,,
|
| 792 |
+
pip/_vendor/rich/__pycache__/abc.cpython-310.pyc,,
|
| 793 |
+
pip/_vendor/rich/__pycache__/align.cpython-310.pyc,,
|
| 794 |
+
pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc,,
|
| 795 |
+
pip/_vendor/rich/__pycache__/bar.cpython-310.pyc,,
|
| 796 |
+
pip/_vendor/rich/__pycache__/box.cpython-310.pyc,,
|
| 797 |
+
pip/_vendor/rich/__pycache__/cells.cpython-310.pyc,,
|
| 798 |
+
pip/_vendor/rich/__pycache__/color.cpython-310.pyc,,
|
| 799 |
+
pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc,,
|
| 800 |
+
pip/_vendor/rich/__pycache__/columns.cpython-310.pyc,,
|
| 801 |
+
pip/_vendor/rich/__pycache__/console.cpython-310.pyc,,
|
| 802 |
+
pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc,,
|
| 803 |
+
pip/_vendor/rich/__pycache__/containers.cpython-310.pyc,,
|
| 804 |
+
pip/_vendor/rich/__pycache__/control.cpython-310.pyc,,
|
| 805 |
+
pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc,,
|
| 806 |
+
pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc,,
|
| 807 |
+
pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc,,
|
| 808 |
+
pip/_vendor/rich/__pycache__/errors.cpython-310.pyc,,
|
| 809 |
+
pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc,,
|
| 810 |
+
pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc,,
|
| 811 |
+
pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc,,
|
| 812 |
+
pip/_vendor/rich/__pycache__/json.cpython-310.pyc,,
|
| 813 |
+
pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc,,
|
| 814 |
+
pip/_vendor/rich/__pycache__/layout.cpython-310.pyc,,
|
| 815 |
+
pip/_vendor/rich/__pycache__/live.cpython-310.pyc,,
|
| 816 |
+
pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc,,
|
| 817 |
+
pip/_vendor/rich/__pycache__/logging.cpython-310.pyc,,
|
| 818 |
+
pip/_vendor/rich/__pycache__/markup.cpython-310.pyc,,
|
| 819 |
+
pip/_vendor/rich/__pycache__/measure.cpython-310.pyc,,
|
| 820 |
+
pip/_vendor/rich/__pycache__/padding.cpython-310.pyc,,
|
| 821 |
+
pip/_vendor/rich/__pycache__/pager.cpython-310.pyc,,
|
| 822 |
+
pip/_vendor/rich/__pycache__/palette.cpython-310.pyc,,
|
| 823 |
+
pip/_vendor/rich/__pycache__/panel.cpython-310.pyc,,
|
| 824 |
+
pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc,,
|
| 825 |
+
pip/_vendor/rich/__pycache__/progress.cpython-310.pyc,,
|
| 826 |
+
pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc,,
|
| 827 |
+
pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc,,
|
| 828 |
+
pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc,,
|
| 829 |
+
pip/_vendor/rich/__pycache__/region.cpython-310.pyc,,
|
| 830 |
+
pip/_vendor/rich/__pycache__/repr.cpython-310.pyc,,
|
| 831 |
+
pip/_vendor/rich/__pycache__/rule.cpython-310.pyc,,
|
| 832 |
+
pip/_vendor/rich/__pycache__/scope.cpython-310.pyc,,
|
| 833 |
+
pip/_vendor/rich/__pycache__/screen.cpython-310.pyc,,
|
| 834 |
+
pip/_vendor/rich/__pycache__/segment.cpython-310.pyc,,
|
| 835 |
+
pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc,,
|
| 836 |
+
pip/_vendor/rich/__pycache__/status.cpython-310.pyc,,
|
| 837 |
+
pip/_vendor/rich/__pycache__/style.cpython-310.pyc,,
|
| 838 |
+
pip/_vendor/rich/__pycache__/styled.cpython-310.pyc,,
|
| 839 |
+
pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc,,
|
| 840 |
+
pip/_vendor/rich/__pycache__/table.cpython-310.pyc,,
|
| 841 |
+
pip/_vendor/rich/__pycache__/tabulate.cpython-310.pyc,,
|
| 842 |
+
pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc,,
|
| 843 |
+
pip/_vendor/rich/__pycache__/text.cpython-310.pyc,,
|
| 844 |
+
pip/_vendor/rich/__pycache__/theme.cpython-310.pyc,,
|
| 845 |
+
pip/_vendor/rich/__pycache__/themes.cpython-310.pyc,,
|
| 846 |
+
pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc,,
|
| 847 |
+
pip/_vendor/rich/__pycache__/tree.cpython-310.pyc,,
|
| 848 |
+
pip/_vendor/rich/_cell_widths.py,sha256=2n4EiJi3X9sqIq0O16kUZ_zy6UYMd3xFfChlKfnW1Hc,10096
|
| 849 |
+
pip/_vendor/rich/_emoji_codes.py,sha256=hu1VL9nbVdppJrVoijVshRlcRRe_v3dju3Mmd2sKZdY,140235
|
| 850 |
+
pip/_vendor/rich/_emoji_replace.py,sha256=n-kcetsEUx2ZUmhQrfeMNc-teeGhpuSQ5F8VPBsyvDo,1064
|
| 851 |
+
pip/_vendor/rich/_extension.py,sha256=Xt47QacCKwYruzjDi-gOBq724JReDj9Cm9xUi5fr-34,265
|
| 852 |
+
pip/_vendor/rich/_inspect.py,sha256=vq6BjewwEvddjcBTr_lCcjYQBsKi92aTNpcXyaA5ERA,7444
|
| 853 |
+
pip/_vendor/rich/_log_render.py,sha256=1ByI0PA1ZpxZY3CGJOK54hjlq4X-Bz_boIjIqCd8Kns,3225
|
| 854 |
+
pip/_vendor/rich/_loop.py,sha256=hV_6CLdoPm0va22Wpw4zKqM0RYsz3TZxXj0PoS-9eDQ,1236
|
| 855 |
+
pip/_vendor/rich/_lru_cache.py,sha256=M7H1ZQF32o6SxrpOur9zTIhEHlNXT9XnrcdhruUmG5I,1246
|
| 856 |
+
pip/_vendor/rich/_palettes.py,sha256=cdev1JQKZ0JvlguV9ipHgznTdnvlIzUFDBb0It2PzjI,7063
|
| 857 |
+
pip/_vendor/rich/_pick.py,sha256=evDt8QN4lF5CiwrUIXlOJCntitBCOsI3ZLPEIAVRLJU,423
|
| 858 |
+
pip/_vendor/rich/_ratio.py,sha256=2lLSliL025Y-YMfdfGbutkQDevhcyDqc-DtUYW9mU70,5472
|
| 859 |
+
pip/_vendor/rich/_spinners.py,sha256=huT1biTlwyp9Lm8S7bLfVzg1psUaIH5xHDwTaWEHVh0,26521
|
| 860 |
+
pip/_vendor/rich/_stack.py,sha256=-C8OK7rxn3sIUdVwxZBBpeHhIzX0eI-VM3MemYfaXm0,351
|
| 861 |
+
pip/_vendor/rich/_timer.py,sha256=zelxbT6oPFZnNrwWPpc1ktUeAT-Vc4fuFcRZLQGLtMI,417
|
| 862 |
+
pip/_vendor/rich/_windows.py,sha256=nBO71icHMIHlzT7hg6fkoIdh1mT-5MvDdPDwunkshyw,2065
|
| 863 |
+
pip/_vendor/rich/_wrap.py,sha256=OtnSxnERkuNlSM1d_MYtNg8KIYTcTBk3peg16dCZH_U,1804
|
| 864 |
+
pip/_vendor/rich/abc.py,sha256=ON-E-ZqSSheZ88VrKX2M3PXpFbGEUUZPMa_Af0l-4f0,890
|
| 865 |
+
pip/_vendor/rich/align.py,sha256=2zRHV8SzR5eP-vQkSDgjmgsBLBluCBwykgejAW6oRD0,10425
|
| 866 |
+
pip/_vendor/rich/ansi.py,sha256=QaVVkfvVL6C3OsuWI9iQ-iJFkMsMohjYlxgMLnVTEPo,6676
|
| 867 |
+
pip/_vendor/rich/bar.py,sha256=a7UD303BccRCrEhGjfMElpv5RFYIinaAhAuqYqhUvmw,3264
|
| 868 |
+
pip/_vendor/rich/box.py,sha256=o0ywz1iW0WjGLPrRVDAZPh1CVPEgAOaWsn8Bf3sf43g,9069
|
| 869 |
+
pip/_vendor/rich/cells.py,sha256=NadN20gFxE8Aj-2S3Drn7qgn-ZpsRZcNnTNtweRL7rA,4285
|
| 870 |
+
pip/_vendor/rich/color.py,sha256=SD3yTf3t8japb-jOv8GYCMCDqyzpipzXS_0rAXhSlU4,17285
|
| 871 |
+
pip/_vendor/rich/color_triplet.py,sha256=3lhQkdJbvWPoLDO-AnYImAWmJvV5dlgYNCVZ97ORaN4,1054
|
| 872 |
+
pip/_vendor/rich/columns.py,sha256=HUX0KcMm9dsKNi11fTbiM_h2iDtl8ySCaVcxlalEzq8,7131
|
| 873 |
+
pip/_vendor/rich/console.py,sha256=bioCy8012eZ8PIOBxMyyqxYPltKk2pGEG9jmwylNCQk,81236
|
| 874 |
+
pip/_vendor/rich/constrain.py,sha256=1VIPuC8AgtKWrcncQrjBdYqA3JVWysu6jZo1rrh7c7Q,1288
|
| 875 |
+
pip/_vendor/rich/containers.py,sha256=aKgm5UDHn5Nmui6IJaKdsZhbHClh_X7D-_Wg8Ehrr7s,5497
|
| 876 |
+
pip/_vendor/rich/control.py,sha256=qxg6Yjd78XuF0VxthlT8O4dpvpACYwKkBfm2S4-IvHA,5298
|
| 877 |
+
pip/_vendor/rich/default_styles.py,sha256=At42PcWzmnYWcx5fUOKyOUpI8HK5m4ItZqxkgHToaMs,7614
|
| 878 |
+
pip/_vendor/rich/diagnose.py,sha256=4L8SZfbqjIRotzJ39QzD9-d4I80FyV1mNKHryg1eArE,183
|
| 879 |
+
pip/_vendor/rich/emoji.py,sha256=omTF9asaAnsM4yLY94eR_9dgRRSm1lHUszX20D1yYCQ,2501
|
| 880 |
+
pip/_vendor/rich/errors.py,sha256=5pP3Kc5d4QJ_c0KFsxrfyhjiPVe7J1zOqSFbFAzcV-Y,642
|
| 881 |
+
pip/_vendor/rich/file_proxy.py,sha256=fHeReSO3VJ7IbH_9ri-OrPYbFC3UYOzeTNjngiiWOcY,1613
|
| 882 |
+
pip/_vendor/rich/filesize.py,sha256=oQJnM5_7ygkpzt3GtNq5l3F6gmB7YahBA5vpdQVKLwI,2511
|
| 883 |
+
pip/_vendor/rich/highlighter.py,sha256=AdhjC0meTYswZ_xKgka0cRYdNjLABLUzHAbyF3QpPWo,4894
|
| 884 |
+
pip/_vendor/rich/json.py,sha256=RCm4lXBXrjvXHpqrWPH8wdGP0jEo4IohLmkddlhRY18,5051
|
| 885 |
+
pip/_vendor/rich/jupyter.py,sha256=4sxNAwJs4g3dYfWy_enPw9fp0Tdn-82tV4T9uh9vAOM,3025
|
| 886 |
+
pip/_vendor/rich/layout.py,sha256=b64KMDP2EPiC103P-v-_VZKGY13oWiiGS418P_KRRlc,14048
|
| 887 |
+
pip/_vendor/rich/live.py,sha256=OKxMaFU5sFfuR--cJftGYjSvg1VPQri1U_DNZUjCsvI,13711
|
| 888 |
+
pip/_vendor/rich/live_render.py,sha256=zElm3PrfSIvjOce28zETHMIUf9pFYSUA5o0AflgUP64,3667
|
| 889 |
+
pip/_vendor/rich/logging.py,sha256=YNcCSK6pCo2Wg6JKqScAe6VgFqebHBnS5nDnBO4gXAA,10868
|
| 890 |
+
pip/_vendor/rich/markup.py,sha256=hsVW_k1TIvj5OPPQ12ihAii9HSVa8N1TStvA5B2GGpo,8058
|
| 891 |
+
pip/_vendor/rich/measure.py,sha256=Z74XvzIgLZm0xH-QIo1uX5d4oahavHe8D8MKyxLNqPQ,5258
|
| 892 |
+
pip/_vendor/rich/padding.py,sha256=kTFGsdGe0os7tXLnHKpwTI90CXEvrceeZGCshmJy5zw,4970
|
| 893 |
+
pip/_vendor/rich/pager.py,sha256=VK_2EfH0JduZWdyV-KZma06bvi_V5PWmHG6W7BoiaTg,838
|
| 894 |
+
pip/_vendor/rich/palette.py,sha256=lInvR1ODDT2f3UZMfL1grq7dY_pDdKHw4bdUgOGaM4Y,3396
|
| 895 |
+
pip/_vendor/rich/panel.py,sha256=O6ORyIhDcOLSEasTjpcDvmhvIcppPGCeQoXpoycIUT8,8637
|
| 896 |
+
pip/_vendor/rich/pretty.py,sha256=HAB68BpYysaL1EXeV4X5Tt-U2hDlcLpbFz06fkojWWE,32572
|
| 897 |
+
pip/_vendor/rich/progress.py,sha256=jcgi7aMnQ_YjSpAmQkalwtNsgVn9i56SeZGprr7tuOk,35926
|
| 898 |
+
pip/_vendor/rich/progress_bar.py,sha256=ELiBaxJOgsRYKpNIrot7BC0bFXvmf8cTd6nxI02BbK0,7762
|
| 899 |
+
pip/_vendor/rich/prompt.py,sha256=gKVd13YWv6jedzwcRPZGUINBjC-xcJhJ_xz_NvMW80c,11307
|
| 900 |
+
pip/_vendor/rich/protocol.py,sha256=Vx6n4fEoSDhzSup8t3KH0iK2RWyssIOks5E0S1qw1GA,1401
|
| 901 |
+
pip/_vendor/rich/region.py,sha256=rNT9xZrVZTYIXZC0NYn41CJQwYNbR-KecPOxTgQvB8Y,166
|
| 902 |
+
pip/_vendor/rich/repr.py,sha256=1A0U0_ibG_bZbw71pUBIctO9Az-CQUuyOTbiKcJOwyw,4309
|
| 903 |
+
pip/_vendor/rich/rule.py,sha256=cPK6NYo4kzh-vM_8a-rXajXplsbaHa6ahErYvGSsrJ0,4197
|
| 904 |
+
pip/_vendor/rich/scope.py,sha256=HX13XsJfqzQHpPfw4Jn9JmJjCsRj9uhHxXQEqjkwyLA,2842
|
| 905 |
+
pip/_vendor/rich/screen.py,sha256=YoeReESUhx74grqb0mSSb9lghhysWmFHYhsbMVQjXO8,1591
|
| 906 |
+
pip/_vendor/rich/segment.py,sha256=MBBAWaHyqCQFCfiNbrTW4BGaFR1uU31XktJ1S3Taqb4,23916
|
| 907 |
+
pip/_vendor/rich/spinner.py,sha256=V6dW0jIk5IO0_2MyxyftQf5VjCHI0T2cRhJ4F31hPIQ,4312
|
| 908 |
+
pip/_vendor/rich/status.py,sha256=gJsIXIZeSo3urOyxRUjs6VrhX5CZrA0NxIQ-dxhCnwo,4425
|
| 909 |
+
pip/_vendor/rich/style.py,sha256=AD1I7atfclsFCtGeL8ronH1Jj-02WLp9ZQ2VYqmpBjM,26469
|
| 910 |
+
pip/_vendor/rich/styled.py,sha256=eZNnzGrI4ki_54pgY3Oj0T-x3lxdXTYh4_ryDB24wBU,1258
|
| 911 |
+
pip/_vendor/rich/syntax.py,sha256=pJAD08ywowg5xVwTGCqUOMpDYskjoMoDYEV-hryEX5s,26994
|
| 912 |
+
pip/_vendor/rich/table.py,sha256=oQAEBaV4zMUPyg_tSA93_GrCirdIf-osolxf9wb3pEo,36757
|
| 913 |
+
pip/_vendor/rich/tabulate.py,sha256=nl0oeNbiXectEgTHyj3K7eN4NZMISpaogpOdZyEOGbs,1700
|
| 914 |
+
pip/_vendor/rich/terminal_theme.py,sha256=E0nI_ycFpvflamt-KVCY4J52LmUjRi1Y6ICB-Ef3gMo,1459
|
| 915 |
+
pip/_vendor/rich/text.py,sha256=auX3LpY-I6PBiNyxB3o3LyMEx7lna2cx9IbNQJDwtw8,44424
|
| 916 |
+
pip/_vendor/rich/theme.py,sha256=GKNtQhDBZKAzDaY0vQVQQFzbc0uWfFe6CJXA-syT7zQ,3627
|
| 917 |
+
pip/_vendor/rich/themes.py,sha256=0xgTLozfabebYtcJtDdC5QkX5IVUEaviqDUJJh4YVFk,102
|
| 918 |
+
pip/_vendor/rich/traceback.py,sha256=hAU3IR295eFuup_px2NU4aCEWu7KQs1qpZbnqoHCtR0,25935
|
| 919 |
+
pip/_vendor/rich/tree.py,sha256=JxyWbc27ZuwoLQnd7I-rSsRsqI9lzaVKlfTLJXla9U0,9122
|
| 920 |
+
pip/_vendor/six.py,sha256=TOOfQi7nFGfMrIvtdr6wX4wyHH8M7aknmuLfo2cBBrM,34549
|
| 921 |
+
pip/_vendor/tenacity/__init__.py,sha256=GLLsTFD4Bd5VDgTR6mU_FxyOsrxc48qONorVaRebeD4,18257
|
| 922 |
+
pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc,,
|
| 923 |
+
pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc,,
|
| 924 |
+
pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc,,
|
| 925 |
+
pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc,,
|
| 926 |
+
pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc,,
|
| 927 |
+
pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc,,
|
| 928 |
+
pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc,,
|
| 929 |
+
pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc,,
|
| 930 |
+
pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc,,
|
| 931 |
+
pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc,,
|
| 932 |
+
pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc,,
|
| 933 |
+
pip/_vendor/tenacity/_asyncio.py,sha256=HEb0BVJEeBJE9P-m9XBxh1KcaF96BwoeqkJCL5sbVcQ,3314
|
| 934 |
+
pip/_vendor/tenacity/_utils.py,sha256=-y68scDcyoqvTJuJJ0GTfjdSCljEYlbCYvgk7nM4NdM,1944
|
| 935 |
+
pip/_vendor/tenacity/after.py,sha256=dlmyxxFy2uqpLXDr838DiEd7jgv2AGthsWHGYcGYsaI,1496
|
| 936 |
+
pip/_vendor/tenacity/before.py,sha256=7XtvRmO0dRWUp8SVn24OvIiGFj8-4OP5muQRUiWgLh0,1376
|
| 937 |
+
pip/_vendor/tenacity/before_sleep.py,sha256=ThyDvqKU5yle_IvYQz_b6Tp6UjUS0PhVp6zgqYl9U6Y,1908
|
| 938 |
+
pip/_vendor/tenacity/nap.py,sha256=fRWvnz1aIzbIq9Ap3gAkAZgDH6oo5zxMrU6ZOVByq0I,1383
|
| 939 |
+
pip/_vendor/tenacity/retry.py,sha256=62R71W59bQjuNyFKsDM7hE2aEkEPtwNBRA0tnsEvgSk,6645
|
| 940 |
+
pip/_vendor/tenacity/stop.py,sha256=sKHmHaoSaW6sKu3dTxUVKr1-stVkY7lw4Y9yjZU30zQ,2790
|
| 941 |
+
pip/_vendor/tenacity/tornadoweb.py,sha256=E8lWO2nwe6dJgoB-N2HhQprYLDLB_UdSgFnv-EN6wKE,2145
|
| 942 |
+
pip/_vendor/tenacity/wait.py,sha256=e_Saa6I2tsNLpCL1t9897wN2fGb0XQMQlE4bU2t9V2w,6691
|
| 943 |
+
pip/_vendor/tomli/__init__.py,sha256=z1Elt0nLAqU5Y0DOn9p__8QnLWavlEOpRyQikdYgKro,230
|
| 944 |
+
pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc,,
|
| 945 |
+
pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc,,
|
| 946 |
+
pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc,,
|
| 947 |
+
pip/_vendor/tomli/_parser.py,sha256=50BD4o9YbzFAGAYyZLqZC8F81DQ7iWWyJnrHNwBKa6A,22415
|
| 948 |
+
pip/_vendor/tomli/_re.py,sha256=5GPfgXKteg7wRFCF-DzlkAPI2ilHbkMK2-JC49F-AJQ,2681
|
| 949 |
+
pip/_vendor/typing_extensions.py,sha256=1uqi_RSlI7gos4eJB_NEV3d5wQwzTUQHd3_jrkbTo8Q,87149
|
| 950 |
+
pip/_vendor/urllib3/__init__.py,sha256=j3yzHIbmW7CS-IKQJ9-PPQf_YKO8EOAey_rMW0UR7us,2763
|
| 951 |
+
pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc,,
|
| 952 |
+
pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc,,
|
| 953 |
+
pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc,,
|
| 954 |
+
pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc,,
|
| 955 |
+
pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc,,
|
| 956 |
+
pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc,,
|
| 957 |
+
pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc,,
|
| 958 |
+
pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc,,
|
| 959 |
+
pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc,,
|
| 960 |
+
pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc,,
|
| 961 |
+
pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc,,
|
| 962 |
+
pip/_vendor/urllib3/_collections.py,sha256=pyASJJhW7wdOpqJj9QJA8FyGRfr8E8uUUhqUvhF0728,11372
|
| 963 |
+
pip/_vendor/urllib3/_version.py,sha256=_NdMUQaeBvFHAX2z3zAIX2Wum58A6rVtY1f7ByHsQ4g,63
|
| 964 |
+
pip/_vendor/urllib3/connection.py,sha256=6zokyboYYKm9VkyrQvVVLgxMyCZK7n9Vmg_2ZK6pbhc,20076
|
| 965 |
+
pip/_vendor/urllib3/connectionpool.py,sha256=eQ1jWJ2dDdRADuCj9Yx7RCpzY2iM8P32jGHbjYBkAIk,39308
|
| 966 |
+
pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 967 |
+
pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc,,
|
| 968 |
+
pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc,,
|
| 969 |
+
pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc,,
|
| 970 |
+
pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc,,
|
| 971 |
+
pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc,,
|
| 972 |
+
pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc,,
|
| 973 |
+
pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc,,
|
| 974 |
+
pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=bDbyOEhW2CKLJcQqAKAyrEHN-aklsyHFKq6vF8ZFsmk,957
|
| 975 |
+
pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 976 |
+
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc,,
|
| 977 |
+
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc,,
|
| 978 |
+
pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc,,
|
| 979 |
+
pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=4Xk64qIkPBt09A5q-RIFUuDhNc9mXilVapm7WnYnzRw,17632
|
| 980 |
+
pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=B2JBB2_NRP02xK6DCa1Pa9IuxrPwxzDzZbixQkb7U9M,13922
|
| 981 |
+
pip/_vendor/urllib3/contrib/appengine.py,sha256=lfzpHFmJiO82shClLEm3QB62SYgHWnjpZOH_2JhU5Tc,11034
|
| 982 |
+
pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=ej9gGvfAb2Gt00lafFp45SIoRz-QwrQ4WChm6gQmAlM,4538
|
| 983 |
+
pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=DD4pInv_3OEEGffEFynBoirc8ldR789sLmGSKukzA0E,16900
|
| 984 |
+
pip/_vendor/urllib3/contrib/securetransport.py,sha256=4qUKo7PUV-vVIqXmr2BD-sH7qplB918jiD5eNsRI9vU,34449
|
| 985 |
+
pip/_vendor/urllib3/contrib/socks.py,sha256=aRi9eWXo9ZEb95XUxef4Z21CFlnnjbEiAo9HOseoMt4,7097
|
| 986 |
+
pip/_vendor/urllib3/exceptions.py,sha256=0Mnno3KHTNfXRfY7638NufOPkUb6mXOm-Lqj-4x2w8A,8217
|
| 987 |
+
pip/_vendor/urllib3/fields.py,sha256=kvLDCg_JmH1lLjUUEY_FLS8UhY7hBvDPuVETbY8mdrM,8579
|
| 988 |
+
pip/_vendor/urllib3/filepost.py,sha256=5b_qqgRHVlL7uLtdAYBzBh-GHmU5AfJVt_2N0XS3PeY,2440
|
| 989 |
+
pip/_vendor/urllib3/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 990 |
+
pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc,,
|
| 991 |
+
pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc,,
|
| 992 |
+
pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
| 993 |
+
pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc,,
|
| 994 |
+
pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc,,
|
| 995 |
+
pip/_vendor/urllib3/packages/backports/makefile.py,sha256=nbzt3i0agPVP07jqqgjhaYjMmuAi_W5E0EywZivVO8E,1417
|
| 996 |
+
pip/_vendor/urllib3/packages/six.py,sha256=1LVW7ljqRirFlfExjwl-v1B7vSAUNTmzGMs-qays2zg,34666
|
| 997 |
+
pip/_vendor/urllib3/poolmanager.py,sha256=0yYas7w5XQzsHvypcd1hstw4uPlNZ56cFwSA4Lg10XI,20954
|
| 998 |
+
pip/_vendor/urllib3/request.py,sha256=ZFSIqX0C6WizixecChZ3_okyu7BEv0lZu1VT0s6h4SM,5985
|
| 999 |
+
pip/_vendor/urllib3/response.py,sha256=hGhGBh7TkEkh_IQg5C1W_xuPNrgIKv5BUXPyE-q0LuE,28203
|
| 1000 |
+
pip/_vendor/urllib3/util/__init__.py,sha256=JEmSmmqqLyaw8P51gUImZh8Gwg9i1zSe-DoqAitn2nc,1155
|
| 1001 |
+
pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc,,
|
| 1002 |
+
pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc,,
|
| 1003 |
+
pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc,,
|
| 1004 |
+
pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc,,
|
| 1005 |
+
pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc,,
|
| 1006 |
+
pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc,,
|
| 1007 |
+
pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc,,
|
| 1008 |
+
pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc,,
|
| 1009 |
+
pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc,,
|
| 1010 |
+
pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc,,
|
| 1011 |
+
pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc,,
|
| 1012 |
+
pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc,,
|
| 1013 |
+
pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc,,
|
| 1014 |
+
pip/_vendor/urllib3/util/connection.py,sha256=5Lx2B1PW29KxBn2T0xkN1CBgRBa3gGVJBKoQoRogEVk,4901
|
| 1015 |
+
pip/_vendor/urllib3/util/proxy.py,sha256=zUvPPCJrp6dOF0N4GAVbOcl6o-4uXKSrGiTkkr5vUS4,1605
|
| 1016 |
+
pip/_vendor/urllib3/util/queue.py,sha256=nRgX8_eX-_VkvxoX096QWoz8Ps0QHUAExILCY_7PncM,498
|
| 1017 |
+
pip/_vendor/urllib3/util/request.py,sha256=NnzaEKQ1Pauw5MFMV6HmgEMHITf0Aua9fQuzi2uZzGc,4123
|
| 1018 |
+
pip/_vendor/urllib3/util/response.py,sha256=GJpg3Egi9qaJXRwBh5wv-MNuRWan5BIu40oReoxWP28,3510
|
| 1019 |
+
pip/_vendor/urllib3/util/retry.py,sha256=J39USWUTcYYHibxaBy2ZLlXnBZX0N1leKok6cCdtUMw,22048
|
| 1020 |
+
pip/_vendor/urllib3/util/ssl_.py,sha256=X4-AqW91aYPhPx6-xbf66yHFQKbqqfC_5Zt4WkLX1Hc,17177
|
| 1021 |
+
pip/_vendor/urllib3/util/ssl_match_hostname.py,sha256=w01jCYuwvQ038p9mhc1P1gF8IiTN1qHakThpoukOlbw,5751
|
| 1022 |
+
pip/_vendor/urllib3/util/ssltransport.py,sha256=NA-u5rMTrDFDFC8QzRKUEKMG0561hOD4qBTr3Z4pv6E,6895
|
| 1023 |
+
pip/_vendor/urllib3/util/timeout.py,sha256=QSbBUNOB9yh6AnDn61SrLQ0hg5oz0I9-uXEG91AJuIg,10003
|
| 1024 |
+
pip/_vendor/urllib3/util/url.py,sha256=QVEzcbHipbXyCWwH6R4K4TR-N8T4LM55WEMwNUTBmLE,14047
|
| 1025 |
+
pip/_vendor/urllib3/util/wait.py,sha256=3MUKRSAUJDB2tgco7qRUskW0zXGAWYvRRE4Q1_6xlLs,5404
|
| 1026 |
+
pip/_vendor/vendor.txt,sha256=H-9fScoah7nx4K8O4Uft0l5iH2P_mVo4RqyuMVOTJEc,496
|
| 1027 |
+
pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579
|
| 1028 |
+
pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc,,
|
| 1029 |
+
pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc,,
|
| 1030 |
+
pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc,,
|
| 1031 |
+
pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc,,
|
| 1032 |
+
pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc,,
|
| 1033 |
+
pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979
|
| 1034 |
+
pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305
|
| 1035 |
+
pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563
|
| 1036 |
+
pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307
|
| 1037 |
+
pip/py.typed,sha256=EBVvvPRTn_eIpz5e5QztSCdrMX7Qwd7VP93RSoIlZ2I,286
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/REQUESTED
ADDED
|
File without changes
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/WHEEL
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Wheel-Version: 1.0
|
| 2 |
+
Generator: bdist_wheel (0.37.1)
|
| 3 |
+
Root-Is-Purelib: true
|
| 4 |
+
Tag: py3-none-any
|
| 5 |
+
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/entry_points.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[console_scripts]
|
| 2 |
+
pip = pip._internal.cli.main:main
|
| 3 |
+
pip3 = pip._internal.cli.main:main
|
| 4 |
+
pip3.10 = pip._internal.cli.main:main
|
| 5 |
+
|
venv/lib/python3.10/site-packages/pip-22.0.2.dist-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
pip
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc
ADDED
|
Binary file (4.75 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc
ADDED
|
Binary file (31.3 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc
ADDED
|
Binary file (9.26 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py
ADDED
|
@@ -0,0 +1,937 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.filters
|
| 3 |
+
~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Module containing filter lookup functions and default
|
| 6 |
+
filters.
|
| 7 |
+
|
| 8 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 9 |
+
:license: BSD, see LICENSE for details.
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import re
|
| 13 |
+
|
| 14 |
+
from pip._vendor.pygments.token import String, Comment, Keyword, Name, Error, Whitespace, \
|
| 15 |
+
string_to_tokentype
|
| 16 |
+
from pip._vendor.pygments.filter import Filter
|
| 17 |
+
from pip._vendor.pygments.util import get_list_opt, get_int_opt, get_bool_opt, \
|
| 18 |
+
get_choice_opt, ClassNotFound, OptionError
|
| 19 |
+
from pip._vendor.pygments.plugin import find_plugin_filters
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def find_filter_class(filtername):
|
| 23 |
+
"""Lookup a filter by name. Return None if not found."""
|
| 24 |
+
if filtername in FILTERS:
|
| 25 |
+
return FILTERS[filtername]
|
| 26 |
+
for name, cls in find_plugin_filters():
|
| 27 |
+
if name == filtername:
|
| 28 |
+
return cls
|
| 29 |
+
return None
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
def get_filter_by_name(filtername, **options):
|
| 33 |
+
"""Return an instantiated filter.
|
| 34 |
+
|
| 35 |
+
Options are passed to the filter initializer if wanted.
|
| 36 |
+
Raise a ClassNotFound if not found.
|
| 37 |
+
"""
|
| 38 |
+
cls = find_filter_class(filtername)
|
| 39 |
+
if cls:
|
| 40 |
+
return cls(**options)
|
| 41 |
+
else:
|
| 42 |
+
raise ClassNotFound('filter %r not found' % filtername)
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
def get_all_filters():
|
| 46 |
+
"""Return a generator of all filter names."""
|
| 47 |
+
yield from FILTERS
|
| 48 |
+
for name, _ in find_plugin_filters():
|
| 49 |
+
yield name
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def _replace_special(ttype, value, regex, specialttype,
|
| 53 |
+
replacefunc=lambda x: x):
|
| 54 |
+
last = 0
|
| 55 |
+
for match in regex.finditer(value):
|
| 56 |
+
start, end = match.start(), match.end()
|
| 57 |
+
if start != last:
|
| 58 |
+
yield ttype, value[last:start]
|
| 59 |
+
yield specialttype, replacefunc(value[start:end])
|
| 60 |
+
last = end
|
| 61 |
+
if last != len(value):
|
| 62 |
+
yield ttype, value[last:]
|
| 63 |
+
|
| 64 |
+
|
| 65 |
+
class CodeTagFilter(Filter):
|
| 66 |
+
"""Highlight special code tags in comments and docstrings.
|
| 67 |
+
|
| 68 |
+
Options accepted:
|
| 69 |
+
|
| 70 |
+
`codetags` : list of strings
|
| 71 |
+
A list of strings that are flagged as code tags. The default is to
|
| 72 |
+
highlight ``XXX``, ``TODO``, ``BUG`` and ``NOTE``.
|
| 73 |
+
"""
|
| 74 |
+
|
| 75 |
+
def __init__(self, **options):
|
| 76 |
+
Filter.__init__(self, **options)
|
| 77 |
+
tags = get_list_opt(options, 'codetags',
|
| 78 |
+
['XXX', 'TODO', 'BUG', 'NOTE'])
|
| 79 |
+
self.tag_re = re.compile(r'\b(%s)\b' % '|'.join([
|
| 80 |
+
re.escape(tag) for tag in tags if tag
|
| 81 |
+
]))
|
| 82 |
+
|
| 83 |
+
def filter(self, lexer, stream):
|
| 84 |
+
regex = self.tag_re
|
| 85 |
+
for ttype, value in stream:
|
| 86 |
+
if ttype in String.Doc or \
|
| 87 |
+
ttype in Comment and \
|
| 88 |
+
ttype not in Comment.Preproc:
|
| 89 |
+
yield from _replace_special(ttype, value, regex, Comment.Special)
|
| 90 |
+
else:
|
| 91 |
+
yield ttype, value
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
class SymbolFilter(Filter):
|
| 95 |
+
"""Convert mathematical symbols such as \\<longrightarrow> in Isabelle
|
| 96 |
+
or \\longrightarrow in LaTeX into Unicode characters.
|
| 97 |
+
|
| 98 |
+
This is mostly useful for HTML or console output when you want to
|
| 99 |
+
approximate the source rendering you'd see in an IDE.
|
| 100 |
+
|
| 101 |
+
Options accepted:
|
| 102 |
+
|
| 103 |
+
`lang` : string
|
| 104 |
+
The symbol language. Must be one of ``'isabelle'`` or
|
| 105 |
+
``'latex'``. The default is ``'isabelle'``.
|
| 106 |
+
"""
|
| 107 |
+
|
| 108 |
+
latex_symbols = {
|
| 109 |
+
'\\alpha' : '\U000003b1',
|
| 110 |
+
'\\beta' : '\U000003b2',
|
| 111 |
+
'\\gamma' : '\U000003b3',
|
| 112 |
+
'\\delta' : '\U000003b4',
|
| 113 |
+
'\\varepsilon' : '\U000003b5',
|
| 114 |
+
'\\zeta' : '\U000003b6',
|
| 115 |
+
'\\eta' : '\U000003b7',
|
| 116 |
+
'\\vartheta' : '\U000003b8',
|
| 117 |
+
'\\iota' : '\U000003b9',
|
| 118 |
+
'\\kappa' : '\U000003ba',
|
| 119 |
+
'\\lambda' : '\U000003bb',
|
| 120 |
+
'\\mu' : '\U000003bc',
|
| 121 |
+
'\\nu' : '\U000003bd',
|
| 122 |
+
'\\xi' : '\U000003be',
|
| 123 |
+
'\\pi' : '\U000003c0',
|
| 124 |
+
'\\varrho' : '\U000003c1',
|
| 125 |
+
'\\sigma' : '\U000003c3',
|
| 126 |
+
'\\tau' : '\U000003c4',
|
| 127 |
+
'\\upsilon' : '\U000003c5',
|
| 128 |
+
'\\varphi' : '\U000003c6',
|
| 129 |
+
'\\chi' : '\U000003c7',
|
| 130 |
+
'\\psi' : '\U000003c8',
|
| 131 |
+
'\\omega' : '\U000003c9',
|
| 132 |
+
'\\Gamma' : '\U00000393',
|
| 133 |
+
'\\Delta' : '\U00000394',
|
| 134 |
+
'\\Theta' : '\U00000398',
|
| 135 |
+
'\\Lambda' : '\U0000039b',
|
| 136 |
+
'\\Xi' : '\U0000039e',
|
| 137 |
+
'\\Pi' : '\U000003a0',
|
| 138 |
+
'\\Sigma' : '\U000003a3',
|
| 139 |
+
'\\Upsilon' : '\U000003a5',
|
| 140 |
+
'\\Phi' : '\U000003a6',
|
| 141 |
+
'\\Psi' : '\U000003a8',
|
| 142 |
+
'\\Omega' : '\U000003a9',
|
| 143 |
+
'\\leftarrow' : '\U00002190',
|
| 144 |
+
'\\longleftarrow' : '\U000027f5',
|
| 145 |
+
'\\rightarrow' : '\U00002192',
|
| 146 |
+
'\\longrightarrow' : '\U000027f6',
|
| 147 |
+
'\\Leftarrow' : '\U000021d0',
|
| 148 |
+
'\\Longleftarrow' : '\U000027f8',
|
| 149 |
+
'\\Rightarrow' : '\U000021d2',
|
| 150 |
+
'\\Longrightarrow' : '\U000027f9',
|
| 151 |
+
'\\leftrightarrow' : '\U00002194',
|
| 152 |
+
'\\longleftrightarrow' : '\U000027f7',
|
| 153 |
+
'\\Leftrightarrow' : '\U000021d4',
|
| 154 |
+
'\\Longleftrightarrow' : '\U000027fa',
|
| 155 |
+
'\\mapsto' : '\U000021a6',
|
| 156 |
+
'\\longmapsto' : '\U000027fc',
|
| 157 |
+
'\\relbar' : '\U00002500',
|
| 158 |
+
'\\Relbar' : '\U00002550',
|
| 159 |
+
'\\hookleftarrow' : '\U000021a9',
|
| 160 |
+
'\\hookrightarrow' : '\U000021aa',
|
| 161 |
+
'\\leftharpoondown' : '\U000021bd',
|
| 162 |
+
'\\rightharpoondown' : '\U000021c1',
|
| 163 |
+
'\\leftharpoonup' : '\U000021bc',
|
| 164 |
+
'\\rightharpoonup' : '\U000021c0',
|
| 165 |
+
'\\rightleftharpoons' : '\U000021cc',
|
| 166 |
+
'\\leadsto' : '\U0000219d',
|
| 167 |
+
'\\downharpoonleft' : '\U000021c3',
|
| 168 |
+
'\\downharpoonright' : '\U000021c2',
|
| 169 |
+
'\\upharpoonleft' : '\U000021bf',
|
| 170 |
+
'\\upharpoonright' : '\U000021be',
|
| 171 |
+
'\\restriction' : '\U000021be',
|
| 172 |
+
'\\uparrow' : '\U00002191',
|
| 173 |
+
'\\Uparrow' : '\U000021d1',
|
| 174 |
+
'\\downarrow' : '\U00002193',
|
| 175 |
+
'\\Downarrow' : '\U000021d3',
|
| 176 |
+
'\\updownarrow' : '\U00002195',
|
| 177 |
+
'\\Updownarrow' : '\U000021d5',
|
| 178 |
+
'\\langle' : '\U000027e8',
|
| 179 |
+
'\\rangle' : '\U000027e9',
|
| 180 |
+
'\\lceil' : '\U00002308',
|
| 181 |
+
'\\rceil' : '\U00002309',
|
| 182 |
+
'\\lfloor' : '\U0000230a',
|
| 183 |
+
'\\rfloor' : '\U0000230b',
|
| 184 |
+
'\\flqq' : '\U000000ab',
|
| 185 |
+
'\\frqq' : '\U000000bb',
|
| 186 |
+
'\\bot' : '\U000022a5',
|
| 187 |
+
'\\top' : '\U000022a4',
|
| 188 |
+
'\\wedge' : '\U00002227',
|
| 189 |
+
'\\bigwedge' : '\U000022c0',
|
| 190 |
+
'\\vee' : '\U00002228',
|
| 191 |
+
'\\bigvee' : '\U000022c1',
|
| 192 |
+
'\\forall' : '\U00002200',
|
| 193 |
+
'\\exists' : '\U00002203',
|
| 194 |
+
'\\nexists' : '\U00002204',
|
| 195 |
+
'\\neg' : '\U000000ac',
|
| 196 |
+
'\\Box' : '\U000025a1',
|
| 197 |
+
'\\Diamond' : '\U000025c7',
|
| 198 |
+
'\\vdash' : '\U000022a2',
|
| 199 |
+
'\\models' : '\U000022a8',
|
| 200 |
+
'\\dashv' : '\U000022a3',
|
| 201 |
+
'\\surd' : '\U0000221a',
|
| 202 |
+
'\\le' : '\U00002264',
|
| 203 |
+
'\\ge' : '\U00002265',
|
| 204 |
+
'\\ll' : '\U0000226a',
|
| 205 |
+
'\\gg' : '\U0000226b',
|
| 206 |
+
'\\lesssim' : '\U00002272',
|
| 207 |
+
'\\gtrsim' : '\U00002273',
|
| 208 |
+
'\\lessapprox' : '\U00002a85',
|
| 209 |
+
'\\gtrapprox' : '\U00002a86',
|
| 210 |
+
'\\in' : '\U00002208',
|
| 211 |
+
'\\notin' : '\U00002209',
|
| 212 |
+
'\\subset' : '\U00002282',
|
| 213 |
+
'\\supset' : '\U00002283',
|
| 214 |
+
'\\subseteq' : '\U00002286',
|
| 215 |
+
'\\supseteq' : '\U00002287',
|
| 216 |
+
'\\sqsubset' : '\U0000228f',
|
| 217 |
+
'\\sqsupset' : '\U00002290',
|
| 218 |
+
'\\sqsubseteq' : '\U00002291',
|
| 219 |
+
'\\sqsupseteq' : '\U00002292',
|
| 220 |
+
'\\cap' : '\U00002229',
|
| 221 |
+
'\\bigcap' : '\U000022c2',
|
| 222 |
+
'\\cup' : '\U0000222a',
|
| 223 |
+
'\\bigcup' : '\U000022c3',
|
| 224 |
+
'\\sqcup' : '\U00002294',
|
| 225 |
+
'\\bigsqcup' : '\U00002a06',
|
| 226 |
+
'\\sqcap' : '\U00002293',
|
| 227 |
+
'\\Bigsqcap' : '\U00002a05',
|
| 228 |
+
'\\setminus' : '\U00002216',
|
| 229 |
+
'\\propto' : '\U0000221d',
|
| 230 |
+
'\\uplus' : '\U0000228e',
|
| 231 |
+
'\\bigplus' : '\U00002a04',
|
| 232 |
+
'\\sim' : '\U0000223c',
|
| 233 |
+
'\\doteq' : '\U00002250',
|
| 234 |
+
'\\simeq' : '\U00002243',
|
| 235 |
+
'\\approx' : '\U00002248',
|
| 236 |
+
'\\asymp' : '\U0000224d',
|
| 237 |
+
'\\cong' : '\U00002245',
|
| 238 |
+
'\\equiv' : '\U00002261',
|
| 239 |
+
'\\Join' : '\U000022c8',
|
| 240 |
+
'\\bowtie' : '\U00002a1d',
|
| 241 |
+
'\\prec' : '\U0000227a',
|
| 242 |
+
'\\succ' : '\U0000227b',
|
| 243 |
+
'\\preceq' : '\U0000227c',
|
| 244 |
+
'\\succeq' : '\U0000227d',
|
| 245 |
+
'\\parallel' : '\U00002225',
|
| 246 |
+
'\\mid' : '\U000000a6',
|
| 247 |
+
'\\pm' : '\U000000b1',
|
| 248 |
+
'\\mp' : '\U00002213',
|
| 249 |
+
'\\times' : '\U000000d7',
|
| 250 |
+
'\\div' : '\U000000f7',
|
| 251 |
+
'\\cdot' : '\U000022c5',
|
| 252 |
+
'\\star' : '\U000022c6',
|
| 253 |
+
'\\circ' : '\U00002218',
|
| 254 |
+
'\\dagger' : '\U00002020',
|
| 255 |
+
'\\ddagger' : '\U00002021',
|
| 256 |
+
'\\lhd' : '\U000022b2',
|
| 257 |
+
'\\rhd' : '\U000022b3',
|
| 258 |
+
'\\unlhd' : '\U000022b4',
|
| 259 |
+
'\\unrhd' : '\U000022b5',
|
| 260 |
+
'\\triangleleft' : '\U000025c3',
|
| 261 |
+
'\\triangleright' : '\U000025b9',
|
| 262 |
+
'\\triangle' : '\U000025b3',
|
| 263 |
+
'\\triangleq' : '\U0000225c',
|
| 264 |
+
'\\oplus' : '\U00002295',
|
| 265 |
+
'\\bigoplus' : '\U00002a01',
|
| 266 |
+
'\\otimes' : '\U00002297',
|
| 267 |
+
'\\bigotimes' : '\U00002a02',
|
| 268 |
+
'\\odot' : '\U00002299',
|
| 269 |
+
'\\bigodot' : '\U00002a00',
|
| 270 |
+
'\\ominus' : '\U00002296',
|
| 271 |
+
'\\oslash' : '\U00002298',
|
| 272 |
+
'\\dots' : '\U00002026',
|
| 273 |
+
'\\cdots' : '\U000022ef',
|
| 274 |
+
'\\sum' : '\U00002211',
|
| 275 |
+
'\\prod' : '\U0000220f',
|
| 276 |
+
'\\coprod' : '\U00002210',
|
| 277 |
+
'\\infty' : '\U0000221e',
|
| 278 |
+
'\\int' : '\U0000222b',
|
| 279 |
+
'\\oint' : '\U0000222e',
|
| 280 |
+
'\\clubsuit' : '\U00002663',
|
| 281 |
+
'\\diamondsuit' : '\U00002662',
|
| 282 |
+
'\\heartsuit' : '\U00002661',
|
| 283 |
+
'\\spadesuit' : '\U00002660',
|
| 284 |
+
'\\aleph' : '\U00002135',
|
| 285 |
+
'\\emptyset' : '\U00002205',
|
| 286 |
+
'\\nabla' : '\U00002207',
|
| 287 |
+
'\\partial' : '\U00002202',
|
| 288 |
+
'\\flat' : '\U0000266d',
|
| 289 |
+
'\\natural' : '\U0000266e',
|
| 290 |
+
'\\sharp' : '\U0000266f',
|
| 291 |
+
'\\angle' : '\U00002220',
|
| 292 |
+
'\\copyright' : '\U000000a9',
|
| 293 |
+
'\\textregistered' : '\U000000ae',
|
| 294 |
+
'\\textonequarter' : '\U000000bc',
|
| 295 |
+
'\\textonehalf' : '\U000000bd',
|
| 296 |
+
'\\textthreequarters' : '\U000000be',
|
| 297 |
+
'\\textordfeminine' : '\U000000aa',
|
| 298 |
+
'\\textordmasculine' : '\U000000ba',
|
| 299 |
+
'\\euro' : '\U000020ac',
|
| 300 |
+
'\\pounds' : '\U000000a3',
|
| 301 |
+
'\\yen' : '\U000000a5',
|
| 302 |
+
'\\textcent' : '\U000000a2',
|
| 303 |
+
'\\textcurrency' : '\U000000a4',
|
| 304 |
+
'\\textdegree' : '\U000000b0',
|
| 305 |
+
}
|
| 306 |
+
|
| 307 |
+
isabelle_symbols = {
|
| 308 |
+
'\\<zero>' : '\U0001d7ec',
|
| 309 |
+
'\\<one>' : '\U0001d7ed',
|
| 310 |
+
'\\<two>' : '\U0001d7ee',
|
| 311 |
+
'\\<three>' : '\U0001d7ef',
|
| 312 |
+
'\\<four>' : '\U0001d7f0',
|
| 313 |
+
'\\<five>' : '\U0001d7f1',
|
| 314 |
+
'\\<six>' : '\U0001d7f2',
|
| 315 |
+
'\\<seven>' : '\U0001d7f3',
|
| 316 |
+
'\\<eight>' : '\U0001d7f4',
|
| 317 |
+
'\\<nine>' : '\U0001d7f5',
|
| 318 |
+
'\\<A>' : '\U0001d49c',
|
| 319 |
+
'\\<B>' : '\U0000212c',
|
| 320 |
+
'\\<C>' : '\U0001d49e',
|
| 321 |
+
'\\<D>' : '\U0001d49f',
|
| 322 |
+
'\\<E>' : '\U00002130',
|
| 323 |
+
'\\<F>' : '\U00002131',
|
| 324 |
+
'\\<G>' : '\U0001d4a2',
|
| 325 |
+
'\\<H>' : '\U0000210b',
|
| 326 |
+
'\\<I>' : '\U00002110',
|
| 327 |
+
'\\<J>' : '\U0001d4a5',
|
| 328 |
+
'\\<K>' : '\U0001d4a6',
|
| 329 |
+
'\\<L>' : '\U00002112',
|
| 330 |
+
'\\<M>' : '\U00002133',
|
| 331 |
+
'\\<N>' : '\U0001d4a9',
|
| 332 |
+
'\\<O>' : '\U0001d4aa',
|
| 333 |
+
'\\<P>' : '\U0001d4ab',
|
| 334 |
+
'\\<Q>' : '\U0001d4ac',
|
| 335 |
+
'\\<R>' : '\U0000211b',
|
| 336 |
+
'\\<S>' : '\U0001d4ae',
|
| 337 |
+
'\\<T>' : '\U0001d4af',
|
| 338 |
+
'\\<U>' : '\U0001d4b0',
|
| 339 |
+
'\\<V>' : '\U0001d4b1',
|
| 340 |
+
'\\<W>' : '\U0001d4b2',
|
| 341 |
+
'\\<X>' : '\U0001d4b3',
|
| 342 |
+
'\\<Y>' : '\U0001d4b4',
|
| 343 |
+
'\\<Z>' : '\U0001d4b5',
|
| 344 |
+
'\\<a>' : '\U0001d5ba',
|
| 345 |
+
'\\<b>' : '\U0001d5bb',
|
| 346 |
+
'\\<c>' : '\U0001d5bc',
|
| 347 |
+
'\\<d>' : '\U0001d5bd',
|
| 348 |
+
'\\<e>' : '\U0001d5be',
|
| 349 |
+
'\\<f>' : '\U0001d5bf',
|
| 350 |
+
'\\<g>' : '\U0001d5c0',
|
| 351 |
+
'\\<h>' : '\U0001d5c1',
|
| 352 |
+
'\\<i>' : '\U0001d5c2',
|
| 353 |
+
'\\<j>' : '\U0001d5c3',
|
| 354 |
+
'\\<k>' : '\U0001d5c4',
|
| 355 |
+
'\\<l>' : '\U0001d5c5',
|
| 356 |
+
'\\<m>' : '\U0001d5c6',
|
| 357 |
+
'\\<n>' : '\U0001d5c7',
|
| 358 |
+
'\\<o>' : '\U0001d5c8',
|
| 359 |
+
'\\<p>' : '\U0001d5c9',
|
| 360 |
+
'\\<q>' : '\U0001d5ca',
|
| 361 |
+
'\\<r>' : '\U0001d5cb',
|
| 362 |
+
'\\<s>' : '\U0001d5cc',
|
| 363 |
+
'\\<t>' : '\U0001d5cd',
|
| 364 |
+
'\\<u>' : '\U0001d5ce',
|
| 365 |
+
'\\<v>' : '\U0001d5cf',
|
| 366 |
+
'\\<w>' : '\U0001d5d0',
|
| 367 |
+
'\\<x>' : '\U0001d5d1',
|
| 368 |
+
'\\<y>' : '\U0001d5d2',
|
| 369 |
+
'\\<z>' : '\U0001d5d3',
|
| 370 |
+
'\\<AA>' : '\U0001d504',
|
| 371 |
+
'\\<BB>' : '\U0001d505',
|
| 372 |
+
'\\<CC>' : '\U0000212d',
|
| 373 |
+
'\\<DD>' : '\U0001d507',
|
| 374 |
+
'\\<EE>' : '\U0001d508',
|
| 375 |
+
'\\<FF>' : '\U0001d509',
|
| 376 |
+
'\\<GG>' : '\U0001d50a',
|
| 377 |
+
'\\<HH>' : '\U0000210c',
|
| 378 |
+
'\\<II>' : '\U00002111',
|
| 379 |
+
'\\<JJ>' : '\U0001d50d',
|
| 380 |
+
'\\<KK>' : '\U0001d50e',
|
| 381 |
+
'\\<LL>' : '\U0001d50f',
|
| 382 |
+
'\\<MM>' : '\U0001d510',
|
| 383 |
+
'\\<NN>' : '\U0001d511',
|
| 384 |
+
'\\<OO>' : '\U0001d512',
|
| 385 |
+
'\\<PP>' : '\U0001d513',
|
| 386 |
+
'\\<QQ>' : '\U0001d514',
|
| 387 |
+
'\\<RR>' : '\U0000211c',
|
| 388 |
+
'\\<SS>' : '\U0001d516',
|
| 389 |
+
'\\<TT>' : '\U0001d517',
|
| 390 |
+
'\\<UU>' : '\U0001d518',
|
| 391 |
+
'\\<VV>' : '\U0001d519',
|
| 392 |
+
'\\<WW>' : '\U0001d51a',
|
| 393 |
+
'\\<XX>' : '\U0001d51b',
|
| 394 |
+
'\\<YY>' : '\U0001d51c',
|
| 395 |
+
'\\<ZZ>' : '\U00002128',
|
| 396 |
+
'\\<aa>' : '\U0001d51e',
|
| 397 |
+
'\\<bb>' : '\U0001d51f',
|
| 398 |
+
'\\<cc>' : '\U0001d520',
|
| 399 |
+
'\\<dd>' : '\U0001d521',
|
| 400 |
+
'\\<ee>' : '\U0001d522',
|
| 401 |
+
'\\<ff>' : '\U0001d523',
|
| 402 |
+
'\\<gg>' : '\U0001d524',
|
| 403 |
+
'\\<hh>' : '\U0001d525',
|
| 404 |
+
'\\<ii>' : '\U0001d526',
|
| 405 |
+
'\\<jj>' : '\U0001d527',
|
| 406 |
+
'\\<kk>' : '\U0001d528',
|
| 407 |
+
'\\<ll>' : '\U0001d529',
|
| 408 |
+
'\\<mm>' : '\U0001d52a',
|
| 409 |
+
'\\<nn>' : '\U0001d52b',
|
| 410 |
+
'\\<oo>' : '\U0001d52c',
|
| 411 |
+
'\\<pp>' : '\U0001d52d',
|
| 412 |
+
'\\<qq>' : '\U0001d52e',
|
| 413 |
+
'\\<rr>' : '\U0001d52f',
|
| 414 |
+
'\\<ss>' : '\U0001d530',
|
| 415 |
+
'\\<tt>' : '\U0001d531',
|
| 416 |
+
'\\<uu>' : '\U0001d532',
|
| 417 |
+
'\\<vv>' : '\U0001d533',
|
| 418 |
+
'\\<ww>' : '\U0001d534',
|
| 419 |
+
'\\<xx>' : '\U0001d535',
|
| 420 |
+
'\\<yy>' : '\U0001d536',
|
| 421 |
+
'\\<zz>' : '\U0001d537',
|
| 422 |
+
'\\<alpha>' : '\U000003b1',
|
| 423 |
+
'\\<beta>' : '\U000003b2',
|
| 424 |
+
'\\<gamma>' : '\U000003b3',
|
| 425 |
+
'\\<delta>' : '\U000003b4',
|
| 426 |
+
'\\<epsilon>' : '\U000003b5',
|
| 427 |
+
'\\<zeta>' : '\U000003b6',
|
| 428 |
+
'\\<eta>' : '\U000003b7',
|
| 429 |
+
'\\<theta>' : '\U000003b8',
|
| 430 |
+
'\\<iota>' : '\U000003b9',
|
| 431 |
+
'\\<kappa>' : '\U000003ba',
|
| 432 |
+
'\\<lambda>' : '\U000003bb',
|
| 433 |
+
'\\<mu>' : '\U000003bc',
|
| 434 |
+
'\\<nu>' : '\U000003bd',
|
| 435 |
+
'\\<xi>' : '\U000003be',
|
| 436 |
+
'\\<pi>' : '\U000003c0',
|
| 437 |
+
'\\<rho>' : '\U000003c1',
|
| 438 |
+
'\\<sigma>' : '\U000003c3',
|
| 439 |
+
'\\<tau>' : '\U000003c4',
|
| 440 |
+
'\\<upsilon>' : '\U000003c5',
|
| 441 |
+
'\\<phi>' : '\U000003c6',
|
| 442 |
+
'\\<chi>' : '\U000003c7',
|
| 443 |
+
'\\<psi>' : '\U000003c8',
|
| 444 |
+
'\\<omega>' : '\U000003c9',
|
| 445 |
+
'\\<Gamma>' : '\U00000393',
|
| 446 |
+
'\\<Delta>' : '\U00000394',
|
| 447 |
+
'\\<Theta>' : '\U00000398',
|
| 448 |
+
'\\<Lambda>' : '\U0000039b',
|
| 449 |
+
'\\<Xi>' : '\U0000039e',
|
| 450 |
+
'\\<Pi>' : '\U000003a0',
|
| 451 |
+
'\\<Sigma>' : '\U000003a3',
|
| 452 |
+
'\\<Upsilon>' : '\U000003a5',
|
| 453 |
+
'\\<Phi>' : '\U000003a6',
|
| 454 |
+
'\\<Psi>' : '\U000003a8',
|
| 455 |
+
'\\<Omega>' : '\U000003a9',
|
| 456 |
+
'\\<bool>' : '\U0001d539',
|
| 457 |
+
'\\<complex>' : '\U00002102',
|
| 458 |
+
'\\<nat>' : '\U00002115',
|
| 459 |
+
'\\<rat>' : '\U0000211a',
|
| 460 |
+
'\\<real>' : '\U0000211d',
|
| 461 |
+
'\\<int>' : '\U00002124',
|
| 462 |
+
'\\<leftarrow>' : '\U00002190',
|
| 463 |
+
'\\<longleftarrow>' : '\U000027f5',
|
| 464 |
+
'\\<rightarrow>' : '\U00002192',
|
| 465 |
+
'\\<longrightarrow>' : '\U000027f6',
|
| 466 |
+
'\\<Leftarrow>' : '\U000021d0',
|
| 467 |
+
'\\<Longleftarrow>' : '\U000027f8',
|
| 468 |
+
'\\<Rightarrow>' : '\U000021d2',
|
| 469 |
+
'\\<Longrightarrow>' : '\U000027f9',
|
| 470 |
+
'\\<leftrightarrow>' : '\U00002194',
|
| 471 |
+
'\\<longleftrightarrow>' : '\U000027f7',
|
| 472 |
+
'\\<Leftrightarrow>' : '\U000021d4',
|
| 473 |
+
'\\<Longleftrightarrow>' : '\U000027fa',
|
| 474 |
+
'\\<mapsto>' : '\U000021a6',
|
| 475 |
+
'\\<longmapsto>' : '\U000027fc',
|
| 476 |
+
'\\<midarrow>' : '\U00002500',
|
| 477 |
+
'\\<Midarrow>' : '\U00002550',
|
| 478 |
+
'\\<hookleftarrow>' : '\U000021a9',
|
| 479 |
+
'\\<hookrightarrow>' : '\U000021aa',
|
| 480 |
+
'\\<leftharpoondown>' : '\U000021bd',
|
| 481 |
+
'\\<rightharpoondown>' : '\U000021c1',
|
| 482 |
+
'\\<leftharpoonup>' : '\U000021bc',
|
| 483 |
+
'\\<rightharpoonup>' : '\U000021c0',
|
| 484 |
+
'\\<rightleftharpoons>' : '\U000021cc',
|
| 485 |
+
'\\<leadsto>' : '\U0000219d',
|
| 486 |
+
'\\<downharpoonleft>' : '\U000021c3',
|
| 487 |
+
'\\<downharpoonright>' : '\U000021c2',
|
| 488 |
+
'\\<upharpoonleft>' : '\U000021bf',
|
| 489 |
+
'\\<upharpoonright>' : '\U000021be',
|
| 490 |
+
'\\<restriction>' : '\U000021be',
|
| 491 |
+
'\\<Colon>' : '\U00002237',
|
| 492 |
+
'\\<up>' : '\U00002191',
|
| 493 |
+
'\\<Up>' : '\U000021d1',
|
| 494 |
+
'\\<down>' : '\U00002193',
|
| 495 |
+
'\\<Down>' : '\U000021d3',
|
| 496 |
+
'\\<updown>' : '\U00002195',
|
| 497 |
+
'\\<Updown>' : '\U000021d5',
|
| 498 |
+
'\\<langle>' : '\U000027e8',
|
| 499 |
+
'\\<rangle>' : '\U000027e9',
|
| 500 |
+
'\\<lceil>' : '\U00002308',
|
| 501 |
+
'\\<rceil>' : '\U00002309',
|
| 502 |
+
'\\<lfloor>' : '\U0000230a',
|
| 503 |
+
'\\<rfloor>' : '\U0000230b',
|
| 504 |
+
'\\<lparr>' : '\U00002987',
|
| 505 |
+
'\\<rparr>' : '\U00002988',
|
| 506 |
+
'\\<lbrakk>' : '\U000027e6',
|
| 507 |
+
'\\<rbrakk>' : '\U000027e7',
|
| 508 |
+
'\\<lbrace>' : '\U00002983',
|
| 509 |
+
'\\<rbrace>' : '\U00002984',
|
| 510 |
+
'\\<guillemotleft>' : '\U000000ab',
|
| 511 |
+
'\\<guillemotright>' : '\U000000bb',
|
| 512 |
+
'\\<bottom>' : '\U000022a5',
|
| 513 |
+
'\\<top>' : '\U000022a4',
|
| 514 |
+
'\\<and>' : '\U00002227',
|
| 515 |
+
'\\<And>' : '\U000022c0',
|
| 516 |
+
'\\<or>' : '\U00002228',
|
| 517 |
+
'\\<Or>' : '\U000022c1',
|
| 518 |
+
'\\<forall>' : '\U00002200',
|
| 519 |
+
'\\<exists>' : '\U00002203',
|
| 520 |
+
'\\<nexists>' : '\U00002204',
|
| 521 |
+
'\\<not>' : '\U000000ac',
|
| 522 |
+
'\\<box>' : '\U000025a1',
|
| 523 |
+
'\\<diamond>' : '\U000025c7',
|
| 524 |
+
'\\<turnstile>' : '\U000022a2',
|
| 525 |
+
'\\<Turnstile>' : '\U000022a8',
|
| 526 |
+
'\\<tturnstile>' : '\U000022a9',
|
| 527 |
+
'\\<TTurnstile>' : '\U000022ab',
|
| 528 |
+
'\\<stileturn>' : '\U000022a3',
|
| 529 |
+
'\\<surd>' : '\U0000221a',
|
| 530 |
+
'\\<le>' : '\U00002264',
|
| 531 |
+
'\\<ge>' : '\U00002265',
|
| 532 |
+
'\\<lless>' : '\U0000226a',
|
| 533 |
+
'\\<ggreater>' : '\U0000226b',
|
| 534 |
+
'\\<lesssim>' : '\U00002272',
|
| 535 |
+
'\\<greatersim>' : '\U00002273',
|
| 536 |
+
'\\<lessapprox>' : '\U00002a85',
|
| 537 |
+
'\\<greaterapprox>' : '\U00002a86',
|
| 538 |
+
'\\<in>' : '\U00002208',
|
| 539 |
+
'\\<notin>' : '\U00002209',
|
| 540 |
+
'\\<subset>' : '\U00002282',
|
| 541 |
+
'\\<supset>' : '\U00002283',
|
| 542 |
+
'\\<subseteq>' : '\U00002286',
|
| 543 |
+
'\\<supseteq>' : '\U00002287',
|
| 544 |
+
'\\<sqsubset>' : '\U0000228f',
|
| 545 |
+
'\\<sqsupset>' : '\U00002290',
|
| 546 |
+
'\\<sqsubseteq>' : '\U00002291',
|
| 547 |
+
'\\<sqsupseteq>' : '\U00002292',
|
| 548 |
+
'\\<inter>' : '\U00002229',
|
| 549 |
+
'\\<Inter>' : '\U000022c2',
|
| 550 |
+
'\\<union>' : '\U0000222a',
|
| 551 |
+
'\\<Union>' : '\U000022c3',
|
| 552 |
+
'\\<squnion>' : '\U00002294',
|
| 553 |
+
'\\<Squnion>' : '\U00002a06',
|
| 554 |
+
'\\<sqinter>' : '\U00002293',
|
| 555 |
+
'\\<Sqinter>' : '\U00002a05',
|
| 556 |
+
'\\<setminus>' : '\U00002216',
|
| 557 |
+
'\\<propto>' : '\U0000221d',
|
| 558 |
+
'\\<uplus>' : '\U0000228e',
|
| 559 |
+
'\\<Uplus>' : '\U00002a04',
|
| 560 |
+
'\\<noteq>' : '\U00002260',
|
| 561 |
+
'\\<sim>' : '\U0000223c',
|
| 562 |
+
'\\<doteq>' : '\U00002250',
|
| 563 |
+
'\\<simeq>' : '\U00002243',
|
| 564 |
+
'\\<approx>' : '\U00002248',
|
| 565 |
+
'\\<asymp>' : '\U0000224d',
|
| 566 |
+
'\\<cong>' : '\U00002245',
|
| 567 |
+
'\\<smile>' : '\U00002323',
|
| 568 |
+
'\\<equiv>' : '\U00002261',
|
| 569 |
+
'\\<frown>' : '\U00002322',
|
| 570 |
+
'\\<Join>' : '\U000022c8',
|
| 571 |
+
'\\<bowtie>' : '\U00002a1d',
|
| 572 |
+
'\\<prec>' : '\U0000227a',
|
| 573 |
+
'\\<succ>' : '\U0000227b',
|
| 574 |
+
'\\<preceq>' : '\U0000227c',
|
| 575 |
+
'\\<succeq>' : '\U0000227d',
|
| 576 |
+
'\\<parallel>' : '\U00002225',
|
| 577 |
+
'\\<bar>' : '\U000000a6',
|
| 578 |
+
'\\<plusminus>' : '\U000000b1',
|
| 579 |
+
'\\<minusplus>' : '\U00002213',
|
| 580 |
+
'\\<times>' : '\U000000d7',
|
| 581 |
+
'\\<div>' : '\U000000f7',
|
| 582 |
+
'\\<cdot>' : '\U000022c5',
|
| 583 |
+
'\\<star>' : '\U000022c6',
|
| 584 |
+
'\\<bullet>' : '\U00002219',
|
| 585 |
+
'\\<circ>' : '\U00002218',
|
| 586 |
+
'\\<dagger>' : '\U00002020',
|
| 587 |
+
'\\<ddagger>' : '\U00002021',
|
| 588 |
+
'\\<lhd>' : '\U000022b2',
|
| 589 |
+
'\\<rhd>' : '\U000022b3',
|
| 590 |
+
'\\<unlhd>' : '\U000022b4',
|
| 591 |
+
'\\<unrhd>' : '\U000022b5',
|
| 592 |
+
'\\<triangleleft>' : '\U000025c3',
|
| 593 |
+
'\\<triangleright>' : '\U000025b9',
|
| 594 |
+
'\\<triangle>' : '\U000025b3',
|
| 595 |
+
'\\<triangleq>' : '\U0000225c',
|
| 596 |
+
'\\<oplus>' : '\U00002295',
|
| 597 |
+
'\\<Oplus>' : '\U00002a01',
|
| 598 |
+
'\\<otimes>' : '\U00002297',
|
| 599 |
+
'\\<Otimes>' : '\U00002a02',
|
| 600 |
+
'\\<odot>' : '\U00002299',
|
| 601 |
+
'\\<Odot>' : '\U00002a00',
|
| 602 |
+
'\\<ominus>' : '\U00002296',
|
| 603 |
+
'\\<oslash>' : '\U00002298',
|
| 604 |
+
'\\<dots>' : '\U00002026',
|
| 605 |
+
'\\<cdots>' : '\U000022ef',
|
| 606 |
+
'\\<Sum>' : '\U00002211',
|
| 607 |
+
'\\<Prod>' : '\U0000220f',
|
| 608 |
+
'\\<Coprod>' : '\U00002210',
|
| 609 |
+
'\\<infinity>' : '\U0000221e',
|
| 610 |
+
'\\<integral>' : '\U0000222b',
|
| 611 |
+
'\\<ointegral>' : '\U0000222e',
|
| 612 |
+
'\\<clubsuit>' : '\U00002663',
|
| 613 |
+
'\\<diamondsuit>' : '\U00002662',
|
| 614 |
+
'\\<heartsuit>' : '\U00002661',
|
| 615 |
+
'\\<spadesuit>' : '\U00002660',
|
| 616 |
+
'\\<aleph>' : '\U00002135',
|
| 617 |
+
'\\<emptyset>' : '\U00002205',
|
| 618 |
+
'\\<nabla>' : '\U00002207',
|
| 619 |
+
'\\<partial>' : '\U00002202',
|
| 620 |
+
'\\<flat>' : '\U0000266d',
|
| 621 |
+
'\\<natural>' : '\U0000266e',
|
| 622 |
+
'\\<sharp>' : '\U0000266f',
|
| 623 |
+
'\\<angle>' : '\U00002220',
|
| 624 |
+
'\\<copyright>' : '\U000000a9',
|
| 625 |
+
'\\<registered>' : '\U000000ae',
|
| 626 |
+
'\\<hyphen>' : '\U000000ad',
|
| 627 |
+
'\\<inverse>' : '\U000000af',
|
| 628 |
+
'\\<onequarter>' : '\U000000bc',
|
| 629 |
+
'\\<onehalf>' : '\U000000bd',
|
| 630 |
+
'\\<threequarters>' : '\U000000be',
|
| 631 |
+
'\\<ordfeminine>' : '\U000000aa',
|
| 632 |
+
'\\<ordmasculine>' : '\U000000ba',
|
| 633 |
+
'\\<section>' : '\U000000a7',
|
| 634 |
+
'\\<paragraph>' : '\U000000b6',
|
| 635 |
+
'\\<exclamdown>' : '\U000000a1',
|
| 636 |
+
'\\<questiondown>' : '\U000000bf',
|
| 637 |
+
'\\<euro>' : '\U000020ac',
|
| 638 |
+
'\\<pounds>' : '\U000000a3',
|
| 639 |
+
'\\<yen>' : '\U000000a5',
|
| 640 |
+
'\\<cent>' : '\U000000a2',
|
| 641 |
+
'\\<currency>' : '\U000000a4',
|
| 642 |
+
'\\<degree>' : '\U000000b0',
|
| 643 |
+
'\\<amalg>' : '\U00002a3f',
|
| 644 |
+
'\\<mho>' : '\U00002127',
|
| 645 |
+
'\\<lozenge>' : '\U000025ca',
|
| 646 |
+
'\\<wp>' : '\U00002118',
|
| 647 |
+
'\\<wrong>' : '\U00002240',
|
| 648 |
+
'\\<struct>' : '\U000022c4',
|
| 649 |
+
'\\<acute>' : '\U000000b4',
|
| 650 |
+
'\\<index>' : '\U00000131',
|
| 651 |
+
'\\<dieresis>' : '\U000000a8',
|
| 652 |
+
'\\<cedilla>' : '\U000000b8',
|
| 653 |
+
'\\<hungarumlaut>' : '\U000002dd',
|
| 654 |
+
'\\<some>' : '\U000003f5',
|
| 655 |
+
'\\<newline>' : '\U000023ce',
|
| 656 |
+
'\\<open>' : '\U00002039',
|
| 657 |
+
'\\<close>' : '\U0000203a',
|
| 658 |
+
'\\<here>' : '\U00002302',
|
| 659 |
+
'\\<^sub>' : '\U000021e9',
|
| 660 |
+
'\\<^sup>' : '\U000021e7',
|
| 661 |
+
'\\<^bold>' : '\U00002759',
|
| 662 |
+
'\\<^bsub>' : '\U000021d8',
|
| 663 |
+
'\\<^esub>' : '\U000021d9',
|
| 664 |
+
'\\<^bsup>' : '\U000021d7',
|
| 665 |
+
'\\<^esup>' : '\U000021d6',
|
| 666 |
+
}
|
| 667 |
+
|
| 668 |
+
lang_map = {'isabelle' : isabelle_symbols, 'latex' : latex_symbols}
|
| 669 |
+
|
| 670 |
+
def __init__(self, **options):
|
| 671 |
+
Filter.__init__(self, **options)
|
| 672 |
+
lang = get_choice_opt(options, 'lang',
|
| 673 |
+
['isabelle', 'latex'], 'isabelle')
|
| 674 |
+
self.symbols = self.lang_map[lang]
|
| 675 |
+
|
| 676 |
+
def filter(self, lexer, stream):
|
| 677 |
+
for ttype, value in stream:
|
| 678 |
+
if value in self.symbols:
|
| 679 |
+
yield ttype, self.symbols[value]
|
| 680 |
+
else:
|
| 681 |
+
yield ttype, value
|
| 682 |
+
|
| 683 |
+
|
| 684 |
+
class KeywordCaseFilter(Filter):
|
| 685 |
+
"""Convert keywords to lowercase or uppercase or capitalize them, which
|
| 686 |
+
means first letter uppercase, rest lowercase.
|
| 687 |
+
|
| 688 |
+
This can be useful e.g. if you highlight Pascal code and want to adapt the
|
| 689 |
+
code to your styleguide.
|
| 690 |
+
|
| 691 |
+
Options accepted:
|
| 692 |
+
|
| 693 |
+
`case` : string
|
| 694 |
+
The casing to convert keywords to. Must be one of ``'lower'``,
|
| 695 |
+
``'upper'`` or ``'capitalize'``. The default is ``'lower'``.
|
| 696 |
+
"""
|
| 697 |
+
|
| 698 |
+
def __init__(self, **options):
|
| 699 |
+
Filter.__init__(self, **options)
|
| 700 |
+
case = get_choice_opt(options, 'case',
|
| 701 |
+
['lower', 'upper', 'capitalize'], 'lower')
|
| 702 |
+
self.convert = getattr(str, case)
|
| 703 |
+
|
| 704 |
+
def filter(self, lexer, stream):
|
| 705 |
+
for ttype, value in stream:
|
| 706 |
+
if ttype in Keyword:
|
| 707 |
+
yield ttype, self.convert(value)
|
| 708 |
+
else:
|
| 709 |
+
yield ttype, value
|
| 710 |
+
|
| 711 |
+
|
| 712 |
+
class NameHighlightFilter(Filter):
|
| 713 |
+
"""Highlight a normal Name (and Name.*) token with a different token type.
|
| 714 |
+
|
| 715 |
+
Example::
|
| 716 |
+
|
| 717 |
+
filter = NameHighlightFilter(
|
| 718 |
+
names=['foo', 'bar', 'baz'],
|
| 719 |
+
tokentype=Name.Function,
|
| 720 |
+
)
|
| 721 |
+
|
| 722 |
+
This would highlight the names "foo", "bar" and "baz"
|
| 723 |
+
as functions. `Name.Function` is the default token type.
|
| 724 |
+
|
| 725 |
+
Options accepted:
|
| 726 |
+
|
| 727 |
+
`names` : list of strings
|
| 728 |
+
A list of names that should be given the different token type.
|
| 729 |
+
There is no default.
|
| 730 |
+
`tokentype` : TokenType or string
|
| 731 |
+
A token type or a string containing a token type name that is
|
| 732 |
+
used for highlighting the strings in `names`. The default is
|
| 733 |
+
`Name.Function`.
|
| 734 |
+
"""
|
| 735 |
+
|
| 736 |
+
def __init__(self, **options):
|
| 737 |
+
Filter.__init__(self, **options)
|
| 738 |
+
self.names = set(get_list_opt(options, 'names', []))
|
| 739 |
+
tokentype = options.get('tokentype')
|
| 740 |
+
if tokentype:
|
| 741 |
+
self.tokentype = string_to_tokentype(tokentype)
|
| 742 |
+
else:
|
| 743 |
+
self.tokentype = Name.Function
|
| 744 |
+
|
| 745 |
+
def filter(self, lexer, stream):
|
| 746 |
+
for ttype, value in stream:
|
| 747 |
+
if ttype in Name and value in self.names:
|
| 748 |
+
yield self.tokentype, value
|
| 749 |
+
else:
|
| 750 |
+
yield ttype, value
|
| 751 |
+
|
| 752 |
+
|
| 753 |
+
class ErrorToken(Exception):
|
| 754 |
+
pass
|
| 755 |
+
|
| 756 |
+
|
| 757 |
+
class RaiseOnErrorTokenFilter(Filter):
|
| 758 |
+
"""Raise an exception when the lexer generates an error token.
|
| 759 |
+
|
| 760 |
+
Options accepted:
|
| 761 |
+
|
| 762 |
+
`excclass` : Exception class
|
| 763 |
+
The exception class to raise.
|
| 764 |
+
The default is `pygments.filters.ErrorToken`.
|
| 765 |
+
|
| 766 |
+
.. versionadded:: 0.8
|
| 767 |
+
"""
|
| 768 |
+
|
| 769 |
+
def __init__(self, **options):
|
| 770 |
+
Filter.__init__(self, **options)
|
| 771 |
+
self.exception = options.get('excclass', ErrorToken)
|
| 772 |
+
try:
|
| 773 |
+
# issubclass() will raise TypeError if first argument is not a class
|
| 774 |
+
if not issubclass(self.exception, Exception):
|
| 775 |
+
raise TypeError
|
| 776 |
+
except TypeError:
|
| 777 |
+
raise OptionError('excclass option is not an exception class')
|
| 778 |
+
|
| 779 |
+
def filter(self, lexer, stream):
|
| 780 |
+
for ttype, value in stream:
|
| 781 |
+
if ttype is Error:
|
| 782 |
+
raise self.exception(value)
|
| 783 |
+
yield ttype, value
|
| 784 |
+
|
| 785 |
+
|
| 786 |
+
class VisibleWhitespaceFilter(Filter):
|
| 787 |
+
"""Convert tabs, newlines and/or spaces to visible characters.
|
| 788 |
+
|
| 789 |
+
Options accepted:
|
| 790 |
+
|
| 791 |
+
`spaces` : string or bool
|
| 792 |
+
If this is a one-character string, spaces will be replaces by this string.
|
| 793 |
+
If it is another true value, spaces will be replaced by ``·`` (unicode
|
| 794 |
+
MIDDLE DOT). If it is a false value, spaces will not be replaced. The
|
| 795 |
+
default is ``False``.
|
| 796 |
+
`tabs` : string or bool
|
| 797 |
+
The same as for `spaces`, but the default replacement character is ``»``
|
| 798 |
+
(unicode RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK). The default value
|
| 799 |
+
is ``False``. Note: this will not work if the `tabsize` option for the
|
| 800 |
+
lexer is nonzero, as tabs will already have been expanded then.
|
| 801 |
+
`tabsize` : int
|
| 802 |
+
If tabs are to be replaced by this filter (see the `tabs` option), this
|
| 803 |
+
is the total number of characters that a tab should be expanded to.
|
| 804 |
+
The default is ``8``.
|
| 805 |
+
`newlines` : string or bool
|
| 806 |
+
The same as for `spaces`, but the default replacement character is ``¶``
|
| 807 |
+
(unicode PILCROW SIGN). The default value is ``False``.
|
| 808 |
+
`wstokentype` : bool
|
| 809 |
+
If true, give whitespace the special `Whitespace` token type. This allows
|
| 810 |
+
styling the visible whitespace differently (e.g. greyed out), but it can
|
| 811 |
+
disrupt background colors. The default is ``True``.
|
| 812 |
+
|
| 813 |
+
.. versionadded:: 0.8
|
| 814 |
+
"""
|
| 815 |
+
|
| 816 |
+
def __init__(self, **options):
|
| 817 |
+
Filter.__init__(self, **options)
|
| 818 |
+
for name, default in [('spaces', '·'),
|
| 819 |
+
('tabs', '»'),
|
| 820 |
+
('newlines', '¶')]:
|
| 821 |
+
opt = options.get(name, False)
|
| 822 |
+
if isinstance(opt, str) and len(opt) == 1:
|
| 823 |
+
setattr(self, name, opt)
|
| 824 |
+
else:
|
| 825 |
+
setattr(self, name, (opt and default or ''))
|
| 826 |
+
tabsize = get_int_opt(options, 'tabsize', 8)
|
| 827 |
+
if self.tabs:
|
| 828 |
+
self.tabs += ' ' * (tabsize - 1)
|
| 829 |
+
if self.newlines:
|
| 830 |
+
self.newlines += '\n'
|
| 831 |
+
self.wstt = get_bool_opt(options, 'wstokentype', True)
|
| 832 |
+
|
| 833 |
+
def filter(self, lexer, stream):
|
| 834 |
+
if self.wstt:
|
| 835 |
+
spaces = self.spaces or ' '
|
| 836 |
+
tabs = self.tabs or '\t'
|
| 837 |
+
newlines = self.newlines or '\n'
|
| 838 |
+
regex = re.compile(r'\s')
|
| 839 |
+
|
| 840 |
+
def replacefunc(wschar):
|
| 841 |
+
if wschar == ' ':
|
| 842 |
+
return spaces
|
| 843 |
+
elif wschar == '\t':
|
| 844 |
+
return tabs
|
| 845 |
+
elif wschar == '\n':
|
| 846 |
+
return newlines
|
| 847 |
+
return wschar
|
| 848 |
+
|
| 849 |
+
for ttype, value in stream:
|
| 850 |
+
yield from _replace_special(ttype, value, regex, Whitespace,
|
| 851 |
+
replacefunc)
|
| 852 |
+
else:
|
| 853 |
+
spaces, tabs, newlines = self.spaces, self.tabs, self.newlines
|
| 854 |
+
# simpler processing
|
| 855 |
+
for ttype, value in stream:
|
| 856 |
+
if spaces:
|
| 857 |
+
value = value.replace(' ', spaces)
|
| 858 |
+
if tabs:
|
| 859 |
+
value = value.replace('\t', tabs)
|
| 860 |
+
if newlines:
|
| 861 |
+
value = value.replace('\n', newlines)
|
| 862 |
+
yield ttype, value
|
| 863 |
+
|
| 864 |
+
|
| 865 |
+
class GobbleFilter(Filter):
|
| 866 |
+
"""Gobbles source code lines (eats initial characters).
|
| 867 |
+
|
| 868 |
+
This filter drops the first ``n`` characters off every line of code. This
|
| 869 |
+
may be useful when the source code fed to the lexer is indented by a fixed
|
| 870 |
+
amount of space that isn't desired in the output.
|
| 871 |
+
|
| 872 |
+
Options accepted:
|
| 873 |
+
|
| 874 |
+
`n` : int
|
| 875 |
+
The number of characters to gobble.
|
| 876 |
+
|
| 877 |
+
.. versionadded:: 1.2
|
| 878 |
+
"""
|
| 879 |
+
def __init__(self, **options):
|
| 880 |
+
Filter.__init__(self, **options)
|
| 881 |
+
self.n = get_int_opt(options, 'n', 0)
|
| 882 |
+
|
| 883 |
+
def gobble(self, value, left):
|
| 884 |
+
if left < len(value):
|
| 885 |
+
return value[left:], 0
|
| 886 |
+
else:
|
| 887 |
+
return '', left - len(value)
|
| 888 |
+
|
| 889 |
+
def filter(self, lexer, stream):
|
| 890 |
+
n = self.n
|
| 891 |
+
left = n # How many characters left to gobble.
|
| 892 |
+
for ttype, value in stream:
|
| 893 |
+
# Remove ``left`` tokens from first line, ``n`` from all others.
|
| 894 |
+
parts = value.split('\n')
|
| 895 |
+
(parts[0], left) = self.gobble(parts[0], left)
|
| 896 |
+
for i in range(1, len(parts)):
|
| 897 |
+
(parts[i], left) = self.gobble(parts[i], n)
|
| 898 |
+
value = '\n'.join(parts)
|
| 899 |
+
|
| 900 |
+
if value != '':
|
| 901 |
+
yield ttype, value
|
| 902 |
+
|
| 903 |
+
|
| 904 |
+
class TokenMergeFilter(Filter):
|
| 905 |
+
"""Merges consecutive tokens with the same token type in the output
|
| 906 |
+
stream of a lexer.
|
| 907 |
+
|
| 908 |
+
.. versionadded:: 1.2
|
| 909 |
+
"""
|
| 910 |
+
def __init__(self, **options):
|
| 911 |
+
Filter.__init__(self, **options)
|
| 912 |
+
|
| 913 |
+
def filter(self, lexer, stream):
|
| 914 |
+
current_type = None
|
| 915 |
+
current_value = None
|
| 916 |
+
for ttype, value in stream:
|
| 917 |
+
if ttype is current_type:
|
| 918 |
+
current_value += value
|
| 919 |
+
else:
|
| 920 |
+
if current_type is not None:
|
| 921 |
+
yield current_type, current_value
|
| 922 |
+
current_type = ttype
|
| 923 |
+
current_value = value
|
| 924 |
+
if current_type is not None:
|
| 925 |
+
yield current_type, current_value
|
| 926 |
+
|
| 927 |
+
|
| 928 |
+
FILTERS = {
|
| 929 |
+
'codetagify': CodeTagFilter,
|
| 930 |
+
'keywordcase': KeywordCaseFilter,
|
| 931 |
+
'highlight': NameHighlightFilter,
|
| 932 |
+
'raiseonerror': RaiseOnErrorTokenFilter,
|
| 933 |
+
'whitespace': VisibleWhitespaceFilter,
|
| 934 |
+
'gobble': GobbleFilter,
|
| 935 |
+
'tokenmerge': TokenMergeFilter,
|
| 936 |
+
'symbols': SymbolFilter,
|
| 937 |
+
}
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file (29.6 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Pygments formatters.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import re
|
| 12 |
+
import sys
|
| 13 |
+
import types
|
| 14 |
+
import fnmatch
|
| 15 |
+
from os.path import basename
|
| 16 |
+
|
| 17 |
+
from pip._vendor.pygments.formatters._mapping import FORMATTERS
|
| 18 |
+
from pip._vendor.pygments.plugin import find_plugin_formatters
|
| 19 |
+
from pip._vendor.pygments.util import ClassNotFound
|
| 20 |
+
|
| 21 |
+
__all__ = ['get_formatter_by_name', 'get_formatter_for_filename',
|
| 22 |
+
'get_all_formatters', 'load_formatter_from_file'] + list(FORMATTERS)
|
| 23 |
+
|
| 24 |
+
_formatter_cache = {} # classes by name
|
| 25 |
+
_pattern_cache = {}
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def _fn_matches(fn, glob):
|
| 29 |
+
"""Return whether the supplied file name fn matches pattern filename."""
|
| 30 |
+
if glob not in _pattern_cache:
|
| 31 |
+
pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob))
|
| 32 |
+
return pattern.match(fn)
|
| 33 |
+
return _pattern_cache[glob].match(fn)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def _load_formatters(module_name):
|
| 37 |
+
"""Load a formatter (and all others in the module too)."""
|
| 38 |
+
mod = __import__(module_name, None, None, ['__all__'])
|
| 39 |
+
for formatter_name in mod.__all__:
|
| 40 |
+
cls = getattr(mod, formatter_name)
|
| 41 |
+
_formatter_cache[cls.name] = cls
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def get_all_formatters():
|
| 45 |
+
"""Return a generator for all formatter classes."""
|
| 46 |
+
# NB: this returns formatter classes, not info like get_all_lexers().
|
| 47 |
+
for info in FORMATTERS.values():
|
| 48 |
+
if info[1] not in _formatter_cache:
|
| 49 |
+
_load_formatters(info[0])
|
| 50 |
+
yield _formatter_cache[info[1]]
|
| 51 |
+
for _, formatter in find_plugin_formatters():
|
| 52 |
+
yield formatter
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def find_formatter_class(alias):
|
| 56 |
+
"""Lookup a formatter by alias.
|
| 57 |
+
|
| 58 |
+
Returns None if not found.
|
| 59 |
+
"""
|
| 60 |
+
for module_name, name, aliases, _, _ in FORMATTERS.values():
|
| 61 |
+
if alias in aliases:
|
| 62 |
+
if name not in _formatter_cache:
|
| 63 |
+
_load_formatters(module_name)
|
| 64 |
+
return _formatter_cache[name]
|
| 65 |
+
for _, cls in find_plugin_formatters():
|
| 66 |
+
if alias in cls.aliases:
|
| 67 |
+
return cls
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
def get_formatter_by_name(_alias, **options):
|
| 71 |
+
"""Lookup and instantiate a formatter by alias.
|
| 72 |
+
|
| 73 |
+
Raises ClassNotFound if not found.
|
| 74 |
+
"""
|
| 75 |
+
cls = find_formatter_class(_alias)
|
| 76 |
+
if cls is None:
|
| 77 |
+
raise ClassNotFound("no formatter found for name %r" % _alias)
|
| 78 |
+
return cls(**options)
|
| 79 |
+
|
| 80 |
+
|
| 81 |
+
def load_formatter_from_file(filename, formattername="CustomFormatter",
|
| 82 |
+
**options):
|
| 83 |
+
"""Load a formatter from a file.
|
| 84 |
+
|
| 85 |
+
This method expects a file located relative to the current working
|
| 86 |
+
directory, which contains a class named CustomFormatter. By default,
|
| 87 |
+
it expects the Formatter to be named CustomFormatter; you can specify
|
| 88 |
+
your own class name as the second argument to this function.
|
| 89 |
+
|
| 90 |
+
Users should be very careful with the input, because this method
|
| 91 |
+
is equivalent to running eval on the input file.
|
| 92 |
+
|
| 93 |
+
Raises ClassNotFound if there are any problems importing the Formatter.
|
| 94 |
+
|
| 95 |
+
.. versionadded:: 2.2
|
| 96 |
+
"""
|
| 97 |
+
try:
|
| 98 |
+
# This empty dict will contain the namespace for the exec'd file
|
| 99 |
+
custom_namespace = {}
|
| 100 |
+
with open(filename, 'rb') as f:
|
| 101 |
+
exec(f.read(), custom_namespace)
|
| 102 |
+
# Retrieve the class `formattername` from that namespace
|
| 103 |
+
if formattername not in custom_namespace:
|
| 104 |
+
raise ClassNotFound('no valid %s class found in %s' %
|
| 105 |
+
(formattername, filename))
|
| 106 |
+
formatter_class = custom_namespace[formattername]
|
| 107 |
+
# And finally instantiate it with the options
|
| 108 |
+
return formatter_class(**options)
|
| 109 |
+
except OSError as err:
|
| 110 |
+
raise ClassNotFound('cannot read %s: %s' % (filename, err))
|
| 111 |
+
except ClassNotFound:
|
| 112 |
+
raise
|
| 113 |
+
except Exception as err:
|
| 114 |
+
raise ClassNotFound('error when loading custom formatter: %s' % err)
|
| 115 |
+
|
| 116 |
+
|
| 117 |
+
def get_formatter_for_filename(fn, **options):
|
| 118 |
+
"""Lookup and instantiate a formatter by filename pattern.
|
| 119 |
+
|
| 120 |
+
Raises ClassNotFound if not found.
|
| 121 |
+
"""
|
| 122 |
+
fn = basename(fn)
|
| 123 |
+
for modname, name, _, filenames, _ in FORMATTERS.values():
|
| 124 |
+
for filename in filenames:
|
| 125 |
+
if _fn_matches(fn, filename):
|
| 126 |
+
if name not in _formatter_cache:
|
| 127 |
+
_load_formatters(modname)
|
| 128 |
+
return _formatter_cache[name](**options)
|
| 129 |
+
for cls in find_plugin_formatters():
|
| 130 |
+
for filename in cls.filenames:
|
| 131 |
+
if _fn_matches(fn, filename):
|
| 132 |
+
return cls(**options)
|
| 133 |
+
raise ClassNotFound("no formatter found for file name %r" % fn)
|
| 134 |
+
|
| 135 |
+
|
| 136 |
+
class _automodule(types.ModuleType):
|
| 137 |
+
"""Automatically import formatters."""
|
| 138 |
+
|
| 139 |
+
def __getattr__(self, name):
|
| 140 |
+
info = FORMATTERS.get(name)
|
| 141 |
+
if info:
|
| 142 |
+
_load_formatters(info[0])
|
| 143 |
+
cls = _formatter_cache[info[1]]
|
| 144 |
+
setattr(self, name, cls)
|
| 145 |
+
return cls
|
| 146 |
+
raise AttributeError(name)
|
| 147 |
+
|
| 148 |
+
|
| 149 |
+
oldmod = sys.modules[__name__]
|
| 150 |
+
newmod = _automodule(__name__)
|
| 151 |
+
newmod.__dict__.update(oldmod.__dict__)
|
| 152 |
+
sys.modules[__name__] = newmod
|
| 153 |
+
del newmod.newmod, newmod.oldmod, newmod.sys, newmod.types
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file (4.77 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc
ADDED
|
Binary file (5.63 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc
ADDED
|
Binary file (3.18 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc
ADDED
|
Binary file (4.46 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc
ADDED
|
Binary file (29.2 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc
ADDED
|
Binary file (17.6 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc
ADDED
|
Binary file (4.69 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc
ADDED
|
Binary file (13.6 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc
ADDED
|
Binary file (4.9 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc
ADDED
|
Binary file (2.2 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc
ADDED
|
Binary file (4.23 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc
ADDED
|
Binary file (6.43 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc
ADDED
|
Binary file (4.1 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc
ADDED
|
Binary file (9.35 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters._mapping
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter mapping definitions. This file is generated by itself. Everytime
|
| 6 |
+
you change something on a builtin formatter definition, run this script from
|
| 7 |
+
the formatters folder to update it.
|
| 8 |
+
|
| 9 |
+
Do not alter the FORMATTERS dictionary by hand.
|
| 10 |
+
|
| 11 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 12 |
+
:license: BSD, see LICENSE for details.
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
FORMATTERS = {
|
| 16 |
+
'BBCodeFormatter': ('pygments.formatters.bbcode', 'BBCode', ('bbcode', 'bb'), (), 'Format tokens with BBcodes. These formatting codes are used by many bulletin boards, so you can highlight your sourcecode with pygments before posting it there.'),
|
| 17 |
+
'BmpImageFormatter': ('pygments.formatters.img', 'img_bmp', ('bmp', 'bitmap'), ('*.bmp',), 'Create a bitmap image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
| 18 |
+
'GifImageFormatter': ('pygments.formatters.img', 'img_gif', ('gif',), ('*.gif',), 'Create a GIF image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
| 19 |
+
'GroffFormatter': ('pygments.formatters.groff', 'groff', ('groff', 'troff', 'roff'), (), 'Format tokens with groff escapes to change their color and font style.'),
|
| 20 |
+
'HtmlFormatter': ('pygments.formatters.html', 'HTML', ('html',), ('*.html', '*.htm'), "Format tokens as HTML 4 ``<span>`` tags within a ``<pre>`` tag, wrapped in a ``<div>`` tag. The ``<div>``'s CSS class can be set by the `cssclass` option."),
|
| 21 |
+
'IRCFormatter': ('pygments.formatters.irc', 'IRC', ('irc', 'IRC'), (), 'Format tokens with IRC color sequences'),
|
| 22 |
+
'ImageFormatter': ('pygments.formatters.img', 'img', ('img', 'IMG', 'png'), ('*.png',), 'Create a PNG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
| 23 |
+
'JpgImageFormatter': ('pygments.formatters.img', 'img_jpg', ('jpg', 'jpeg'), ('*.jpg',), 'Create a JPEG image from source code. This uses the Python Imaging Library to generate a pixmap from the source code.'),
|
| 24 |
+
'LatexFormatter': ('pygments.formatters.latex', 'LaTeX', ('latex', 'tex'), ('*.tex',), 'Format tokens as LaTeX code. This needs the `fancyvrb` and `color` standard packages.'),
|
| 25 |
+
'NullFormatter': ('pygments.formatters.other', 'Text only', ('text', 'null'), ('*.txt',), 'Output the text unchanged without any formatting.'),
|
| 26 |
+
'PangoMarkupFormatter': ('pygments.formatters.pangomarkup', 'Pango Markup', ('pango', 'pangomarkup'), (), 'Format tokens as Pango Markup code. It can then be rendered to an SVG.'),
|
| 27 |
+
'RawTokenFormatter': ('pygments.formatters.other', 'Raw tokens', ('raw', 'tokens'), ('*.raw',), 'Format tokens as a raw representation for storing token streams.'),
|
| 28 |
+
'RtfFormatter': ('pygments.formatters.rtf', 'RTF', ('rtf',), ('*.rtf',), 'Format tokens as RTF markup. This formatter automatically outputs full RTF documents with color information and other useful stuff. Perfect for Copy and Paste into Microsoft(R) Word(R) documents.'),
|
| 29 |
+
'SvgFormatter': ('pygments.formatters.svg', 'SVG', ('svg',), ('*.svg',), 'Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ``<text>`` element with explicit ``x`` and ``y`` coordinates containing ``<tspan>`` elements with the individual token styles.'),
|
| 30 |
+
'Terminal256Formatter': ('pygments.formatters.terminal256', 'Terminal256', ('terminal256', 'console256', '256'), (), 'Format tokens with ANSI color sequences, for output in a 256-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'),
|
| 31 |
+
'TerminalFormatter': ('pygments.formatters.terminal', 'Terminal', ('terminal', 'console'), (), 'Format tokens with ANSI color sequences, for output in a text console. Color sequences are terminated at newlines, so that paging the output works correctly.'),
|
| 32 |
+
'TerminalTrueColorFormatter': ('pygments.formatters.terminal256', 'TerminalTrueColor', ('terminal16m', 'console16m', '16m'), (), 'Format tokens with ANSI color sequences, for output in a true-color terminal or console. Like in `TerminalFormatter` color sequences are terminated at newlines, so that paging the output works correctly.'),
|
| 33 |
+
'TestcaseFormatter': ('pygments.formatters.other', 'Testcase', ('testcase',), (), 'Format tokens as appropriate for a new testcase.')
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
if __name__ == '__main__': # pragma: no cover
|
| 37 |
+
import sys
|
| 38 |
+
import os
|
| 39 |
+
|
| 40 |
+
# lookup formatters
|
| 41 |
+
found_formatters = []
|
| 42 |
+
imports = []
|
| 43 |
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
|
| 44 |
+
from pip._vendor.pygments.util import docstring_headline
|
| 45 |
+
|
| 46 |
+
for root, dirs, files in os.walk('.'):
|
| 47 |
+
for filename in files:
|
| 48 |
+
if filename.endswith('.py') and not filename.startswith('_'):
|
| 49 |
+
module_name = 'pygments.formatters%s.%s' % (
|
| 50 |
+
root[1:].replace('/', '.'), filename[:-3])
|
| 51 |
+
print(module_name)
|
| 52 |
+
module = __import__(module_name, None, None, [''])
|
| 53 |
+
for formatter_name in module.__all__:
|
| 54 |
+
formatter = getattr(module, formatter_name)
|
| 55 |
+
found_formatters.append(
|
| 56 |
+
'%r: %r' % (formatter_name,
|
| 57 |
+
(module_name,
|
| 58 |
+
formatter.name,
|
| 59 |
+
tuple(formatter.aliases),
|
| 60 |
+
tuple(formatter.filenames),
|
| 61 |
+
docstring_headline(formatter))))
|
| 62 |
+
# sort them to make the diff minimal
|
| 63 |
+
found_formatters.sort()
|
| 64 |
+
|
| 65 |
+
# extract useful sourcecode from this file
|
| 66 |
+
with open(__file__) as fp:
|
| 67 |
+
content = fp.read()
|
| 68 |
+
# replace crnl to nl for Windows.
|
| 69 |
+
#
|
| 70 |
+
# Note that, originally, contributers should keep nl of master
|
| 71 |
+
# repository, for example by using some kind of automatic
|
| 72 |
+
# management EOL, like `EolExtension
|
| 73 |
+
# <https://www.mercurial-scm.org/wiki/EolExtension>`.
|
| 74 |
+
content = content.replace("\r\n", "\n")
|
| 75 |
+
header = content[:content.find('FORMATTERS = {')]
|
| 76 |
+
footer = content[content.find("if __name__ == '__main__':"):]
|
| 77 |
+
|
| 78 |
+
# write new file
|
| 79 |
+
with open(__file__, 'w') as fp:
|
| 80 |
+
fp.write(header)
|
| 81 |
+
fp.write('FORMATTERS = {\n %s\n}\n\n' % ',\n '.join(found_formatters))
|
| 82 |
+
fp.write(footer)
|
| 83 |
+
|
| 84 |
+
print ('=== %d formatters processed.' % len(found_formatters))
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.bbcode
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
BBcode formatter.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 13 |
+
from pip._vendor.pygments.util import get_bool_opt
|
| 14 |
+
|
| 15 |
+
__all__ = ['BBCodeFormatter']
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class BBCodeFormatter(Formatter):
|
| 19 |
+
"""
|
| 20 |
+
Format tokens with BBcodes. These formatting codes are used by many
|
| 21 |
+
bulletin boards, so you can highlight your sourcecode with pygments before
|
| 22 |
+
posting it there.
|
| 23 |
+
|
| 24 |
+
This formatter has no support for background colors and borders, as there
|
| 25 |
+
are no common BBcode tags for that.
|
| 26 |
+
|
| 27 |
+
Some board systems (e.g. phpBB) don't support colors in their [code] tag,
|
| 28 |
+
so you can't use the highlighting together with that tag.
|
| 29 |
+
Text in a [code] tag usually is shown with a monospace font (which this
|
| 30 |
+
formatter can do with the ``monofont`` option) and no spaces (which you
|
| 31 |
+
need for indentation) are removed.
|
| 32 |
+
|
| 33 |
+
Additional options accepted:
|
| 34 |
+
|
| 35 |
+
`style`
|
| 36 |
+
The style to use, can be a string or a Style subclass (default:
|
| 37 |
+
``'default'``).
|
| 38 |
+
|
| 39 |
+
`codetag`
|
| 40 |
+
If set to true, put the output into ``[code]`` tags (default:
|
| 41 |
+
``false``)
|
| 42 |
+
|
| 43 |
+
`monofont`
|
| 44 |
+
If set to true, add a tag to show the code with a monospace font
|
| 45 |
+
(default: ``false``).
|
| 46 |
+
"""
|
| 47 |
+
name = 'BBCode'
|
| 48 |
+
aliases = ['bbcode', 'bb']
|
| 49 |
+
filenames = []
|
| 50 |
+
|
| 51 |
+
def __init__(self, **options):
|
| 52 |
+
Formatter.__init__(self, **options)
|
| 53 |
+
self._code = get_bool_opt(options, 'codetag', False)
|
| 54 |
+
self._mono = get_bool_opt(options, 'monofont', False)
|
| 55 |
+
|
| 56 |
+
self.styles = {}
|
| 57 |
+
self._make_styles()
|
| 58 |
+
|
| 59 |
+
def _make_styles(self):
|
| 60 |
+
for ttype, ndef in self.style:
|
| 61 |
+
start = end = ''
|
| 62 |
+
if ndef['color']:
|
| 63 |
+
start += '[color=#%s]' % ndef['color']
|
| 64 |
+
end = '[/color]' + end
|
| 65 |
+
if ndef['bold']:
|
| 66 |
+
start += '[b]'
|
| 67 |
+
end = '[/b]' + end
|
| 68 |
+
if ndef['italic']:
|
| 69 |
+
start += '[i]'
|
| 70 |
+
end = '[/i]' + end
|
| 71 |
+
if ndef['underline']:
|
| 72 |
+
start += '[u]'
|
| 73 |
+
end = '[/u]' + end
|
| 74 |
+
# there are no common BBcodes for background-color and border
|
| 75 |
+
|
| 76 |
+
self.styles[ttype] = start, end
|
| 77 |
+
|
| 78 |
+
def format_unencoded(self, tokensource, outfile):
|
| 79 |
+
if self._code:
|
| 80 |
+
outfile.write('[code]')
|
| 81 |
+
if self._mono:
|
| 82 |
+
outfile.write('[font=monospace]')
|
| 83 |
+
|
| 84 |
+
lastval = ''
|
| 85 |
+
lasttype = None
|
| 86 |
+
|
| 87 |
+
for ttype, value in tokensource:
|
| 88 |
+
while ttype not in self.styles:
|
| 89 |
+
ttype = ttype.parent
|
| 90 |
+
if ttype == lasttype:
|
| 91 |
+
lastval += value
|
| 92 |
+
else:
|
| 93 |
+
if lastval:
|
| 94 |
+
start, end = self.styles[lasttype]
|
| 95 |
+
outfile.write(''.join((start, lastval, end)))
|
| 96 |
+
lastval = value
|
| 97 |
+
lasttype = ttype
|
| 98 |
+
|
| 99 |
+
if lastval:
|
| 100 |
+
start, end = self.styles[lasttype]
|
| 101 |
+
outfile.write(''.join((start, lastval, end)))
|
| 102 |
+
|
| 103 |
+
if self._mono:
|
| 104 |
+
outfile.write('[/font]')
|
| 105 |
+
if self._code:
|
| 106 |
+
outfile.write('[/code]')
|
| 107 |
+
if self._code or self._mono:
|
| 108 |
+
outfile.write('\n')
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.groff
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for groff output.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import math
|
| 12 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 13 |
+
from pip._vendor.pygments.util import get_bool_opt, get_int_opt
|
| 14 |
+
|
| 15 |
+
__all__ = ['GroffFormatter']
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class GroffFormatter(Formatter):
|
| 19 |
+
"""
|
| 20 |
+
Format tokens with groff escapes to change their color and font style.
|
| 21 |
+
|
| 22 |
+
.. versionadded:: 2.11
|
| 23 |
+
|
| 24 |
+
Additional options accepted:
|
| 25 |
+
|
| 26 |
+
`style`
|
| 27 |
+
The style to use, can be a string or a Style subclass (default:
|
| 28 |
+
``'default'``).
|
| 29 |
+
|
| 30 |
+
`monospaced`
|
| 31 |
+
If set to true, monospace font will be used (default: ``true``).
|
| 32 |
+
|
| 33 |
+
`linenos`
|
| 34 |
+
If set to true, print the line numbers (default: ``false``).
|
| 35 |
+
|
| 36 |
+
`wrap`
|
| 37 |
+
Wrap lines to the specified number of characters. Disabled if set to 0
|
| 38 |
+
(default: ``0``).
|
| 39 |
+
"""
|
| 40 |
+
|
| 41 |
+
name = 'groff'
|
| 42 |
+
aliases = ['groff','troff','roff']
|
| 43 |
+
filenames = []
|
| 44 |
+
|
| 45 |
+
def __init__(self, **options):
|
| 46 |
+
Formatter.__init__(self, **options)
|
| 47 |
+
|
| 48 |
+
self.monospaced = get_bool_opt(options, 'monospaced', True)
|
| 49 |
+
self.linenos = get_bool_opt(options, 'linenos', False)
|
| 50 |
+
self._lineno = 0
|
| 51 |
+
self.wrap = get_int_opt(options, 'wrap', 0)
|
| 52 |
+
self._linelen = 0
|
| 53 |
+
|
| 54 |
+
self.styles = {}
|
| 55 |
+
self._make_styles()
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
def _make_styles(self):
|
| 59 |
+
regular = '\\f[CR]' if self.monospaced else '\\f[R]'
|
| 60 |
+
bold = '\\f[CB]' if self.monospaced else '\\f[B]'
|
| 61 |
+
italic = '\\f[CI]' if self.monospaced else '\\f[I]'
|
| 62 |
+
|
| 63 |
+
for ttype, ndef in self.style:
|
| 64 |
+
start = end = ''
|
| 65 |
+
if ndef['color']:
|
| 66 |
+
start += '\\m[%s]' % ndef['color']
|
| 67 |
+
end = '\\m[]' + end
|
| 68 |
+
if ndef['bold']:
|
| 69 |
+
start += bold
|
| 70 |
+
end = regular + end
|
| 71 |
+
if ndef['italic']:
|
| 72 |
+
start += italic
|
| 73 |
+
end = regular + end
|
| 74 |
+
if ndef['bgcolor']:
|
| 75 |
+
start += '\\M[%s]' % ndef['bgcolor']
|
| 76 |
+
end = '\\M[]' + end
|
| 77 |
+
|
| 78 |
+
self.styles[ttype] = start, end
|
| 79 |
+
|
| 80 |
+
|
| 81 |
+
def _define_colors(self, outfile):
|
| 82 |
+
colors = set()
|
| 83 |
+
for _, ndef in self.style:
|
| 84 |
+
if ndef['color'] is not None:
|
| 85 |
+
colors.add(ndef['color'])
|
| 86 |
+
|
| 87 |
+
for color in colors:
|
| 88 |
+
outfile.write('.defcolor ' + color + ' rgb #' + color + '\n')
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
def _write_lineno(self, outfile):
|
| 92 |
+
self._lineno += 1
|
| 93 |
+
outfile.write("%s% 4d " % (self._lineno != 1 and '\n' or '', self._lineno))
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
def _wrap_line(self, line):
|
| 97 |
+
length = len(line.rstrip('\n'))
|
| 98 |
+
space = ' ' if self.linenos else ''
|
| 99 |
+
newline = ''
|
| 100 |
+
|
| 101 |
+
if length > self.wrap:
|
| 102 |
+
for i in range(0, math.floor(length / self.wrap)):
|
| 103 |
+
chunk = line[i*self.wrap:i*self.wrap+self.wrap]
|
| 104 |
+
newline += (chunk + '\n' + space)
|
| 105 |
+
remainder = length % self.wrap
|
| 106 |
+
if remainder > 0:
|
| 107 |
+
newline += line[-remainder-1:]
|
| 108 |
+
self._linelen = remainder
|
| 109 |
+
elif self._linelen + length > self.wrap:
|
| 110 |
+
newline = ('\n' + space) + line
|
| 111 |
+
self._linelen = length
|
| 112 |
+
else:
|
| 113 |
+
newline = line
|
| 114 |
+
self._linelen += length
|
| 115 |
+
|
| 116 |
+
return newline
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
def _escape_chars(self, text):
|
| 120 |
+
text = text.replace('\\', '\\[u005C]'). \
|
| 121 |
+
replace('.', '\\[char46]'). \
|
| 122 |
+
replace('\'', '\\[u0027]'). \
|
| 123 |
+
replace('`', '\\[u0060]'). \
|
| 124 |
+
replace('~', '\\[u007E]')
|
| 125 |
+
copy = text
|
| 126 |
+
|
| 127 |
+
for char in copy:
|
| 128 |
+
if len(char) != len(char.encode()):
|
| 129 |
+
uni = char.encode('unicode_escape') \
|
| 130 |
+
.decode()[1:] \
|
| 131 |
+
.replace('x', 'u00') \
|
| 132 |
+
.upper()
|
| 133 |
+
text = text.replace(char, '\\[u' + uni[1:] + ']')
|
| 134 |
+
|
| 135 |
+
return text
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
def format_unencoded(self, tokensource, outfile):
|
| 139 |
+
self._define_colors(outfile)
|
| 140 |
+
|
| 141 |
+
outfile.write('.nf\n\\f[CR]\n')
|
| 142 |
+
|
| 143 |
+
if self.linenos:
|
| 144 |
+
self._write_lineno(outfile)
|
| 145 |
+
|
| 146 |
+
for ttype, value in tokensource:
|
| 147 |
+
start, end = self.styles[ttype]
|
| 148 |
+
|
| 149 |
+
for line in value.splitlines(True):
|
| 150 |
+
if self.wrap > 0:
|
| 151 |
+
line = self._wrap_line(line)
|
| 152 |
+
|
| 153 |
+
if start and end:
|
| 154 |
+
text = self._escape_chars(line.rstrip('\n'))
|
| 155 |
+
if text != '':
|
| 156 |
+
outfile.write(''.join((start, text, end)))
|
| 157 |
+
else:
|
| 158 |
+
outfile.write(self._escape_chars(line.rstrip('\n')))
|
| 159 |
+
|
| 160 |
+
if line.endswith('\n'):
|
| 161 |
+
if self.linenos:
|
| 162 |
+
self._write_lineno(outfile)
|
| 163 |
+
self._linelen = 0
|
| 164 |
+
else:
|
| 165 |
+
outfile.write('\n')
|
| 166 |
+
self._linelen = 0
|
| 167 |
+
|
| 168 |
+
outfile.write('\n.fi')
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py
ADDED
|
@@ -0,0 +1,983 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.html
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for HTML output.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import functools
|
| 12 |
+
import os
|
| 13 |
+
import sys
|
| 14 |
+
import os.path
|
| 15 |
+
from io import StringIO
|
| 16 |
+
|
| 17 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 18 |
+
from pip._vendor.pygments.token import Token, Text, STANDARD_TYPES
|
| 19 |
+
from pip._vendor.pygments.util import get_bool_opt, get_int_opt, get_list_opt
|
| 20 |
+
|
| 21 |
+
try:
|
| 22 |
+
import ctags
|
| 23 |
+
except ImportError:
|
| 24 |
+
ctags = None
|
| 25 |
+
|
| 26 |
+
__all__ = ['HtmlFormatter']
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
_escape_html_table = {
|
| 30 |
+
ord('&'): '&',
|
| 31 |
+
ord('<'): '<',
|
| 32 |
+
ord('>'): '>',
|
| 33 |
+
ord('"'): '"',
|
| 34 |
+
ord("'"): ''',
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
def escape_html(text, table=_escape_html_table):
|
| 39 |
+
"""Escape &, <, > as well as single and double quotes for HTML."""
|
| 40 |
+
return text.translate(table)
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def webify(color):
|
| 44 |
+
if color.startswith('calc') or color.startswith('var'):
|
| 45 |
+
return color
|
| 46 |
+
else:
|
| 47 |
+
return '#' + color
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def _get_ttype_class(ttype):
|
| 51 |
+
fname = STANDARD_TYPES.get(ttype)
|
| 52 |
+
if fname:
|
| 53 |
+
return fname
|
| 54 |
+
aname = ''
|
| 55 |
+
while fname is None:
|
| 56 |
+
aname = '-' + ttype[-1] + aname
|
| 57 |
+
ttype = ttype.parent
|
| 58 |
+
fname = STANDARD_TYPES.get(ttype)
|
| 59 |
+
return fname + aname
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
CSSFILE_TEMPLATE = '''\
|
| 63 |
+
/*
|
| 64 |
+
generated by Pygments <https://pygments.org/>
|
| 65 |
+
Copyright 2006-2021 by the Pygments team.
|
| 66 |
+
Licensed under the BSD license, see LICENSE for details.
|
| 67 |
+
*/
|
| 68 |
+
%(styledefs)s
|
| 69 |
+
'''
|
| 70 |
+
|
| 71 |
+
DOC_HEADER = '''\
|
| 72 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
| 73 |
+
"http://www.w3.org/TR/html4/strict.dtd">
|
| 74 |
+
<!--
|
| 75 |
+
generated by Pygments <https://pygments.org/>
|
| 76 |
+
Copyright 2006-2021 by the Pygments team.
|
| 77 |
+
Licensed under the BSD license, see LICENSE for details.
|
| 78 |
+
-->
|
| 79 |
+
<html>
|
| 80 |
+
<head>
|
| 81 |
+
<title>%(title)s</title>
|
| 82 |
+
<meta http-equiv="content-type" content="text/html; charset=%(encoding)s">
|
| 83 |
+
<style type="text/css">
|
| 84 |
+
''' + CSSFILE_TEMPLATE + '''
|
| 85 |
+
</style>
|
| 86 |
+
</head>
|
| 87 |
+
<body>
|
| 88 |
+
<h2>%(title)s</h2>
|
| 89 |
+
|
| 90 |
+
'''
|
| 91 |
+
|
| 92 |
+
DOC_HEADER_EXTERNALCSS = '''\
|
| 93 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
| 94 |
+
"http://www.w3.org/TR/html4/strict.dtd">
|
| 95 |
+
|
| 96 |
+
<html>
|
| 97 |
+
<head>
|
| 98 |
+
<title>%(title)s</title>
|
| 99 |
+
<meta http-equiv="content-type" content="text/html; charset=%(encoding)s">
|
| 100 |
+
<link rel="stylesheet" href="%(cssfile)s" type="text/css">
|
| 101 |
+
</head>
|
| 102 |
+
<body>
|
| 103 |
+
<h2>%(title)s</h2>
|
| 104 |
+
|
| 105 |
+
'''
|
| 106 |
+
|
| 107 |
+
DOC_FOOTER = '''\
|
| 108 |
+
</body>
|
| 109 |
+
</html>
|
| 110 |
+
'''
|
| 111 |
+
|
| 112 |
+
|
| 113 |
+
class HtmlFormatter(Formatter):
|
| 114 |
+
r"""
|
| 115 |
+
Format tokens as HTML 4 ``<span>`` tags within a ``<pre>`` tag, wrapped
|
| 116 |
+
in a ``<div>`` tag. The ``<div>``'s CSS class can be set by the `cssclass`
|
| 117 |
+
option.
|
| 118 |
+
|
| 119 |
+
If the `linenos` option is set to ``"table"``, the ``<pre>`` is
|
| 120 |
+
additionally wrapped inside a ``<table>`` which has one row and two
|
| 121 |
+
cells: one containing the line numbers and one containing the code.
|
| 122 |
+
Example:
|
| 123 |
+
|
| 124 |
+
.. sourcecode:: html
|
| 125 |
+
|
| 126 |
+
<div class="highlight" >
|
| 127 |
+
<table><tr>
|
| 128 |
+
<td class="linenos" title="click to toggle"
|
| 129 |
+
onclick="with (this.firstChild.style)
|
| 130 |
+
{ display = (display == '') ? 'none' : '' }">
|
| 131 |
+
<pre>1
|
| 132 |
+
2</pre>
|
| 133 |
+
</td>
|
| 134 |
+
<td class="code">
|
| 135 |
+
<pre><span class="Ke">def </span><span class="NaFu">foo</span>(bar):
|
| 136 |
+
<span class="Ke">pass</span>
|
| 137 |
+
</pre>
|
| 138 |
+
</td>
|
| 139 |
+
</tr></table></div>
|
| 140 |
+
|
| 141 |
+
(whitespace added to improve clarity).
|
| 142 |
+
|
| 143 |
+
Wrapping can be disabled using the `nowrap` option.
|
| 144 |
+
|
| 145 |
+
A list of lines can be specified using the `hl_lines` option to make these
|
| 146 |
+
lines highlighted (as of Pygments 0.11).
|
| 147 |
+
|
| 148 |
+
With the `full` option, a complete HTML 4 document is output, including
|
| 149 |
+
the style definitions inside a ``<style>`` tag, or in a separate file if
|
| 150 |
+
the `cssfile` option is given.
|
| 151 |
+
|
| 152 |
+
When `tagsfile` is set to the path of a ctags index file, it is used to
|
| 153 |
+
generate hyperlinks from names to their definition. You must enable
|
| 154 |
+
`lineanchors` and run ctags with the `-n` option for this to work. The
|
| 155 |
+
`python-ctags` module from PyPI must be installed to use this feature;
|
| 156 |
+
otherwise a `RuntimeError` will be raised.
|
| 157 |
+
|
| 158 |
+
The `get_style_defs(arg='')` method of a `HtmlFormatter` returns a string
|
| 159 |
+
containing CSS rules for the CSS classes used by the formatter. The
|
| 160 |
+
argument `arg` can be used to specify additional CSS selectors that
|
| 161 |
+
are prepended to the classes. A call `fmter.get_style_defs('td .code')`
|
| 162 |
+
would result in the following CSS classes:
|
| 163 |
+
|
| 164 |
+
.. sourcecode:: css
|
| 165 |
+
|
| 166 |
+
td .code .kw { font-weight: bold; color: #00FF00 }
|
| 167 |
+
td .code .cm { color: #999999 }
|
| 168 |
+
...
|
| 169 |
+
|
| 170 |
+
If you have Pygments 0.6 or higher, you can also pass a list or tuple to the
|
| 171 |
+
`get_style_defs()` method to request multiple prefixes for the tokens:
|
| 172 |
+
|
| 173 |
+
.. sourcecode:: python
|
| 174 |
+
|
| 175 |
+
formatter.get_style_defs(['div.syntax pre', 'pre.syntax'])
|
| 176 |
+
|
| 177 |
+
The output would then look like this:
|
| 178 |
+
|
| 179 |
+
.. sourcecode:: css
|
| 180 |
+
|
| 181 |
+
div.syntax pre .kw,
|
| 182 |
+
pre.syntax .kw { font-weight: bold; color: #00FF00 }
|
| 183 |
+
div.syntax pre .cm,
|
| 184 |
+
pre.syntax .cm { color: #999999 }
|
| 185 |
+
...
|
| 186 |
+
|
| 187 |
+
Additional options accepted:
|
| 188 |
+
|
| 189 |
+
`nowrap`
|
| 190 |
+
If set to ``True``, don't wrap the tokens at all, not even inside a ``<pre>``
|
| 191 |
+
tag. This disables most other options (default: ``False``).
|
| 192 |
+
|
| 193 |
+
`full`
|
| 194 |
+
Tells the formatter to output a "full" document, i.e. a complete
|
| 195 |
+
self-contained document (default: ``False``).
|
| 196 |
+
|
| 197 |
+
`title`
|
| 198 |
+
If `full` is true, the title that should be used to caption the
|
| 199 |
+
document (default: ``''``).
|
| 200 |
+
|
| 201 |
+
`style`
|
| 202 |
+
The style to use, can be a string or a Style subclass (default:
|
| 203 |
+
``'default'``). This option has no effect if the `cssfile`
|
| 204 |
+
and `noclobber_cssfile` option are given and the file specified in
|
| 205 |
+
`cssfile` exists.
|
| 206 |
+
|
| 207 |
+
`noclasses`
|
| 208 |
+
If set to true, token ``<span>`` tags (as well as line number elements)
|
| 209 |
+
will not use CSS classes, but inline styles. This is not recommended
|
| 210 |
+
for larger pieces of code since it increases output size by quite a bit
|
| 211 |
+
(default: ``False``).
|
| 212 |
+
|
| 213 |
+
`classprefix`
|
| 214 |
+
Since the token types use relatively short class names, they may clash
|
| 215 |
+
with some of your own class names. In this case you can use the
|
| 216 |
+
`classprefix` option to give a string to prepend to all Pygments-generated
|
| 217 |
+
CSS class names for token types.
|
| 218 |
+
Note that this option also affects the output of `get_style_defs()`.
|
| 219 |
+
|
| 220 |
+
`cssclass`
|
| 221 |
+
CSS class for the wrapping ``<div>`` tag (default: ``'highlight'``).
|
| 222 |
+
If you set this option, the default selector for `get_style_defs()`
|
| 223 |
+
will be this class.
|
| 224 |
+
|
| 225 |
+
.. versionadded:: 0.9
|
| 226 |
+
If you select the ``'table'`` line numbers, the wrapping table will
|
| 227 |
+
have a CSS class of this string plus ``'table'``, the default is
|
| 228 |
+
accordingly ``'highlighttable'``.
|
| 229 |
+
|
| 230 |
+
`cssstyles`
|
| 231 |
+
Inline CSS styles for the wrapping ``<div>`` tag (default: ``''``).
|
| 232 |
+
|
| 233 |
+
`prestyles`
|
| 234 |
+
Inline CSS styles for the ``<pre>`` tag (default: ``''``).
|
| 235 |
+
|
| 236 |
+
.. versionadded:: 0.11
|
| 237 |
+
|
| 238 |
+
`cssfile`
|
| 239 |
+
If the `full` option is true and this option is given, it must be the
|
| 240 |
+
name of an external file. If the filename does not include an absolute
|
| 241 |
+
path, the file's path will be assumed to be relative to the main output
|
| 242 |
+
file's path, if the latter can be found. The stylesheet is then written
|
| 243 |
+
to this file instead of the HTML file.
|
| 244 |
+
|
| 245 |
+
.. versionadded:: 0.6
|
| 246 |
+
|
| 247 |
+
`noclobber_cssfile`
|
| 248 |
+
If `cssfile` is given and the specified file exists, the css file will
|
| 249 |
+
not be overwritten. This allows the use of the `full` option in
|
| 250 |
+
combination with a user specified css file. Default is ``False``.
|
| 251 |
+
|
| 252 |
+
.. versionadded:: 1.1
|
| 253 |
+
|
| 254 |
+
`linenos`
|
| 255 |
+
If set to ``'table'``, output line numbers as a table with two cells,
|
| 256 |
+
one containing the line numbers, the other the whole code. This is
|
| 257 |
+
copy-and-paste-friendly, but may cause alignment problems with some
|
| 258 |
+
browsers or fonts. If set to ``'inline'``, the line numbers will be
|
| 259 |
+
integrated in the ``<pre>`` tag that contains the code (that setting
|
| 260 |
+
is *new in Pygments 0.8*).
|
| 261 |
+
|
| 262 |
+
For compatibility with Pygments 0.7 and earlier, every true value
|
| 263 |
+
except ``'inline'`` means the same as ``'table'`` (in particular, that
|
| 264 |
+
means also ``True``).
|
| 265 |
+
|
| 266 |
+
The default value is ``False``, which means no line numbers at all.
|
| 267 |
+
|
| 268 |
+
**Note:** with the default ("table") line number mechanism, the line
|
| 269 |
+
numbers and code can have different line heights in Internet Explorer
|
| 270 |
+
unless you give the enclosing ``<pre>`` tags an explicit ``line-height``
|
| 271 |
+
CSS property (you get the default line spacing with ``line-height:
|
| 272 |
+
125%``).
|
| 273 |
+
|
| 274 |
+
`hl_lines`
|
| 275 |
+
Specify a list of lines to be highlighted. The line numbers are always
|
| 276 |
+
relative to the input (i.e. the first line is line 1) and are
|
| 277 |
+
independent of `linenostart`.
|
| 278 |
+
|
| 279 |
+
.. versionadded:: 0.11
|
| 280 |
+
|
| 281 |
+
`linenostart`
|
| 282 |
+
The line number for the first line (default: ``1``).
|
| 283 |
+
|
| 284 |
+
`linenostep`
|
| 285 |
+
If set to a number n > 1, only every nth line number is printed.
|
| 286 |
+
|
| 287 |
+
`linenospecial`
|
| 288 |
+
If set to a number n > 0, every nth line number is given the CSS
|
| 289 |
+
class ``"special"`` (default: ``0``).
|
| 290 |
+
|
| 291 |
+
`nobackground`
|
| 292 |
+
If set to ``True``, the formatter won't output the background color
|
| 293 |
+
for the wrapping element (this automatically defaults to ``False``
|
| 294 |
+
when there is no wrapping element [eg: no argument for the
|
| 295 |
+
`get_syntax_defs` method given]) (default: ``False``).
|
| 296 |
+
|
| 297 |
+
.. versionadded:: 0.6
|
| 298 |
+
|
| 299 |
+
`lineseparator`
|
| 300 |
+
This string is output between lines of code. It defaults to ``"\n"``,
|
| 301 |
+
which is enough to break a line inside ``<pre>`` tags, but you can
|
| 302 |
+
e.g. set it to ``"<br>"`` to get HTML line breaks.
|
| 303 |
+
|
| 304 |
+
.. versionadded:: 0.7
|
| 305 |
+
|
| 306 |
+
`lineanchors`
|
| 307 |
+
If set to a nonempty string, e.g. ``foo``, the formatter will wrap each
|
| 308 |
+
output line in an anchor tag with an ``id`` (and `name`) of ``foo-linenumber``.
|
| 309 |
+
This allows easy linking to certain lines.
|
| 310 |
+
|
| 311 |
+
.. versionadded:: 0.9
|
| 312 |
+
|
| 313 |
+
`linespans`
|
| 314 |
+
If set to a nonempty string, e.g. ``foo``, the formatter will wrap each
|
| 315 |
+
output line in a span tag with an ``id`` of ``foo-linenumber``.
|
| 316 |
+
This allows easy access to lines via javascript.
|
| 317 |
+
|
| 318 |
+
.. versionadded:: 1.6
|
| 319 |
+
|
| 320 |
+
`anchorlinenos`
|
| 321 |
+
If set to `True`, will wrap line numbers in <a> tags. Used in
|
| 322 |
+
combination with `linenos` and `lineanchors`.
|
| 323 |
+
|
| 324 |
+
`tagsfile`
|
| 325 |
+
If set to the path of a ctags file, wrap names in anchor tags that
|
| 326 |
+
link to their definitions. `lineanchors` should be used, and the
|
| 327 |
+
tags file should specify line numbers (see the `-n` option to ctags).
|
| 328 |
+
|
| 329 |
+
.. versionadded:: 1.6
|
| 330 |
+
|
| 331 |
+
`tagurlformat`
|
| 332 |
+
A string formatting pattern used to generate links to ctags definitions.
|
| 333 |
+
Available variables are `%(path)s`, `%(fname)s` and `%(fext)s`.
|
| 334 |
+
Defaults to an empty string, resulting in just `#prefix-number` links.
|
| 335 |
+
|
| 336 |
+
.. versionadded:: 1.6
|
| 337 |
+
|
| 338 |
+
`filename`
|
| 339 |
+
A string used to generate a filename when rendering ``<pre>`` blocks,
|
| 340 |
+
for example if displaying source code. If `linenos` is set to
|
| 341 |
+
``'table'`` then the filename will be rendered in an initial row
|
| 342 |
+
containing a single `<th>` which spans both columns.
|
| 343 |
+
|
| 344 |
+
.. versionadded:: 2.1
|
| 345 |
+
|
| 346 |
+
`wrapcode`
|
| 347 |
+
Wrap the code inside ``<pre>`` blocks using ``<code>``, as recommended
|
| 348 |
+
by the HTML5 specification.
|
| 349 |
+
|
| 350 |
+
.. versionadded:: 2.4
|
| 351 |
+
|
| 352 |
+
`debug_token_types`
|
| 353 |
+
Add ``title`` attributes to all token ``<span>`` tags that show the
|
| 354 |
+
name of the token.
|
| 355 |
+
|
| 356 |
+
.. versionadded:: 2.10
|
| 357 |
+
|
| 358 |
+
|
| 359 |
+
**Subclassing the HTML formatter**
|
| 360 |
+
|
| 361 |
+
.. versionadded:: 0.7
|
| 362 |
+
|
| 363 |
+
The HTML formatter is now built in a way that allows easy subclassing, thus
|
| 364 |
+
customizing the output HTML code. The `format()` method calls
|
| 365 |
+
`self._format_lines()` which returns a generator that yields tuples of ``(1,
|
| 366 |
+
line)``, where the ``1`` indicates that the ``line`` is a line of the
|
| 367 |
+
formatted source code.
|
| 368 |
+
|
| 369 |
+
If the `nowrap` option is set, the generator is the iterated over and the
|
| 370 |
+
resulting HTML is output.
|
| 371 |
+
|
| 372 |
+
Otherwise, `format()` calls `self.wrap()`, which wraps the generator with
|
| 373 |
+
other generators. These may add some HTML code to the one generated by
|
| 374 |
+
`_format_lines()`, either by modifying the lines generated by the latter,
|
| 375 |
+
then yielding them again with ``(1, line)``, and/or by yielding other HTML
|
| 376 |
+
code before or after the lines, with ``(0, html)``. The distinction between
|
| 377 |
+
source lines and other code makes it possible to wrap the generator multiple
|
| 378 |
+
times.
|
| 379 |
+
|
| 380 |
+
The default `wrap()` implementation adds a ``<div>`` and a ``<pre>`` tag.
|
| 381 |
+
|
| 382 |
+
A custom `HtmlFormatter` subclass could look like this:
|
| 383 |
+
|
| 384 |
+
.. sourcecode:: python
|
| 385 |
+
|
| 386 |
+
class CodeHtmlFormatter(HtmlFormatter):
|
| 387 |
+
|
| 388 |
+
def wrap(self, source, outfile):
|
| 389 |
+
return self._wrap_code(source)
|
| 390 |
+
|
| 391 |
+
def _wrap_code(self, source):
|
| 392 |
+
yield 0, '<code>'
|
| 393 |
+
for i, t in source:
|
| 394 |
+
if i == 1:
|
| 395 |
+
# it's a line of formatted code
|
| 396 |
+
t += '<br>'
|
| 397 |
+
yield i, t
|
| 398 |
+
yield 0, '</code>'
|
| 399 |
+
|
| 400 |
+
This results in wrapping the formatted lines with a ``<code>`` tag, where the
|
| 401 |
+
source lines are broken using ``<br>`` tags.
|
| 402 |
+
|
| 403 |
+
After calling `wrap()`, the `format()` method also adds the "line numbers"
|
| 404 |
+
and/or "full document" wrappers if the respective options are set. Then, all
|
| 405 |
+
HTML yielded by the wrapped generator is output.
|
| 406 |
+
"""
|
| 407 |
+
|
| 408 |
+
name = 'HTML'
|
| 409 |
+
aliases = ['html']
|
| 410 |
+
filenames = ['*.html', '*.htm']
|
| 411 |
+
|
| 412 |
+
def __init__(self, **options):
|
| 413 |
+
Formatter.__init__(self, **options)
|
| 414 |
+
self.title = self._decodeifneeded(self.title)
|
| 415 |
+
self.nowrap = get_bool_opt(options, 'nowrap', False)
|
| 416 |
+
self.noclasses = get_bool_opt(options, 'noclasses', False)
|
| 417 |
+
self.classprefix = options.get('classprefix', '')
|
| 418 |
+
self.cssclass = self._decodeifneeded(options.get('cssclass', 'highlight'))
|
| 419 |
+
self.cssstyles = self._decodeifneeded(options.get('cssstyles', ''))
|
| 420 |
+
self.prestyles = self._decodeifneeded(options.get('prestyles', ''))
|
| 421 |
+
self.cssfile = self._decodeifneeded(options.get('cssfile', ''))
|
| 422 |
+
self.noclobber_cssfile = get_bool_opt(options, 'noclobber_cssfile', False)
|
| 423 |
+
self.tagsfile = self._decodeifneeded(options.get('tagsfile', ''))
|
| 424 |
+
self.tagurlformat = self._decodeifneeded(options.get('tagurlformat', ''))
|
| 425 |
+
self.filename = self._decodeifneeded(options.get('filename', ''))
|
| 426 |
+
self.wrapcode = get_bool_opt(options, 'wrapcode', False)
|
| 427 |
+
self.span_element_openers = {}
|
| 428 |
+
self.debug_token_types = get_bool_opt(options, 'debug_token_types', False)
|
| 429 |
+
|
| 430 |
+
if self.tagsfile:
|
| 431 |
+
if not ctags:
|
| 432 |
+
raise RuntimeError('The "ctags" package must to be installed '
|
| 433 |
+
'to be able to use the "tagsfile" feature.')
|
| 434 |
+
self._ctags = ctags.CTags(self.tagsfile)
|
| 435 |
+
|
| 436 |
+
linenos = options.get('linenos', False)
|
| 437 |
+
if linenos == 'inline':
|
| 438 |
+
self.linenos = 2
|
| 439 |
+
elif linenos:
|
| 440 |
+
# compatibility with <= 0.7
|
| 441 |
+
self.linenos = 1
|
| 442 |
+
else:
|
| 443 |
+
self.linenos = 0
|
| 444 |
+
self.linenostart = abs(get_int_opt(options, 'linenostart', 1))
|
| 445 |
+
self.linenostep = abs(get_int_opt(options, 'linenostep', 1))
|
| 446 |
+
self.linenospecial = abs(get_int_opt(options, 'linenospecial', 0))
|
| 447 |
+
self.nobackground = get_bool_opt(options, 'nobackground', False)
|
| 448 |
+
self.lineseparator = options.get('lineseparator', '\n')
|
| 449 |
+
self.lineanchors = options.get('lineanchors', '')
|
| 450 |
+
self.linespans = options.get('linespans', '')
|
| 451 |
+
self.anchorlinenos = get_bool_opt(options, 'anchorlinenos', False)
|
| 452 |
+
self.hl_lines = set()
|
| 453 |
+
for lineno in get_list_opt(options, 'hl_lines', []):
|
| 454 |
+
try:
|
| 455 |
+
self.hl_lines.add(int(lineno))
|
| 456 |
+
except ValueError:
|
| 457 |
+
pass
|
| 458 |
+
|
| 459 |
+
self._create_stylesheet()
|
| 460 |
+
|
| 461 |
+
def _get_css_class(self, ttype):
|
| 462 |
+
"""Return the css class of this token type prefixed with
|
| 463 |
+
the classprefix option."""
|
| 464 |
+
ttypeclass = _get_ttype_class(ttype)
|
| 465 |
+
if ttypeclass:
|
| 466 |
+
return self.classprefix + ttypeclass
|
| 467 |
+
return ''
|
| 468 |
+
|
| 469 |
+
def _get_css_classes(self, ttype):
|
| 470 |
+
"""Return the CSS classes of this token type prefixed with the classprefix option."""
|
| 471 |
+
cls = self._get_css_class(ttype)
|
| 472 |
+
while ttype not in STANDARD_TYPES:
|
| 473 |
+
ttype = ttype.parent
|
| 474 |
+
cls = self._get_css_class(ttype) + ' ' + cls
|
| 475 |
+
return cls or ''
|
| 476 |
+
|
| 477 |
+
def _get_css_inline_styles(self, ttype):
|
| 478 |
+
"""Return the inline CSS styles for this token type."""
|
| 479 |
+
cclass = self.ttype2class.get(ttype)
|
| 480 |
+
while cclass is None:
|
| 481 |
+
ttype = ttype.parent
|
| 482 |
+
cclass = self.ttype2class.get(ttype)
|
| 483 |
+
return cclass or ''
|
| 484 |
+
|
| 485 |
+
def _create_stylesheet(self):
|
| 486 |
+
t2c = self.ttype2class = {Token: ''}
|
| 487 |
+
c2s = self.class2style = {}
|
| 488 |
+
for ttype, ndef in self.style:
|
| 489 |
+
name = self._get_css_class(ttype)
|
| 490 |
+
style = ''
|
| 491 |
+
if ndef['color']:
|
| 492 |
+
style += 'color: %s; ' % webify(ndef['color'])
|
| 493 |
+
if ndef['bold']:
|
| 494 |
+
style += 'font-weight: bold; '
|
| 495 |
+
if ndef['italic']:
|
| 496 |
+
style += 'font-style: italic; '
|
| 497 |
+
if ndef['underline']:
|
| 498 |
+
style += 'text-decoration: underline; '
|
| 499 |
+
if ndef['bgcolor']:
|
| 500 |
+
style += 'background-color: %s; ' % webify(ndef['bgcolor'])
|
| 501 |
+
if ndef['border']:
|
| 502 |
+
style += 'border: 1px solid %s; ' % webify(ndef['border'])
|
| 503 |
+
if style:
|
| 504 |
+
t2c[ttype] = name
|
| 505 |
+
# save len(ttype) to enable ordering the styles by
|
| 506 |
+
# hierarchy (necessary for CSS cascading rules!)
|
| 507 |
+
c2s[name] = (style[:-2], ttype, len(ttype))
|
| 508 |
+
|
| 509 |
+
def get_style_defs(self, arg=None):
|
| 510 |
+
"""
|
| 511 |
+
Return CSS style definitions for the classes produced by the current
|
| 512 |
+
highlighting style. ``arg`` can be a string or list of selectors to
|
| 513 |
+
insert before the token type classes.
|
| 514 |
+
"""
|
| 515 |
+
style_lines = []
|
| 516 |
+
|
| 517 |
+
style_lines.extend(self.get_linenos_style_defs())
|
| 518 |
+
style_lines.extend(self.get_background_style_defs(arg))
|
| 519 |
+
style_lines.extend(self.get_token_style_defs(arg))
|
| 520 |
+
|
| 521 |
+
return '\n'.join(style_lines)
|
| 522 |
+
|
| 523 |
+
def get_token_style_defs(self, arg=None):
|
| 524 |
+
prefix = self.get_css_prefix(arg)
|
| 525 |
+
|
| 526 |
+
styles = [
|
| 527 |
+
(level, ttype, cls, style)
|
| 528 |
+
for cls, (style, ttype, level) in self.class2style.items()
|
| 529 |
+
if cls and style
|
| 530 |
+
]
|
| 531 |
+
styles.sort()
|
| 532 |
+
|
| 533 |
+
lines = [
|
| 534 |
+
'%s { %s } /* %s */' % (prefix(cls), style, repr(ttype)[6:])
|
| 535 |
+
for (level, ttype, cls, style) in styles
|
| 536 |
+
]
|
| 537 |
+
|
| 538 |
+
return lines
|
| 539 |
+
|
| 540 |
+
def get_background_style_defs(self, arg=None):
|
| 541 |
+
prefix = self.get_css_prefix(arg)
|
| 542 |
+
bg_color = self.style.background_color
|
| 543 |
+
hl_color = self.style.highlight_color
|
| 544 |
+
|
| 545 |
+
lines = []
|
| 546 |
+
|
| 547 |
+
if arg and not self.nobackground and bg_color is not None:
|
| 548 |
+
text_style = ''
|
| 549 |
+
if Text in self.ttype2class:
|
| 550 |
+
text_style = ' ' + self.class2style[self.ttype2class[Text]][0]
|
| 551 |
+
lines.insert(
|
| 552 |
+
0, '%s{ background: %s;%s }' % (
|
| 553 |
+
prefix(''), bg_color, text_style
|
| 554 |
+
)
|
| 555 |
+
)
|
| 556 |
+
if hl_color is not None:
|
| 557 |
+
lines.insert(
|
| 558 |
+
0, '%s { background-color: %s }' % (prefix('hll'), hl_color)
|
| 559 |
+
)
|
| 560 |
+
|
| 561 |
+
return lines
|
| 562 |
+
|
| 563 |
+
def get_linenos_style_defs(self):
|
| 564 |
+
lines = [
|
| 565 |
+
'pre { %s }' % self._pre_style,
|
| 566 |
+
'td.linenos .normal { %s }' % self._linenos_style,
|
| 567 |
+
'span.linenos { %s }' % self._linenos_style,
|
| 568 |
+
'td.linenos .special { %s }' % self._linenos_special_style,
|
| 569 |
+
'span.linenos.special { %s }' % self._linenos_special_style,
|
| 570 |
+
]
|
| 571 |
+
|
| 572 |
+
return lines
|
| 573 |
+
|
| 574 |
+
def get_css_prefix(self, arg):
|
| 575 |
+
if arg is None:
|
| 576 |
+
arg = ('cssclass' in self.options and '.'+self.cssclass or '')
|
| 577 |
+
if isinstance(arg, str):
|
| 578 |
+
args = [arg]
|
| 579 |
+
else:
|
| 580 |
+
args = list(arg)
|
| 581 |
+
|
| 582 |
+
def prefix(cls):
|
| 583 |
+
if cls:
|
| 584 |
+
cls = '.' + cls
|
| 585 |
+
tmp = []
|
| 586 |
+
for arg in args:
|
| 587 |
+
tmp.append((arg and arg + ' ' or '') + cls)
|
| 588 |
+
return ', '.join(tmp)
|
| 589 |
+
|
| 590 |
+
return prefix
|
| 591 |
+
|
| 592 |
+
@property
|
| 593 |
+
def _pre_style(self):
|
| 594 |
+
return 'line-height: 125%;'
|
| 595 |
+
|
| 596 |
+
@property
|
| 597 |
+
def _linenos_style(self):
|
| 598 |
+
return 'color: %s; background-color: %s; padding-left: 5px; padding-right: 5px;' % (
|
| 599 |
+
self.style.line_number_color,
|
| 600 |
+
self.style.line_number_background_color
|
| 601 |
+
)
|
| 602 |
+
|
| 603 |
+
@property
|
| 604 |
+
def _linenos_special_style(self):
|
| 605 |
+
return 'color: %s; background-color: %s; padding-left: 5px; padding-right: 5px;' % (
|
| 606 |
+
self.style.line_number_special_color,
|
| 607 |
+
self.style.line_number_special_background_color
|
| 608 |
+
)
|
| 609 |
+
|
| 610 |
+
def _decodeifneeded(self, value):
|
| 611 |
+
if isinstance(value, bytes):
|
| 612 |
+
if self.encoding:
|
| 613 |
+
return value.decode(self.encoding)
|
| 614 |
+
return value.decode()
|
| 615 |
+
return value
|
| 616 |
+
|
| 617 |
+
def _wrap_full(self, inner, outfile):
|
| 618 |
+
if self.cssfile:
|
| 619 |
+
if os.path.isabs(self.cssfile):
|
| 620 |
+
# it's an absolute filename
|
| 621 |
+
cssfilename = self.cssfile
|
| 622 |
+
else:
|
| 623 |
+
try:
|
| 624 |
+
filename = outfile.name
|
| 625 |
+
if not filename or filename[0] == '<':
|
| 626 |
+
# pseudo files, e.g. name == '<fdopen>'
|
| 627 |
+
raise AttributeError
|
| 628 |
+
cssfilename = os.path.join(os.path.dirname(filename),
|
| 629 |
+
self.cssfile)
|
| 630 |
+
except AttributeError:
|
| 631 |
+
print('Note: Cannot determine output file name, '
|
| 632 |
+
'using current directory as base for the CSS file name',
|
| 633 |
+
file=sys.stderr)
|
| 634 |
+
cssfilename = self.cssfile
|
| 635 |
+
# write CSS file only if noclobber_cssfile isn't given as an option.
|
| 636 |
+
try:
|
| 637 |
+
if not os.path.exists(cssfilename) or not self.noclobber_cssfile:
|
| 638 |
+
with open(cssfilename, "w") as cf:
|
| 639 |
+
cf.write(CSSFILE_TEMPLATE %
|
| 640 |
+
{'styledefs': self.get_style_defs('body')})
|
| 641 |
+
except OSError as err:
|
| 642 |
+
err.strerror = 'Error writing CSS file: ' + err.strerror
|
| 643 |
+
raise
|
| 644 |
+
|
| 645 |
+
yield 0, (DOC_HEADER_EXTERNALCSS %
|
| 646 |
+
dict(title=self.title,
|
| 647 |
+
cssfile=self.cssfile,
|
| 648 |
+
encoding=self.encoding))
|
| 649 |
+
else:
|
| 650 |
+
yield 0, (DOC_HEADER %
|
| 651 |
+
dict(title=self.title,
|
| 652 |
+
styledefs=self.get_style_defs('body'),
|
| 653 |
+
encoding=self.encoding))
|
| 654 |
+
|
| 655 |
+
yield from inner
|
| 656 |
+
yield 0, DOC_FOOTER
|
| 657 |
+
|
| 658 |
+
def _wrap_tablelinenos(self, inner):
|
| 659 |
+
dummyoutfile = StringIO()
|
| 660 |
+
lncount = 0
|
| 661 |
+
for t, line in inner:
|
| 662 |
+
if t:
|
| 663 |
+
lncount += 1
|
| 664 |
+
dummyoutfile.write(line)
|
| 665 |
+
|
| 666 |
+
fl = self.linenostart
|
| 667 |
+
mw = len(str(lncount + fl - 1))
|
| 668 |
+
sp = self.linenospecial
|
| 669 |
+
st = self.linenostep
|
| 670 |
+
la = self.lineanchors
|
| 671 |
+
aln = self.anchorlinenos
|
| 672 |
+
nocls = self.noclasses
|
| 673 |
+
|
| 674 |
+
lines = []
|
| 675 |
+
|
| 676 |
+
for i in range(fl, fl+lncount):
|
| 677 |
+
print_line = i % st == 0
|
| 678 |
+
special_line = sp and i % sp == 0
|
| 679 |
+
|
| 680 |
+
if print_line:
|
| 681 |
+
line = '%*d' % (mw, i)
|
| 682 |
+
if aln:
|
| 683 |
+
line = '<a href="#%s-%d">%s</a>' % (la, i, line)
|
| 684 |
+
else:
|
| 685 |
+
line = ' ' * mw
|
| 686 |
+
|
| 687 |
+
if nocls:
|
| 688 |
+
if special_line:
|
| 689 |
+
style = ' style="%s"' % self._linenos_special_style
|
| 690 |
+
else:
|
| 691 |
+
style = ' style="%s"' % self._linenos_style
|
| 692 |
+
else:
|
| 693 |
+
if special_line:
|
| 694 |
+
style = ' class="special"'
|
| 695 |
+
else:
|
| 696 |
+
style = ' class="normal"'
|
| 697 |
+
|
| 698 |
+
if style:
|
| 699 |
+
line = '<span%s>%s</span>' % (style, line)
|
| 700 |
+
|
| 701 |
+
lines.append(line)
|
| 702 |
+
|
| 703 |
+
ls = '\n'.join(lines)
|
| 704 |
+
|
| 705 |
+
# If a filename was specified, we can't put it into the code table as it
|
| 706 |
+
# would misalign the line numbers. Hence we emit a separate row for it.
|
| 707 |
+
filename_tr = ""
|
| 708 |
+
if self.filename:
|
| 709 |
+
filename_tr = (
|
| 710 |
+
'<tr><th colspan="2" class="filename"><div class="highlight">'
|
| 711 |
+
'<span class="filename">' + self.filename + '</span></div>'
|
| 712 |
+
'</th></tr>')
|
| 713 |
+
|
| 714 |
+
# in case you wonder about the seemingly redundant <div> here: since the
|
| 715 |
+
# content in the other cell also is wrapped in a div, some browsers in
|
| 716 |
+
# some configurations seem to mess up the formatting...
|
| 717 |
+
yield 0, (
|
| 718 |
+
'<table class="%stable">' % self.cssclass + filename_tr +
|
| 719 |
+
'<tr><td class="linenos"><div class="linenodiv"><pre>' +
|
| 720 |
+
ls + '</pre></div></td><td class="code">'
|
| 721 |
+
)
|
| 722 |
+
yield 0, dummyoutfile.getvalue()
|
| 723 |
+
yield 0, '</td></tr></table>'
|
| 724 |
+
|
| 725 |
+
def _wrap_inlinelinenos(self, inner):
|
| 726 |
+
# need a list of lines since we need the width of a single number :(
|
| 727 |
+
inner_lines = list(inner)
|
| 728 |
+
sp = self.linenospecial
|
| 729 |
+
st = self.linenostep
|
| 730 |
+
num = self.linenostart
|
| 731 |
+
mw = len(str(len(inner_lines) + num - 1))
|
| 732 |
+
la = self.lineanchors
|
| 733 |
+
aln = self.anchorlinenos
|
| 734 |
+
nocls = self.noclasses
|
| 735 |
+
|
| 736 |
+
for _, inner_line in inner_lines:
|
| 737 |
+
print_line = num % st == 0
|
| 738 |
+
special_line = sp and num % sp == 0
|
| 739 |
+
|
| 740 |
+
if print_line:
|
| 741 |
+
line = '%*d' % (mw, num)
|
| 742 |
+
else:
|
| 743 |
+
line = ' ' * mw
|
| 744 |
+
|
| 745 |
+
if nocls:
|
| 746 |
+
if special_line:
|
| 747 |
+
style = ' style="%s"' % self._linenos_special_style
|
| 748 |
+
else:
|
| 749 |
+
style = ' style="%s"' % self._linenos_style
|
| 750 |
+
else:
|
| 751 |
+
if special_line:
|
| 752 |
+
style = ' class="linenos special"'
|
| 753 |
+
else:
|
| 754 |
+
style = ' class="linenos"'
|
| 755 |
+
|
| 756 |
+
if style:
|
| 757 |
+
linenos = '<span%s>%s</span>' % (style, line)
|
| 758 |
+
else:
|
| 759 |
+
linenos = line
|
| 760 |
+
|
| 761 |
+
if aln:
|
| 762 |
+
yield 1, ('<a href="#%s-%d">%s</a>' % (la, num, linenos) +
|
| 763 |
+
inner_line)
|
| 764 |
+
else:
|
| 765 |
+
yield 1, linenos + inner_line
|
| 766 |
+
num += 1
|
| 767 |
+
|
| 768 |
+
def _wrap_lineanchors(self, inner):
|
| 769 |
+
s = self.lineanchors
|
| 770 |
+
# subtract 1 since we have to increment i *before* yielding
|
| 771 |
+
i = self.linenostart - 1
|
| 772 |
+
for t, line in inner:
|
| 773 |
+
if t:
|
| 774 |
+
i += 1
|
| 775 |
+
href = "" if self.linenos else ' href="#%s-%d"' % (s, i)
|
| 776 |
+
yield 1, '<a id="%s-%d" name="%s-%d"%s></a>' % (s, i, s, i, href) + line
|
| 777 |
+
else:
|
| 778 |
+
yield 0, line
|
| 779 |
+
|
| 780 |
+
def _wrap_linespans(self, inner):
|
| 781 |
+
s = self.linespans
|
| 782 |
+
i = self.linenostart - 1
|
| 783 |
+
for t, line in inner:
|
| 784 |
+
if t:
|
| 785 |
+
i += 1
|
| 786 |
+
yield 1, '<span id="%s-%d">%s</span>' % (s, i, line)
|
| 787 |
+
else:
|
| 788 |
+
yield 0, line
|
| 789 |
+
|
| 790 |
+
def _wrap_div(self, inner):
|
| 791 |
+
style = []
|
| 792 |
+
if (self.noclasses and not self.nobackground and
|
| 793 |
+
self.style.background_color is not None):
|
| 794 |
+
style.append('background: %s' % (self.style.background_color,))
|
| 795 |
+
if self.cssstyles:
|
| 796 |
+
style.append(self.cssstyles)
|
| 797 |
+
style = '; '.join(style)
|
| 798 |
+
|
| 799 |
+
yield 0, ('<div' + (self.cssclass and ' class="%s"' % self.cssclass) +
|
| 800 |
+
(style and (' style="%s"' % style)) + '>')
|
| 801 |
+
yield from inner
|
| 802 |
+
yield 0, '</div>\n'
|
| 803 |
+
|
| 804 |
+
def _wrap_pre(self, inner):
|
| 805 |
+
style = []
|
| 806 |
+
if self.prestyles:
|
| 807 |
+
style.append(self.prestyles)
|
| 808 |
+
if self.noclasses:
|
| 809 |
+
style.append(self._pre_style)
|
| 810 |
+
style = '; '.join(style)
|
| 811 |
+
|
| 812 |
+
if self.filename and self.linenos != 1:
|
| 813 |
+
yield 0, ('<span class="filename">' + self.filename + '</span>')
|
| 814 |
+
|
| 815 |
+
# the empty span here is to keep leading empty lines from being
|
| 816 |
+
# ignored by HTML parsers
|
| 817 |
+
yield 0, ('<pre' + (style and ' style="%s"' % style) + '><span></span>')
|
| 818 |
+
yield from inner
|
| 819 |
+
yield 0, '</pre>'
|
| 820 |
+
|
| 821 |
+
def _wrap_code(self, inner):
|
| 822 |
+
yield 0, '<code>'
|
| 823 |
+
yield from inner
|
| 824 |
+
yield 0, '</code>'
|
| 825 |
+
|
| 826 |
+
@functools.lru_cache(maxsize=100)
|
| 827 |
+
def _translate_parts(self, value):
|
| 828 |
+
"""HTML-escape a value and split it by newlines."""
|
| 829 |
+
return value.translate(_escape_html_table).split('\n')
|
| 830 |
+
|
| 831 |
+
def _format_lines(self, tokensource):
|
| 832 |
+
"""
|
| 833 |
+
Just format the tokens, without any wrapping tags.
|
| 834 |
+
Yield individual lines.
|
| 835 |
+
"""
|
| 836 |
+
nocls = self.noclasses
|
| 837 |
+
lsep = self.lineseparator
|
| 838 |
+
tagsfile = self.tagsfile
|
| 839 |
+
|
| 840 |
+
lspan = ''
|
| 841 |
+
line = []
|
| 842 |
+
for ttype, value in tokensource:
|
| 843 |
+
try:
|
| 844 |
+
cspan = self.span_element_openers[ttype]
|
| 845 |
+
except KeyError:
|
| 846 |
+
title = ' title="%s"' % '.'.join(ttype) if self.debug_token_types else ''
|
| 847 |
+
if nocls:
|
| 848 |
+
css_style = self._get_css_inline_styles(ttype)
|
| 849 |
+
if css_style:
|
| 850 |
+
css_style = self.class2style[css_style][0]
|
| 851 |
+
cspan = '<span style="%s"%s>' % (css_style, title)
|
| 852 |
+
else:
|
| 853 |
+
cspan = ''
|
| 854 |
+
else:
|
| 855 |
+
css_class = self._get_css_classes(ttype)
|
| 856 |
+
if css_class:
|
| 857 |
+
cspan = '<span class="%s"%s>' % (css_class, title)
|
| 858 |
+
else:
|
| 859 |
+
cspan = ''
|
| 860 |
+
self.span_element_openers[ttype] = cspan
|
| 861 |
+
|
| 862 |
+
parts = self._translate_parts(value)
|
| 863 |
+
|
| 864 |
+
if tagsfile and ttype in Token.Name:
|
| 865 |
+
filename, linenumber = self._lookup_ctag(value)
|
| 866 |
+
if linenumber:
|
| 867 |
+
base, filename = os.path.split(filename)
|
| 868 |
+
if base:
|
| 869 |
+
base += '/'
|
| 870 |
+
filename, extension = os.path.splitext(filename)
|
| 871 |
+
url = self.tagurlformat % {'path': base, 'fname': filename,
|
| 872 |
+
'fext': extension}
|
| 873 |
+
parts[0] = "<a href=\"%s#%s-%d\">%s" % \
|
| 874 |
+
(url, self.lineanchors, linenumber, parts[0])
|
| 875 |
+
parts[-1] = parts[-1] + "</a>"
|
| 876 |
+
|
| 877 |
+
# for all but the last line
|
| 878 |
+
for part in parts[:-1]:
|
| 879 |
+
if line:
|
| 880 |
+
if lspan != cspan:
|
| 881 |
+
line.extend(((lspan and '</span>'), cspan, part,
|
| 882 |
+
(cspan and '</span>'), lsep))
|
| 883 |
+
else: # both are the same
|
| 884 |
+
line.extend((part, (lspan and '</span>'), lsep))
|
| 885 |
+
yield 1, ''.join(line)
|
| 886 |
+
line = []
|
| 887 |
+
elif part:
|
| 888 |
+
yield 1, ''.join((cspan, part, (cspan and '</span>'), lsep))
|
| 889 |
+
else:
|
| 890 |
+
yield 1, lsep
|
| 891 |
+
# for the last line
|
| 892 |
+
if line and parts[-1]:
|
| 893 |
+
if lspan != cspan:
|
| 894 |
+
line.extend(((lspan and '</span>'), cspan, parts[-1]))
|
| 895 |
+
lspan = cspan
|
| 896 |
+
else:
|
| 897 |
+
line.append(parts[-1])
|
| 898 |
+
elif parts[-1]:
|
| 899 |
+
line = [cspan, parts[-1]]
|
| 900 |
+
lspan = cspan
|
| 901 |
+
# else we neither have to open a new span nor set lspan
|
| 902 |
+
|
| 903 |
+
if line:
|
| 904 |
+
line.extend(((lspan and '</span>'), lsep))
|
| 905 |
+
yield 1, ''.join(line)
|
| 906 |
+
|
| 907 |
+
def _lookup_ctag(self, token):
|
| 908 |
+
entry = ctags.TagEntry()
|
| 909 |
+
if self._ctags.find(entry, token.encode(), 0):
|
| 910 |
+
return entry['file'], entry['lineNumber']
|
| 911 |
+
else:
|
| 912 |
+
return None, None
|
| 913 |
+
|
| 914 |
+
def _highlight_lines(self, tokensource):
|
| 915 |
+
"""
|
| 916 |
+
Highlighted the lines specified in the `hl_lines` option by
|
| 917 |
+
post-processing the token stream coming from `_format_lines`.
|
| 918 |
+
"""
|
| 919 |
+
hls = self.hl_lines
|
| 920 |
+
|
| 921 |
+
for i, (t, value) in enumerate(tokensource):
|
| 922 |
+
if t != 1:
|
| 923 |
+
yield t, value
|
| 924 |
+
if i + 1 in hls: # i + 1 because Python indexes start at 0
|
| 925 |
+
if self.noclasses:
|
| 926 |
+
style = ''
|
| 927 |
+
if self.style.highlight_color is not None:
|
| 928 |
+
style = (' style="background-color: %s"' %
|
| 929 |
+
(self.style.highlight_color,))
|
| 930 |
+
yield 1, '<span%s>%s</span>' % (style, value)
|
| 931 |
+
else:
|
| 932 |
+
yield 1, '<span class="hll">%s</span>' % value
|
| 933 |
+
else:
|
| 934 |
+
yield 1, value
|
| 935 |
+
|
| 936 |
+
def wrap(self, source, outfile):
|
| 937 |
+
"""
|
| 938 |
+
Wrap the ``source``, which is a generator yielding
|
| 939 |
+
individual lines, in custom generators. See docstring
|
| 940 |
+
for `format`. Can be overridden.
|
| 941 |
+
"""
|
| 942 |
+
if self.wrapcode:
|
| 943 |
+
return self._wrap_div(self._wrap_pre(self._wrap_code(source)))
|
| 944 |
+
else:
|
| 945 |
+
return self._wrap_div(self._wrap_pre(source))
|
| 946 |
+
|
| 947 |
+
def format_unencoded(self, tokensource, outfile):
|
| 948 |
+
"""
|
| 949 |
+
The formatting process uses several nested generators; which of
|
| 950 |
+
them are used is determined by the user's options.
|
| 951 |
+
|
| 952 |
+
Each generator should take at least one argument, ``inner``,
|
| 953 |
+
and wrap the pieces of text generated by this.
|
| 954 |
+
|
| 955 |
+
Always yield 2-tuples: (code, text). If "code" is 1, the text
|
| 956 |
+
is part of the original tokensource being highlighted, if it's
|
| 957 |
+
0, the text is some piece of wrapping. This makes it possible to
|
| 958 |
+
use several different wrappers that process the original source
|
| 959 |
+
linewise, e.g. line number generators.
|
| 960 |
+
"""
|
| 961 |
+
source = self._format_lines(tokensource)
|
| 962 |
+
|
| 963 |
+
# As a special case, we wrap line numbers before line highlighting
|
| 964 |
+
# so the line numbers get wrapped in the highlighting tag.
|
| 965 |
+
if not self.nowrap and self.linenos == 2:
|
| 966 |
+
source = self._wrap_inlinelinenos(source)
|
| 967 |
+
|
| 968 |
+
if self.hl_lines:
|
| 969 |
+
source = self._highlight_lines(source)
|
| 970 |
+
|
| 971 |
+
if not self.nowrap:
|
| 972 |
+
if self.lineanchors:
|
| 973 |
+
source = self._wrap_lineanchors(source)
|
| 974 |
+
if self.linespans:
|
| 975 |
+
source = self._wrap_linespans(source)
|
| 976 |
+
source = self.wrap(source, outfile)
|
| 977 |
+
if self.linenos == 1:
|
| 978 |
+
source = self._wrap_tablelinenos(source)
|
| 979 |
+
if self.full:
|
| 980 |
+
source = self._wrap_full(source, outfile)
|
| 981 |
+
|
| 982 |
+
for t, piece in source:
|
| 983 |
+
outfile.write(piece)
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py
ADDED
|
@@ -0,0 +1,641 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.img
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for Pixmap output.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import os
|
| 12 |
+
import sys
|
| 13 |
+
|
| 14 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 15 |
+
from pip._vendor.pygments.util import get_bool_opt, get_int_opt, get_list_opt, \
|
| 16 |
+
get_choice_opt
|
| 17 |
+
|
| 18 |
+
import subprocess
|
| 19 |
+
|
| 20 |
+
# Import this carefully
|
| 21 |
+
try:
|
| 22 |
+
from PIL import Image, ImageDraw, ImageFont
|
| 23 |
+
pil_available = True
|
| 24 |
+
except ImportError:
|
| 25 |
+
pil_available = False
|
| 26 |
+
|
| 27 |
+
try:
|
| 28 |
+
import _winreg
|
| 29 |
+
except ImportError:
|
| 30 |
+
try:
|
| 31 |
+
import winreg as _winreg
|
| 32 |
+
except ImportError:
|
| 33 |
+
_winreg = None
|
| 34 |
+
|
| 35 |
+
__all__ = ['ImageFormatter', 'GifImageFormatter', 'JpgImageFormatter',
|
| 36 |
+
'BmpImageFormatter']
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
# For some unknown reason every font calls it something different
|
| 40 |
+
STYLES = {
|
| 41 |
+
'NORMAL': ['', 'Roman', 'Book', 'Normal', 'Regular', 'Medium'],
|
| 42 |
+
'ITALIC': ['Oblique', 'Italic'],
|
| 43 |
+
'BOLD': ['Bold'],
|
| 44 |
+
'BOLDITALIC': ['Bold Oblique', 'Bold Italic'],
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
# A sane default for modern systems
|
| 48 |
+
DEFAULT_FONT_NAME_NIX = 'DejaVu Sans Mono'
|
| 49 |
+
DEFAULT_FONT_NAME_WIN = 'Courier New'
|
| 50 |
+
DEFAULT_FONT_NAME_MAC = 'Menlo'
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
class PilNotAvailable(ImportError):
|
| 54 |
+
"""When Python imaging library is not available"""
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
class FontNotFound(Exception):
|
| 58 |
+
"""When there are no usable fonts specified"""
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
class FontManager:
|
| 62 |
+
"""
|
| 63 |
+
Manages a set of fonts: normal, italic, bold, etc...
|
| 64 |
+
"""
|
| 65 |
+
|
| 66 |
+
def __init__(self, font_name, font_size=14):
|
| 67 |
+
self.font_name = font_name
|
| 68 |
+
self.font_size = font_size
|
| 69 |
+
self.fonts = {}
|
| 70 |
+
self.encoding = None
|
| 71 |
+
if sys.platform.startswith('win'):
|
| 72 |
+
if not font_name:
|
| 73 |
+
self.font_name = DEFAULT_FONT_NAME_WIN
|
| 74 |
+
self._create_win()
|
| 75 |
+
elif sys.platform.startswith('darwin'):
|
| 76 |
+
if not font_name:
|
| 77 |
+
self.font_name = DEFAULT_FONT_NAME_MAC
|
| 78 |
+
self._create_mac()
|
| 79 |
+
else:
|
| 80 |
+
if not font_name:
|
| 81 |
+
self.font_name = DEFAULT_FONT_NAME_NIX
|
| 82 |
+
self._create_nix()
|
| 83 |
+
|
| 84 |
+
def _get_nix_font_path(self, name, style):
|
| 85 |
+
proc = subprocess.Popen(['fc-list', "%s:style=%s" % (name, style), 'file'],
|
| 86 |
+
stdout=subprocess.PIPE, stderr=None)
|
| 87 |
+
stdout, _ = proc.communicate()
|
| 88 |
+
if proc.returncode == 0:
|
| 89 |
+
lines = stdout.splitlines()
|
| 90 |
+
for line in lines:
|
| 91 |
+
if line.startswith(b'Fontconfig warning:'):
|
| 92 |
+
continue
|
| 93 |
+
path = line.decode().strip().strip(':')
|
| 94 |
+
if path:
|
| 95 |
+
return path
|
| 96 |
+
return None
|
| 97 |
+
|
| 98 |
+
def _create_nix(self):
|
| 99 |
+
for name in STYLES['NORMAL']:
|
| 100 |
+
path = self._get_nix_font_path(self.font_name, name)
|
| 101 |
+
if path is not None:
|
| 102 |
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
| 103 |
+
break
|
| 104 |
+
else:
|
| 105 |
+
raise FontNotFound('No usable fonts named: "%s"' %
|
| 106 |
+
self.font_name)
|
| 107 |
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
| 108 |
+
for stylename in STYLES[style]:
|
| 109 |
+
path = self._get_nix_font_path(self.font_name, stylename)
|
| 110 |
+
if path is not None:
|
| 111 |
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
| 112 |
+
break
|
| 113 |
+
else:
|
| 114 |
+
if style == 'BOLDITALIC':
|
| 115 |
+
self.fonts[style] = self.fonts['BOLD']
|
| 116 |
+
else:
|
| 117 |
+
self.fonts[style] = self.fonts['NORMAL']
|
| 118 |
+
|
| 119 |
+
def _get_mac_font_path(self, font_map, name, style):
|
| 120 |
+
return font_map.get((name + ' ' + style).strip().lower())
|
| 121 |
+
|
| 122 |
+
def _create_mac(self):
|
| 123 |
+
font_map = {}
|
| 124 |
+
for font_dir in (os.path.join(os.getenv("HOME"), 'Library/Fonts/'),
|
| 125 |
+
'/Library/Fonts/', '/System/Library/Fonts/'):
|
| 126 |
+
font_map.update(
|
| 127 |
+
(os.path.splitext(f)[0].lower(), os.path.join(font_dir, f))
|
| 128 |
+
for f in os.listdir(font_dir)
|
| 129 |
+
if f.lower().endswith(('ttf', 'ttc')))
|
| 130 |
+
|
| 131 |
+
for name in STYLES['NORMAL']:
|
| 132 |
+
path = self._get_mac_font_path(font_map, self.font_name, name)
|
| 133 |
+
if path is not None:
|
| 134 |
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
| 135 |
+
break
|
| 136 |
+
else:
|
| 137 |
+
raise FontNotFound('No usable fonts named: "%s"' %
|
| 138 |
+
self.font_name)
|
| 139 |
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
| 140 |
+
for stylename in STYLES[style]:
|
| 141 |
+
path = self._get_mac_font_path(font_map, self.font_name, stylename)
|
| 142 |
+
if path is not None:
|
| 143 |
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
| 144 |
+
break
|
| 145 |
+
else:
|
| 146 |
+
if style == 'BOLDITALIC':
|
| 147 |
+
self.fonts[style] = self.fonts['BOLD']
|
| 148 |
+
else:
|
| 149 |
+
self.fonts[style] = self.fonts['NORMAL']
|
| 150 |
+
|
| 151 |
+
def _lookup_win(self, key, basename, styles, fail=False):
|
| 152 |
+
for suffix in ('', ' (TrueType)'):
|
| 153 |
+
for style in styles:
|
| 154 |
+
try:
|
| 155 |
+
valname = '%s%s%s' % (basename, style and ' '+style, suffix)
|
| 156 |
+
val, _ = _winreg.QueryValueEx(key, valname)
|
| 157 |
+
return val
|
| 158 |
+
except OSError:
|
| 159 |
+
continue
|
| 160 |
+
else:
|
| 161 |
+
if fail:
|
| 162 |
+
raise FontNotFound('Font %s (%s) not found in registry' %
|
| 163 |
+
(basename, styles[0]))
|
| 164 |
+
return None
|
| 165 |
+
|
| 166 |
+
def _create_win(self):
|
| 167 |
+
lookuperror = None
|
| 168 |
+
keynames = [ (_winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows NT\CurrentVersion\Fonts'),
|
| 169 |
+
(_winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Fonts'),
|
| 170 |
+
(_winreg.HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows NT\CurrentVersion\Fonts'),
|
| 171 |
+
(_winreg.HKEY_LOCAL_MACHINE, r'Software\Microsoft\Windows\CurrentVersion\Fonts') ]
|
| 172 |
+
for keyname in keynames:
|
| 173 |
+
try:
|
| 174 |
+
key = _winreg.OpenKey(*keyname)
|
| 175 |
+
try:
|
| 176 |
+
path = self._lookup_win(key, self.font_name, STYLES['NORMAL'], True)
|
| 177 |
+
self.fonts['NORMAL'] = ImageFont.truetype(path, self.font_size)
|
| 178 |
+
for style in ('ITALIC', 'BOLD', 'BOLDITALIC'):
|
| 179 |
+
path = self._lookup_win(key, self.font_name, STYLES[style])
|
| 180 |
+
if path:
|
| 181 |
+
self.fonts[style] = ImageFont.truetype(path, self.font_size)
|
| 182 |
+
else:
|
| 183 |
+
if style == 'BOLDITALIC':
|
| 184 |
+
self.fonts[style] = self.fonts['BOLD']
|
| 185 |
+
else:
|
| 186 |
+
self.fonts[style] = self.fonts['NORMAL']
|
| 187 |
+
return
|
| 188 |
+
except FontNotFound as err:
|
| 189 |
+
lookuperror = err
|
| 190 |
+
finally:
|
| 191 |
+
_winreg.CloseKey(key)
|
| 192 |
+
except OSError:
|
| 193 |
+
pass
|
| 194 |
+
else:
|
| 195 |
+
# If we get here, we checked all registry keys and had no luck
|
| 196 |
+
# We can be in one of two situations now:
|
| 197 |
+
# * All key lookups failed. In this case lookuperror is None and we
|
| 198 |
+
# will raise a generic error
|
| 199 |
+
# * At least one lookup failed with a FontNotFound error. In this
|
| 200 |
+
# case, we will raise that as a more specific error
|
| 201 |
+
if lookuperror:
|
| 202 |
+
raise lookuperror
|
| 203 |
+
raise FontNotFound('Can\'t open Windows font registry key')
|
| 204 |
+
|
| 205 |
+
def get_char_size(self):
|
| 206 |
+
"""
|
| 207 |
+
Get the character size.
|
| 208 |
+
"""
|
| 209 |
+
return self.fonts['NORMAL'].getsize('M')
|
| 210 |
+
|
| 211 |
+
def get_text_size(self, text):
|
| 212 |
+
"""
|
| 213 |
+
Get the text size(width, height).
|
| 214 |
+
"""
|
| 215 |
+
return self.fonts['NORMAL'].getsize(text)
|
| 216 |
+
|
| 217 |
+
def get_font(self, bold, oblique):
|
| 218 |
+
"""
|
| 219 |
+
Get the font based on bold and italic flags.
|
| 220 |
+
"""
|
| 221 |
+
if bold and oblique:
|
| 222 |
+
return self.fonts['BOLDITALIC']
|
| 223 |
+
elif bold:
|
| 224 |
+
return self.fonts['BOLD']
|
| 225 |
+
elif oblique:
|
| 226 |
+
return self.fonts['ITALIC']
|
| 227 |
+
else:
|
| 228 |
+
return self.fonts['NORMAL']
|
| 229 |
+
|
| 230 |
+
|
| 231 |
+
class ImageFormatter(Formatter):
|
| 232 |
+
"""
|
| 233 |
+
Create a PNG image from source code. This uses the Python Imaging Library to
|
| 234 |
+
generate a pixmap from the source code.
|
| 235 |
+
|
| 236 |
+
.. versionadded:: 0.10
|
| 237 |
+
|
| 238 |
+
Additional options accepted:
|
| 239 |
+
|
| 240 |
+
`image_format`
|
| 241 |
+
An image format to output to that is recognised by PIL, these include:
|
| 242 |
+
|
| 243 |
+
* "PNG" (default)
|
| 244 |
+
* "JPEG"
|
| 245 |
+
* "BMP"
|
| 246 |
+
* "GIF"
|
| 247 |
+
|
| 248 |
+
`line_pad`
|
| 249 |
+
The extra spacing (in pixels) between each line of text.
|
| 250 |
+
|
| 251 |
+
Default: 2
|
| 252 |
+
|
| 253 |
+
`font_name`
|
| 254 |
+
The font name to be used as the base font from which others, such as
|
| 255 |
+
bold and italic fonts will be generated. This really should be a
|
| 256 |
+
monospace font to look sane.
|
| 257 |
+
|
| 258 |
+
Default: "Courier New" on Windows, "Menlo" on Mac OS, and
|
| 259 |
+
"DejaVu Sans Mono" on \\*nix
|
| 260 |
+
|
| 261 |
+
`font_size`
|
| 262 |
+
The font size in points to be used.
|
| 263 |
+
|
| 264 |
+
Default: 14
|
| 265 |
+
|
| 266 |
+
`image_pad`
|
| 267 |
+
The padding, in pixels to be used at each edge of the resulting image.
|
| 268 |
+
|
| 269 |
+
Default: 10
|
| 270 |
+
|
| 271 |
+
`line_numbers`
|
| 272 |
+
Whether line numbers should be shown: True/False
|
| 273 |
+
|
| 274 |
+
Default: True
|
| 275 |
+
|
| 276 |
+
`line_number_start`
|
| 277 |
+
The line number of the first line.
|
| 278 |
+
|
| 279 |
+
Default: 1
|
| 280 |
+
|
| 281 |
+
`line_number_step`
|
| 282 |
+
The step used when printing line numbers.
|
| 283 |
+
|
| 284 |
+
Default: 1
|
| 285 |
+
|
| 286 |
+
`line_number_bg`
|
| 287 |
+
The background colour (in "#123456" format) of the line number bar, or
|
| 288 |
+
None to use the style background color.
|
| 289 |
+
|
| 290 |
+
Default: "#eed"
|
| 291 |
+
|
| 292 |
+
`line_number_fg`
|
| 293 |
+
The text color of the line numbers (in "#123456"-like format).
|
| 294 |
+
|
| 295 |
+
Default: "#886"
|
| 296 |
+
|
| 297 |
+
`line_number_chars`
|
| 298 |
+
The number of columns of line numbers allowable in the line number
|
| 299 |
+
margin.
|
| 300 |
+
|
| 301 |
+
Default: 2
|
| 302 |
+
|
| 303 |
+
`line_number_bold`
|
| 304 |
+
Whether line numbers will be bold: True/False
|
| 305 |
+
|
| 306 |
+
Default: False
|
| 307 |
+
|
| 308 |
+
`line_number_italic`
|
| 309 |
+
Whether line numbers will be italicized: True/False
|
| 310 |
+
|
| 311 |
+
Default: False
|
| 312 |
+
|
| 313 |
+
`line_number_separator`
|
| 314 |
+
Whether a line will be drawn between the line number area and the
|
| 315 |
+
source code area: True/False
|
| 316 |
+
|
| 317 |
+
Default: True
|
| 318 |
+
|
| 319 |
+
`line_number_pad`
|
| 320 |
+
The horizontal padding (in pixels) between the line number margin, and
|
| 321 |
+
the source code area.
|
| 322 |
+
|
| 323 |
+
Default: 6
|
| 324 |
+
|
| 325 |
+
`hl_lines`
|
| 326 |
+
Specify a list of lines to be highlighted.
|
| 327 |
+
|
| 328 |
+
.. versionadded:: 1.2
|
| 329 |
+
|
| 330 |
+
Default: empty list
|
| 331 |
+
|
| 332 |
+
`hl_color`
|
| 333 |
+
Specify the color for highlighting lines.
|
| 334 |
+
|
| 335 |
+
.. versionadded:: 1.2
|
| 336 |
+
|
| 337 |
+
Default: highlight color of the selected style
|
| 338 |
+
"""
|
| 339 |
+
|
| 340 |
+
# Required by the pygments mapper
|
| 341 |
+
name = 'img'
|
| 342 |
+
aliases = ['img', 'IMG', 'png']
|
| 343 |
+
filenames = ['*.png']
|
| 344 |
+
|
| 345 |
+
unicodeoutput = False
|
| 346 |
+
|
| 347 |
+
default_image_format = 'png'
|
| 348 |
+
|
| 349 |
+
def __init__(self, **options):
|
| 350 |
+
"""
|
| 351 |
+
See the class docstring for explanation of options.
|
| 352 |
+
"""
|
| 353 |
+
if not pil_available:
|
| 354 |
+
raise PilNotAvailable(
|
| 355 |
+
'Python Imaging Library is required for this formatter')
|
| 356 |
+
Formatter.__init__(self, **options)
|
| 357 |
+
self.encoding = 'latin1' # let pygments.format() do the right thing
|
| 358 |
+
# Read the style
|
| 359 |
+
self.styles = dict(self.style)
|
| 360 |
+
if self.style.background_color is None:
|
| 361 |
+
self.background_color = '#fff'
|
| 362 |
+
else:
|
| 363 |
+
self.background_color = self.style.background_color
|
| 364 |
+
# Image options
|
| 365 |
+
self.image_format = get_choice_opt(
|
| 366 |
+
options, 'image_format', ['png', 'jpeg', 'gif', 'bmp'],
|
| 367 |
+
self.default_image_format, normcase=True)
|
| 368 |
+
self.image_pad = get_int_opt(options, 'image_pad', 10)
|
| 369 |
+
self.line_pad = get_int_opt(options, 'line_pad', 2)
|
| 370 |
+
# The fonts
|
| 371 |
+
fontsize = get_int_opt(options, 'font_size', 14)
|
| 372 |
+
self.fonts = FontManager(options.get('font_name', ''), fontsize)
|
| 373 |
+
self.fontw, self.fonth = self.fonts.get_char_size()
|
| 374 |
+
# Line number options
|
| 375 |
+
self.line_number_fg = options.get('line_number_fg', '#886')
|
| 376 |
+
self.line_number_bg = options.get('line_number_bg', '#eed')
|
| 377 |
+
self.line_number_chars = get_int_opt(options,
|
| 378 |
+
'line_number_chars', 2)
|
| 379 |
+
self.line_number_bold = get_bool_opt(options,
|
| 380 |
+
'line_number_bold', False)
|
| 381 |
+
self.line_number_italic = get_bool_opt(options,
|
| 382 |
+
'line_number_italic', False)
|
| 383 |
+
self.line_number_pad = get_int_opt(options, 'line_number_pad', 6)
|
| 384 |
+
self.line_numbers = get_bool_opt(options, 'line_numbers', True)
|
| 385 |
+
self.line_number_separator = get_bool_opt(options,
|
| 386 |
+
'line_number_separator', True)
|
| 387 |
+
self.line_number_step = get_int_opt(options, 'line_number_step', 1)
|
| 388 |
+
self.line_number_start = get_int_opt(options, 'line_number_start', 1)
|
| 389 |
+
if self.line_numbers:
|
| 390 |
+
self.line_number_width = (self.fontw * self.line_number_chars +
|
| 391 |
+
self.line_number_pad * 2)
|
| 392 |
+
else:
|
| 393 |
+
self.line_number_width = 0
|
| 394 |
+
self.hl_lines = []
|
| 395 |
+
hl_lines_str = get_list_opt(options, 'hl_lines', [])
|
| 396 |
+
for line in hl_lines_str:
|
| 397 |
+
try:
|
| 398 |
+
self.hl_lines.append(int(line))
|
| 399 |
+
except ValueError:
|
| 400 |
+
pass
|
| 401 |
+
self.hl_color = options.get('hl_color',
|
| 402 |
+
self.style.highlight_color) or '#f90'
|
| 403 |
+
self.drawables = []
|
| 404 |
+
|
| 405 |
+
def get_style_defs(self, arg=''):
|
| 406 |
+
raise NotImplementedError('The -S option is meaningless for the image '
|
| 407 |
+
'formatter. Use -O style=<stylename> instead.')
|
| 408 |
+
|
| 409 |
+
def _get_line_height(self):
|
| 410 |
+
"""
|
| 411 |
+
Get the height of a line.
|
| 412 |
+
"""
|
| 413 |
+
return self.fonth + self.line_pad
|
| 414 |
+
|
| 415 |
+
def _get_line_y(self, lineno):
|
| 416 |
+
"""
|
| 417 |
+
Get the Y coordinate of a line number.
|
| 418 |
+
"""
|
| 419 |
+
return lineno * self._get_line_height() + self.image_pad
|
| 420 |
+
|
| 421 |
+
def _get_char_width(self):
|
| 422 |
+
"""
|
| 423 |
+
Get the width of a character.
|
| 424 |
+
"""
|
| 425 |
+
return self.fontw
|
| 426 |
+
|
| 427 |
+
def _get_char_x(self, linelength):
|
| 428 |
+
"""
|
| 429 |
+
Get the X coordinate of a character position.
|
| 430 |
+
"""
|
| 431 |
+
return linelength + self.image_pad + self.line_number_width
|
| 432 |
+
|
| 433 |
+
def _get_text_pos(self, linelength, lineno):
|
| 434 |
+
"""
|
| 435 |
+
Get the actual position for a character and line position.
|
| 436 |
+
"""
|
| 437 |
+
return self._get_char_x(linelength), self._get_line_y(lineno)
|
| 438 |
+
|
| 439 |
+
def _get_linenumber_pos(self, lineno):
|
| 440 |
+
"""
|
| 441 |
+
Get the actual position for the start of a line number.
|
| 442 |
+
"""
|
| 443 |
+
return (self.image_pad, self._get_line_y(lineno))
|
| 444 |
+
|
| 445 |
+
def _get_text_color(self, style):
|
| 446 |
+
"""
|
| 447 |
+
Get the correct color for the token from the style.
|
| 448 |
+
"""
|
| 449 |
+
if style['color'] is not None:
|
| 450 |
+
fill = '#' + style['color']
|
| 451 |
+
else:
|
| 452 |
+
fill = '#000'
|
| 453 |
+
return fill
|
| 454 |
+
|
| 455 |
+
def _get_text_bg_color(self, style):
|
| 456 |
+
"""
|
| 457 |
+
Get the correct background color for the token from the style.
|
| 458 |
+
"""
|
| 459 |
+
if style['bgcolor'] is not None:
|
| 460 |
+
bg_color = '#' + style['bgcolor']
|
| 461 |
+
else:
|
| 462 |
+
bg_color = None
|
| 463 |
+
return bg_color
|
| 464 |
+
|
| 465 |
+
def _get_style_font(self, style):
|
| 466 |
+
"""
|
| 467 |
+
Get the correct font for the style.
|
| 468 |
+
"""
|
| 469 |
+
return self.fonts.get_font(style['bold'], style['italic'])
|
| 470 |
+
|
| 471 |
+
def _get_image_size(self, maxlinelength, maxlineno):
|
| 472 |
+
"""
|
| 473 |
+
Get the required image size.
|
| 474 |
+
"""
|
| 475 |
+
return (self._get_char_x(maxlinelength) + self.image_pad,
|
| 476 |
+
self._get_line_y(maxlineno + 0) + self.image_pad)
|
| 477 |
+
|
| 478 |
+
def _draw_linenumber(self, posno, lineno):
|
| 479 |
+
"""
|
| 480 |
+
Remember a line number drawable to paint later.
|
| 481 |
+
"""
|
| 482 |
+
self._draw_text(
|
| 483 |
+
self._get_linenumber_pos(posno),
|
| 484 |
+
str(lineno).rjust(self.line_number_chars),
|
| 485 |
+
font=self.fonts.get_font(self.line_number_bold,
|
| 486 |
+
self.line_number_italic),
|
| 487 |
+
text_fg=self.line_number_fg,
|
| 488 |
+
text_bg=None,
|
| 489 |
+
)
|
| 490 |
+
|
| 491 |
+
def _draw_text(self, pos, text, font, text_fg, text_bg):
|
| 492 |
+
"""
|
| 493 |
+
Remember a single drawable tuple to paint later.
|
| 494 |
+
"""
|
| 495 |
+
self.drawables.append((pos, text, font, text_fg, text_bg))
|
| 496 |
+
|
| 497 |
+
def _create_drawables(self, tokensource):
|
| 498 |
+
"""
|
| 499 |
+
Create drawables for the token content.
|
| 500 |
+
"""
|
| 501 |
+
lineno = charno = maxcharno = 0
|
| 502 |
+
maxlinelength = linelength = 0
|
| 503 |
+
for ttype, value in tokensource:
|
| 504 |
+
while ttype not in self.styles:
|
| 505 |
+
ttype = ttype.parent
|
| 506 |
+
style = self.styles[ttype]
|
| 507 |
+
# TODO: make sure tab expansion happens earlier in the chain. It
|
| 508 |
+
# really ought to be done on the input, as to do it right here is
|
| 509 |
+
# quite complex.
|
| 510 |
+
value = value.expandtabs(4)
|
| 511 |
+
lines = value.splitlines(True)
|
| 512 |
+
# print lines
|
| 513 |
+
for i, line in enumerate(lines):
|
| 514 |
+
temp = line.rstrip('\n')
|
| 515 |
+
if temp:
|
| 516 |
+
self._draw_text(
|
| 517 |
+
self._get_text_pos(linelength, lineno),
|
| 518 |
+
temp,
|
| 519 |
+
font = self._get_style_font(style),
|
| 520 |
+
text_fg = self._get_text_color(style),
|
| 521 |
+
text_bg = self._get_text_bg_color(style),
|
| 522 |
+
)
|
| 523 |
+
temp_width, temp_hight = self.fonts.get_text_size(temp)
|
| 524 |
+
linelength += temp_width
|
| 525 |
+
maxlinelength = max(maxlinelength, linelength)
|
| 526 |
+
charno += len(temp)
|
| 527 |
+
maxcharno = max(maxcharno, charno)
|
| 528 |
+
if line.endswith('\n'):
|
| 529 |
+
# add a line for each extra line in the value
|
| 530 |
+
linelength = 0
|
| 531 |
+
charno = 0
|
| 532 |
+
lineno += 1
|
| 533 |
+
self.maxlinelength = maxlinelength
|
| 534 |
+
self.maxcharno = maxcharno
|
| 535 |
+
self.maxlineno = lineno
|
| 536 |
+
|
| 537 |
+
def _draw_line_numbers(self):
|
| 538 |
+
"""
|
| 539 |
+
Create drawables for the line numbers.
|
| 540 |
+
"""
|
| 541 |
+
if not self.line_numbers:
|
| 542 |
+
return
|
| 543 |
+
for p in range(self.maxlineno):
|
| 544 |
+
n = p + self.line_number_start
|
| 545 |
+
if (n % self.line_number_step) == 0:
|
| 546 |
+
self._draw_linenumber(p, n)
|
| 547 |
+
|
| 548 |
+
def _paint_line_number_bg(self, im):
|
| 549 |
+
"""
|
| 550 |
+
Paint the line number background on the image.
|
| 551 |
+
"""
|
| 552 |
+
if not self.line_numbers:
|
| 553 |
+
return
|
| 554 |
+
if self.line_number_fg is None:
|
| 555 |
+
return
|
| 556 |
+
draw = ImageDraw.Draw(im)
|
| 557 |
+
recth = im.size[-1]
|
| 558 |
+
rectw = self.image_pad + self.line_number_width - self.line_number_pad
|
| 559 |
+
draw.rectangle([(0, 0), (rectw, recth)],
|
| 560 |
+
fill=self.line_number_bg)
|
| 561 |
+
if self.line_number_separator:
|
| 562 |
+
draw.line([(rectw, 0), (rectw, recth)], fill=self.line_number_fg)
|
| 563 |
+
del draw
|
| 564 |
+
|
| 565 |
+
def format(self, tokensource, outfile):
|
| 566 |
+
"""
|
| 567 |
+
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
|
| 568 |
+
tuples and write it into ``outfile``.
|
| 569 |
+
|
| 570 |
+
This implementation calculates where it should draw each token on the
|
| 571 |
+
pixmap, then calculates the required pixmap size and draws the items.
|
| 572 |
+
"""
|
| 573 |
+
self._create_drawables(tokensource)
|
| 574 |
+
self._draw_line_numbers()
|
| 575 |
+
im = Image.new(
|
| 576 |
+
'RGB',
|
| 577 |
+
self._get_image_size(self.maxlinelength, self.maxlineno),
|
| 578 |
+
self.background_color
|
| 579 |
+
)
|
| 580 |
+
self._paint_line_number_bg(im)
|
| 581 |
+
draw = ImageDraw.Draw(im)
|
| 582 |
+
# Highlight
|
| 583 |
+
if self.hl_lines:
|
| 584 |
+
x = self.image_pad + self.line_number_width - self.line_number_pad + 1
|
| 585 |
+
recth = self._get_line_height()
|
| 586 |
+
rectw = im.size[0] - x
|
| 587 |
+
for linenumber in self.hl_lines:
|
| 588 |
+
y = self._get_line_y(linenumber - 1)
|
| 589 |
+
draw.rectangle([(x, y), (x + rectw, y + recth)],
|
| 590 |
+
fill=self.hl_color)
|
| 591 |
+
for pos, value, font, text_fg, text_bg in self.drawables:
|
| 592 |
+
if text_bg:
|
| 593 |
+
text_size = draw.textsize(text=value, font=font)
|
| 594 |
+
draw.rectangle([pos[0], pos[1], pos[0] + text_size[0], pos[1] + text_size[1]], fill=text_bg)
|
| 595 |
+
draw.text(pos, value, font=font, fill=text_fg)
|
| 596 |
+
im.save(outfile, self.image_format.upper())
|
| 597 |
+
|
| 598 |
+
|
| 599 |
+
# Add one formatter per format, so that the "-f gif" option gives the correct result
|
| 600 |
+
# when used in pygmentize.
|
| 601 |
+
|
| 602 |
+
class GifImageFormatter(ImageFormatter):
|
| 603 |
+
"""
|
| 604 |
+
Create a GIF image from source code. This uses the Python Imaging Library to
|
| 605 |
+
generate a pixmap from the source code.
|
| 606 |
+
|
| 607 |
+
.. versionadded:: 1.0
|
| 608 |
+
"""
|
| 609 |
+
|
| 610 |
+
name = 'img_gif'
|
| 611 |
+
aliases = ['gif']
|
| 612 |
+
filenames = ['*.gif']
|
| 613 |
+
default_image_format = 'gif'
|
| 614 |
+
|
| 615 |
+
|
| 616 |
+
class JpgImageFormatter(ImageFormatter):
|
| 617 |
+
"""
|
| 618 |
+
Create a JPEG image from source code. This uses the Python Imaging Library to
|
| 619 |
+
generate a pixmap from the source code.
|
| 620 |
+
|
| 621 |
+
.. versionadded:: 1.0
|
| 622 |
+
"""
|
| 623 |
+
|
| 624 |
+
name = 'img_jpg'
|
| 625 |
+
aliases = ['jpg', 'jpeg']
|
| 626 |
+
filenames = ['*.jpg']
|
| 627 |
+
default_image_format = 'jpeg'
|
| 628 |
+
|
| 629 |
+
|
| 630 |
+
class BmpImageFormatter(ImageFormatter):
|
| 631 |
+
"""
|
| 632 |
+
Create a bitmap image from source code. This uses the Python Imaging Library to
|
| 633 |
+
generate a pixmap from the source code.
|
| 634 |
+
|
| 635 |
+
.. versionadded:: 1.0
|
| 636 |
+
"""
|
| 637 |
+
|
| 638 |
+
name = 'img_bmp'
|
| 639 |
+
aliases = ['bmp', 'bitmap']
|
| 640 |
+
filenames = ['*.bmp']
|
| 641 |
+
default_image_format = 'bmp'
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.irc
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for IRC output
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 12 |
+
from pip._vendor.pygments.token import Keyword, Name, Comment, String, Error, \
|
| 13 |
+
Number, Operator, Generic, Token, Whitespace
|
| 14 |
+
from pip._vendor.pygments.util import get_choice_opt
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
__all__ = ['IRCFormatter']
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
#: Map token types to a tuple of color values for light and dark
|
| 21 |
+
#: backgrounds.
|
| 22 |
+
IRC_COLORS = {
|
| 23 |
+
Token: ('', ''),
|
| 24 |
+
|
| 25 |
+
Whitespace: ('gray', 'brightblack'),
|
| 26 |
+
Comment: ('gray', 'brightblack'),
|
| 27 |
+
Comment.Preproc: ('cyan', 'brightcyan'),
|
| 28 |
+
Keyword: ('blue', 'brightblue'),
|
| 29 |
+
Keyword.Type: ('cyan', 'brightcyan'),
|
| 30 |
+
Operator.Word: ('magenta', 'brightcyan'),
|
| 31 |
+
Name.Builtin: ('cyan', 'brightcyan'),
|
| 32 |
+
Name.Function: ('green', 'brightgreen'),
|
| 33 |
+
Name.Namespace: ('_cyan_', '_brightcyan_'),
|
| 34 |
+
Name.Class: ('_green_', '_brightgreen_'),
|
| 35 |
+
Name.Exception: ('cyan', 'brightcyan'),
|
| 36 |
+
Name.Decorator: ('brightblack', 'gray'),
|
| 37 |
+
Name.Variable: ('red', 'brightred'),
|
| 38 |
+
Name.Constant: ('red', 'brightred'),
|
| 39 |
+
Name.Attribute: ('cyan', 'brightcyan'),
|
| 40 |
+
Name.Tag: ('brightblue', 'brightblue'),
|
| 41 |
+
String: ('yellow', 'yellow'),
|
| 42 |
+
Number: ('blue', 'brightblue'),
|
| 43 |
+
|
| 44 |
+
Generic.Deleted: ('brightred', 'brightred'),
|
| 45 |
+
Generic.Inserted: ('green', 'brightgreen'),
|
| 46 |
+
Generic.Heading: ('**', '**'),
|
| 47 |
+
Generic.Subheading: ('*magenta*', '*brightmagenta*'),
|
| 48 |
+
Generic.Error: ('brightred', 'brightred'),
|
| 49 |
+
|
| 50 |
+
Error: ('_brightred_', '_brightred_'),
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
IRC_COLOR_MAP = {
|
| 55 |
+
'white': 0,
|
| 56 |
+
'black': 1,
|
| 57 |
+
'blue': 2,
|
| 58 |
+
'brightgreen': 3,
|
| 59 |
+
'brightred': 4,
|
| 60 |
+
'yellow': 5,
|
| 61 |
+
'magenta': 6,
|
| 62 |
+
'orange': 7,
|
| 63 |
+
'green': 7, #compat w/ ansi
|
| 64 |
+
'brightyellow': 8,
|
| 65 |
+
'lightgreen': 9,
|
| 66 |
+
'brightcyan': 9, # compat w/ ansi
|
| 67 |
+
'cyan': 10,
|
| 68 |
+
'lightblue': 11,
|
| 69 |
+
'red': 11, # compat w/ ansi
|
| 70 |
+
'brightblue': 12,
|
| 71 |
+
'brightmagenta': 13,
|
| 72 |
+
'brightblack': 14,
|
| 73 |
+
'gray': 15,
|
| 74 |
+
}
|
| 75 |
+
|
| 76 |
+
def ircformat(color, text):
|
| 77 |
+
if len(color) < 1:
|
| 78 |
+
return text
|
| 79 |
+
add = sub = ''
|
| 80 |
+
if '_' in color: # italic
|
| 81 |
+
add += '\x1D'
|
| 82 |
+
sub = '\x1D' + sub
|
| 83 |
+
color = color.strip('_')
|
| 84 |
+
if '*' in color: # bold
|
| 85 |
+
add += '\x02'
|
| 86 |
+
sub = '\x02' + sub
|
| 87 |
+
color = color.strip('*')
|
| 88 |
+
# underline (\x1F) not supported
|
| 89 |
+
# backgrounds (\x03FF,BB) not supported
|
| 90 |
+
if len(color) > 0: # actual color - may have issues with ircformat("red", "blah")+"10" type stuff
|
| 91 |
+
add += '\x03' + str(IRC_COLOR_MAP[color]).zfill(2)
|
| 92 |
+
sub = '\x03' + sub
|
| 93 |
+
return add + text + sub
|
| 94 |
+
return '<'+add+'>'+text+'</'+sub+'>'
|
| 95 |
+
|
| 96 |
+
|
| 97 |
+
class IRCFormatter(Formatter):
|
| 98 |
+
r"""
|
| 99 |
+
Format tokens with IRC color sequences
|
| 100 |
+
|
| 101 |
+
The `get_style_defs()` method doesn't do anything special since there is
|
| 102 |
+
no support for common styles.
|
| 103 |
+
|
| 104 |
+
Options accepted:
|
| 105 |
+
|
| 106 |
+
`bg`
|
| 107 |
+
Set to ``"light"`` or ``"dark"`` depending on the terminal's background
|
| 108 |
+
(default: ``"light"``).
|
| 109 |
+
|
| 110 |
+
`colorscheme`
|
| 111 |
+
A dictionary mapping token types to (lightbg, darkbg) color names or
|
| 112 |
+
``None`` (default: ``None`` = use builtin colorscheme).
|
| 113 |
+
|
| 114 |
+
`linenos`
|
| 115 |
+
Set to ``True`` to have line numbers in the output as well
|
| 116 |
+
(default: ``False`` = no line numbers).
|
| 117 |
+
"""
|
| 118 |
+
name = 'IRC'
|
| 119 |
+
aliases = ['irc', 'IRC']
|
| 120 |
+
filenames = []
|
| 121 |
+
|
| 122 |
+
def __init__(self, **options):
|
| 123 |
+
Formatter.__init__(self, **options)
|
| 124 |
+
self.darkbg = get_choice_opt(options, 'bg',
|
| 125 |
+
['light', 'dark'], 'light') == 'dark'
|
| 126 |
+
self.colorscheme = options.get('colorscheme', None) or IRC_COLORS
|
| 127 |
+
self.linenos = options.get('linenos', False)
|
| 128 |
+
self._lineno = 0
|
| 129 |
+
|
| 130 |
+
def _write_lineno(self, outfile):
|
| 131 |
+
self._lineno += 1
|
| 132 |
+
outfile.write("\n%04d: " % self._lineno)
|
| 133 |
+
|
| 134 |
+
def _format_unencoded_with_lineno(self, tokensource, outfile):
|
| 135 |
+
self._write_lineno(outfile)
|
| 136 |
+
|
| 137 |
+
for ttype, value in tokensource:
|
| 138 |
+
if value.endswith("\n"):
|
| 139 |
+
self._write_lineno(outfile)
|
| 140 |
+
value = value[:-1]
|
| 141 |
+
color = self.colorscheme.get(ttype)
|
| 142 |
+
while color is None:
|
| 143 |
+
ttype = ttype.parent
|
| 144 |
+
color = self.colorscheme.get(ttype)
|
| 145 |
+
if color:
|
| 146 |
+
color = color[self.darkbg]
|
| 147 |
+
spl = value.split('\n')
|
| 148 |
+
for line in spl[:-1]:
|
| 149 |
+
self._write_lineno(outfile)
|
| 150 |
+
if line:
|
| 151 |
+
outfile.write(ircformat(color, line[:-1]))
|
| 152 |
+
if spl[-1]:
|
| 153 |
+
outfile.write(ircformat(color, spl[-1]))
|
| 154 |
+
else:
|
| 155 |
+
outfile.write(value)
|
| 156 |
+
|
| 157 |
+
outfile.write("\n")
|
| 158 |
+
|
| 159 |
+
def format_unencoded(self, tokensource, outfile):
|
| 160 |
+
if self.linenos:
|
| 161 |
+
self._format_unencoded_with_lineno(tokensource, outfile)
|
| 162 |
+
return
|
| 163 |
+
|
| 164 |
+
for ttype, value in tokensource:
|
| 165 |
+
color = self.colorscheme.get(ttype)
|
| 166 |
+
while color is None:
|
| 167 |
+
ttype = ttype[:-1]
|
| 168 |
+
color = self.colorscheme.get(ttype)
|
| 169 |
+
if color:
|
| 170 |
+
color = color[self.darkbg]
|
| 171 |
+
spl = value.split('\n')
|
| 172 |
+
for line in spl[:-1]:
|
| 173 |
+
if line:
|
| 174 |
+
outfile.write(ircformat(color, line))
|
| 175 |
+
outfile.write('\n')
|
| 176 |
+
if spl[-1]:
|
| 177 |
+
outfile.write(ircformat(color, spl[-1]))
|
| 178 |
+
else:
|
| 179 |
+
outfile.write(value)
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py
ADDED
|
@@ -0,0 +1,511 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.latex
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for LaTeX fancyvrb output.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from io import StringIO
|
| 12 |
+
|
| 13 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 14 |
+
from pip._vendor.pygments.lexer import Lexer, do_insertions
|
| 15 |
+
from pip._vendor.pygments.token import Token, STANDARD_TYPES
|
| 16 |
+
from pip._vendor.pygments.util import get_bool_opt, get_int_opt
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
__all__ = ['LatexFormatter']
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def escape_tex(text, commandprefix):
|
| 23 |
+
return text.replace('\\', '\x00'). \
|
| 24 |
+
replace('{', '\x01'). \
|
| 25 |
+
replace('}', '\x02'). \
|
| 26 |
+
replace('\x00', r'\%sZbs{}' % commandprefix). \
|
| 27 |
+
replace('\x01', r'\%sZob{}' % commandprefix). \
|
| 28 |
+
replace('\x02', r'\%sZcb{}' % commandprefix). \
|
| 29 |
+
replace('^', r'\%sZca{}' % commandprefix). \
|
| 30 |
+
replace('_', r'\%sZus{}' % commandprefix). \
|
| 31 |
+
replace('&', r'\%sZam{}' % commandprefix). \
|
| 32 |
+
replace('<', r'\%sZlt{}' % commandprefix). \
|
| 33 |
+
replace('>', r'\%sZgt{}' % commandprefix). \
|
| 34 |
+
replace('#', r'\%sZsh{}' % commandprefix). \
|
| 35 |
+
replace('%', r'\%sZpc{}' % commandprefix). \
|
| 36 |
+
replace('$', r'\%sZdl{}' % commandprefix). \
|
| 37 |
+
replace('-', r'\%sZhy{}' % commandprefix). \
|
| 38 |
+
replace("'", r'\%sZsq{}' % commandprefix). \
|
| 39 |
+
replace('"', r'\%sZdq{}' % commandprefix). \
|
| 40 |
+
replace('~', r'\%sZti{}' % commandprefix)
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
DOC_TEMPLATE = r'''
|
| 44 |
+
\documentclass{%(docclass)s}
|
| 45 |
+
\usepackage{fancyvrb}
|
| 46 |
+
\usepackage{color}
|
| 47 |
+
\usepackage[%(encoding)s]{inputenc}
|
| 48 |
+
%(preamble)s
|
| 49 |
+
|
| 50 |
+
%(styledefs)s
|
| 51 |
+
|
| 52 |
+
\begin{document}
|
| 53 |
+
|
| 54 |
+
\section*{%(title)s}
|
| 55 |
+
|
| 56 |
+
%(code)s
|
| 57 |
+
\end{document}
|
| 58 |
+
'''
|
| 59 |
+
|
| 60 |
+
## Small explanation of the mess below :)
|
| 61 |
+
#
|
| 62 |
+
# The previous version of the LaTeX formatter just assigned a command to
|
| 63 |
+
# each token type defined in the current style. That obviously is
|
| 64 |
+
# problematic if the highlighted code is produced for a different style
|
| 65 |
+
# than the style commands themselves.
|
| 66 |
+
#
|
| 67 |
+
# This version works much like the HTML formatter which assigns multiple
|
| 68 |
+
# CSS classes to each <span> tag, from the most specific to the least
|
| 69 |
+
# specific token type, thus falling back to the parent token type if one
|
| 70 |
+
# is not defined. Here, the classes are there too and use the same short
|
| 71 |
+
# forms given in token.STANDARD_TYPES.
|
| 72 |
+
#
|
| 73 |
+
# Highlighted code now only uses one custom command, which by default is
|
| 74 |
+
# \PY and selectable by the commandprefix option (and in addition the
|
| 75 |
+
# escapes \PYZat, \PYZlb and \PYZrb which haven't been renamed for
|
| 76 |
+
# backwards compatibility purposes).
|
| 77 |
+
#
|
| 78 |
+
# \PY has two arguments: the classes, separated by +, and the text to
|
| 79 |
+
# render in that style. The classes are resolved into the respective
|
| 80 |
+
# style commands by magic, which serves to ignore unknown classes.
|
| 81 |
+
#
|
| 82 |
+
# The magic macros are:
|
| 83 |
+
# * \PY@it, \PY@bf, etc. are unconditionally wrapped around the text
|
| 84 |
+
# to render in \PY@do. Their definition determines the style.
|
| 85 |
+
# * \PY@reset resets \PY@it etc. to do nothing.
|
| 86 |
+
# * \PY@toks parses the list of classes, using magic inspired by the
|
| 87 |
+
# keyval package (but modified to use plusses instead of commas
|
| 88 |
+
# because fancyvrb redefines commas inside its environments).
|
| 89 |
+
# * \PY@tok processes one class, calling the \PY@tok@classname command
|
| 90 |
+
# if it exists.
|
| 91 |
+
# * \PY@tok@classname sets the \PY@it etc. to reflect the chosen style
|
| 92 |
+
# for its class.
|
| 93 |
+
# * \PY resets the style, parses the classnames and then calls \PY@do.
|
| 94 |
+
#
|
| 95 |
+
# Tip: to read this code, print it out in substituted form using e.g.
|
| 96 |
+
# >>> print STYLE_TEMPLATE % {'cp': 'PY'}
|
| 97 |
+
|
| 98 |
+
STYLE_TEMPLATE = r'''
|
| 99 |
+
\makeatletter
|
| 100 |
+
\def\%(cp)s@reset{\let\%(cp)s@it=\relax \let\%(cp)s@bf=\relax%%
|
| 101 |
+
\let\%(cp)s@ul=\relax \let\%(cp)s@tc=\relax%%
|
| 102 |
+
\let\%(cp)s@bc=\relax \let\%(cp)s@ff=\relax}
|
| 103 |
+
\def\%(cp)s@tok#1{\csname %(cp)s@tok@#1\endcsname}
|
| 104 |
+
\def\%(cp)s@toks#1+{\ifx\relax#1\empty\else%%
|
| 105 |
+
\%(cp)s@tok{#1}\expandafter\%(cp)s@toks\fi}
|
| 106 |
+
\def\%(cp)s@do#1{\%(cp)s@bc{\%(cp)s@tc{\%(cp)s@ul{%%
|
| 107 |
+
\%(cp)s@it{\%(cp)s@bf{\%(cp)s@ff{#1}}}}}}}
|
| 108 |
+
\def\%(cp)s#1#2{\%(cp)s@reset\%(cp)s@toks#1+\relax+\%(cp)s@do{#2}}
|
| 109 |
+
|
| 110 |
+
%(styles)s
|
| 111 |
+
|
| 112 |
+
\def\%(cp)sZbs{\char`\\}
|
| 113 |
+
\def\%(cp)sZus{\char`\_}
|
| 114 |
+
\def\%(cp)sZob{\char`\{}
|
| 115 |
+
\def\%(cp)sZcb{\char`\}}
|
| 116 |
+
\def\%(cp)sZca{\char`\^}
|
| 117 |
+
\def\%(cp)sZam{\char`\&}
|
| 118 |
+
\def\%(cp)sZlt{\char`\<}
|
| 119 |
+
\def\%(cp)sZgt{\char`\>}
|
| 120 |
+
\def\%(cp)sZsh{\char`\#}
|
| 121 |
+
\def\%(cp)sZpc{\char`\%%}
|
| 122 |
+
\def\%(cp)sZdl{\char`\$}
|
| 123 |
+
\def\%(cp)sZhy{\char`\-}
|
| 124 |
+
\def\%(cp)sZsq{\char`\'}
|
| 125 |
+
\def\%(cp)sZdq{\char`\"}
|
| 126 |
+
\def\%(cp)sZti{\char`\~}
|
| 127 |
+
%% for compatibility with earlier versions
|
| 128 |
+
\def\%(cp)sZat{@}
|
| 129 |
+
\def\%(cp)sZlb{[}
|
| 130 |
+
\def\%(cp)sZrb{]}
|
| 131 |
+
\makeatother
|
| 132 |
+
'''
|
| 133 |
+
|
| 134 |
+
|
| 135 |
+
def _get_ttype_name(ttype):
|
| 136 |
+
fname = STANDARD_TYPES.get(ttype)
|
| 137 |
+
if fname:
|
| 138 |
+
return fname
|
| 139 |
+
aname = ''
|
| 140 |
+
while fname is None:
|
| 141 |
+
aname = ttype[-1] + aname
|
| 142 |
+
ttype = ttype.parent
|
| 143 |
+
fname = STANDARD_TYPES.get(ttype)
|
| 144 |
+
return fname + aname
|
| 145 |
+
|
| 146 |
+
|
| 147 |
+
class LatexFormatter(Formatter):
|
| 148 |
+
r"""
|
| 149 |
+
Format tokens as LaTeX code. This needs the `fancyvrb` and `color`
|
| 150 |
+
standard packages.
|
| 151 |
+
|
| 152 |
+
Without the `full` option, code is formatted as one ``Verbatim``
|
| 153 |
+
environment, like this:
|
| 154 |
+
|
| 155 |
+
.. sourcecode:: latex
|
| 156 |
+
|
| 157 |
+
\begin{Verbatim}[commandchars=\\\{\}]
|
| 158 |
+
\PY{k}{def }\PY{n+nf}{foo}(\PY{n}{bar}):
|
| 159 |
+
\PY{k}{pass}
|
| 160 |
+
\end{Verbatim}
|
| 161 |
+
|
| 162 |
+
The special command used here (``\PY``) and all the other macros it needs
|
| 163 |
+
are output by the `get_style_defs` method.
|
| 164 |
+
|
| 165 |
+
With the `full` option, a complete LaTeX document is output, including
|
| 166 |
+
the command definitions in the preamble.
|
| 167 |
+
|
| 168 |
+
The `get_style_defs()` method of a `LatexFormatter` returns a string
|
| 169 |
+
containing ``\def`` commands defining the macros needed inside the
|
| 170 |
+
``Verbatim`` environments.
|
| 171 |
+
|
| 172 |
+
Additional options accepted:
|
| 173 |
+
|
| 174 |
+
`style`
|
| 175 |
+
The style to use, can be a string or a Style subclass (default:
|
| 176 |
+
``'default'``).
|
| 177 |
+
|
| 178 |
+
`full`
|
| 179 |
+
Tells the formatter to output a "full" document, i.e. a complete
|
| 180 |
+
self-contained document (default: ``False``).
|
| 181 |
+
|
| 182 |
+
`title`
|
| 183 |
+
If `full` is true, the title that should be used to caption the
|
| 184 |
+
document (default: ``''``).
|
| 185 |
+
|
| 186 |
+
`docclass`
|
| 187 |
+
If the `full` option is enabled, this is the document class to use
|
| 188 |
+
(default: ``'article'``).
|
| 189 |
+
|
| 190 |
+
`preamble`
|
| 191 |
+
If the `full` option is enabled, this can be further preamble commands,
|
| 192 |
+
e.g. ``\usepackage`` (default: ``''``).
|
| 193 |
+
|
| 194 |
+
`linenos`
|
| 195 |
+
If set to ``True``, output line numbers (default: ``False``).
|
| 196 |
+
|
| 197 |
+
`linenostart`
|
| 198 |
+
The line number for the first line (default: ``1``).
|
| 199 |
+
|
| 200 |
+
`linenostep`
|
| 201 |
+
If set to a number n > 1, only every nth line number is printed.
|
| 202 |
+
|
| 203 |
+
`verboptions`
|
| 204 |
+
Additional options given to the Verbatim environment (see the *fancyvrb*
|
| 205 |
+
docs for possible values) (default: ``''``).
|
| 206 |
+
|
| 207 |
+
`commandprefix`
|
| 208 |
+
The LaTeX commands used to produce colored output are constructed
|
| 209 |
+
using this prefix and some letters (default: ``'PY'``).
|
| 210 |
+
|
| 211 |
+
.. versionadded:: 0.7
|
| 212 |
+
.. versionchanged:: 0.10
|
| 213 |
+
The default is now ``'PY'`` instead of ``'C'``.
|
| 214 |
+
|
| 215 |
+
`texcomments`
|
| 216 |
+
If set to ``True``, enables LaTeX comment lines. That is, LaTex markup
|
| 217 |
+
in comment tokens is not escaped so that LaTeX can render it (default:
|
| 218 |
+
``False``).
|
| 219 |
+
|
| 220 |
+
.. versionadded:: 1.2
|
| 221 |
+
|
| 222 |
+
`mathescape`
|
| 223 |
+
If set to ``True``, enables LaTeX math mode escape in comments. That
|
| 224 |
+
is, ``'$...$'`` inside a comment will trigger math mode (default:
|
| 225 |
+
``False``).
|
| 226 |
+
|
| 227 |
+
.. versionadded:: 1.2
|
| 228 |
+
|
| 229 |
+
`escapeinside`
|
| 230 |
+
If set to a string of length 2, enables escaping to LaTeX. Text
|
| 231 |
+
delimited by these 2 characters is read as LaTeX code and
|
| 232 |
+
typeset accordingly. It has no effect in string literals. It has
|
| 233 |
+
no effect in comments if `texcomments` or `mathescape` is
|
| 234 |
+
set. (default: ``''``).
|
| 235 |
+
|
| 236 |
+
.. versionadded:: 2.0
|
| 237 |
+
|
| 238 |
+
`envname`
|
| 239 |
+
Allows you to pick an alternative environment name replacing Verbatim.
|
| 240 |
+
The alternate environment still has to support Verbatim's option syntax.
|
| 241 |
+
(default: ``'Verbatim'``).
|
| 242 |
+
|
| 243 |
+
.. versionadded:: 2.0
|
| 244 |
+
"""
|
| 245 |
+
name = 'LaTeX'
|
| 246 |
+
aliases = ['latex', 'tex']
|
| 247 |
+
filenames = ['*.tex']
|
| 248 |
+
|
| 249 |
+
def __init__(self, **options):
|
| 250 |
+
Formatter.__init__(self, **options)
|
| 251 |
+
self.docclass = options.get('docclass', 'article')
|
| 252 |
+
self.preamble = options.get('preamble', '')
|
| 253 |
+
self.linenos = get_bool_opt(options, 'linenos', False)
|
| 254 |
+
self.linenostart = abs(get_int_opt(options, 'linenostart', 1))
|
| 255 |
+
self.linenostep = abs(get_int_opt(options, 'linenostep', 1))
|
| 256 |
+
self.verboptions = options.get('verboptions', '')
|
| 257 |
+
self.nobackground = get_bool_opt(options, 'nobackground', False)
|
| 258 |
+
self.commandprefix = options.get('commandprefix', 'PY')
|
| 259 |
+
self.texcomments = get_bool_opt(options, 'texcomments', False)
|
| 260 |
+
self.mathescape = get_bool_opt(options, 'mathescape', False)
|
| 261 |
+
self.escapeinside = options.get('escapeinside', '')
|
| 262 |
+
if len(self.escapeinside) == 2:
|
| 263 |
+
self.left = self.escapeinside[0]
|
| 264 |
+
self.right = self.escapeinside[1]
|
| 265 |
+
else:
|
| 266 |
+
self.escapeinside = ''
|
| 267 |
+
self.envname = options.get('envname', 'Verbatim')
|
| 268 |
+
|
| 269 |
+
self._create_stylesheet()
|
| 270 |
+
|
| 271 |
+
def _create_stylesheet(self):
|
| 272 |
+
t2n = self.ttype2name = {Token: ''}
|
| 273 |
+
c2d = self.cmd2def = {}
|
| 274 |
+
cp = self.commandprefix
|
| 275 |
+
|
| 276 |
+
def rgbcolor(col):
|
| 277 |
+
if col:
|
| 278 |
+
return ','.join(['%.2f' % (int(col[i] + col[i + 1], 16) / 255.0)
|
| 279 |
+
for i in (0, 2, 4)])
|
| 280 |
+
else:
|
| 281 |
+
return '1,1,1'
|
| 282 |
+
|
| 283 |
+
for ttype, ndef in self.style:
|
| 284 |
+
name = _get_ttype_name(ttype)
|
| 285 |
+
cmndef = ''
|
| 286 |
+
if ndef['bold']:
|
| 287 |
+
cmndef += r'\let\$$@bf=\textbf'
|
| 288 |
+
if ndef['italic']:
|
| 289 |
+
cmndef += r'\let\$$@it=\textit'
|
| 290 |
+
if ndef['underline']:
|
| 291 |
+
cmndef += r'\let\$$@ul=\underline'
|
| 292 |
+
if ndef['roman']:
|
| 293 |
+
cmndef += r'\let\$$@ff=\textrm'
|
| 294 |
+
if ndef['sans']:
|
| 295 |
+
cmndef += r'\let\$$@ff=\textsf'
|
| 296 |
+
if ndef['mono']:
|
| 297 |
+
cmndef += r'\let\$$@ff=\textsf'
|
| 298 |
+
if ndef['color']:
|
| 299 |
+
cmndef += (r'\def\$$@tc##1{\textcolor[rgb]{%s}{##1}}' %
|
| 300 |
+
rgbcolor(ndef['color']))
|
| 301 |
+
if ndef['border']:
|
| 302 |
+
cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}'
|
| 303 |
+
r'\fcolorbox[rgb]{%s}{%s}{\strut ##1}}}' %
|
| 304 |
+
(rgbcolor(ndef['border']),
|
| 305 |
+
rgbcolor(ndef['bgcolor'])))
|
| 306 |
+
elif ndef['bgcolor']:
|
| 307 |
+
cmndef += (r'\def\$$@bc##1{{\setlength{\fboxsep}{0pt}'
|
| 308 |
+
r'\colorbox[rgb]{%s}{\strut ##1}}}' %
|
| 309 |
+
rgbcolor(ndef['bgcolor']))
|
| 310 |
+
if cmndef == '':
|
| 311 |
+
continue
|
| 312 |
+
cmndef = cmndef.replace('$$', cp)
|
| 313 |
+
t2n[ttype] = name
|
| 314 |
+
c2d[name] = cmndef
|
| 315 |
+
|
| 316 |
+
def get_style_defs(self, arg=''):
|
| 317 |
+
"""
|
| 318 |
+
Return the command sequences needed to define the commands
|
| 319 |
+
used to format text in the verbatim environment. ``arg`` is ignored.
|
| 320 |
+
"""
|
| 321 |
+
cp = self.commandprefix
|
| 322 |
+
styles = []
|
| 323 |
+
for name, definition in self.cmd2def.items():
|
| 324 |
+
styles.append(r'\@namedef{%s@tok@%s}{%s}' % (cp, name, definition))
|
| 325 |
+
return STYLE_TEMPLATE % {'cp': self.commandprefix,
|
| 326 |
+
'styles': '\n'.join(styles)}
|
| 327 |
+
|
| 328 |
+
def format_unencoded(self, tokensource, outfile):
|
| 329 |
+
# TODO: add support for background colors
|
| 330 |
+
t2n = self.ttype2name
|
| 331 |
+
cp = self.commandprefix
|
| 332 |
+
|
| 333 |
+
if self.full:
|
| 334 |
+
realoutfile = outfile
|
| 335 |
+
outfile = StringIO()
|
| 336 |
+
|
| 337 |
+
outfile.write('\\begin{' + self.envname + '}[commandchars=\\\\\\{\\}')
|
| 338 |
+
if self.linenos:
|
| 339 |
+
start, step = self.linenostart, self.linenostep
|
| 340 |
+
outfile.write(',numbers=left' +
|
| 341 |
+
(start and ',firstnumber=%d' % start or '') +
|
| 342 |
+
(step and ',stepnumber=%d' % step or ''))
|
| 343 |
+
if self.mathescape or self.texcomments or self.escapeinside:
|
| 344 |
+
outfile.write(',codes={\\catcode`\\$=3\\catcode`\\^=7'
|
| 345 |
+
'\\catcode`\\_=8\\relax}')
|
| 346 |
+
if self.verboptions:
|
| 347 |
+
outfile.write(',' + self.verboptions)
|
| 348 |
+
outfile.write(']\n')
|
| 349 |
+
|
| 350 |
+
for ttype, value in tokensource:
|
| 351 |
+
if ttype in Token.Comment:
|
| 352 |
+
if self.texcomments:
|
| 353 |
+
# Try to guess comment starting lexeme and escape it ...
|
| 354 |
+
start = value[0:1]
|
| 355 |
+
for i in range(1, len(value)):
|
| 356 |
+
if start[0] != value[i]:
|
| 357 |
+
break
|
| 358 |
+
start += value[i]
|
| 359 |
+
|
| 360 |
+
value = value[len(start):]
|
| 361 |
+
start = escape_tex(start, cp)
|
| 362 |
+
|
| 363 |
+
# ... but do not escape inside comment.
|
| 364 |
+
value = start + value
|
| 365 |
+
elif self.mathescape:
|
| 366 |
+
# Only escape parts not inside a math environment.
|
| 367 |
+
parts = value.split('$')
|
| 368 |
+
in_math = False
|
| 369 |
+
for i, part in enumerate(parts):
|
| 370 |
+
if not in_math:
|
| 371 |
+
parts[i] = escape_tex(part, cp)
|
| 372 |
+
in_math = not in_math
|
| 373 |
+
value = '$'.join(parts)
|
| 374 |
+
elif self.escapeinside:
|
| 375 |
+
text = value
|
| 376 |
+
value = ''
|
| 377 |
+
while text:
|
| 378 |
+
a, sep1, text = text.partition(self.left)
|
| 379 |
+
if sep1:
|
| 380 |
+
b, sep2, text = text.partition(self.right)
|
| 381 |
+
if sep2:
|
| 382 |
+
value += escape_tex(a, cp) + b
|
| 383 |
+
else:
|
| 384 |
+
value += escape_tex(a + sep1 + b, cp)
|
| 385 |
+
else:
|
| 386 |
+
value += escape_tex(a, cp)
|
| 387 |
+
else:
|
| 388 |
+
value = escape_tex(value, cp)
|
| 389 |
+
elif ttype not in Token.Escape:
|
| 390 |
+
value = escape_tex(value, cp)
|
| 391 |
+
styles = []
|
| 392 |
+
while ttype is not Token:
|
| 393 |
+
try:
|
| 394 |
+
styles.append(t2n[ttype])
|
| 395 |
+
except KeyError:
|
| 396 |
+
# not in current style
|
| 397 |
+
styles.append(_get_ttype_name(ttype))
|
| 398 |
+
ttype = ttype.parent
|
| 399 |
+
styleval = '+'.join(reversed(styles))
|
| 400 |
+
if styleval:
|
| 401 |
+
spl = value.split('\n')
|
| 402 |
+
for line in spl[:-1]:
|
| 403 |
+
if line:
|
| 404 |
+
outfile.write("\\%s{%s}{%s}" % (cp, styleval, line))
|
| 405 |
+
outfile.write('\n')
|
| 406 |
+
if spl[-1]:
|
| 407 |
+
outfile.write("\\%s{%s}{%s}" % (cp, styleval, spl[-1]))
|
| 408 |
+
else:
|
| 409 |
+
outfile.write(value)
|
| 410 |
+
|
| 411 |
+
outfile.write('\\end{' + self.envname + '}\n')
|
| 412 |
+
|
| 413 |
+
if self.full:
|
| 414 |
+
encoding = self.encoding or 'utf8'
|
| 415 |
+
# map known existings encodings from LaTeX distribution
|
| 416 |
+
encoding = {
|
| 417 |
+
'utf_8': 'utf8',
|
| 418 |
+
'latin_1': 'latin1',
|
| 419 |
+
'iso_8859_1': 'latin1',
|
| 420 |
+
}.get(encoding.replace('-', '_'), encoding)
|
| 421 |
+
realoutfile.write(DOC_TEMPLATE %
|
| 422 |
+
dict(docclass = self.docclass,
|
| 423 |
+
preamble = self.preamble,
|
| 424 |
+
title = self.title,
|
| 425 |
+
encoding = encoding,
|
| 426 |
+
styledefs = self.get_style_defs(),
|
| 427 |
+
code = outfile.getvalue()))
|
| 428 |
+
|
| 429 |
+
|
| 430 |
+
class LatexEmbeddedLexer(Lexer):
|
| 431 |
+
"""
|
| 432 |
+
This lexer takes one lexer as argument, the lexer for the language
|
| 433 |
+
being formatted, and the left and right delimiters for escaped text.
|
| 434 |
+
|
| 435 |
+
First everything is scanned using the language lexer to obtain
|
| 436 |
+
strings and comments. All other consecutive tokens are merged and
|
| 437 |
+
the resulting text is scanned for escaped segments, which are given
|
| 438 |
+
the Token.Escape type. Finally text that is not escaped is scanned
|
| 439 |
+
again with the language lexer.
|
| 440 |
+
"""
|
| 441 |
+
def __init__(self, left, right, lang, **options):
|
| 442 |
+
self.left = left
|
| 443 |
+
self.right = right
|
| 444 |
+
self.lang = lang
|
| 445 |
+
Lexer.__init__(self, **options)
|
| 446 |
+
|
| 447 |
+
def get_tokens_unprocessed(self, text):
|
| 448 |
+
# find and remove all the escape tokens (replace with an empty string)
|
| 449 |
+
# this is very similar to DelegatingLexer.get_tokens_unprocessed.
|
| 450 |
+
buffered = ''
|
| 451 |
+
insertions = []
|
| 452 |
+
insertion_buf = []
|
| 453 |
+
for i, t, v in self._find_safe_escape_tokens(text):
|
| 454 |
+
if t is None:
|
| 455 |
+
if insertion_buf:
|
| 456 |
+
insertions.append((len(buffered), insertion_buf))
|
| 457 |
+
insertion_buf = []
|
| 458 |
+
buffered += v
|
| 459 |
+
else:
|
| 460 |
+
insertion_buf.append((i, t, v))
|
| 461 |
+
if insertion_buf:
|
| 462 |
+
insertions.append((len(buffered), insertion_buf))
|
| 463 |
+
return do_insertions(insertions,
|
| 464 |
+
self.lang.get_tokens_unprocessed(buffered))
|
| 465 |
+
|
| 466 |
+
def _find_safe_escape_tokens(self, text):
|
| 467 |
+
""" find escape tokens that are not in strings or comments """
|
| 468 |
+
for i, t, v in self._filter_to(
|
| 469 |
+
self.lang.get_tokens_unprocessed(text),
|
| 470 |
+
lambda t: t in Token.Comment or t in Token.String
|
| 471 |
+
):
|
| 472 |
+
if t is None:
|
| 473 |
+
for i2, t2, v2 in self._find_escape_tokens(v):
|
| 474 |
+
yield i + i2, t2, v2
|
| 475 |
+
else:
|
| 476 |
+
yield i, None, v
|
| 477 |
+
|
| 478 |
+
def _filter_to(self, it, pred):
|
| 479 |
+
""" Keep only the tokens that match `pred`, merge the others together """
|
| 480 |
+
buf = ''
|
| 481 |
+
idx = 0
|
| 482 |
+
for i, t, v in it:
|
| 483 |
+
if pred(t):
|
| 484 |
+
if buf:
|
| 485 |
+
yield idx, None, buf
|
| 486 |
+
buf = ''
|
| 487 |
+
yield i, t, v
|
| 488 |
+
else:
|
| 489 |
+
if not buf:
|
| 490 |
+
idx = i
|
| 491 |
+
buf += v
|
| 492 |
+
if buf:
|
| 493 |
+
yield idx, None, buf
|
| 494 |
+
|
| 495 |
+
def _find_escape_tokens(self, text):
|
| 496 |
+
""" Find escape tokens within text, give token=None otherwise """
|
| 497 |
+
index = 0
|
| 498 |
+
while text:
|
| 499 |
+
a, sep1, text = text.partition(self.left)
|
| 500 |
+
if a:
|
| 501 |
+
yield index, None, a
|
| 502 |
+
index += len(a)
|
| 503 |
+
if sep1:
|
| 504 |
+
b, sep2, text = text.partition(self.right)
|
| 505 |
+
if sep2:
|
| 506 |
+
yield index + len(sep1), Token.Escape, b
|
| 507 |
+
index += len(sep1) + len(b) + len(sep2)
|
| 508 |
+
else:
|
| 509 |
+
yield index, Token.Error, sep1
|
| 510 |
+
index += len(sep1)
|
| 511 |
+
text = b
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.other
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Other formatters: NullFormatter, RawTokenFormatter.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 12 |
+
from pip._vendor.pygments.util import get_choice_opt
|
| 13 |
+
from pip._vendor.pygments.token import Token
|
| 14 |
+
from pip._vendor.pygments.console import colorize
|
| 15 |
+
|
| 16 |
+
__all__ = ['NullFormatter', 'RawTokenFormatter', 'TestcaseFormatter']
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
class NullFormatter(Formatter):
|
| 20 |
+
"""
|
| 21 |
+
Output the text unchanged without any formatting.
|
| 22 |
+
"""
|
| 23 |
+
name = 'Text only'
|
| 24 |
+
aliases = ['text', 'null']
|
| 25 |
+
filenames = ['*.txt']
|
| 26 |
+
|
| 27 |
+
def format(self, tokensource, outfile):
|
| 28 |
+
enc = self.encoding
|
| 29 |
+
for ttype, value in tokensource:
|
| 30 |
+
if enc:
|
| 31 |
+
outfile.write(value.encode(enc))
|
| 32 |
+
else:
|
| 33 |
+
outfile.write(value)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
class RawTokenFormatter(Formatter):
|
| 37 |
+
r"""
|
| 38 |
+
Format tokens as a raw representation for storing token streams.
|
| 39 |
+
|
| 40 |
+
The format is ``tokentype<TAB>repr(tokenstring)\n``. The output can later
|
| 41 |
+
be converted to a token stream with the `RawTokenLexer`, described in the
|
| 42 |
+
:doc:`lexer list <lexers>`.
|
| 43 |
+
|
| 44 |
+
Only two options are accepted:
|
| 45 |
+
|
| 46 |
+
`compress`
|
| 47 |
+
If set to ``'gz'`` or ``'bz2'``, compress the output with the given
|
| 48 |
+
compression algorithm after encoding (default: ``''``).
|
| 49 |
+
`error_color`
|
| 50 |
+
If set to a color name, highlight error tokens using that color. If
|
| 51 |
+
set but with no value, defaults to ``'red'``.
|
| 52 |
+
|
| 53 |
+
.. versionadded:: 0.11
|
| 54 |
+
|
| 55 |
+
"""
|
| 56 |
+
name = 'Raw tokens'
|
| 57 |
+
aliases = ['raw', 'tokens']
|
| 58 |
+
filenames = ['*.raw']
|
| 59 |
+
|
| 60 |
+
unicodeoutput = False
|
| 61 |
+
|
| 62 |
+
def __init__(self, **options):
|
| 63 |
+
Formatter.__init__(self, **options)
|
| 64 |
+
# We ignore self.encoding if it is set, since it gets set for lexer
|
| 65 |
+
# and formatter if given with -Oencoding on the command line.
|
| 66 |
+
# The RawTokenFormatter outputs only ASCII. Override here.
|
| 67 |
+
self.encoding = 'ascii' # let pygments.format() do the right thing
|
| 68 |
+
self.compress = get_choice_opt(options, 'compress',
|
| 69 |
+
['', 'none', 'gz', 'bz2'], '')
|
| 70 |
+
self.error_color = options.get('error_color', None)
|
| 71 |
+
if self.error_color is True:
|
| 72 |
+
self.error_color = 'red'
|
| 73 |
+
if self.error_color is not None:
|
| 74 |
+
try:
|
| 75 |
+
colorize(self.error_color, '')
|
| 76 |
+
except KeyError:
|
| 77 |
+
raise ValueError("Invalid color %r specified" %
|
| 78 |
+
self.error_color)
|
| 79 |
+
|
| 80 |
+
def format(self, tokensource, outfile):
|
| 81 |
+
try:
|
| 82 |
+
outfile.write(b'')
|
| 83 |
+
except TypeError:
|
| 84 |
+
raise TypeError('The raw tokens formatter needs a binary '
|
| 85 |
+
'output file')
|
| 86 |
+
if self.compress == 'gz':
|
| 87 |
+
import gzip
|
| 88 |
+
outfile = gzip.GzipFile('', 'wb', 9, outfile)
|
| 89 |
+
|
| 90 |
+
write = outfile.write
|
| 91 |
+
flush = outfile.close
|
| 92 |
+
elif self.compress == 'bz2':
|
| 93 |
+
import bz2
|
| 94 |
+
compressor = bz2.BZ2Compressor(9)
|
| 95 |
+
|
| 96 |
+
def write(text):
|
| 97 |
+
outfile.write(compressor.compress(text))
|
| 98 |
+
|
| 99 |
+
def flush():
|
| 100 |
+
outfile.write(compressor.flush())
|
| 101 |
+
outfile.flush()
|
| 102 |
+
else:
|
| 103 |
+
write = outfile.write
|
| 104 |
+
flush = outfile.flush
|
| 105 |
+
|
| 106 |
+
if self.error_color:
|
| 107 |
+
for ttype, value in tokensource:
|
| 108 |
+
line = b"%r\t%r\n" % (ttype, value)
|
| 109 |
+
if ttype is Token.Error:
|
| 110 |
+
write(colorize(self.error_color, line))
|
| 111 |
+
else:
|
| 112 |
+
write(line)
|
| 113 |
+
else:
|
| 114 |
+
for ttype, value in tokensource:
|
| 115 |
+
write(b"%r\t%r\n" % (ttype, value))
|
| 116 |
+
flush()
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
TESTCASE_BEFORE = '''\
|
| 120 |
+
def testNeedsName(lexer):
|
| 121 |
+
fragment = %r
|
| 122 |
+
tokens = [
|
| 123 |
+
'''
|
| 124 |
+
TESTCASE_AFTER = '''\
|
| 125 |
+
]
|
| 126 |
+
assert list(lexer.get_tokens(fragment)) == tokens
|
| 127 |
+
'''
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
class TestcaseFormatter(Formatter):
|
| 131 |
+
"""
|
| 132 |
+
Format tokens as appropriate for a new testcase.
|
| 133 |
+
|
| 134 |
+
.. versionadded:: 2.0
|
| 135 |
+
"""
|
| 136 |
+
name = 'Testcase'
|
| 137 |
+
aliases = ['testcase']
|
| 138 |
+
|
| 139 |
+
def __init__(self, **options):
|
| 140 |
+
Formatter.__init__(self, **options)
|
| 141 |
+
if self.encoding is not None and self.encoding != 'utf-8':
|
| 142 |
+
raise ValueError("Only None and utf-8 are allowed encodings.")
|
| 143 |
+
|
| 144 |
+
def format(self, tokensource, outfile):
|
| 145 |
+
indentation = ' ' * 12
|
| 146 |
+
rawbuf = []
|
| 147 |
+
outbuf = []
|
| 148 |
+
for ttype, value in tokensource:
|
| 149 |
+
rawbuf.append(value)
|
| 150 |
+
outbuf.append('%s(%s, %r),\n' % (indentation, ttype, value))
|
| 151 |
+
|
| 152 |
+
before = TESTCASE_BEFORE % (''.join(rawbuf),)
|
| 153 |
+
during = ''.join(outbuf)
|
| 154 |
+
after = TESTCASE_AFTER
|
| 155 |
+
if self.encoding is None:
|
| 156 |
+
outfile.write(before + during + after)
|
| 157 |
+
else:
|
| 158 |
+
outfile.write(before.encode('utf-8'))
|
| 159 |
+
outfile.write(during.encode('utf-8'))
|
| 160 |
+
outfile.write(after.encode('utf-8'))
|
| 161 |
+
outfile.flush()
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.pangomarkup
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for Pango markup output.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
__all__ = ['PangoMarkupFormatter']
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
_escape_table = {
|
| 18 |
+
ord('&'): '&',
|
| 19 |
+
ord('<'): '<',
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def escape_special_chars(text, table=_escape_table):
|
| 24 |
+
"""Escape & and < for Pango Markup."""
|
| 25 |
+
return text.translate(table)
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
class PangoMarkupFormatter(Formatter):
|
| 29 |
+
"""
|
| 30 |
+
Format tokens as Pango Markup code. It can then be rendered to an SVG.
|
| 31 |
+
|
| 32 |
+
.. versionadded:: 2.9
|
| 33 |
+
"""
|
| 34 |
+
|
| 35 |
+
name = 'Pango Markup'
|
| 36 |
+
aliases = ['pango', 'pangomarkup']
|
| 37 |
+
filenames = []
|
| 38 |
+
|
| 39 |
+
def __init__(self, **options):
|
| 40 |
+
Formatter.__init__(self, **options)
|
| 41 |
+
|
| 42 |
+
self.styles = {}
|
| 43 |
+
|
| 44 |
+
for token, style in self.style:
|
| 45 |
+
start = ''
|
| 46 |
+
end = ''
|
| 47 |
+
if style['color']:
|
| 48 |
+
start += '<span fgcolor="#%s">' % style['color']
|
| 49 |
+
end = '</span>' + end
|
| 50 |
+
if style['bold']:
|
| 51 |
+
start += '<b>'
|
| 52 |
+
end = '</b>' + end
|
| 53 |
+
if style['italic']:
|
| 54 |
+
start += '<i>'
|
| 55 |
+
end = '</i>' + end
|
| 56 |
+
if style['underline']:
|
| 57 |
+
start += '<u>'
|
| 58 |
+
end = '</u>' + end
|
| 59 |
+
self.styles[token] = (start, end)
|
| 60 |
+
|
| 61 |
+
def format_unencoded(self, tokensource, outfile):
|
| 62 |
+
lastval = ''
|
| 63 |
+
lasttype = None
|
| 64 |
+
|
| 65 |
+
outfile.write('<tt>')
|
| 66 |
+
|
| 67 |
+
for ttype, value in tokensource:
|
| 68 |
+
while ttype not in self.styles:
|
| 69 |
+
ttype = ttype.parent
|
| 70 |
+
if ttype == lasttype:
|
| 71 |
+
lastval += escape_special_chars(value)
|
| 72 |
+
else:
|
| 73 |
+
if lastval:
|
| 74 |
+
stylebegin, styleend = self.styles[lasttype]
|
| 75 |
+
outfile.write(stylebegin + lastval + styleend)
|
| 76 |
+
lastval = escape_special_chars(value)
|
| 77 |
+
lasttype = ttype
|
| 78 |
+
|
| 79 |
+
if lastval:
|
| 80 |
+
stylebegin, styleend = self.styles[lasttype]
|
| 81 |
+
outfile.write(stylebegin + lastval + styleend)
|
| 82 |
+
|
| 83 |
+
outfile.write('</tt>')
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.rtf
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
A formatter that generates RTF files.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 12 |
+
from pip._vendor.pygments.util import get_int_opt, surrogatepair
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
__all__ = ['RtfFormatter']
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
class RtfFormatter(Formatter):
|
| 19 |
+
"""
|
| 20 |
+
Format tokens as RTF markup. This formatter automatically outputs full RTF
|
| 21 |
+
documents with color information and other useful stuff. Perfect for Copy and
|
| 22 |
+
Paste into Microsoft(R) Word(R) documents.
|
| 23 |
+
|
| 24 |
+
Please note that ``encoding`` and ``outencoding`` options are ignored.
|
| 25 |
+
The RTF format is ASCII natively, but handles unicode characters correctly
|
| 26 |
+
thanks to escape sequences.
|
| 27 |
+
|
| 28 |
+
.. versionadded:: 0.6
|
| 29 |
+
|
| 30 |
+
Additional options accepted:
|
| 31 |
+
|
| 32 |
+
`style`
|
| 33 |
+
The style to use, can be a string or a Style subclass (default:
|
| 34 |
+
``'default'``).
|
| 35 |
+
|
| 36 |
+
`fontface`
|
| 37 |
+
The used font family, for example ``Bitstream Vera Sans``. Defaults to
|
| 38 |
+
some generic font which is supposed to have fixed width.
|
| 39 |
+
|
| 40 |
+
`fontsize`
|
| 41 |
+
Size of the font used. Size is specified in half points. The
|
| 42 |
+
default is 24 half-points, giving a size 12 font.
|
| 43 |
+
|
| 44 |
+
.. versionadded:: 2.0
|
| 45 |
+
"""
|
| 46 |
+
name = 'RTF'
|
| 47 |
+
aliases = ['rtf']
|
| 48 |
+
filenames = ['*.rtf']
|
| 49 |
+
|
| 50 |
+
def __init__(self, **options):
|
| 51 |
+
r"""
|
| 52 |
+
Additional options accepted:
|
| 53 |
+
|
| 54 |
+
``fontface``
|
| 55 |
+
Name of the font used. Could for example be ``'Courier New'``
|
| 56 |
+
to further specify the default which is ``'\fmodern'``. The RTF
|
| 57 |
+
specification claims that ``\fmodern`` are "Fixed-pitch serif
|
| 58 |
+
and sans serif fonts". Hope every RTF implementation thinks
|
| 59 |
+
the same about modern...
|
| 60 |
+
|
| 61 |
+
"""
|
| 62 |
+
Formatter.__init__(self, **options)
|
| 63 |
+
self.fontface = options.get('fontface') or ''
|
| 64 |
+
self.fontsize = get_int_opt(options, 'fontsize', 0)
|
| 65 |
+
|
| 66 |
+
def _escape(self, text):
|
| 67 |
+
return text.replace('\\', '\\\\') \
|
| 68 |
+
.replace('{', '\\{') \
|
| 69 |
+
.replace('}', '\\}')
|
| 70 |
+
|
| 71 |
+
def _escape_text(self, text):
|
| 72 |
+
# empty strings, should give a small performance improvement
|
| 73 |
+
if not text:
|
| 74 |
+
return ''
|
| 75 |
+
|
| 76 |
+
# escape text
|
| 77 |
+
text = self._escape(text)
|
| 78 |
+
|
| 79 |
+
buf = []
|
| 80 |
+
for c in text:
|
| 81 |
+
cn = ord(c)
|
| 82 |
+
if cn < (2**7):
|
| 83 |
+
# ASCII character
|
| 84 |
+
buf.append(str(c))
|
| 85 |
+
elif (2**7) <= cn < (2**16):
|
| 86 |
+
# single unicode escape sequence
|
| 87 |
+
buf.append('{\\u%d}' % cn)
|
| 88 |
+
elif (2**16) <= cn:
|
| 89 |
+
# RTF limits unicode to 16 bits.
|
| 90 |
+
# Force surrogate pairs
|
| 91 |
+
buf.append('{\\u%d}{\\u%d}' % surrogatepair(cn))
|
| 92 |
+
|
| 93 |
+
return ''.join(buf).replace('\n', '\\par\n')
|
| 94 |
+
|
| 95 |
+
def format_unencoded(self, tokensource, outfile):
|
| 96 |
+
# rtf 1.8 header
|
| 97 |
+
outfile.write('{\\rtf1\\ansi\\uc0\\deff0'
|
| 98 |
+
'{\\fonttbl{\\f0\\fmodern\\fprq1\\fcharset0%s;}}'
|
| 99 |
+
'{\\colortbl;' % (self.fontface and
|
| 100 |
+
' ' + self._escape(self.fontface) or
|
| 101 |
+
''))
|
| 102 |
+
|
| 103 |
+
# convert colors and save them in a mapping to access them later.
|
| 104 |
+
color_mapping = {}
|
| 105 |
+
offset = 1
|
| 106 |
+
for _, style in self.style:
|
| 107 |
+
for color in style['color'], style['bgcolor'], style['border']:
|
| 108 |
+
if color and color not in color_mapping:
|
| 109 |
+
color_mapping[color] = offset
|
| 110 |
+
outfile.write('\\red%d\\green%d\\blue%d;' % (
|
| 111 |
+
int(color[0:2], 16),
|
| 112 |
+
int(color[2:4], 16),
|
| 113 |
+
int(color[4:6], 16)
|
| 114 |
+
))
|
| 115 |
+
offset += 1
|
| 116 |
+
outfile.write('}\\f0 ')
|
| 117 |
+
if self.fontsize:
|
| 118 |
+
outfile.write('\\fs%d' % self.fontsize)
|
| 119 |
+
|
| 120 |
+
# highlight stream
|
| 121 |
+
for ttype, value in tokensource:
|
| 122 |
+
while not self.style.styles_token(ttype) and ttype.parent:
|
| 123 |
+
ttype = ttype.parent
|
| 124 |
+
style = self.style.style_for_token(ttype)
|
| 125 |
+
buf = []
|
| 126 |
+
if style['bgcolor']:
|
| 127 |
+
buf.append('\\cb%d' % color_mapping[style['bgcolor']])
|
| 128 |
+
if style['color']:
|
| 129 |
+
buf.append('\\cf%d' % color_mapping[style['color']])
|
| 130 |
+
if style['bold']:
|
| 131 |
+
buf.append('\\b')
|
| 132 |
+
if style['italic']:
|
| 133 |
+
buf.append('\\i')
|
| 134 |
+
if style['underline']:
|
| 135 |
+
buf.append('\\ul')
|
| 136 |
+
if style['border']:
|
| 137 |
+
buf.append('\\chbrdr\\chcfpat%d' %
|
| 138 |
+
color_mapping[style['border']])
|
| 139 |
+
start = ''.join(buf)
|
| 140 |
+
if start:
|
| 141 |
+
outfile.write('{%s ' % start)
|
| 142 |
+
outfile.write(self._escape_text(value))
|
| 143 |
+
if start:
|
| 144 |
+
outfile.write('}')
|
| 145 |
+
|
| 146 |
+
outfile.write('}')
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.svg
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for SVG output.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 12 |
+
from pip._vendor.pygments.token import Comment
|
| 13 |
+
from pip._vendor.pygments.util import get_bool_opt, get_int_opt
|
| 14 |
+
|
| 15 |
+
__all__ = ['SvgFormatter']
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def escape_html(text):
|
| 19 |
+
"""Escape &, <, > as well as single and double quotes for HTML."""
|
| 20 |
+
return text.replace('&', '&'). \
|
| 21 |
+
replace('<', '<'). \
|
| 22 |
+
replace('>', '>'). \
|
| 23 |
+
replace('"', '"'). \
|
| 24 |
+
replace("'", ''')
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
class2style = {}
|
| 28 |
+
|
| 29 |
+
class SvgFormatter(Formatter):
|
| 30 |
+
"""
|
| 31 |
+
Format tokens as an SVG graphics file. This formatter is still experimental.
|
| 32 |
+
Each line of code is a ``<text>`` element with explicit ``x`` and ``y``
|
| 33 |
+
coordinates containing ``<tspan>`` elements with the individual token styles.
|
| 34 |
+
|
| 35 |
+
By default, this formatter outputs a full SVG document including doctype
|
| 36 |
+
declaration and the ``<svg>`` root element.
|
| 37 |
+
|
| 38 |
+
.. versionadded:: 0.9
|
| 39 |
+
|
| 40 |
+
Additional options accepted:
|
| 41 |
+
|
| 42 |
+
`nowrap`
|
| 43 |
+
Don't wrap the SVG ``<text>`` elements in ``<svg><g>`` elements and
|
| 44 |
+
don't add a XML declaration and a doctype. If true, the `fontfamily`
|
| 45 |
+
and `fontsize` options are ignored. Defaults to ``False``.
|
| 46 |
+
|
| 47 |
+
`fontfamily`
|
| 48 |
+
The value to give the wrapping ``<g>`` element's ``font-family``
|
| 49 |
+
attribute, defaults to ``"monospace"``.
|
| 50 |
+
|
| 51 |
+
`fontsize`
|
| 52 |
+
The value to give the wrapping ``<g>`` element's ``font-size``
|
| 53 |
+
attribute, defaults to ``"14px"``.
|
| 54 |
+
|
| 55 |
+
`linenos`
|
| 56 |
+
If ``True``, add line numbers (default: ``False``).
|
| 57 |
+
|
| 58 |
+
`linenostart`
|
| 59 |
+
The line number for the first line (default: ``1``).
|
| 60 |
+
|
| 61 |
+
`linenostep`
|
| 62 |
+
If set to a number n > 1, only every nth line number is printed.
|
| 63 |
+
|
| 64 |
+
`linenowidth`
|
| 65 |
+
Maximum width devoted to line numbers (default: ``3*ystep``, sufficient
|
| 66 |
+
for up to 4-digit line numbers. Increase width for longer code blocks).
|
| 67 |
+
|
| 68 |
+
`xoffset`
|
| 69 |
+
Starting offset in X direction, defaults to ``0``.
|
| 70 |
+
|
| 71 |
+
`yoffset`
|
| 72 |
+
Starting offset in Y direction, defaults to the font size if it is given
|
| 73 |
+
in pixels, or ``20`` else. (This is necessary since text coordinates
|
| 74 |
+
refer to the text baseline, not the top edge.)
|
| 75 |
+
|
| 76 |
+
`ystep`
|
| 77 |
+
Offset to add to the Y coordinate for each subsequent line. This should
|
| 78 |
+
roughly be the text size plus 5. It defaults to that value if the text
|
| 79 |
+
size is given in pixels, or ``25`` else.
|
| 80 |
+
|
| 81 |
+
`spacehack`
|
| 82 |
+
Convert spaces in the source to `` ``, which are non-breaking
|
| 83 |
+
spaces. SVG provides the ``xml:space`` attribute to control how
|
| 84 |
+
whitespace inside tags is handled, in theory, the ``preserve`` value
|
| 85 |
+
could be used to keep all whitespace as-is. However, many current SVG
|
| 86 |
+
viewers don't obey that rule, so this option is provided as a workaround
|
| 87 |
+
and defaults to ``True``.
|
| 88 |
+
"""
|
| 89 |
+
name = 'SVG'
|
| 90 |
+
aliases = ['svg']
|
| 91 |
+
filenames = ['*.svg']
|
| 92 |
+
|
| 93 |
+
def __init__(self, **options):
|
| 94 |
+
Formatter.__init__(self, **options)
|
| 95 |
+
self.nowrap = get_bool_opt(options, 'nowrap', False)
|
| 96 |
+
self.fontfamily = options.get('fontfamily', 'monospace')
|
| 97 |
+
self.fontsize = options.get('fontsize', '14px')
|
| 98 |
+
self.xoffset = get_int_opt(options, 'xoffset', 0)
|
| 99 |
+
fs = self.fontsize.strip()
|
| 100 |
+
if fs.endswith('px'): fs = fs[:-2].strip()
|
| 101 |
+
try:
|
| 102 |
+
int_fs = int(fs)
|
| 103 |
+
except:
|
| 104 |
+
int_fs = 20
|
| 105 |
+
self.yoffset = get_int_opt(options, 'yoffset', int_fs)
|
| 106 |
+
self.ystep = get_int_opt(options, 'ystep', int_fs + 5)
|
| 107 |
+
self.spacehack = get_bool_opt(options, 'spacehack', True)
|
| 108 |
+
self.linenos = get_bool_opt(options,'linenos',False)
|
| 109 |
+
self.linenostart = get_int_opt(options,'linenostart',1)
|
| 110 |
+
self.linenostep = get_int_opt(options,'linenostep',1)
|
| 111 |
+
self.linenowidth = get_int_opt(options,'linenowidth', 3*self.ystep)
|
| 112 |
+
self._stylecache = {}
|
| 113 |
+
|
| 114 |
+
def format_unencoded(self, tokensource, outfile):
|
| 115 |
+
"""
|
| 116 |
+
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
|
| 117 |
+
tuples and write it into ``outfile``.
|
| 118 |
+
|
| 119 |
+
For our implementation we put all lines in their own 'line group'.
|
| 120 |
+
"""
|
| 121 |
+
x = self.xoffset
|
| 122 |
+
y = self.yoffset
|
| 123 |
+
if not self.nowrap:
|
| 124 |
+
if self.encoding:
|
| 125 |
+
outfile.write('<?xml version="1.0" encoding="%s"?>\n' %
|
| 126 |
+
self.encoding)
|
| 127 |
+
else:
|
| 128 |
+
outfile.write('<?xml version="1.0"?>\n')
|
| 129 |
+
outfile.write('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" '
|
| 130 |
+
'"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/'
|
| 131 |
+
'svg10.dtd">\n')
|
| 132 |
+
outfile.write('<svg xmlns="http://www.w3.org/2000/svg">\n')
|
| 133 |
+
outfile.write('<g font-family="%s" font-size="%s">\n' %
|
| 134 |
+
(self.fontfamily, self.fontsize))
|
| 135 |
+
|
| 136 |
+
counter = self.linenostart
|
| 137 |
+
counter_step = self.linenostep
|
| 138 |
+
counter_style = self._get_style(Comment)
|
| 139 |
+
line_x = x
|
| 140 |
+
|
| 141 |
+
if self.linenos:
|
| 142 |
+
if counter % counter_step == 0:
|
| 143 |
+
outfile.write('<text x="%s" y="%s" %s text-anchor="end">%s</text>' %
|
| 144 |
+
(x+self.linenowidth,y,counter_style,counter))
|
| 145 |
+
line_x += self.linenowidth + self.ystep
|
| 146 |
+
counter += 1
|
| 147 |
+
|
| 148 |
+
outfile.write('<text x="%s" y="%s" xml:space="preserve">' % (line_x, y))
|
| 149 |
+
for ttype, value in tokensource:
|
| 150 |
+
style = self._get_style(ttype)
|
| 151 |
+
tspan = style and '<tspan' + style + '>' or ''
|
| 152 |
+
tspanend = tspan and '</tspan>' or ''
|
| 153 |
+
value = escape_html(value)
|
| 154 |
+
if self.spacehack:
|
| 155 |
+
value = value.expandtabs().replace(' ', ' ')
|
| 156 |
+
parts = value.split('\n')
|
| 157 |
+
for part in parts[:-1]:
|
| 158 |
+
outfile.write(tspan + part + tspanend)
|
| 159 |
+
y += self.ystep
|
| 160 |
+
outfile.write('</text>\n')
|
| 161 |
+
if self.linenos and counter % counter_step == 0:
|
| 162 |
+
outfile.write('<text x="%s" y="%s" text-anchor="end" %s>%s</text>' %
|
| 163 |
+
(x+self.linenowidth,y,counter_style,counter))
|
| 164 |
+
|
| 165 |
+
counter += 1
|
| 166 |
+
outfile.write('<text x="%s" y="%s" ' 'xml:space="preserve">' % (line_x,y))
|
| 167 |
+
outfile.write(tspan + parts[-1] + tspanend)
|
| 168 |
+
outfile.write('</text>')
|
| 169 |
+
|
| 170 |
+
if not self.nowrap:
|
| 171 |
+
outfile.write('</g></svg>\n')
|
| 172 |
+
|
| 173 |
+
def _get_style(self, tokentype):
|
| 174 |
+
if tokentype in self._stylecache:
|
| 175 |
+
return self._stylecache[tokentype]
|
| 176 |
+
otokentype = tokentype
|
| 177 |
+
while not self.style.styles_token(tokentype):
|
| 178 |
+
tokentype = tokentype.parent
|
| 179 |
+
value = self.style.style_for_token(tokentype)
|
| 180 |
+
result = ''
|
| 181 |
+
if value['color']:
|
| 182 |
+
result = ' fill="#' + value['color'] + '"'
|
| 183 |
+
if value['bold']:
|
| 184 |
+
result += ' font-weight="bold"'
|
| 185 |
+
if value['italic']:
|
| 186 |
+
result += ' font-style="italic"'
|
| 187 |
+
self._stylecache[otokentype] = result
|
| 188 |
+
return result
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.terminal
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for terminal output with ANSI sequences.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 12 |
+
from pip._vendor.pygments.token import Keyword, Name, Comment, String, Error, \
|
| 13 |
+
Number, Operator, Generic, Token, Whitespace
|
| 14 |
+
from pip._vendor.pygments.console import ansiformat
|
| 15 |
+
from pip._vendor.pygments.util import get_choice_opt
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
__all__ = ['TerminalFormatter']
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
#: Map token types to a tuple of color values for light and dark
|
| 22 |
+
#: backgrounds.
|
| 23 |
+
TERMINAL_COLORS = {
|
| 24 |
+
Token: ('', ''),
|
| 25 |
+
|
| 26 |
+
Whitespace: ('gray', 'brightblack'),
|
| 27 |
+
Comment: ('gray', 'brightblack'),
|
| 28 |
+
Comment.Preproc: ('cyan', 'brightcyan'),
|
| 29 |
+
Keyword: ('blue', 'brightblue'),
|
| 30 |
+
Keyword.Type: ('cyan', 'brightcyan'),
|
| 31 |
+
Operator.Word: ('magenta', 'brightmagenta'),
|
| 32 |
+
Name.Builtin: ('cyan', 'brightcyan'),
|
| 33 |
+
Name.Function: ('green', 'brightgreen'),
|
| 34 |
+
Name.Namespace: ('_cyan_', '_brightcyan_'),
|
| 35 |
+
Name.Class: ('_green_', '_brightgreen_'),
|
| 36 |
+
Name.Exception: ('cyan', 'brightcyan'),
|
| 37 |
+
Name.Decorator: ('brightblack', 'gray'),
|
| 38 |
+
Name.Variable: ('red', 'brightred'),
|
| 39 |
+
Name.Constant: ('red', 'brightred'),
|
| 40 |
+
Name.Attribute: ('cyan', 'brightcyan'),
|
| 41 |
+
Name.Tag: ('brightblue', 'brightblue'),
|
| 42 |
+
String: ('yellow', 'yellow'),
|
| 43 |
+
Number: ('blue', 'brightblue'),
|
| 44 |
+
|
| 45 |
+
Generic.Deleted: ('brightred', 'brightred'),
|
| 46 |
+
Generic.Inserted: ('green', 'brightgreen'),
|
| 47 |
+
Generic.Heading: ('**', '**'),
|
| 48 |
+
Generic.Subheading: ('*magenta*', '*brightmagenta*'),
|
| 49 |
+
Generic.Prompt: ('**', '**'),
|
| 50 |
+
Generic.Error: ('brightred', 'brightred'),
|
| 51 |
+
|
| 52 |
+
Error: ('_brightred_', '_brightred_'),
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
class TerminalFormatter(Formatter):
|
| 57 |
+
r"""
|
| 58 |
+
Format tokens with ANSI color sequences, for output in a text console.
|
| 59 |
+
Color sequences are terminated at newlines, so that paging the output
|
| 60 |
+
works correctly.
|
| 61 |
+
|
| 62 |
+
The `get_style_defs()` method doesn't do anything special since there is
|
| 63 |
+
no support for common styles.
|
| 64 |
+
|
| 65 |
+
Options accepted:
|
| 66 |
+
|
| 67 |
+
`bg`
|
| 68 |
+
Set to ``"light"`` or ``"dark"`` depending on the terminal's background
|
| 69 |
+
(default: ``"light"``).
|
| 70 |
+
|
| 71 |
+
`colorscheme`
|
| 72 |
+
A dictionary mapping token types to (lightbg, darkbg) color names or
|
| 73 |
+
``None`` (default: ``None`` = use builtin colorscheme).
|
| 74 |
+
|
| 75 |
+
`linenos`
|
| 76 |
+
Set to ``True`` to have line numbers on the terminal output as well
|
| 77 |
+
(default: ``False`` = no line numbers).
|
| 78 |
+
"""
|
| 79 |
+
name = 'Terminal'
|
| 80 |
+
aliases = ['terminal', 'console']
|
| 81 |
+
filenames = []
|
| 82 |
+
|
| 83 |
+
def __init__(self, **options):
|
| 84 |
+
Formatter.__init__(self, **options)
|
| 85 |
+
self.darkbg = get_choice_opt(options, 'bg',
|
| 86 |
+
['light', 'dark'], 'light') == 'dark'
|
| 87 |
+
self.colorscheme = options.get('colorscheme', None) or TERMINAL_COLORS
|
| 88 |
+
self.linenos = options.get('linenos', False)
|
| 89 |
+
self._lineno = 0
|
| 90 |
+
|
| 91 |
+
def format(self, tokensource, outfile):
|
| 92 |
+
return Formatter.format(self, tokensource, outfile)
|
| 93 |
+
|
| 94 |
+
def _write_lineno(self, outfile):
|
| 95 |
+
self._lineno += 1
|
| 96 |
+
outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno))
|
| 97 |
+
|
| 98 |
+
def _get_color(self, ttype):
|
| 99 |
+
# self.colorscheme is a dict containing usually generic types, so we
|
| 100 |
+
# have to walk the tree of dots. The base Token type must be a key,
|
| 101 |
+
# even if it's empty string, as in the default above.
|
| 102 |
+
colors = self.colorscheme.get(ttype)
|
| 103 |
+
while colors is None:
|
| 104 |
+
ttype = ttype.parent
|
| 105 |
+
colors = self.colorscheme.get(ttype)
|
| 106 |
+
return colors[self.darkbg]
|
| 107 |
+
|
| 108 |
+
def format_unencoded(self, tokensource, outfile):
|
| 109 |
+
if self.linenos:
|
| 110 |
+
self._write_lineno(outfile)
|
| 111 |
+
|
| 112 |
+
for ttype, value in tokensource:
|
| 113 |
+
color = self._get_color(ttype)
|
| 114 |
+
|
| 115 |
+
for line in value.splitlines(True):
|
| 116 |
+
if color:
|
| 117 |
+
outfile.write(ansiformat(color, line.rstrip('\n')))
|
| 118 |
+
else:
|
| 119 |
+
outfile.write(line.rstrip('\n'))
|
| 120 |
+
if line.endswith('\n'):
|
| 121 |
+
if self.linenos:
|
| 122 |
+
self._write_lineno(outfile)
|
| 123 |
+
else:
|
| 124 |
+
outfile.write('\n')
|
| 125 |
+
|
| 126 |
+
if self.linenos:
|
| 127 |
+
outfile.write("\n")
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.formatters.terminal256
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Formatter for 256-color terminal output with ANSI sequences.
|
| 6 |
+
|
| 7 |
+
RGB-to-XTERM color conversion routines adapted from xterm256-conv
|
| 8 |
+
tool (http://frexx.de/xterm-256-notes/data/xterm256-conv2.tar.bz2)
|
| 9 |
+
by Wolfgang Frisch.
|
| 10 |
+
|
| 11 |
+
Formatter version 1.
|
| 12 |
+
|
| 13 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 14 |
+
:license: BSD, see LICENSE for details.
|
| 15 |
+
"""
|
| 16 |
+
|
| 17 |
+
# TODO:
|
| 18 |
+
# - Options to map style's bold/underline/italic/border attributes
|
| 19 |
+
# to some ANSI attrbutes (something like 'italic=underline')
|
| 20 |
+
# - An option to output "style RGB to xterm RGB/index" conversion table
|
| 21 |
+
# - An option to indicate that we are running in "reverse background"
|
| 22 |
+
# xterm. This means that default colors are white-on-black, not
|
| 23 |
+
# black-on-while, so colors like "white background" need to be converted
|
| 24 |
+
# to "white background, black foreground", etc...
|
| 25 |
+
|
| 26 |
+
from pip._vendor.pygments.formatter import Formatter
|
| 27 |
+
from pip._vendor.pygments.console import codes
|
| 28 |
+
from pip._vendor.pygments.style import ansicolors
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
__all__ = ['Terminal256Formatter', 'TerminalTrueColorFormatter']
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
class EscapeSequence:
|
| 35 |
+
def __init__(self, fg=None, bg=None, bold=False, underline=False, italic=False):
|
| 36 |
+
self.fg = fg
|
| 37 |
+
self.bg = bg
|
| 38 |
+
self.bold = bold
|
| 39 |
+
self.underline = underline
|
| 40 |
+
self.italic = italic
|
| 41 |
+
|
| 42 |
+
def escape(self, attrs):
|
| 43 |
+
if len(attrs):
|
| 44 |
+
return "\x1b[" + ";".join(attrs) + "m"
|
| 45 |
+
return ""
|
| 46 |
+
|
| 47 |
+
def color_string(self):
|
| 48 |
+
attrs = []
|
| 49 |
+
if self.fg is not None:
|
| 50 |
+
if self.fg in ansicolors:
|
| 51 |
+
esc = codes[self.fg.replace('ansi','')]
|
| 52 |
+
if ';01m' in esc:
|
| 53 |
+
self.bold = True
|
| 54 |
+
# extract fg color code.
|
| 55 |
+
attrs.append(esc[2:4])
|
| 56 |
+
else:
|
| 57 |
+
attrs.extend(("38", "5", "%i" % self.fg))
|
| 58 |
+
if self.bg is not None:
|
| 59 |
+
if self.bg in ansicolors:
|
| 60 |
+
esc = codes[self.bg.replace('ansi','')]
|
| 61 |
+
# extract fg color code, add 10 for bg.
|
| 62 |
+
attrs.append(str(int(esc[2:4])+10))
|
| 63 |
+
else:
|
| 64 |
+
attrs.extend(("48", "5", "%i" % self.bg))
|
| 65 |
+
if self.bold:
|
| 66 |
+
attrs.append("01")
|
| 67 |
+
if self.underline:
|
| 68 |
+
attrs.append("04")
|
| 69 |
+
if self.italic:
|
| 70 |
+
attrs.append("03")
|
| 71 |
+
return self.escape(attrs)
|
| 72 |
+
|
| 73 |
+
def true_color_string(self):
|
| 74 |
+
attrs = []
|
| 75 |
+
if self.fg:
|
| 76 |
+
attrs.extend(("38", "2", str(self.fg[0]), str(self.fg[1]), str(self.fg[2])))
|
| 77 |
+
if self.bg:
|
| 78 |
+
attrs.extend(("48", "2", str(self.bg[0]), str(self.bg[1]), str(self.bg[2])))
|
| 79 |
+
if self.bold:
|
| 80 |
+
attrs.append("01")
|
| 81 |
+
if self.underline:
|
| 82 |
+
attrs.append("04")
|
| 83 |
+
if self.italic:
|
| 84 |
+
attrs.append("03")
|
| 85 |
+
return self.escape(attrs)
|
| 86 |
+
|
| 87 |
+
def reset_string(self):
|
| 88 |
+
attrs = []
|
| 89 |
+
if self.fg is not None:
|
| 90 |
+
attrs.append("39")
|
| 91 |
+
if self.bg is not None:
|
| 92 |
+
attrs.append("49")
|
| 93 |
+
if self.bold or self.underline or self.italic:
|
| 94 |
+
attrs.append("00")
|
| 95 |
+
return self.escape(attrs)
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
class Terminal256Formatter(Formatter):
|
| 99 |
+
"""
|
| 100 |
+
Format tokens with ANSI color sequences, for output in a 256-color
|
| 101 |
+
terminal or console. Like in `TerminalFormatter` color sequences
|
| 102 |
+
are terminated at newlines, so that paging the output works correctly.
|
| 103 |
+
|
| 104 |
+
The formatter takes colors from a style defined by the `style` option
|
| 105 |
+
and converts them to nearest ANSI 256-color escape sequences. Bold and
|
| 106 |
+
underline attributes from the style are preserved (and displayed).
|
| 107 |
+
|
| 108 |
+
.. versionadded:: 0.9
|
| 109 |
+
|
| 110 |
+
.. versionchanged:: 2.2
|
| 111 |
+
If the used style defines foreground colors in the form ``#ansi*``, then
|
| 112 |
+
`Terminal256Formatter` will map these to non extended foreground color.
|
| 113 |
+
See :ref:`AnsiTerminalStyle` for more information.
|
| 114 |
+
|
| 115 |
+
.. versionchanged:: 2.4
|
| 116 |
+
The ANSI color names have been updated with names that are easier to
|
| 117 |
+
understand and align with colornames of other projects and terminals.
|
| 118 |
+
See :ref:`this table <new-ansi-color-names>` for more information.
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
Options accepted:
|
| 122 |
+
|
| 123 |
+
`style`
|
| 124 |
+
The style to use, can be a string or a Style subclass (default:
|
| 125 |
+
``'default'``).
|
| 126 |
+
|
| 127 |
+
`linenos`
|
| 128 |
+
Set to ``True`` to have line numbers on the terminal output as well
|
| 129 |
+
(default: ``False`` = no line numbers).
|
| 130 |
+
"""
|
| 131 |
+
name = 'Terminal256'
|
| 132 |
+
aliases = ['terminal256', 'console256', '256']
|
| 133 |
+
filenames = []
|
| 134 |
+
|
| 135 |
+
def __init__(self, **options):
|
| 136 |
+
Formatter.__init__(self, **options)
|
| 137 |
+
|
| 138 |
+
self.xterm_colors = []
|
| 139 |
+
self.best_match = {}
|
| 140 |
+
self.style_string = {}
|
| 141 |
+
|
| 142 |
+
self.usebold = 'nobold' not in options
|
| 143 |
+
self.useunderline = 'nounderline' not in options
|
| 144 |
+
self.useitalic = 'noitalic' not in options
|
| 145 |
+
|
| 146 |
+
self._build_color_table() # build an RGB-to-256 color conversion table
|
| 147 |
+
self._setup_styles() # convert selected style's colors to term. colors
|
| 148 |
+
|
| 149 |
+
self.linenos = options.get('linenos', False)
|
| 150 |
+
self._lineno = 0
|
| 151 |
+
|
| 152 |
+
def _build_color_table(self):
|
| 153 |
+
# colors 0..15: 16 basic colors
|
| 154 |
+
|
| 155 |
+
self.xterm_colors.append((0x00, 0x00, 0x00)) # 0
|
| 156 |
+
self.xterm_colors.append((0xcd, 0x00, 0x00)) # 1
|
| 157 |
+
self.xterm_colors.append((0x00, 0xcd, 0x00)) # 2
|
| 158 |
+
self.xterm_colors.append((0xcd, 0xcd, 0x00)) # 3
|
| 159 |
+
self.xterm_colors.append((0x00, 0x00, 0xee)) # 4
|
| 160 |
+
self.xterm_colors.append((0xcd, 0x00, 0xcd)) # 5
|
| 161 |
+
self.xterm_colors.append((0x00, 0xcd, 0xcd)) # 6
|
| 162 |
+
self.xterm_colors.append((0xe5, 0xe5, 0xe5)) # 7
|
| 163 |
+
self.xterm_colors.append((0x7f, 0x7f, 0x7f)) # 8
|
| 164 |
+
self.xterm_colors.append((0xff, 0x00, 0x00)) # 9
|
| 165 |
+
self.xterm_colors.append((0x00, 0xff, 0x00)) # 10
|
| 166 |
+
self.xterm_colors.append((0xff, 0xff, 0x00)) # 11
|
| 167 |
+
self.xterm_colors.append((0x5c, 0x5c, 0xff)) # 12
|
| 168 |
+
self.xterm_colors.append((0xff, 0x00, 0xff)) # 13
|
| 169 |
+
self.xterm_colors.append((0x00, 0xff, 0xff)) # 14
|
| 170 |
+
self.xterm_colors.append((0xff, 0xff, 0xff)) # 15
|
| 171 |
+
|
| 172 |
+
# colors 16..232: the 6x6x6 color cube
|
| 173 |
+
|
| 174 |
+
valuerange = (0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff)
|
| 175 |
+
|
| 176 |
+
for i in range(217):
|
| 177 |
+
r = valuerange[(i // 36) % 6]
|
| 178 |
+
g = valuerange[(i // 6) % 6]
|
| 179 |
+
b = valuerange[i % 6]
|
| 180 |
+
self.xterm_colors.append((r, g, b))
|
| 181 |
+
|
| 182 |
+
# colors 233..253: grayscale
|
| 183 |
+
|
| 184 |
+
for i in range(1, 22):
|
| 185 |
+
v = 8 + i * 10
|
| 186 |
+
self.xterm_colors.append((v, v, v))
|
| 187 |
+
|
| 188 |
+
def _closest_color(self, r, g, b):
|
| 189 |
+
distance = 257*257*3 # "infinity" (>distance from #000000 to #ffffff)
|
| 190 |
+
match = 0
|
| 191 |
+
|
| 192 |
+
for i in range(0, 254):
|
| 193 |
+
values = self.xterm_colors[i]
|
| 194 |
+
|
| 195 |
+
rd = r - values[0]
|
| 196 |
+
gd = g - values[1]
|
| 197 |
+
bd = b - values[2]
|
| 198 |
+
d = rd*rd + gd*gd + bd*bd
|
| 199 |
+
|
| 200 |
+
if d < distance:
|
| 201 |
+
match = i
|
| 202 |
+
distance = d
|
| 203 |
+
return match
|
| 204 |
+
|
| 205 |
+
def _color_index(self, color):
|
| 206 |
+
index = self.best_match.get(color, None)
|
| 207 |
+
if color in ansicolors:
|
| 208 |
+
# strip the `ansi/#ansi` part and look up code
|
| 209 |
+
index = color
|
| 210 |
+
self.best_match[color] = index
|
| 211 |
+
if index is None:
|
| 212 |
+
try:
|
| 213 |
+
rgb = int(str(color), 16)
|
| 214 |
+
except ValueError:
|
| 215 |
+
rgb = 0
|
| 216 |
+
|
| 217 |
+
r = (rgb >> 16) & 0xff
|
| 218 |
+
g = (rgb >> 8) & 0xff
|
| 219 |
+
b = rgb & 0xff
|
| 220 |
+
index = self._closest_color(r, g, b)
|
| 221 |
+
self.best_match[color] = index
|
| 222 |
+
return index
|
| 223 |
+
|
| 224 |
+
def _setup_styles(self):
|
| 225 |
+
for ttype, ndef in self.style:
|
| 226 |
+
escape = EscapeSequence()
|
| 227 |
+
# get foreground from ansicolor if set
|
| 228 |
+
if ndef['ansicolor']:
|
| 229 |
+
escape.fg = self._color_index(ndef['ansicolor'])
|
| 230 |
+
elif ndef['color']:
|
| 231 |
+
escape.fg = self._color_index(ndef['color'])
|
| 232 |
+
if ndef['bgansicolor']:
|
| 233 |
+
escape.bg = self._color_index(ndef['bgansicolor'])
|
| 234 |
+
elif ndef['bgcolor']:
|
| 235 |
+
escape.bg = self._color_index(ndef['bgcolor'])
|
| 236 |
+
if self.usebold and ndef['bold']:
|
| 237 |
+
escape.bold = True
|
| 238 |
+
if self.useunderline and ndef['underline']:
|
| 239 |
+
escape.underline = True
|
| 240 |
+
if self.useitalic and ndef['italic']:
|
| 241 |
+
escape.italic = True
|
| 242 |
+
self.style_string[str(ttype)] = (escape.color_string(),
|
| 243 |
+
escape.reset_string())
|
| 244 |
+
|
| 245 |
+
def _write_lineno(self, outfile):
|
| 246 |
+
self._lineno += 1
|
| 247 |
+
outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno))
|
| 248 |
+
|
| 249 |
+
def format(self, tokensource, outfile):
|
| 250 |
+
return Formatter.format(self, tokensource, outfile)
|
| 251 |
+
|
| 252 |
+
def format_unencoded(self, tokensource, outfile):
|
| 253 |
+
if self.linenos:
|
| 254 |
+
self._write_lineno(outfile)
|
| 255 |
+
|
| 256 |
+
for ttype, value in tokensource:
|
| 257 |
+
not_found = True
|
| 258 |
+
while ttype and not_found:
|
| 259 |
+
try:
|
| 260 |
+
# outfile.write( "<" + str(ttype) + ">" )
|
| 261 |
+
on, off = self.style_string[str(ttype)]
|
| 262 |
+
|
| 263 |
+
# Like TerminalFormatter, add "reset colors" escape sequence
|
| 264 |
+
# on newline.
|
| 265 |
+
spl = value.split('\n')
|
| 266 |
+
for line in spl[:-1]:
|
| 267 |
+
if line:
|
| 268 |
+
outfile.write(on + line + off)
|
| 269 |
+
if self.linenos:
|
| 270 |
+
self._write_lineno(outfile)
|
| 271 |
+
else:
|
| 272 |
+
outfile.write('\n')
|
| 273 |
+
|
| 274 |
+
if spl[-1]:
|
| 275 |
+
outfile.write(on + spl[-1] + off)
|
| 276 |
+
|
| 277 |
+
not_found = False
|
| 278 |
+
# outfile.write( '#' + str(ttype) + '#' )
|
| 279 |
+
|
| 280 |
+
except KeyError:
|
| 281 |
+
# ottype = ttype
|
| 282 |
+
ttype = ttype.parent
|
| 283 |
+
# outfile.write( '!' + str(ottype) + '->' + str(ttype) + '!' )
|
| 284 |
+
|
| 285 |
+
if not_found:
|
| 286 |
+
outfile.write(value)
|
| 287 |
+
|
| 288 |
+
if self.linenos:
|
| 289 |
+
outfile.write("\n")
|
| 290 |
+
|
| 291 |
+
|
| 292 |
+
|
| 293 |
+
class TerminalTrueColorFormatter(Terminal256Formatter):
|
| 294 |
+
r"""
|
| 295 |
+
Format tokens with ANSI color sequences, for output in a true-color
|
| 296 |
+
terminal or console. Like in `TerminalFormatter` color sequences
|
| 297 |
+
are terminated at newlines, so that paging the output works correctly.
|
| 298 |
+
|
| 299 |
+
.. versionadded:: 2.1
|
| 300 |
+
|
| 301 |
+
Options accepted:
|
| 302 |
+
|
| 303 |
+
`style`
|
| 304 |
+
The style to use, can be a string or a Style subclass (default:
|
| 305 |
+
``'default'``).
|
| 306 |
+
"""
|
| 307 |
+
name = 'TerminalTrueColor'
|
| 308 |
+
aliases = ['terminal16m', 'console16m', '16m']
|
| 309 |
+
filenames = []
|
| 310 |
+
|
| 311 |
+
def _build_color_table(self):
|
| 312 |
+
pass
|
| 313 |
+
|
| 314 |
+
def _color_tuple(self, color):
|
| 315 |
+
try:
|
| 316 |
+
rgb = int(str(color), 16)
|
| 317 |
+
except ValueError:
|
| 318 |
+
return None
|
| 319 |
+
r = (rgb >> 16) & 0xff
|
| 320 |
+
g = (rgb >> 8) & 0xff
|
| 321 |
+
b = rgb & 0xff
|
| 322 |
+
return (r, g, b)
|
| 323 |
+
|
| 324 |
+
def _setup_styles(self):
|
| 325 |
+
for ttype, ndef in self.style:
|
| 326 |
+
escape = EscapeSequence()
|
| 327 |
+
if ndef['color']:
|
| 328 |
+
escape.fg = self._color_tuple(ndef['color'])
|
| 329 |
+
if ndef['bgcolor']:
|
| 330 |
+
escape.bg = self._color_tuple(ndef['bgcolor'])
|
| 331 |
+
if self.usebold and ndef['bold']:
|
| 332 |
+
escape.bold = True
|
| 333 |
+
if self.useunderline and ndef['underline']:
|
| 334 |
+
escape.underline = True
|
| 335 |
+
if self.useitalic and ndef['italic']:
|
| 336 |
+
escape.italic = True
|
| 337 |
+
self.style_string[str(ttype)] = (escape.true_color_string(),
|
| 338 |
+
escape.reset_string())
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.lexers
|
| 3 |
+
~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Pygments lexers.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import re
|
| 12 |
+
import sys
|
| 13 |
+
import types
|
| 14 |
+
import fnmatch
|
| 15 |
+
from os.path import basename
|
| 16 |
+
|
| 17 |
+
from pip._vendor.pygments.lexers._mapping import LEXERS
|
| 18 |
+
from pip._vendor.pygments.modeline import get_filetype_from_buffer
|
| 19 |
+
from pip._vendor.pygments.plugin import find_plugin_lexers
|
| 20 |
+
from pip._vendor.pygments.util import ClassNotFound, guess_decode
|
| 21 |
+
|
| 22 |
+
COMPAT = {
|
| 23 |
+
'Python3Lexer': 'PythonLexer',
|
| 24 |
+
'Python3TracebackLexer': 'PythonTracebackLexer',
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
__all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
|
| 28 |
+
'guess_lexer', 'load_lexer_from_file'] + list(LEXERS) + list(COMPAT)
|
| 29 |
+
|
| 30 |
+
_lexer_cache = {}
|
| 31 |
+
_pattern_cache = {}
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
def _fn_matches(fn, glob):
|
| 35 |
+
"""Return whether the supplied file name fn matches pattern filename."""
|
| 36 |
+
if glob not in _pattern_cache:
|
| 37 |
+
pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob))
|
| 38 |
+
return pattern.match(fn)
|
| 39 |
+
return _pattern_cache[glob].match(fn)
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def _load_lexers(module_name):
|
| 43 |
+
"""Load a lexer (and all others in the module too)."""
|
| 44 |
+
mod = __import__(module_name, None, None, ['__all__'])
|
| 45 |
+
for lexer_name in mod.__all__:
|
| 46 |
+
cls = getattr(mod, lexer_name)
|
| 47 |
+
_lexer_cache[cls.name] = cls
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
def get_all_lexers():
|
| 51 |
+
"""Return a generator of tuples in the form ``(name, aliases,
|
| 52 |
+
filenames, mimetypes)`` of all know lexers.
|
| 53 |
+
"""
|
| 54 |
+
for item in LEXERS.values():
|
| 55 |
+
yield item[1:]
|
| 56 |
+
for lexer in find_plugin_lexers():
|
| 57 |
+
yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
def find_lexer_class(name):
|
| 61 |
+
"""Lookup a lexer class by name.
|
| 62 |
+
|
| 63 |
+
Return None if not found.
|
| 64 |
+
"""
|
| 65 |
+
if name in _lexer_cache:
|
| 66 |
+
return _lexer_cache[name]
|
| 67 |
+
# lookup builtin lexers
|
| 68 |
+
for module_name, lname, aliases, _, _ in LEXERS.values():
|
| 69 |
+
if name == lname:
|
| 70 |
+
_load_lexers(module_name)
|
| 71 |
+
return _lexer_cache[name]
|
| 72 |
+
# continue with lexers from setuptools entrypoints
|
| 73 |
+
for cls in find_plugin_lexers():
|
| 74 |
+
if cls.name == name:
|
| 75 |
+
return cls
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
def find_lexer_class_by_name(_alias):
|
| 79 |
+
"""Lookup a lexer class by alias.
|
| 80 |
+
|
| 81 |
+
Like `get_lexer_by_name`, but does not instantiate the class.
|
| 82 |
+
|
| 83 |
+
.. versionadded:: 2.2
|
| 84 |
+
"""
|
| 85 |
+
if not _alias:
|
| 86 |
+
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
| 87 |
+
# lookup builtin lexers
|
| 88 |
+
for module_name, name, aliases, _, _ in LEXERS.values():
|
| 89 |
+
if _alias.lower() in aliases:
|
| 90 |
+
if name not in _lexer_cache:
|
| 91 |
+
_load_lexers(module_name)
|
| 92 |
+
return _lexer_cache[name]
|
| 93 |
+
# continue with lexers from setuptools entrypoints
|
| 94 |
+
for cls in find_plugin_lexers():
|
| 95 |
+
if _alias.lower() in cls.aliases:
|
| 96 |
+
return cls
|
| 97 |
+
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
| 98 |
+
|
| 99 |
+
|
| 100 |
+
def get_lexer_by_name(_alias, **options):
|
| 101 |
+
"""Get a lexer by an alias.
|
| 102 |
+
|
| 103 |
+
Raises ClassNotFound if not found.
|
| 104 |
+
"""
|
| 105 |
+
if not _alias:
|
| 106 |
+
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
| 107 |
+
|
| 108 |
+
# lookup builtin lexers
|
| 109 |
+
for module_name, name, aliases, _, _ in LEXERS.values():
|
| 110 |
+
if _alias.lower() in aliases:
|
| 111 |
+
if name not in _lexer_cache:
|
| 112 |
+
_load_lexers(module_name)
|
| 113 |
+
return _lexer_cache[name](**options)
|
| 114 |
+
# continue with lexers from setuptools entrypoints
|
| 115 |
+
for cls in find_plugin_lexers():
|
| 116 |
+
if _alias.lower() in cls.aliases:
|
| 117 |
+
return cls(**options)
|
| 118 |
+
raise ClassNotFound('no lexer for alias %r found' % _alias)
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
def load_lexer_from_file(filename, lexername="CustomLexer", **options):
|
| 122 |
+
"""Load a lexer from a file.
|
| 123 |
+
|
| 124 |
+
This method expects a file located relative to the current working
|
| 125 |
+
directory, which contains a Lexer class. By default, it expects the
|
| 126 |
+
Lexer to be name CustomLexer; you can specify your own class name
|
| 127 |
+
as the second argument to this function.
|
| 128 |
+
|
| 129 |
+
Users should be very careful with the input, because this method
|
| 130 |
+
is equivalent to running eval on the input file.
|
| 131 |
+
|
| 132 |
+
Raises ClassNotFound if there are any problems importing the Lexer.
|
| 133 |
+
|
| 134 |
+
.. versionadded:: 2.2
|
| 135 |
+
"""
|
| 136 |
+
try:
|
| 137 |
+
# This empty dict will contain the namespace for the exec'd file
|
| 138 |
+
custom_namespace = {}
|
| 139 |
+
with open(filename, 'rb') as f:
|
| 140 |
+
exec(f.read(), custom_namespace)
|
| 141 |
+
# Retrieve the class `lexername` from that namespace
|
| 142 |
+
if lexername not in custom_namespace:
|
| 143 |
+
raise ClassNotFound('no valid %s class found in %s' %
|
| 144 |
+
(lexername, filename))
|
| 145 |
+
lexer_class = custom_namespace[lexername]
|
| 146 |
+
# And finally instantiate it with the options
|
| 147 |
+
return lexer_class(**options)
|
| 148 |
+
except OSError as err:
|
| 149 |
+
raise ClassNotFound('cannot read %s: %s' % (filename, err))
|
| 150 |
+
except ClassNotFound:
|
| 151 |
+
raise
|
| 152 |
+
except Exception as err:
|
| 153 |
+
raise ClassNotFound('error when loading custom lexer: %s' % err)
|
| 154 |
+
|
| 155 |
+
|
| 156 |
+
def find_lexer_class_for_filename(_fn, code=None):
|
| 157 |
+
"""Get a lexer for a filename.
|
| 158 |
+
|
| 159 |
+
If multiple lexers match the filename pattern, use ``analyse_text()`` to
|
| 160 |
+
figure out which one is more appropriate.
|
| 161 |
+
|
| 162 |
+
Returns None if not found.
|
| 163 |
+
"""
|
| 164 |
+
matches = []
|
| 165 |
+
fn = basename(_fn)
|
| 166 |
+
for modname, name, _, filenames, _ in LEXERS.values():
|
| 167 |
+
for filename in filenames:
|
| 168 |
+
if _fn_matches(fn, filename):
|
| 169 |
+
if name not in _lexer_cache:
|
| 170 |
+
_load_lexers(modname)
|
| 171 |
+
matches.append((_lexer_cache[name], filename))
|
| 172 |
+
for cls in find_plugin_lexers():
|
| 173 |
+
for filename in cls.filenames:
|
| 174 |
+
if _fn_matches(fn, filename):
|
| 175 |
+
matches.append((cls, filename))
|
| 176 |
+
|
| 177 |
+
if isinstance(code, bytes):
|
| 178 |
+
# decode it, since all analyse_text functions expect unicode
|
| 179 |
+
code = guess_decode(code)
|
| 180 |
+
|
| 181 |
+
def get_rating(info):
|
| 182 |
+
cls, filename = info
|
| 183 |
+
# explicit patterns get a bonus
|
| 184 |
+
bonus = '*' not in filename and 0.5 or 0
|
| 185 |
+
# The class _always_ defines analyse_text because it's included in
|
| 186 |
+
# the Lexer class. The default implementation returns None which
|
| 187 |
+
# gets turned into 0.0. Run scripts/detect_missing_analyse_text.py
|
| 188 |
+
# to find lexers which need it overridden.
|
| 189 |
+
if code:
|
| 190 |
+
return cls.analyse_text(code) + bonus, cls.__name__
|
| 191 |
+
return cls.priority + bonus, cls.__name__
|
| 192 |
+
|
| 193 |
+
if matches:
|
| 194 |
+
matches.sort(key=get_rating)
|
| 195 |
+
# print "Possible lexers, after sort:", matches
|
| 196 |
+
return matches[-1][0]
|
| 197 |
+
|
| 198 |
+
|
| 199 |
+
def get_lexer_for_filename(_fn, code=None, **options):
|
| 200 |
+
"""Get a lexer for a filename.
|
| 201 |
+
|
| 202 |
+
If multiple lexers match the filename pattern, use ``analyse_text()`` to
|
| 203 |
+
figure out which one is more appropriate.
|
| 204 |
+
|
| 205 |
+
Raises ClassNotFound if not found.
|
| 206 |
+
"""
|
| 207 |
+
res = find_lexer_class_for_filename(_fn, code)
|
| 208 |
+
if not res:
|
| 209 |
+
raise ClassNotFound('no lexer for filename %r found' % _fn)
|
| 210 |
+
return res(**options)
|
| 211 |
+
|
| 212 |
+
|
| 213 |
+
def get_lexer_for_mimetype(_mime, **options):
|
| 214 |
+
"""Get a lexer for a mimetype.
|
| 215 |
+
|
| 216 |
+
Raises ClassNotFound if not found.
|
| 217 |
+
"""
|
| 218 |
+
for modname, name, _, _, mimetypes in LEXERS.values():
|
| 219 |
+
if _mime in mimetypes:
|
| 220 |
+
if name not in _lexer_cache:
|
| 221 |
+
_load_lexers(modname)
|
| 222 |
+
return _lexer_cache[name](**options)
|
| 223 |
+
for cls in find_plugin_lexers():
|
| 224 |
+
if _mime in cls.mimetypes:
|
| 225 |
+
return cls(**options)
|
| 226 |
+
raise ClassNotFound('no lexer for mimetype %r found' % _mime)
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
def _iter_lexerclasses(plugins=True):
|
| 230 |
+
"""Return an iterator over all lexer classes."""
|
| 231 |
+
for key in sorted(LEXERS):
|
| 232 |
+
module_name, name = LEXERS[key][:2]
|
| 233 |
+
if name not in _lexer_cache:
|
| 234 |
+
_load_lexers(module_name)
|
| 235 |
+
yield _lexer_cache[name]
|
| 236 |
+
if plugins:
|
| 237 |
+
yield from find_plugin_lexers()
|
| 238 |
+
|
| 239 |
+
|
| 240 |
+
def guess_lexer_for_filename(_fn, _text, **options):
|
| 241 |
+
"""
|
| 242 |
+
Lookup all lexers that handle those filenames primary (``filenames``)
|
| 243 |
+
or secondary (``alias_filenames``). Then run a text analysis for those
|
| 244 |
+
lexers and choose the best result.
|
| 245 |
+
|
| 246 |
+
usage::
|
| 247 |
+
|
| 248 |
+
>>> from pygments.lexers import guess_lexer_for_filename
|
| 249 |
+
>>> guess_lexer_for_filename('hello.html', '<%= @foo %>')
|
| 250 |
+
<pygments.lexers.templates.RhtmlLexer object at 0xb7d2f32c>
|
| 251 |
+
>>> guess_lexer_for_filename('hello.html', '<h1>{{ title|e }}</h1>')
|
| 252 |
+
<pygments.lexers.templates.HtmlDjangoLexer object at 0xb7d2f2ac>
|
| 253 |
+
>>> guess_lexer_for_filename('style.css', 'a { color: <?= $link ?> }')
|
| 254 |
+
<pygments.lexers.templates.CssPhpLexer object at 0xb7ba518c>
|
| 255 |
+
"""
|
| 256 |
+
fn = basename(_fn)
|
| 257 |
+
primary = {}
|
| 258 |
+
matching_lexers = set()
|
| 259 |
+
for lexer in _iter_lexerclasses():
|
| 260 |
+
for filename in lexer.filenames:
|
| 261 |
+
if _fn_matches(fn, filename):
|
| 262 |
+
matching_lexers.add(lexer)
|
| 263 |
+
primary[lexer] = True
|
| 264 |
+
for filename in lexer.alias_filenames:
|
| 265 |
+
if _fn_matches(fn, filename):
|
| 266 |
+
matching_lexers.add(lexer)
|
| 267 |
+
primary[lexer] = False
|
| 268 |
+
if not matching_lexers:
|
| 269 |
+
raise ClassNotFound('no lexer for filename %r found' % fn)
|
| 270 |
+
if len(matching_lexers) == 1:
|
| 271 |
+
return matching_lexers.pop()(**options)
|
| 272 |
+
result = []
|
| 273 |
+
for lexer in matching_lexers:
|
| 274 |
+
rv = lexer.analyse_text(_text)
|
| 275 |
+
if rv == 1.0:
|
| 276 |
+
return lexer(**options)
|
| 277 |
+
result.append((rv, lexer))
|
| 278 |
+
|
| 279 |
+
def type_sort(t):
|
| 280 |
+
# sort by:
|
| 281 |
+
# - analyse score
|
| 282 |
+
# - is primary filename pattern?
|
| 283 |
+
# - priority
|
| 284 |
+
# - last resort: class name
|
| 285 |
+
return (t[0], primary[t[1]], t[1].priority, t[1].__name__)
|
| 286 |
+
result.sort(key=type_sort)
|
| 287 |
+
|
| 288 |
+
return result[-1][1](**options)
|
| 289 |
+
|
| 290 |
+
|
| 291 |
+
def guess_lexer(_text, **options):
|
| 292 |
+
"""Guess a lexer by strong distinctions in the text (eg, shebang)."""
|
| 293 |
+
|
| 294 |
+
if not isinstance(_text, str):
|
| 295 |
+
inencoding = options.get('inencoding', options.get('encoding'))
|
| 296 |
+
if inencoding:
|
| 297 |
+
_text = _text.decode(inencoding or 'utf8')
|
| 298 |
+
else:
|
| 299 |
+
_text, _ = guess_decode(_text)
|
| 300 |
+
|
| 301 |
+
# try to get a vim modeline first
|
| 302 |
+
ft = get_filetype_from_buffer(_text)
|
| 303 |
+
|
| 304 |
+
if ft is not None:
|
| 305 |
+
try:
|
| 306 |
+
return get_lexer_by_name(ft, **options)
|
| 307 |
+
except ClassNotFound:
|
| 308 |
+
pass
|
| 309 |
+
|
| 310 |
+
best_lexer = [0.0, None]
|
| 311 |
+
for lexer in _iter_lexerclasses():
|
| 312 |
+
rv = lexer.analyse_text(_text)
|
| 313 |
+
if rv == 1.0:
|
| 314 |
+
return lexer(**options)
|
| 315 |
+
if rv > best_lexer[0]:
|
| 316 |
+
best_lexer[:] = (rv, lexer)
|
| 317 |
+
if not best_lexer[0] or best_lexer[1] is None:
|
| 318 |
+
raise ClassNotFound('no lexer matching the text found')
|
| 319 |
+
return best_lexer[1](**options)
|
| 320 |
+
|
| 321 |
+
|
| 322 |
+
class _automodule(types.ModuleType):
|
| 323 |
+
"""Automatically import lexers."""
|
| 324 |
+
|
| 325 |
+
def __getattr__(self, name):
|
| 326 |
+
info = LEXERS.get(name)
|
| 327 |
+
if info:
|
| 328 |
+
_load_lexers(info[0])
|
| 329 |
+
cls = _lexer_cache[info[1]]
|
| 330 |
+
setattr(self, name, cls)
|
| 331 |
+
return cls
|
| 332 |
+
if name in COMPAT:
|
| 333 |
+
return getattr(self, COMPAT[name])
|
| 334 |
+
raise AttributeError(name)
|
| 335 |
+
|
| 336 |
+
|
| 337 |
+
oldmod = sys.modules[__name__]
|
| 338 |
+
newmod = _automodule(__name__)
|
| 339 |
+
newmod.__dict__.update(oldmod.__dict__)
|
| 340 |
+
sys.modules[__name__] = newmod
|
| 341 |
+
del newmod.newmod, newmod.oldmod, newmod.sys, newmod.types
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file (9.28 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc
ADDED
|
Binary file (58.2 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc
ADDED
|
Binary file (29.5 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py
ADDED
|
@@ -0,0 +1,580 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.lexers._mapping
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Lexer mapping definitions. This file is generated by itself. Everytime
|
| 6 |
+
you change something on a builtin lexer definition, run this script from
|
| 7 |
+
the lexers folder to update it.
|
| 8 |
+
|
| 9 |
+
Do not alter the LEXERS dictionary by hand.
|
| 10 |
+
|
| 11 |
+
:copyright: Copyright 2006-2014, 2016 by the Pygments team, see AUTHORS.
|
| 12 |
+
:license: BSD, see LICENSE for details.
|
| 13 |
+
"""
|
| 14 |
+
|
| 15 |
+
LEXERS = {
|
| 16 |
+
'ABAPLexer': ('pip._vendor.pygments.lexers.business', 'ABAP', ('abap',), ('*.abap', '*.ABAP'), ('text/x-abap',)),
|
| 17 |
+
'AMDGPULexer': ('pip._vendor.pygments.lexers.amdgpu', 'AMDGPU', ('amdgpu',), ('*.isa',), ()),
|
| 18 |
+
'APLLexer': ('pip._vendor.pygments.lexers.apl', 'APL', ('apl',), ('*.apl', '*.aplf', '*.aplo', '*.apln', '*.aplc', '*.apli', '*.dyalog'), ()),
|
| 19 |
+
'AbnfLexer': ('pip._vendor.pygments.lexers.grammar_notation', 'ABNF', ('abnf',), ('*.abnf',), ('text/x-abnf',)),
|
| 20 |
+
'ActionScript3Lexer': ('pip._vendor.pygments.lexers.actionscript', 'ActionScript 3', ('actionscript3', 'as3'), ('*.as',), ('application/x-actionscript3', 'text/x-actionscript3', 'text/actionscript3')),
|
| 21 |
+
'ActionScriptLexer': ('pip._vendor.pygments.lexers.actionscript', 'ActionScript', ('actionscript', 'as'), ('*.as',), ('application/x-actionscript', 'text/x-actionscript', 'text/actionscript')),
|
| 22 |
+
'AdaLexer': ('pip._vendor.pygments.lexers.pascal', 'Ada', ('ada', 'ada95', 'ada2005'), ('*.adb', '*.ads', '*.ada'), ('text/x-ada',)),
|
| 23 |
+
'AdlLexer': ('pip._vendor.pygments.lexers.archetype', 'ADL', ('adl',), ('*.adl', '*.adls', '*.adlf', '*.adlx'), ()),
|
| 24 |
+
'AgdaLexer': ('pip._vendor.pygments.lexers.haskell', 'Agda', ('agda',), ('*.agda',), ('text/x-agda',)),
|
| 25 |
+
'AheuiLexer': ('pip._vendor.pygments.lexers.esoteric', 'Aheui', ('aheui',), ('*.aheui',), ()),
|
| 26 |
+
'AlloyLexer': ('pip._vendor.pygments.lexers.dsls', 'Alloy', ('alloy',), ('*.als',), ('text/x-alloy',)),
|
| 27 |
+
'AmbientTalkLexer': ('pip._vendor.pygments.lexers.ambient', 'AmbientTalk', ('ambienttalk', 'ambienttalk/2', 'at'), ('*.at',), ('text/x-ambienttalk',)),
|
| 28 |
+
'AmplLexer': ('pip._vendor.pygments.lexers.ampl', 'Ampl', ('ampl',), ('*.run',), ()),
|
| 29 |
+
'Angular2HtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML + Angular2', ('html+ng2',), ('*.ng2',), ()),
|
| 30 |
+
'Angular2Lexer': ('pip._vendor.pygments.lexers.templates', 'Angular2', ('ng2',), (), ()),
|
| 31 |
+
'AntlrActionScriptLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With ActionScript Target', ('antlr-actionscript', 'antlr-as'), ('*.G', '*.g'), ()),
|
| 32 |
+
'AntlrCSharpLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With C# Target', ('antlr-csharp', 'antlr-c#'), ('*.G', '*.g'), ()),
|
| 33 |
+
'AntlrCppLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With CPP Target', ('antlr-cpp',), ('*.G', '*.g'), ()),
|
| 34 |
+
'AntlrJavaLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With Java Target', ('antlr-java',), ('*.G', '*.g'), ()),
|
| 35 |
+
'AntlrLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR', ('antlr',), (), ()),
|
| 36 |
+
'AntlrObjectiveCLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With ObjectiveC Target', ('antlr-objc',), ('*.G', '*.g'), ()),
|
| 37 |
+
'AntlrPerlLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With Perl Target', ('antlr-perl',), ('*.G', '*.g'), ()),
|
| 38 |
+
'AntlrPythonLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With Python Target', ('antlr-python',), ('*.G', '*.g'), ()),
|
| 39 |
+
'AntlrRubyLexer': ('pip._vendor.pygments.lexers.parsers', 'ANTLR With Ruby Target', ('antlr-ruby', 'antlr-rb'), ('*.G', '*.g'), ()),
|
| 40 |
+
'ApacheConfLexer': ('pip._vendor.pygments.lexers.configs', 'ApacheConf', ('apacheconf', 'aconf', 'apache'), ('.htaccess', 'apache.conf', 'apache2.conf'), ('text/x-apacheconf',)),
|
| 41 |
+
'AppleScriptLexer': ('pip._vendor.pygments.lexers.scripting', 'AppleScript', ('applescript',), ('*.applescript',), ()),
|
| 42 |
+
'ArduinoLexer': ('pip._vendor.pygments.lexers.c_like', 'Arduino', ('arduino',), ('*.ino',), ('text/x-arduino',)),
|
| 43 |
+
'ArrowLexer': ('pip._vendor.pygments.lexers.arrow', 'Arrow', ('arrow',), ('*.arw',), ()),
|
| 44 |
+
'AscLexer': ('pip._vendor.pygments.lexers.asc', 'ASCII armored', ('asc', 'pem'), ('*.asc', '*.pem', 'id_dsa', 'id_ecdsa', 'id_ecdsa_sk', 'id_ed25519', 'id_ed25519_sk', 'id_rsa'), ('application/pgp-keys', 'application/pgp-encrypted', 'application/pgp-signature')),
|
| 45 |
+
'AspectJLexer': ('pip._vendor.pygments.lexers.jvm', 'AspectJ', ('aspectj',), ('*.aj',), ('text/x-aspectj',)),
|
| 46 |
+
'AsymptoteLexer': ('pip._vendor.pygments.lexers.graphics', 'Asymptote', ('asymptote', 'asy'), ('*.asy',), ('text/x-asymptote',)),
|
| 47 |
+
'AugeasLexer': ('pip._vendor.pygments.lexers.configs', 'Augeas', ('augeas',), ('*.aug',), ()),
|
| 48 |
+
'AutoItLexer': ('pip._vendor.pygments.lexers.automation', 'AutoIt', ('autoit',), ('*.au3',), ('text/x-autoit',)),
|
| 49 |
+
'AutohotkeyLexer': ('pip._vendor.pygments.lexers.automation', 'autohotkey', ('autohotkey', 'ahk'), ('*.ahk', '*.ahkl'), ('text/x-autohotkey',)),
|
| 50 |
+
'AwkLexer': ('pip._vendor.pygments.lexers.textedit', 'Awk', ('awk', 'gawk', 'mawk', 'nawk'), ('*.awk',), ('application/x-awk',)),
|
| 51 |
+
'BBCBasicLexer': ('pip._vendor.pygments.lexers.basic', 'BBC Basic', ('bbcbasic',), ('*.bbc',), ()),
|
| 52 |
+
'BBCodeLexer': ('pip._vendor.pygments.lexers.markup', 'BBCode', ('bbcode',), (), ('text/x-bbcode',)),
|
| 53 |
+
'BCLexer': ('pip._vendor.pygments.lexers.algebra', 'BC', ('bc',), ('*.bc',), ()),
|
| 54 |
+
'BSTLexer': ('pip._vendor.pygments.lexers.bibtex', 'BST', ('bst', 'bst-pybtex'), ('*.bst',), ()),
|
| 55 |
+
'BareLexer': ('pip._vendor.pygments.lexers.bare', 'BARE', ('bare',), ('*.bare',), ()),
|
| 56 |
+
'BaseMakefileLexer': ('pip._vendor.pygments.lexers.make', 'Base Makefile', ('basemake',), (), ()),
|
| 57 |
+
'BashLexer': ('pip._vendor.pygments.lexers.shell', 'Bash', ('bash', 'sh', 'ksh', 'zsh', 'shell'), ('*.sh', '*.ksh', '*.bash', '*.ebuild', '*.eclass', '*.exheres-0', '*.exlib', '*.zsh', '.bashrc', 'bashrc', '.bash_*', 'bash_*', 'zshrc', '.zshrc', '.kshrc', 'kshrc', 'PKGBUILD'), ('application/x-sh', 'application/x-shellscript', 'text/x-shellscript')),
|
| 58 |
+
'BashSessionLexer': ('pip._vendor.pygments.lexers.shell', 'Bash Session', ('console', 'shell-session'), ('*.sh-session', '*.shell-session'), ('application/x-shell-session', 'application/x-sh-session')),
|
| 59 |
+
'BatchLexer': ('pip._vendor.pygments.lexers.shell', 'Batchfile', ('batch', 'bat', 'dosbatch', 'winbatch'), ('*.bat', '*.cmd'), ('application/x-dos-batch',)),
|
| 60 |
+
'BddLexer': ('pip._vendor.pygments.lexers.bdd', 'Bdd', ('bdd',), ('*.feature',), ('text/x-bdd',)),
|
| 61 |
+
'BefungeLexer': ('pip._vendor.pygments.lexers.esoteric', 'Befunge', ('befunge',), ('*.befunge',), ('application/x-befunge',)),
|
| 62 |
+
'BibTeXLexer': ('pip._vendor.pygments.lexers.bibtex', 'BibTeX', ('bibtex', 'bib'), ('*.bib',), ('text/x-bibtex',)),
|
| 63 |
+
'BlitzBasicLexer': ('pip._vendor.pygments.lexers.basic', 'BlitzBasic', ('blitzbasic', 'b3d', 'bplus'), ('*.bb', '*.decls'), ('text/x-bb',)),
|
| 64 |
+
'BlitzMaxLexer': ('pip._vendor.pygments.lexers.basic', 'BlitzMax', ('blitzmax', 'bmax'), ('*.bmx',), ('text/x-bmx',)),
|
| 65 |
+
'BnfLexer': ('pip._vendor.pygments.lexers.grammar_notation', 'BNF', ('bnf',), ('*.bnf',), ('text/x-bnf',)),
|
| 66 |
+
'BoaLexer': ('pip._vendor.pygments.lexers.boa', 'Boa', ('boa',), ('*.boa',), ()),
|
| 67 |
+
'BooLexer': ('pip._vendor.pygments.lexers.dotnet', 'Boo', ('boo',), ('*.boo',), ('text/x-boo',)),
|
| 68 |
+
'BoogieLexer': ('pip._vendor.pygments.lexers.verification', 'Boogie', ('boogie',), ('*.bpl',), ()),
|
| 69 |
+
'BrainfuckLexer': ('pip._vendor.pygments.lexers.esoteric', 'Brainfuck', ('brainfuck', 'bf'), ('*.bf', '*.b'), ('application/x-brainfuck',)),
|
| 70 |
+
'BugsLexer': ('pip._vendor.pygments.lexers.modeling', 'BUGS', ('bugs', 'winbugs', 'openbugs'), ('*.bug',), ()),
|
| 71 |
+
'CAmkESLexer': ('pip._vendor.pygments.lexers.esoteric', 'CAmkES', ('camkes', 'idl4'), ('*.camkes', '*.idl4'), ()),
|
| 72 |
+
'CLexer': ('pip._vendor.pygments.lexers.c_cpp', 'C', ('c',), ('*.c', '*.h', '*.idc', '*.x[bp]m'), ('text/x-chdr', 'text/x-csrc', 'image/x-xbitmap', 'image/x-xpixmap')),
|
| 73 |
+
'CMakeLexer': ('pip._vendor.pygments.lexers.make', 'CMake', ('cmake',), ('*.cmake', 'CMakeLists.txt'), ('text/x-cmake',)),
|
| 74 |
+
'CObjdumpLexer': ('pip._vendor.pygments.lexers.asm', 'c-objdump', ('c-objdump',), ('*.c-objdump',), ('text/x-c-objdump',)),
|
| 75 |
+
'CPSALexer': ('pip._vendor.pygments.lexers.lisp', 'CPSA', ('cpsa',), ('*.cpsa',), ()),
|
| 76 |
+
'CSharpAspxLexer': ('pip._vendor.pygments.lexers.dotnet', 'aspx-cs', ('aspx-cs',), ('*.aspx', '*.asax', '*.ascx', '*.ashx', '*.asmx', '*.axd'), ()),
|
| 77 |
+
'CSharpLexer': ('pip._vendor.pygments.lexers.dotnet', 'C#', ('csharp', 'c#', 'cs'), ('*.cs',), ('text/x-csharp',)),
|
| 78 |
+
'Ca65Lexer': ('pip._vendor.pygments.lexers.asm', 'ca65 assembler', ('ca65',), ('*.s',), ()),
|
| 79 |
+
'CadlLexer': ('pip._vendor.pygments.lexers.archetype', 'cADL', ('cadl',), ('*.cadl',), ()),
|
| 80 |
+
'CapDLLexer': ('pip._vendor.pygments.lexers.esoteric', 'CapDL', ('capdl',), ('*.cdl',), ()),
|
| 81 |
+
'CapnProtoLexer': ('pip._vendor.pygments.lexers.capnproto', "Cap'n Proto", ('capnp',), ('*.capnp',), ()),
|
| 82 |
+
'CbmBasicV2Lexer': ('pip._vendor.pygments.lexers.basic', 'CBM BASIC V2', ('cbmbas',), ('*.bas',), ()),
|
| 83 |
+
'CddlLexer': ('pip._vendor.pygments.lexers.cddl', 'CDDL', ('cddl',), ('*.cddl',), ('text/x-cddl',)),
|
| 84 |
+
'CeylonLexer': ('pip._vendor.pygments.lexers.jvm', 'Ceylon', ('ceylon',), ('*.ceylon',), ('text/x-ceylon',)),
|
| 85 |
+
'Cfengine3Lexer': ('pip._vendor.pygments.lexers.configs', 'CFEngine3', ('cfengine3', 'cf3'), ('*.cf',), ()),
|
| 86 |
+
'ChaiscriptLexer': ('pip._vendor.pygments.lexers.scripting', 'ChaiScript', ('chaiscript', 'chai'), ('*.chai',), ('text/x-chaiscript', 'application/x-chaiscript')),
|
| 87 |
+
'ChapelLexer': ('pip._vendor.pygments.lexers.chapel', 'Chapel', ('chapel', 'chpl'), ('*.chpl',), ()),
|
| 88 |
+
'CharmciLexer': ('pip._vendor.pygments.lexers.c_like', 'Charmci', ('charmci',), ('*.ci',), ()),
|
| 89 |
+
'CheetahHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Cheetah', ('html+cheetah', 'html+spitfire', 'htmlcheetah'), (), ('text/html+cheetah', 'text/html+spitfire')),
|
| 90 |
+
'CheetahJavascriptLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Cheetah', ('javascript+cheetah', 'js+cheetah', 'javascript+spitfire', 'js+spitfire'), (), ('application/x-javascript+cheetah', 'text/x-javascript+cheetah', 'text/javascript+cheetah', 'application/x-javascript+spitfire', 'text/x-javascript+spitfire', 'text/javascript+spitfire')),
|
| 91 |
+
'CheetahLexer': ('pip._vendor.pygments.lexers.templates', 'Cheetah', ('cheetah', 'spitfire'), ('*.tmpl', '*.spt'), ('application/x-cheetah', 'application/x-spitfire')),
|
| 92 |
+
'CheetahXmlLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Cheetah', ('xml+cheetah', 'xml+spitfire'), (), ('application/xml+cheetah', 'application/xml+spitfire')),
|
| 93 |
+
'CirruLexer': ('pip._vendor.pygments.lexers.webmisc', 'Cirru', ('cirru',), ('*.cirru',), ('text/x-cirru',)),
|
| 94 |
+
'ClayLexer': ('pip._vendor.pygments.lexers.c_like', 'Clay', ('clay',), ('*.clay',), ('text/x-clay',)),
|
| 95 |
+
'CleanLexer': ('pip._vendor.pygments.lexers.clean', 'Clean', ('clean',), ('*.icl', '*.dcl'), ()),
|
| 96 |
+
'ClojureLexer': ('pip._vendor.pygments.lexers.jvm', 'Clojure', ('clojure', 'clj'), ('*.clj',), ('text/x-clojure', 'application/x-clojure')),
|
| 97 |
+
'ClojureScriptLexer': ('pip._vendor.pygments.lexers.jvm', 'ClojureScript', ('clojurescript', 'cljs'), ('*.cljs',), ('text/x-clojurescript', 'application/x-clojurescript')),
|
| 98 |
+
'CobolFreeformatLexer': ('pip._vendor.pygments.lexers.business', 'COBOLFree', ('cobolfree',), ('*.cbl', '*.CBL'), ()),
|
| 99 |
+
'CobolLexer': ('pip._vendor.pygments.lexers.business', 'COBOL', ('cobol',), ('*.cob', '*.COB', '*.cpy', '*.CPY'), ('text/x-cobol',)),
|
| 100 |
+
'CoffeeScriptLexer': ('pip._vendor.pygments.lexers.javascript', 'CoffeeScript', ('coffeescript', 'coffee-script', 'coffee'), ('*.coffee',), ('text/coffeescript',)),
|
| 101 |
+
'ColdfusionCFCLexer': ('pip._vendor.pygments.lexers.templates', 'Coldfusion CFC', ('cfc',), ('*.cfc',), ()),
|
| 102 |
+
'ColdfusionHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'Coldfusion HTML', ('cfm',), ('*.cfm', '*.cfml'), ('application/x-coldfusion',)),
|
| 103 |
+
'ColdfusionLexer': ('pip._vendor.pygments.lexers.templates', 'cfstatement', ('cfs',), (), ()),
|
| 104 |
+
'CommonLispLexer': ('pip._vendor.pygments.lexers.lisp', 'Common Lisp', ('common-lisp', 'cl', 'lisp'), ('*.cl', '*.lisp'), ('text/x-common-lisp',)),
|
| 105 |
+
'ComponentPascalLexer': ('pip._vendor.pygments.lexers.oberon', 'Component Pascal', ('componentpascal', 'cp'), ('*.cp', '*.cps'), ('text/x-component-pascal',)),
|
| 106 |
+
'CoqLexer': ('pip._vendor.pygments.lexers.theorem', 'Coq', ('coq',), ('*.v',), ('text/x-coq',)),
|
| 107 |
+
'CppLexer': ('pip._vendor.pygments.lexers.c_cpp', 'C++', ('cpp', 'c++'), ('*.cpp', '*.hpp', '*.c++', '*.h++', '*.cc', '*.hh', '*.cxx', '*.hxx', '*.C', '*.H', '*.cp', '*.CPP'), ('text/x-c++hdr', 'text/x-c++src')),
|
| 108 |
+
'CppObjdumpLexer': ('pip._vendor.pygments.lexers.asm', 'cpp-objdump', ('cpp-objdump', 'c++-objdumb', 'cxx-objdump'), ('*.cpp-objdump', '*.c++-objdump', '*.cxx-objdump'), ('text/x-cpp-objdump',)),
|
| 109 |
+
'CrmshLexer': ('pip._vendor.pygments.lexers.dsls', 'Crmsh', ('crmsh', 'pcmk'), ('*.crmsh', '*.pcmk'), ()),
|
| 110 |
+
'CrocLexer': ('pip._vendor.pygments.lexers.d', 'Croc', ('croc',), ('*.croc',), ('text/x-crocsrc',)),
|
| 111 |
+
'CryptolLexer': ('pip._vendor.pygments.lexers.haskell', 'Cryptol', ('cryptol', 'cry'), ('*.cry',), ('text/x-cryptol',)),
|
| 112 |
+
'CrystalLexer': ('pip._vendor.pygments.lexers.crystal', 'Crystal', ('cr', 'crystal'), ('*.cr',), ('text/x-crystal',)),
|
| 113 |
+
'CsoundDocumentLexer': ('pip._vendor.pygments.lexers.csound', 'Csound Document', ('csound-document', 'csound-csd'), ('*.csd',), ()),
|
| 114 |
+
'CsoundOrchestraLexer': ('pip._vendor.pygments.lexers.csound', 'Csound Orchestra', ('csound', 'csound-orc'), ('*.orc', '*.udo'), ()),
|
| 115 |
+
'CsoundScoreLexer': ('pip._vendor.pygments.lexers.csound', 'Csound Score', ('csound-score', 'csound-sco'), ('*.sco',), ()),
|
| 116 |
+
'CssDjangoLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Django/Jinja', ('css+django', 'css+jinja'), (), ('text/css+django', 'text/css+jinja')),
|
| 117 |
+
'CssErbLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Ruby', ('css+ruby', 'css+erb'), (), ('text/css+ruby',)),
|
| 118 |
+
'CssGenshiLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Genshi Text', ('css+genshitext', 'css+genshi'), (), ('text/css+genshi',)),
|
| 119 |
+
'CssLexer': ('pip._vendor.pygments.lexers.css', 'CSS', ('css',), ('*.css',), ('text/css',)),
|
| 120 |
+
'CssPhpLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+PHP', ('css+php',), (), ('text/css+php',)),
|
| 121 |
+
'CssSmartyLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Smarty', ('css+smarty',), (), ('text/css+smarty',)),
|
| 122 |
+
'CudaLexer': ('pip._vendor.pygments.lexers.c_like', 'CUDA', ('cuda', 'cu'), ('*.cu', '*.cuh'), ('text/x-cuda',)),
|
| 123 |
+
'CypherLexer': ('pip._vendor.pygments.lexers.graph', 'Cypher', ('cypher',), ('*.cyp', '*.cypher'), ()),
|
| 124 |
+
'CythonLexer': ('pip._vendor.pygments.lexers.python', 'Cython', ('cython', 'pyx', 'pyrex'), ('*.pyx', '*.pxd', '*.pxi'), ('text/x-cython', 'application/x-cython')),
|
| 125 |
+
'DLexer': ('pip._vendor.pygments.lexers.d', 'D', ('d',), ('*.d', '*.di'), ('text/x-dsrc',)),
|
| 126 |
+
'DObjdumpLexer': ('pip._vendor.pygments.lexers.asm', 'd-objdump', ('d-objdump',), ('*.d-objdump',), ('text/x-d-objdump',)),
|
| 127 |
+
'DarcsPatchLexer': ('pip._vendor.pygments.lexers.diff', 'Darcs Patch', ('dpatch',), ('*.dpatch', '*.darcspatch'), ()),
|
| 128 |
+
'DartLexer': ('pip._vendor.pygments.lexers.javascript', 'Dart', ('dart',), ('*.dart',), ('text/x-dart',)),
|
| 129 |
+
'Dasm16Lexer': ('pip._vendor.pygments.lexers.asm', 'DASM16', ('dasm16',), ('*.dasm16', '*.dasm'), ('text/x-dasm16',)),
|
| 130 |
+
'DebianControlLexer': ('pip._vendor.pygments.lexers.installers', 'Debian Control file', ('debcontrol', 'control'), ('control',), ()),
|
| 131 |
+
'DelphiLexer': ('pip._vendor.pygments.lexers.pascal', 'Delphi', ('delphi', 'pas', 'pascal', 'objectpascal'), ('*.pas', '*.dpr'), ('text/x-pascal',)),
|
| 132 |
+
'DevicetreeLexer': ('pip._vendor.pygments.lexers.devicetree', 'Devicetree', ('devicetree', 'dts'), ('*.dts', '*.dtsi'), ('text/x-c',)),
|
| 133 |
+
'DgLexer': ('pip._vendor.pygments.lexers.python', 'dg', ('dg',), ('*.dg',), ('text/x-dg',)),
|
| 134 |
+
'DiffLexer': ('pip._vendor.pygments.lexers.diff', 'Diff', ('diff', 'udiff'), ('*.diff', '*.patch'), ('text/x-diff', 'text/x-patch')),
|
| 135 |
+
'DjangoLexer': ('pip._vendor.pygments.lexers.templates', 'Django/Jinja', ('django', 'jinja'), (), ('application/x-django-templating', 'application/x-jinja')),
|
| 136 |
+
'DockerLexer': ('pip._vendor.pygments.lexers.configs', 'Docker', ('docker', 'dockerfile'), ('Dockerfile', '*.docker'), ('text/x-dockerfile-config',)),
|
| 137 |
+
'DtdLexer': ('pip._vendor.pygments.lexers.html', 'DTD', ('dtd',), ('*.dtd',), ('application/xml-dtd',)),
|
| 138 |
+
'DuelLexer': ('pip._vendor.pygments.lexers.webmisc', 'Duel', ('duel', 'jbst', 'jsonml+bst'), ('*.duel', '*.jbst'), ('text/x-duel', 'text/x-jbst')),
|
| 139 |
+
'DylanConsoleLexer': ('pip._vendor.pygments.lexers.dylan', 'Dylan session', ('dylan-console', 'dylan-repl'), ('*.dylan-console',), ('text/x-dylan-console',)),
|
| 140 |
+
'DylanLexer': ('pip._vendor.pygments.lexers.dylan', 'Dylan', ('dylan',), ('*.dylan', '*.dyl', '*.intr'), ('text/x-dylan',)),
|
| 141 |
+
'DylanLidLexer': ('pip._vendor.pygments.lexers.dylan', 'DylanLID', ('dylan-lid', 'lid'), ('*.lid', '*.hdp'), ('text/x-dylan-lid',)),
|
| 142 |
+
'ECLLexer': ('pip._vendor.pygments.lexers.ecl', 'ECL', ('ecl',), ('*.ecl',), ('application/x-ecl',)),
|
| 143 |
+
'ECLexer': ('pip._vendor.pygments.lexers.c_like', 'eC', ('ec',), ('*.ec', '*.eh'), ('text/x-echdr', 'text/x-ecsrc')),
|
| 144 |
+
'EarlGreyLexer': ('pip._vendor.pygments.lexers.javascript', 'Earl Grey', ('earl-grey', 'earlgrey', 'eg'), ('*.eg',), ('text/x-earl-grey',)),
|
| 145 |
+
'EasytrieveLexer': ('pip._vendor.pygments.lexers.scripting', 'Easytrieve', ('easytrieve',), ('*.ezt', '*.mac'), ('text/x-easytrieve',)),
|
| 146 |
+
'EbnfLexer': ('pip._vendor.pygments.lexers.parsers', 'EBNF', ('ebnf',), ('*.ebnf',), ('text/x-ebnf',)),
|
| 147 |
+
'EiffelLexer': ('pip._vendor.pygments.lexers.eiffel', 'Eiffel', ('eiffel',), ('*.e',), ('text/x-eiffel',)),
|
| 148 |
+
'ElixirConsoleLexer': ('pip._vendor.pygments.lexers.erlang', 'Elixir iex session', ('iex',), (), ('text/x-elixir-shellsession',)),
|
| 149 |
+
'ElixirLexer': ('pip._vendor.pygments.lexers.erlang', 'Elixir', ('elixir', 'ex', 'exs'), ('*.ex', '*.eex', '*.exs', '*.leex'), ('text/x-elixir',)),
|
| 150 |
+
'ElmLexer': ('pip._vendor.pygments.lexers.elm', 'Elm', ('elm',), ('*.elm',), ('text/x-elm',)),
|
| 151 |
+
'ElpiLexer': ('pip._vendor.pygments.lexers.elpi', 'Elpi', ('elpi',), ('*.elpi',), ('text/x-elpi',)),
|
| 152 |
+
'EmacsLispLexer': ('pip._vendor.pygments.lexers.lisp', 'EmacsLisp', ('emacs-lisp', 'elisp', 'emacs'), ('*.el',), ('text/x-elisp', 'application/x-elisp')),
|
| 153 |
+
'EmailLexer': ('pip._vendor.pygments.lexers.email', 'E-mail', ('email', 'eml'), ('*.eml',), ('message/rfc822',)),
|
| 154 |
+
'ErbLexer': ('pip._vendor.pygments.lexers.templates', 'ERB', ('erb',), (), ('application/x-ruby-templating',)),
|
| 155 |
+
'ErlangLexer': ('pip._vendor.pygments.lexers.erlang', 'Erlang', ('erlang',), ('*.erl', '*.hrl', '*.es', '*.escript'), ('text/x-erlang',)),
|
| 156 |
+
'ErlangShellLexer': ('pip._vendor.pygments.lexers.erlang', 'Erlang erl session', ('erl',), ('*.erl-sh',), ('text/x-erl-shellsession',)),
|
| 157 |
+
'EvoqueHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Evoque', ('html+evoque',), ('*.html',), ('text/html+evoque',)),
|
| 158 |
+
'EvoqueLexer': ('pip._vendor.pygments.lexers.templates', 'Evoque', ('evoque',), ('*.evoque',), ('application/x-evoque',)),
|
| 159 |
+
'EvoqueXmlLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Evoque', ('xml+evoque',), ('*.xml',), ('application/xml+evoque',)),
|
| 160 |
+
'ExeclineLexer': ('pip._vendor.pygments.lexers.shell', 'execline', ('execline',), ('*.exec',), ()),
|
| 161 |
+
'EzhilLexer': ('pip._vendor.pygments.lexers.ezhil', 'Ezhil', ('ezhil',), ('*.n',), ('text/x-ezhil',)),
|
| 162 |
+
'FSharpLexer': ('pip._vendor.pygments.lexers.dotnet', 'F#', ('fsharp', 'f#'), ('*.fs', '*.fsi'), ('text/x-fsharp',)),
|
| 163 |
+
'FStarLexer': ('pip._vendor.pygments.lexers.ml', 'FStar', ('fstar',), ('*.fst', '*.fsti'), ('text/x-fstar',)),
|
| 164 |
+
'FactorLexer': ('pip._vendor.pygments.lexers.factor', 'Factor', ('factor',), ('*.factor',), ('text/x-factor',)),
|
| 165 |
+
'FancyLexer': ('pip._vendor.pygments.lexers.ruby', 'Fancy', ('fancy', 'fy'), ('*.fy', '*.fancypack'), ('text/x-fancysrc',)),
|
| 166 |
+
'FantomLexer': ('pip._vendor.pygments.lexers.fantom', 'Fantom', ('fan',), ('*.fan',), ('application/x-fantom',)),
|
| 167 |
+
'FelixLexer': ('pip._vendor.pygments.lexers.felix', 'Felix', ('felix', 'flx'), ('*.flx', '*.flxh'), ('text/x-felix',)),
|
| 168 |
+
'FennelLexer': ('pip._vendor.pygments.lexers.lisp', 'Fennel', ('fennel', 'fnl'), ('*.fnl',), ()),
|
| 169 |
+
'FishShellLexer': ('pip._vendor.pygments.lexers.shell', 'Fish', ('fish', 'fishshell'), ('*.fish', '*.load'), ('application/x-fish',)),
|
| 170 |
+
'FlatlineLexer': ('pip._vendor.pygments.lexers.dsls', 'Flatline', ('flatline',), (), ('text/x-flatline',)),
|
| 171 |
+
'FloScriptLexer': ('pip._vendor.pygments.lexers.floscript', 'FloScript', ('floscript', 'flo'), ('*.flo',), ()),
|
| 172 |
+
'ForthLexer': ('pip._vendor.pygments.lexers.forth', 'Forth', ('forth',), ('*.frt', '*.fs'), ('application/x-forth',)),
|
| 173 |
+
'FortranFixedLexer': ('pip._vendor.pygments.lexers.fortran', 'FortranFixed', ('fortranfixed',), ('*.f', '*.F'), ()),
|
| 174 |
+
'FortranLexer': ('pip._vendor.pygments.lexers.fortran', 'Fortran', ('fortran', 'f90'), ('*.f03', '*.f90', '*.F03', '*.F90'), ('text/x-fortran',)),
|
| 175 |
+
'FoxProLexer': ('pip._vendor.pygments.lexers.foxpro', 'FoxPro', ('foxpro', 'vfp', 'clipper', 'xbase'), ('*.PRG', '*.prg'), ()),
|
| 176 |
+
'FreeFemLexer': ('pip._vendor.pygments.lexers.freefem', 'Freefem', ('freefem',), ('*.edp',), ('text/x-freefem',)),
|
| 177 |
+
'FutharkLexer': ('pip._vendor.pygments.lexers.futhark', 'Futhark', ('futhark',), ('*.fut',), ('text/x-futhark',)),
|
| 178 |
+
'GAPLexer': ('pip._vendor.pygments.lexers.algebra', 'GAP', ('gap',), ('*.g', '*.gd', '*.gi', '*.gap'), ()),
|
| 179 |
+
'GDScriptLexer': ('pip._vendor.pygments.lexers.gdscript', 'GDScript', ('gdscript', 'gd'), ('*.gd',), ('text/x-gdscript', 'application/x-gdscript')),
|
| 180 |
+
'GLShaderLexer': ('pip._vendor.pygments.lexers.graphics', 'GLSL', ('glsl',), ('*.vert', '*.frag', '*.geo'), ('text/x-glslsrc',)),
|
| 181 |
+
'GSQLLexer': ('pip._vendor.pygments.lexers.gsql', 'GSQL', ('gsql',), ('*.gsql',), ()),
|
| 182 |
+
'GasLexer': ('pip._vendor.pygments.lexers.asm', 'GAS', ('gas', 'asm'), ('*.s', '*.S'), ('text/x-gas',)),
|
| 183 |
+
'GcodeLexer': ('pip._vendor.pygments.lexers.gcodelexer', 'g-code', ('gcode',), ('*.gcode',), ()),
|
| 184 |
+
'GenshiLexer': ('pip._vendor.pygments.lexers.templates', 'Genshi', ('genshi', 'kid', 'xml+genshi', 'xml+kid'), ('*.kid',), ('application/x-genshi', 'application/x-kid')),
|
| 185 |
+
'GenshiTextLexer': ('pip._vendor.pygments.lexers.templates', 'Genshi Text', ('genshitext',), (), ('application/x-genshi-text', 'text/x-genshi')),
|
| 186 |
+
'GettextLexer': ('pip._vendor.pygments.lexers.textfmts', 'Gettext Catalog', ('pot', 'po'), ('*.pot', '*.po'), ('application/x-gettext', 'text/x-gettext', 'text/gettext')),
|
| 187 |
+
'GherkinLexer': ('pip._vendor.pygments.lexers.testing', 'Gherkin', ('gherkin', 'cucumber'), ('*.feature',), ('text/x-gherkin',)),
|
| 188 |
+
'GnuplotLexer': ('pip._vendor.pygments.lexers.graphics', 'Gnuplot', ('gnuplot',), ('*.plot', '*.plt'), ('text/x-gnuplot',)),
|
| 189 |
+
'GoLexer': ('pip._vendor.pygments.lexers.go', 'Go', ('go', 'golang'), ('*.go',), ('text/x-gosrc',)),
|
| 190 |
+
'GoloLexer': ('pip._vendor.pygments.lexers.jvm', 'Golo', ('golo',), ('*.golo',), ()),
|
| 191 |
+
'GoodDataCLLexer': ('pip._vendor.pygments.lexers.business', 'GoodData-CL', ('gooddata-cl',), ('*.gdc',), ('text/x-gooddata-cl',)),
|
| 192 |
+
'GosuLexer': ('pip._vendor.pygments.lexers.jvm', 'Gosu', ('gosu',), ('*.gs', '*.gsx', '*.gsp', '*.vark'), ('text/x-gosu',)),
|
| 193 |
+
'GosuTemplateLexer': ('pip._vendor.pygments.lexers.jvm', 'Gosu Template', ('gst',), ('*.gst',), ('text/x-gosu-template',)),
|
| 194 |
+
'GraphvizLexer': ('pip._vendor.pygments.lexers.graphviz', 'Graphviz', ('graphviz', 'dot'), ('*.gv', '*.dot'), ('text/x-graphviz', 'text/vnd.graphviz')),
|
| 195 |
+
'GroffLexer': ('pip._vendor.pygments.lexers.markup', 'Groff', ('groff', 'nroff', 'man'), ('*.[1-9]', '*.man', '*.1p', '*.3pm'), ('application/x-troff', 'text/troff')),
|
| 196 |
+
'GroovyLexer': ('pip._vendor.pygments.lexers.jvm', 'Groovy', ('groovy',), ('*.groovy', '*.gradle'), ('text/x-groovy',)),
|
| 197 |
+
'HLSLShaderLexer': ('pip._vendor.pygments.lexers.graphics', 'HLSL', ('hlsl',), ('*.hlsl', '*.hlsli'), ('text/x-hlsl',)),
|
| 198 |
+
'HamlLexer': ('pip._vendor.pygments.lexers.html', 'Haml', ('haml',), ('*.haml',), ('text/x-haml',)),
|
| 199 |
+
'HandlebarsHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Handlebars', ('html+handlebars',), ('*.handlebars', '*.hbs'), ('text/html+handlebars', 'text/x-handlebars-template')),
|
| 200 |
+
'HandlebarsLexer': ('pip._vendor.pygments.lexers.templates', 'Handlebars', ('handlebars',), (), ()),
|
| 201 |
+
'HaskellLexer': ('pip._vendor.pygments.lexers.haskell', 'Haskell', ('haskell', 'hs'), ('*.hs',), ('text/x-haskell',)),
|
| 202 |
+
'HaxeLexer': ('pip._vendor.pygments.lexers.haxe', 'Haxe', ('haxe', 'hxsl', 'hx'), ('*.hx', '*.hxsl'), ('text/haxe', 'text/x-haxe', 'text/x-hx')),
|
| 203 |
+
'HexdumpLexer': ('pip._vendor.pygments.lexers.hexdump', 'Hexdump', ('hexdump',), (), ()),
|
| 204 |
+
'HsailLexer': ('pip._vendor.pygments.lexers.asm', 'HSAIL', ('hsail', 'hsa'), ('*.hsail',), ('text/x-hsail',)),
|
| 205 |
+
'HspecLexer': ('pip._vendor.pygments.lexers.haskell', 'Hspec', ('hspec',), (), ()),
|
| 206 |
+
'HtmlDjangoLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Django/Jinja', ('html+django', 'html+jinja', 'htmldjango'), (), ('text/html+django', 'text/html+jinja')),
|
| 207 |
+
'HtmlGenshiLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Genshi', ('html+genshi', 'html+kid'), (), ('text/html+genshi',)),
|
| 208 |
+
'HtmlLexer': ('pip._vendor.pygments.lexers.html', 'HTML', ('html',), ('*.html', '*.htm', '*.xhtml', '*.xslt'), ('text/html', 'application/xhtml+xml')),
|
| 209 |
+
'HtmlPhpLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+PHP', ('html+php',), ('*.phtml',), ('application/x-php', 'application/x-httpd-php', 'application/x-httpd-php3', 'application/x-httpd-php4', 'application/x-httpd-php5')),
|
| 210 |
+
'HtmlSmartyLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Smarty', ('html+smarty',), (), ('text/html+smarty',)),
|
| 211 |
+
'HttpLexer': ('pip._vendor.pygments.lexers.textfmts', 'HTTP', ('http',), (), ()),
|
| 212 |
+
'HxmlLexer': ('pip._vendor.pygments.lexers.haxe', 'Hxml', ('haxeml', 'hxml'), ('*.hxml',), ()),
|
| 213 |
+
'HyLexer': ('pip._vendor.pygments.lexers.lisp', 'Hy', ('hylang',), ('*.hy',), ('text/x-hy', 'application/x-hy')),
|
| 214 |
+
'HybrisLexer': ('pip._vendor.pygments.lexers.scripting', 'Hybris', ('hybris', 'hy'), ('*.hy', '*.hyb'), ('text/x-hybris', 'application/x-hybris')),
|
| 215 |
+
'IDLLexer': ('pip._vendor.pygments.lexers.idl', 'IDL', ('idl',), ('*.pro',), ('text/idl',)),
|
| 216 |
+
'IconLexer': ('pip._vendor.pygments.lexers.unicon', 'Icon', ('icon',), ('*.icon', '*.ICON'), ()),
|
| 217 |
+
'IdrisLexer': ('pip._vendor.pygments.lexers.haskell', 'Idris', ('idris', 'idr'), ('*.idr',), ('text/x-idris',)),
|
| 218 |
+
'IgorLexer': ('pip._vendor.pygments.lexers.igor', 'Igor', ('igor', 'igorpro'), ('*.ipf',), ('text/ipf',)),
|
| 219 |
+
'Inform6Lexer': ('pip._vendor.pygments.lexers.int_fiction', 'Inform 6', ('inform6', 'i6'), ('*.inf',), ()),
|
| 220 |
+
'Inform6TemplateLexer': ('pip._vendor.pygments.lexers.int_fiction', 'Inform 6 template', ('i6t',), ('*.i6t',), ()),
|
| 221 |
+
'Inform7Lexer': ('pip._vendor.pygments.lexers.int_fiction', 'Inform 7', ('inform7', 'i7'), ('*.ni', '*.i7x'), ()),
|
| 222 |
+
'IniLexer': ('pip._vendor.pygments.lexers.configs', 'INI', ('ini', 'cfg', 'dosini'), ('*.ini', '*.cfg', '*.inf', '.editorconfig', '*.service', '*.socket', '*.device', '*.mount', '*.automount', '*.swap', '*.target', '*.path', '*.timer', '*.slice', '*.scope'), ('text/x-ini', 'text/inf')),
|
| 223 |
+
'IoLexer': ('pip._vendor.pygments.lexers.iolang', 'Io', ('io',), ('*.io',), ('text/x-iosrc',)),
|
| 224 |
+
'IokeLexer': ('pip._vendor.pygments.lexers.jvm', 'Ioke', ('ioke', 'ik'), ('*.ik',), ('text/x-iokesrc',)),
|
| 225 |
+
'IrcLogsLexer': ('pip._vendor.pygments.lexers.textfmts', 'IRC logs', ('irc',), ('*.weechatlog',), ('text/x-irclog',)),
|
| 226 |
+
'IsabelleLexer': ('pip._vendor.pygments.lexers.theorem', 'Isabelle', ('isabelle',), ('*.thy',), ('text/x-isabelle',)),
|
| 227 |
+
'JLexer': ('pip._vendor.pygments.lexers.j', 'J', ('j',), ('*.ijs',), ('text/x-j',)),
|
| 228 |
+
'JSLTLexer': ('pip._vendor.pygments.lexers.jslt', 'JSLT', ('jslt',), ('*.jslt',), ('text/x-jslt',)),
|
| 229 |
+
'JagsLexer': ('pip._vendor.pygments.lexers.modeling', 'JAGS', ('jags',), ('*.jag', '*.bug'), ()),
|
| 230 |
+
'JasminLexer': ('pip._vendor.pygments.lexers.jvm', 'Jasmin', ('jasmin', 'jasminxt'), ('*.j',), ()),
|
| 231 |
+
'JavaLexer': ('pip._vendor.pygments.lexers.jvm', 'Java', ('java',), ('*.java',), ('text/x-java',)),
|
| 232 |
+
'JavascriptDjangoLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Django/Jinja', ('javascript+django', 'js+django', 'javascript+jinja', 'js+jinja'), (), ('application/x-javascript+django', 'application/x-javascript+jinja', 'text/x-javascript+django', 'text/x-javascript+jinja', 'text/javascript+django', 'text/javascript+jinja')),
|
| 233 |
+
'JavascriptErbLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Ruby', ('javascript+ruby', 'js+ruby', 'javascript+erb', 'js+erb'), (), ('application/x-javascript+ruby', 'text/x-javascript+ruby', 'text/javascript+ruby')),
|
| 234 |
+
'JavascriptGenshiLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Genshi Text', ('js+genshitext', 'js+genshi', 'javascript+genshitext', 'javascript+genshi'), (), ('application/x-javascript+genshi', 'text/x-javascript+genshi', 'text/javascript+genshi')),
|
| 235 |
+
'JavascriptLexer': ('pip._vendor.pygments.lexers.javascript', 'JavaScript', ('javascript', 'js'), ('*.js', '*.jsm', '*.mjs', '*.cjs'), ('application/javascript', 'application/x-javascript', 'text/x-javascript', 'text/javascript')),
|
| 236 |
+
'JavascriptPhpLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+PHP', ('javascript+php', 'js+php'), (), ('application/x-javascript+php', 'text/x-javascript+php', 'text/javascript+php')),
|
| 237 |
+
'JavascriptSmartyLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Smarty', ('javascript+smarty', 'js+smarty'), (), ('application/x-javascript+smarty', 'text/x-javascript+smarty', 'text/javascript+smarty')),
|
| 238 |
+
'JclLexer': ('pip._vendor.pygments.lexers.scripting', 'JCL', ('jcl',), ('*.jcl',), ('text/x-jcl',)),
|
| 239 |
+
'JsgfLexer': ('pip._vendor.pygments.lexers.grammar_notation', 'JSGF', ('jsgf',), ('*.jsgf',), ('application/jsgf', 'application/x-jsgf', 'text/jsgf')),
|
| 240 |
+
'JsonBareObjectLexer': ('pip._vendor.pygments.lexers.data', 'JSONBareObject', (), (), ()),
|
| 241 |
+
'JsonLdLexer': ('pip._vendor.pygments.lexers.data', 'JSON-LD', ('jsonld', 'json-ld'), ('*.jsonld',), ('application/ld+json',)),
|
| 242 |
+
'JsonLexer': ('pip._vendor.pygments.lexers.data', 'JSON', ('json', 'json-object'), ('*.json', 'Pipfile.lock'), ('application/json', 'application/json-object')),
|
| 243 |
+
'JspLexer': ('pip._vendor.pygments.lexers.templates', 'Java Server Page', ('jsp',), ('*.jsp',), ('application/x-jsp',)),
|
| 244 |
+
'JuliaConsoleLexer': ('pip._vendor.pygments.lexers.julia', 'Julia console', ('jlcon', 'julia-repl'), (), ()),
|
| 245 |
+
'JuliaLexer': ('pip._vendor.pygments.lexers.julia', 'Julia', ('julia', 'jl'), ('*.jl',), ('text/x-julia', 'application/x-julia')),
|
| 246 |
+
'JuttleLexer': ('pip._vendor.pygments.lexers.javascript', 'Juttle', ('juttle',), ('*.juttle',), ('application/juttle', 'application/x-juttle', 'text/x-juttle', 'text/juttle')),
|
| 247 |
+
'KalLexer': ('pip._vendor.pygments.lexers.javascript', 'Kal', ('kal',), ('*.kal',), ('text/kal', 'application/kal')),
|
| 248 |
+
'KconfigLexer': ('pip._vendor.pygments.lexers.configs', 'Kconfig', ('kconfig', 'menuconfig', 'linux-config', 'kernel-config'), ('Kconfig*', '*Config.in*', 'external.in*', 'standard-modules.in'), ('text/x-kconfig',)),
|
| 249 |
+
'KernelLogLexer': ('pip._vendor.pygments.lexers.textfmts', 'Kernel log', ('kmsg', 'dmesg'), ('*.kmsg', '*.dmesg'), ()),
|
| 250 |
+
'KokaLexer': ('pip._vendor.pygments.lexers.haskell', 'Koka', ('koka',), ('*.kk', '*.kki'), ('text/x-koka',)),
|
| 251 |
+
'KotlinLexer': ('pip._vendor.pygments.lexers.jvm', 'Kotlin', ('kotlin',), ('*.kt', '*.kts'), ('text/x-kotlin',)),
|
| 252 |
+
'KuinLexer': ('pip._vendor.pygments.lexers.kuin', 'Kuin', ('kuin',), ('*.kn',), ()),
|
| 253 |
+
'LSLLexer': ('pip._vendor.pygments.lexers.scripting', 'LSL', ('lsl',), ('*.lsl',), ('text/x-lsl',)),
|
| 254 |
+
'LassoCssLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Lasso', ('css+lasso',), (), ('text/css+lasso',)),
|
| 255 |
+
'LassoHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Lasso', ('html+lasso',), (), ('text/html+lasso', 'application/x-httpd-lasso', 'application/x-httpd-lasso[89]')),
|
| 256 |
+
'LassoJavascriptLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Lasso', ('javascript+lasso', 'js+lasso'), (), ('application/x-javascript+lasso', 'text/x-javascript+lasso', 'text/javascript+lasso')),
|
| 257 |
+
'LassoLexer': ('pip._vendor.pygments.lexers.javascript', 'Lasso', ('lasso', 'lassoscript'), ('*.lasso', '*.lasso[89]'), ('text/x-lasso',)),
|
| 258 |
+
'LassoXmlLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Lasso', ('xml+lasso',), (), ('application/xml+lasso',)),
|
| 259 |
+
'LeanLexer': ('pip._vendor.pygments.lexers.theorem', 'Lean', ('lean',), ('*.lean',), ('text/x-lean',)),
|
| 260 |
+
'LessCssLexer': ('pip._vendor.pygments.lexers.css', 'LessCss', ('less',), ('*.less',), ('text/x-less-css',)),
|
| 261 |
+
'LighttpdConfLexer': ('pip._vendor.pygments.lexers.configs', 'Lighttpd configuration file', ('lighttpd', 'lighty'), ('lighttpd.conf',), ('text/x-lighttpd-conf',)),
|
| 262 |
+
'LilyPondLexer': ('pip._vendor.pygments.lexers.lilypond', 'LilyPond', ('lilypond',), ('*.ly',), ()),
|
| 263 |
+
'LimboLexer': ('pip._vendor.pygments.lexers.inferno', 'Limbo', ('limbo',), ('*.b',), ('text/limbo',)),
|
| 264 |
+
'LiquidLexer': ('pip._vendor.pygments.lexers.templates', 'liquid', ('liquid',), ('*.liquid',), ()),
|
| 265 |
+
'LiterateAgdaLexer': ('pip._vendor.pygments.lexers.haskell', 'Literate Agda', ('literate-agda', 'lagda'), ('*.lagda',), ('text/x-literate-agda',)),
|
| 266 |
+
'LiterateCryptolLexer': ('pip._vendor.pygments.lexers.haskell', 'Literate Cryptol', ('literate-cryptol', 'lcryptol', 'lcry'), ('*.lcry',), ('text/x-literate-cryptol',)),
|
| 267 |
+
'LiterateHaskellLexer': ('pip._vendor.pygments.lexers.haskell', 'Literate Haskell', ('literate-haskell', 'lhaskell', 'lhs'), ('*.lhs',), ('text/x-literate-haskell',)),
|
| 268 |
+
'LiterateIdrisLexer': ('pip._vendor.pygments.lexers.haskell', 'Literate Idris', ('literate-idris', 'lidris', 'lidr'), ('*.lidr',), ('text/x-literate-idris',)),
|
| 269 |
+
'LiveScriptLexer': ('pip._vendor.pygments.lexers.javascript', 'LiveScript', ('livescript', 'live-script'), ('*.ls',), ('text/livescript',)),
|
| 270 |
+
'LlvmLexer': ('pip._vendor.pygments.lexers.asm', 'LLVM', ('llvm',), ('*.ll',), ('text/x-llvm',)),
|
| 271 |
+
'LlvmMirBodyLexer': ('pip._vendor.pygments.lexers.asm', 'LLVM-MIR Body', ('llvm-mir-body',), (), ()),
|
| 272 |
+
'LlvmMirLexer': ('pip._vendor.pygments.lexers.asm', 'LLVM-MIR', ('llvm-mir',), ('*.mir',), ()),
|
| 273 |
+
'LogosLexer': ('pip._vendor.pygments.lexers.objective', 'Logos', ('logos',), ('*.x', '*.xi', '*.xm', '*.xmi'), ('text/x-logos',)),
|
| 274 |
+
'LogtalkLexer': ('pip._vendor.pygments.lexers.prolog', 'Logtalk', ('logtalk',), ('*.lgt', '*.logtalk'), ('text/x-logtalk',)),
|
| 275 |
+
'LuaLexer': ('pip._vendor.pygments.lexers.scripting', 'Lua', ('lua',), ('*.lua', '*.wlua'), ('text/x-lua', 'application/x-lua')),
|
| 276 |
+
'MIMELexer': ('pip._vendor.pygments.lexers.mime', 'MIME', ('mime',), (), ('multipart/mixed', 'multipart/related', 'multipart/alternative')),
|
| 277 |
+
'MOOCodeLexer': ('pip._vendor.pygments.lexers.scripting', 'MOOCode', ('moocode', 'moo'), ('*.moo',), ('text/x-moocode',)),
|
| 278 |
+
'MSDOSSessionLexer': ('pip._vendor.pygments.lexers.shell', 'MSDOS Session', ('doscon',), (), ()),
|
| 279 |
+
'MakefileLexer': ('pip._vendor.pygments.lexers.make', 'Makefile', ('make', 'makefile', 'mf', 'bsdmake'), ('*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'), ('text/x-makefile',)),
|
| 280 |
+
'MakoCssLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Mako', ('css+mako',), (), ('text/css+mako',)),
|
| 281 |
+
'MakoHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Mako', ('html+mako',), (), ('text/html+mako',)),
|
| 282 |
+
'MakoJavascriptLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Mako', ('javascript+mako', 'js+mako'), (), ('application/x-javascript+mako', 'text/x-javascript+mako', 'text/javascript+mako')),
|
| 283 |
+
'MakoLexer': ('pip._vendor.pygments.lexers.templates', 'Mako', ('mako',), ('*.mao',), ('application/x-mako',)),
|
| 284 |
+
'MakoXmlLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Mako', ('xml+mako',), (), ('application/xml+mako',)),
|
| 285 |
+
'MaqlLexer': ('pip._vendor.pygments.lexers.business', 'MAQL', ('maql',), ('*.maql',), ('text/x-gooddata-maql', 'application/x-gooddata-maql')),
|
| 286 |
+
'MarkdownLexer': ('pip._vendor.pygments.lexers.markup', 'Markdown', ('markdown', 'md'), ('*.md', '*.markdown'), ('text/x-markdown',)),
|
| 287 |
+
'MaskLexer': ('pip._vendor.pygments.lexers.javascript', 'Mask', ('mask',), ('*.mask',), ('text/x-mask',)),
|
| 288 |
+
'MasonLexer': ('pip._vendor.pygments.lexers.templates', 'Mason', ('mason',), ('*.m', '*.mhtml', '*.mc', '*.mi', 'autohandler', 'dhandler'), ('application/x-mason',)),
|
| 289 |
+
'MathematicaLexer': ('pip._vendor.pygments.lexers.algebra', 'Mathematica', ('mathematica', 'mma', 'nb'), ('*.nb', '*.cdf', '*.nbp', '*.ma'), ('application/mathematica', 'application/vnd.wolfram.mathematica', 'application/vnd.wolfram.mathematica.package', 'application/vnd.wolfram.cdf')),
|
| 290 |
+
'MatlabLexer': ('pip._vendor.pygments.lexers.matlab', 'Matlab', ('matlab',), ('*.m',), ('text/matlab',)),
|
| 291 |
+
'MatlabSessionLexer': ('pip._vendor.pygments.lexers.matlab', 'Matlab session', ('matlabsession',), (), ()),
|
| 292 |
+
'MaximaLexer': ('pip._vendor.pygments.lexers.maxima', 'Maxima', ('maxima', 'macsyma'), ('*.mac', '*.max'), ()),
|
| 293 |
+
'MesonLexer': ('pip._vendor.pygments.lexers.meson', 'Meson', ('meson', 'meson.build'), ('meson.build', 'meson_options.txt'), ('text/x-meson',)),
|
| 294 |
+
'MiniDLexer': ('pip._vendor.pygments.lexers.d', 'MiniD', ('minid',), (), ('text/x-minidsrc',)),
|
| 295 |
+
'MiniScriptLexer': ('pip._vendor.pygments.lexers.scripting', 'MiniScript', ('miniscript', 'ms'), ('*.ms',), ('text/x-minicript', 'application/x-miniscript')),
|
| 296 |
+
'ModelicaLexer': ('pip._vendor.pygments.lexers.modeling', 'Modelica', ('modelica',), ('*.mo',), ('text/x-modelica',)),
|
| 297 |
+
'Modula2Lexer': ('pip._vendor.pygments.lexers.modula2', 'Modula-2', ('modula2', 'm2'), ('*.def', '*.mod'), ('text/x-modula2',)),
|
| 298 |
+
'MoinWikiLexer': ('pip._vendor.pygments.lexers.markup', 'MoinMoin/Trac Wiki markup', ('trac-wiki', 'moin'), (), ('text/x-trac-wiki',)),
|
| 299 |
+
'MonkeyLexer': ('pip._vendor.pygments.lexers.basic', 'Monkey', ('monkey',), ('*.monkey',), ('text/x-monkey',)),
|
| 300 |
+
'MonteLexer': ('pip._vendor.pygments.lexers.monte', 'Monte', ('monte',), ('*.mt',), ()),
|
| 301 |
+
'MoonScriptLexer': ('pip._vendor.pygments.lexers.scripting', 'MoonScript', ('moonscript', 'moon'), ('*.moon',), ('text/x-moonscript', 'application/x-moonscript')),
|
| 302 |
+
'MoselLexer': ('pip._vendor.pygments.lexers.mosel', 'Mosel', ('mosel',), ('*.mos',), ()),
|
| 303 |
+
'MozPreprocCssLexer': ('pip._vendor.pygments.lexers.markup', 'CSS+mozpreproc', ('css+mozpreproc',), ('*.css.in',), ()),
|
| 304 |
+
'MozPreprocHashLexer': ('pip._vendor.pygments.lexers.markup', 'mozhashpreproc', ('mozhashpreproc',), (), ()),
|
| 305 |
+
'MozPreprocJavascriptLexer': ('pip._vendor.pygments.lexers.markup', 'Javascript+mozpreproc', ('javascript+mozpreproc',), ('*.js.in',), ()),
|
| 306 |
+
'MozPreprocPercentLexer': ('pip._vendor.pygments.lexers.markup', 'mozpercentpreproc', ('mozpercentpreproc',), (), ()),
|
| 307 |
+
'MozPreprocXulLexer': ('pip._vendor.pygments.lexers.markup', 'XUL+mozpreproc', ('xul+mozpreproc',), ('*.xul.in',), ()),
|
| 308 |
+
'MqlLexer': ('pip._vendor.pygments.lexers.c_like', 'MQL', ('mql', 'mq4', 'mq5', 'mql4', 'mql5'), ('*.mq4', '*.mq5', '*.mqh'), ('text/x-mql',)),
|
| 309 |
+
'MscgenLexer': ('pip._vendor.pygments.lexers.dsls', 'Mscgen', ('mscgen', 'msc'), ('*.msc',), ()),
|
| 310 |
+
'MuPADLexer': ('pip._vendor.pygments.lexers.algebra', 'MuPAD', ('mupad',), ('*.mu',), ()),
|
| 311 |
+
'MxmlLexer': ('pip._vendor.pygments.lexers.actionscript', 'MXML', ('mxml',), ('*.mxml',), ()),
|
| 312 |
+
'MySqlLexer': ('pip._vendor.pygments.lexers.sql', 'MySQL', ('mysql',), (), ('text/x-mysql',)),
|
| 313 |
+
'MyghtyCssLexer': ('pip._vendor.pygments.lexers.templates', 'CSS+Myghty', ('css+myghty',), (), ('text/css+myghty',)),
|
| 314 |
+
'MyghtyHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Myghty', ('html+myghty',), (), ('text/html+myghty',)),
|
| 315 |
+
'MyghtyJavascriptLexer': ('pip._vendor.pygments.lexers.templates', 'JavaScript+Myghty', ('javascript+myghty', 'js+myghty'), (), ('application/x-javascript+myghty', 'text/x-javascript+myghty', 'text/javascript+mygthy')),
|
| 316 |
+
'MyghtyLexer': ('pip._vendor.pygments.lexers.templates', 'Myghty', ('myghty',), ('*.myt', 'autodelegate'), ('application/x-myghty',)),
|
| 317 |
+
'MyghtyXmlLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Myghty', ('xml+myghty',), (), ('application/xml+myghty',)),
|
| 318 |
+
'NCLLexer': ('pip._vendor.pygments.lexers.ncl', 'NCL', ('ncl',), ('*.ncl',), ('text/ncl',)),
|
| 319 |
+
'NSISLexer': ('pip._vendor.pygments.lexers.installers', 'NSIS', ('nsis', 'nsi', 'nsh'), ('*.nsi', '*.nsh'), ('text/x-nsis',)),
|
| 320 |
+
'NasmLexer': ('pip._vendor.pygments.lexers.asm', 'NASM', ('nasm',), ('*.asm', '*.ASM'), ('text/x-nasm',)),
|
| 321 |
+
'NasmObjdumpLexer': ('pip._vendor.pygments.lexers.asm', 'objdump-nasm', ('objdump-nasm',), ('*.objdump-intel',), ('text/x-nasm-objdump',)),
|
| 322 |
+
'NemerleLexer': ('pip._vendor.pygments.lexers.dotnet', 'Nemerle', ('nemerle',), ('*.n',), ('text/x-nemerle',)),
|
| 323 |
+
'NesCLexer': ('pip._vendor.pygments.lexers.c_like', 'nesC', ('nesc',), ('*.nc',), ('text/x-nescsrc',)),
|
| 324 |
+
'NestedTextLexer': ('pip._vendor.pygments.lexers.configs', 'NestedText', ('nestedtext', 'nt'), ('*.nt',), ()),
|
| 325 |
+
'NewLispLexer': ('pip._vendor.pygments.lexers.lisp', 'NewLisp', ('newlisp',), ('*.lsp', '*.nl', '*.kif'), ('text/x-newlisp', 'application/x-newlisp')),
|
| 326 |
+
'NewspeakLexer': ('pip._vendor.pygments.lexers.smalltalk', 'Newspeak', ('newspeak',), ('*.ns2',), ('text/x-newspeak',)),
|
| 327 |
+
'NginxConfLexer': ('pip._vendor.pygments.lexers.configs', 'Nginx configuration file', ('nginx',), ('nginx.conf',), ('text/x-nginx-conf',)),
|
| 328 |
+
'NimrodLexer': ('pip._vendor.pygments.lexers.nimrod', 'Nimrod', ('nimrod', 'nim'), ('*.nim', '*.nimrod'), ('text/x-nim',)),
|
| 329 |
+
'NitLexer': ('pip._vendor.pygments.lexers.nit', 'Nit', ('nit',), ('*.nit',), ()),
|
| 330 |
+
'NixLexer': ('pip._vendor.pygments.lexers.nix', 'Nix', ('nixos', 'nix'), ('*.nix',), ('text/x-nix',)),
|
| 331 |
+
'NodeConsoleLexer': ('pip._vendor.pygments.lexers.javascript', 'Node.js REPL console session', ('nodejsrepl',), (), ('text/x-nodejsrepl',)),
|
| 332 |
+
'NotmuchLexer': ('pip._vendor.pygments.lexers.textfmts', 'Notmuch', ('notmuch',), (), ()),
|
| 333 |
+
'NuSMVLexer': ('pip._vendor.pygments.lexers.smv', 'NuSMV', ('nusmv',), ('*.smv',), ()),
|
| 334 |
+
'NumPyLexer': ('pip._vendor.pygments.lexers.python', 'NumPy', ('numpy',), (), ()),
|
| 335 |
+
'ObjdumpLexer': ('pip._vendor.pygments.lexers.asm', 'objdump', ('objdump',), ('*.objdump',), ('text/x-objdump',)),
|
| 336 |
+
'ObjectiveCLexer': ('pip._vendor.pygments.lexers.objective', 'Objective-C', ('objective-c', 'objectivec', 'obj-c', 'objc'), ('*.m', '*.h'), ('text/x-objective-c',)),
|
| 337 |
+
'ObjectiveCppLexer': ('pip._vendor.pygments.lexers.objective', 'Objective-C++', ('objective-c++', 'objectivec++', 'obj-c++', 'objc++'), ('*.mm', '*.hh'), ('text/x-objective-c++',)),
|
| 338 |
+
'ObjectiveJLexer': ('pip._vendor.pygments.lexers.javascript', 'Objective-J', ('objective-j', 'objectivej', 'obj-j', 'objj'), ('*.j',), ('text/x-objective-j',)),
|
| 339 |
+
'OcamlLexer': ('pip._vendor.pygments.lexers.ml', 'OCaml', ('ocaml',), ('*.ml', '*.mli', '*.mll', '*.mly'), ('text/x-ocaml',)),
|
| 340 |
+
'OctaveLexer': ('pip._vendor.pygments.lexers.matlab', 'Octave', ('octave',), ('*.m',), ('text/octave',)),
|
| 341 |
+
'OdinLexer': ('pip._vendor.pygments.lexers.archetype', 'ODIN', ('odin',), ('*.odin',), ('text/odin',)),
|
| 342 |
+
'OmgIdlLexer': ('pip._vendor.pygments.lexers.c_like', 'OMG Interface Definition Language', ('omg-idl',), ('*.idl', '*.pidl'), ()),
|
| 343 |
+
'OocLexer': ('pip._vendor.pygments.lexers.ooc', 'Ooc', ('ooc',), ('*.ooc',), ('text/x-ooc',)),
|
| 344 |
+
'OpaLexer': ('pip._vendor.pygments.lexers.ml', 'Opa', ('opa',), ('*.opa',), ('text/x-opa',)),
|
| 345 |
+
'OpenEdgeLexer': ('pip._vendor.pygments.lexers.business', 'OpenEdge ABL', ('openedge', 'abl', 'progress'), ('*.p', '*.cls'), ('text/x-openedge', 'application/x-openedge')),
|
| 346 |
+
'OutputLexer': ('pip._vendor.pygments.lexers.special', 'Text output', ('output',), (), ()),
|
| 347 |
+
'PacmanConfLexer': ('pip._vendor.pygments.lexers.configs', 'PacmanConf', ('pacmanconf',), ('pacman.conf',), ()),
|
| 348 |
+
'PanLexer': ('pip._vendor.pygments.lexers.dsls', 'Pan', ('pan',), ('*.pan',), ()),
|
| 349 |
+
'ParaSailLexer': ('pip._vendor.pygments.lexers.parasail', 'ParaSail', ('parasail',), ('*.psi', '*.psl'), ('text/x-parasail',)),
|
| 350 |
+
'PawnLexer': ('pip._vendor.pygments.lexers.pawn', 'Pawn', ('pawn',), ('*.p', '*.pwn', '*.inc'), ('text/x-pawn',)),
|
| 351 |
+
'PegLexer': ('pip._vendor.pygments.lexers.grammar_notation', 'PEG', ('peg',), ('*.peg',), ('text/x-peg',)),
|
| 352 |
+
'Perl6Lexer': ('pip._vendor.pygments.lexers.perl', 'Perl6', ('perl6', 'pl6', 'raku'), ('*.pl', '*.pm', '*.nqp', '*.p6', '*.6pl', '*.p6l', '*.pl6', '*.6pm', '*.p6m', '*.pm6', '*.t', '*.raku', '*.rakumod', '*.rakutest', '*.rakudoc'), ('text/x-perl6', 'application/x-perl6')),
|
| 353 |
+
'PerlLexer': ('pip._vendor.pygments.lexers.perl', 'Perl', ('perl', 'pl'), ('*.pl', '*.pm', '*.t', '*.perl'), ('text/x-perl', 'application/x-perl')),
|
| 354 |
+
'PhpLexer': ('pip._vendor.pygments.lexers.php', 'PHP', ('php', 'php3', 'php4', 'php5'), ('*.php', '*.php[345]', '*.inc'), ('text/x-php',)),
|
| 355 |
+
'PigLexer': ('pip._vendor.pygments.lexers.jvm', 'Pig', ('pig',), ('*.pig',), ('text/x-pig',)),
|
| 356 |
+
'PikeLexer': ('pip._vendor.pygments.lexers.c_like', 'Pike', ('pike',), ('*.pike', '*.pmod'), ('text/x-pike',)),
|
| 357 |
+
'PkgConfigLexer': ('pip._vendor.pygments.lexers.configs', 'PkgConfig', ('pkgconfig',), ('*.pc',), ()),
|
| 358 |
+
'PlPgsqlLexer': ('pip._vendor.pygments.lexers.sql', 'PL/pgSQL', ('plpgsql',), (), ('text/x-plpgsql',)),
|
| 359 |
+
'PointlessLexer': ('pip._vendor.pygments.lexers.pointless', 'Pointless', ('pointless',), ('*.ptls',), ()),
|
| 360 |
+
'PonyLexer': ('pip._vendor.pygments.lexers.pony', 'Pony', ('pony',), ('*.pony',), ()),
|
| 361 |
+
'PostScriptLexer': ('pip._vendor.pygments.lexers.graphics', 'PostScript', ('postscript', 'postscr'), ('*.ps', '*.eps'), ('application/postscript',)),
|
| 362 |
+
'PostgresConsoleLexer': ('pip._vendor.pygments.lexers.sql', 'PostgreSQL console (psql)', ('psql', 'postgresql-console', 'postgres-console'), (), ('text/x-postgresql-psql',)),
|
| 363 |
+
'PostgresLexer': ('pip._vendor.pygments.lexers.sql', 'PostgreSQL SQL dialect', ('postgresql', 'postgres'), (), ('text/x-postgresql',)),
|
| 364 |
+
'PovrayLexer': ('pip._vendor.pygments.lexers.graphics', 'POVRay', ('pov',), ('*.pov', '*.inc'), ('text/x-povray',)),
|
| 365 |
+
'PowerShellLexer': ('pip._vendor.pygments.lexers.shell', 'PowerShell', ('powershell', 'pwsh', 'posh', 'ps1', 'psm1'), ('*.ps1', '*.psm1'), ('text/x-powershell',)),
|
| 366 |
+
'PowerShellSessionLexer': ('pip._vendor.pygments.lexers.shell', 'PowerShell Session', ('pwsh-session', 'ps1con'), (), ()),
|
| 367 |
+
'PraatLexer': ('pip._vendor.pygments.lexers.praat', 'Praat', ('praat',), ('*.praat', '*.proc', '*.psc'), ()),
|
| 368 |
+
'ProcfileLexer': ('pip._vendor.pygments.lexers.procfile', 'Procfile', ('procfile',), ('Procfile',), ()),
|
| 369 |
+
'PrologLexer': ('pip._vendor.pygments.lexers.prolog', 'Prolog', ('prolog',), ('*.ecl', '*.prolog', '*.pro', '*.pl'), ('text/x-prolog',)),
|
| 370 |
+
'PromQLLexer': ('pip._vendor.pygments.lexers.promql', 'PromQL', ('promql',), ('*.promql',), ()),
|
| 371 |
+
'PropertiesLexer': ('pip._vendor.pygments.lexers.configs', 'Properties', ('properties', 'jproperties'), ('*.properties',), ('text/x-java-properties',)),
|
| 372 |
+
'ProtoBufLexer': ('pip._vendor.pygments.lexers.dsls', 'Protocol Buffer', ('protobuf', 'proto'), ('*.proto',), ()),
|
| 373 |
+
'PsyshConsoleLexer': ('pip._vendor.pygments.lexers.php', 'PsySH console session for PHP', ('psysh',), (), ()),
|
| 374 |
+
'PugLexer': ('pip._vendor.pygments.lexers.html', 'Pug', ('pug', 'jade'), ('*.pug', '*.jade'), ('text/x-pug', 'text/x-jade')),
|
| 375 |
+
'PuppetLexer': ('pip._vendor.pygments.lexers.dsls', 'Puppet', ('puppet',), ('*.pp',), ()),
|
| 376 |
+
'PyPyLogLexer': ('pip._vendor.pygments.lexers.console', 'PyPy Log', ('pypylog', 'pypy'), ('*.pypylog',), ('application/x-pypylog',)),
|
| 377 |
+
'Python2Lexer': ('pip._vendor.pygments.lexers.python', 'Python 2.x', ('python2', 'py2'), (), ('text/x-python2', 'application/x-python2')),
|
| 378 |
+
'Python2TracebackLexer': ('pip._vendor.pygments.lexers.python', 'Python 2.x Traceback', ('py2tb',), ('*.py2tb',), ('text/x-python2-traceback',)),
|
| 379 |
+
'PythonConsoleLexer': ('pip._vendor.pygments.lexers.python', 'Python console session', ('pycon',), (), ('text/x-python-doctest',)),
|
| 380 |
+
'PythonLexer': ('pip._vendor.pygments.lexers.python', 'Python', ('python', 'py', 'sage', 'python3', 'py3'), ('*.py', '*.pyw', '*.jy', '*.sage', '*.sc', 'SConstruct', 'SConscript', '*.bzl', 'BUCK', 'BUILD', 'BUILD.bazel', 'WORKSPACE', '*.tac'), ('text/x-python', 'application/x-python', 'text/x-python3', 'application/x-python3')),
|
| 381 |
+
'PythonTracebackLexer': ('pip._vendor.pygments.lexers.python', 'Python Traceback', ('pytb', 'py3tb'), ('*.pytb', '*.py3tb'), ('text/x-python-traceback', 'text/x-python3-traceback')),
|
| 382 |
+
'QBasicLexer': ('pip._vendor.pygments.lexers.basic', 'QBasic', ('qbasic', 'basic'), ('*.BAS', '*.bas'), ('text/basic',)),
|
| 383 |
+
'QVToLexer': ('pip._vendor.pygments.lexers.qvt', 'QVTO', ('qvto', 'qvt'), ('*.qvto',), ()),
|
| 384 |
+
'QmlLexer': ('pip._vendor.pygments.lexers.webmisc', 'QML', ('qml', 'qbs'), ('*.qml', '*.qbs'), ('application/x-qml', 'application/x-qt.qbs+qml')),
|
| 385 |
+
'RConsoleLexer': ('pip._vendor.pygments.lexers.r', 'RConsole', ('rconsole', 'rout'), ('*.Rout',), ()),
|
| 386 |
+
'RNCCompactLexer': ('pip._vendor.pygments.lexers.rnc', 'Relax-NG Compact', ('rng-compact', 'rnc'), ('*.rnc',), ()),
|
| 387 |
+
'RPMSpecLexer': ('pip._vendor.pygments.lexers.installers', 'RPMSpec', ('spec',), ('*.spec',), ('text/x-rpm-spec',)),
|
| 388 |
+
'RacketLexer': ('pip._vendor.pygments.lexers.lisp', 'Racket', ('racket', 'rkt'), ('*.rkt', '*.rktd', '*.rktl'), ('text/x-racket', 'application/x-racket')),
|
| 389 |
+
'RagelCLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel in C Host', ('ragel-c',), ('*.rl',), ()),
|
| 390 |
+
'RagelCppLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel in CPP Host', ('ragel-cpp',), ('*.rl',), ()),
|
| 391 |
+
'RagelDLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel in D Host', ('ragel-d',), ('*.rl',), ()),
|
| 392 |
+
'RagelEmbeddedLexer': ('pip._vendor.pygments.lexers.parsers', 'Embedded Ragel', ('ragel-em',), ('*.rl',), ()),
|
| 393 |
+
'RagelJavaLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel in Java Host', ('ragel-java',), ('*.rl',), ()),
|
| 394 |
+
'RagelLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel', ('ragel',), (), ()),
|
| 395 |
+
'RagelObjectiveCLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel in Objective C Host', ('ragel-objc',), ('*.rl',), ()),
|
| 396 |
+
'RagelRubyLexer': ('pip._vendor.pygments.lexers.parsers', 'Ragel in Ruby Host', ('ragel-ruby', 'ragel-rb'), ('*.rl',), ()),
|
| 397 |
+
'RawTokenLexer': ('pip._vendor.pygments.lexers.special', 'Raw token data', (), (), ('application/x-pygments-tokens',)),
|
| 398 |
+
'RdLexer': ('pip._vendor.pygments.lexers.r', 'Rd', ('rd',), ('*.Rd',), ('text/x-r-doc',)),
|
| 399 |
+
'ReasonLexer': ('pip._vendor.pygments.lexers.ml', 'ReasonML', ('reasonml', 'reason'), ('*.re', '*.rei'), ('text/x-reasonml',)),
|
| 400 |
+
'RebolLexer': ('pip._vendor.pygments.lexers.rebol', 'REBOL', ('rebol',), ('*.r', '*.r3', '*.reb'), ('text/x-rebol',)),
|
| 401 |
+
'RedLexer': ('pip._vendor.pygments.lexers.rebol', 'Red', ('red', 'red/system'), ('*.red', '*.reds'), ('text/x-red', 'text/x-red-system')),
|
| 402 |
+
'RedcodeLexer': ('pip._vendor.pygments.lexers.esoteric', 'Redcode', ('redcode',), ('*.cw',), ()),
|
| 403 |
+
'RegeditLexer': ('pip._vendor.pygments.lexers.configs', 'reg', ('registry',), ('*.reg',), ('text/x-windows-registry',)),
|
| 404 |
+
'ResourceLexer': ('pip._vendor.pygments.lexers.resource', 'ResourceBundle', ('resourcebundle', 'resource'), (), ()),
|
| 405 |
+
'RexxLexer': ('pip._vendor.pygments.lexers.scripting', 'Rexx', ('rexx', 'arexx'), ('*.rexx', '*.rex', '*.rx', '*.arexx'), ('text/x-rexx',)),
|
| 406 |
+
'RhtmlLexer': ('pip._vendor.pygments.lexers.templates', 'RHTML', ('rhtml', 'html+erb', 'html+ruby'), ('*.rhtml',), ('text/html+ruby',)),
|
| 407 |
+
'RideLexer': ('pip._vendor.pygments.lexers.ride', 'Ride', ('ride',), ('*.ride',), ('text/x-ride',)),
|
| 408 |
+
'RitaLexer': ('pip._vendor.pygments.lexers.rita', 'Rita', ('rita',), ('*.rita',), ('text/rita',)),
|
| 409 |
+
'RoboconfGraphLexer': ('pip._vendor.pygments.lexers.roboconf', 'Roboconf Graph', ('roboconf-graph',), ('*.graph',), ()),
|
| 410 |
+
'RoboconfInstancesLexer': ('pip._vendor.pygments.lexers.roboconf', 'Roboconf Instances', ('roboconf-instances',), ('*.instances',), ()),
|
| 411 |
+
'RobotFrameworkLexer': ('pip._vendor.pygments.lexers.robotframework', 'RobotFramework', ('robotframework',), ('*.robot',), ('text/x-robotframework',)),
|
| 412 |
+
'RqlLexer': ('pip._vendor.pygments.lexers.sql', 'RQL', ('rql',), ('*.rql',), ('text/x-rql',)),
|
| 413 |
+
'RslLexer': ('pip._vendor.pygments.lexers.dsls', 'RSL', ('rsl',), ('*.rsl',), ('text/rsl',)),
|
| 414 |
+
'RstLexer': ('pip._vendor.pygments.lexers.markup', 'reStructuredText', ('restructuredtext', 'rst', 'rest'), ('*.rst', '*.rest'), ('text/x-rst', 'text/prs.fallenstein.rst')),
|
| 415 |
+
'RtsLexer': ('pip._vendor.pygments.lexers.trafficscript', 'TrafficScript', ('trafficscript', 'rts'), ('*.rts',), ()),
|
| 416 |
+
'RubyConsoleLexer': ('pip._vendor.pygments.lexers.ruby', 'Ruby irb session', ('rbcon', 'irb'), (), ('text/x-ruby-shellsession',)),
|
| 417 |
+
'RubyLexer': ('pip._vendor.pygments.lexers.ruby', 'Ruby', ('ruby', 'rb', 'duby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx', '*.duby', 'Gemfile', 'Vagrantfile'), ('text/x-ruby', 'application/x-ruby')),
|
| 418 |
+
'RustLexer': ('pip._vendor.pygments.lexers.rust', 'Rust', ('rust', 'rs'), ('*.rs', '*.rs.in'), ('text/rust', 'text/x-rust')),
|
| 419 |
+
'SASLexer': ('pip._vendor.pygments.lexers.sas', 'SAS', ('sas',), ('*.SAS', '*.sas'), ('text/x-sas', 'text/sas', 'application/x-sas')),
|
| 420 |
+
'SLexer': ('pip._vendor.pygments.lexers.r', 'S', ('splus', 's', 'r'), ('*.S', '*.R', '.Rhistory', '.Rprofile', '.Renviron'), ('text/S-plus', 'text/S', 'text/x-r-source', 'text/x-r', 'text/x-R', 'text/x-r-history', 'text/x-r-profile')),
|
| 421 |
+
'SMLLexer': ('pip._vendor.pygments.lexers.ml', 'Standard ML', ('sml',), ('*.sml', '*.sig', '*.fun'), ('text/x-standardml', 'application/x-standardml')),
|
| 422 |
+
'SarlLexer': ('pip._vendor.pygments.lexers.jvm', 'SARL', ('sarl',), ('*.sarl',), ('text/x-sarl',)),
|
| 423 |
+
'SassLexer': ('pip._vendor.pygments.lexers.css', 'Sass', ('sass',), ('*.sass',), ('text/x-sass',)),
|
| 424 |
+
'SaviLexer': ('pip._vendor.pygments.lexers.savi', 'Savi', ('savi',), ('*.savi',), ()),
|
| 425 |
+
'ScalaLexer': ('pip._vendor.pygments.lexers.jvm', 'Scala', ('scala',), ('*.scala',), ('text/x-scala',)),
|
| 426 |
+
'ScamlLexer': ('pip._vendor.pygments.lexers.html', 'Scaml', ('scaml',), ('*.scaml',), ('text/x-scaml',)),
|
| 427 |
+
'ScdocLexer': ('pip._vendor.pygments.lexers.scdoc', 'scdoc', ('scdoc', 'scd'), ('*.scd', '*.scdoc'), ()),
|
| 428 |
+
'SchemeLexer': ('pip._vendor.pygments.lexers.lisp', 'Scheme', ('scheme', 'scm'), ('*.scm', '*.ss'), ('text/x-scheme', 'application/x-scheme')),
|
| 429 |
+
'ScilabLexer': ('pip._vendor.pygments.lexers.matlab', 'Scilab', ('scilab',), ('*.sci', '*.sce', '*.tst'), ('text/scilab',)),
|
| 430 |
+
'ScssLexer': ('pip._vendor.pygments.lexers.css', 'SCSS', ('scss',), ('*.scss',), ('text/x-scss',)),
|
| 431 |
+
'SedLexer': ('pip._vendor.pygments.lexers.textedit', 'Sed', ('sed', 'gsed', 'ssed'), ('*.sed', '*.[gs]sed'), ('text/x-sed',)),
|
| 432 |
+
'ShExCLexer': ('pip._vendor.pygments.lexers.rdf', 'ShExC', ('shexc', 'shex'), ('*.shex',), ('text/shex',)),
|
| 433 |
+
'ShenLexer': ('pip._vendor.pygments.lexers.lisp', 'Shen', ('shen',), ('*.shen',), ('text/x-shen', 'application/x-shen')),
|
| 434 |
+
'SieveLexer': ('pip._vendor.pygments.lexers.sieve', 'Sieve', ('sieve',), ('*.siv', '*.sieve'), ()),
|
| 435 |
+
'SilverLexer': ('pip._vendor.pygments.lexers.verification', 'Silver', ('silver',), ('*.sil', '*.vpr'), ()),
|
| 436 |
+
'SingularityLexer': ('pip._vendor.pygments.lexers.configs', 'Singularity', ('singularity',), ('*.def', 'Singularity'), ()),
|
| 437 |
+
'SlashLexer': ('pip._vendor.pygments.lexers.slash', 'Slash', ('slash',), ('*.sla',), ()),
|
| 438 |
+
'SlimLexer': ('pip._vendor.pygments.lexers.webmisc', 'Slim', ('slim',), ('*.slim',), ('text/x-slim',)),
|
| 439 |
+
'SlurmBashLexer': ('pip._vendor.pygments.lexers.shell', 'Slurm', ('slurm', 'sbatch'), ('*.sl',), ()),
|
| 440 |
+
'SmaliLexer': ('pip._vendor.pygments.lexers.dalvik', 'Smali', ('smali',), ('*.smali',), ('text/smali',)),
|
| 441 |
+
'SmalltalkLexer': ('pip._vendor.pygments.lexers.smalltalk', 'Smalltalk', ('smalltalk', 'squeak', 'st'), ('*.st',), ('text/x-smalltalk',)),
|
| 442 |
+
'SmartGameFormatLexer': ('pip._vendor.pygments.lexers.sgf', 'SmartGameFormat', ('sgf',), ('*.sgf',), ()),
|
| 443 |
+
'SmartyLexer': ('pip._vendor.pygments.lexers.templates', 'Smarty', ('smarty',), ('*.tpl',), ('application/x-smarty',)),
|
| 444 |
+
'SmithyLexer': ('pip._vendor.pygments.lexers.smithy', 'Smithy', ('smithy',), ('*.smithy',), ()),
|
| 445 |
+
'SnobolLexer': ('pip._vendor.pygments.lexers.snobol', 'Snobol', ('snobol',), ('*.snobol',), ('text/x-snobol',)),
|
| 446 |
+
'SnowballLexer': ('pip._vendor.pygments.lexers.dsls', 'Snowball', ('snowball',), ('*.sbl',), ()),
|
| 447 |
+
'SolidityLexer': ('pip._vendor.pygments.lexers.solidity', 'Solidity', ('solidity',), ('*.sol',), ()),
|
| 448 |
+
'SophiaLexer': ('pip._vendor.pygments.lexers.sophia', 'Sophia', ('sophia',), ('*.aes',), ()),
|
| 449 |
+
'SourcePawnLexer': ('pip._vendor.pygments.lexers.pawn', 'SourcePawn', ('sp',), ('*.sp',), ('text/x-sourcepawn',)),
|
| 450 |
+
'SourcesListLexer': ('pip._vendor.pygments.lexers.installers', 'Debian Sourcelist', ('debsources', 'sourceslist', 'sources.list'), ('sources.list',), ()),
|
| 451 |
+
'SparqlLexer': ('pip._vendor.pygments.lexers.rdf', 'SPARQL', ('sparql',), ('*.rq', '*.sparql'), ('application/sparql-query',)),
|
| 452 |
+
'SpiceLexer': ('pip._vendor.pygments.lexers.spice', 'Spice', ('spice', 'spicelang'), ('*.spice',), ('text/x-spice',)),
|
| 453 |
+
'SqlLexer': ('pip._vendor.pygments.lexers.sql', 'SQL', ('sql',), ('*.sql',), ('text/x-sql',)),
|
| 454 |
+
'SqliteConsoleLexer': ('pip._vendor.pygments.lexers.sql', 'sqlite3con', ('sqlite3',), ('*.sqlite3-console',), ('text/x-sqlite3-console',)),
|
| 455 |
+
'SquidConfLexer': ('pip._vendor.pygments.lexers.configs', 'SquidConf', ('squidconf', 'squid.conf', 'squid'), ('squid.conf',), ('text/x-squidconf',)),
|
| 456 |
+
'SrcinfoLexer': ('pip._vendor.pygments.lexers.srcinfo', 'Srcinfo', ('srcinfo',), ('.SRCINFO',), ()),
|
| 457 |
+
'SspLexer': ('pip._vendor.pygments.lexers.templates', 'Scalate Server Page', ('ssp',), ('*.ssp',), ('application/x-ssp',)),
|
| 458 |
+
'StanLexer': ('pip._vendor.pygments.lexers.modeling', 'Stan', ('stan',), ('*.stan',), ()),
|
| 459 |
+
'StataLexer': ('pip._vendor.pygments.lexers.stata', 'Stata', ('stata', 'do'), ('*.do', '*.ado'), ('text/x-stata', 'text/stata', 'application/x-stata')),
|
| 460 |
+
'SuperColliderLexer': ('pip._vendor.pygments.lexers.supercollider', 'SuperCollider', ('supercollider', 'sc'), ('*.sc', '*.scd'), ('application/supercollider', 'text/supercollider')),
|
| 461 |
+
'SwiftLexer': ('pip._vendor.pygments.lexers.objective', 'Swift', ('swift',), ('*.swift',), ('text/x-swift',)),
|
| 462 |
+
'SwigLexer': ('pip._vendor.pygments.lexers.c_like', 'SWIG', ('swig',), ('*.swg', '*.i'), ('text/swig',)),
|
| 463 |
+
'SystemVerilogLexer': ('pip._vendor.pygments.lexers.hdl', 'systemverilog', ('systemverilog', 'sv'), ('*.sv', '*.svh'), ('text/x-systemverilog',)),
|
| 464 |
+
'TAPLexer': ('pip._vendor.pygments.lexers.testing', 'TAP', ('tap',), ('*.tap',), ()),
|
| 465 |
+
'TNTLexer': ('pip._vendor.pygments.lexers.tnt', 'Typographic Number Theory', ('tnt',), ('*.tnt',), ()),
|
| 466 |
+
'TOMLLexer': ('pip._vendor.pygments.lexers.configs', 'TOML', ('toml',), ('*.toml', 'Pipfile', 'poetry.lock'), ()),
|
| 467 |
+
'Tads3Lexer': ('pip._vendor.pygments.lexers.int_fiction', 'TADS 3', ('tads3',), ('*.t',), ()),
|
| 468 |
+
'TasmLexer': ('pip._vendor.pygments.lexers.asm', 'TASM', ('tasm',), ('*.asm', '*.ASM', '*.tasm'), ('text/x-tasm',)),
|
| 469 |
+
'TclLexer': ('pip._vendor.pygments.lexers.tcl', 'Tcl', ('tcl',), ('*.tcl', '*.rvt'), ('text/x-tcl', 'text/x-script.tcl', 'application/x-tcl')),
|
| 470 |
+
'TcshLexer': ('pip._vendor.pygments.lexers.shell', 'Tcsh', ('tcsh', 'csh'), ('*.tcsh', '*.csh'), ('application/x-csh',)),
|
| 471 |
+
'TcshSessionLexer': ('pip._vendor.pygments.lexers.shell', 'Tcsh Session', ('tcshcon',), (), ()),
|
| 472 |
+
'TeaTemplateLexer': ('pip._vendor.pygments.lexers.templates', 'Tea', ('tea',), ('*.tea',), ('text/x-tea',)),
|
| 473 |
+
'TealLexer': ('pip._vendor.pygments.lexers.teal', 'teal', ('teal',), ('*.teal',), ()),
|
| 474 |
+
'TeraTermLexer': ('pip._vendor.pygments.lexers.teraterm', 'Tera Term macro', ('teratermmacro', 'teraterm', 'ttl'), ('*.ttl',), ('text/x-teratermmacro',)),
|
| 475 |
+
'TermcapLexer': ('pip._vendor.pygments.lexers.configs', 'Termcap', ('termcap',), ('termcap', 'termcap.src'), ()),
|
| 476 |
+
'TerminfoLexer': ('pip._vendor.pygments.lexers.configs', 'Terminfo', ('terminfo',), ('terminfo', 'terminfo.src'), ()),
|
| 477 |
+
'TerraformLexer': ('pip._vendor.pygments.lexers.configs', 'Terraform', ('terraform', 'tf'), ('*.tf',), ('application/x-tf', 'application/x-terraform')),
|
| 478 |
+
'TexLexer': ('pip._vendor.pygments.lexers.markup', 'TeX', ('tex', 'latex'), ('*.tex', '*.aux', '*.toc'), ('text/x-tex', 'text/x-latex')),
|
| 479 |
+
'TextLexer': ('pip._vendor.pygments.lexers.special', 'Text only', ('text',), ('*.txt',), ('text/plain',)),
|
| 480 |
+
'ThingsDBLexer': ('pip._vendor.pygments.lexers.thingsdb', 'ThingsDB', ('ti', 'thingsdb'), ('*.ti',), ()),
|
| 481 |
+
'ThriftLexer': ('pip._vendor.pygments.lexers.dsls', 'Thrift', ('thrift',), ('*.thrift',), ('application/x-thrift',)),
|
| 482 |
+
'TiddlyWiki5Lexer': ('pip._vendor.pygments.lexers.markup', 'tiddler', ('tid',), ('*.tid',), ('text/vnd.tiddlywiki',)),
|
| 483 |
+
'TodotxtLexer': ('pip._vendor.pygments.lexers.textfmts', 'Todotxt', ('todotxt',), ('todo.txt', '*.todotxt'), ('text/x-todo',)),
|
| 484 |
+
'TransactSqlLexer': ('pip._vendor.pygments.lexers.sql', 'Transact-SQL', ('tsql', 't-sql'), ('*.sql',), ('text/x-tsql',)),
|
| 485 |
+
'TreetopLexer': ('pip._vendor.pygments.lexers.parsers', 'Treetop', ('treetop',), ('*.treetop', '*.tt'), ()),
|
| 486 |
+
'TurtleLexer': ('pip._vendor.pygments.lexers.rdf', 'Turtle', ('turtle',), ('*.ttl',), ('text/turtle', 'application/x-turtle')),
|
| 487 |
+
'TwigHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Twig', ('html+twig',), ('*.twig',), ('text/html+twig',)),
|
| 488 |
+
'TwigLexer': ('pip._vendor.pygments.lexers.templates', 'Twig', ('twig',), (), ('application/x-twig',)),
|
| 489 |
+
'TypeScriptLexer': ('pip._vendor.pygments.lexers.javascript', 'TypeScript', ('typescript', 'ts'), ('*.ts',), ('application/x-typescript', 'text/x-typescript')),
|
| 490 |
+
'TypoScriptCssDataLexer': ('pip._vendor.pygments.lexers.typoscript', 'TypoScriptCssData', ('typoscriptcssdata',), (), ()),
|
| 491 |
+
'TypoScriptHtmlDataLexer': ('pip._vendor.pygments.lexers.typoscript', 'TypoScriptHtmlData', ('typoscripthtmldata',), (), ()),
|
| 492 |
+
'TypoScriptLexer': ('pip._vendor.pygments.lexers.typoscript', 'TypoScript', ('typoscript',), ('*.typoscript',), ('text/x-typoscript',)),
|
| 493 |
+
'UcodeLexer': ('pip._vendor.pygments.lexers.unicon', 'ucode', ('ucode',), ('*.u', '*.u1', '*.u2'), ()),
|
| 494 |
+
'UniconLexer': ('pip._vendor.pygments.lexers.unicon', 'Unicon', ('unicon',), ('*.icn',), ('text/unicon',)),
|
| 495 |
+
'UrbiscriptLexer': ('pip._vendor.pygments.lexers.urbi', 'UrbiScript', ('urbiscript',), ('*.u',), ('application/x-urbiscript',)),
|
| 496 |
+
'UsdLexer': ('pip._vendor.pygments.lexers.usd', 'USD', ('usd', 'usda'), ('*.usd', '*.usda'), ()),
|
| 497 |
+
'VBScriptLexer': ('pip._vendor.pygments.lexers.basic', 'VBScript', ('vbscript',), ('*.vbs', '*.VBS'), ()),
|
| 498 |
+
'VCLLexer': ('pip._vendor.pygments.lexers.varnish', 'VCL', ('vcl',), ('*.vcl',), ('text/x-vclsrc',)),
|
| 499 |
+
'VCLSnippetLexer': ('pip._vendor.pygments.lexers.varnish', 'VCLSnippets', ('vclsnippets', 'vclsnippet'), (), ('text/x-vclsnippet',)),
|
| 500 |
+
'VCTreeStatusLexer': ('pip._vendor.pygments.lexers.console', 'VCTreeStatus', ('vctreestatus',), (), ()),
|
| 501 |
+
'VGLLexer': ('pip._vendor.pygments.lexers.dsls', 'VGL', ('vgl',), ('*.rpf',), ()),
|
| 502 |
+
'ValaLexer': ('pip._vendor.pygments.lexers.c_like', 'Vala', ('vala', 'vapi'), ('*.vala', '*.vapi'), ('text/x-vala',)),
|
| 503 |
+
'VbNetAspxLexer': ('pip._vendor.pygments.lexers.dotnet', 'aspx-vb', ('aspx-vb',), ('*.aspx', '*.asax', '*.ascx', '*.ashx', '*.asmx', '*.axd'), ()),
|
| 504 |
+
'VbNetLexer': ('pip._vendor.pygments.lexers.dotnet', 'VB.net', ('vb.net', 'vbnet'), ('*.vb', '*.bas'), ('text/x-vbnet', 'text/x-vba')),
|
| 505 |
+
'VelocityHtmlLexer': ('pip._vendor.pygments.lexers.templates', 'HTML+Velocity', ('html+velocity',), (), ('text/html+velocity',)),
|
| 506 |
+
'VelocityLexer': ('pip._vendor.pygments.lexers.templates', 'Velocity', ('velocity',), ('*.vm', '*.fhtml'), ()),
|
| 507 |
+
'VelocityXmlLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Velocity', ('xml+velocity',), (), ('application/xml+velocity',)),
|
| 508 |
+
'VerilogLexer': ('pip._vendor.pygments.lexers.hdl', 'verilog', ('verilog', 'v'), ('*.v',), ('text/x-verilog',)),
|
| 509 |
+
'VhdlLexer': ('pip._vendor.pygments.lexers.hdl', 'vhdl', ('vhdl',), ('*.vhdl', '*.vhd'), ('text/x-vhdl',)),
|
| 510 |
+
'VimLexer': ('pip._vendor.pygments.lexers.textedit', 'VimL', ('vim',), ('*.vim', '.vimrc', '.exrc', '.gvimrc', '_vimrc', '_exrc', '_gvimrc', 'vimrc', 'gvimrc'), ('text/x-vim',)),
|
| 511 |
+
'WDiffLexer': ('pip._vendor.pygments.lexers.diff', 'WDiff', ('wdiff',), ('*.wdiff',), ()),
|
| 512 |
+
'WatLexer': ('pip._vendor.pygments.lexers.webassembly', 'WebAssembly', ('wast', 'wat'), ('*.wat', '*.wast'), ()),
|
| 513 |
+
'WebIDLLexer': ('pip._vendor.pygments.lexers.webidl', 'Web IDL', ('webidl',), ('*.webidl',), ()),
|
| 514 |
+
'WhileyLexer': ('pip._vendor.pygments.lexers.whiley', 'Whiley', ('whiley',), ('*.whiley',), ('text/x-whiley',)),
|
| 515 |
+
'X10Lexer': ('pip._vendor.pygments.lexers.x10', 'X10', ('x10', 'xten'), ('*.x10',), ('text/x-x10',)),
|
| 516 |
+
'XQueryLexer': ('pip._vendor.pygments.lexers.webmisc', 'XQuery', ('xquery', 'xqy', 'xq', 'xql', 'xqm'), ('*.xqy', '*.xquery', '*.xq', '*.xql', '*.xqm'), ('text/xquery', 'application/xquery')),
|
| 517 |
+
'XmlDjangoLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Django/Jinja', ('xml+django', 'xml+jinja'), (), ('application/xml+django', 'application/xml+jinja')),
|
| 518 |
+
'XmlErbLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Ruby', ('xml+ruby', 'xml+erb'), (), ('application/xml+ruby',)),
|
| 519 |
+
'XmlLexer': ('pip._vendor.pygments.lexers.html', 'XML', ('xml',), ('*.xml', '*.xsl', '*.rss', '*.xslt', '*.xsd', '*.wsdl', '*.wsf'), ('text/xml', 'application/xml', 'image/svg+xml', 'application/rss+xml', 'application/atom+xml')),
|
| 520 |
+
'XmlPhpLexer': ('pip._vendor.pygments.lexers.templates', 'XML+PHP', ('xml+php',), (), ('application/xml+php',)),
|
| 521 |
+
'XmlSmartyLexer': ('pip._vendor.pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), (), ('application/xml+smarty',)),
|
| 522 |
+
'XorgLexer': ('pip._vendor.pygments.lexers.xorg', 'Xorg', ('xorg.conf',), ('xorg.conf',), ()),
|
| 523 |
+
'XsltLexer': ('pip._vendor.pygments.lexers.html', 'XSLT', ('xslt',), ('*.xsl', '*.xslt', '*.xpl'), ('application/xsl+xml', 'application/xslt+xml')),
|
| 524 |
+
'XtendLexer': ('pip._vendor.pygments.lexers.jvm', 'Xtend', ('xtend',), ('*.xtend',), ('text/x-xtend',)),
|
| 525 |
+
'XtlangLexer': ('pip._vendor.pygments.lexers.lisp', 'xtlang', ('extempore',), ('*.xtm',), ()),
|
| 526 |
+
'YamlJinjaLexer': ('pip._vendor.pygments.lexers.templates', 'YAML+Jinja', ('yaml+jinja', 'salt', 'sls'), ('*.sls',), ('text/x-yaml+jinja', 'text/x-sls')),
|
| 527 |
+
'YamlLexer': ('pip._vendor.pygments.lexers.data', 'YAML', ('yaml',), ('*.yaml', '*.yml'), ('text/x-yaml',)),
|
| 528 |
+
'YangLexer': ('pip._vendor.pygments.lexers.yang', 'YANG', ('yang',), ('*.yang',), ('application/yang',)),
|
| 529 |
+
'ZeekLexer': ('pip._vendor.pygments.lexers.dsls', 'Zeek', ('zeek', 'bro'), ('*.zeek', '*.bro'), ()),
|
| 530 |
+
'ZephirLexer': ('pip._vendor.pygments.lexers.php', 'Zephir', ('zephir',), ('*.zep',), ()),
|
| 531 |
+
'ZigLexer': ('pip._vendor.pygments.lexers.zig', 'Zig', ('zig',), ('*.zig',), ('text/zig',)),
|
| 532 |
+
'apdlexer': ('pip._vendor.pygments.lexers.apdlexer', 'ANSYS parametric design language', ('ansys', 'apdl'), ('*.ans',), ()),
|
| 533 |
+
}
|
| 534 |
+
|
| 535 |
+
if __name__ == '__main__': # pragma: no cover
|
| 536 |
+
import sys
|
| 537 |
+
import os
|
| 538 |
+
|
| 539 |
+
# lookup lexers
|
| 540 |
+
found_lexers = []
|
| 541 |
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..'))
|
| 542 |
+
for root, dirs, files in os.walk('.'):
|
| 543 |
+
for filename in files:
|
| 544 |
+
if filename.endswith('.py') and not filename.startswith('_'):
|
| 545 |
+
module_name = 'pygments.lexers%s.%s' % (
|
| 546 |
+
root[1:].replace('/', '.'), filename[:-3])
|
| 547 |
+
print(module_name)
|
| 548 |
+
module = __import__(module_name, None, None, [''])
|
| 549 |
+
for lexer_name in module.__all__:
|
| 550 |
+
lexer = getattr(module, lexer_name)
|
| 551 |
+
found_lexers.append(
|
| 552 |
+
'%r: %r' % (lexer_name,
|
| 553 |
+
(module_name,
|
| 554 |
+
lexer.name,
|
| 555 |
+
tuple(lexer.aliases),
|
| 556 |
+
tuple(lexer.filenames),
|
| 557 |
+
tuple(lexer.mimetypes))))
|
| 558 |
+
# sort them to make the diff minimal
|
| 559 |
+
found_lexers.sort()
|
| 560 |
+
|
| 561 |
+
# extract useful sourcecode from this file
|
| 562 |
+
with open(__file__) as fp:
|
| 563 |
+
content = fp.read()
|
| 564 |
+
# replace crnl to nl for Windows.
|
| 565 |
+
#
|
| 566 |
+
# Note that, originally, contributers should keep nl of master
|
| 567 |
+
# repository, for example by using some kind of automatic
|
| 568 |
+
# management EOL, like `EolExtension
|
| 569 |
+
# <https://www.mercurial-scm.org/wiki/EolExtension>`.
|
| 570 |
+
content = content.replace("\r\n", "\n")
|
| 571 |
+
header = content[:content.find('LEXERS = {')]
|
| 572 |
+
footer = content[content.find("if __name__ == '__main__':"):]
|
| 573 |
+
|
| 574 |
+
# write new file
|
| 575 |
+
with open(__file__, 'w') as fp:
|
| 576 |
+
fp.write(header)
|
| 577 |
+
fp.write('LEXERS = {\n %s,\n}\n\n' % ',\n '.join(found_lexers))
|
| 578 |
+
fp.write(footer)
|
| 579 |
+
|
| 580 |
+
print ('=== %d lexers processed.' % len(found_lexers))
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py
ADDED
|
@@ -0,0 +1,1188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.lexers.python
|
| 3 |
+
~~~~~~~~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Lexers for Python and related languages.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
import re
|
| 12 |
+
import keyword
|
| 13 |
+
|
| 14 |
+
from pip._vendor.pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \
|
| 15 |
+
default, words, combined, do_insertions, this
|
| 16 |
+
from pip._vendor.pygments.util import get_bool_opt, shebang_matches
|
| 17 |
+
from pip._vendor.pygments.token import Text, Comment, Operator, Keyword, Name, String, \
|
| 18 |
+
Number, Punctuation, Generic, Other, Error
|
| 19 |
+
from pip._vendor.pygments import unistring as uni
|
| 20 |
+
|
| 21 |
+
__all__ = ['PythonLexer', 'PythonConsoleLexer', 'PythonTracebackLexer',
|
| 22 |
+
'Python2Lexer', 'Python2TracebackLexer',
|
| 23 |
+
'CythonLexer', 'DgLexer', 'NumPyLexer']
|
| 24 |
+
|
| 25 |
+
line_re = re.compile('.*?\n')
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
class PythonLexer(RegexLexer):
|
| 29 |
+
"""
|
| 30 |
+
For `Python <http://www.python.org>`_ source code (version 3.x).
|
| 31 |
+
|
| 32 |
+
.. versionadded:: 0.10
|
| 33 |
+
|
| 34 |
+
.. versionchanged:: 2.5
|
| 35 |
+
This is now the default ``PythonLexer``. It is still available as the
|
| 36 |
+
alias ``Python3Lexer``.
|
| 37 |
+
"""
|
| 38 |
+
|
| 39 |
+
name = 'Python'
|
| 40 |
+
aliases = ['python', 'py', 'sage', 'python3', 'py3']
|
| 41 |
+
filenames = [
|
| 42 |
+
'*.py',
|
| 43 |
+
'*.pyw',
|
| 44 |
+
# Jython
|
| 45 |
+
'*.jy',
|
| 46 |
+
# Sage
|
| 47 |
+
'*.sage',
|
| 48 |
+
# SCons
|
| 49 |
+
'*.sc',
|
| 50 |
+
'SConstruct',
|
| 51 |
+
'SConscript',
|
| 52 |
+
# Skylark/Starlark (used by Bazel, Buck, and Pants)
|
| 53 |
+
'*.bzl',
|
| 54 |
+
'BUCK',
|
| 55 |
+
'BUILD',
|
| 56 |
+
'BUILD.bazel',
|
| 57 |
+
'WORKSPACE',
|
| 58 |
+
# Twisted Application infrastructure
|
| 59 |
+
'*.tac',
|
| 60 |
+
]
|
| 61 |
+
mimetypes = ['text/x-python', 'application/x-python',
|
| 62 |
+
'text/x-python3', 'application/x-python3']
|
| 63 |
+
|
| 64 |
+
flags = re.MULTILINE | re.UNICODE
|
| 65 |
+
|
| 66 |
+
uni_name = "[%s][%s]*" % (uni.xid_start, uni.xid_continue)
|
| 67 |
+
|
| 68 |
+
def innerstring_rules(ttype):
|
| 69 |
+
return [
|
| 70 |
+
# the old style '%s' % (...) string formatting (still valid in Py3)
|
| 71 |
+
(r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
|
| 72 |
+
'[hlL]?[E-GXc-giorsaux%]', String.Interpol),
|
| 73 |
+
# the new style '{}'.format(...) string formatting
|
| 74 |
+
(r'\{'
|
| 75 |
+
r'((\w+)((\.\w+)|(\[[^\]]+\]))*)?' # field name
|
| 76 |
+
r'(\![sra])?' # conversion
|
| 77 |
+
r'(\:(.?[<>=\^])?[-+ ]?#?0?(\d+)?,?(\.\d+)?[E-GXb-gnosx%]?)?'
|
| 78 |
+
r'\}', String.Interpol),
|
| 79 |
+
|
| 80 |
+
# backslashes, quotes and formatting signs must be parsed one at a time
|
| 81 |
+
(r'[^\\\'"%{\n]+', ttype),
|
| 82 |
+
(r'[\'"\\]', ttype),
|
| 83 |
+
# unhandled string formatting sign
|
| 84 |
+
(r'%|(\{{1,2})', ttype)
|
| 85 |
+
# newlines are an error (use "nl" state)
|
| 86 |
+
]
|
| 87 |
+
|
| 88 |
+
def fstring_rules(ttype):
|
| 89 |
+
return [
|
| 90 |
+
# Assuming that a '}' is the closing brace after format specifier.
|
| 91 |
+
# Sadly, this means that we won't detect syntax error. But it's
|
| 92 |
+
# more important to parse correct syntax correctly, than to
|
| 93 |
+
# highlight invalid syntax.
|
| 94 |
+
(r'\}', String.Interpol),
|
| 95 |
+
(r'\{', String.Interpol, 'expr-inside-fstring'),
|
| 96 |
+
# backslashes, quotes and formatting signs must be parsed one at a time
|
| 97 |
+
(r'[^\\\'"{}\n]+', ttype),
|
| 98 |
+
(r'[\'"\\]', ttype),
|
| 99 |
+
# newlines are an error (use "nl" state)
|
| 100 |
+
]
|
| 101 |
+
|
| 102 |
+
tokens = {
|
| 103 |
+
'root': [
|
| 104 |
+
(r'\n', Text),
|
| 105 |
+
(r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
|
| 106 |
+
bygroups(Text, String.Affix, String.Doc)),
|
| 107 |
+
(r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
|
| 108 |
+
bygroups(Text, String.Affix, String.Doc)),
|
| 109 |
+
(r'\A#!.+$', Comment.Hashbang),
|
| 110 |
+
(r'#.*$', Comment.Single),
|
| 111 |
+
(r'\\\n', Text),
|
| 112 |
+
(r'\\', Text),
|
| 113 |
+
include('keywords'),
|
| 114 |
+
include('soft-keywords'),
|
| 115 |
+
(r'(def)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'funcname'),
|
| 116 |
+
(r'(class)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'classname'),
|
| 117 |
+
(r'(from)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
|
| 118 |
+
'fromimport'),
|
| 119 |
+
(r'(import)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
|
| 120 |
+
'import'),
|
| 121 |
+
include('expr'),
|
| 122 |
+
],
|
| 123 |
+
'expr': [
|
| 124 |
+
# raw f-strings
|
| 125 |
+
('(?i)(rf|fr)(""")',
|
| 126 |
+
bygroups(String.Affix, String.Double),
|
| 127 |
+
combined('rfstringescape', 'tdqf')),
|
| 128 |
+
("(?i)(rf|fr)(''')",
|
| 129 |
+
bygroups(String.Affix, String.Single),
|
| 130 |
+
combined('rfstringescape', 'tsqf')),
|
| 131 |
+
('(?i)(rf|fr)(")',
|
| 132 |
+
bygroups(String.Affix, String.Double),
|
| 133 |
+
combined('rfstringescape', 'dqf')),
|
| 134 |
+
("(?i)(rf|fr)(')",
|
| 135 |
+
bygroups(String.Affix, String.Single),
|
| 136 |
+
combined('rfstringescape', 'sqf')),
|
| 137 |
+
# non-raw f-strings
|
| 138 |
+
('([fF])(""")', bygroups(String.Affix, String.Double),
|
| 139 |
+
combined('fstringescape', 'tdqf')),
|
| 140 |
+
("([fF])(''')", bygroups(String.Affix, String.Single),
|
| 141 |
+
combined('fstringescape', 'tsqf')),
|
| 142 |
+
('([fF])(")', bygroups(String.Affix, String.Double),
|
| 143 |
+
combined('fstringescape', 'dqf')),
|
| 144 |
+
("([fF])(')", bygroups(String.Affix, String.Single),
|
| 145 |
+
combined('fstringescape', 'sqf')),
|
| 146 |
+
# raw strings
|
| 147 |
+
('(?i)(rb|br|r)(""")',
|
| 148 |
+
bygroups(String.Affix, String.Double), 'tdqs'),
|
| 149 |
+
("(?i)(rb|br|r)(''')",
|
| 150 |
+
bygroups(String.Affix, String.Single), 'tsqs'),
|
| 151 |
+
('(?i)(rb|br|r)(")',
|
| 152 |
+
bygroups(String.Affix, String.Double), 'dqs'),
|
| 153 |
+
("(?i)(rb|br|r)(')",
|
| 154 |
+
bygroups(String.Affix, String.Single), 'sqs'),
|
| 155 |
+
# non-raw strings
|
| 156 |
+
('([uUbB]?)(""")', bygroups(String.Affix, String.Double),
|
| 157 |
+
combined('stringescape', 'tdqs')),
|
| 158 |
+
("([uUbB]?)(''')", bygroups(String.Affix, String.Single),
|
| 159 |
+
combined('stringescape', 'tsqs')),
|
| 160 |
+
('([uUbB]?)(")', bygroups(String.Affix, String.Double),
|
| 161 |
+
combined('stringescape', 'dqs')),
|
| 162 |
+
("([uUbB]?)(')", bygroups(String.Affix, String.Single),
|
| 163 |
+
combined('stringescape', 'sqs')),
|
| 164 |
+
(r'[^\S\n]+', Text),
|
| 165 |
+
include('numbers'),
|
| 166 |
+
(r'!=|==|<<|>>|:=|[-~+/*%=<>&^|.]', Operator),
|
| 167 |
+
(r'[]{}:(),;[]', Punctuation),
|
| 168 |
+
(r'(in|is|and|or|not)\b', Operator.Word),
|
| 169 |
+
include('expr-keywords'),
|
| 170 |
+
include('builtins'),
|
| 171 |
+
include('magicfuncs'),
|
| 172 |
+
include('magicvars'),
|
| 173 |
+
include('name'),
|
| 174 |
+
],
|
| 175 |
+
'expr-inside-fstring': [
|
| 176 |
+
(r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
|
| 177 |
+
# without format specifier
|
| 178 |
+
(r'(=\s*)?' # debug (https://bugs.python.org/issue36817)
|
| 179 |
+
r'(\![sraf])?' # conversion
|
| 180 |
+
r'\}', String.Interpol, '#pop'),
|
| 181 |
+
# with format specifier
|
| 182 |
+
# we'll catch the remaining '}' in the outer scope
|
| 183 |
+
(r'(=\s*)?' # debug (https://bugs.python.org/issue36817)
|
| 184 |
+
r'(\![sraf])?' # conversion
|
| 185 |
+
r':', String.Interpol, '#pop'),
|
| 186 |
+
(r'\s+', Text), # allow new lines
|
| 187 |
+
include('expr'),
|
| 188 |
+
],
|
| 189 |
+
'expr-inside-fstring-inner': [
|
| 190 |
+
(r'[{([]', Punctuation, 'expr-inside-fstring-inner'),
|
| 191 |
+
(r'[])}]', Punctuation, '#pop'),
|
| 192 |
+
(r'\s+', Text), # allow new lines
|
| 193 |
+
include('expr'),
|
| 194 |
+
],
|
| 195 |
+
'expr-keywords': [
|
| 196 |
+
# Based on https://docs.python.org/3/reference/expressions.html
|
| 197 |
+
(words((
|
| 198 |
+
'async for', 'await', 'else', 'for', 'if', 'lambda',
|
| 199 |
+
'yield', 'yield from'), suffix=r'\b'),
|
| 200 |
+
Keyword),
|
| 201 |
+
(words(('True', 'False', 'None'), suffix=r'\b'), Keyword.Constant),
|
| 202 |
+
],
|
| 203 |
+
'keywords': [
|
| 204 |
+
(words((
|
| 205 |
+
'assert', 'async', 'await', 'break', 'continue', 'del', 'elif',
|
| 206 |
+
'else', 'except', 'finally', 'for', 'global', 'if', 'lambda',
|
| 207 |
+
'pass', 'raise', 'nonlocal', 'return', 'try', 'while', 'yield',
|
| 208 |
+
'yield from', 'as', 'with'), suffix=r'\b'),
|
| 209 |
+
Keyword),
|
| 210 |
+
(words(('True', 'False', 'None'), suffix=r'\b'), Keyword.Constant),
|
| 211 |
+
],
|
| 212 |
+
'soft-keywords': [
|
| 213 |
+
# `match`, `case` and `_` soft keywords
|
| 214 |
+
(r'(^[ \t]*)' # at beginning of line + possible indentation
|
| 215 |
+
r'(match|case)\b' # a possible keyword
|
| 216 |
+
r'(?![ \t]*(?:' # not followed by...
|
| 217 |
+
r'[:,;=^&|@~)\]}]|(?:' + # characters and keywords that mean this isn't
|
| 218 |
+
r'|'.join(keyword.kwlist) + r')\b))', # pattern matching
|
| 219 |
+
bygroups(Text, Keyword), 'soft-keywords-inner'),
|
| 220 |
+
],
|
| 221 |
+
'soft-keywords-inner': [
|
| 222 |
+
# optional `_` keyword
|
| 223 |
+
(r'(\s+)([^\n_]*)(_\b)', bygroups(Text, using(this), Keyword)),
|
| 224 |
+
default('#pop')
|
| 225 |
+
],
|
| 226 |
+
'builtins': [
|
| 227 |
+
(words((
|
| 228 |
+
'__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray',
|
| 229 |
+
'breakpoint', 'bytes', 'chr', 'classmethod', 'compile', 'complex',
|
| 230 |
+
'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'filter',
|
| 231 |
+
'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
|
| 232 |
+
'hash', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
|
| 233 |
+
'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview',
|
| 234 |
+
'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print',
|
| 235 |
+
'property', 'range', 'repr', 'reversed', 'round', 'set', 'setattr',
|
| 236 |
+
'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple',
|
| 237 |
+
'type', 'vars', 'zip'), prefix=r'(?<!\.)', suffix=r'\b'),
|
| 238 |
+
Name.Builtin),
|
| 239 |
+
(r'(?<!\.)(self|Ellipsis|NotImplemented|cls)\b', Name.Builtin.Pseudo),
|
| 240 |
+
(words((
|
| 241 |
+
'ArithmeticError', 'AssertionError', 'AttributeError',
|
| 242 |
+
'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning',
|
| 243 |
+
'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError',
|
| 244 |
+
'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',
|
| 245 |
+
'ImportWarning', 'IndentationError', 'IndexError', 'KeyError',
|
| 246 |
+
'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',
|
| 247 |
+
'NotImplementedError', 'OSError', 'OverflowError',
|
| 248 |
+
'PendingDeprecationWarning', 'ReferenceError', 'ResourceWarning',
|
| 249 |
+
'RuntimeError', 'RuntimeWarning', 'StopIteration',
|
| 250 |
+
'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
|
| 251 |
+
'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
|
| 252 |
+
'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
|
| 253 |
+
'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError',
|
| 254 |
+
'Warning', 'WindowsError', 'ZeroDivisionError',
|
| 255 |
+
# new builtin exceptions from PEP 3151
|
| 256 |
+
'BlockingIOError', 'ChildProcessError', 'ConnectionError',
|
| 257 |
+
'BrokenPipeError', 'ConnectionAbortedError', 'ConnectionRefusedError',
|
| 258 |
+
'ConnectionResetError', 'FileExistsError', 'FileNotFoundError',
|
| 259 |
+
'InterruptedError', 'IsADirectoryError', 'NotADirectoryError',
|
| 260 |
+
'PermissionError', 'ProcessLookupError', 'TimeoutError',
|
| 261 |
+
# others new in Python 3
|
| 262 |
+
'StopAsyncIteration', 'ModuleNotFoundError', 'RecursionError'),
|
| 263 |
+
prefix=r'(?<!\.)', suffix=r'\b'),
|
| 264 |
+
Name.Exception),
|
| 265 |
+
],
|
| 266 |
+
'magicfuncs': [
|
| 267 |
+
(words((
|
| 268 |
+
'__abs__', '__add__', '__aenter__', '__aexit__', '__aiter__',
|
| 269 |
+
'__and__', '__anext__', '__await__', '__bool__', '__bytes__',
|
| 270 |
+
'__call__', '__complex__', '__contains__', '__del__', '__delattr__',
|
| 271 |
+
'__delete__', '__delitem__', '__dir__', '__divmod__', '__enter__',
|
| 272 |
+
'__eq__', '__exit__', '__float__', '__floordiv__', '__format__',
|
| 273 |
+
'__ge__', '__get__', '__getattr__', '__getattribute__',
|
| 274 |
+
'__getitem__', '__gt__', '__hash__', '__iadd__', '__iand__',
|
| 275 |
+
'__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__',
|
| 276 |
+
'__imul__', '__index__', '__init__', '__instancecheck__',
|
| 277 |
+
'__int__', '__invert__', '__ior__', '__ipow__', '__irshift__',
|
| 278 |
+
'__isub__', '__iter__', '__itruediv__', '__ixor__', '__le__',
|
| 279 |
+
'__len__', '__length_hint__', '__lshift__', '__lt__', '__matmul__',
|
| 280 |
+
'__missing__', '__mod__', '__mul__', '__ne__', '__neg__',
|
| 281 |
+
'__new__', '__next__', '__or__', '__pos__', '__pow__',
|
| 282 |
+
'__prepare__', '__radd__', '__rand__', '__rdivmod__', '__repr__',
|
| 283 |
+
'__reversed__', '__rfloordiv__', '__rlshift__', '__rmatmul__',
|
| 284 |
+
'__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__',
|
| 285 |
+
'__rrshift__', '__rshift__', '__rsub__', '__rtruediv__',
|
| 286 |
+
'__rxor__', '__set__', '__setattr__', '__setitem__', '__str__',
|
| 287 |
+
'__sub__', '__subclasscheck__', '__truediv__',
|
| 288 |
+
'__xor__'), suffix=r'\b'),
|
| 289 |
+
Name.Function.Magic),
|
| 290 |
+
],
|
| 291 |
+
'magicvars': [
|
| 292 |
+
(words((
|
| 293 |
+
'__annotations__', '__bases__', '__class__', '__closure__',
|
| 294 |
+
'__code__', '__defaults__', '__dict__', '__doc__', '__file__',
|
| 295 |
+
'__func__', '__globals__', '__kwdefaults__', '__module__',
|
| 296 |
+
'__mro__', '__name__', '__objclass__', '__qualname__',
|
| 297 |
+
'__self__', '__slots__', '__weakref__'), suffix=r'\b'),
|
| 298 |
+
Name.Variable.Magic),
|
| 299 |
+
],
|
| 300 |
+
'numbers': [
|
| 301 |
+
(r'(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)'
|
| 302 |
+
r'([eE][+-]?\d(?:_?\d)*)?', Number.Float),
|
| 303 |
+
(r'\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?', Number.Float),
|
| 304 |
+
(r'0[oO](?:_?[0-7])+', Number.Oct),
|
| 305 |
+
(r'0[bB](?:_?[01])+', Number.Bin),
|
| 306 |
+
(r'0[xX](?:_?[a-fA-F0-9])+', Number.Hex),
|
| 307 |
+
(r'\d(?:_?\d)*', Number.Integer),
|
| 308 |
+
],
|
| 309 |
+
'name': [
|
| 310 |
+
(r'@' + uni_name, Name.Decorator),
|
| 311 |
+
(r'@', Operator), # new matrix multiplication operator
|
| 312 |
+
(uni_name, Name),
|
| 313 |
+
],
|
| 314 |
+
'funcname': [
|
| 315 |
+
include('magicfuncs'),
|
| 316 |
+
(uni_name, Name.Function, '#pop'),
|
| 317 |
+
default('#pop'),
|
| 318 |
+
],
|
| 319 |
+
'classname': [
|
| 320 |
+
(uni_name, Name.Class, '#pop'),
|
| 321 |
+
],
|
| 322 |
+
'import': [
|
| 323 |
+
(r'(\s+)(as)(\s+)', bygroups(Text, Keyword, Text)),
|
| 324 |
+
(r'\.', Name.Namespace),
|
| 325 |
+
(uni_name, Name.Namespace),
|
| 326 |
+
(r'(\s*)(,)(\s*)', bygroups(Text, Operator, Text)),
|
| 327 |
+
default('#pop') # all else: go back
|
| 328 |
+
],
|
| 329 |
+
'fromimport': [
|
| 330 |
+
(r'(\s+)(import)\b', bygroups(Text, Keyword.Namespace), '#pop'),
|
| 331 |
+
(r'\.', Name.Namespace),
|
| 332 |
+
# if None occurs here, it's "raise x from None", since None can
|
| 333 |
+
# never be a module name
|
| 334 |
+
(r'None\b', Name.Builtin.Pseudo, '#pop'),
|
| 335 |
+
(uni_name, Name.Namespace),
|
| 336 |
+
default('#pop'),
|
| 337 |
+
],
|
| 338 |
+
'rfstringescape': [
|
| 339 |
+
(r'\{\{', String.Escape),
|
| 340 |
+
(r'\}\}', String.Escape),
|
| 341 |
+
],
|
| 342 |
+
'fstringescape': [
|
| 343 |
+
include('rfstringescape'),
|
| 344 |
+
include('stringescape'),
|
| 345 |
+
],
|
| 346 |
+
'stringescape': [
|
| 347 |
+
(r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
|
| 348 |
+
r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
|
| 349 |
+
],
|
| 350 |
+
'fstrings-single': fstring_rules(String.Single),
|
| 351 |
+
'fstrings-double': fstring_rules(String.Double),
|
| 352 |
+
'strings-single': innerstring_rules(String.Single),
|
| 353 |
+
'strings-double': innerstring_rules(String.Double),
|
| 354 |
+
'dqf': [
|
| 355 |
+
(r'"', String.Double, '#pop'),
|
| 356 |
+
(r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
|
| 357 |
+
include('fstrings-double')
|
| 358 |
+
],
|
| 359 |
+
'sqf': [
|
| 360 |
+
(r"'", String.Single, '#pop'),
|
| 361 |
+
(r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
|
| 362 |
+
include('fstrings-single')
|
| 363 |
+
],
|
| 364 |
+
'dqs': [
|
| 365 |
+
(r'"', String.Double, '#pop'),
|
| 366 |
+
(r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
|
| 367 |
+
include('strings-double')
|
| 368 |
+
],
|
| 369 |
+
'sqs': [
|
| 370 |
+
(r"'", String.Single, '#pop'),
|
| 371 |
+
(r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
|
| 372 |
+
include('strings-single')
|
| 373 |
+
],
|
| 374 |
+
'tdqf': [
|
| 375 |
+
(r'"""', String.Double, '#pop'),
|
| 376 |
+
include('fstrings-double'),
|
| 377 |
+
(r'\n', String.Double)
|
| 378 |
+
],
|
| 379 |
+
'tsqf': [
|
| 380 |
+
(r"'''", String.Single, '#pop'),
|
| 381 |
+
include('fstrings-single'),
|
| 382 |
+
(r'\n', String.Single)
|
| 383 |
+
],
|
| 384 |
+
'tdqs': [
|
| 385 |
+
(r'"""', String.Double, '#pop'),
|
| 386 |
+
include('strings-double'),
|
| 387 |
+
(r'\n', String.Double)
|
| 388 |
+
],
|
| 389 |
+
'tsqs': [
|
| 390 |
+
(r"'''", String.Single, '#pop'),
|
| 391 |
+
include('strings-single'),
|
| 392 |
+
(r'\n', String.Single)
|
| 393 |
+
],
|
| 394 |
+
}
|
| 395 |
+
|
| 396 |
+
def analyse_text(text):
|
| 397 |
+
return shebang_matches(text, r'pythonw?(3(\.\d)?)?') or \
|
| 398 |
+
'import ' in text[:1000]
|
| 399 |
+
|
| 400 |
+
|
| 401 |
+
Python3Lexer = PythonLexer
|
| 402 |
+
|
| 403 |
+
|
| 404 |
+
class Python2Lexer(RegexLexer):
|
| 405 |
+
"""
|
| 406 |
+
For `Python 2.x <http://www.python.org>`_ source code.
|
| 407 |
+
|
| 408 |
+
.. versionchanged:: 2.5
|
| 409 |
+
This class has been renamed from ``PythonLexer``. ``PythonLexer`` now
|
| 410 |
+
refers to the Python 3 variant. File name patterns like ``*.py`` have
|
| 411 |
+
been moved to Python 3 as well.
|
| 412 |
+
"""
|
| 413 |
+
|
| 414 |
+
name = 'Python 2.x'
|
| 415 |
+
aliases = ['python2', 'py2']
|
| 416 |
+
filenames = [] # now taken over by PythonLexer (3.x)
|
| 417 |
+
mimetypes = ['text/x-python2', 'application/x-python2']
|
| 418 |
+
|
| 419 |
+
def innerstring_rules(ttype):
|
| 420 |
+
return [
|
| 421 |
+
# the old style '%s' % (...) string formatting
|
| 422 |
+
(r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
|
| 423 |
+
'[hlL]?[E-GXc-giorsux%]', String.Interpol),
|
| 424 |
+
# backslashes, quotes and formatting signs must be parsed one at a time
|
| 425 |
+
(r'[^\\\'"%\n]+', ttype),
|
| 426 |
+
(r'[\'"\\]', ttype),
|
| 427 |
+
# unhandled string formatting sign
|
| 428 |
+
(r'%', ttype),
|
| 429 |
+
# newlines are an error (use "nl" state)
|
| 430 |
+
]
|
| 431 |
+
|
| 432 |
+
tokens = {
|
| 433 |
+
'root': [
|
| 434 |
+
(r'\n', Text),
|
| 435 |
+
(r'^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")',
|
| 436 |
+
bygroups(Text, String.Affix, String.Doc)),
|
| 437 |
+
(r"^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')",
|
| 438 |
+
bygroups(Text, String.Affix, String.Doc)),
|
| 439 |
+
(r'[^\S\n]+', Text),
|
| 440 |
+
(r'\A#!.+$', Comment.Hashbang),
|
| 441 |
+
(r'#.*$', Comment.Single),
|
| 442 |
+
(r'[]{}:(),;[]', Punctuation),
|
| 443 |
+
(r'\\\n', Text),
|
| 444 |
+
(r'\\', Text),
|
| 445 |
+
(r'(in|is|and|or|not)\b', Operator.Word),
|
| 446 |
+
(r'!=|==|<<|>>|[-~+/*%=<>&^|.]', Operator),
|
| 447 |
+
include('keywords'),
|
| 448 |
+
(r'(def)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'funcname'),
|
| 449 |
+
(r'(class)((?:\s|\\\s)+)', bygroups(Keyword, Text), 'classname'),
|
| 450 |
+
(r'(from)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
|
| 451 |
+
'fromimport'),
|
| 452 |
+
(r'(import)((?:\s|\\\s)+)', bygroups(Keyword.Namespace, Text),
|
| 453 |
+
'import'),
|
| 454 |
+
include('builtins'),
|
| 455 |
+
include('magicfuncs'),
|
| 456 |
+
include('magicvars'),
|
| 457 |
+
include('backtick'),
|
| 458 |
+
('([rR]|[uUbB][rR]|[rR][uUbB])(""")',
|
| 459 |
+
bygroups(String.Affix, String.Double), 'tdqs'),
|
| 460 |
+
("([rR]|[uUbB][rR]|[rR][uUbB])(''')",
|
| 461 |
+
bygroups(String.Affix, String.Single), 'tsqs'),
|
| 462 |
+
('([rR]|[uUbB][rR]|[rR][uUbB])(")',
|
| 463 |
+
bygroups(String.Affix, String.Double), 'dqs'),
|
| 464 |
+
("([rR]|[uUbB][rR]|[rR][uUbB])(')",
|
| 465 |
+
bygroups(String.Affix, String.Single), 'sqs'),
|
| 466 |
+
('([uUbB]?)(""")', bygroups(String.Affix, String.Double),
|
| 467 |
+
combined('stringescape', 'tdqs')),
|
| 468 |
+
("([uUbB]?)(''')", bygroups(String.Affix, String.Single),
|
| 469 |
+
combined('stringescape', 'tsqs')),
|
| 470 |
+
('([uUbB]?)(")', bygroups(String.Affix, String.Double),
|
| 471 |
+
combined('stringescape', 'dqs')),
|
| 472 |
+
("([uUbB]?)(')", bygroups(String.Affix, String.Single),
|
| 473 |
+
combined('stringescape', 'sqs')),
|
| 474 |
+
include('name'),
|
| 475 |
+
include('numbers'),
|
| 476 |
+
],
|
| 477 |
+
'keywords': [
|
| 478 |
+
(words((
|
| 479 |
+
'assert', 'break', 'continue', 'del', 'elif', 'else', 'except',
|
| 480 |
+
'exec', 'finally', 'for', 'global', 'if', 'lambda', 'pass',
|
| 481 |
+
'print', 'raise', 'return', 'try', 'while', 'yield',
|
| 482 |
+
'yield from', 'as', 'with'), suffix=r'\b'),
|
| 483 |
+
Keyword),
|
| 484 |
+
],
|
| 485 |
+
'builtins': [
|
| 486 |
+
(words((
|
| 487 |
+
'__import__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin',
|
| 488 |
+
'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod',
|
| 489 |
+
'cmp', 'coerce', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod',
|
| 490 |
+
'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float',
|
| 491 |
+
'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'hex', 'id',
|
| 492 |
+
'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len',
|
| 493 |
+
'list', 'locals', 'long', 'map', 'max', 'min', 'next', 'object',
|
| 494 |
+
'oct', 'open', 'ord', 'pow', 'property', 'range', 'raw_input', 'reduce',
|
| 495 |
+
'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
|
| 496 |
+
'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type',
|
| 497 |
+
'unichr', 'unicode', 'vars', 'xrange', 'zip'),
|
| 498 |
+
prefix=r'(?<!\.)', suffix=r'\b'),
|
| 499 |
+
Name.Builtin),
|
| 500 |
+
(r'(?<!\.)(self|None|Ellipsis|NotImplemented|False|True|cls'
|
| 501 |
+
r')\b', Name.Builtin.Pseudo),
|
| 502 |
+
(words((
|
| 503 |
+
'ArithmeticError', 'AssertionError', 'AttributeError',
|
| 504 |
+
'BaseException', 'DeprecationWarning', 'EOFError', 'EnvironmentError',
|
| 505 |
+
'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit',
|
| 506 |
+
'IOError', 'ImportError', 'ImportWarning', 'IndentationError',
|
| 507 |
+
'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError',
|
| 508 |
+
'MemoryError', 'NameError',
|
| 509 |
+
'NotImplementedError', 'OSError', 'OverflowError', 'OverflowWarning',
|
| 510 |
+
'PendingDeprecationWarning', 'ReferenceError',
|
| 511 |
+
'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration',
|
| 512 |
+
'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit',
|
| 513 |
+
'TabError', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
|
| 514 |
+
'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
|
| 515 |
+
'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError', 'Warning',
|
| 516 |
+
'WindowsError', 'ZeroDivisionError'), prefix=r'(?<!\.)', suffix=r'\b'),
|
| 517 |
+
Name.Exception),
|
| 518 |
+
],
|
| 519 |
+
'magicfuncs': [
|
| 520 |
+
(words((
|
| 521 |
+
'__abs__', '__add__', '__and__', '__call__', '__cmp__', '__coerce__',
|
| 522 |
+
'__complex__', '__contains__', '__del__', '__delattr__', '__delete__',
|
| 523 |
+
'__delitem__', '__delslice__', '__div__', '__divmod__', '__enter__',
|
| 524 |
+
'__eq__', '__exit__', '__float__', '__floordiv__', '__ge__', '__get__',
|
| 525 |
+
'__getattr__', '__getattribute__', '__getitem__', '__getslice__', '__gt__',
|
| 526 |
+
'__hash__', '__hex__', '__iadd__', '__iand__', '__idiv__', '__ifloordiv__',
|
| 527 |
+
'__ilshift__', '__imod__', '__imul__', '__index__', '__init__',
|
| 528 |
+
'__instancecheck__', '__int__', '__invert__', '__iop__', '__ior__',
|
| 529 |
+
'__ipow__', '__irshift__', '__isub__', '__iter__', '__itruediv__',
|
| 530 |
+
'__ixor__', '__le__', '__len__', '__long__', '__lshift__', '__lt__',
|
| 531 |
+
'__missing__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__',
|
| 532 |
+
'__nonzero__', '__oct__', '__op__', '__or__', '__pos__', '__pow__',
|
| 533 |
+
'__radd__', '__rand__', '__rcmp__', '__rdiv__', '__rdivmod__', '__repr__',
|
| 534 |
+
'__reversed__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__',
|
| 535 |
+
'__rop__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__',
|
| 536 |
+
'__rtruediv__', '__rxor__', '__set__', '__setattr__', '__setitem__',
|
| 537 |
+
'__setslice__', '__str__', '__sub__', '__subclasscheck__', '__truediv__',
|
| 538 |
+
'__unicode__', '__xor__'), suffix=r'\b'),
|
| 539 |
+
Name.Function.Magic),
|
| 540 |
+
],
|
| 541 |
+
'magicvars': [
|
| 542 |
+
(words((
|
| 543 |
+
'__bases__', '__class__', '__closure__', '__code__', '__defaults__',
|
| 544 |
+
'__dict__', '__doc__', '__file__', '__func__', '__globals__',
|
| 545 |
+
'__metaclass__', '__module__', '__mro__', '__name__', '__self__',
|
| 546 |
+
'__slots__', '__weakref__'),
|
| 547 |
+
suffix=r'\b'),
|
| 548 |
+
Name.Variable.Magic),
|
| 549 |
+
],
|
| 550 |
+
'numbers': [
|
| 551 |
+
(r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?', Number.Float),
|
| 552 |
+
(r'\d+[eE][+-]?[0-9]+j?', Number.Float),
|
| 553 |
+
(r'0[0-7]+j?', Number.Oct),
|
| 554 |
+
(r'0[bB][01]+', Number.Bin),
|
| 555 |
+
(r'0[xX][a-fA-F0-9]+', Number.Hex),
|
| 556 |
+
(r'\d+L', Number.Integer.Long),
|
| 557 |
+
(r'\d+j?', Number.Integer)
|
| 558 |
+
],
|
| 559 |
+
'backtick': [
|
| 560 |
+
('`.*?`', String.Backtick),
|
| 561 |
+
],
|
| 562 |
+
'name': [
|
| 563 |
+
(r'@[\w.]+', Name.Decorator),
|
| 564 |
+
(r'[a-zA-Z_]\w*', Name),
|
| 565 |
+
],
|
| 566 |
+
'funcname': [
|
| 567 |
+
include('magicfuncs'),
|
| 568 |
+
(r'[a-zA-Z_]\w*', Name.Function, '#pop'),
|
| 569 |
+
default('#pop'),
|
| 570 |
+
],
|
| 571 |
+
'classname': [
|
| 572 |
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
| 573 |
+
],
|
| 574 |
+
'import': [
|
| 575 |
+
(r'(?:[ \t]|\\\n)+', Text),
|
| 576 |
+
(r'as\b', Keyword.Namespace),
|
| 577 |
+
(r',', Operator),
|
| 578 |
+
(r'[a-zA-Z_][\w.]*', Name.Namespace),
|
| 579 |
+
default('#pop') # all else: go back
|
| 580 |
+
],
|
| 581 |
+
'fromimport': [
|
| 582 |
+
(r'(?:[ \t]|\\\n)+', Text),
|
| 583 |
+
(r'import\b', Keyword.Namespace, '#pop'),
|
| 584 |
+
# if None occurs here, it's "raise x from None", since None can
|
| 585 |
+
# never be a module name
|
| 586 |
+
(r'None\b', Name.Builtin.Pseudo, '#pop'),
|
| 587 |
+
# sadly, in "raise x from y" y will be highlighted as namespace too
|
| 588 |
+
(r'[a-zA-Z_.][\w.]*', Name.Namespace),
|
| 589 |
+
# anything else here also means "raise x from y" and is therefore
|
| 590 |
+
# not an error
|
| 591 |
+
default('#pop'),
|
| 592 |
+
],
|
| 593 |
+
'stringescape': [
|
| 594 |
+
(r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
|
| 595 |
+
r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
|
| 596 |
+
],
|
| 597 |
+
'strings-single': innerstring_rules(String.Single),
|
| 598 |
+
'strings-double': innerstring_rules(String.Double),
|
| 599 |
+
'dqs': [
|
| 600 |
+
(r'"', String.Double, '#pop'),
|
| 601 |
+
(r'\\\\|\\"|\\\n', String.Escape), # included here for raw strings
|
| 602 |
+
include('strings-double')
|
| 603 |
+
],
|
| 604 |
+
'sqs': [
|
| 605 |
+
(r"'", String.Single, '#pop'),
|
| 606 |
+
(r"\\\\|\\'|\\\n", String.Escape), # included here for raw strings
|
| 607 |
+
include('strings-single')
|
| 608 |
+
],
|
| 609 |
+
'tdqs': [
|
| 610 |
+
(r'"""', String.Double, '#pop'),
|
| 611 |
+
include('strings-double'),
|
| 612 |
+
(r'\n', String.Double)
|
| 613 |
+
],
|
| 614 |
+
'tsqs': [
|
| 615 |
+
(r"'''", String.Single, '#pop'),
|
| 616 |
+
include('strings-single'),
|
| 617 |
+
(r'\n', String.Single)
|
| 618 |
+
],
|
| 619 |
+
}
|
| 620 |
+
|
| 621 |
+
def analyse_text(text):
|
| 622 |
+
return shebang_matches(text, r'pythonw?2(\.\d)?')
|
| 623 |
+
|
| 624 |
+
|
| 625 |
+
class PythonConsoleLexer(Lexer):
|
| 626 |
+
"""
|
| 627 |
+
For Python console output or doctests, such as:
|
| 628 |
+
|
| 629 |
+
.. sourcecode:: pycon
|
| 630 |
+
|
| 631 |
+
>>> a = 'foo'
|
| 632 |
+
>>> print a
|
| 633 |
+
foo
|
| 634 |
+
>>> 1 / 0
|
| 635 |
+
Traceback (most recent call last):
|
| 636 |
+
File "<stdin>", line 1, in <module>
|
| 637 |
+
ZeroDivisionError: integer division or modulo by zero
|
| 638 |
+
|
| 639 |
+
Additional options:
|
| 640 |
+
|
| 641 |
+
`python3`
|
| 642 |
+
Use Python 3 lexer for code. Default is ``True``.
|
| 643 |
+
|
| 644 |
+
.. versionadded:: 1.0
|
| 645 |
+
.. versionchanged:: 2.5
|
| 646 |
+
Now defaults to ``True``.
|
| 647 |
+
"""
|
| 648 |
+
name = 'Python console session'
|
| 649 |
+
aliases = ['pycon']
|
| 650 |
+
mimetypes = ['text/x-python-doctest']
|
| 651 |
+
|
| 652 |
+
def __init__(self, **options):
|
| 653 |
+
self.python3 = get_bool_opt(options, 'python3', True)
|
| 654 |
+
Lexer.__init__(self, **options)
|
| 655 |
+
|
| 656 |
+
def get_tokens_unprocessed(self, text):
|
| 657 |
+
if self.python3:
|
| 658 |
+
pylexer = PythonLexer(**self.options)
|
| 659 |
+
tblexer = PythonTracebackLexer(**self.options)
|
| 660 |
+
else:
|
| 661 |
+
pylexer = Python2Lexer(**self.options)
|
| 662 |
+
tblexer = Python2TracebackLexer(**self.options)
|
| 663 |
+
|
| 664 |
+
curcode = ''
|
| 665 |
+
insertions = []
|
| 666 |
+
curtb = ''
|
| 667 |
+
tbindex = 0
|
| 668 |
+
tb = 0
|
| 669 |
+
for match in line_re.finditer(text):
|
| 670 |
+
line = match.group()
|
| 671 |
+
if line.startswith('>>> ') or line.startswith('... '):
|
| 672 |
+
tb = 0
|
| 673 |
+
insertions.append((len(curcode),
|
| 674 |
+
[(0, Generic.Prompt, line[:4])]))
|
| 675 |
+
curcode += line[4:]
|
| 676 |
+
elif line.rstrip() == '...' and not tb:
|
| 677 |
+
# only a new >>> prompt can end an exception block
|
| 678 |
+
# otherwise an ellipsis in place of the traceback frames
|
| 679 |
+
# will be mishandled
|
| 680 |
+
insertions.append((len(curcode),
|
| 681 |
+
[(0, Generic.Prompt, '...')]))
|
| 682 |
+
curcode += line[3:]
|
| 683 |
+
else:
|
| 684 |
+
if curcode:
|
| 685 |
+
yield from do_insertions(
|
| 686 |
+
insertions, pylexer.get_tokens_unprocessed(curcode))
|
| 687 |
+
curcode = ''
|
| 688 |
+
insertions = []
|
| 689 |
+
if (line.startswith('Traceback (most recent call last):') or
|
| 690 |
+
re.match(' File "[^"]+", line \\d+\\n$', line)):
|
| 691 |
+
tb = 1
|
| 692 |
+
curtb = line
|
| 693 |
+
tbindex = match.start()
|
| 694 |
+
elif line == 'KeyboardInterrupt\n':
|
| 695 |
+
yield match.start(), Name.Class, line
|
| 696 |
+
elif tb:
|
| 697 |
+
curtb += line
|
| 698 |
+
if not (line.startswith(' ') or line.strip() == '...'):
|
| 699 |
+
tb = 0
|
| 700 |
+
for i, t, v in tblexer.get_tokens_unprocessed(curtb):
|
| 701 |
+
yield tbindex+i, t, v
|
| 702 |
+
curtb = ''
|
| 703 |
+
else:
|
| 704 |
+
yield match.start(), Generic.Output, line
|
| 705 |
+
if curcode:
|
| 706 |
+
yield from do_insertions(insertions,
|
| 707 |
+
pylexer.get_tokens_unprocessed(curcode))
|
| 708 |
+
if curtb:
|
| 709 |
+
for i, t, v in tblexer.get_tokens_unprocessed(curtb):
|
| 710 |
+
yield tbindex+i, t, v
|
| 711 |
+
|
| 712 |
+
|
| 713 |
+
class PythonTracebackLexer(RegexLexer):
|
| 714 |
+
"""
|
| 715 |
+
For Python 3.x tracebacks, with support for chained exceptions.
|
| 716 |
+
|
| 717 |
+
.. versionadded:: 1.0
|
| 718 |
+
|
| 719 |
+
.. versionchanged:: 2.5
|
| 720 |
+
This is now the default ``PythonTracebackLexer``. It is still available
|
| 721 |
+
as the alias ``Python3TracebackLexer``.
|
| 722 |
+
"""
|
| 723 |
+
|
| 724 |
+
name = 'Python Traceback'
|
| 725 |
+
aliases = ['pytb', 'py3tb']
|
| 726 |
+
filenames = ['*.pytb', '*.py3tb']
|
| 727 |
+
mimetypes = ['text/x-python-traceback', 'text/x-python3-traceback']
|
| 728 |
+
|
| 729 |
+
tokens = {
|
| 730 |
+
'root': [
|
| 731 |
+
(r'\n', Text),
|
| 732 |
+
(r'^Traceback \(most recent call last\):\n', Generic.Traceback, 'intb'),
|
| 733 |
+
(r'^During handling of the above exception, another '
|
| 734 |
+
r'exception occurred:\n\n', Generic.Traceback),
|
| 735 |
+
(r'^The above exception was the direct cause of the '
|
| 736 |
+
r'following exception:\n\n', Generic.Traceback),
|
| 737 |
+
(r'^(?= File "[^"]+", line \d+)', Generic.Traceback, 'intb'),
|
| 738 |
+
(r'^.*\n', Other),
|
| 739 |
+
],
|
| 740 |
+
'intb': [
|
| 741 |
+
(r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)',
|
| 742 |
+
bygroups(Text, Name.Builtin, Text, Number, Text, Name, Text)),
|
| 743 |
+
(r'^( File )("[^"]+")(, line )(\d+)(\n)',
|
| 744 |
+
bygroups(Text, Name.Builtin, Text, Number, Text)),
|
| 745 |
+
(r'^( )(.+)(\n)',
|
| 746 |
+
bygroups(Text, using(PythonLexer), Text), 'markers'),
|
| 747 |
+
(r'^([ \t]*)(\.\.\.)(\n)',
|
| 748 |
+
bygroups(Text, Comment, Text)), # for doctests...
|
| 749 |
+
(r'^([^:]+)(: )(.+)(\n)',
|
| 750 |
+
bygroups(Generic.Error, Text, Name, Text), '#pop'),
|
| 751 |
+
(r'^([a-zA-Z_][\w.]*)(:?\n)',
|
| 752 |
+
bygroups(Generic.Error, Text), '#pop')
|
| 753 |
+
],
|
| 754 |
+
'markers': [
|
| 755 |
+
# Either `PEP 657 <https://www.python.org/dev/peps/pep-0657/>`
|
| 756 |
+
# error locations in Python 3.11+, or single-caret markers
|
| 757 |
+
# for syntax errors before that.
|
| 758 |
+
(r'^( {4,})([~^]+)(\n)',
|
| 759 |
+
bygroups(Text, Punctuation.Marker, Text),
|
| 760 |
+
'#pop'),
|
| 761 |
+
default('#pop'),
|
| 762 |
+
],
|
| 763 |
+
}
|
| 764 |
+
|
| 765 |
+
|
| 766 |
+
Python3TracebackLexer = PythonTracebackLexer
|
| 767 |
+
|
| 768 |
+
|
| 769 |
+
class Python2TracebackLexer(RegexLexer):
|
| 770 |
+
"""
|
| 771 |
+
For Python tracebacks.
|
| 772 |
+
|
| 773 |
+
.. versionadded:: 0.7
|
| 774 |
+
|
| 775 |
+
.. versionchanged:: 2.5
|
| 776 |
+
This class has been renamed from ``PythonTracebackLexer``.
|
| 777 |
+
``PythonTracebackLexer`` now refers to the Python 3 variant.
|
| 778 |
+
"""
|
| 779 |
+
|
| 780 |
+
name = 'Python 2.x Traceback'
|
| 781 |
+
aliases = ['py2tb']
|
| 782 |
+
filenames = ['*.py2tb']
|
| 783 |
+
mimetypes = ['text/x-python2-traceback']
|
| 784 |
+
|
| 785 |
+
tokens = {
|
| 786 |
+
'root': [
|
| 787 |
+
# Cover both (most recent call last) and (innermost last)
|
| 788 |
+
# The optional ^C allows us to catch keyboard interrupt signals.
|
| 789 |
+
(r'^(\^C)?(Traceback.*\n)',
|
| 790 |
+
bygroups(Text, Generic.Traceback), 'intb'),
|
| 791 |
+
# SyntaxError starts with this.
|
| 792 |
+
(r'^(?= File "[^"]+", line \d+)', Generic.Traceback, 'intb'),
|
| 793 |
+
(r'^.*\n', Other),
|
| 794 |
+
],
|
| 795 |
+
'intb': [
|
| 796 |
+
(r'^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)',
|
| 797 |
+
bygroups(Text, Name.Builtin, Text, Number, Text, Name, Text)),
|
| 798 |
+
(r'^( File )("[^"]+")(, line )(\d+)(\n)',
|
| 799 |
+
bygroups(Text, Name.Builtin, Text, Number, Text)),
|
| 800 |
+
(r'^( )(.+)(\n)',
|
| 801 |
+
bygroups(Text, using(Python2Lexer), Text), 'marker'),
|
| 802 |
+
(r'^([ \t]*)(\.\.\.)(\n)',
|
| 803 |
+
bygroups(Text, Comment, Text)), # for doctests...
|
| 804 |
+
(r'^([^:]+)(: )(.+)(\n)',
|
| 805 |
+
bygroups(Generic.Error, Text, Name, Text), '#pop'),
|
| 806 |
+
(r'^([a-zA-Z_]\w*)(:?\n)',
|
| 807 |
+
bygroups(Generic.Error, Text), '#pop')
|
| 808 |
+
],
|
| 809 |
+
'marker': [
|
| 810 |
+
# For syntax errors.
|
| 811 |
+
(r'( {4,})(\^)', bygroups(Text, Punctuation.Marker), '#pop'),
|
| 812 |
+
default('#pop'),
|
| 813 |
+
],
|
| 814 |
+
}
|
| 815 |
+
|
| 816 |
+
|
| 817 |
+
class CythonLexer(RegexLexer):
|
| 818 |
+
"""
|
| 819 |
+
For Pyrex and `Cython <http://cython.org>`_ source code.
|
| 820 |
+
|
| 821 |
+
.. versionadded:: 1.1
|
| 822 |
+
"""
|
| 823 |
+
|
| 824 |
+
name = 'Cython'
|
| 825 |
+
aliases = ['cython', 'pyx', 'pyrex']
|
| 826 |
+
filenames = ['*.pyx', '*.pxd', '*.pxi']
|
| 827 |
+
mimetypes = ['text/x-cython', 'application/x-cython']
|
| 828 |
+
|
| 829 |
+
tokens = {
|
| 830 |
+
'root': [
|
| 831 |
+
(r'\n', Text),
|
| 832 |
+
(r'^(\s*)("""(?:.|\n)*?""")', bygroups(Text, String.Doc)),
|
| 833 |
+
(r"^(\s*)('''(?:.|\n)*?''')", bygroups(Text, String.Doc)),
|
| 834 |
+
(r'[^\S\n]+', Text),
|
| 835 |
+
(r'#.*$', Comment),
|
| 836 |
+
(r'[]{}:(),;[]', Punctuation),
|
| 837 |
+
(r'\\\n', Text),
|
| 838 |
+
(r'\\', Text),
|
| 839 |
+
(r'(in|is|and|or|not)\b', Operator.Word),
|
| 840 |
+
(r'(<)([a-zA-Z0-9.?]+)(>)',
|
| 841 |
+
bygroups(Punctuation, Keyword.Type, Punctuation)),
|
| 842 |
+
(r'!=|==|<<|>>|[-~+/*%=<>&^|.?]', Operator),
|
| 843 |
+
(r'(from)(\d+)(<=)(\s+)(<)(\d+)(:)',
|
| 844 |
+
bygroups(Keyword, Number.Integer, Operator, Name, Operator,
|
| 845 |
+
Name, Punctuation)),
|
| 846 |
+
include('keywords'),
|
| 847 |
+
(r'(def|property)(\s+)', bygroups(Keyword, Text), 'funcname'),
|
| 848 |
+
(r'(cp?def)(\s+)', bygroups(Keyword, Text), 'cdef'),
|
| 849 |
+
# (should actually start a block with only cdefs)
|
| 850 |
+
(r'(cdef)(:)', bygroups(Keyword, Punctuation)),
|
| 851 |
+
(r'(class|struct)(\s+)', bygroups(Keyword, Text), 'classname'),
|
| 852 |
+
(r'(from)(\s+)', bygroups(Keyword, Text), 'fromimport'),
|
| 853 |
+
(r'(c?import)(\s+)', bygroups(Keyword, Text), 'import'),
|
| 854 |
+
include('builtins'),
|
| 855 |
+
include('backtick'),
|
| 856 |
+
('(?:[rR]|[uU][rR]|[rR][uU])"""', String, 'tdqs'),
|
| 857 |
+
("(?:[rR]|[uU][rR]|[rR][uU])'''", String, 'tsqs'),
|
| 858 |
+
('(?:[rR]|[uU][rR]|[rR][uU])"', String, 'dqs'),
|
| 859 |
+
("(?:[rR]|[uU][rR]|[rR][uU])'", String, 'sqs'),
|
| 860 |
+
('[uU]?"""', String, combined('stringescape', 'tdqs')),
|
| 861 |
+
("[uU]?'''", String, combined('stringescape', 'tsqs')),
|
| 862 |
+
('[uU]?"', String, combined('stringescape', 'dqs')),
|
| 863 |
+
("[uU]?'", String, combined('stringescape', 'sqs')),
|
| 864 |
+
include('name'),
|
| 865 |
+
include('numbers'),
|
| 866 |
+
],
|
| 867 |
+
'keywords': [
|
| 868 |
+
(words((
|
| 869 |
+
'assert', 'async', 'await', 'break', 'by', 'continue', 'ctypedef', 'del', 'elif',
|
| 870 |
+
'else', 'except', 'except?', 'exec', 'finally', 'for', 'fused', 'gil',
|
| 871 |
+
'global', 'if', 'include', 'lambda', 'nogil', 'pass', 'print',
|
| 872 |
+
'raise', 'return', 'try', 'while', 'yield', 'as', 'with'), suffix=r'\b'),
|
| 873 |
+
Keyword),
|
| 874 |
+
(r'(DEF|IF|ELIF|ELSE)\b', Comment.Preproc),
|
| 875 |
+
],
|
| 876 |
+
'builtins': [
|
| 877 |
+
(words((
|
| 878 |
+
'__import__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bint',
|
| 879 |
+
'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr',
|
| 880 |
+
'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'delattr',
|
| 881 |
+
'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit',
|
| 882 |
+
'file', 'filter', 'float', 'frozenset', 'getattr', 'globals',
|
| 883 |
+
'hasattr', 'hash', 'hex', 'id', 'input', 'int', 'intern', 'isinstance',
|
| 884 |
+
'issubclass', 'iter', 'len', 'list', 'locals', 'long', 'map', 'max',
|
| 885 |
+
'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'Py_ssize_t',
|
| 886 |
+
'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed',
|
| 887 |
+
'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod',
|
| 888 |
+
'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'unsigned',
|
| 889 |
+
'vars', 'xrange', 'zip'), prefix=r'(?<!\.)', suffix=r'\b'),
|
| 890 |
+
Name.Builtin),
|
| 891 |
+
(r'(?<!\.)(self|None|Ellipsis|NotImplemented|False|True|NULL'
|
| 892 |
+
r')\b', Name.Builtin.Pseudo),
|
| 893 |
+
(words((
|
| 894 |
+
'ArithmeticError', 'AssertionError', 'AttributeError',
|
| 895 |
+
'BaseException', 'DeprecationWarning', 'EOFError', 'EnvironmentError',
|
| 896 |
+
'Exception', 'FloatingPointError', 'FutureWarning', 'GeneratorExit',
|
| 897 |
+
'IOError', 'ImportError', 'ImportWarning', 'IndentationError',
|
| 898 |
+
'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError',
|
| 899 |
+
'MemoryError', 'NameError', 'NotImplemented', 'NotImplementedError',
|
| 900 |
+
'OSError', 'OverflowError', 'OverflowWarning',
|
| 901 |
+
'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError',
|
| 902 |
+
'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError',
|
| 903 |
+
'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError',
|
| 904 |
+
'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',
|
| 905 |
+
'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',
|
| 906 |
+
'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning',
|
| 907 |
+
'ZeroDivisionError'), prefix=r'(?<!\.)', suffix=r'\b'),
|
| 908 |
+
Name.Exception),
|
| 909 |
+
],
|
| 910 |
+
'numbers': [
|
| 911 |
+
(r'(\d+\.?\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float),
|
| 912 |
+
(r'0\d+', Number.Oct),
|
| 913 |
+
(r'0[xX][a-fA-F0-9]+', Number.Hex),
|
| 914 |
+
(r'\d+L', Number.Integer.Long),
|
| 915 |
+
(r'\d+', Number.Integer)
|
| 916 |
+
],
|
| 917 |
+
'backtick': [
|
| 918 |
+
('`.*?`', String.Backtick),
|
| 919 |
+
],
|
| 920 |
+
'name': [
|
| 921 |
+
(r'@\w+', Name.Decorator),
|
| 922 |
+
(r'[a-zA-Z_]\w*', Name),
|
| 923 |
+
],
|
| 924 |
+
'funcname': [
|
| 925 |
+
(r'[a-zA-Z_]\w*', Name.Function, '#pop')
|
| 926 |
+
],
|
| 927 |
+
'cdef': [
|
| 928 |
+
(r'(public|readonly|extern|api|inline)\b', Keyword.Reserved),
|
| 929 |
+
(r'(struct|enum|union|class)\b', Keyword),
|
| 930 |
+
(r'([a-zA-Z_]\w*)(\s*)(?=[(:#=]|$)',
|
| 931 |
+
bygroups(Name.Function, Text), '#pop'),
|
| 932 |
+
(r'([a-zA-Z_]\w*)(\s*)(,)',
|
| 933 |
+
bygroups(Name.Function, Text, Punctuation)),
|
| 934 |
+
(r'from\b', Keyword, '#pop'),
|
| 935 |
+
(r'as\b', Keyword),
|
| 936 |
+
(r':', Punctuation, '#pop'),
|
| 937 |
+
(r'(?=["\'])', Text, '#pop'),
|
| 938 |
+
(r'[a-zA-Z_]\w*', Keyword.Type),
|
| 939 |
+
(r'.', Text),
|
| 940 |
+
],
|
| 941 |
+
'classname': [
|
| 942 |
+
(r'[a-zA-Z_]\w*', Name.Class, '#pop')
|
| 943 |
+
],
|
| 944 |
+
'import': [
|
| 945 |
+
(r'(\s+)(as)(\s+)', bygroups(Text, Keyword, Text)),
|
| 946 |
+
(r'[a-zA-Z_][\w.]*', Name.Namespace),
|
| 947 |
+
(r'(\s*)(,)(\s*)', bygroups(Text, Operator, Text)),
|
| 948 |
+
default('#pop') # all else: go back
|
| 949 |
+
],
|
| 950 |
+
'fromimport': [
|
| 951 |
+
(r'(\s+)(c?import)\b', bygroups(Text, Keyword), '#pop'),
|
| 952 |
+
(r'[a-zA-Z_.][\w.]*', Name.Namespace),
|
| 953 |
+
# ``cdef foo from "header"``, or ``for foo from 0 < i < 10``
|
| 954 |
+
default('#pop'),
|
| 955 |
+
],
|
| 956 |
+
'stringescape': [
|
| 957 |
+
(r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
|
| 958 |
+
r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
|
| 959 |
+
],
|
| 960 |
+
'strings': [
|
| 961 |
+
(r'%(\([a-zA-Z0-9]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
|
| 962 |
+
'[hlL]?[E-GXc-giorsux%]', String.Interpol),
|
| 963 |
+
(r'[^\\\'"%\n]+', String),
|
| 964 |
+
# quotes, percents and backslashes must be parsed one at a time
|
| 965 |
+
(r'[\'"\\]', String),
|
| 966 |
+
# unhandled string formatting sign
|
| 967 |
+
(r'%', String)
|
| 968 |
+
# newlines are an error (use "nl" state)
|
| 969 |
+
],
|
| 970 |
+
'nl': [
|
| 971 |
+
(r'\n', String)
|
| 972 |
+
],
|
| 973 |
+
'dqs': [
|
| 974 |
+
(r'"', String, '#pop'),
|
| 975 |
+
(r'\\\\|\\"|\\\n', String.Escape), # included here again for raw strings
|
| 976 |
+
include('strings')
|
| 977 |
+
],
|
| 978 |
+
'sqs': [
|
| 979 |
+
(r"'", String, '#pop'),
|
| 980 |
+
(r"\\\\|\\'|\\\n", String.Escape), # included here again for raw strings
|
| 981 |
+
include('strings')
|
| 982 |
+
],
|
| 983 |
+
'tdqs': [
|
| 984 |
+
(r'"""', String, '#pop'),
|
| 985 |
+
include('strings'),
|
| 986 |
+
include('nl')
|
| 987 |
+
],
|
| 988 |
+
'tsqs': [
|
| 989 |
+
(r"'''", String, '#pop'),
|
| 990 |
+
include('strings'),
|
| 991 |
+
include('nl')
|
| 992 |
+
],
|
| 993 |
+
}
|
| 994 |
+
|
| 995 |
+
|
| 996 |
+
class DgLexer(RegexLexer):
|
| 997 |
+
"""
|
| 998 |
+
Lexer for `dg <http://pyos.github.com/dg>`_,
|
| 999 |
+
a functional and object-oriented programming language
|
| 1000 |
+
running on the CPython 3 VM.
|
| 1001 |
+
|
| 1002 |
+
.. versionadded:: 1.6
|
| 1003 |
+
"""
|
| 1004 |
+
name = 'dg'
|
| 1005 |
+
aliases = ['dg']
|
| 1006 |
+
filenames = ['*.dg']
|
| 1007 |
+
mimetypes = ['text/x-dg']
|
| 1008 |
+
|
| 1009 |
+
tokens = {
|
| 1010 |
+
'root': [
|
| 1011 |
+
(r'\s+', Text),
|
| 1012 |
+
(r'#.*?$', Comment.Single),
|
| 1013 |
+
|
| 1014 |
+
(r'(?i)0b[01]+', Number.Bin),
|
| 1015 |
+
(r'(?i)0o[0-7]+', Number.Oct),
|
| 1016 |
+
(r'(?i)0x[0-9a-f]+', Number.Hex),
|
| 1017 |
+
(r'(?i)[+-]?[0-9]+\.[0-9]+(e[+-]?[0-9]+)?j?', Number.Float),
|
| 1018 |
+
(r'(?i)[+-]?[0-9]+e[+-]?\d+j?', Number.Float),
|
| 1019 |
+
(r'(?i)[+-]?[0-9]+j?', Number.Integer),
|
| 1020 |
+
|
| 1021 |
+
(r"(?i)(br|r?b?)'''", String, combined('stringescape', 'tsqs', 'string')),
|
| 1022 |
+
(r'(?i)(br|r?b?)"""', String, combined('stringescape', 'tdqs', 'string')),
|
| 1023 |
+
(r"(?i)(br|r?b?)'", String, combined('stringescape', 'sqs', 'string')),
|
| 1024 |
+
(r'(?i)(br|r?b?)"', String, combined('stringescape', 'dqs', 'string')),
|
| 1025 |
+
|
| 1026 |
+
(r"`\w+'*`", Operator),
|
| 1027 |
+
(r'\b(and|in|is|or|where)\b', Operator.Word),
|
| 1028 |
+
(r'[!$%&*+\-./:<-@\\^|~;,]+', Operator),
|
| 1029 |
+
|
| 1030 |
+
(words((
|
| 1031 |
+
'bool', 'bytearray', 'bytes', 'classmethod', 'complex', 'dict', 'dict\'',
|
| 1032 |
+
'float', 'frozenset', 'int', 'list', 'list\'', 'memoryview', 'object',
|
| 1033 |
+
'property', 'range', 'set', 'set\'', 'slice', 'staticmethod', 'str',
|
| 1034 |
+
'super', 'tuple', 'tuple\'', 'type'),
|
| 1035 |
+
prefix=r'(?<!\.)', suffix=r'(?![\'\w])'),
|
| 1036 |
+
Name.Builtin),
|
| 1037 |
+
(words((
|
| 1038 |
+
'__import__', 'abs', 'all', 'any', 'bin', 'bind', 'chr', 'cmp', 'compile',
|
| 1039 |
+
'complex', 'delattr', 'dir', 'divmod', 'drop', 'dropwhile', 'enumerate',
|
| 1040 |
+
'eval', 'exhaust', 'filter', 'flip', 'foldl1?', 'format', 'fst',
|
| 1041 |
+
'getattr', 'globals', 'hasattr', 'hash', 'head', 'hex', 'id', 'init',
|
| 1042 |
+
'input', 'isinstance', 'issubclass', 'iter', 'iterate', 'last', 'len',
|
| 1043 |
+
'locals', 'map', 'max', 'min', 'next', 'oct', 'open', 'ord', 'pow',
|
| 1044 |
+
'print', 'repr', 'reversed', 'round', 'setattr', 'scanl1?', 'snd',
|
| 1045 |
+
'sorted', 'sum', 'tail', 'take', 'takewhile', 'vars', 'zip'),
|
| 1046 |
+
prefix=r'(?<!\.)', suffix=r'(?![\'\w])'),
|
| 1047 |
+
Name.Builtin),
|
| 1048 |
+
(r"(?<!\.)(self|Ellipsis|NotImplemented|None|True|False)(?!['\w])",
|
| 1049 |
+
Name.Builtin.Pseudo),
|
| 1050 |
+
|
| 1051 |
+
(r"(?<!\.)[A-Z]\w*(Error|Exception|Warning)'*(?!['\w])",
|
| 1052 |
+
Name.Exception),
|
| 1053 |
+
(r"(?<!\.)(Exception|GeneratorExit|KeyboardInterrupt|StopIteration|"
|
| 1054 |
+
r"SystemExit)(?!['\w])", Name.Exception),
|
| 1055 |
+
|
| 1056 |
+
(r"(?<![\w.])(except|finally|for|if|import|not|otherwise|raise|"
|
| 1057 |
+
r"subclass|while|with|yield)(?!['\w])", Keyword.Reserved),
|
| 1058 |
+
|
| 1059 |
+
(r"[A-Z_]+'*(?!['\w])", Name),
|
| 1060 |
+
(r"[A-Z]\w+'*(?!['\w])", Keyword.Type),
|
| 1061 |
+
(r"\w+'*", Name),
|
| 1062 |
+
|
| 1063 |
+
(r'[()]', Punctuation),
|
| 1064 |
+
(r'.', Error),
|
| 1065 |
+
],
|
| 1066 |
+
'stringescape': [
|
| 1067 |
+
(r'\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|'
|
| 1068 |
+
r'U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})', String.Escape)
|
| 1069 |
+
],
|
| 1070 |
+
'string': [
|
| 1071 |
+
(r'%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?'
|
| 1072 |
+
'[hlL]?[E-GXc-giorsux%]', String.Interpol),
|
| 1073 |
+
(r'[^\\\'"%\n]+', String),
|
| 1074 |
+
# quotes, percents and backslashes must be parsed one at a time
|
| 1075 |
+
(r'[\'"\\]', String),
|
| 1076 |
+
# unhandled string formatting sign
|
| 1077 |
+
(r'%', String),
|
| 1078 |
+
(r'\n', String)
|
| 1079 |
+
],
|
| 1080 |
+
'dqs': [
|
| 1081 |
+
(r'"', String, '#pop')
|
| 1082 |
+
],
|
| 1083 |
+
'sqs': [
|
| 1084 |
+
(r"'", String, '#pop')
|
| 1085 |
+
],
|
| 1086 |
+
'tdqs': [
|
| 1087 |
+
(r'"""', String, '#pop')
|
| 1088 |
+
],
|
| 1089 |
+
'tsqs': [
|
| 1090 |
+
(r"'''", String, '#pop')
|
| 1091 |
+
],
|
| 1092 |
+
}
|
| 1093 |
+
|
| 1094 |
+
|
| 1095 |
+
class NumPyLexer(PythonLexer):
|
| 1096 |
+
"""
|
| 1097 |
+
A Python lexer recognizing Numerical Python builtins.
|
| 1098 |
+
|
| 1099 |
+
.. versionadded:: 0.10
|
| 1100 |
+
"""
|
| 1101 |
+
|
| 1102 |
+
name = 'NumPy'
|
| 1103 |
+
aliases = ['numpy']
|
| 1104 |
+
|
| 1105 |
+
# override the mimetypes to not inherit them from python
|
| 1106 |
+
mimetypes = []
|
| 1107 |
+
filenames = []
|
| 1108 |
+
|
| 1109 |
+
EXTRA_KEYWORDS = {
|
| 1110 |
+
'abs', 'absolute', 'accumulate', 'add', 'alen', 'all', 'allclose',
|
| 1111 |
+
'alltrue', 'alterdot', 'amax', 'amin', 'angle', 'any', 'append',
|
| 1112 |
+
'apply_along_axis', 'apply_over_axes', 'arange', 'arccos', 'arccosh',
|
| 1113 |
+
'arcsin', 'arcsinh', 'arctan', 'arctan2', 'arctanh', 'argmax', 'argmin',
|
| 1114 |
+
'argsort', 'argwhere', 'around', 'array', 'array2string', 'array_equal',
|
| 1115 |
+
'array_equiv', 'array_repr', 'array_split', 'array_str', 'arrayrange',
|
| 1116 |
+
'asanyarray', 'asarray', 'asarray_chkfinite', 'ascontiguousarray',
|
| 1117 |
+
'asfarray', 'asfortranarray', 'asmatrix', 'asscalar', 'astype',
|
| 1118 |
+
'atleast_1d', 'atleast_2d', 'atleast_3d', 'average', 'bartlett',
|
| 1119 |
+
'base_repr', 'beta', 'binary_repr', 'bincount', 'binomial',
|
| 1120 |
+
'bitwise_and', 'bitwise_not', 'bitwise_or', 'bitwise_xor', 'blackman',
|
| 1121 |
+
'bmat', 'broadcast', 'byte_bounds', 'bytes', 'byteswap', 'c_',
|
| 1122 |
+
'can_cast', 'ceil', 'choose', 'clip', 'column_stack', 'common_type',
|
| 1123 |
+
'compare_chararrays', 'compress', 'concatenate', 'conj', 'conjugate',
|
| 1124 |
+
'convolve', 'copy', 'corrcoef', 'correlate', 'cos', 'cosh', 'cov',
|
| 1125 |
+
'cross', 'cumprod', 'cumproduct', 'cumsum', 'delete', 'deprecate',
|
| 1126 |
+
'diag', 'diagflat', 'diagonal', 'diff', 'digitize', 'disp', 'divide',
|
| 1127 |
+
'dot', 'dsplit', 'dstack', 'dtype', 'dump', 'dumps', 'ediff1d', 'empty',
|
| 1128 |
+
'empty_like', 'equal', 'exp', 'expand_dims', 'expm1', 'extract', 'eye',
|
| 1129 |
+
'fabs', 'fastCopyAndTranspose', 'fft', 'fftfreq', 'fftshift', 'fill',
|
| 1130 |
+
'finfo', 'fix', 'flat', 'flatnonzero', 'flatten', 'fliplr', 'flipud',
|
| 1131 |
+
'floor', 'floor_divide', 'fmod', 'frexp', 'fromarrays', 'frombuffer',
|
| 1132 |
+
'fromfile', 'fromfunction', 'fromiter', 'frompyfunc', 'fromstring',
|
| 1133 |
+
'generic', 'get_array_wrap', 'get_include', 'get_numarray_include',
|
| 1134 |
+
'get_numpy_include', 'get_printoptions', 'getbuffer', 'getbufsize',
|
| 1135 |
+
'geterr', 'geterrcall', 'geterrobj', 'getfield', 'gradient', 'greater',
|
| 1136 |
+
'greater_equal', 'gumbel', 'hamming', 'hanning', 'histogram',
|
| 1137 |
+
'histogram2d', 'histogramdd', 'hsplit', 'hstack', 'hypot', 'i0',
|
| 1138 |
+
'identity', 'ifft', 'imag', 'index_exp', 'indices', 'inf', 'info',
|
| 1139 |
+
'inner', 'insert', 'int_asbuffer', 'interp', 'intersect1d',
|
| 1140 |
+
'intersect1d_nu', 'inv', 'invert', 'iscomplex', 'iscomplexobj',
|
| 1141 |
+
'isfinite', 'isfortran', 'isinf', 'isnan', 'isneginf', 'isposinf',
|
| 1142 |
+
'isreal', 'isrealobj', 'isscalar', 'issctype', 'issubclass_',
|
| 1143 |
+
'issubdtype', 'issubsctype', 'item', 'itemset', 'iterable', 'ix_',
|
| 1144 |
+
'kaiser', 'kron', 'ldexp', 'left_shift', 'less', 'less_equal', 'lexsort',
|
| 1145 |
+
'linspace', 'load', 'loads', 'loadtxt', 'log', 'log10', 'log1p', 'log2',
|
| 1146 |
+
'logical_and', 'logical_not', 'logical_or', 'logical_xor', 'logspace',
|
| 1147 |
+
'lstsq', 'mat', 'matrix', 'max', 'maximum', 'maximum_sctype',
|
| 1148 |
+
'may_share_memory', 'mean', 'median', 'meshgrid', 'mgrid', 'min',
|
| 1149 |
+
'minimum', 'mintypecode', 'mod', 'modf', 'msort', 'multiply', 'nan',
|
| 1150 |
+
'nan_to_num', 'nanargmax', 'nanargmin', 'nanmax', 'nanmin', 'nansum',
|
| 1151 |
+
'ndenumerate', 'ndim', 'ndindex', 'negative', 'newaxis', 'newbuffer',
|
| 1152 |
+
'newbyteorder', 'nonzero', 'not_equal', 'obj2sctype', 'ogrid', 'ones',
|
| 1153 |
+
'ones_like', 'outer', 'permutation', 'piecewise', 'pinv', 'pkgload',
|
| 1154 |
+
'place', 'poisson', 'poly', 'poly1d', 'polyadd', 'polyder', 'polydiv',
|
| 1155 |
+
'polyfit', 'polyint', 'polymul', 'polysub', 'polyval', 'power', 'prod',
|
| 1156 |
+
'product', 'ptp', 'put', 'putmask', 'r_', 'randint', 'random_integers',
|
| 1157 |
+
'random_sample', 'ranf', 'rank', 'ravel', 'real', 'real_if_close',
|
| 1158 |
+
'recarray', 'reciprocal', 'reduce', 'remainder', 'repeat', 'require',
|
| 1159 |
+
'reshape', 'resize', 'restoredot', 'right_shift', 'rint', 'roll',
|
| 1160 |
+
'rollaxis', 'roots', 'rot90', 'round', 'round_', 'row_stack', 's_',
|
| 1161 |
+
'sample', 'savetxt', 'sctype2char', 'searchsorted', 'seed', 'select',
|
| 1162 |
+
'set_numeric_ops', 'set_printoptions', 'set_string_function',
|
| 1163 |
+
'setbufsize', 'setdiff1d', 'seterr', 'seterrcall', 'seterrobj',
|
| 1164 |
+
'setfield', 'setflags', 'setmember1d', 'setxor1d', 'shape',
|
| 1165 |
+
'show_config', 'shuffle', 'sign', 'signbit', 'sin', 'sinc', 'sinh',
|
| 1166 |
+
'size', 'slice', 'solve', 'sometrue', 'sort', 'sort_complex', 'source',
|
| 1167 |
+
'split', 'sqrt', 'square', 'squeeze', 'standard_normal', 'std',
|
| 1168 |
+
'subtract', 'sum', 'svd', 'swapaxes', 'take', 'tan', 'tanh', 'tensordot',
|
| 1169 |
+
'test', 'tile', 'tofile', 'tolist', 'tostring', 'trace', 'transpose',
|
| 1170 |
+
'trapz', 'tri', 'tril', 'trim_zeros', 'triu', 'true_divide', 'typeDict',
|
| 1171 |
+
'typename', 'uniform', 'union1d', 'unique', 'unique1d', 'unravel_index',
|
| 1172 |
+
'unwrap', 'vander', 'var', 'vdot', 'vectorize', 'view', 'vonmises',
|
| 1173 |
+
'vsplit', 'vstack', 'weibull', 'where', 'who', 'zeros', 'zeros_like'
|
| 1174 |
+
}
|
| 1175 |
+
|
| 1176 |
+
def get_tokens_unprocessed(self, text):
|
| 1177 |
+
for index, token, value in \
|
| 1178 |
+
PythonLexer.get_tokens_unprocessed(self, text):
|
| 1179 |
+
if token is Name and value in self.EXTRA_KEYWORDS:
|
| 1180 |
+
yield index, Keyword.Pseudo, value
|
| 1181 |
+
else:
|
| 1182 |
+
yield index, token, value
|
| 1183 |
+
|
| 1184 |
+
def analyse_text(text):
|
| 1185 |
+
ltext = text[:1000]
|
| 1186 |
+
return (shebang_matches(text, r'pythonw?(3(\.\d)?)?') or
|
| 1187 |
+
'import ' in ltext) \
|
| 1188 |
+
and ('import numpy' in ltext or 'from numpy import' in ltext)
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
pygments.styles
|
| 3 |
+
~~~~~~~~~~~~~~~
|
| 4 |
+
|
| 5 |
+
Contains built-in styles.
|
| 6 |
+
|
| 7 |
+
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
|
| 8 |
+
:license: BSD, see LICENSE for details.
|
| 9 |
+
"""
|
| 10 |
+
|
| 11 |
+
from pip._vendor.pygments.plugin import find_plugin_styles
|
| 12 |
+
from pip._vendor.pygments.util import ClassNotFound
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
#: Maps style names to 'submodule::classname'.
|
| 16 |
+
STYLE_MAP = {
|
| 17 |
+
'default': 'default::DefaultStyle',
|
| 18 |
+
'emacs': 'emacs::EmacsStyle',
|
| 19 |
+
'friendly': 'friendly::FriendlyStyle',
|
| 20 |
+
'friendly_grayscale': 'friendly_grayscale::FriendlyGrayscaleStyle',
|
| 21 |
+
'colorful': 'colorful::ColorfulStyle',
|
| 22 |
+
'autumn': 'autumn::AutumnStyle',
|
| 23 |
+
'murphy': 'murphy::MurphyStyle',
|
| 24 |
+
'manni': 'manni::ManniStyle',
|
| 25 |
+
'material': 'material::MaterialStyle',
|
| 26 |
+
'monokai': 'monokai::MonokaiStyle',
|
| 27 |
+
'perldoc': 'perldoc::PerldocStyle',
|
| 28 |
+
'pastie': 'pastie::PastieStyle',
|
| 29 |
+
'borland': 'borland::BorlandStyle',
|
| 30 |
+
'trac': 'trac::TracStyle',
|
| 31 |
+
'native': 'native::NativeStyle',
|
| 32 |
+
'fruity': 'fruity::FruityStyle',
|
| 33 |
+
'bw': 'bw::BlackWhiteStyle',
|
| 34 |
+
'vim': 'vim::VimStyle',
|
| 35 |
+
'vs': 'vs::VisualStudioStyle',
|
| 36 |
+
'tango': 'tango::TangoStyle',
|
| 37 |
+
'rrt': 'rrt::RrtStyle',
|
| 38 |
+
'xcode': 'xcode::XcodeStyle',
|
| 39 |
+
'igor': 'igor::IgorStyle',
|
| 40 |
+
'paraiso-light': 'paraiso_light::ParaisoLightStyle',
|
| 41 |
+
'paraiso-dark': 'paraiso_dark::ParaisoDarkStyle',
|
| 42 |
+
'lovelace': 'lovelace::LovelaceStyle',
|
| 43 |
+
'algol': 'algol::AlgolStyle',
|
| 44 |
+
'algol_nu': 'algol_nu::Algol_NuStyle',
|
| 45 |
+
'arduino': 'arduino::ArduinoStyle',
|
| 46 |
+
'rainbow_dash': 'rainbow_dash::RainbowDashStyle',
|
| 47 |
+
'abap': 'abap::AbapStyle',
|
| 48 |
+
'solarized-dark': 'solarized::SolarizedDarkStyle',
|
| 49 |
+
'solarized-light': 'solarized::SolarizedLightStyle',
|
| 50 |
+
'sas': 'sas::SasStyle',
|
| 51 |
+
'stata': 'stata_light::StataLightStyle',
|
| 52 |
+
'stata-light': 'stata_light::StataLightStyle',
|
| 53 |
+
'stata-dark': 'stata_dark::StataDarkStyle',
|
| 54 |
+
'inkpot': 'inkpot::InkPotStyle',
|
| 55 |
+
'zenburn': 'zenburn::ZenburnStyle',
|
| 56 |
+
'gruvbox-dark': 'gruvbox::GruvboxDarkStyle',
|
| 57 |
+
'gruvbox-light': 'gruvbox::GruvboxLightStyle',
|
| 58 |
+
'dracula': 'dracula::DraculaStyle',
|
| 59 |
+
'one-dark': 'onedark::OneDarkStyle',
|
| 60 |
+
'lilypond' : 'lilypond::LilyPondStyle',
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
def get_style_by_name(name):
|
| 65 |
+
if name in STYLE_MAP:
|
| 66 |
+
mod, cls = STYLE_MAP[name].split('::')
|
| 67 |
+
builtin = "yes"
|
| 68 |
+
else:
|
| 69 |
+
for found_name, style in find_plugin_styles():
|
| 70 |
+
if name == found_name:
|
| 71 |
+
return style
|
| 72 |
+
# perhaps it got dropped into our styles package
|
| 73 |
+
builtin = ""
|
| 74 |
+
mod = name
|
| 75 |
+
cls = name.title() + "Style"
|
| 76 |
+
|
| 77 |
+
try:
|
| 78 |
+
mod = __import__('pygments.styles.' + mod, None, None, [cls])
|
| 79 |
+
except ImportError:
|
| 80 |
+
raise ClassNotFound("Could not find style module %r" % mod +
|
| 81 |
+
(builtin and ", though it should be builtin") + ".")
|
| 82 |
+
try:
|
| 83 |
+
return getattr(mod, cls)
|
| 84 |
+
except AttributeError:
|
| 85 |
+
raise ClassNotFound("Could not find style class %r in style module." % cls)
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
def get_all_styles():
|
| 89 |
+
"""Return a generator for all styles by name,
|
| 90 |
+
both builtin and plugin."""
|
| 91 |
+
yield from STYLE_MAP
|
| 92 |
+
for name, _ in find_plugin_styles():
|
| 93 |
+
yield name
|
venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc
ADDED
|
Binary file (3.32 kB). View file
|
|
|
venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# module pyparsing.py
|
| 2 |
+
#
|
| 3 |
+
# Copyright (c) 2003-2021 Paul T. McGuire
|
| 4 |
+
#
|
| 5 |
+
# Permission is hereby granted, free of charge, to any person obtaining
|
| 6 |
+
# a copy of this software and associated documentation files (the
|
| 7 |
+
# "Software"), to deal in the Software without restriction, including
|
| 8 |
+
# without limitation the rights to use, copy, modify, merge, publish,
|
| 9 |
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
| 10 |
+
# permit persons to whom the Software is furnished to do so, subject to
|
| 11 |
+
# the following conditions:
|
| 12 |
+
#
|
| 13 |
+
# The above copyright notice and this permission notice shall be
|
| 14 |
+
# included in all copies or substantial portions of the Software.
|
| 15 |
+
#
|
| 16 |
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| 17 |
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
| 18 |
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
| 19 |
+
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
| 20 |
+
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
| 21 |
+
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
| 22 |
+
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
| 23 |
+
#
|
| 24 |
+
|
| 25 |
+
__doc__ = """
|
| 26 |
+
pyparsing module - Classes and methods to define and execute parsing grammars
|
| 27 |
+
=============================================================================
|
| 28 |
+
|
| 29 |
+
The pyparsing module is an alternative approach to creating and
|
| 30 |
+
executing simple grammars, vs. the traditional lex/yacc approach, or the
|
| 31 |
+
use of regular expressions. With pyparsing, you don't need to learn
|
| 32 |
+
a new syntax for defining grammars or matching expressions - the parsing
|
| 33 |
+
module provides a library of classes that you use to construct the
|
| 34 |
+
grammar directly in Python.
|
| 35 |
+
|
| 36 |
+
Here is a program to parse "Hello, World!" (or any greeting of the form
|
| 37 |
+
``"<salutation>, <addressee>!"``), built up using :class:`Word`,
|
| 38 |
+
:class:`Literal`, and :class:`And` elements
|
| 39 |
+
(the :meth:`'+'<ParserElement.__add__>` operators create :class:`And` expressions,
|
| 40 |
+
and the strings are auto-converted to :class:`Literal` expressions)::
|
| 41 |
+
|
| 42 |
+
from pip._vendor.pyparsing import Word, alphas
|
| 43 |
+
|
| 44 |
+
# define grammar of a greeting
|
| 45 |
+
greet = Word(alphas) + "," + Word(alphas) + "!"
|
| 46 |
+
|
| 47 |
+
hello = "Hello, World!"
|
| 48 |
+
print(hello, "->", greet.parse_string(hello))
|
| 49 |
+
|
| 50 |
+
The program outputs the following::
|
| 51 |
+
|
| 52 |
+
Hello, World! -> ['Hello', ',', 'World', '!']
|
| 53 |
+
|
| 54 |
+
The Python representation of the grammar is quite readable, owing to the
|
| 55 |
+
self-explanatory class names, and the use of :class:`'+'<And>`,
|
| 56 |
+
:class:`'|'<MatchFirst>`, :class:`'^'<Or>` and :class:`'&'<Each>` operators.
|
| 57 |
+
|
| 58 |
+
The :class:`ParseResults` object returned from
|
| 59 |
+
:class:`ParserElement.parseString` can be
|
| 60 |
+
accessed as a nested list, a dictionary, or an object with named
|
| 61 |
+
attributes.
|
| 62 |
+
|
| 63 |
+
The pyparsing module handles some of the problems that are typically
|
| 64 |
+
vexing when writing text parsers:
|
| 65 |
+
|
| 66 |
+
- extra or missing whitespace (the above program will also handle
|
| 67 |
+
"Hello,World!", "Hello , World !", etc.)
|
| 68 |
+
- quoted strings
|
| 69 |
+
- embedded comments
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
Getting Started -
|
| 73 |
+
-----------------
|
| 74 |
+
Visit the classes :class:`ParserElement` and :class:`ParseResults` to
|
| 75 |
+
see the base classes that most other pyparsing
|
| 76 |
+
classes inherit from. Use the docstrings for examples of how to:
|
| 77 |
+
|
| 78 |
+
- construct literal match expressions from :class:`Literal` and
|
| 79 |
+
:class:`CaselessLiteral` classes
|
| 80 |
+
- construct character word-group expressions using the :class:`Word`
|
| 81 |
+
class
|
| 82 |
+
- see how to create repetitive expressions using :class:`ZeroOrMore`
|
| 83 |
+
and :class:`OneOrMore` classes
|
| 84 |
+
- use :class:`'+'<And>`, :class:`'|'<MatchFirst>`, :class:`'^'<Or>`,
|
| 85 |
+
and :class:`'&'<Each>` operators to combine simple expressions into
|
| 86 |
+
more complex ones
|
| 87 |
+
- associate names with your parsed results using
|
| 88 |
+
:class:`ParserElement.setResultsName`
|
| 89 |
+
- access the parsed data, which is returned as a :class:`ParseResults`
|
| 90 |
+
object
|
| 91 |
+
- find some helpful expression short-cuts like :class:`delimitedList`
|
| 92 |
+
and :class:`oneOf`
|
| 93 |
+
- find more useful common expressions in the :class:`pyparsing_common`
|
| 94 |
+
namespace class
|
| 95 |
+
"""
|
| 96 |
+
from typing import NamedTuple
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
class version_info(NamedTuple):
|
| 100 |
+
major: int
|
| 101 |
+
minor: int
|
| 102 |
+
micro: int
|
| 103 |
+
releaselevel: str
|
| 104 |
+
serial: int
|
| 105 |
+
|
| 106 |
+
@property
|
| 107 |
+
def __version__(self):
|
| 108 |
+
return "{}.{}.{}".format(self.major, self.minor, self.micro) + (
|
| 109 |
+
"{}{}{}".format(
|
| 110 |
+
"r" if self.releaselevel[0] == "c" else "",
|
| 111 |
+
self.releaselevel[0],
|
| 112 |
+
self.serial,
|
| 113 |
+
),
|
| 114 |
+
"",
|
| 115 |
+
)[self.releaselevel == "final"]
|
| 116 |
+
|
| 117 |
+
def __str__(self):
|
| 118 |
+
return "{} {} / {}".format(__name__, self.__version__, __version_time__)
|
| 119 |
+
|
| 120 |
+
def __repr__(self):
|
| 121 |
+
return "{}.{}({})".format(
|
| 122 |
+
__name__,
|
| 123 |
+
type(self).__name__,
|
| 124 |
+
", ".join("{}={!r}".format(*nv) for nv in zip(self._fields, self)),
|
| 125 |
+
)
|
| 126 |
+
|
| 127 |
+
|
| 128 |
+
__version_info__ = version_info(3, 0, 7, "final", 0)
|
| 129 |
+
__version_time__ = "15 Jan 2022 04:10 UTC"
|
| 130 |
+
__version__ = __version_info__.__version__
|
| 131 |
+
__versionTime__ = __version_time__
|
| 132 |
+
__author__ = "Paul McGuire <ptmcg.gm+pyparsing@gmail.com>"
|
| 133 |
+
|
| 134 |
+
from .util import *
|
| 135 |
+
from .exceptions import *
|
| 136 |
+
from .actions import *
|
| 137 |
+
from .core import __diag__, __compat__
|
| 138 |
+
from .results import *
|
| 139 |
+
from .core import *
|
| 140 |
+
from .core import _builtin_exprs as core_builtin_exprs
|
| 141 |
+
from .helpers import *
|
| 142 |
+
from .helpers import _builtin_exprs as helper_builtin_exprs
|
| 143 |
+
|
| 144 |
+
from .unicode import unicode_set, UnicodeRangeList, pyparsing_unicode as unicode
|
| 145 |
+
from .testing import pyparsing_test as testing
|
| 146 |
+
from .common import (
|
| 147 |
+
pyparsing_common as common,
|
| 148 |
+
_builtin_exprs as common_builtin_exprs,
|
| 149 |
+
)
|
| 150 |
+
|
| 151 |
+
# define backward compat synonyms
|
| 152 |
+
if "pyparsing_unicode" not in globals():
|
| 153 |
+
pyparsing_unicode = unicode
|
| 154 |
+
if "pyparsing_common" not in globals():
|
| 155 |
+
pyparsing_common = common
|
| 156 |
+
if "pyparsing_test" not in globals():
|
| 157 |
+
pyparsing_test = testing
|
| 158 |
+
|
| 159 |
+
core_builtin_exprs += common_builtin_exprs + helper_builtin_exprs
|
| 160 |
+
|
| 161 |
+
|
| 162 |
+
__all__ = [
|
| 163 |
+
"__version__",
|
| 164 |
+
"__version_time__",
|
| 165 |
+
"__author__",
|
| 166 |
+
"__compat__",
|
| 167 |
+
"__diag__",
|
| 168 |
+
"And",
|
| 169 |
+
"AtLineStart",
|
| 170 |
+
"AtStringStart",
|
| 171 |
+
"CaselessKeyword",
|
| 172 |
+
"CaselessLiteral",
|
| 173 |
+
"CharsNotIn",
|
| 174 |
+
"Combine",
|
| 175 |
+
"Dict",
|
| 176 |
+
"Each",
|
| 177 |
+
"Empty",
|
| 178 |
+
"FollowedBy",
|
| 179 |
+
"Forward",
|
| 180 |
+
"GoToColumn",
|
| 181 |
+
"Group",
|
| 182 |
+
"IndentedBlock",
|
| 183 |
+
"Keyword",
|
| 184 |
+
"LineEnd",
|
| 185 |
+
"LineStart",
|
| 186 |
+
"Literal",
|
| 187 |
+
"Located",
|
| 188 |
+
"PrecededBy",
|
| 189 |
+
"MatchFirst",
|
| 190 |
+
"NoMatch",
|
| 191 |
+
"NotAny",
|
| 192 |
+
"OneOrMore",
|
| 193 |
+
"OnlyOnce",
|
| 194 |
+
"OpAssoc",
|
| 195 |
+
"Opt",
|
| 196 |
+
"Optional",
|
| 197 |
+
"Or",
|
| 198 |
+
"ParseBaseException",
|
| 199 |
+
"ParseElementEnhance",
|
| 200 |
+
"ParseException",
|
| 201 |
+
"ParseExpression",
|
| 202 |
+
"ParseFatalException",
|
| 203 |
+
"ParseResults",
|
| 204 |
+
"ParseSyntaxException",
|
| 205 |
+
"ParserElement",
|
| 206 |
+
"PositionToken",
|
| 207 |
+
"QuotedString",
|
| 208 |
+
"RecursiveGrammarException",
|
| 209 |
+
"Regex",
|
| 210 |
+
"SkipTo",
|
| 211 |
+
"StringEnd",
|
| 212 |
+
"StringStart",
|
| 213 |
+
"Suppress",
|
| 214 |
+
"Token",
|
| 215 |
+
"TokenConverter",
|
| 216 |
+
"White",
|
| 217 |
+
"Word",
|
| 218 |
+
"WordEnd",
|
| 219 |
+
"WordStart",
|
| 220 |
+
"ZeroOrMore",
|
| 221 |
+
"Char",
|
| 222 |
+
"alphanums",
|
| 223 |
+
"alphas",
|
| 224 |
+
"alphas8bit",
|
| 225 |
+
"any_close_tag",
|
| 226 |
+
"any_open_tag",
|
| 227 |
+
"c_style_comment",
|
| 228 |
+
"col",
|
| 229 |
+
"common_html_entity",
|
| 230 |
+
"counted_array",
|
| 231 |
+
"cpp_style_comment",
|
| 232 |
+
"dbl_quoted_string",
|
| 233 |
+
"dbl_slash_comment",
|
| 234 |
+
"delimited_list",
|
| 235 |
+
"dict_of",
|
| 236 |
+
"empty",
|
| 237 |
+
"hexnums",
|
| 238 |
+
"html_comment",
|
| 239 |
+
"identchars",
|
| 240 |
+
"identbodychars",
|
| 241 |
+
"java_style_comment",
|
| 242 |
+
"line",
|
| 243 |
+
"line_end",
|
| 244 |
+
"line_start",
|
| 245 |
+
"lineno",
|
| 246 |
+
"make_html_tags",
|
| 247 |
+
"make_xml_tags",
|
| 248 |
+
"match_only_at_col",
|
| 249 |
+
"match_previous_expr",
|
| 250 |
+
"match_previous_literal",
|
| 251 |
+
"nested_expr",
|
| 252 |
+
"null_debug_action",
|
| 253 |
+
"nums",
|
| 254 |
+
"one_of",
|
| 255 |
+
"printables",
|
| 256 |
+
"punc8bit",
|
| 257 |
+
"python_style_comment",
|
| 258 |
+
"quoted_string",
|
| 259 |
+
"remove_quotes",
|
| 260 |
+
"replace_with",
|
| 261 |
+
"replace_html_entity",
|
| 262 |
+
"rest_of_line",
|
| 263 |
+
"sgl_quoted_string",
|
| 264 |
+
"srange",
|
| 265 |
+
"string_end",
|
| 266 |
+
"string_start",
|
| 267 |
+
"trace_parse_action",
|
| 268 |
+
"unicode_string",
|
| 269 |
+
"with_attribute",
|
| 270 |
+
"indentedBlock",
|
| 271 |
+
"original_text_for",
|
| 272 |
+
"ungroup",
|
| 273 |
+
"infix_notation",
|
| 274 |
+
"locatedExpr",
|
| 275 |
+
"with_class",
|
| 276 |
+
"CloseMatch",
|
| 277 |
+
"token_map",
|
| 278 |
+
"pyparsing_common",
|
| 279 |
+
"pyparsing_unicode",
|
| 280 |
+
"unicode_set",
|
| 281 |
+
"condition_as_parse_action",
|
| 282 |
+
"pyparsing_test",
|
| 283 |
+
# pre-PEP8 compatibility names
|
| 284 |
+
"__versionTime__",
|
| 285 |
+
"anyCloseTag",
|
| 286 |
+
"anyOpenTag",
|
| 287 |
+
"cStyleComment",
|
| 288 |
+
"commonHTMLEntity",
|
| 289 |
+
"countedArray",
|
| 290 |
+
"cppStyleComment",
|
| 291 |
+
"dblQuotedString",
|
| 292 |
+
"dblSlashComment",
|
| 293 |
+
"delimitedList",
|
| 294 |
+
"dictOf",
|
| 295 |
+
"htmlComment",
|
| 296 |
+
"javaStyleComment",
|
| 297 |
+
"lineEnd",
|
| 298 |
+
"lineStart",
|
| 299 |
+
"makeHTMLTags",
|
| 300 |
+
"makeXMLTags",
|
| 301 |
+
"matchOnlyAtCol",
|
| 302 |
+
"matchPreviousExpr",
|
| 303 |
+
"matchPreviousLiteral",
|
| 304 |
+
"nestedExpr",
|
| 305 |
+
"nullDebugAction",
|
| 306 |
+
"oneOf",
|
| 307 |
+
"opAssoc",
|
| 308 |
+
"pythonStyleComment",
|
| 309 |
+
"quotedString",
|
| 310 |
+
"removeQuotes",
|
| 311 |
+
"replaceHTMLEntity",
|
| 312 |
+
"replaceWith",
|
| 313 |
+
"restOfLine",
|
| 314 |
+
"sglQuotedString",
|
| 315 |
+
"stringEnd",
|
| 316 |
+
"stringStart",
|
| 317 |
+
"traceParseAction",
|
| 318 |
+
"unicodeString",
|
| 319 |
+
"withAttribute",
|
| 320 |
+
"indentedBlock",
|
| 321 |
+
"originalTextFor",
|
| 322 |
+
"infixNotation",
|
| 323 |
+
"locatedExpr",
|
| 324 |
+
"withClass",
|
| 325 |
+
"tokenMap",
|
| 326 |
+
"conditionAsParseAction",
|
| 327 |
+
"autoname_elements",
|
| 328 |
+
]
|