mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 12:51:06 +00:00
Bug 1731145: Don't ignore vendored package *.egg-info
directories r=ahal
The `*.egg-info` directories are needed for the packages to show up as "distributions" to `pip` and other environment-checking logic. We know that `*.egg-info` directories are cross-platform because they exist in the globally-usable `tar.gz` releases of packages. Differential Revision: https://phabricator.services.mozilla.com/D125909
This commit is contained in:
parent
ec0e3ea35a
commit
3ecc6dad6a
7
.gitignore
vendored
7
.gitignore
vendored
@ -14,11 +14,16 @@ ID
|
||||
!id/
|
||||
.DS_Store*
|
||||
*.pdb
|
||||
*.egg-info
|
||||
.eslintcache
|
||||
# Filesystem temporaries
|
||||
.fuse_hidden*
|
||||
|
||||
# Ignore Python .egg-info directories for first-party modules (but,
|
||||
# still add vendored packages' .egg-info directories)
|
||||
*.egg-info
|
||||
!third_party/python/**/*.egg-info
|
||||
!testing/web-platform/tests/tools/third_party/**/*.egg-info
|
||||
|
||||
# Vim swap files.
|
||||
.*.sw[a-z]
|
||||
.sw[a-z]
|
||||
|
@ -7,13 +7,16 @@
|
||||
(^|/)ID$
|
||||
(^|/)\.DS_Store$
|
||||
\.pdb
|
||||
\.egg-info
|
||||
\.eslintcache
|
||||
\.gcda
|
||||
\.gcno
|
||||
\.gcov
|
||||
compile_commands\.json
|
||||
|
||||
# Ignore Python .egg-info directories for first-party modules (but,
|
||||
# still add vendored packages' .egg-info directories)
|
||||
^(?=.*\.egg-info/)(?!^third_party/python/)(?!^testing/web-platform/tests/tools/third_party/)
|
||||
|
||||
# Vim swap files.
|
||||
^\.sw.$
|
||||
.[^/]*\.sw.$
|
||||
|
@ -53,7 +53,6 @@ def test_up_to_date_vendor():
|
||||
existing_vendored,
|
||||
work_vendored,
|
||||
"--exclude=__pycache__",
|
||||
"--exclude=*.egg-info",
|
||||
]
|
||||
)
|
||||
|
||||
|
101
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/PKG-INFO
vendored
Normal file
101
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
Metadata-Version: 1.2
|
||||
Name: MarkupSafe
|
||||
Version: 1.1.1
|
||||
Summary: Safely add untrusted strings to HTML/XML markup.
|
||||
Home-page: https://palletsprojects.com/p/markupsafe/
|
||||
Author: Armin Ronacher
|
||||
Author-email: armin.ronacher@active-4.com
|
||||
Maintainer: The Pallets Team
|
||||
Maintainer-email: contact@palletsprojects.com
|
||||
License: BSD-3-Clause
|
||||
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
||||
Project-URL: Code, https://github.com/pallets/markupsafe
|
||||
Project-URL: Issue tracker, https://github.com/pallets/markupsafe/issues
|
||||
Description: MarkupSafe
|
||||
==========
|
||||
|
||||
MarkupSafe implements a text object that escapes characters so it is
|
||||
safe to use in HTML and XML. Characters that have special meanings are
|
||||
replaced so that they display as the actual characters. This mitigates
|
||||
injection attacks, meaning untrusted user input can safely be displayed
|
||||
on a page.
|
||||
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
Install and update using `pip`_:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
pip install -U MarkupSafe
|
||||
|
||||
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from markupsafe import Markup, escape
|
||||
>>> # escape replaces special characters and wraps in Markup
|
||||
>>> escape('<script>alert(document.cookie);</script>')
|
||||
Markup(u'<script>alert(document.cookie);</script>')
|
||||
>>> # wrap in Markup to mark text "safe" and prevent escaping
|
||||
>>> Markup('<strong>Hello</strong>')
|
||||
Markup('<strong>hello</strong>')
|
||||
>>> escape(Markup('<strong>Hello</strong>'))
|
||||
Markup('<strong>hello</strong>')
|
||||
>>> # Markup is a text subclass (str on Python 3, unicode on Python 2)
|
||||
>>> # methods and operators escape their arguments
|
||||
>>> template = Markup("Hello <em>%s</em>")
|
||||
>>> template % '"World"'
|
||||
Markup('Hello <em>"World"</em>')
|
||||
|
||||
|
||||
Donate
|
||||
------
|
||||
|
||||
The Pallets organization develops and supports MarkupSafe and other
|
||||
libraries that use it. In order to grow the community of contributors
|
||||
and users, and allow the maintainers to devote more time to the
|
||||
projects, `please donate today`_.
|
||||
|
||||
.. _please donate today: https://palletsprojects.com/donate
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
* Website: https://palletsprojects.com/p/markupsafe/
|
||||
* Documentation: https://markupsafe.palletsprojects.com/
|
||||
* License: `BSD-3-Clause <https://github.com/pallets/markupsafe/blob/master/LICENSE.rst>`_
|
||||
* Releases: https://pypi.org/project/MarkupSafe/
|
||||
* Code: https://github.com/pallets/markupsafe
|
||||
* Issue tracker: https://github.com/pallets/markupsafe/issues
|
||||
* Test status:
|
||||
|
||||
* Linux, Mac: https://travis-ci.org/pallets/markupsafe
|
||||
* Windows: https://ci.appveyor.com/project/pallets/markupsafe
|
||||
|
||||
* Test coverage: https://codecov.io/gh/pallets/markupsafe
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||
Requires-Python: >=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*
|
31
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/SOURCES.txt
vendored
Normal file
31
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
CHANGES.rst
|
||||
LICENSE.rst
|
||||
MANIFEST.in
|
||||
README.rst
|
||||
setup.cfg
|
||||
setup.py
|
||||
tox.ini
|
||||
docs/Makefile
|
||||
docs/changes.rst
|
||||
docs/conf.py
|
||||
docs/escaping.rst
|
||||
docs/formatting.rst
|
||||
docs/html.rst
|
||||
docs/index.rst
|
||||
docs/license.rst
|
||||
docs/make.bat
|
||||
docs/requirements.txt
|
||||
src/MarkupSafe.egg-info/PKG-INFO
|
||||
src/MarkupSafe.egg-info/SOURCES.txt
|
||||
src/MarkupSafe.egg-info/dependency_links.txt
|
||||
src/MarkupSafe.egg-info/top_level.txt
|
||||
src/markupsafe/__init__.py
|
||||
src/markupsafe/_compat.py
|
||||
src/markupsafe/_constants.py
|
||||
src/markupsafe/_native.py
|
||||
src/markupsafe/_speedups.c
|
||||
tests/conftest.py
|
||||
tests/test_escape.py
|
||||
tests/test_exception_custom_html.py
|
||||
tests/test_leak.py
|
||||
tests/test_markupsafe.py
|
1
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/MarkupSafe/src/MarkupSafe.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
markupsafe
|
44
third_party/python/PyYAML/lib3/PyYAML.egg-info/PKG-INFO
vendored
Normal file
44
third_party/python/PyYAML/lib3/PyYAML.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
Metadata-Version: 1.2
|
||||
Name: PyYAML
|
||||
Version: 5.4.1
|
||||
Summary: YAML parser and emitter for Python
|
||||
Home-page: https://pyyaml.org/
|
||||
Author: Kirill Simonov
|
||||
Author-email: xi@resolvent.net
|
||||
License: MIT
|
||||
Download-URL: https://pypi.org/project/PyYAML/
|
||||
Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues
|
||||
Project-URL: CI, https://github.com/yaml/pyyaml/actions
|
||||
Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation
|
||||
Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core
|
||||
Project-URL: Source Code, https://github.com/yaml/pyyaml
|
||||
Description: YAML is a data serialization format designed for human readability
|
||||
and interaction with scripting languages. PyYAML is a YAML parser
|
||||
and emitter for Python.
|
||||
|
||||
PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
|
||||
support, capable extension API, and sensible error messages. PyYAML
|
||||
supports standard YAML tags and provides Python-specific tags that
|
||||
allow to represent an arbitrary Python object.
|
||||
|
||||
PyYAML is applicable for a broad range of tasks from complex
|
||||
configuration files to object serialization and persistence.
|
||||
Platform: Any
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Cython
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: Text Processing :: Markup
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
|
670
third_party/python/PyYAML/lib3/PyYAML.egg-info/SOURCES.txt
vendored
Normal file
670
third_party/python/PyYAML/lib3/PyYAML.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,670 @@
|
||||
CHANGES
|
||||
LICENSE
|
||||
MANIFEST.in
|
||||
Makefile
|
||||
README
|
||||
pyproject.toml
|
||||
setup.cfg
|
||||
setup.py
|
||||
examples/pygments-lexer/example.yaml
|
||||
examples/pygments-lexer/yaml.py
|
||||
examples/yaml-highlight/yaml_hl.cfg
|
||||
examples/yaml-highlight/yaml_hl.py
|
||||
lib/_yaml/__init__.py
|
||||
lib/yaml/__init__.py
|
||||
lib/yaml/composer.py
|
||||
lib/yaml/constructor.py
|
||||
lib/yaml/cyaml.py
|
||||
lib/yaml/dumper.py
|
||||
lib/yaml/emitter.py
|
||||
lib/yaml/error.py
|
||||
lib/yaml/events.py
|
||||
lib/yaml/loader.py
|
||||
lib/yaml/nodes.py
|
||||
lib/yaml/parser.py
|
||||
lib/yaml/reader.py
|
||||
lib/yaml/representer.py
|
||||
lib/yaml/resolver.py
|
||||
lib/yaml/scanner.py
|
||||
lib/yaml/serializer.py
|
||||
lib/yaml/tokens.py
|
||||
lib3/PyYAML.egg-info/PKG-INFO
|
||||
lib3/PyYAML.egg-info/SOURCES.txt
|
||||
lib3/PyYAML.egg-info/dependency_links.txt
|
||||
lib3/PyYAML.egg-info/top_level.txt
|
||||
lib3/_yaml/__init__.py
|
||||
lib3/yaml/__init__.py
|
||||
lib3/yaml/composer.py
|
||||
lib3/yaml/constructor.py
|
||||
lib3/yaml/cyaml.py
|
||||
lib3/yaml/dumper.py
|
||||
lib3/yaml/emitter.py
|
||||
lib3/yaml/error.py
|
||||
lib3/yaml/events.py
|
||||
lib3/yaml/loader.py
|
||||
lib3/yaml/nodes.py
|
||||
lib3/yaml/parser.py
|
||||
lib3/yaml/reader.py
|
||||
lib3/yaml/representer.py
|
||||
lib3/yaml/resolver.py
|
||||
lib3/yaml/scanner.py
|
||||
lib3/yaml/serializer.py
|
||||
lib3/yaml/tokens.py
|
||||
tests/data/a-nasty-libyaml-bug.loader-error
|
||||
tests/data/aliases-cdumper-bug.code
|
||||
tests/data/aliases.events
|
||||
tests/data/bool.data
|
||||
tests/data/bool.detect
|
||||
tests/data/construct-binary-py2.code
|
||||
tests/data/construct-binary-py2.data
|
||||
tests/data/construct-binary-py3.code
|
||||
tests/data/construct-binary-py3.data
|
||||
tests/data/construct-bool.code
|
||||
tests/data/construct-bool.data
|
||||
tests/data/construct-custom.code
|
||||
tests/data/construct-custom.data
|
||||
tests/data/construct-float.code
|
||||
tests/data/construct-float.data
|
||||
tests/data/construct-int.code
|
||||
tests/data/construct-int.data
|
||||
tests/data/construct-map.code
|
||||
tests/data/construct-map.data
|
||||
tests/data/construct-merge.code
|
||||
tests/data/construct-merge.data
|
||||
tests/data/construct-null.code
|
||||
tests/data/construct-null.data
|
||||
tests/data/construct-omap.code
|
||||
tests/data/construct-omap.data
|
||||
tests/data/construct-pairs.code
|
||||
tests/data/construct-pairs.data
|
||||
tests/data/construct-python-bool.code
|
||||
tests/data/construct-python-bool.data
|
||||
tests/data/construct-python-bytes-py3.code
|
||||
tests/data/construct-python-bytes-py3.data
|
||||
tests/data/construct-python-complex.code
|
||||
tests/data/construct-python-complex.data
|
||||
tests/data/construct-python-float.code
|
||||
tests/data/construct-python-float.data
|
||||
tests/data/construct-python-int.code
|
||||
tests/data/construct-python-int.data
|
||||
tests/data/construct-python-long-short-py2.code
|
||||
tests/data/construct-python-long-short-py2.data
|
||||
tests/data/construct-python-long-short-py3.code
|
||||
tests/data/construct-python-long-short-py3.data
|
||||
tests/data/construct-python-name-module.code
|
||||
tests/data/construct-python-name-module.data
|
||||
tests/data/construct-python-none.code
|
||||
tests/data/construct-python-none.data
|
||||
tests/data/construct-python-object.code
|
||||
tests/data/construct-python-object.data
|
||||
tests/data/construct-python-str-ascii.code
|
||||
tests/data/construct-python-str-ascii.data
|
||||
tests/data/construct-python-str-utf8-py2.code
|
||||
tests/data/construct-python-str-utf8-py2.data
|
||||
tests/data/construct-python-str-utf8-py3.code
|
||||
tests/data/construct-python-str-utf8-py3.data
|
||||
tests/data/construct-python-tuple-list-dict.code
|
||||
tests/data/construct-python-tuple-list-dict.data
|
||||
tests/data/construct-python-unicode-ascii-py2.code
|
||||
tests/data/construct-python-unicode-ascii-py2.data
|
||||
tests/data/construct-python-unicode-ascii-py3.code
|
||||
tests/data/construct-python-unicode-ascii-py3.data
|
||||
tests/data/construct-python-unicode-utf8-py2.code
|
||||
tests/data/construct-python-unicode-utf8-py2.data
|
||||
tests/data/construct-python-unicode-utf8-py3.code
|
||||
tests/data/construct-python-unicode-utf8-py3.data
|
||||
tests/data/construct-seq.code
|
||||
tests/data/construct-seq.data
|
||||
tests/data/construct-set.code
|
||||
tests/data/construct-set.data
|
||||
tests/data/construct-str-ascii.code
|
||||
tests/data/construct-str-ascii.data
|
||||
tests/data/construct-str-utf8-py2.code
|
||||
tests/data/construct-str-utf8-py2.data
|
||||
tests/data/construct-str-utf8-py3.code
|
||||
tests/data/construct-str-utf8-py3.data
|
||||
tests/data/construct-str.code
|
||||
tests/data/construct-str.data
|
||||
tests/data/construct-timestamp.code
|
||||
tests/data/construct-timestamp.data
|
||||
tests/data/construct-value.code
|
||||
tests/data/construct-value.data
|
||||
tests/data/document-separator-in-quoted-scalar.loader-error
|
||||
tests/data/documents.events
|
||||
tests/data/duplicate-anchor-1.loader-error
|
||||
tests/data/duplicate-anchor-2.loader-error
|
||||
tests/data/duplicate-key.former-loader-error.code
|
||||
tests/data/duplicate-key.former-loader-error.data
|
||||
tests/data/duplicate-mapping-key.former-loader-error.code
|
||||
tests/data/duplicate-mapping-key.former-loader-error.data
|
||||
tests/data/duplicate-merge-key.former-loader-error.code
|
||||
tests/data/duplicate-merge-key.former-loader-error.data
|
||||
tests/data/duplicate-tag-directive.loader-error
|
||||
tests/data/duplicate-value-key.former-loader-error.code
|
||||
tests/data/duplicate-value-key.former-loader-error.data
|
||||
tests/data/duplicate-yaml-directive.loader-error
|
||||
tests/data/emit-block-scalar-in-simple-key-context-bug.canonical
|
||||
tests/data/emit-block-scalar-in-simple-key-context-bug.data
|
||||
tests/data/emitting-unacceptable-unicode-character-bug-py3.code
|
||||
tests/data/emitting-unacceptable-unicode-character-bug-py3.data
|
||||
tests/data/emitting-unacceptable-unicode-character-bug-py3.skip-ext
|
||||
tests/data/emitting-unacceptable-unicode-character-bug.code
|
||||
tests/data/emitting-unacceptable-unicode-character-bug.data
|
||||
tests/data/emitting-unacceptable-unicode-character-bug.skip-ext
|
||||
tests/data/emoticons.unicode
|
||||
tests/data/emoticons2.unicode
|
||||
tests/data/empty-anchor.emitter-error
|
||||
tests/data/empty-document-bug.canonical
|
||||
tests/data/empty-document-bug.data
|
||||
tests/data/empty-document-bug.empty
|
||||
tests/data/empty-documents.single-loader-error
|
||||
tests/data/empty-python-module.loader-error
|
||||
tests/data/empty-python-name.loader-error
|
||||
tests/data/empty-tag-handle.emitter-error
|
||||
tests/data/empty-tag-prefix.emitter-error
|
||||
tests/data/empty-tag.emitter-error
|
||||
tests/data/expected-document-end.emitter-error
|
||||
tests/data/expected-document-start.emitter-error
|
||||
tests/data/expected-mapping.loader-error
|
||||
tests/data/expected-node-1.emitter-error
|
||||
tests/data/expected-node-2.emitter-error
|
||||
tests/data/expected-nothing.emitter-error
|
||||
tests/data/expected-scalar.loader-error
|
||||
tests/data/expected-sequence.loader-error
|
||||
tests/data/expected-stream-start.emitter-error
|
||||
tests/data/explicit-document.single-loader-error
|
||||
tests/data/fetch-complex-value-bug.loader-error
|
||||
tests/data/float-representer-2.3-bug.code
|
||||
tests/data/float-representer-2.3-bug.data
|
||||
tests/data/float.data
|
||||
tests/data/float.detect
|
||||
tests/data/forbidden-entry.loader-error
|
||||
tests/data/forbidden-key.loader-error
|
||||
tests/data/forbidden-value.loader-error
|
||||
tests/data/implicit-document.single-loader-error
|
||||
tests/data/int.data
|
||||
tests/data/int.detect
|
||||
tests/data/invalid-anchor-1.loader-error
|
||||
tests/data/invalid-anchor-2.loader-error
|
||||
tests/data/invalid-anchor.emitter-error
|
||||
tests/data/invalid-base64-data-2.loader-error
|
||||
tests/data/invalid-base64-data.loader-error
|
||||
tests/data/invalid-block-scalar-indicator.loader-error
|
||||
tests/data/invalid-character.loader-error
|
||||
tests/data/invalid-character.stream-error
|
||||
tests/data/invalid-directive-line.loader-error
|
||||
tests/data/invalid-directive-name-1.loader-error
|
||||
tests/data/invalid-directive-name-2.loader-error
|
||||
tests/data/invalid-escape-character.loader-error
|
||||
tests/data/invalid-escape-numbers.loader-error
|
||||
tests/data/invalid-indentation-indicator-1.loader-error
|
||||
tests/data/invalid-indentation-indicator-2.loader-error
|
||||
tests/data/invalid-item-without-trailing-break.loader-error
|
||||
tests/data/invalid-merge-1.loader-error
|
||||
tests/data/invalid-merge-2.loader-error
|
||||
tests/data/invalid-omap-1.loader-error
|
||||
tests/data/invalid-omap-2.loader-error
|
||||
tests/data/invalid-omap-3.loader-error
|
||||
tests/data/invalid-pairs-1.loader-error
|
||||
tests/data/invalid-pairs-2.loader-error
|
||||
tests/data/invalid-pairs-3.loader-error
|
||||
tests/data/invalid-python-bytes-2-py3.loader-error
|
||||
tests/data/invalid-python-bytes-py3.loader-error
|
||||
tests/data/invalid-python-module-kind.loader-error
|
||||
tests/data/invalid-python-module-value.loader-error
|
||||
tests/data/invalid-python-module.loader-error
|
||||
tests/data/invalid-python-name-kind.loader-error
|
||||
tests/data/invalid-python-name-module.loader-error
|
||||
tests/data/invalid-python-name-object.loader-error
|
||||
tests/data/invalid-python-name-value.loader-error
|
||||
tests/data/invalid-simple-key.loader-error
|
||||
tests/data/invalid-single-quote-bug.code
|
||||
tests/data/invalid-single-quote-bug.data
|
||||
tests/data/invalid-starting-character.loader-error
|
||||
tests/data/invalid-tag-1.loader-error
|
||||
tests/data/invalid-tag-2.loader-error
|
||||
tests/data/invalid-tag-directive-handle.loader-error
|
||||
tests/data/invalid-tag-directive-prefix.loader-error
|
||||
tests/data/invalid-tag-handle-1.emitter-error
|
||||
tests/data/invalid-tag-handle-1.loader-error
|
||||
tests/data/invalid-tag-handle-2.emitter-error
|
||||
tests/data/invalid-tag-handle-2.loader-error
|
||||
tests/data/invalid-uri-escapes-1.loader-error
|
||||
tests/data/invalid-uri-escapes-2.loader-error
|
||||
tests/data/invalid-uri-escapes-3.loader-error
|
||||
tests/data/invalid-uri.loader-error
|
||||
tests/data/invalid-utf8-byte.loader-error
|
||||
tests/data/invalid-utf8-byte.stream-error
|
||||
tests/data/invalid-yaml-directive-version-1.loader-error
|
||||
tests/data/invalid-yaml-directive-version-2.loader-error
|
||||
tests/data/invalid-yaml-directive-version-3.loader-error
|
||||
tests/data/invalid-yaml-directive-version-4.loader-error
|
||||
tests/data/invalid-yaml-directive-version-5.loader-error
|
||||
tests/data/invalid-yaml-directive-version-6.loader-error
|
||||
tests/data/invalid-yaml-version.loader-error
|
||||
tests/data/latin.unicode
|
||||
tests/data/mapping.sort
|
||||
tests/data/mapping.sorted
|
||||
tests/data/mappings.events
|
||||
tests/data/merge.data
|
||||
tests/data/merge.detect
|
||||
tests/data/more-floats.code
|
||||
tests/data/more-floats.data
|
||||
tests/data/multi-constructor.code
|
||||
tests/data/multi-constructor.multi
|
||||
tests/data/myfullloader.subclass_blacklist
|
||||
tests/data/negative-float-bug.code
|
||||
tests/data/negative-float-bug.data
|
||||
tests/data/no-alias-anchor.emitter-error
|
||||
tests/data/no-alias-anchor.skip-ext
|
||||
tests/data/no-block-collection-end.loader-error
|
||||
tests/data/no-block-mapping-end-2.loader-error
|
||||
tests/data/no-block-mapping-end.loader-error
|
||||
tests/data/no-document-start.loader-error
|
||||
tests/data/no-flow-mapping-end.loader-error
|
||||
tests/data/no-flow-sequence-end.loader-error
|
||||
tests/data/no-node-1.loader-error
|
||||
tests/data/no-node-2.loader-error
|
||||
tests/data/no-tag.emitter-error
|
||||
tests/data/null.data
|
||||
tests/data/null.detect
|
||||
tests/data/odd-utf16.stream-error
|
||||
tests/data/overwrite-state-new-constructor.loader-error
|
||||
tests/data/recursive-anchor.former-loader-error
|
||||
tests/data/recursive-dict.recursive
|
||||
tests/data/recursive-list.recursive
|
||||
tests/data/recursive-set.recursive
|
||||
tests/data/recursive-state.recursive
|
||||
tests/data/recursive-tuple.recursive
|
||||
tests/data/recursive.former-dumper-error
|
||||
tests/data/remove-possible-simple-key-bug.loader-error
|
||||
tests/data/resolver.data
|
||||
tests/data/resolver.path
|
||||
tests/data/run-parser-crash-bug.data
|
||||
tests/data/scalars.events
|
||||
tests/data/scan-document-end-bug.canonical
|
||||
tests/data/scan-document-end-bug.data
|
||||
tests/data/scan-line-break-bug.canonical
|
||||
tests/data/scan-line-break-bug.data
|
||||
tests/data/sequences.events
|
||||
tests/data/serializer-is-already-opened.dumper-error
|
||||
tests/data/serializer-is-closed-1.dumper-error
|
||||
tests/data/serializer-is-closed-2.dumper-error
|
||||
tests/data/serializer-is-not-opened-1.dumper-error
|
||||
tests/data/serializer-is-not-opened-2.dumper-error
|
||||
tests/data/single-dot-is-not-float-bug.code
|
||||
tests/data/single-dot-is-not-float-bug.data
|
||||
tests/data/sloppy-indentation.canonical
|
||||
tests/data/sloppy-indentation.data
|
||||
tests/data/spec-02-01.data
|
||||
tests/data/spec-02-01.structure
|
||||
tests/data/spec-02-01.tokens
|
||||
tests/data/spec-02-02.data
|
||||
tests/data/spec-02-02.structure
|
||||
tests/data/spec-02-02.tokens
|
||||
tests/data/spec-02-03.data
|
||||
tests/data/spec-02-03.structure
|
||||
tests/data/spec-02-03.tokens
|
||||
tests/data/spec-02-04.data
|
||||
tests/data/spec-02-04.structure
|
||||
tests/data/spec-02-04.tokens
|
||||
tests/data/spec-02-05.data
|
||||
tests/data/spec-02-05.structure
|
||||
tests/data/spec-02-05.tokens
|
||||
tests/data/spec-02-06.data
|
||||
tests/data/spec-02-06.structure
|
||||
tests/data/spec-02-06.tokens
|
||||
tests/data/spec-02-07.data
|
||||
tests/data/spec-02-07.structure
|
||||
tests/data/spec-02-07.tokens
|
||||
tests/data/spec-02-08.data
|
||||
tests/data/spec-02-08.structure
|
||||
tests/data/spec-02-08.tokens
|
||||
tests/data/spec-02-09.data
|
||||
tests/data/spec-02-09.structure
|
||||
tests/data/spec-02-09.tokens
|
||||
tests/data/spec-02-10.data
|
||||
tests/data/spec-02-10.structure
|
||||
tests/data/spec-02-10.tokens
|
||||
tests/data/spec-02-11.data
|
||||
tests/data/spec-02-11.structure
|
||||
tests/data/spec-02-11.tokens
|
||||
tests/data/spec-02-12.data
|
||||
tests/data/spec-02-12.structure
|
||||
tests/data/spec-02-12.tokens
|
||||
tests/data/spec-02-13.data
|
||||
tests/data/spec-02-13.structure
|
||||
tests/data/spec-02-13.tokens
|
||||
tests/data/spec-02-14.data
|
||||
tests/data/spec-02-14.structure
|
||||
tests/data/spec-02-14.tokens
|
||||
tests/data/spec-02-15.data
|
||||
tests/data/spec-02-15.structure
|
||||
tests/data/spec-02-15.tokens
|
||||
tests/data/spec-02-16.data
|
||||
tests/data/spec-02-16.structure
|
||||
tests/data/spec-02-16.tokens
|
||||
tests/data/spec-02-17.data
|
||||
tests/data/spec-02-17.structure
|
||||
tests/data/spec-02-17.tokens
|
||||
tests/data/spec-02-18.data
|
||||
tests/data/spec-02-18.structure
|
||||
tests/data/spec-02-18.tokens
|
||||
tests/data/spec-02-19.data
|
||||
tests/data/spec-02-19.structure
|
||||
tests/data/spec-02-19.tokens
|
||||
tests/data/spec-02-20.data
|
||||
tests/data/spec-02-20.structure
|
||||
tests/data/spec-02-20.tokens
|
||||
tests/data/spec-02-21.data
|
||||
tests/data/spec-02-21.structure
|
||||
tests/data/spec-02-21.tokens
|
||||
tests/data/spec-02-22.data
|
||||
tests/data/spec-02-22.structure
|
||||
tests/data/spec-02-22.tokens
|
||||
tests/data/spec-02-23.data
|
||||
tests/data/spec-02-23.structure
|
||||
tests/data/spec-02-23.tokens
|
||||
tests/data/spec-02-24.data
|
||||
tests/data/spec-02-24.structure
|
||||
tests/data/spec-02-24.tokens
|
||||
tests/data/spec-02-25.data
|
||||
tests/data/spec-02-25.structure
|
||||
tests/data/spec-02-25.tokens
|
||||
tests/data/spec-02-26.data
|
||||
tests/data/spec-02-26.structure
|
||||
tests/data/spec-02-26.tokens
|
||||
tests/data/spec-02-27.data
|
||||
tests/data/spec-02-27.structure
|
||||
tests/data/spec-02-27.tokens
|
||||
tests/data/spec-02-28.data
|
||||
tests/data/spec-02-28.structure
|
||||
tests/data/spec-02-28.tokens
|
||||
tests/data/spec-05-01-utf16be.data
|
||||
tests/data/spec-05-01-utf16be.empty
|
||||
tests/data/spec-05-01-utf16le.data
|
||||
tests/data/spec-05-01-utf16le.empty
|
||||
tests/data/spec-05-01-utf8.data
|
||||
tests/data/spec-05-01-utf8.empty
|
||||
tests/data/spec-05-02-utf16be.data
|
||||
tests/data/spec-05-02-utf16be.error
|
||||
tests/data/spec-05-02-utf16le.data
|
||||
tests/data/spec-05-02-utf16le.error
|
||||
tests/data/spec-05-02-utf8.data
|
||||
tests/data/spec-05-02-utf8.error
|
||||
tests/data/spec-05-03.canonical
|
||||
tests/data/spec-05-03.data
|
||||
tests/data/spec-05-04.canonical
|
||||
tests/data/spec-05-04.data
|
||||
tests/data/spec-05-05.data
|
||||
tests/data/spec-05-05.empty
|
||||
tests/data/spec-05-06.canonical
|
||||
tests/data/spec-05-06.data
|
||||
tests/data/spec-05-07.canonical
|
||||
tests/data/spec-05-07.data
|
||||
tests/data/spec-05-08.canonical
|
||||
tests/data/spec-05-08.data
|
||||
tests/data/spec-05-09.canonical
|
||||
tests/data/spec-05-09.data
|
||||
tests/data/spec-05-10.data
|
||||
tests/data/spec-05-10.error
|
||||
tests/data/spec-05-11.canonical
|
||||
tests/data/spec-05-11.data
|
||||
tests/data/spec-05-12.data
|
||||
tests/data/spec-05-12.error
|
||||
tests/data/spec-05-13.canonical
|
||||
tests/data/spec-05-13.data
|
||||
tests/data/spec-05-14.canonical
|
||||
tests/data/spec-05-14.data
|
||||
tests/data/spec-05-15.data
|
||||
tests/data/spec-05-15.error
|
||||
tests/data/spec-06-01.canonical
|
||||
tests/data/spec-06-01.data
|
||||
tests/data/spec-06-02.data
|
||||
tests/data/spec-06-02.empty
|
||||
tests/data/spec-06-03.canonical
|
||||
tests/data/spec-06-03.data
|
||||
tests/data/spec-06-04.canonical
|
||||
tests/data/spec-06-04.data
|
||||
tests/data/spec-06-05.canonical
|
||||
tests/data/spec-06-05.data
|
||||
tests/data/spec-06-06.canonical
|
||||
tests/data/spec-06-06.data
|
||||
tests/data/spec-06-07.canonical
|
||||
tests/data/spec-06-07.data
|
||||
tests/data/spec-06-08.canonical
|
||||
tests/data/spec-06-08.data
|
||||
tests/data/spec-07-01.canonical
|
||||
tests/data/spec-07-01.data
|
||||
tests/data/spec-07-01.skip-ext
|
||||
tests/data/spec-07-02.canonical
|
||||
tests/data/spec-07-02.data
|
||||
tests/data/spec-07-02.skip-ext
|
||||
tests/data/spec-07-03.data
|
||||
tests/data/spec-07-03.error
|
||||
tests/data/spec-07-04.canonical
|
||||
tests/data/spec-07-04.data
|
||||
tests/data/spec-07-05.data
|
||||
tests/data/spec-07-05.error
|
||||
tests/data/spec-07-06.canonical
|
||||
tests/data/spec-07-06.data
|
||||
tests/data/spec-07-07a.canonical
|
||||
tests/data/spec-07-07a.data
|
||||
tests/data/spec-07-07b.canonical
|
||||
tests/data/spec-07-07b.data
|
||||
tests/data/spec-07-08.canonical
|
||||
tests/data/spec-07-08.data
|
||||
tests/data/spec-07-09.canonical
|
||||
tests/data/spec-07-09.data
|
||||
tests/data/spec-07-10.canonical
|
||||
tests/data/spec-07-10.data
|
||||
tests/data/spec-07-11.data
|
||||
tests/data/spec-07-11.empty
|
||||
tests/data/spec-07-12a.canonical
|
||||
tests/data/spec-07-12a.data
|
||||
tests/data/spec-07-12b.canonical
|
||||
tests/data/spec-07-12b.data
|
||||
tests/data/spec-07-13.canonical
|
||||
tests/data/spec-07-13.data
|
||||
tests/data/spec-08-01.canonical
|
||||
tests/data/spec-08-01.data
|
||||
tests/data/spec-08-02.canonical
|
||||
tests/data/spec-08-02.data
|
||||
tests/data/spec-08-03.canonical
|
||||
tests/data/spec-08-03.data
|
||||
tests/data/spec-08-04.data
|
||||
tests/data/spec-08-04.error
|
||||
tests/data/spec-08-05.canonical
|
||||
tests/data/spec-08-05.data
|
||||
tests/data/spec-08-06.data
|
||||
tests/data/spec-08-06.error
|
||||
tests/data/spec-08-07.canonical
|
||||
tests/data/spec-08-07.data
|
||||
tests/data/spec-08-08.canonical
|
||||
tests/data/spec-08-08.data
|
||||
tests/data/spec-08-09.canonical
|
||||
tests/data/spec-08-09.data
|
||||
tests/data/spec-08-10.canonical
|
||||
tests/data/spec-08-10.data
|
||||
tests/data/spec-08-11.canonical
|
||||
tests/data/spec-08-11.data
|
||||
tests/data/spec-08-12.canonical
|
||||
tests/data/spec-08-12.data
|
||||
tests/data/spec-08-13.canonical
|
||||
tests/data/spec-08-13.data
|
||||
tests/data/spec-08-13.skip-ext
|
||||
tests/data/spec-08-14.canonical
|
||||
tests/data/spec-08-14.data
|
||||
tests/data/spec-08-15.canonical
|
||||
tests/data/spec-08-15.data
|
||||
tests/data/spec-09-01.canonical
|
||||
tests/data/spec-09-01.data
|
||||
tests/data/spec-09-02.canonical
|
||||
tests/data/spec-09-02.data
|
||||
tests/data/spec-09-03.canonical
|
||||
tests/data/spec-09-03.data
|
||||
tests/data/spec-09-04.canonical
|
||||
tests/data/spec-09-04.data
|
||||
tests/data/spec-09-05.canonical
|
||||
tests/data/spec-09-05.data
|
||||
tests/data/spec-09-06.canonical
|
||||
tests/data/spec-09-06.data
|
||||
tests/data/spec-09-07.canonical
|
||||
tests/data/spec-09-07.data
|
||||
tests/data/spec-09-08.canonical
|
||||
tests/data/spec-09-08.data
|
||||
tests/data/spec-09-09.canonical
|
||||
tests/data/spec-09-09.data
|
||||
tests/data/spec-09-10.canonical
|
||||
tests/data/spec-09-10.data
|
||||
tests/data/spec-09-11.canonical
|
||||
tests/data/spec-09-11.data
|
||||
tests/data/spec-09-12.canonical
|
||||
tests/data/spec-09-12.data
|
||||
tests/data/spec-09-13.canonical
|
||||
tests/data/spec-09-13.data
|
||||
tests/data/spec-09-14.data
|
||||
tests/data/spec-09-14.error
|
||||
tests/data/spec-09-15.canonical
|
||||
tests/data/spec-09-15.data
|
||||
tests/data/spec-09-16.canonical
|
||||
tests/data/spec-09-16.data
|
||||
tests/data/spec-09-17.canonical
|
||||
tests/data/spec-09-17.data
|
||||
tests/data/spec-09-18.canonical
|
||||
tests/data/spec-09-18.data
|
||||
tests/data/spec-09-19.canonical
|
||||
tests/data/spec-09-19.data
|
||||
tests/data/spec-09-20.canonical
|
||||
tests/data/spec-09-20.data
|
||||
tests/data/spec-09-20.skip-ext
|
||||
tests/data/spec-09-21.data
|
||||
tests/data/spec-09-21.error
|
||||
tests/data/spec-09-22.canonical
|
||||
tests/data/spec-09-22.data
|
||||
tests/data/spec-09-23.canonical
|
||||
tests/data/spec-09-23.data
|
||||
tests/data/spec-09-24.canonical
|
||||
tests/data/spec-09-24.data
|
||||
tests/data/spec-09-25.canonical
|
||||
tests/data/spec-09-25.data
|
||||
tests/data/spec-09-26.canonical
|
||||
tests/data/spec-09-26.data
|
||||
tests/data/spec-09-27.canonical
|
||||
tests/data/spec-09-27.data
|
||||
tests/data/spec-09-28.canonical
|
||||
tests/data/spec-09-28.data
|
||||
tests/data/spec-09-29.canonical
|
||||
tests/data/spec-09-29.data
|
||||
tests/data/spec-09-30.canonical
|
||||
tests/data/spec-09-30.data
|
||||
tests/data/spec-09-31.canonical
|
||||
tests/data/spec-09-31.data
|
||||
tests/data/spec-09-32.canonical
|
||||
tests/data/spec-09-32.data
|
||||
tests/data/spec-09-33.canonical
|
||||
tests/data/spec-09-33.data
|
||||
tests/data/spec-10-01.canonical
|
||||
tests/data/spec-10-01.data
|
||||
tests/data/spec-10-02.canonical
|
||||
tests/data/spec-10-02.data
|
||||
tests/data/spec-10-03.canonical
|
||||
tests/data/spec-10-03.data
|
||||
tests/data/spec-10-04.canonical
|
||||
tests/data/spec-10-04.data
|
||||
tests/data/spec-10-05.canonical
|
||||
tests/data/spec-10-05.data
|
||||
tests/data/spec-10-06.canonical
|
||||
tests/data/spec-10-06.data
|
||||
tests/data/spec-10-07.canonical
|
||||
tests/data/spec-10-07.data
|
||||
tests/data/spec-10-08.data
|
||||
tests/data/spec-10-08.error
|
||||
tests/data/spec-10-09.canonical
|
||||
tests/data/spec-10-09.data
|
||||
tests/data/spec-10-10.canonical
|
||||
tests/data/spec-10-10.data
|
||||
tests/data/spec-10-11.canonical
|
||||
tests/data/spec-10-11.data
|
||||
tests/data/spec-10-12.canonical
|
||||
tests/data/spec-10-12.data
|
||||
tests/data/spec-10-13.canonical
|
||||
tests/data/spec-10-13.data
|
||||
tests/data/spec-10-14.canonical
|
||||
tests/data/spec-10-14.data
|
||||
tests/data/spec-10-15.canonical
|
||||
tests/data/spec-10-15.data
|
||||
tests/data/str.data
|
||||
tests/data/str.detect
|
||||
tests/data/tags.events
|
||||
tests/data/test_mark.marks
|
||||
tests/data/timestamp-bugs.code
|
||||
tests/data/timestamp-bugs.data
|
||||
tests/data/timestamp.data
|
||||
tests/data/timestamp.detect
|
||||
tests/data/unacceptable-key.loader-error
|
||||
tests/data/unclosed-bracket.loader-error
|
||||
tests/data/unclosed-quoted-scalar.loader-error
|
||||
tests/data/undefined-anchor.loader-error
|
||||
tests/data/undefined-constructor.loader-error
|
||||
tests/data/undefined-tag-handle.loader-error
|
||||
tests/data/unknown.dumper-error
|
||||
tests/data/unsupported-version.emitter-error
|
||||
tests/data/utf16be.code
|
||||
tests/data/utf16be.data
|
||||
tests/data/utf16le.code
|
||||
tests/data/utf16le.data
|
||||
tests/data/utf8-implicit.code
|
||||
tests/data/utf8-implicit.data
|
||||
tests/data/utf8.code
|
||||
tests/data/utf8.data
|
||||
tests/data/value.data
|
||||
tests/data/value.detect
|
||||
tests/data/yaml.data
|
||||
tests/data/yaml.detect
|
||||
tests/lib/canonical.py
|
||||
tests/lib/test_all.py
|
||||
tests/lib/test_appliance.py
|
||||
tests/lib/test_build.py
|
||||
tests/lib/test_build_ext.py
|
||||
tests/lib/test_canonical.py
|
||||
tests/lib/test_constructor.py
|
||||
tests/lib/test_emitter.py
|
||||
tests/lib/test_errors.py
|
||||
tests/lib/test_input_output.py
|
||||
tests/lib/test_mark.py
|
||||
tests/lib/test_multi_constructor.py
|
||||
tests/lib/test_reader.py
|
||||
tests/lib/test_recursive.py
|
||||
tests/lib/test_representer.py
|
||||
tests/lib/test_resolver.py
|
||||
tests/lib/test_sort_keys.py
|
||||
tests/lib/test_structure.py
|
||||
tests/lib/test_tokens.py
|
||||
tests/lib/test_yaml.py
|
||||
tests/lib/test_yaml_ext.py
|
||||
tests/lib3/canonical.py
|
||||
tests/lib3/test_all.py
|
||||
tests/lib3/test_appliance.py
|
||||
tests/lib3/test_build.py
|
||||
tests/lib3/test_build_ext.py
|
||||
tests/lib3/test_canonical.py
|
||||
tests/lib3/test_constructor.py
|
||||
tests/lib3/test_emitter.py
|
||||
tests/lib3/test_errors.py
|
||||
tests/lib3/test_input_output.py
|
||||
tests/lib3/test_mark.py
|
||||
tests/lib3/test_multi_constructor.py
|
||||
tests/lib3/test_reader.py
|
||||
tests/lib3/test_recursive.py
|
||||
tests/lib3/test_representer.py
|
||||
tests/lib3/test_resolver.py
|
||||
tests/lib3/test_sort_keys.py
|
||||
tests/lib3/test_structure.py
|
||||
tests/lib3/test_tokens.py
|
||||
tests/lib3/test_yaml.py
|
||||
tests/lib3/test_yaml_ext.py
|
||||
yaml/__init__.pxd
|
||||
yaml/_yaml.h
|
||||
yaml/_yaml.pxd
|
||||
yaml/_yaml.pyx
|
1
third_party/python/PyYAML/lib3/PyYAML.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/PyYAML/lib3/PyYAML.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
2
third_party/python/PyYAML/lib3/PyYAML.egg-info/top_level.txt
vendored
Normal file
2
third_party/python/PyYAML/lib3/PyYAML.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
_yaml
|
||||
yaml
|
966
third_party/python/aiohttp/aiohttp.egg-info/PKG-INFO
vendored
Normal file
966
third_party/python/aiohttp/aiohttp.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,966 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: aiohttp
|
||||
Version: 3.7.4.post0
|
||||
Summary: Async http client/server framework (asyncio)
|
||||
Home-page: https://github.com/aio-libs/aiohttp
|
||||
Author: Nikolay Kim
|
||||
Author-email: fafhrd91@gmail.com
|
||||
Maintainer: Nikolay Kim <fafhrd91@gmail.com>, Andrew Svetlov <andrew.svetlov@gmail.com>
|
||||
Maintainer-email: aio-libs@googlegroups.com
|
||||
License: Apache 2
|
||||
Project-URL: Chat: Gitter, https://gitter.im/aio-libs/Lobby
|
||||
Project-URL: CI: Azure Pipelines, https://dev.azure.com/aio-libs/aiohttp/_build
|
||||
Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/aiohttp
|
||||
Project-URL: Docs: RTD, https://docs.aiohttp.org
|
||||
Project-URL: GitHub: issues, https://github.com/aio-libs/aiohttp/issues
|
||||
Project-URL: GitHub: repo, https://github.com/aio-libs/aiohttp
|
||||
Description: ==================================
|
||||
Async http client/server framework
|
||||
==================================
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/_static/aiohttp-icon-128x128.png
|
||||
:height: 64px
|
||||
:width: 64px
|
||||
:alt: aiohttp logo
|
||||
|
||||
|
|
||||
|
||||
.. image:: https://github.com/aio-libs/aiohttp/workflows/CI/badge.svg
|
||||
:target: https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
|
||||
:alt: GitHub Actions status for master branch
|
||||
|
||||
.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/aio-libs/aiohttp
|
||||
:alt: codecov.io status for master branch
|
||||
|
||||
.. image:: https://badge.fury.io/py/aiohttp.svg
|
||||
:target: https://pypi.org/project/aiohttp
|
||||
:alt: Latest PyPI package version
|
||||
|
||||
.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
|
||||
:target: https://docs.aiohttp.org/
|
||||
:alt: Latest Read The Docs
|
||||
|
||||
.. image:: https://img.shields.io/discourse/status?server=https%3A%2F%2Faio-libs.discourse.group
|
||||
:target: https://aio-libs.discourse.group
|
||||
:alt: Discourse status
|
||||
|
||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:target: https://gitter.im/aio-libs/Lobby
|
||||
:alt: Chat on Gitter
|
||||
|
||||
|
||||
Key Features
|
||||
============
|
||||
|
||||
- Supports both client and server side of HTTP protocol.
|
||||
- Supports both client and server Web-Sockets out-of-the-box and avoids
|
||||
Callback Hell.
|
||||
- Provides Web-server with middlewares and plugable routing.
|
||||
|
||||
|
||||
Getting started
|
||||
===============
|
||||
|
||||
Client
|
||||
------
|
||||
|
||||
To get something from the web:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import aiohttp
|
||||
import asyncio
|
||||
|
||||
async def main():
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get('http://python.org') as response:
|
||||
|
||||
print("Status:", response.status)
|
||||
print("Content-type:", response.headers['content-type'])
|
||||
|
||||
html = await response.text()
|
||||
print("Body:", html[:15], "...")
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(main())
|
||||
|
||||
This prints:
|
||||
|
||||
.. code-block::
|
||||
|
||||
Status: 200
|
||||
Content-type: text/html; charset=utf-8
|
||||
Body: <!doctype html> ...
|
||||
|
||||
Coming from `requests <https://requests.readthedocs.io/>`_ ? Read `why we need so many lines <https://aiohttp.readthedocs.io/en/latest/http_request_lifecycle.html>`_.
|
||||
|
||||
Server
|
||||
------
|
||||
|
||||
An example using a simple server:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# examples/server_simple.py
|
||||
from aiohttp import web
|
||||
|
||||
async def handle(request):
|
||||
name = request.match_info.get('name', "Anonymous")
|
||||
text = "Hello, " + name
|
||||
return web.Response(text=text)
|
||||
|
||||
async def wshandle(request):
|
||||
ws = web.WebSocketResponse()
|
||||
await ws.prepare(request)
|
||||
|
||||
async for msg in ws:
|
||||
if msg.type == web.WSMsgType.text:
|
||||
await ws.send_str("Hello, {}".format(msg.data))
|
||||
elif msg.type == web.WSMsgType.binary:
|
||||
await ws.send_bytes(msg.data)
|
||||
elif msg.type == web.WSMsgType.close:
|
||||
break
|
||||
|
||||
return ws
|
||||
|
||||
|
||||
app = web.Application()
|
||||
app.add_routes([web.get('/', handle),
|
||||
web.get('/echo', wshandle),
|
||||
web.get('/{name}', handle)])
|
||||
|
||||
if __name__ == '__main__':
|
||||
web.run_app(app)
|
||||
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
https://aiohttp.readthedocs.io/
|
||||
|
||||
|
||||
Demos
|
||||
=====
|
||||
|
||||
https://github.com/aio-libs/aiohttp-demos
|
||||
|
||||
|
||||
External links
|
||||
==============
|
||||
|
||||
* `Third party libraries
|
||||
<http://aiohttp.readthedocs.io/en/latest/third_party.html>`_
|
||||
* `Built with aiohttp
|
||||
<http://aiohttp.readthedocs.io/en/latest/built_with.html>`_
|
||||
* `Powered by aiohttp
|
||||
<http://aiohttp.readthedocs.io/en/latest/powered_by.html>`_
|
||||
|
||||
Feel free to make a Pull Request for adding your link to these pages!
|
||||
|
||||
|
||||
Communication channels
|
||||
======================
|
||||
|
||||
*aio-libs discourse group*: https://aio-libs.discourse.group
|
||||
|
||||
*gitter chat* https://gitter.im/aio-libs/Lobby
|
||||
|
||||
We support `Stack Overflow
|
||||
<https://stackoverflow.com/questions/tagged/aiohttp>`_.
|
||||
Please add *aiohttp* tag to your question there.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
- Python >= 3.6
|
||||
- async-timeout_
|
||||
- attrs_
|
||||
- chardet_
|
||||
- multidict_
|
||||
- yarl_
|
||||
|
||||
Optionally you may install the cChardet_ and aiodns_ libraries (highly
|
||||
recommended for sake of speed).
|
||||
|
||||
.. _chardet: https://pypi.python.org/pypi/chardet
|
||||
.. _aiodns: https://pypi.python.org/pypi/aiodns
|
||||
.. _attrs: https://github.com/python-attrs/attrs
|
||||
.. _multidict: https://pypi.python.org/pypi/multidict
|
||||
.. _yarl: https://pypi.python.org/pypi/yarl
|
||||
.. _async-timeout: https://pypi.python.org/pypi/async_timeout
|
||||
.. _cChardet: https://pypi.python.org/pypi/cchardet
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
``aiohttp`` is offered under the Apache 2 license.
|
||||
|
||||
|
||||
Keepsafe
|
||||
========
|
||||
|
||||
The aiohttp community would like to thank Keepsafe
|
||||
(https://www.getkeepsafe.com) for its support in the early days of
|
||||
the project.
|
||||
|
||||
|
||||
Source code
|
||||
===========
|
||||
|
||||
The latest developer version is available in a GitHub repository:
|
||||
https://github.com/aio-libs/aiohttp
|
||||
|
||||
Benchmarks
|
||||
==========
|
||||
|
||||
If you are interested in efficiency, the AsyncIO community maintains a
|
||||
list of benchmarks on the official wiki:
|
||||
https://github.com/python/asyncio/wiki/Benchmarks
|
||||
|
||||
=========
|
||||
Changelog
|
||||
=========
|
||||
|
||||
..
|
||||
You should *NOT* be adding new change log entries to this file, this
|
||||
file is managed by towncrier. You *may* edit previous change logs to
|
||||
fix problems like typo corrections or such.
|
||||
To add a new change log entry, please see
|
||||
https://pip.pypa.io/en/latest/development/#adding-a-news-entry
|
||||
we named the news folder "changes".
|
||||
|
||||
WARNING: Don't drop the next directive!
|
||||
|
||||
.. towncrier release notes start
|
||||
|
||||
3.7.4.post0 (2021-03-06)
|
||||
========================
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- Bumped upper bound of the ``chardet`` runtime dependency
|
||||
to allow their v4.0 version stream.
|
||||
`#5366 <https://github.com/aio-libs/aiohttp/issues/5366>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.4 (2021-02-25)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- **(SECURITY BUG)** Started preventing open redirects in the
|
||||
``aiohttp.web.normalize_path_middleware`` middleware. For
|
||||
more details, see
|
||||
https://github.com/aio-libs/aiohttp/security/advisories/GHSA-v6wp-4m6f-gcjg.
|
||||
|
||||
Thanks to `Beast Glatisant <https://github.com/g147>`__ for
|
||||
finding the first instance of this issue and `Jelmer Vernooij
|
||||
<https://jelmer.uk/>`__ for reporting and tracking it down
|
||||
in aiohttp.
|
||||
`#5497 <https://github.com/aio-libs/aiohttp/issues/5497>`_
|
||||
- Fix interpretation difference of the pure-Python and the Cython-based
|
||||
HTTP parsers construct a ``yarl.URL`` object for HTTP request-target.
|
||||
|
||||
Before this fix, the Python parser would turn the URI's absolute-path
|
||||
for ``//some-path`` into ``/`` while the Cython code preserved it as
|
||||
``//some-path``. Now, both do the latter.
|
||||
`#5498 <https://github.com/aio-libs/aiohttp/issues/5498>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.3 (2020-11-18)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Use Brotli instead of brotlipy
|
||||
`#3803 <https://github.com/aio-libs/aiohttp/issues/3803>`_
|
||||
- Made exceptions pickleable. Also changed the repr of some exceptions.
|
||||
`#4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Raise a ClientResponseError instead of an AssertionError for a blank
|
||||
HTTP Reason Phrase.
|
||||
`#3532 <https://github.com/aio-libs/aiohttp/issues/3532>`_
|
||||
- Fix ``web_middlewares.normalize_path_middleware`` behavior for patch without slash.
|
||||
`#3669 <https://github.com/aio-libs/aiohttp/issues/3669>`_
|
||||
- Fix overshadowing of overlapped sub-applications prefixes.
|
||||
`#3701 <https://github.com/aio-libs/aiohttp/issues/3701>`_
|
||||
- Make `BaseConnector.close()` a coroutine and wait until the client closes all connections. Drop deprecated "with Connector():" syntax.
|
||||
`#3736 <https://github.com/aio-libs/aiohttp/issues/3736>`_
|
||||
- Reset the ``sock_read`` timeout each time data is received for a ``aiohttp.client`` response.
|
||||
`#3808 <https://github.com/aio-libs/aiohttp/issues/3808>`_
|
||||
- Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View
|
||||
`#3880 <https://github.com/aio-libs/aiohttp/issues/3880>`_
|
||||
- Fixed querying the address families from DNS that the current host supports.
|
||||
`#5156 <https://github.com/aio-libs/aiohttp/issues/5156>`_
|
||||
- Change return type of MultipartReader.__aiter__() and BodyPartReader.__aiter__() to AsyncIterator.
|
||||
`#5163 <https://github.com/aio-libs/aiohttp/issues/5163>`_
|
||||
- Provide x86 Windows wheels.
|
||||
`#5230 <https://github.com/aio-libs/aiohttp/issues/5230>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Add documentation for ``aiohttp.web.FileResponse``.
|
||||
`#3958 <https://github.com/aio-libs/aiohttp/issues/3958>`_
|
||||
- Removed deprecation warning in tracing example docs
|
||||
`#3964 <https://github.com/aio-libs/aiohttp/issues/3964>`_
|
||||
- Fixed wrong "Usage" docstring of ``aiohttp.client.request``.
|
||||
`#4603 <https://github.com/aio-libs/aiohttp/issues/4603>`_
|
||||
- Add aiohttp-pydantic to third party libraries
|
||||
`#5228 <https://github.com/aio-libs/aiohttp/issues/5228>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#4102 <https://github.com/aio-libs/aiohttp/issues/4102>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.2 (2020-10-27)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed static files handling for loops without ``.sendfile()`` support
|
||||
`#5149 <https://github.com/aio-libs/aiohttp/issues/5149>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.1 (2020-10-25)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed a type error caused by the conditional import of `Protocol`.
|
||||
`#5111 <https://github.com/aio-libs/aiohttp/issues/5111>`_
|
||||
- Server doesn't send Content-Length for 1xx or 204
|
||||
`#4901 <https://github.com/aio-libs/aiohttp/issues/4901>`_
|
||||
- Fix run_app typing
|
||||
`#4957 <https://github.com/aio-libs/aiohttp/issues/4957>`_
|
||||
- Always require ``typing_extensions`` library.
|
||||
`#5107 <https://github.com/aio-libs/aiohttp/issues/5107>`_
|
||||
- Fix a variable-shadowing bug causing `ThreadedResolver.resolve` to
|
||||
return the resolved IP as the ``hostname`` in each record, which prevented
|
||||
validation of HTTPS connections.
|
||||
`#5110 <https://github.com/aio-libs/aiohttp/issues/5110>`_
|
||||
- Added annotations to all public attributes.
|
||||
`#5115 <https://github.com/aio-libs/aiohttp/issues/5115>`_
|
||||
- Fix flaky test_when_timeout_smaller_second
|
||||
`#5116 <https://github.com/aio-libs/aiohttp/issues/5116>`_
|
||||
- Ensure sending a zero byte file does not throw an exception
|
||||
`#5124 <https://github.com/aio-libs/aiohttp/issues/5124>`_
|
||||
- Fix a bug in ``web.run_app()`` about Python version checking on Windows
|
||||
`#5127 <https://github.com/aio-libs/aiohttp/issues/5127>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.0 (2020-10-24)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Response headers are now prepared prior to running ``on_response_prepare`` hooks, directly before headers are sent to the client.
|
||||
`#1958 <https://github.com/aio-libs/aiohttp/issues/1958>`_
|
||||
- Add a ``quote_cookie`` option to ``CookieJar``, a way to skip quotation wrapping of cookies containing special characters.
|
||||
`#2571 <https://github.com/aio-libs/aiohttp/issues/2571>`_
|
||||
- Call ``AccessLogger.log`` with the current exception available from ``sys.exc_info()``.
|
||||
`#3557 <https://github.com/aio-libs/aiohttp/issues/3557>`_
|
||||
- `web.UrlDispatcher.add_routes` and `web.Application.add_routes` return a list
|
||||
of registered `AbstractRoute` instances. `AbstractRouteDef.register` (and all
|
||||
subclasses) return a list of registered resources registered resource.
|
||||
`#3866 <https://github.com/aio-libs/aiohttp/issues/3866>`_
|
||||
- Added properties of default ClientSession params to ClientSession class so it is available for introspection
|
||||
`#3882 <https://github.com/aio-libs/aiohttp/issues/3882>`_
|
||||
- Don't cancel web handler on peer disconnection, raise `OSError` on reading/writing instead.
|
||||
`#4080 <https://github.com/aio-libs/aiohttp/issues/4080>`_
|
||||
- Implement BaseRequest.get_extra_info() to access a protocol transports' extra info.
|
||||
`#4189 <https://github.com/aio-libs/aiohttp/issues/4189>`_
|
||||
- Added `ClientSession.timeout` property.
|
||||
`#4191 <https://github.com/aio-libs/aiohttp/issues/4191>`_
|
||||
- allow use of SameSite in cookies.
|
||||
`#4224 <https://github.com/aio-libs/aiohttp/issues/4224>`_
|
||||
- Use ``loop.sendfile()`` instead of custom implementation if available.
|
||||
`#4269 <https://github.com/aio-libs/aiohttp/issues/4269>`_
|
||||
- Apply SO_REUSEADDR to test server's socket.
|
||||
`#4393 <https://github.com/aio-libs/aiohttp/issues/4393>`_
|
||||
- Use .raw_host instead of slower .host in client API
|
||||
`#4402 <https://github.com/aio-libs/aiohttp/issues/4402>`_
|
||||
- Allow configuring the buffer size of input stream by passing ``read_bufsize`` argument.
|
||||
`#4453 <https://github.com/aio-libs/aiohttp/issues/4453>`_
|
||||
- Pass tests on Python 3.8 for Windows.
|
||||
`#4513 <https://github.com/aio-libs/aiohttp/issues/4513>`_
|
||||
- Add `method` and `url` attributes to `TraceRequestChunkSentParams` and `TraceResponseChunkReceivedParams`.
|
||||
`#4674 <https://github.com/aio-libs/aiohttp/issues/4674>`_
|
||||
- Add ClientResponse.ok property for checking status code under 400.
|
||||
`#4711 <https://github.com/aio-libs/aiohttp/issues/4711>`_
|
||||
- Don't ceil timeouts that are smaller than 5 seconds.
|
||||
`#4850 <https://github.com/aio-libs/aiohttp/issues/4850>`_
|
||||
- TCPSite now listens by default on all interfaces instead of just IPv4 when `None` is passed in as the host.
|
||||
`#4894 <https://github.com/aio-libs/aiohttp/issues/4894>`_
|
||||
- Bump ``http_parser`` to 2.9.4
|
||||
`#5070 <https://github.com/aio-libs/aiohttp/issues/5070>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix keepalive connections not being closed in time
|
||||
`#3296 <https://github.com/aio-libs/aiohttp/issues/3296>`_
|
||||
- Fix failed websocket handshake leaving connection hanging.
|
||||
`#3380 <https://github.com/aio-libs/aiohttp/issues/3380>`_
|
||||
- Fix tasks cancellation order on exit. The run_app task needs to be cancelled first for cleanup hooks to run with all tasks intact.
|
||||
`#3805 <https://github.com/aio-libs/aiohttp/issues/3805>`_
|
||||
- Don't start heartbeat until _writer is set
|
||||
`#4062 <https://github.com/aio-libs/aiohttp/issues/4062>`_
|
||||
- Fix handling of multipart file uploads without a content type.
|
||||
`#4089 <https://github.com/aio-libs/aiohttp/issues/4089>`_
|
||||
- Preserve view handler function attributes across middlewares
|
||||
`#4174 <https://github.com/aio-libs/aiohttp/issues/4174>`_
|
||||
- Fix the string representation of ``ServerDisconnectedError``.
|
||||
`#4175 <https://github.com/aio-libs/aiohttp/issues/4175>`_
|
||||
- Raising RuntimeError when trying to get encoding from not read body
|
||||
`#4214 <https://github.com/aio-libs/aiohttp/issues/4214>`_
|
||||
- Remove warning messages from noop.
|
||||
`#4282 <https://github.com/aio-libs/aiohttp/issues/4282>`_
|
||||
- Raise ClientPayloadError if FormData re-processed.
|
||||
`#4345 <https://github.com/aio-libs/aiohttp/issues/4345>`_
|
||||
- Fix a warning about unfinished task in ``web_protocol.py``
|
||||
`#4408 <https://github.com/aio-libs/aiohttp/issues/4408>`_
|
||||
- Fixed 'deflate' compression. According to RFC 2616 now.
|
||||
`#4506 <https://github.com/aio-libs/aiohttp/issues/4506>`_
|
||||
- Fixed OverflowError on platforms with 32-bit time_t
|
||||
`#4515 <https://github.com/aio-libs/aiohttp/issues/4515>`_
|
||||
- Fixed request.body_exists returns wrong value for methods without body.
|
||||
`#4528 <https://github.com/aio-libs/aiohttp/issues/4528>`_
|
||||
- Fix connecting to link-local IPv6 addresses.
|
||||
`#4554 <https://github.com/aio-libs/aiohttp/issues/4554>`_
|
||||
- Fix a problem with connection waiters that are never awaited.
|
||||
`#4562 <https://github.com/aio-libs/aiohttp/issues/4562>`_
|
||||
- Always make sure transport is not closing before reuse a connection.
|
||||
|
||||
Reuse a protocol based on keepalive in headers is unreliable.
|
||||
For example, uWSGI will not support keepalive even it serves a
|
||||
HTTP 1.1 request, except explicitly configure uWSGI with a
|
||||
``--http-keepalive`` option.
|
||||
|
||||
Servers designed like uWSGI could cause aiohttp intermittently
|
||||
raise a ConnectionResetException when the protocol poll runs
|
||||
out and some protocol is reused.
|
||||
`#4587 <https://github.com/aio-libs/aiohttp/issues/4587>`_
|
||||
- Handle the last CRLF correctly even if it is received via separate TCP segment.
|
||||
`#4630 <https://github.com/aio-libs/aiohttp/issues/4630>`_
|
||||
- Fix the register_resource function to validate route name before splitting it so that route name can include python keywords.
|
||||
`#4691 <https://github.com/aio-libs/aiohttp/issues/4691>`_
|
||||
- Improve typing annotations for ``web.Request``, ``aiohttp.ClientResponse`` and
|
||||
``multipart`` module.
|
||||
`#4736 <https://github.com/aio-libs/aiohttp/issues/4736>`_
|
||||
- Fix resolver task is not awaited when connector is cancelled
|
||||
`#4795 <https://github.com/aio-libs/aiohttp/issues/4795>`_
|
||||
- Fix a bug "Aiohttp doesn't return any error on invalid request methods"
|
||||
`#4798 <https://github.com/aio-libs/aiohttp/issues/4798>`_
|
||||
- Fix HEAD requests for static content.
|
||||
`#4809 <https://github.com/aio-libs/aiohttp/issues/4809>`_
|
||||
- Fix incorrect size calculation for memoryview
|
||||
`#4890 <https://github.com/aio-libs/aiohttp/issues/4890>`_
|
||||
- Add HTTPMove to _all__.
|
||||
`#4897 <https://github.com/aio-libs/aiohttp/issues/4897>`_
|
||||
- Fixed the type annotations in the ``tracing`` module.
|
||||
`#4912 <https://github.com/aio-libs/aiohttp/issues/4912>`_
|
||||
- Fix typing for multipart ``__aiter__``.
|
||||
`#4931 <https://github.com/aio-libs/aiohttp/issues/4931>`_
|
||||
- Fix for race condition on connections in BaseConnector that leads to exceeding the connection limit.
|
||||
`#4936 <https://github.com/aio-libs/aiohttp/issues/4936>`_
|
||||
- Add forced UTF-8 encoding for ``application/rdap+json`` responses.
|
||||
`#4938 <https://github.com/aio-libs/aiohttp/issues/4938>`_
|
||||
- Fix inconsistency between Python and C http request parsers in parsing pct-encoded URL.
|
||||
`#4972 <https://github.com/aio-libs/aiohttp/issues/4972>`_
|
||||
- Fix connection closing issue in HEAD request.
|
||||
`#5012 <https://github.com/aio-libs/aiohttp/issues/5012>`_
|
||||
- Fix type hint on BaseRunner.addresses (from ``List[str]`` to ``List[Any]``)
|
||||
`#5086 <https://github.com/aio-libs/aiohttp/issues/5086>`_
|
||||
- Make `web.run_app()` more responsive to Ctrl+C on Windows for Python < 3.8. It slightly
|
||||
increases CPU load as a side effect.
|
||||
`#5098 <https://github.com/aio-libs/aiohttp/issues/5098>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Fix example code in client quick-start
|
||||
`#3376 <https://github.com/aio-libs/aiohttp/issues/3376>`_
|
||||
- Updated the docs so there is no contradiction in ``ttl_dns_cache`` default value
|
||||
`#3512 <https://github.com/aio-libs/aiohttp/issues/3512>`_
|
||||
- Add 'Deploy with SSL' to docs.
|
||||
`#4201 <https://github.com/aio-libs/aiohttp/issues/4201>`_
|
||||
- Change typing of the secure argument on StreamResponse.set_cookie from ``Optional[str]`` to ``Optional[bool]``
|
||||
`#4204 <https://github.com/aio-libs/aiohttp/issues/4204>`_
|
||||
- Changes ``ttl_dns_cache`` type from int to Optional[int].
|
||||
`#4270 <https://github.com/aio-libs/aiohttp/issues/4270>`_
|
||||
- Simplify README hello word example and add a documentation page for people coming from requests.
|
||||
`#4272 <https://github.com/aio-libs/aiohttp/issues/4272>`_
|
||||
- Improve some code examples in the documentation involving websockets and starting a simple HTTP site with an AppRunner.
|
||||
`#4285 <https://github.com/aio-libs/aiohttp/issues/4285>`_
|
||||
- Fix typo in code example in Multipart docs
|
||||
`#4312 <https://github.com/aio-libs/aiohttp/issues/4312>`_
|
||||
- Fix code example in Multipart section.
|
||||
`#4314 <https://github.com/aio-libs/aiohttp/issues/4314>`_
|
||||
- Update contributing guide so new contributors read the most recent version of that guide. Update command used to create test coverage reporting.
|
||||
`#4810 <https://github.com/aio-libs/aiohttp/issues/4810>`_
|
||||
- Spelling: Change "canonize" to "canonicalize".
|
||||
`#4986 <https://github.com/aio-libs/aiohttp/issues/4986>`_
|
||||
- Add ``aiohttp-sse-client`` library to third party usage list.
|
||||
`#5084 <https://github.com/aio-libs/aiohttp/issues/5084>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#2856 <https://github.com/aio-libs/aiohttp/issues/2856>`_, `#4218 <https://github.com/aio-libs/aiohttp/issues/4218>`_, `#4250 <https://github.com/aio-libs/aiohttp/issues/4250>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.6.3 (2020-10-12)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Pin yarl to ``<1.6.0`` to avoid buggy behavior that will be fixed by the next aiohttp
|
||||
release.
|
||||
|
||||
3.6.2 (2019-10-09)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Made exceptions pickleable. Also changed the repr of some exceptions.
|
||||
`#4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_
|
||||
- Use ``Iterable`` type hint instead of ``Sequence`` for ``Application`` *middleware*
|
||||
parameter. `#4125 <https://github.com/aio-libs/aiohttp/issues/4125>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Reset the ``sock_read`` timeout each time data is received for a
|
||||
``aiohttp.ClientResponse``. `#3808
|
||||
<https://github.com/aio-libs/aiohttp/issues/3808>`_
|
||||
- Fix handling of expired cookies so they are not stored in CookieJar.
|
||||
`#4063 <https://github.com/aio-libs/aiohttp/issues/4063>`_
|
||||
- Fix misleading message in the string representation of ``ClientConnectorError``;
|
||||
``self.ssl == None`` means default SSL context, not SSL disabled `#4097
|
||||
<https://github.com/aio-libs/aiohttp/issues/4097>`_
|
||||
- Don't clobber HTTP status when using FileResponse.
|
||||
`#4106 <https://github.com/aio-libs/aiohttp/issues/4106>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Added minimal required logging configuration to logging documentation.
|
||||
`#2469 <https://github.com/aio-libs/aiohttp/issues/2469>`_
|
||||
- Update docs to reflect proxy support.
|
||||
`#4100 <https://github.com/aio-libs/aiohttp/issues/4100>`_
|
||||
- Fix typo in code example in testing docs.
|
||||
`#4108 <https://github.com/aio-libs/aiohttp/issues/4108>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#4102 <https://github.com/aio-libs/aiohttp/issues/4102>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.6.1 (2019-09-19)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Compatibility with Python 3.8.
|
||||
`#4056 <https://github.com/aio-libs/aiohttp/issues/4056>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- correct some exception string format
|
||||
`#4068 <https://github.com/aio-libs/aiohttp/issues/4068>`_
|
||||
- Emit a warning when ``ssl.OP_NO_COMPRESSION`` is
|
||||
unavailable because the runtime is built against
|
||||
an outdated OpenSSL.
|
||||
`#4052 <https://github.com/aio-libs/aiohttp/issues/4052>`_
|
||||
- Update multidict requirement to >= 4.5
|
||||
`#4057 <https://github.com/aio-libs/aiohttp/issues/4057>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Provide pytest-aiohttp namespace for pytest fixtures in docs.
|
||||
`#3723 <https://github.com/aio-libs/aiohttp/issues/3723>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.6.0 (2019-09-06)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Add support for Named Pipes (Site and Connector) under Windows. This feature requires
|
||||
Proactor event loop to work. `#3629
|
||||
<https://github.com/aio-libs/aiohttp/issues/3629>`_
|
||||
- Removed ``Transfer-Encoding: chunked`` header from websocket responses to be
|
||||
compatible with more http proxy servers. `#3798
|
||||
<https://github.com/aio-libs/aiohttp/issues/3798>`_
|
||||
- Accept non-GET request for starting websocket handshake on server side.
|
||||
`#3980 <https://github.com/aio-libs/aiohttp/issues/3980>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Raise a ClientResponseError instead of an AssertionError for a blank
|
||||
HTTP Reason Phrase.
|
||||
`#3532 <https://github.com/aio-libs/aiohttp/issues/3532>`_
|
||||
- Fix an issue where cookies would sometimes not be set during a redirect.
|
||||
`#3576 <https://github.com/aio-libs/aiohttp/issues/3576>`_
|
||||
- Change normalize_path_middleware to use 308 redirect instead of 301.
|
||||
|
||||
This behavior should prevent clients from being unable to use PUT/POST
|
||||
methods on endpoints that are redirected because of a trailing slash.
|
||||
`#3579 <https://github.com/aio-libs/aiohttp/issues/3579>`_
|
||||
- Drop the processed task from ``all_tasks()`` list early. It prevents logging about a
|
||||
task with unhandled exception when the server is used in conjunction with
|
||||
``asyncio.run()``. `#3587 <https://github.com/aio-libs/aiohttp/issues/3587>`_
|
||||
- ``Signal`` type annotation changed from ``Signal[Callable[['TraceConfig'],
|
||||
Awaitable[None]]]`` to ``Signal[Callable[ClientSession, SimpleNamespace, ...]``.
|
||||
`#3595 <https://github.com/aio-libs/aiohttp/issues/3595>`_
|
||||
- Use sanitized URL as Location header in redirects
|
||||
`#3614 <https://github.com/aio-libs/aiohttp/issues/3614>`_
|
||||
- Improve typing annotations for multipart.py along with changes required
|
||||
by mypy in files that references multipart.py.
|
||||
`#3621 <https://github.com/aio-libs/aiohttp/issues/3621>`_
|
||||
- Close session created inside ``aiohttp.request`` when unhandled exception occurs
|
||||
`#3628 <https://github.com/aio-libs/aiohttp/issues/3628>`_
|
||||
- Cleanup per-chunk data in generic data read. Memory leak fixed.
|
||||
`#3631 <https://github.com/aio-libs/aiohttp/issues/3631>`_
|
||||
- Use correct type for add_view and family
|
||||
`#3633 <https://github.com/aio-libs/aiohttp/issues/3633>`_
|
||||
- Fix _keepalive field in __slots__ of ``RequestHandler``.
|
||||
`#3644 <https://github.com/aio-libs/aiohttp/issues/3644>`_
|
||||
- Properly handle ConnectionResetError, to silence the "Cannot write to closing
|
||||
transport" exception when clients disconnect uncleanly.
|
||||
`#3648 <https://github.com/aio-libs/aiohttp/issues/3648>`_
|
||||
- Suppress pytest warnings due to ``test_utils`` classes
|
||||
`#3660 <https://github.com/aio-libs/aiohttp/issues/3660>`_
|
||||
- Fix overshadowing of overlapped sub-application prefixes.
|
||||
`#3701 <https://github.com/aio-libs/aiohttp/issues/3701>`_
|
||||
- Fixed return type annotation for WSMessage.json()
|
||||
`#3720 <https://github.com/aio-libs/aiohttp/issues/3720>`_
|
||||
- Properly expose TooManyRedirects publicly as documented.
|
||||
`#3818 <https://github.com/aio-libs/aiohttp/issues/3818>`_
|
||||
- Fix missing brackets for IPv6 in proxy CONNECT request
|
||||
`#3841 <https://github.com/aio-libs/aiohttp/issues/3841>`_
|
||||
- Make the signature of ``aiohttp.test_utils.TestClient.request`` match
|
||||
``asyncio.ClientSession.request`` according to the docs `#3852
|
||||
<https://github.com/aio-libs/aiohttp/issues/3852>`_
|
||||
- Use correct style for re-exported imports, makes mypy ``--strict`` mode happy.
|
||||
`#3868 <https://github.com/aio-libs/aiohttp/issues/3868>`_
|
||||
- Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of
|
||||
View `#3880 <https://github.com/aio-libs/aiohttp/issues/3880>`_
|
||||
- Made cython HTTP parser set Reason-Phrase of the response to an empty string if it is
|
||||
missing. `#3906 <https://github.com/aio-libs/aiohttp/issues/3906>`_
|
||||
- Add URL to the string representation of ClientResponseError.
|
||||
`#3959 <https://github.com/aio-libs/aiohttp/issues/3959>`_
|
||||
- Accept ``istr`` keys in ``LooseHeaders`` type hints.
|
||||
`#3976 <https://github.com/aio-libs/aiohttp/issues/3976>`_
|
||||
- Fixed race conditions in _resolve_host caching and throttling when tracing is enabled.
|
||||
`#4013 <https://github.com/aio-libs/aiohttp/issues/4013>`_
|
||||
- For URLs like "unix://localhost/..." set Host HTTP header to "localhost" instead of
|
||||
"localhost:None". `#4039 <https://github.com/aio-libs/aiohttp/issues/4039>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Modify documentation for Background Tasks to remove deprecated usage of event loop.
|
||||
`#3526 <https://github.com/aio-libs/aiohttp/issues/3526>`_
|
||||
- use ``if __name__ == '__main__':`` in server examples.
|
||||
`#3775 <https://github.com/aio-libs/aiohttp/issues/3775>`_
|
||||
- Update documentation reference to the default access logger.
|
||||
`#3783 <https://github.com/aio-libs/aiohttp/issues/3783>`_
|
||||
- Improve documentation for ``web.BaseRequest.path`` and ``web.BaseRequest.raw_path``.
|
||||
`#3791 <https://github.com/aio-libs/aiohttp/issues/3791>`_
|
||||
- Removed deprecation warning in tracing example docs
|
||||
`#3964 <https://github.com/aio-libs/aiohttp/issues/3964>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.5.4 (2019-01-12)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix stream ``.read()`` / ``.readany()`` / ``.iter_any()`` which used to return a
|
||||
partial content only in case of compressed content
|
||||
`#3525 <https://github.com/aio-libs/aiohttp/issues/3525>`_
|
||||
|
||||
|
||||
3.5.3 (2019-01-10)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix type stubs for ``aiohttp.web.run_app(access_log=True)`` and fix edge case of
|
||||
``access_log=True`` and the event loop being in debug mode. `#3504
|
||||
<https://github.com/aio-libs/aiohttp/issues/3504>`_
|
||||
- Fix ``aiohttp.ClientTimeout`` type annotations to accept ``None`` for fields
|
||||
`#3511 <https://github.com/aio-libs/aiohttp/issues/3511>`_
|
||||
- Send custom per-request cookies even if session jar is empty
|
||||
`#3515 <https://github.com/aio-libs/aiohttp/issues/3515>`_
|
||||
- Restore Linux binary wheels publishing on PyPI
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.5.2 (2019-01-08)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- ``FileResponse`` from ``web_fileresponse.py`` uses a ``ThreadPoolExecutor`` to work
|
||||
with files asynchronously. I/O based payloads from ``payload.py`` uses a
|
||||
``ThreadPoolExecutor`` to work with I/O objects asynchronously. `#3313
|
||||
<https://github.com/aio-libs/aiohttp/issues/3313>`_
|
||||
- Internal Server Errors in plain text if the browser does not support HTML.
|
||||
`#3483 <https://github.com/aio-libs/aiohttp/issues/3483>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Preserve MultipartWriter parts headers on write. Refactor the way how
|
||||
``Payload.headers`` are handled. Payload instances now always have headers and
|
||||
Content-Type defined. Fix Payload Content-Disposition header reset after initial
|
||||
creation. `#3035 <https://github.com/aio-libs/aiohttp/issues/3035>`_
|
||||
- Log suppressed exceptions in ``GunicornWebWorker``.
|
||||
`#3464 <https://github.com/aio-libs/aiohttp/issues/3464>`_
|
||||
- Remove wildcard imports.
|
||||
`#3468 <https://github.com/aio-libs/aiohttp/issues/3468>`_
|
||||
- Use the same task for app initialization and web server handling in gunicorn workers.
|
||||
It allows to use Python3.7 context vars smoothly.
|
||||
`#3471 <https://github.com/aio-libs/aiohttp/issues/3471>`_
|
||||
- Fix handling of chunked+gzipped response when first chunk does not give uncompressed
|
||||
data `#3477 <https://github.com/aio-libs/aiohttp/issues/3477>`_
|
||||
- Replace ``collections.MutableMapping`` with ``collections.abc.MutableMapping`` to
|
||||
avoid a deprecation warning. `#3480
|
||||
<https://github.com/aio-libs/aiohttp/issues/3480>`_
|
||||
- ``Payload.size`` type annotation changed from ``Optional[float]`` to
|
||||
``Optional[int]``. `#3484 <https://github.com/aio-libs/aiohttp/issues/3484>`_
|
||||
- Ignore done tasks when cancels pending activities on ``web.run_app`` finalization.
|
||||
`#3497 <https://github.com/aio-libs/aiohttp/issues/3497>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Add documentation for ``aiohttp.web.HTTPException``.
|
||||
`#3490 <https://github.com/aio-libs/aiohttp/issues/3490>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#3487 <https://github.com/aio-libs/aiohttp/issues/3487>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.5.1 (2018-12-24)
|
||||
====================
|
||||
|
||||
- Fix a regression about ``ClientSession._requote_redirect_url`` modification in debug
|
||||
mode.
|
||||
|
||||
3.5.0 (2018-12-22)
|
||||
====================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- The library type annotations are checked in strict mode now.
|
||||
- Add support for setting cookies for individual request (`#2387
|
||||
<https://github.com/aio-libs/aiohttp/pull/2387>`_)
|
||||
- Application.add_domain implementation (`#2809
|
||||
<https://github.com/aio-libs/aiohttp/pull/2809>`_)
|
||||
- The default ``app`` in the request returned by ``test_utils.make_mocked_request`` can
|
||||
now have objects assigned to it and retrieved using the ``[]`` operator. (`#3174
|
||||
<https://github.com/aio-libs/aiohttp/pull/3174>`_)
|
||||
- Make ``request.url`` accessible when transport is closed. (`#3177
|
||||
<https://github.com/aio-libs/aiohttp/pull/3177>`_)
|
||||
- Add ``zlib_executor_size`` argument to ``Response`` constructor to allow compression
|
||||
to run in a background executor to avoid blocking the main thread and potentially
|
||||
triggering health check failures. (`#3205
|
||||
<https://github.com/aio-libs/aiohttp/pull/3205>`_)
|
||||
- Enable users to set ``ClientTimeout`` in ``aiohttp.request`` (`#3213
|
||||
<https://github.com/aio-libs/aiohttp/pull/3213>`_)
|
||||
- Don't raise a warning if ``NETRC`` environment variable is not set and ``~/.netrc``
|
||||
file doesn't exist. (`#3267 <https://github.com/aio-libs/aiohttp/pull/3267>`_)
|
||||
- Add default logging handler to web.run_app If the ``Application.debug``` flag is set
|
||||
and the default logger ``aiohttp.access`` is used, access logs will now be output
|
||||
using a *stderr* ``StreamHandler`` if no handlers are attached. Furthermore, if the
|
||||
default logger has no log level set, the log level will be set to ``DEBUG``. (`#3324
|
||||
<https://github.com/aio-libs/aiohttp/pull/3324>`_)
|
||||
- Add method argument to ``session.ws_connect()``. Sometimes server API requires a
|
||||
different HTTP method for WebSocket connection establishment. For example, ``Docker
|
||||
exec`` needs POST. (`#3378 <https://github.com/aio-libs/aiohttp/pull/3378>`_)
|
||||
- Create a task per request handling. (`#3406
|
||||
<https://github.com/aio-libs/aiohttp/pull/3406>`_)
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Enable passing ``access_log_class`` via ``handler_args`` (`#3158
|
||||
<https://github.com/aio-libs/aiohttp/pull/3158>`_)
|
||||
- Return empty bytes with end-of-chunk marker in empty stream reader. (`#3186
|
||||
<https://github.com/aio-libs/aiohttp/pull/3186>`_)
|
||||
- Accept ``CIMultiDictProxy`` instances for ``headers`` argument in ``web.Response``
|
||||
constructor. (`#3207 <https://github.com/aio-libs/aiohttp/pull/3207>`_)
|
||||
- Don't uppercase HTTP method in parser (`#3233
|
||||
<https://github.com/aio-libs/aiohttp/pull/3233>`_)
|
||||
- Make method match regexp RFC-7230 compliant (`#3235
|
||||
<https://github.com/aio-libs/aiohttp/pull/3235>`_)
|
||||
- Add ``app.pre_frozen`` state to properly handle startup signals in
|
||||
sub-applications. (`#3237 <https://github.com/aio-libs/aiohttp/pull/3237>`_)
|
||||
- Enhanced parsing and validation of helpers.BasicAuth.decode. (`#3239
|
||||
<https://github.com/aio-libs/aiohttp/pull/3239>`_)
|
||||
- Change imports from collections module in preparation for 3.8. (`#3258
|
||||
<https://github.com/aio-libs/aiohttp/pull/3258>`_)
|
||||
- Ensure Host header is added first to ClientRequest to better replicate browser (`#3265
|
||||
<https://github.com/aio-libs/aiohttp/pull/3265>`_)
|
||||
- Fix forward compatibility with Python 3.8: importing ABCs directly from the
|
||||
collections module will not be supported anymore. (`#3273
|
||||
<https://github.com/aio-libs/aiohttp/pull/3273>`_)
|
||||
- Keep the query string by ``normalize_path_middleware``. (`#3278
|
||||
<https://github.com/aio-libs/aiohttp/pull/3278>`_)
|
||||
- Fix missing parameter ``raise_for_status`` for aiohttp.request() (`#3290
|
||||
<https://github.com/aio-libs/aiohttp/pull/3290>`_)
|
||||
- Bracket IPv6 addresses in the HOST header (`#3304
|
||||
<https://github.com/aio-libs/aiohttp/pull/3304>`_)
|
||||
- Fix default message for server ping and pong frames. (`#3308
|
||||
<https://github.com/aio-libs/aiohttp/pull/3308>`_)
|
||||
- Fix tests/test_connector.py typo and tests/autobahn/server.py duplicate loop
|
||||
def. (`#3337 <https://github.com/aio-libs/aiohttp/pull/3337>`_)
|
||||
- Fix false-negative indicator end_of_HTTP_chunk in StreamReader.readchunk function
|
||||
(`#3361 <https://github.com/aio-libs/aiohttp/pull/3361>`_)
|
||||
- Release HTTP response before raising status exception (`#3364
|
||||
<https://github.com/aio-libs/aiohttp/pull/3364>`_)
|
||||
- Fix task cancellation when ``sendfile()`` syscall is used by static file
|
||||
handling. (`#3383 <https://github.com/aio-libs/aiohttp/pull/3383>`_)
|
||||
- Fix stack trace for ``asyncio.TimeoutError`` which was not logged, when it is caught
|
||||
in the handler. (`#3414 <https://github.com/aio-libs/aiohttp/pull/3414>`_)
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Improve documentation of ``Application.make_handler`` parameters. (`#3152
|
||||
<https://github.com/aio-libs/aiohttp/pull/3152>`_)
|
||||
- Fix BaseRequest.raw_headers doc. (`#3215
|
||||
<https://github.com/aio-libs/aiohttp/pull/3215>`_)
|
||||
- Fix typo in TypeError exception reason in ``web.Application._handle`` (`#3229
|
||||
<https://github.com/aio-libs/aiohttp/pull/3229>`_)
|
||||
- Make server access log format placeholder %b documentation reflect
|
||||
behavior and docstring. (`#3307 <https://github.com/aio-libs/aiohttp/pull/3307>`_)
|
||||
|
||||
|
||||
Deprecations and Removals
|
||||
-------------------------
|
||||
|
||||
- Deprecate modification of ``session.requote_redirect_url`` (`#2278
|
||||
<https://github.com/aio-libs/aiohttp/pull/2278>`_)
|
||||
- Deprecate ``stream.unread_data()`` (`#3260
|
||||
<https://github.com/aio-libs/aiohttp/pull/3260>`_)
|
||||
- Deprecated use of boolean in ``resp.enable_compression()`` (`#3318
|
||||
<https://github.com/aio-libs/aiohttp/pull/3318>`_)
|
||||
- Encourage creation of aiohttp public objects inside a coroutine (`#3331
|
||||
<https://github.com/aio-libs/aiohttp/pull/3331>`_)
|
||||
- Drop dead ``Connection.detach()`` and ``Connection.writer``. Both methods were broken
|
||||
for more than 2 years. (`#3358 <https://github.com/aio-libs/aiohttp/pull/3358>`_)
|
||||
- Deprecate ``app.loop``, ``request.loop``, ``client.loop`` and ``connector.loop``
|
||||
properties. (`#3374 <https://github.com/aio-libs/aiohttp/pull/3374>`_)
|
||||
- Deprecate explicit debug argument. Use asyncio debug mode instead. (`#3381
|
||||
<https://github.com/aio-libs/aiohttp/pull/3381>`_)
|
||||
- Deprecate body parameter in HTTPException (and derived classes) constructor. (`#3385
|
||||
<https://github.com/aio-libs/aiohttp/pull/3385>`_)
|
||||
- Deprecate bare connector close, use ``async with connector:`` and ``await
|
||||
connector.close()`` instead. (`#3417
|
||||
<https://github.com/aio-libs/aiohttp/pull/3417>`_)
|
||||
- Deprecate obsolete ``read_timeout`` and ``conn_timeout`` in ``ClientSession``
|
||||
constructor. (`#3438 <https://github.com/aio-libs/aiohttp/pull/3438>`_)
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- #3341, #3351
|
||||
Platform: UNKNOWN
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Operating System :: POSIX
|
||||
Classifier: Operating System :: MacOS :: MacOS X
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Topic :: Internet :: WWW/HTTP
|
||||
Classifier: Framework :: AsyncIO
|
||||
Requires-Python: >=3.6
|
||||
Provides-Extra: speedups
|
246
third_party/python/aiohttp/aiohttp.egg-info/SOURCES.txt
vendored
Normal file
246
third_party/python/aiohttp/aiohttp.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,246 @@
|
||||
CHANGES.rst
|
||||
CONTRIBUTORS.txt
|
||||
LICENSE.txt
|
||||
MANIFEST.in
|
||||
Makefile
|
||||
README.rst
|
||||
pyproject.toml
|
||||
setup.cfg
|
||||
setup.py
|
||||
aiohttp/__init__.py
|
||||
aiohttp/_cparser.pxd
|
||||
aiohttp/_find_header.c
|
||||
aiohttp/_find_header.h
|
||||
aiohttp/_find_header.pxd
|
||||
aiohttp/_frozenlist.c
|
||||
aiohttp/_frozenlist.pyx
|
||||
aiohttp/_headers.pxi
|
||||
aiohttp/_helpers.c
|
||||
aiohttp/_helpers.pyi
|
||||
aiohttp/_helpers.pyx
|
||||
aiohttp/_http_parser.c
|
||||
aiohttp/_http_parser.pyx
|
||||
aiohttp/_http_writer.c
|
||||
aiohttp/_http_writer.pyx
|
||||
aiohttp/_websocket.c
|
||||
aiohttp/_websocket.pyx
|
||||
aiohttp/abc.py
|
||||
aiohttp/base_protocol.py
|
||||
aiohttp/client.py
|
||||
aiohttp/client_exceptions.py
|
||||
aiohttp/client_proto.py
|
||||
aiohttp/client_reqrep.py
|
||||
aiohttp/client_ws.py
|
||||
aiohttp/connector.py
|
||||
aiohttp/cookiejar.py
|
||||
aiohttp/formdata.py
|
||||
aiohttp/frozenlist.py
|
||||
aiohttp/frozenlist.pyi
|
||||
aiohttp/hdrs.py
|
||||
aiohttp/helpers.py
|
||||
aiohttp/http.py
|
||||
aiohttp/http_exceptions.py
|
||||
aiohttp/http_parser.py
|
||||
aiohttp/http_websocket.py
|
||||
aiohttp/http_writer.py
|
||||
aiohttp/locks.py
|
||||
aiohttp/log.py
|
||||
aiohttp/multipart.py
|
||||
aiohttp/payload.py
|
||||
aiohttp/payload_streamer.py
|
||||
aiohttp/py.typed
|
||||
aiohttp/pytest_plugin.py
|
||||
aiohttp/resolver.py
|
||||
aiohttp/signals.py
|
||||
aiohttp/signals.pyi
|
||||
aiohttp/streams.py
|
||||
aiohttp/tcp_helpers.py
|
||||
aiohttp/test_utils.py
|
||||
aiohttp/tracing.py
|
||||
aiohttp/typedefs.py
|
||||
aiohttp/web.py
|
||||
aiohttp/web_app.py
|
||||
aiohttp/web_exceptions.py
|
||||
aiohttp/web_fileresponse.py
|
||||
aiohttp/web_log.py
|
||||
aiohttp/web_middlewares.py
|
||||
aiohttp/web_protocol.py
|
||||
aiohttp/web_request.py
|
||||
aiohttp/web_response.py
|
||||
aiohttp/web_routedef.py
|
||||
aiohttp/web_runner.py
|
||||
aiohttp/web_server.py
|
||||
aiohttp/web_urldispatcher.py
|
||||
aiohttp/web_ws.py
|
||||
aiohttp/worker.py
|
||||
aiohttp.egg-info/PKG-INFO
|
||||
aiohttp.egg-info/SOURCES.txt
|
||||
aiohttp.egg-info/dependency_links.txt
|
||||
aiohttp.egg-info/requires.txt
|
||||
aiohttp.egg-info/top_level.txt
|
||||
aiohttp/.hash/_cparser.pxd.hash
|
||||
aiohttp/.hash/_find_header.pxd.hash
|
||||
aiohttp/.hash/_frozenlist.pyx.hash
|
||||
aiohttp/.hash/_helpers.pyi.hash
|
||||
aiohttp/.hash/_helpers.pyx.hash
|
||||
aiohttp/.hash/_http_parser.pyx.hash
|
||||
aiohttp/.hash/_http_writer.pyx.hash
|
||||
aiohttp/.hash/_websocket.pyx.hash
|
||||
aiohttp/.hash/frozenlist.pyi.hash
|
||||
aiohttp/.hash/hdrs.py.hash
|
||||
aiohttp/.hash/signals.pyi.hash
|
||||
docs/Makefile
|
||||
docs/abc.rst
|
||||
docs/aiohttp-icon.svg
|
||||
docs/aiohttp-plain.svg
|
||||
docs/built_with.rst
|
||||
docs/changes.rst
|
||||
docs/client.rst
|
||||
docs/client_advanced.rst
|
||||
docs/client_quickstart.rst
|
||||
docs/client_reference.rst
|
||||
docs/conf.py
|
||||
docs/contributing.rst
|
||||
docs/deployment.rst
|
||||
docs/essays.rst
|
||||
docs/external.rst
|
||||
docs/faq.rst
|
||||
docs/favicon.ico
|
||||
docs/glossary.rst
|
||||
docs/http_request_lifecycle.rst
|
||||
docs/index.rst
|
||||
docs/logging.rst
|
||||
docs/make.bat
|
||||
docs/migration_to_2xx.rst
|
||||
docs/misc.rst
|
||||
docs/multipart.rst
|
||||
docs/multipart_reference.rst
|
||||
docs/new_router.rst
|
||||
docs/old-logo.png
|
||||
docs/old-logo.svg
|
||||
docs/powered_by.rst
|
||||
docs/signals.rst
|
||||
docs/spelling_wordlist.txt
|
||||
docs/streams.rst
|
||||
docs/structures.rst
|
||||
docs/testing.rst
|
||||
docs/third_party.rst
|
||||
docs/tracing_reference.rst
|
||||
docs/utilities.rst
|
||||
docs/web.rst
|
||||
docs/web_advanced.rst
|
||||
docs/web_lowlevel.rst
|
||||
docs/web_quickstart.rst
|
||||
docs/web_reference.rst
|
||||
docs/websocket_utilities.rst
|
||||
docs/whats_new_1_1.rst
|
||||
docs/whats_new_3_0.rst
|
||||
docs/_static/aiohttp-icon-128x128.png
|
||||
examples/background_tasks.py
|
||||
examples/cli_app.py
|
||||
examples/client_auth.py
|
||||
examples/client_json.py
|
||||
examples/client_ws.py
|
||||
examples/curl.py
|
||||
examples/fake_server.py
|
||||
examples/lowlevel_srv.py
|
||||
examples/server.crt
|
||||
examples/server.csr
|
||||
examples/server.key
|
||||
examples/server_simple.py
|
||||
examples/static_files.py
|
||||
examples/web_classview.py
|
||||
examples/web_cookies.py
|
||||
examples/web_rewrite_headers_middleware.py
|
||||
examples/web_srv.py
|
||||
examples/web_srv_route_deco.py
|
||||
examples/web_srv_route_table.py
|
||||
examples/web_ws.py
|
||||
examples/websocket.html
|
||||
examples/legacy/crawl.py
|
||||
examples/legacy/srv.py
|
||||
examples/legacy/tcp_protocol_parser.py
|
||||
tests/aiohttp.jpg
|
||||
tests/aiohttp.png
|
||||
tests/conftest.py
|
||||
tests/data.unknown_mime_type
|
||||
tests/data.zero_bytes
|
||||
tests/hello.txt.gz
|
||||
tests/test_base_protocol.py
|
||||
tests/test_classbasedview.py
|
||||
tests/test_client_connection.py
|
||||
tests/test_client_exceptions.py
|
||||
tests/test_client_fingerprint.py
|
||||
tests/test_client_functional.py
|
||||
tests/test_client_proto.py
|
||||
tests/test_client_request.py
|
||||
tests/test_client_response.py
|
||||
tests/test_client_session.py
|
||||
tests/test_client_ws.py
|
||||
tests/test_client_ws_functional.py
|
||||
tests/test_connector.py
|
||||
tests/test_cookiejar.py
|
||||
tests/test_flowcontrol_streams.py
|
||||
tests/test_formdata.py
|
||||
tests/test_frozenlist.py
|
||||
tests/test_helpers.py
|
||||
tests/test_http_exceptions.py
|
||||
tests/test_http_parser.py
|
||||
tests/test_http_writer.py
|
||||
tests/test_locks.py
|
||||
tests/test_loop.py
|
||||
tests/test_multipart.py
|
||||
tests/test_multipart_helpers.py
|
||||
tests/test_payload.py
|
||||
tests/test_proxy.py
|
||||
tests/test_proxy_functional.py
|
||||
tests/test_pytest_plugin.py
|
||||
tests/test_resolver.py
|
||||
tests/test_route_def.py
|
||||
tests/test_run_app.py
|
||||
tests/test_signals.py
|
||||
tests/test_streams.py
|
||||
tests/test_tcp_helpers.py
|
||||
tests/test_test_utils.py
|
||||
tests/test_tracing.py
|
||||
tests/test_urldispatch.py
|
||||
tests/test_web_app.py
|
||||
tests/test_web_cli.py
|
||||
tests/test_web_exceptions.py
|
||||
tests/test_web_functional.py
|
||||
tests/test_web_log.py
|
||||
tests/test_web_middleware.py
|
||||
tests/test_web_protocol.py
|
||||
tests/test_web_request.py
|
||||
tests/test_web_request_handler.py
|
||||
tests/test_web_response.py
|
||||
tests/test_web_runner.py
|
||||
tests/test_web_sendfile.py
|
||||
tests/test_web_sendfile_functional.py
|
||||
tests/test_web_server.py
|
||||
tests/test_web_urldispatcher.py
|
||||
tests/test_web_websocket.py
|
||||
tests/test_web_websocket_functional.py
|
||||
tests/test_websocket_handshake.py
|
||||
tests/test_websocket_parser.py
|
||||
tests/test_websocket_writer.py
|
||||
tests/test_worker.py
|
||||
tests/autobahn/client.py
|
||||
tests/autobahn/fuzzingclient.json
|
||||
tests/autobahn/fuzzingserver.json
|
||||
tests/autobahn/server.py
|
||||
vendor/http-parser/.git
|
||||
vendor/http-parser/.gitignore
|
||||
vendor/http-parser/.mailmap
|
||||
vendor/http-parser/.travis.yml
|
||||
vendor/http-parser/AUTHORS
|
||||
vendor/http-parser/LICENSE-MIT
|
||||
vendor/http-parser/Makefile
|
||||
vendor/http-parser/README.md
|
||||
vendor/http-parser/bench.c
|
||||
vendor/http-parser/http_parser.c
|
||||
vendor/http-parser/http_parser.gyp
|
||||
vendor/http-parser/http_parser.h
|
||||
vendor/http-parser/test.c
|
||||
vendor/http-parser/contrib/parsertrace.c
|
||||
vendor/http-parser/contrib/url_parser.c
|
1
third_party/python/aiohttp/aiohttp.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/aiohttp/aiohttp.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
14
third_party/python/aiohttp/aiohttp.egg-info/requires.txt
vendored
Normal file
14
third_party/python/aiohttp/aiohttp.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
attrs>=17.3.0
|
||||
chardet<5.0,>=2.0
|
||||
multidict<7.0,>=4.5
|
||||
async_timeout<4.0,>=3.0
|
||||
yarl<2.0,>=1.0
|
||||
typing_extensions>=3.6.5
|
||||
|
||||
[:python_version < "3.7"]
|
||||
idna-ssl>=1.0
|
||||
|
||||
[speedups]
|
||||
aiodns
|
||||
brotlipy
|
||||
cchardet
|
1
third_party/python/aiohttp/aiohttp.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/aiohttp/aiohttp.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
aiohttp
|
187
third_party/python/coverage/coverage.egg-info/PKG-INFO
vendored
Normal file
187
third_party/python/coverage/coverage.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,187 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: coverage
|
||||
Version: 5.1
|
||||
Summary: Code coverage measurement for Python
|
||||
Home-page: https://github.com/nedbat/coveragepy
|
||||
Author: Ned Batchelder and 131 others
|
||||
Author-email: ned@nedbatchelder.com
|
||||
License: Apache 2.0
|
||||
Project-URL: Documentation, https://coverage.readthedocs.io
|
||||
Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=pypi
|
||||
Project-URL: Issues, https://github.com/nedbat/coveragepy/issues
|
||||
Description: .. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
|
||||
.. For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
|
||||
|
||||
===========
|
||||
Coverage.py
|
||||
===========
|
||||
|
||||
Code coverage testing for Python.
|
||||
|
||||
| |license| |versions| |status|
|
||||
| |ci-status| |win-ci-status| |docs| |codecov|
|
||||
| |kit| |format| |repos|
|
||||
| |stars| |forks| |contributors|
|
||||
| |tidelift| |twitter-coveragepy| |twitter-nedbat|
|
||||
|
||||
Coverage.py measures code coverage, typically during test execution. It uses
|
||||
the code analysis tools and tracing hooks provided in the Python standard
|
||||
library to determine which lines are executable, and which have been executed.
|
||||
|
||||
Coverage.py runs on many versions of Python:
|
||||
|
||||
* CPython 2.7.
|
||||
* CPython 3.5 through 3.9 alpha 4.
|
||||
* PyPy2 7.3.0 and PyPy3 7.3.0.
|
||||
|
||||
Documentation is on `Read the Docs`_. Code repository and issue tracker are on
|
||||
`GitHub`_.
|
||||
|
||||
.. _Read the Docs: https://coverage.readthedocs.io/
|
||||
.. _GitHub: https://github.com/nedbat/coveragepy
|
||||
|
||||
|
||||
**New in 5.0:** SQLite data storage, JSON report, contexts, relative filenames,
|
||||
dropped support for Python 2.6, 3.3 and 3.4.
|
||||
|
||||
|
||||
For Enterprise
|
||||
--------------
|
||||
|
||||
.. |tideliftlogo| image:: https://nedbatchelder.com/pix/Tidelift_Logo_small.png
|
||||
:width: 75
|
||||
:alt: Tidelift
|
||||
:target: https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=readme
|
||||
|
||||
.. list-table::
|
||||
:widths: 10 100
|
||||
|
||||
* - |tideliftlogo|
|
||||
- `Available as part of the Tidelift Subscription. <https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=readme>`_
|
||||
Coverage and thousands of other packages are working with
|
||||
Tidelift to deliver one enterprise subscription that covers all of the open
|
||||
source you use. If you want the flexibility of open source and the confidence
|
||||
of commercial-grade software, this is for you.
|
||||
`Learn more. <https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=readme>`_
|
||||
|
||||
|
||||
Getting Started
|
||||
---------------
|
||||
|
||||
See the `Quick Start section`_ of the docs.
|
||||
|
||||
.. _Quick Start section: https://coverage.readthedocs.io/#quick-start
|
||||
|
||||
|
||||
Change history
|
||||
--------------
|
||||
|
||||
The complete history of changes is on the `change history page`_.
|
||||
|
||||
.. _change history page: https://coverage.readthedocs.io/en/latest/changes.html
|
||||
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
See the `Contributing section`_ of the docs.
|
||||
|
||||
.. _Contributing section: https://coverage.readthedocs.io/en/latest/contributing.html
|
||||
|
||||
|
||||
Security
|
||||
--------
|
||||
|
||||
To report a security vulnerability, please use the `Tidelift security
|
||||
contact`_. Tidelift will coordinate the fix and disclosure.
|
||||
|
||||
.. _Tidelift security contact: https://tidelift.com/security
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Licensed under the `Apache 2.0 License`_. For details, see `NOTICE.txt`_.
|
||||
|
||||
.. _Apache 2.0 License: http://www.apache.org/licenses/LICENSE-2.0
|
||||
.. _NOTICE.txt: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
|
||||
|
||||
|
||||
.. |ci-status| image:: https://travis-ci.com/nedbat/coveragepy.svg?branch=master
|
||||
:target: https://travis-ci.com/nedbat/coveragepy
|
||||
:alt: Build status
|
||||
.. |win-ci-status| image:: https://ci.appveyor.com/api/projects/status/kmeqpdje7h9r6vsf/branch/master?svg=true
|
||||
:target: https://ci.appveyor.com/project/nedbat/coveragepy
|
||||
:alt: Windows build status
|
||||
.. |docs| image:: https://readthedocs.org/projects/coverage/badge/?version=latest&style=flat
|
||||
:target: https://coverage.readthedocs.io/
|
||||
:alt: Documentation
|
||||
.. |reqs| image:: https://requires.io/github/nedbat/coveragepy/requirements.svg?branch=master
|
||||
:target: https://requires.io/github/nedbat/coveragepy/requirements/?branch=master
|
||||
:alt: Requirements status
|
||||
.. |kit| image:: https://badge.fury.io/py/coverage.svg
|
||||
:target: https://pypi.org/project/coverage/
|
||||
:alt: PyPI status
|
||||
.. |format| image:: https://img.shields.io/pypi/format/coverage.svg
|
||||
:target: https://pypi.org/project/coverage/
|
||||
:alt: Kit format
|
||||
.. |downloads| image:: https://img.shields.io/pypi/dw/coverage.svg
|
||||
:target: https://pypi.org/project/coverage/
|
||||
:alt: Weekly PyPI downloads
|
||||
.. |versions| image:: https://img.shields.io/pypi/pyversions/coverage.svg?logo=python&logoColor=FBE072
|
||||
:target: https://pypi.org/project/coverage/
|
||||
:alt: Python versions supported
|
||||
.. |status| image:: https://img.shields.io/pypi/status/coverage.svg
|
||||
:target: https://pypi.org/project/coverage/
|
||||
:alt: Package stability
|
||||
.. |license| image:: https://img.shields.io/pypi/l/coverage.svg
|
||||
:target: https://pypi.org/project/coverage/
|
||||
:alt: License
|
||||
.. |codecov| image:: https://codecov.io/github/nedbat/coveragepy/coverage.svg?branch=master&precision=2
|
||||
:target: https://codecov.io/github/nedbat/coveragepy?branch=master
|
||||
:alt: Coverage!
|
||||
.. |repos| image:: https://repology.org/badge/tiny-repos/python:coverage.svg
|
||||
:target: https://repology.org/metapackage/python:coverage/versions
|
||||
:alt: Packaging status
|
||||
.. |tidelift| image:: https://tidelift.com/badges/package/pypi/coverage
|
||||
:target: https://tidelift.com/subscription/pkg/pypi-coverage?utm_source=pypi-coverage&utm_medium=referral&utm_campaign=readme
|
||||
:alt: Tidelift
|
||||
.. |stars| image:: https://img.shields.io/github/stars/nedbat/coveragepy.svg?logo=github
|
||||
:target: https://github.com/nedbat/coveragepy/stargazers
|
||||
:alt: Github stars
|
||||
.. |forks| image:: https://img.shields.io/github/forks/nedbat/coveragepy.svg?logo=github
|
||||
:target: https://github.com/nedbat/coveragepy/network/members
|
||||
:alt: Github forks
|
||||
.. |contributors| image:: https://img.shields.io/github/contributors/nedbat/coveragepy.svg?logo=github
|
||||
:target: https://github.com/nedbat/coveragepy/graphs/contributors
|
||||
:alt: Contributors
|
||||
.. |twitter-coveragepy| image:: https://img.shields.io/twitter/follow/coveragepy.svg?label=coveragepy&style=flat&logo=twitter&logoColor=4FADFF
|
||||
:target: https://twitter.com/coveragepy
|
||||
:alt: coverage.py on Twitter
|
||||
.. |twitter-nedbat| image:: https://img.shields.io/twitter/follow/nedbat.svg?label=nedbat&style=flat&logo=twitter&logoColor=4FADFF
|
||||
:target: https://twitter.com/nedbat
|
||||
:alt: nedbat on Twitter
|
||||
|
||||
Keywords: code coverage testing
|
||||
Platform: UNKNOWN
|
||||
Classifier: Environment :: Console
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Quality Assurance
|
||||
Classifier: Topic :: Software Development :: Testing
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
|
||||
Description-Content-Type: text/x-rst
|
||||
Provides-Extra: toml
|
287
third_party/python/coverage/coverage.egg-info/SOURCES.txt
vendored
Normal file
287
third_party/python/coverage/coverage.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,287 @@
|
||||
.editorconfig
|
||||
.readthedocs.yml
|
||||
.travis.yml
|
||||
CHANGES.rst
|
||||
CONTRIBUTORS.txt
|
||||
LICENSE.txt
|
||||
MANIFEST.in
|
||||
Makefile
|
||||
NOTICE.txt
|
||||
README.rst
|
||||
__main__.py
|
||||
appveyor.yml
|
||||
howto.txt
|
||||
igor.py
|
||||
metacov.ini
|
||||
pylintrc
|
||||
setup.cfg
|
||||
setup.py
|
||||
tox.ini
|
||||
tox_wheels.ini
|
||||
ci/README.txt
|
||||
ci/download_appveyor.py
|
||||
ci/install.ps1
|
||||
ci/manylinux.sh
|
||||
ci/run_with_env.cmd
|
||||
ci/upload_relnotes.py
|
||||
coverage/__init__.py
|
||||
coverage/__main__.py
|
||||
coverage/annotate.py
|
||||
coverage/backunittest.py
|
||||
coverage/backward.py
|
||||
coverage/bytecode.py
|
||||
coverage/cmdline.py
|
||||
coverage/collector.py
|
||||
coverage/config.py
|
||||
coverage/context.py
|
||||
coverage/control.py
|
||||
coverage/data.py
|
||||
coverage/debug.py
|
||||
coverage/disposition.py
|
||||
coverage/env.py
|
||||
coverage/execfile.py
|
||||
coverage/files.py
|
||||
coverage/html.py
|
||||
coverage/inorout.py
|
||||
coverage/jsonreport.py
|
||||
coverage/misc.py
|
||||
coverage/multiproc.py
|
||||
coverage/numbits.py
|
||||
coverage/optional.py
|
||||
coverage/parser.py
|
||||
coverage/phystokens.py
|
||||
coverage/plugin.py
|
||||
coverage/plugin_support.py
|
||||
coverage/python.py
|
||||
coverage/pytracer.py
|
||||
coverage/report.py
|
||||
coverage/results.py
|
||||
coverage/sqldata.py
|
||||
coverage/summary.py
|
||||
coverage/templite.py
|
||||
coverage/tomlconfig.py
|
||||
coverage/version.py
|
||||
coverage/xmlreport.py
|
||||
coverage.egg-info/PKG-INFO
|
||||
coverage.egg-info/SOURCES.txt
|
||||
coverage.egg-info/dependency_links.txt
|
||||
coverage.egg-info/entry_points.txt
|
||||
coverage.egg-info/not-zip-safe
|
||||
coverage.egg-info/requires.txt
|
||||
coverage.egg-info/top_level.txt
|
||||
coverage/ctracer/datastack.c
|
||||
coverage/ctracer/datastack.h
|
||||
coverage/ctracer/filedisp.c
|
||||
coverage/ctracer/filedisp.h
|
||||
coverage/ctracer/module.c
|
||||
coverage/ctracer/stats.h
|
||||
coverage/ctracer/tracer.c
|
||||
coverage/ctracer/tracer.h
|
||||
coverage/ctracer/util.h
|
||||
coverage/fullcoverage/encodings.py
|
||||
coverage/htmlfiles/coverage_html.js
|
||||
coverage/htmlfiles/index.html
|
||||
coverage/htmlfiles/jquery.ba-throttle-debounce.min.js
|
||||
coverage/htmlfiles/jquery.hotkeys.js
|
||||
coverage/htmlfiles/jquery.isonscreen.js
|
||||
coverage/htmlfiles/jquery.min.js
|
||||
coverage/htmlfiles/jquery.tablesorter.min.js
|
||||
coverage/htmlfiles/keybd_closed.png
|
||||
coverage/htmlfiles/keybd_open.png
|
||||
coverage/htmlfiles/pyfile.html
|
||||
coverage/htmlfiles/style.css
|
||||
coverage/htmlfiles/style.scss
|
||||
doc/api.rst
|
||||
doc/api_coverage.rst
|
||||
doc/api_coveragedata.rst
|
||||
doc/api_module.rst
|
||||
doc/api_plugin.rst
|
||||
doc/branch.rst
|
||||
doc/changes.rst
|
||||
doc/check_copied_from.py
|
||||
doc/cmd.rst
|
||||
doc/conf.py
|
||||
doc/config.rst
|
||||
doc/contexts.rst
|
||||
doc/contributing.rst
|
||||
doc/dbschema.rst
|
||||
doc/dict.txt
|
||||
doc/excluding.rst
|
||||
doc/faq.rst
|
||||
doc/howitworks.rst
|
||||
doc/index.rst
|
||||
doc/install.rst
|
||||
doc/plugins.rst
|
||||
doc/python-coverage.1.txt
|
||||
doc/requirements.pip
|
||||
doc/sleepy.rst
|
||||
doc/source.rst
|
||||
doc/subprocess.rst
|
||||
doc/trouble.rst
|
||||
doc/whatsnew5x.rst
|
||||
doc/_static/coverage.css
|
||||
doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png
|
||||
doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png
|
||||
doc/media/sleepy-snake-600.png
|
||||
doc/media/sleepy-snake-circle-150.png
|
||||
doc/sample_html/keybd_closed.png
|
||||
doc/sample_html/keybd_open.png
|
||||
requirements/ci.pip
|
||||
requirements/dev.pip
|
||||
requirements/pytest.pip
|
||||
requirements/tox.pip
|
||||
requirements/wheel.pip
|
||||
tests/__init__.py
|
||||
tests/conftest.py
|
||||
tests/coveragetest.py
|
||||
tests/covmodzip1.py
|
||||
tests/goldtest.py
|
||||
tests/helpers.py
|
||||
tests/osinfo.py
|
||||
tests/plugin1.py
|
||||
tests/plugin2.py
|
||||
tests/plugin_config.py
|
||||
tests/stress_phystoken.tok
|
||||
tests/stress_phystoken_dos.tok
|
||||
tests/test_annotate.py
|
||||
tests/test_api.py
|
||||
tests/test_arcs.py
|
||||
tests/test_backward.py
|
||||
tests/test_cmdline.py
|
||||
tests/test_collector.py
|
||||
tests/test_concurrency.py
|
||||
tests/test_config.py
|
||||
tests/test_context.py
|
||||
tests/test_coverage.py
|
||||
tests/test_data.py
|
||||
tests/test_debug.py
|
||||
tests/test_execfile.py
|
||||
tests/test_filereporter.py
|
||||
tests/test_files.py
|
||||
tests/test_html.py
|
||||
tests/test_json.py
|
||||
tests/test_misc.py
|
||||
tests/test_numbits.py
|
||||
tests/test_oddball.py
|
||||
tests/test_parser.py
|
||||
tests/test_phystokens.py
|
||||
tests/test_plugins.py
|
||||
tests/test_process.py
|
||||
tests/test_python.py
|
||||
tests/test_results.py
|
||||
tests/test_setup.py
|
||||
tests/test_summary.py
|
||||
tests/test_templite.py
|
||||
tests/test_testing.py
|
||||
tests/test_version.py
|
||||
tests/test_xml.py
|
||||
tests/eggsrc/setup.py
|
||||
tests/eggsrc/egg1/__init__.py
|
||||
tests/eggsrc/egg1/egg1.py
|
||||
tests/gold/README.rst
|
||||
tests/gold/annotate/anno_dir/a___init__.py,cover
|
||||
tests/gold/annotate/anno_dir/a_a.py,cover
|
||||
tests/gold/annotate/anno_dir/b___init__.py,cover
|
||||
tests/gold/annotate/anno_dir/b_b.py,cover
|
||||
tests/gold/annotate/anno_dir/multi.py,cover
|
||||
tests/gold/annotate/annotate/white.py,cover
|
||||
tests/gold/annotate/encodings/utf8.py,cover
|
||||
tests/gold/annotate/multi/multi.py,cover
|
||||
tests/gold/annotate/multi/a/__init__.py,cover
|
||||
tests/gold/annotate/multi/a/a.py,cover
|
||||
tests/gold/annotate/multi/b/__init__.py,cover
|
||||
tests/gold/annotate/multi/b/b.py,cover
|
||||
tests/gold/html/Makefile
|
||||
tests/gold/html/a/a_py.html
|
||||
tests/gold/html/a/index.html
|
||||
tests/gold/html/b_branch/b_py.html
|
||||
tests/gold/html/b_branch/index.html
|
||||
tests/gold/html/bom/bom_py.html
|
||||
tests/gold/html/bom/index.html
|
||||
tests/gold/html/bom/2/bom_py.html
|
||||
tests/gold/html/bom/2/index.html
|
||||
tests/gold/html/isolatin1/index.html
|
||||
tests/gold/html/isolatin1/isolatin1_py.html
|
||||
tests/gold/html/omit_1/index.html
|
||||
tests/gold/html/omit_1/m1_py.html
|
||||
tests/gold/html/omit_1/m2_py.html
|
||||
tests/gold/html/omit_1/m3_py.html
|
||||
tests/gold/html/omit_1/main_py.html
|
||||
tests/gold/html/omit_2/index.html
|
||||
tests/gold/html/omit_2/m2_py.html
|
||||
tests/gold/html/omit_2/m3_py.html
|
||||
tests/gold/html/omit_2/main_py.html
|
||||
tests/gold/html/omit_3/index.html
|
||||
tests/gold/html/omit_3/m3_py.html
|
||||
tests/gold/html/omit_3/main_py.html
|
||||
tests/gold/html/omit_4/index.html
|
||||
tests/gold/html/omit_4/m1_py.html
|
||||
tests/gold/html/omit_4/m3_py.html
|
||||
tests/gold/html/omit_4/main_py.html
|
||||
tests/gold/html/omit_5/index.html
|
||||
tests/gold/html/omit_5/m1_py.html
|
||||
tests/gold/html/omit_5/main_py.html
|
||||
tests/gold/html/other/blah_blah_other_py.html
|
||||
tests/gold/html/other/here_py.html
|
||||
tests/gold/html/other/index.html
|
||||
tests/gold/html/partial/index.html
|
||||
tests/gold/html/partial/partial_py.html
|
||||
tests/gold/html/styled/a_py.html
|
||||
tests/gold/html/styled/extra.css
|
||||
tests/gold/html/styled/index.html
|
||||
tests/gold/html/styled/style.css
|
||||
tests/gold/html/support/coverage_html.js
|
||||
tests/gold/html/support/jquery.ba-throttle-debounce.min.js
|
||||
tests/gold/html/support/jquery.hotkeys.js
|
||||
tests/gold/html/support/jquery.isonscreen.js
|
||||
tests/gold/html/support/jquery.min.js
|
||||
tests/gold/html/support/jquery.tablesorter.min.js
|
||||
tests/gold/html/support/keybd_closed.png
|
||||
tests/gold/html/support/keybd_open.png
|
||||
tests/gold/html/support/style.css
|
||||
tests/gold/html/unicode/index.html
|
||||
tests/gold/html/unicode/unicode_py.html
|
||||
tests/gold/xml/x_xml/coverage.xml
|
||||
tests/gold/xml/y_xml_branch/coverage.xml
|
||||
tests/js/index.html
|
||||
tests/js/tests.js
|
||||
tests/modules/covmod1.py
|
||||
tests/modules/runmod1.py
|
||||
tests/modules/usepkgs.py
|
||||
tests/modules/aa/__init__.py
|
||||
tests/modules/aa/afile.odd.py
|
||||
tests/modules/aa/afile.py
|
||||
tests/modules/aa/zfile.py
|
||||
tests/modules/aa/bb/__init__.py
|
||||
tests/modules/aa/bb/bfile.odd.py
|
||||
tests/modules/aa/bb/bfile.py
|
||||
tests/modules/aa/bb.odd/bfile.py
|
||||
tests/modules/aa/bb/cc/__init__.py
|
||||
tests/modules/aa/bb/cc/cfile.py
|
||||
tests/modules/namespace_420/sub1/__init__.py
|
||||
tests/modules/pkg1/__init__.py
|
||||
tests/modules/pkg1/__main__.py
|
||||
tests/modules/pkg1/p1a.py
|
||||
tests/modules/pkg1/p1b.py
|
||||
tests/modules/pkg1/p1c.py
|
||||
tests/modules/pkg1/runmod2.py
|
||||
tests/modules/pkg1/sub/__init__.py
|
||||
tests/modules/pkg1/sub/__main__.py
|
||||
tests/modules/pkg1/sub/ps1a.py
|
||||
tests/modules/pkg1/sub/runmod3.py
|
||||
tests/modules/pkg2/__init__.py
|
||||
tests/modules/pkg2/p2a.py
|
||||
tests/modules/pkg2/p2b.py
|
||||
tests/modules/plugins/__init__.py
|
||||
tests/modules/plugins/a_plugin.py
|
||||
tests/modules/plugins/another.py
|
||||
tests/modules/process_test/__init__.py
|
||||
tests/modules/process_test/try_execfile.py
|
||||
tests/moremodules/namespace_420/sub2/__init__.py
|
||||
tests/moremodules/othermods/__init__.py
|
||||
tests/moremodules/othermods/othera.py
|
||||
tests/moremodules/othermods/otherb.py
|
||||
tests/moremodules/othermods/sub/__init__.py
|
||||
tests/moremodules/othermods/sub/osa.py
|
||||
tests/moremodules/othermods/sub/osb.py
|
||||
tests/qunit/jquery.tmpl.min.js
|
1
third_party/python/coverage/coverage.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/coverage/coverage.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
5
third_party/python/coverage/coverage.egg-info/entry_points.txt
vendored
Normal file
5
third_party/python/coverage/coverage.egg-info/entry_points.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
[console_scripts]
|
||||
coverage = coverage.cmdline:main
|
||||
coverage-3.8 = coverage.cmdline:main
|
||||
coverage3 = coverage.cmdline:main
|
||||
|
1
third_party/python/coverage/coverage.egg-info/not-zip-safe
vendored
Normal file
1
third_party/python/coverage/coverage.egg-info/not-zip-safe
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
3
third_party/python/coverage/coverage.egg-info/requires.txt
vendored
Normal file
3
third_party/python/coverage/coverage.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
[toml]
|
||||
toml
|
1
third_party/python/coverage/coverage.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/coverage/coverage.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
coverage
|
143
third_party/python/esprima/esprima.egg-info/PKG-INFO
vendored
Normal file
143
third_party/python/esprima/esprima.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,143 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: esprima
|
||||
Version: 4.0.1
|
||||
Summary: ECMAScript parsing infrastructure for multipurpose analysis in Python
|
||||
Home-page: https://github.com/Kronuz/esprima-python
|
||||
Author: German M. Bravo (Kronuz)
|
||||
Author-email: german.mb@gmail.com
|
||||
License: BSD License
|
||||
Description: |Donate| |PyPI Version| |PyPI License| |PyPI Format| |PyPI Status|
|
||||
|
||||
**Esprima** (`esprima.org <http://esprima.org>`__, BSD license) is a
|
||||
high performance, standard-compliant
|
||||
`ECMAScript <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__
|
||||
parser officially written in ECMAScript (also popularly known as
|
||||
`JavaScript <https://en.wikipedia.org/wiki/JavaScript>`__) and ported to
|
||||
Python. Esprima is created and maintained by `Ariya
|
||||
Hidayat <https://twitter.com/ariyahidayat>`__, with the help of `many
|
||||
contributors <https://github.com/jquery/esprima/contributors>`__.
|
||||
|
||||
Python port is a line-by-line manual translation and was created and is
|
||||
maintained by `German Mendez Bravo
|
||||
(Kronuz) <https://twitter.com/germbravo>`__.
|
||||
|
||||
Features
|
||||
~~~~~~~~
|
||||
|
||||
- Full support for ECMAScript 2017 (`ECMA-262 8th
|
||||
Edition <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__)
|
||||
- Sensible `syntax tree
|
||||
format <https://github.com/estree/estree/blob/master/es5.md>`__ as
|
||||
standardized by `ESTree project <https://github.com/estree/estree>`__
|
||||
- Experimental support for `JSX <https://facebook.github.io/jsx/>`__, a
|
||||
syntax extension for `React <https://facebook.github.io/react/>`__
|
||||
- Optional tracking of syntax node location (index-based and
|
||||
line-column)
|
||||
- `Heavily tested <http://esprima.org/test/ci.html>`__ (~1500 `unit
|
||||
tests <https://github.com/jquery/esprima/tree/master/test/fixtures>`__
|
||||
with `full code
|
||||
coverage <https://codecov.io/github/jquery/esprima>`__)
|
||||
|
||||
Installation
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code:: shell
|
||||
|
||||
pip install esprima
|
||||
|
||||
API
|
||||
~~~
|
||||
|
||||
Esprima can be used to perform `lexical
|
||||
analysis <https://en.wikipedia.org/wiki/Lexical_analysis>`__
|
||||
(tokenization) or `syntactic
|
||||
analysis <https://en.wikipedia.org/wiki/Parsing>`__ (parsing) of a
|
||||
JavaScript program.
|
||||
|
||||
A simple example:
|
||||
|
||||
.. code:: javascript
|
||||
|
||||
>>> import esprima
|
||||
>>> program = 'const answer = 42'
|
||||
|
||||
>>> esprima.tokenize(program)
|
||||
[{
|
||||
type: "Keyword",
|
||||
value: "const"
|
||||
}, {
|
||||
type: "Identifier",
|
||||
value: "answer"
|
||||
}, {
|
||||
type: "Punctuator",
|
||||
value: "="
|
||||
}, {
|
||||
type: "Numeric",
|
||||
value: "42"
|
||||
}]
|
||||
|
||||
>>> esprima.parseScript(program)
|
||||
{
|
||||
body: [
|
||||
{
|
||||
kind: "const",
|
||||
declarations: [
|
||||
{
|
||||
init: {
|
||||
raw: "42",
|
||||
type: "Literal",
|
||||
value: 42
|
||||
},
|
||||
type: "VariableDeclarator",
|
||||
id: {
|
||||
type: "Identifier",
|
||||
name: "answer"
|
||||
}
|
||||
}
|
||||
],
|
||||
type: "VariableDeclaration"
|
||||
}
|
||||
],
|
||||
type: "Program",
|
||||
sourceType: "script"
|
||||
}
|
||||
|
||||
For more information, please read the `complete
|
||||
documentation <http://esprima.org/doc>`__.
|
||||
|
||||
.. |Donate| image:: https://img.shields.io/badge/Donate-PayPal-green.svg
|
||||
:target: https://www.paypal.me/Kronuz/25
|
||||
.. |PyPI Version| image:: https://img.shields.io/pypi/v/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI License| image:: https://img.shields.io/pypi/l/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI Wheel| image:: https://img.shields.io/pypi/wheel/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI Format| image:: https://img.shields.io/pypi/format/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI Implementation| image:: https://img.shields.io/pypi/implementation/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI Status| image:: https://img.shields.io/pypi/status/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/esprima.svg
|
||||
:target: https://pypi.python.org/pypi/esprima
|
||||
Keywords: esprima ecmascript javascript parser ast
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Topic :: Software Development :: Code Generators
|
||||
Classifier: Topic :: Software Development :: Compilers
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: Text Processing :: General
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
29
third_party/python/esprima/esprima.egg-info/SOURCES.txt
vendored
Normal file
29
third_party/python/esprima/esprima.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
README
|
||||
setup.py
|
||||
esprima/__init__.py
|
||||
esprima/__main__.py
|
||||
esprima/character.py
|
||||
esprima/comment_handler.py
|
||||
esprima/compat.py
|
||||
esprima/error_handler.py
|
||||
esprima/esprima.py
|
||||
esprima/jsx_nodes.py
|
||||
esprima/jsx_parser.py
|
||||
esprima/jsx_syntax.py
|
||||
esprima/messages.py
|
||||
esprima/nodes.py
|
||||
esprima/objects.py
|
||||
esprima/parser.py
|
||||
esprima/scanner.py
|
||||
esprima/syntax.py
|
||||
esprima/token.py
|
||||
esprima/tokenizer.py
|
||||
esprima/utils.py
|
||||
esprima/visitor.py
|
||||
esprima/xhtml_entities.py
|
||||
esprima.egg-info/PKG-INFO
|
||||
esprima.egg-info/SOURCES.txt
|
||||
esprima.egg-info/dependency_links.txt
|
||||
esprima.egg-info/entry_points.txt
|
||||
esprima.egg-info/pbr.json
|
||||
esprima.egg-info/top_level.txt
|
1
third_party/python/esprima/esprima.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/esprima/esprima.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
3
third_party/python/esprima/esprima.egg-info/entry_points.txt
vendored
Normal file
3
third_party/python/esprima/esprima.egg-info/entry_points.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[console_scripts]
|
||||
esprima = esprima.__main__:main
|
||||
|
1
third_party/python/esprima/esprima.egg-info/pbr.json
vendored
Normal file
1
third_party/python/esprima/esprima.egg-info/pbr.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
{"is_release": false, "git_version": "ac65290"}
|
1
third_party/python/esprima/esprima.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/esprima/esprima.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
esprima
|
18
third_party/python/fluent.migrate/fluent.migrate.egg-info/PKG-INFO
vendored
Normal file
18
third_party/python/fluent.migrate/fluent.migrate.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: fluent.migrate
|
||||
Version: 0.11
|
||||
Summary: Toolchain to migrate legacy translation to Fluent.
|
||||
Home-page: https://hg.mozilla.org/l10n/fluent-migration/
|
||||
Author: Mozilla
|
||||
Author-email: l10n-drivers@mozilla.org
|
||||
License: APL 2
|
||||
Description: UNKNOWN
|
||||
Keywords: fluent,localization,l10n
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 3 - Alpha
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Description-Content-Type: text/markdown
|
||||
Provides-Extra: hg
|
23
third_party/python/fluent.migrate/fluent.migrate.egg-info/SOURCES.txt
vendored
Normal file
23
third_party/python/fluent.migrate/fluent.migrate.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
README.md
|
||||
setup.cfg
|
||||
setup.py
|
||||
fluent/__init__.py
|
||||
fluent.migrate.egg-info/PKG-INFO
|
||||
fluent.migrate.egg-info/SOURCES.txt
|
||||
fluent.migrate.egg-info/dependency_links.txt
|
||||
fluent.migrate.egg-info/entry_points.txt
|
||||
fluent.migrate.egg-info/requires.txt
|
||||
fluent.migrate.egg-info/top_level.txt
|
||||
fluent/migrate/__init__.py
|
||||
fluent/migrate/_context.py
|
||||
fluent/migrate/blame.py
|
||||
fluent/migrate/changesets.py
|
||||
fluent/migrate/context.py
|
||||
fluent/migrate/errors.py
|
||||
fluent/migrate/evaluator.py
|
||||
fluent/migrate/helpers.py
|
||||
fluent/migrate/merge.py
|
||||
fluent/migrate/tool.py
|
||||
fluent/migrate/transforms.py
|
||||
fluent/migrate/util.py
|
||||
fluent/migrate/validator.py
|
1
third_party/python/fluent.migrate/fluent.migrate.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/fluent.migrate/fluent.migrate.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
4
third_party/python/fluent.migrate/fluent.migrate.egg-info/entry_points.txt
vendored
Normal file
4
third_party/python/fluent.migrate/fluent.migrate.egg-info/entry_points.txt
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
[console_scripts]
|
||||
migrate-l10n = fluent.migrate.tool:cli
|
||||
validate-l10n-recipe = fluent.migrate.validator:cli
|
||||
|
6
third_party/python/fluent.migrate/fluent.migrate.egg-info/requires.txt
vendored
Normal file
6
third_party/python/fluent.migrate/fluent.migrate.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
compare-locales<9.0,>=8.1
|
||||
fluent.syntax<0.19,>=0.18.0
|
||||
six
|
||||
|
||||
[hg]
|
||||
python-hglib
|
1
third_party/python/fluent.migrate/fluent.migrate.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/fluent.migrate/fluent.migrate.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
fluent
|
81
third_party/python/idna-ssl/idna_ssl.egg-info/PKG-INFO
vendored
Normal file
81
third_party/python/idna-ssl/idna_ssl.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: idna-ssl
|
||||
Version: 1.1.0
|
||||
Summary: Patch ssl.match_hostname for Unicode(idna) domains support
|
||||
Home-page: https://github.com/aio-libs/idna-ssl
|
||||
Author: Victor Kovtun
|
||||
Author-email: hellysmile@gmail.com
|
||||
License: UNKNOWN
|
||||
Description: idna-ssl
|
||||
========
|
||||
|
||||
:info: Patch ssl.match_hostname for Unicode(idna) domains support
|
||||
|
||||
.. image:: https://travis-ci.com/aio-libs/idna-ssl.svg?branch=master
|
||||
:target: https://travis-ci.com/aio-libs/idna-ssl
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/idna_ssl.svg
|
||||
:target: https://pypi.python.org/pypi/idna_ssl
|
||||
|
||||
.. image:: https://codecov.io/gh/aio-libs/idna-ssl/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/aio-libs/idna-ssl
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
pip install idna-ssl
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from idna_ssl import patch_match_hostname # noqa isort:skip
|
||||
patch_match_hostname() # noqa isort:skip
|
||||
|
||||
import asyncio
|
||||
|
||||
import aiohttp
|
||||
|
||||
URL = 'https://цфоут.мвд.рф/news/item/8065038/'
|
||||
|
||||
|
||||
async def main():
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(URL) as response:
|
||||
print(response)
|
||||
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(main())
|
||||
|
||||
Motivation
|
||||
----------
|
||||
|
||||
* Here is 100% backward capability
|
||||
* Related aiohttp `issue <https://github.com/aio-libs/aiohttp/issues/949>`_
|
||||
* Related Python `bug <https://bugs.python.org/issue31872>`_
|
||||
* Related Python `pull request <https://github.com/python/cpython/pull/3462>`_
|
||||
* It is fixed (by January 27 2018) in upcoming Python 3.7, but `IDNA2008 <https://tools.ietf.org/html/rfc5895>`_ is still broken
|
||||
|
||||
Thanks
|
||||
------
|
||||
|
||||
The library was donated by `Ocean S.A. <https://ocean.io/>`_
|
||||
|
||||
Thanks to the company for contribution.
|
||||
|
||||
Keywords: ssl,Unicode,idna,match_hostname
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
12
third_party/python/idna-ssl/idna_ssl.egg-info/SOURCES.txt
vendored
Normal file
12
third_party/python/idna-ssl/idna_ssl.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
LICENSE
|
||||
MANIFEST.in
|
||||
README.rst
|
||||
idna_ssl.py
|
||||
setup.cfg
|
||||
setup.py
|
||||
idna_ssl.egg-info/PKG-INFO
|
||||
idna_ssl.egg-info/SOURCES.txt
|
||||
idna_ssl.egg-info/dependency_links.txt
|
||||
idna_ssl.egg-info/not-zip-safe
|
||||
idna_ssl.egg-info/requires.txt
|
||||
idna_ssl.egg-info/top_level.txt
|
1
third_party/python/idna-ssl/idna_ssl.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/idna-ssl/idna_ssl.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/idna-ssl/idna_ssl.egg-info/not-zip-safe
vendored
Normal file
1
third_party/python/idna-ssl/idna_ssl.egg-info/not-zip-safe
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/idna-ssl/idna_ssl.egg-info/requires.txt
vendored
Normal file
1
third_party/python/idna-ssl/idna_ssl.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
idna>=2.0
|
1
third_party/python/idna-ssl/idna_ssl.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/idna-ssl/idna_ssl.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
idna_ssl
|
117
third_party/python/jsmin/jsmin.egg-info/PKG-INFO
vendored
Normal file
117
third_party/python/jsmin/jsmin.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: jsmin
|
||||
Version: 2.1.0
|
||||
Summary: JavaScript minifier.
|
||||
PLEASE UPDATE TO VERSION >= 2.0.6. Older versions have a serious bug related to comments.
|
||||
Home-page: https://bitbucket.org/dcs/jsmin/
|
||||
Author: Tikitu de Jager
|
||||
Author-email: tikitu+jsmin@logophile.org
|
||||
License: MIT License
|
||||
Description: =====
|
||||
jsmin
|
||||
=====
|
||||
|
||||
JavaScript minifier.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
.. code:: python
|
||||
|
||||
from jsmin import jsmin
|
||||
with open('myfile.js') as js_file:
|
||||
minified = jsmin(js_file.read())
|
||||
|
||||
You can run it as a commandline tool also::
|
||||
|
||||
python -m jsmin myfile.js
|
||||
|
||||
As yet, ``jsmin`` makes no attempt to be compatible with
|
||||
`ECMAScript 6 / ES.next / Harmony <http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts>`_.
|
||||
If you're using it on Harmony code, though, you might find the ``quote_chars``
|
||||
parameter useful:
|
||||
|
||||
.. code:: python
|
||||
|
||||
from jsmin import jsmin
|
||||
with open('myfile.js') as js_file:
|
||||
minified = jsmin(js_file.read(), quote_chars="'\"`")
|
||||
|
||||
|
||||
Where to get it
|
||||
===============
|
||||
|
||||
* install the package `from pypi <https://pypi.python.org/pypi/jsmin/>`_
|
||||
* get the latest release `from the stable branch on bitbucket <https://bitbucket.org/dcs/jsmin/branch/stable>`_
|
||||
* get the development version `from the default branch on bitbucket <https://bitbucket.org/dcs/jsmin/branch/default>`_
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
`Issues <https://bitbucket.org/dcs/jsmin/issues>`_ and `Pull requests <https://bitbucket.org/dcs/jsmin/pull-requests>`_
|
||||
will be gratefully received on Bitbucket. Pull requests on github are great too, but the issue tracker lives on
|
||||
bitbucket.
|
||||
|
||||
If possible, please make separate pull requests for tests and for code: tests will be committed on the stable branch
|
||||
(which tracks the latest released version) while code will go to default by, erm, default.
|
||||
|
||||
Unless you request otherwise, your Bitbucket identity will be added to the contributor's list below; if you prefer a
|
||||
different name feel free to add it in your pull request instead. (If you prefer not to be mentioned you'll have to let
|
||||
the maintainer know somehow.)
|
||||
|
||||
Build/test status
|
||||
=================
|
||||
|
||||
Both default and stable branches are tested with Travis: https://travis-ci.org/tikitu/jsmin
|
||||
|
||||
Stable (latest released version plus any new tests) is tested against CPython 2.6, 2.7, 3.2, and 3.3.
|
||||
Currently:
|
||||
|
||||
.. image:: https://travis-ci.org/tikitu/jsmin.png?branch=ghstable
|
||||
|
||||
If stable is failing that means there's a new test that fails on *the latest released version on pypi*, with no fix yet
|
||||
released.
|
||||
|
||||
Default (development version, might be ahead of latest released version) is tested against CPython 2.6, 2.7, 3.2, and
|
||||
3.3. Currently:
|
||||
|
||||
.. image:: https://travis-ci.org/tikitu/jsmin.png?branch=master
|
||||
|
||||
If default is failing don't use it, but as long as stable is passing the pypi release should be ok.
|
||||
|
||||
Contributors (chronological commit order)
|
||||
=========================================
|
||||
|
||||
* `Dave St.Germain <https://bitbucket.org/dcs>`_ (original author)
|
||||
* `Hans weltar <https://bitbucket.org/hansweltar>`_
|
||||
* `Tikitu de Jager <mailto:tikitu+jsmin@logophile.org>`_ (current maintainer)
|
||||
* https://bitbucket.org/rennat
|
||||
* `Nick Alexander <https://bitbucket.org/ncalexan>`_
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
v2.1.0 (2014-12-24) Tikitu de Jager
|
||||
-----------------------------------
|
||||
|
||||
* First changelog entries; see README.rst for prior contributors.
|
||||
|
||||
* Expose quote_chars parameter to provide just enough unofficial Harmony
|
||||
support to be useful.
|
||||
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.6
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.2
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Software Development :: Pre-processors
|
||||
Classifier: Topic :: Text Processing :: Filters
|
13
third_party/python/jsmin/jsmin.egg-info/SOURCES.txt
vendored
Normal file
13
third_party/python/jsmin/jsmin.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
CHANGELOG.txt
|
||||
LICENSE.txt
|
||||
MANIFEST.in
|
||||
README.rst
|
||||
setup.cfg
|
||||
setup.py
|
||||
jsmin/__init__.py
|
||||
jsmin/__main__.py
|
||||
jsmin/test.py
|
||||
jsmin.egg-info/PKG-INFO
|
||||
jsmin.egg-info/SOURCES.txt
|
||||
jsmin.egg-info/dependency_links.txt
|
||||
jsmin.egg-info/top_level.txt
|
1
third_party/python/jsmin/jsmin.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/jsmin/jsmin.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/jsmin/jsmin.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/jsmin/jsmin.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
jsmin
|
11
third_party/python/json-e/json_e.egg-info/PKG-INFO
vendored
Normal file
11
third_party/python/json-e/json_e.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: json-e
|
||||
Version: 2.7.0
|
||||
Summary: A data-structure parameterization system written for embedding context in JSON objects
|
||||
Home-page: https://taskcluster.github.io/json-e/
|
||||
Author: Dustin J. Mitchell
|
||||
Author-email: dustin@mozilla.com
|
||||
License: MPL2
|
||||
Description: UNKNOWN
|
||||
Platform: UNKNOWN
|
||||
Provides-Extra: release
|
17
third_party/python/json-e/json_e.egg-info/SOURCES.txt
vendored
Normal file
17
third_party/python/json-e/json_e.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
MANIFEST.in
|
||||
README.md
|
||||
package.json
|
||||
setup.cfg
|
||||
setup.py
|
||||
json_e.egg-info/PKG-INFO
|
||||
json_e.egg-info/SOURCES.txt
|
||||
json_e.egg-info/dependency_links.txt
|
||||
json_e.egg-info/requires.txt
|
||||
json_e.egg-info/top_level.txt
|
||||
jsone/__init__.py
|
||||
jsone/builtins.py
|
||||
jsone/interpreter.py
|
||||
jsone/prattparser.py
|
||||
jsone/render.py
|
||||
jsone/shared.py
|
||||
jsone/six.py
|
1
third_party/python/json-e/json_e.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/json-e/json_e.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
3
third_party/python/json-e/json_e.egg-info/requires.txt
vendored
Normal file
3
third_party/python/json-e/json_e.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
[release]
|
||||
towncrier
|
1
third_party/python/json-e/json_e.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/json-e/json_e.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
jsone
|
19
third_party/python/mohawk/mohawk.egg-info/PKG-INFO
vendored
Normal file
19
third_party/python/mohawk/mohawk.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: mohawk
|
||||
Version: 0.3.4
|
||||
Summary: Library for Hawk HTTP authorization
|
||||
Home-page: https://github.com/kumar303/mohawk
|
||||
Author: Kumar McMillan, Austin King
|
||||
Author-email: kumar.mcmillan@gmail.com
|
||||
License: MPL 2.0 (Mozilla Public License)
|
||||
Description: UNKNOWN
|
||||
Platform: UNKNOWN
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 2.6
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Topic :: Internet :: WWW/HTTP
|
15
third_party/python/mohawk/mohawk.egg-info/SOURCES.txt
vendored
Normal file
15
third_party/python/mohawk/mohawk.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
README.rst
|
||||
setup.py
|
||||
mohawk/__init__.py
|
||||
mohawk/base.py
|
||||
mohawk/bewit.py
|
||||
mohawk/exc.py
|
||||
mohawk/receiver.py
|
||||
mohawk/sender.py
|
||||
mohawk/tests.py
|
||||
mohawk/util.py
|
||||
mohawk.egg-info/PKG-INFO
|
||||
mohawk.egg-info/SOURCES.txt
|
||||
mohawk.egg-info/dependency_links.txt
|
||||
mohawk.egg-info/requires.txt
|
||||
mohawk.egg-info/top_level.txt
|
1
third_party/python/mohawk/mohawk.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/mohawk/mohawk.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/mohawk/mohawk.egg-info/requires.txt
vendored
Normal file
1
third_party/python/mohawk/mohawk.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
six
|
1
third_party/python/mohawk/mohawk.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/mohawk/mohawk.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
mohawk
|
128
third_party/python/multidict/multidict.egg-info/PKG-INFO
vendored
Normal file
128
third_party/python/multidict/multidict.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,128 @@
|
||||
Metadata-Version: 1.2
|
||||
Name: multidict
|
||||
Version: 5.1.0
|
||||
Summary: multidict implementation
|
||||
Home-page: https://github.com/aio-libs/multidict
|
||||
Author: Andrew Svetlov
|
||||
Author-email: andrew.svetlov@gmail.com
|
||||
License: Apache 2
|
||||
Project-URL: Chat: Gitter, https://gitter.im/aio-libs/Lobby
|
||||
Project-URL: CI: Azure Pipelines, https://dev.azure.com/aio-libs/multidict/_build
|
||||
Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/multidict
|
||||
Project-URL: Docs: RTD, https://multidict.readthedocs.io
|
||||
Project-URL: GitHub: issues, https://github.com/aio-libs/multidict/issues
|
||||
Project-URL: GitHub: repo, https://github.com/aio-libs/multidict
|
||||
Description: =========
|
||||
multidict
|
||||
=========
|
||||
|
||||
.. image:: https://github.com/aio-libs/multidict/workflows/CI/badge.svg
|
||||
:target: https://github.com/aio-libs/multidict/actions?query=workflow%3ACI
|
||||
:alt: GitHub status for master branch
|
||||
|
||||
.. image:: https://codecov.io/gh/aio-libs/multidict/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/aio-libs/multidict
|
||||
:alt: Coverage metrics
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/multidict.svg
|
||||
:target: https://pypi.org/project/multidict
|
||||
:alt: PyPI
|
||||
|
||||
.. image:: https://readthedocs.org/projects/multidict/badge/?version=latest
|
||||
:target: http://multidict.readthedocs.org/en/latest/?badge=latest
|
||||
:alt: Documentationb
|
||||
|
||||
.. image:: https://img.shields.io/pypi/pyversions/multidict.svg
|
||||
:target: https://pypi.org/project/multidict
|
||||
:alt: Python versions
|
||||
|
||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:target: https://gitter.im/aio-libs/Lobby
|
||||
:alt: Chat on Gitter
|
||||
|
||||
Multidict is dict-like collection of *key-value pairs* where key
|
||||
might be occurred more than once in the container.
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
*HTTP Headers* and *URL query string* require specific data structure:
|
||||
*multidict*. It behaves mostly like a regular ``dict`` but it may have
|
||||
several *values* for the same *key* and *preserves insertion ordering*.
|
||||
|
||||
The *key* is ``str`` (or ``istr`` for case-insensitive dictionaries).
|
||||
|
||||
``multidict`` has four multidict classes:
|
||||
``MultiDict``, ``MultiDictProxy``, ``CIMultiDict``
|
||||
and ``CIMultiDictProxy``.
|
||||
|
||||
Immutable proxies (``MultiDictProxy`` and
|
||||
``CIMultiDictProxy``) provide a dynamic view for the
|
||||
proxied multidict, the view reflects underlying collection changes. They
|
||||
implement the ``collections.abc.Mapping`` interface.
|
||||
|
||||
Regular mutable (``MultiDict`` and ``CIMultiDict``) classes
|
||||
implement ``collections.abc.MutableMapping`` and allows to change
|
||||
their own content.
|
||||
|
||||
|
||||
*Case insensitive* (``CIMultiDict`` and
|
||||
``CIMultiDictProxy``) ones assume the *keys* are case
|
||||
insensitive, e.g.::
|
||||
|
||||
>>> dct = CIMultiDict(key='val')
|
||||
>>> 'Key' in dct
|
||||
True
|
||||
>>> dct['Key']
|
||||
'val'
|
||||
|
||||
*Keys* should be ``str`` or ``istr`` instances.
|
||||
|
||||
The library has optional C Extensions for sake of speed.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Apache 2
|
||||
|
||||
Library Installation
|
||||
--------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ pip install multidict
|
||||
|
||||
The library is Python 3 only!
|
||||
|
||||
PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
|
||||
``multidict`` on another operation system (or *Alpine Linux* inside a Docker) the
|
||||
Tarball will be used to compile the library from sources. It requires C compiler and
|
||||
Python headers installed.
|
||||
|
||||
To skip the compilation please use `MULTIDICT_NO_EXTENSIONS` environment variable,
|
||||
e.g.:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ MULTIDICT_NO_EXTENSIONS=1 pip install multidict
|
||||
|
||||
Please note, Pure Python (uncompiled) version is about 20-50 times slower depending on
|
||||
the usage scenario!!!
|
||||
|
||||
|
||||
|
||||
Changelog
|
||||
---------
|
||||
See `RTD page <http://multidict.readthedocs.org/en/latest/changes.html>`_.
|
||||
Platform: UNKNOWN
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Requires-Python: >=3.6
|
71
third_party/python/multidict/multidict.egg-info/SOURCES.txt
vendored
Normal file
71
third_party/python/multidict/multidict.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
CHANGES.rst
|
||||
LICENSE
|
||||
MANIFEST.in
|
||||
Makefile
|
||||
README.rst
|
||||
pyproject.toml
|
||||
setup.cfg
|
||||
setup.py
|
||||
docs/Makefile
|
||||
docs/benchmark.rst
|
||||
docs/changes.rst
|
||||
docs/conf.py
|
||||
docs/index.rst
|
||||
docs/make.bat
|
||||
docs/multidict.rst
|
||||
docs/spelling_wordlist.txt
|
||||
multidict/__init__.py
|
||||
multidict/__init__.pyi
|
||||
multidict/_abc.py
|
||||
multidict/_compat.py
|
||||
multidict/_multidict.c
|
||||
multidict/_multidict_base.py
|
||||
multidict/_multidict_py.py
|
||||
multidict/py.typed
|
||||
multidict.egg-info/PKG-INFO
|
||||
multidict.egg-info/SOURCES.txt
|
||||
multidict.egg-info/dependency_links.txt
|
||||
multidict.egg-info/top_level.txt
|
||||
multidict/_multilib/defs.h
|
||||
multidict/_multilib/dict.h
|
||||
multidict/_multilib/istr.h
|
||||
multidict/_multilib/iter.h
|
||||
multidict/_multilib/pair_list.h
|
||||
multidict/_multilib/views.h
|
||||
tests/cimultidict.pickle.0
|
||||
tests/cimultidict.pickle.1
|
||||
tests/cimultidict.pickle.2
|
||||
tests/cimultidict.pickle.3
|
||||
tests/cimultidict.pickle.4
|
||||
tests/cimultidict.pickle.5
|
||||
tests/conftest.py
|
||||
tests/gen_pickles.py
|
||||
tests/multidict.pickle.0
|
||||
tests/multidict.pickle.1
|
||||
tests/multidict.pickle.2
|
||||
tests/multidict.pickle.3
|
||||
tests/multidict.pickle.4
|
||||
tests/multidict.pickle.5
|
||||
tests/pycimultidict.pickle.0
|
||||
tests/pycimultidict.pickle.1
|
||||
tests/pycimultidict.pickle.2
|
||||
tests/pycimultidict.pickle.3
|
||||
tests/pycimultidict.pickle.4
|
||||
tests/pycimultidict.pickle.5
|
||||
tests/pymultidict.pickle.0
|
||||
tests/pymultidict.pickle.1
|
||||
tests/pymultidict.pickle.2
|
||||
tests/pymultidict.pickle.3
|
||||
tests/pymultidict.pickle.4
|
||||
tests/pymultidict.pickle.5
|
||||
tests/test_abc.py
|
||||
tests/test_copy.py
|
||||
tests/test_guard.py
|
||||
tests/test_istr.py
|
||||
tests/test_multidict.py
|
||||
tests/test_mutable_multidict.py
|
||||
tests/test_mypy.py
|
||||
tests/test_pickle.py
|
||||
tests/test_types.py
|
||||
tests/test_update.py
|
||||
tests/test_version.py
|
1
third_party/python/multidict/multidict.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/multidict/multidict.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/multidict/multidict.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/multidict/multidict.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
multidict
|
22
third_party/python/ply/ply.egg-info/PKG-INFO
vendored
Normal file
22
third_party/python/ply/ply.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: ply
|
||||
Version: 3.10
|
||||
Summary: Python Lex & Yacc
|
||||
Home-page: http://www.dabeaz.com/ply/
|
||||
Author: David Beazley
|
||||
Author-email: dave@dabeaz.com
|
||||
License: BSD
|
||||
Description:
|
||||
PLY is yet another implementation of lex and yacc for Python. Some notable
|
||||
features include the fact that its implemented entirely in Python and it
|
||||
uses LALR(1) parsing which is efficient and well suited for larger grammars.
|
||||
|
||||
PLY provides most of the standard lex/yacc features including support for empty
|
||||
productions, precedence rules, error recovery, and support for ambiguous grammars.
|
||||
|
||||
PLY is extremely easy to use and provides very extensive error checking.
|
||||
It is compatible with both Python 2 and Python 3.
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 2
|
172
third_party/python/ply/ply.egg-info/SOURCES.txt
vendored
Normal file
172
third_party/python/ply/ply.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,172 @@
|
||||
ANNOUNCE
|
||||
CHANGES
|
||||
MANIFEST.in
|
||||
README.md
|
||||
TODO
|
||||
setup.cfg
|
||||
setup.py
|
||||
doc/internal.html
|
||||
doc/makedoc.py
|
||||
doc/ply.html
|
||||
example/README
|
||||
example/cleanup.sh
|
||||
example/BASIC/README
|
||||
example/BASIC/basic.py
|
||||
example/BASIC/basiclex.py
|
||||
example/BASIC/basiclog.py
|
||||
example/BASIC/basinterp.py
|
||||
example/BASIC/basparse.py
|
||||
example/BASIC/dim.bas
|
||||
example/BASIC/func.bas
|
||||
example/BASIC/gcd.bas
|
||||
example/BASIC/gosub.bas
|
||||
example/BASIC/hello.bas
|
||||
example/BASIC/linear.bas
|
||||
example/BASIC/maxsin.bas
|
||||
example/BASIC/powers.bas
|
||||
example/BASIC/rand.bas
|
||||
example/BASIC/sales.bas
|
||||
example/BASIC/sears.bas
|
||||
example/BASIC/sqrt1.bas
|
||||
example/BASIC/sqrt2.bas
|
||||
example/GardenSnake/GardenSnake.py
|
||||
example/GardenSnake/README
|
||||
example/ansic/README
|
||||
example/ansic/clex.py
|
||||
example/ansic/cparse.py
|
||||
example/calc/calc.py
|
||||
example/calcdebug/calc.py
|
||||
example/calceof/calc.py
|
||||
example/classcalc/calc.py
|
||||
example/closurecalc/calc.py
|
||||
example/hedit/hedit.py
|
||||
example/newclasscalc/calc.py
|
||||
example/optcalc/README
|
||||
example/optcalc/calc.py
|
||||
example/unicalc/calc.py
|
||||
example/yply/README
|
||||
example/yply/ylex.py
|
||||
example/yply/yparse.py
|
||||
example/yply/yply.py
|
||||
ply/__init__.py
|
||||
ply/cpp.py
|
||||
ply/ctokens.py
|
||||
ply/lex.py
|
||||
ply/yacc.py
|
||||
ply/ygen.py
|
||||
ply.egg-info/PKG-INFO
|
||||
ply.egg-info/SOURCES.txt
|
||||
ply.egg-info/dependency_links.txt
|
||||
ply.egg-info/top_level.txt
|
||||
test/README
|
||||
test/calclex.py
|
||||
test/cleanup.sh
|
||||
test/lex_closure.py
|
||||
test/lex_doc1.py
|
||||
test/lex_dup1.py
|
||||
test/lex_dup2.py
|
||||
test/lex_dup3.py
|
||||
test/lex_empty.py
|
||||
test/lex_error1.py
|
||||
test/lex_error2.py
|
||||
test/lex_error3.py
|
||||
test/lex_error4.py
|
||||
test/lex_hedit.py
|
||||
test/lex_ignore.py
|
||||
test/lex_ignore2.py
|
||||
test/lex_literal1.py
|
||||
test/lex_literal2.py
|
||||
test/lex_literal3.py
|
||||
test/lex_many_tokens.py
|
||||
test/lex_module.py
|
||||
test/lex_module_import.py
|
||||
test/lex_object.py
|
||||
test/lex_opt_alias.py
|
||||
test/lex_optimize.py
|
||||
test/lex_optimize2.py
|
||||
test/lex_optimize3.py
|
||||
test/lex_re1.py
|
||||
test/lex_re2.py
|
||||
test/lex_re3.py
|
||||
test/lex_rule1.py
|
||||
test/lex_rule2.py
|
||||
test/lex_rule3.py
|
||||
test/lex_state1.py
|
||||
test/lex_state2.py
|
||||
test/lex_state3.py
|
||||
test/lex_state4.py
|
||||
test/lex_state5.py
|
||||
test/lex_state_noerror.py
|
||||
test/lex_state_norule.py
|
||||
test/lex_state_try.py
|
||||
test/lex_token1.py
|
||||
test/lex_token2.py
|
||||
test/lex_token3.py
|
||||
test/lex_token4.py
|
||||
test/lex_token5.py
|
||||
test/lex_token_dup.py
|
||||
test/testlex.py
|
||||
test/testyacc.py
|
||||
test/yacc_badargs.py
|
||||
test/yacc_badid.py
|
||||
test/yacc_badprec.py
|
||||
test/yacc_badprec2.py
|
||||
test/yacc_badprec3.py
|
||||
test/yacc_badrule.py
|
||||
test/yacc_badtok.py
|
||||
test/yacc_dup.py
|
||||
test/yacc_error1.py
|
||||
test/yacc_error2.py
|
||||
test/yacc_error3.py
|
||||
test/yacc_error4.py
|
||||
test/yacc_error5.py
|
||||
test/yacc_error6.py
|
||||
test/yacc_error7.py
|
||||
test/yacc_inf.py
|
||||
test/yacc_literal.py
|
||||
test/yacc_misplaced.py
|
||||
test/yacc_missing1.py
|
||||
test/yacc_nested.py
|
||||
test/yacc_nodoc.py
|
||||
test/yacc_noerror.py
|
||||
test/yacc_nop.py
|
||||
test/yacc_notfunc.py
|
||||
test/yacc_notok.py
|
||||
test/yacc_prec1.py
|
||||
test/yacc_rr.py
|
||||
test/yacc_rr_unused.py
|
||||
test/yacc_simple.py
|
||||
test/yacc_sr.py
|
||||
test/yacc_term1.py
|
||||
test/yacc_unicode_literals.py
|
||||
test/yacc_unused.py
|
||||
test/yacc_unused_rule.py
|
||||
test/yacc_uprec.py
|
||||
test/yacc_uprec2.py
|
||||
test/pkg_test1/__init__.py
|
||||
test/pkg_test1/parsing/__init__.py
|
||||
test/pkg_test1/parsing/calclex.py
|
||||
test/pkg_test1/parsing/calcparse.py
|
||||
test/pkg_test2/__init__.py
|
||||
test/pkg_test2/parsing/__init__.py
|
||||
test/pkg_test2/parsing/calclex.py
|
||||
test/pkg_test2/parsing/calcparse.py
|
||||
test/pkg_test3/__init__.py
|
||||
test/pkg_test3/generated/__init__.py
|
||||
test/pkg_test3/parsing/__init__.py
|
||||
test/pkg_test3/parsing/calclex.py
|
||||
test/pkg_test3/parsing/calcparse.py
|
||||
test/pkg_test4/__init__.py
|
||||
test/pkg_test4/parsing/__init__.py
|
||||
test/pkg_test4/parsing/calclex.py
|
||||
test/pkg_test4/parsing/calcparse.py
|
||||
test/pkg_test5/__init__.py
|
||||
test/pkg_test5/parsing/__init__.py
|
||||
test/pkg_test5/parsing/calclex.py
|
||||
test/pkg_test5/parsing/calcparse.py
|
||||
test/pkg_test6/__init__.py
|
||||
test/pkg_test6/parsing/__init__.py
|
||||
test/pkg_test6/parsing/calclex.py
|
||||
test/pkg_test6/parsing/calcparse.py
|
||||
test/pkg_test6/parsing/expression.py
|
||||
test/pkg_test6/parsing/statement.py
|
1
third_party/python/ply/ply.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/ply/ply.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/ply/ply.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/ply/ply.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
ply
|
742
third_party/python/pyrsistent/pyrsistent.egg-info/PKG-INFO
vendored
Normal file
742
third_party/python/pyrsistent/pyrsistent.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,742 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: pyrsistent
|
||||
Version: 0.16.0
|
||||
Summary: Persistent/Functional/Immutable data structures
|
||||
Home-page: http://github.com/tobgu/pyrsistent/
|
||||
Author: Tobias Gustafsson
|
||||
Author-email: tobias.l.gustafsson@gmail.com
|
||||
License: MIT
|
||||
Description: Pyrsistent
|
||||
==========
|
||||
.. image:: https://travis-ci.org/tobgu/pyrsistent.png?branch=master
|
||||
:target: https://travis-ci.org/tobgu/pyrsistent
|
||||
|
||||
.. image:: https://badge.fury.io/py/pyrsistent.svg
|
||||
:target: https://badge.fury.io/py/pyrsistent
|
||||
|
||||
.. image:: https://coveralls.io/repos/tobgu/pyrsistent/badge.svg?branch=master&service=github
|
||||
:target: https://coveralls.io/github/tobgu/pyrsistent?branch=master
|
||||
|
||||
|
||||
.. _Pyrthon: https://www.github.com/tobgu/pyrthon/
|
||||
|
||||
Pyrsistent is a number of persistent collections (by some referred to as functional data structures). Persistent in
|
||||
the sense that they are immutable.
|
||||
|
||||
All methods on a data structure that would normally mutate it instead return a new copy of the structure containing the
|
||||
requested updates. The original structure is left untouched.
|
||||
|
||||
This will simplify the reasoning about what a program does since no hidden side effects ever can take place to these
|
||||
data structures. You can rest assured that the object you hold a reference to will remain the same throughout its
|
||||
lifetime and need not worry that somewhere five stack levels below you in the darkest corner of your application
|
||||
someone has decided to remove that element that you expected to be there.
|
||||
|
||||
Pyrsistent is influenced by persistent data structures such as those found in the standard library of Clojure. The
|
||||
data structures are designed to share common elements through path copying.
|
||||
It aims at taking these concepts and make them as pythonic as possible so that they can be easily integrated into any python
|
||||
program without hassle.
|
||||
|
||||
If you want to go all in on persistent data structures and use literal syntax to define them in your code rather
|
||||
than function calls check out Pyrthon_.
|
||||
|
||||
Examples
|
||||
--------
|
||||
.. _Sequence: collections_
|
||||
.. _Hashable: collections_
|
||||
.. _Mapping: collections_
|
||||
.. _Mappings: collections_
|
||||
.. _Set: collections_
|
||||
.. _collections: https://docs.python.org/3/library/collections.abc.html
|
||||
.. _documentation: http://pyrsistent.readthedocs.org/
|
||||
|
||||
The collection types and key features currently implemented are:
|
||||
|
||||
* PVector_, similar to a python list
|
||||
* PMap_, similar to dict
|
||||
* PSet_, similar to set
|
||||
* PRecord_, a PMap on steroids with fixed fields, optional type and invariant checking and much more
|
||||
* PClass_, a Python class fixed fields, optional type and invariant checking and much more
|
||||
* `Checked collections`_, PVector, PMap and PSet with optional type and invariance checks and more
|
||||
* PBag, similar to collections.Counter
|
||||
* PList, a classic singly linked list
|
||||
* PDeque, similar to collections.deque
|
||||
* Immutable object type (immutable) built on the named tuple
|
||||
* freeze_ and thaw_ functions to convert between pythons standard collections and pyrsistent collections.
|
||||
* Flexible transformations_ of arbitrarily complex structures built from PMaps and PVectors.
|
||||
|
||||
Below are examples of common usage patterns for some of the structures and features. More information and
|
||||
full documentation for all data structures is available in the documentation_.
|
||||
|
||||
.. _PVector:
|
||||
|
||||
PVector
|
||||
~~~~~~~
|
||||
With full support for the Sequence_ protocol PVector is meant as a drop in replacement to the built in list from a readers
|
||||
point of view. Write operations of course differ since no in place mutation is done but naming should be in line
|
||||
with corresponding operations on the built in list.
|
||||
|
||||
Support for the Hashable_ protocol also means that it can be used as key in Mappings_.
|
||||
|
||||
Appends are amortized O(1). Random access and insert is log32(n) where n is the size of the vector.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import v, pvector
|
||||
|
||||
# No mutation of vectors once created, instead they
|
||||
# are "evolved" leaving the original untouched
|
||||
>>> v1 = v(1, 2, 3)
|
||||
>>> v2 = v1.append(4)
|
||||
>>> v3 = v2.set(1, 5)
|
||||
>>> v1
|
||||
pvector([1, 2, 3])
|
||||
>>> v2
|
||||
pvector([1, 2, 3, 4])
|
||||
>>> v3
|
||||
pvector([1, 5, 3, 4])
|
||||
|
||||
# Random access and slicing
|
||||
>>> v3[1]
|
||||
5
|
||||
>>> v3[1:3]
|
||||
pvector([5, 3])
|
||||
|
||||
# Iteration
|
||||
>>> list(x + 1 for x in v3)
|
||||
[2, 6, 4, 5]
|
||||
>>> pvector(2 * x for x in range(3))
|
||||
pvector([0, 2, 4])
|
||||
|
||||
.. _PMap:
|
||||
|
||||
PMap
|
||||
~~~~
|
||||
With full support for the Mapping_ protocol PMap is meant as a drop in replacement to the built in dict from a readers point
|
||||
of view. Support for the Hashable_ protocol also means that it can be used as key in other Mappings_.
|
||||
|
||||
Random access and insert is log32(n) where n is the size of the map.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import m, pmap, v
|
||||
|
||||
# No mutation of maps once created, instead they are
|
||||
# "evolved" leaving the original untouched
|
||||
>>> m1 = m(a=1, b=2)
|
||||
>>> m2 = m1.set('c', 3)
|
||||
>>> m3 = m2.set('a', 5)
|
||||
>>> m1
|
||||
pmap({'a': 1, 'b': 2})
|
||||
>>> m2
|
||||
pmap({'a': 1, 'c': 3, 'b': 2})
|
||||
>>> m3
|
||||
pmap({'a': 5, 'c': 3, 'b': 2})
|
||||
>>> m3['a']
|
||||
5
|
||||
|
||||
# Evolution of nested persistent structures
|
||||
>>> m4 = m(a=5, b=6, c=v(1, 2))
|
||||
>>> m4.transform(('c', 1), 17)
|
||||
pmap({'a': 5, 'c': pvector([1, 17]), 'b': 6})
|
||||
>>> m5 = m(a=1, b=2)
|
||||
|
||||
# Evolve by merging with other mappings
|
||||
>>> m5.update(m(a=2, c=3), {'a': 17, 'd': 35})
|
||||
pmap({'a': 17, 'c': 3, 'b': 2, 'd': 35})
|
||||
>>> pmap({'x': 1, 'y': 2}) + pmap({'y': 3, 'z': 4})
|
||||
pmap({'y': 3, 'x': 1, 'z': 4})
|
||||
|
||||
# Dict-like methods to convert to list and iterate
|
||||
>>> m3.items()
|
||||
pvector([('a', 5), ('c', 3), ('b', 2)])
|
||||
>>> list(m3)
|
||||
['a', 'c', 'b']
|
||||
|
||||
.. _PSet:
|
||||
|
||||
PSet
|
||||
~~~~
|
||||
With full support for the Set_ protocol PSet is meant as a drop in replacement to the built in set from a readers point
|
||||
of view. Support for the Hashable_ protocol also means that it can be used as key in Mappings_.
|
||||
|
||||
Random access and insert is log32(n) where n is the size of the set.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import s
|
||||
|
||||
# No mutation of sets once created, you know the story...
|
||||
>>> s1 = s(1, 2, 3, 2)
|
||||
>>> s2 = s1.add(4)
|
||||
>>> s3 = s1.remove(1)
|
||||
>>> s1
|
||||
pset([1, 2, 3])
|
||||
>>> s2
|
||||
pset([1, 2, 3, 4])
|
||||
>>> s3
|
||||
pset([2, 3])
|
||||
|
||||
# Full support for set operations
|
||||
>>> s1 | s(3, 4, 5)
|
||||
pset([1, 2, 3, 4, 5])
|
||||
>>> s1 & s(3, 4, 5)
|
||||
pset([3])
|
||||
>>> s1 < s2
|
||||
True
|
||||
>>> s1 < s(3, 4, 5)
|
||||
False
|
||||
|
||||
.. _PRecord:
|
||||
|
||||
PRecord
|
||||
~~~~~~~
|
||||
A PRecord is a PMap with a fixed set of specified fields. Records are declared as python classes inheriting
|
||||
from PRecord. Because it is a PMap it has full support for all Mapping methods such as iteration and element
|
||||
access using subscript notation.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import PRecord, field
|
||||
>>> class ARecord(PRecord):
|
||||
... x = field()
|
||||
...
|
||||
>>> r = ARecord(x=3)
|
||||
>>> r
|
||||
ARecord(x=3)
|
||||
>>> r.x
|
||||
3
|
||||
>>> r.set(x=2)
|
||||
ARecord(x=2)
|
||||
>>> r.set(y=2)
|
||||
Traceback (most recent call last):
|
||||
AttributeError: 'y' is not among the specified fields for ARecord
|
||||
|
||||
Type information
|
||||
****************
|
||||
It is possible to add type information to the record to enforce type checks. Multiple allowed types can be specified
|
||||
by providing an iterable of types.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> class BRecord(PRecord):
|
||||
... x = field(type=int)
|
||||
... y = field(type=(int, type(None)))
|
||||
...
|
||||
>>> BRecord(x=3, y=None)
|
||||
BRecord(y=None, x=3)
|
||||
>>> BRecord(x=3.0)
|
||||
Traceback (most recent call last):
|
||||
PTypeError: Invalid type for field BRecord.x, was float
|
||||
|
||||
|
||||
Custom types (classes) that are iterable should be wrapped in a tuple to prevent their
|
||||
members being added to the set of valid types. Although Enums in particular are now
|
||||
supported without wrapping, see #83 for more information.
|
||||
|
||||
Mandatory fields
|
||||
****************
|
||||
Fields are not mandatory by default but can be specified as such. If fields are missing an
|
||||
*InvariantException* will be thrown which contains information about the missing fields.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import InvariantException
|
||||
>>> class CRecord(PRecord):
|
||||
... x = field(mandatory=True)
|
||||
...
|
||||
>>> r = CRecord(x=3)
|
||||
>>> try:
|
||||
... r.discard('x')
|
||||
... except InvariantException as e:
|
||||
... print(e.missing_fields)
|
||||
...
|
||||
('CRecord.x',)
|
||||
|
||||
Invariants
|
||||
**********
|
||||
It is possible to add invariants that must hold when evolving the record. Invariants can be
|
||||
specified on both field and record level. If invariants fail an *InvariantException* will be
|
||||
thrown which contains information about the failing invariants. An invariant function should
|
||||
return a tuple consisting of a boolean that tells if the invariant holds or not and an object
|
||||
describing the invariant. This object can later be used to identify which invariant that failed.
|
||||
|
||||
The global invariant function is only executed if all field invariants hold.
|
||||
|
||||
Global invariants are inherited to subclasses.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> class RestrictedVector(PRecord):
|
||||
... __invariant__ = lambda r: (r.y >= r.x, 'x larger than y')
|
||||
... x = field(invariant=lambda x: (x > 0, 'x negative'))
|
||||
... y = field(invariant=lambda y: (y > 0, 'y negative'))
|
||||
...
|
||||
>>> r = RestrictedVector(y=3, x=2)
|
||||
>>> try:
|
||||
... r.set(x=-1, y=-2)
|
||||
... except InvariantException as e:
|
||||
... print(e.invariant_errors)
|
||||
...
|
||||
('y negative', 'x negative')
|
||||
>>> try:
|
||||
... r.set(x=2, y=1)
|
||||
... except InvariantException as e:
|
||||
... print(e.invariant_errors)
|
||||
...
|
||||
('x larger than y',)
|
||||
|
||||
Invariants may also contain multiple assertions. For those cases the invariant function should
|
||||
return a tuple of invariant tuples as described above. This structure is reflected in the
|
||||
invariant_errors attribute of the exception which will contain tuples with data from all failed
|
||||
invariants. Eg:
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> class EvenX(PRecord):
|
||||
... x = field(invariant=lambda x: ((x > 0, 'x negative'), (x % 2 == 0, 'x odd')))
|
||||
...
|
||||
>>> try:
|
||||
... EvenX(x=-1)
|
||||
... except InvariantException as e:
|
||||
... print(e.invariant_errors)
|
||||
...
|
||||
(('x negative', 'x odd'),)
|
||||
|
||||
|
||||
Factories
|
||||
*********
|
||||
It's possible to specify factory functions for fields. The factory function receives whatever
|
||||
is supplied as field value and the actual returned by the factory is assigned to the field
|
||||
given that any type and invariant checks hold.
|
||||
PRecords have a default factory specified as a static function on the class, create(). It takes
|
||||
a *Mapping* as argument and returns an instance of the specific record.
|
||||
If a record has fields of type PRecord the create() method of that record will
|
||||
be called to create the "sub record" if no factory has explicitly been specified to override
|
||||
this behaviour.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> class DRecord(PRecord):
|
||||
... x = field(factory=int)
|
||||
...
|
||||
>>> class ERecord(PRecord):
|
||||
... d = field(type=DRecord)
|
||||
...
|
||||
>>> ERecord.create({'d': {'x': '1'}})
|
||||
ERecord(d=DRecord(x=1))
|
||||
|
||||
Collection fields
|
||||
*****************
|
||||
It is also possible to have fields with ``pyrsistent`` collections.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import pset_field, pmap_field, pvector_field
|
||||
>>> class MultiRecord(PRecord):
|
||||
... set_of_ints = pset_field(int)
|
||||
... map_int_to_str = pmap_field(int, str)
|
||||
... vector_of_strs = pvector_field(str)
|
||||
...
|
||||
|
||||
Serialization
|
||||
*************
|
||||
PRecords support serialization back to dicts. Default serialization will take keys and values
|
||||
"as is" and output them into a dict. It is possible to specify custom serialization functions
|
||||
to take care of fields that require special treatment.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from datetime import date
|
||||
>>> class Person(PRecord):
|
||||
... name = field(type=unicode)
|
||||
... birth_date = field(type=date,
|
||||
... serializer=lambda format, d: d.strftime(format['date']))
|
||||
...
|
||||
>>> john = Person(name=u'John', birth_date=date(1985, 10, 21))
|
||||
>>> john.serialize({'date': '%Y-%m-%d'})
|
||||
{'birth_date': '1985-10-21', 'name': u'John'}
|
||||
|
||||
|
||||
.. _instar: https://github.com/boxed/instar/
|
||||
|
||||
.. _PClass:
|
||||
|
||||
PClass
|
||||
~~~~~~
|
||||
A PClass is a python class with a fixed set of specified fields. PClasses are declared as python classes inheriting
|
||||
from PClass. It is defined the same way that PRecords are and behaves like a PRecord in all aspects except that it
|
||||
is not a PMap and hence not a collection but rather a plain Python object.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import PClass, field
|
||||
>>> class AClass(PClass):
|
||||
... x = field()
|
||||
...
|
||||
>>> a = AClass(x=3)
|
||||
>>> a
|
||||
AClass(x=3)
|
||||
>>> a.x
|
||||
3
|
||||
|
||||
|
||||
Checked collections
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
Checked collections currently come in three flavors: CheckedPVector, CheckedPMap and CheckedPSet.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import CheckedPVector, CheckedPMap, CheckedPSet, thaw
|
||||
>>> class Positives(CheckedPSet):
|
||||
... __type__ = (long, int)
|
||||
... __invariant__ = lambda n: (n >= 0, 'Negative')
|
||||
...
|
||||
>>> class Lottery(PRecord):
|
||||
... name = field(type=str)
|
||||
... numbers = field(type=Positives, invariant=lambda p: (len(p) > 0, 'No numbers'))
|
||||
...
|
||||
>>> class Lotteries(CheckedPVector):
|
||||
... __type__ = Lottery
|
||||
...
|
||||
>>> class LotteriesByDate(CheckedPMap):
|
||||
... __key_type__ = date
|
||||
... __value_type__ = Lotteries
|
||||
...
|
||||
>>> lotteries = LotteriesByDate.create({date(2015, 2, 15): [{'name': 'SuperLotto', 'numbers': {1, 2, 3}},
|
||||
... {'name': 'MegaLotto', 'numbers': {4, 5, 6}}],
|
||||
... date(2015, 2, 16): [{'name': 'SuperLotto', 'numbers': {3, 2, 1}},
|
||||
... {'name': 'MegaLotto', 'numbers': {6, 5, 4}}]})
|
||||
>>> lotteries
|
||||
LotteriesByDate({datetime.date(2015, 2, 15): Lotteries([Lottery(numbers=Positives([1, 2, 3]), name='SuperLotto'), Lottery(numbers=Positives([4, 5, 6]), name='MegaLotto')]), datetime.date(2015, 2, 16): Lotteries([Lottery(numbers=Positives([1, 2, 3]), name='SuperLotto'), Lottery(numbers=Positives([4, 5, 6]), name='MegaLotto')])})
|
||||
|
||||
# The checked versions support all operations that the corresponding
|
||||
# unchecked types do
|
||||
>>> lottery_0215 = lotteries[date(2015, 2, 15)]
|
||||
>>> lottery_0215.transform([0, 'name'], 'SuperDuperLotto')
|
||||
Lotteries([Lottery(numbers=Positives([1, 2, 3]), name='SuperDuperLotto'), Lottery(numbers=Positives([4, 5, 6]), name='MegaLotto')])
|
||||
|
||||
# But also makes asserts that types and invariants hold
|
||||
>>> lottery_0215.transform([0, 'name'], 999)
|
||||
Traceback (most recent call last):
|
||||
PTypeError: Invalid type for field Lottery.name, was int
|
||||
|
||||
>>> lottery_0215.transform([0, 'numbers'], set())
|
||||
Traceback (most recent call last):
|
||||
InvariantException: Field invariant failed
|
||||
|
||||
# They can be converted back to python built ins with either thaw()
|
||||
# or serialize() (which provides possibilities to customize serialization)
|
||||
>>> thaw(lottery_0215)
|
||||
[{'numbers': set([1, 2, 3]), 'name': 'SuperLotto'}, {'numbers': set([4, 5, 6]), 'name': 'MegaLotto'}]
|
||||
>>> lottery_0215.serialize()
|
||||
[{'numbers': set([1, 2, 3]), 'name': 'SuperLotto'}, {'numbers': set([4, 5, 6]), 'name': 'MegaLotto'}]
|
||||
|
||||
.. _transformations:
|
||||
|
||||
Transformations
|
||||
~~~~~~~~~~~~~~~
|
||||
Transformations are inspired by the cool library instar_ for Clojure. They let you evolve PMaps and PVectors
|
||||
with arbitrarily deep/complex nesting using simple syntax and flexible matching syntax.
|
||||
|
||||
The first argument to transformation is the path that points out the value to transform. The
|
||||
second is the transformation to perform. If the transformation is callable it will be applied
|
||||
to the value(s) matching the path. The path may also contain callables. In that case they are
|
||||
treated as matchers. If the matcher returns True for a specific key it is considered for transformation.
|
||||
|
||||
.. code:: python
|
||||
|
||||
# Basic examples
|
||||
>>> from pyrsistent import inc, freeze, thaw, rex, ny, discard
|
||||
>>> v1 = freeze([1, 2, 3, 4, 5])
|
||||
>>> v1.transform([2], inc)
|
||||
pvector([1, 2, 4, 4, 5])
|
||||
>>> v1.transform([lambda ix: 0 < ix < 4], 8)
|
||||
pvector([1, 8, 8, 8, 5])
|
||||
>>> v1.transform([lambda ix, v: ix == 0 or v == 5], 0)
|
||||
pvector([0, 2, 3, 4, 0])
|
||||
|
||||
# The (a)ny matcher can be used to match anything
|
||||
>>> v1.transform([ny], 8)
|
||||
pvector([8, 8, 8, 8, 8])
|
||||
|
||||
# Regular expressions can be used for matching
|
||||
>>> scores = freeze({'John': 12, 'Joseph': 34, 'Sara': 23})
|
||||
>>> scores.transform([rex('^Jo')], 0)
|
||||
pmap({'Joseph': 0, 'Sara': 23, 'John': 0})
|
||||
|
||||
# Transformations can be done on arbitrarily deep structures
|
||||
>>> news_paper = freeze({'articles': [{'author': 'Sara', 'content': 'A short article'},
|
||||
... {'author': 'Steve', 'content': 'A slightly longer article'}],
|
||||
... 'weather': {'temperature': '11C', 'wind': '5m/s'}})
|
||||
>>> short_news = news_paper.transform(['articles', ny, 'content'], lambda c: c[:25] + '...' if len(c) > 25 else c)
|
||||
>>> very_short_news = news_paper.transform(['articles', ny, 'content'], lambda c: c[:15] + '...' if len(c) > 15 else c)
|
||||
>>> very_short_news.articles[0].content
|
||||
'A short article'
|
||||
>>> very_short_news.articles[1].content
|
||||
'A slightly long...'
|
||||
|
||||
# When nothing has been transformed the original data structure is kept
|
||||
>>> short_news is news_paper
|
||||
True
|
||||
>>> very_short_news is news_paper
|
||||
False
|
||||
>>> very_short_news.articles[0] is news_paper.articles[0]
|
||||
True
|
||||
|
||||
# There is a special transformation that can be used to discard elements. Also
|
||||
# multiple transformations can be applied in one call
|
||||
>>> thaw(news_paper.transform(['weather'], discard, ['articles', ny, 'content'], discard))
|
||||
{'articles': [{'author': 'Sara'}, {'author': 'Steve'}]}
|
||||
|
||||
Evolvers
|
||||
~~~~~~~~
|
||||
PVector, PMap and PSet all have support for a concept dubbed *evolvers*. An evolver acts like a mutable
|
||||
view of the underlying persistent data structure with "transaction like" semantics. No updates of the original
|
||||
data structure is ever performed, it is still fully immutable.
|
||||
|
||||
The evolvers have a very limited API by design to discourage excessive, and inappropriate, usage as that would
|
||||
take us down the mutable road. In principle only basic mutation and element access functions are supported.
|
||||
Check out the documentation_ of each data structure for specific examples.
|
||||
|
||||
Examples of when you may want to use an evolver instead of working directly with the data structure include:
|
||||
|
||||
* Multiple updates are done to the same data structure and the intermediate results are of no
|
||||
interest. In this case using an evolver may be a more efficient and easier to work with.
|
||||
* You need to pass a vector into a legacy function or a function that you have no control
|
||||
over which performs in place mutations. In this case pass an evolver instance
|
||||
instead and then create a new pvector from the evolver once the function returns.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import v
|
||||
|
||||
# In place mutation as when working with the built in counterpart
|
||||
>>> v1 = v(1, 2, 3)
|
||||
>>> e = v1.evolver()
|
||||
>>> e[1] = 22
|
||||
>>> e = e.append(4)
|
||||
>>> e = e.extend([5, 6])
|
||||
>>> e[5] += 1
|
||||
>>> len(e)
|
||||
6
|
||||
|
||||
# The evolver is considered *dirty* when it contains changes compared to the underlying vector
|
||||
>>> e.is_dirty()
|
||||
True
|
||||
|
||||
# But the underlying pvector still remains untouched
|
||||
>>> v1
|
||||
pvector([1, 2, 3])
|
||||
|
||||
# Once satisfied with the updates you can produce a new pvector containing the updates.
|
||||
# The new pvector will share data with the original pvector in the same way that would have
|
||||
# been done if only using operations on the pvector.
|
||||
>>> v2 = e.persistent()
|
||||
>>> v2
|
||||
pvector([1, 22, 3, 4, 5, 7])
|
||||
|
||||
# The evolver is now no longer considered *dirty* as it contains no differences compared to the
|
||||
# pvector just produced.
|
||||
>>> e.is_dirty()
|
||||
False
|
||||
|
||||
# You may continue to work with the same evolver without affecting the content of v2
|
||||
>>> e[0] = 11
|
||||
|
||||
# Or create a new evolver from v2. The two evolvers can be updated independently but will both
|
||||
# share data with v2 where possible.
|
||||
>>> e2 = v2.evolver()
|
||||
>>> e2[0] = 1111
|
||||
>>> e.persistent()
|
||||
pvector([11, 22, 3, 4, 5, 7])
|
||||
>>> e2.persistent()
|
||||
pvector([1111, 22, 3, 4, 5, 7])
|
||||
|
||||
.. _freeze:
|
||||
.. _thaw:
|
||||
|
||||
freeze and thaw
|
||||
~~~~~~~~~~~~~~~
|
||||
These functions are great when your cozy immutable world has to interact with the evil mutable world outside.
|
||||
|
||||
.. code:: python
|
||||
|
||||
>>> from pyrsistent import freeze, thaw, v, m
|
||||
>>> freeze([1, {'a': 3}])
|
||||
pvector([1, pmap({'a': 3})])
|
||||
>>> thaw(v(1, m(a=3)))
|
||||
[1, {'a': 3}]
|
||||
|
||||
Compatibility
|
||||
-------------
|
||||
|
||||
Pyrsistent is developed and tested on Python 2.7, 3.5, 3.6, 3.7 and PyPy (Python 2 and 3 compatible). It will most
|
||||
likely work on all other versions >= 3.4 but no guarantees are given. :)
|
||||
|
||||
Compatibility issues
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. _27: https://github.com/tobgu/pyrsistent/issues/27
|
||||
|
||||
There is currently one known compatibility issue when comparing built in sets and frozensets to PSets as discussed in 27_.
|
||||
It affects python 2 versions < 2.7.8 and python 3 versions < 3.4.0 and is due to a bug described in
|
||||
http://bugs.python.org/issue8743.
|
||||
|
||||
Comparisons will fail or be incorrect when using the set/frozenset as left hand side of the comparison. As a workaround
|
||||
you need to either upgrade Python to a more recent version, avoid comparing sets/frozensets with PSets or always make
|
||||
sure to convert both sides of the comparison to the same type before performing the comparison.
|
||||
|
||||
Performance
|
||||
-----------
|
||||
|
||||
Pyrsistent is developed with performance in mind. Still, while some operations are nearly on par with their built in,
|
||||
mutable, counterparts in terms of speed, other operations are slower. In the cases where attempts at
|
||||
optimizations have been done, speed has generally been valued over space.
|
||||
|
||||
Pyrsistent comes with two API compatible flavors of PVector (on which PMap and PSet are based), one pure Python
|
||||
implementation and one implemented as a C extension. The latter generally being 2 - 20 times faster than the former.
|
||||
The C extension will be used automatically when possible.
|
||||
|
||||
The pure python implementation is fully PyPy compatible. Running it under PyPy speeds operations up considerably if
|
||||
the structures are used heavily (if JITed), for some cases the performance is almost on par with the built in counterparts.
|
||||
|
||||
Type hints
|
||||
----------
|
||||
|
||||
PEP 561 style type hints for use with mypy and various editors are available for most types and functions in pyrsistent.
|
||||
|
||||
Type classes for annotating your own code with pyrsistent types are also available under pyrsistent.typing.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
pip install pyrsistent
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
Available at http://pyrsistent.readthedocs.org/
|
||||
|
||||
Brief presentation available at http://slides.com/tobiasgustafsson/immutability-and-python/
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
Tobias Gustafsson https://github.com/tobgu
|
||||
|
||||
Christopher Armstrong https://github.com/radix
|
||||
|
||||
Anders Hovmöller https://github.com/boxed
|
||||
|
||||
Itamar Turner-Trauring https://github.com/itamarst
|
||||
|
||||
Jonathan Lange https://github.com/jml
|
||||
|
||||
Richard Futrell https://github.com/Futrell
|
||||
|
||||
Jakob Hollenstein https://github.com/jkbjh
|
||||
|
||||
David Honour https://github.com/foolswood
|
||||
|
||||
David R. MacIver https://github.com/DRMacIver
|
||||
|
||||
Marcus Ewert https://github.com/sarum90
|
||||
|
||||
Jean-Paul Calderone https://github.com/exarkun
|
||||
|
||||
Douglas Treadwell https://github.com/douglas-treadwell
|
||||
|
||||
Travis Parker https://github.com/teepark
|
||||
|
||||
Julian Berman https://github.com/Julian
|
||||
|
||||
Dennis Tomas https://github.com/dtomas
|
||||
|
||||
Neil Vyas https://github.com/neilvyas
|
||||
|
||||
doozr https://github.com/doozr
|
||||
|
||||
Kamil Galuszka https://github.com/galuszkak
|
||||
|
||||
Tsuyoshi Hombashi https://github.com/thombashi
|
||||
|
||||
nattofriends https://github.com/nattofriends
|
||||
|
||||
agberk https://github.com/agberk
|
||||
|
||||
Waleed Khan https://github.com/arxanas
|
||||
|
||||
Jean-Louis Fuchs https://github.com/ganwell
|
||||
|
||||
Carlos Corbacho https://github.com/ccorbacho
|
||||
|
||||
Felix Yan https://github.com/felixonmars
|
||||
|
||||
benrg https://github.com/benrg
|
||||
|
||||
Jere Lahelma https://github.com/je-l
|
||||
|
||||
Max Taggart https://github.com/MaxTaggart
|
||||
|
||||
Vincent Philippon https://github.com/vphilippon
|
||||
|
||||
Semen Zhydenko https://github.com/ss18
|
||||
|
||||
Till Varoquaux https://github.com/till-varoquaux
|
||||
|
||||
Michal Kowalik https://github.com/michalvi
|
||||
|
||||
ossdev07 https://github.com/ossdev07
|
||||
|
||||
Kerry Olesen https://github.com/qhesz
|
||||
|
||||
johnthagen https://github.com/johnthagen
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
Want to contribute? That's great! If you experience problems please log them on GitHub. If you want to contribute code,
|
||||
please fork the repository and submit a pull request.
|
||||
|
||||
Run tests
|
||||
~~~~~~~~~
|
||||
.. _tox: https://tox.readthedocs.io/en/latest/
|
||||
|
||||
Tests can be executed using tox_.
|
||||
|
||||
Install tox: ``pip install tox``
|
||||
|
||||
Run test for Python 2.7: ``tox -epy27``
|
||||
|
||||
Release
|
||||
~~~~~~~
|
||||
* Update CHANGES.txt
|
||||
* Update README with any new contributors and potential info needed.
|
||||
* Update _pyrsistent_version.py
|
||||
* python setup.py sdist upload
|
||||
* Commit and tag with new version: git add -u . && git commit -m 'Prepare version vX.Y.Z' && git tag -a vX.Y.Z -m 'vX.Y.Z'
|
||||
* Push commit and tags: git push && git push --tags
|
||||
|
||||
Project status
|
||||
--------------
|
||||
Pyrsistent can be considered stable and mature (who knows, there may even be a 1.0 some day :-)). The project is
|
||||
maintained, bugs fixed, PRs reviewed and merged and new releases made. I currently do not have time for development
|
||||
of new features or functionality which I don't have use for myself. I'm more than happy to take PRs for new
|
||||
functionality though!
|
||||
|
||||
There are a bunch of issues marked with ``enhancement`` and ``help wanted`` that contain requests for new functionality
|
||||
that would be nice to include. The level of difficulty and extend of the issues varies, please reach out to me if you're
|
||||
interested in working on any of them.
|
||||
|
||||
If you feel that you have a grand master plan for where you would like Pyrsistent to go and have the time to put into
|
||||
it please don't hesitate to discuss this with me and submit PRs for it. If all goes well I'd be more than happy to add
|
||||
additional maintainers to the project!
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
53
third_party/python/pyrsistent/pyrsistent.egg-info/SOURCES.txt
vendored
Normal file
53
third_party/python/pyrsistent/pyrsistent.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
CHANGES.txt
|
||||
LICENCE.mit
|
||||
MANIFEST.in
|
||||
README
|
||||
README.rst
|
||||
_pyrsistent_version.py
|
||||
pvectorcmodule.c
|
||||
setup.cfg
|
||||
setup.py
|
||||
pyrsistent/__init__.py
|
||||
pyrsistent/__init__.pyi
|
||||
pyrsistent/_checked_types.py
|
||||
pyrsistent/_compat.py
|
||||
pyrsistent/_field_common.py
|
||||
pyrsistent/_helpers.py
|
||||
pyrsistent/_immutable.py
|
||||
pyrsistent/_pbag.py
|
||||
pyrsistent/_pclass.py
|
||||
pyrsistent/_pdeque.py
|
||||
pyrsistent/_plist.py
|
||||
pyrsistent/_pmap.py
|
||||
pyrsistent/_precord.py
|
||||
pyrsistent/_pset.py
|
||||
pyrsistent/_pvector.py
|
||||
pyrsistent/_toolz.py
|
||||
pyrsistent/_transformations.py
|
||||
pyrsistent/py.typed
|
||||
pyrsistent/typing.py
|
||||
pyrsistent/typing.pyi
|
||||
pyrsistent.egg-info/PKG-INFO
|
||||
pyrsistent.egg-info/SOURCES.txt
|
||||
pyrsistent.egg-info/dependency_links.txt
|
||||
pyrsistent.egg-info/requires.txt
|
||||
pyrsistent.egg-info/top_level.txt
|
||||
tests/bag_test.py
|
||||
tests/checked_map_test.py
|
||||
tests/checked_set_test.py
|
||||
tests/checked_vector_test.py
|
||||
tests/class_test.py
|
||||
tests/deque_test.py
|
||||
tests/field_test.py
|
||||
tests/freeze_test.py
|
||||
tests/hypothesis_vector_test.py
|
||||
tests/immutable_object_test.py
|
||||
tests/list_test.py
|
||||
tests/map_test.py
|
||||
tests/memory_profiling.py
|
||||
tests/record_test.py
|
||||
tests/regression_test.py
|
||||
tests/set_test.py
|
||||
tests/toolz_test.py
|
||||
tests/transform_test.py
|
||||
tests/vector_test.py
|
1
third_party/python/pyrsistent/pyrsistent.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/pyrsistent/pyrsistent.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/pyrsistent/pyrsistent.egg-info/requires.txt
vendored
Normal file
1
third_party/python/pyrsistent/pyrsistent.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
six
|
3
third_party/python/pyrsistent/pyrsistent.egg-info/top_level.txt
vendored
Normal file
3
third_party/python/pyrsistent/pyrsistent.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
_pyrsistent_version
|
||||
pvectorc
|
||||
pyrsistent
|
536
third_party/python/pystache/pystache.egg-info/PKG-INFO
vendored
Normal file
536
third_party/python/pystache/pystache.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,536 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: pystache
|
||||
Version: 0.5.4
|
||||
Summary: Mustache for Python
|
||||
Home-page: http://github.com/defunkt/pystache
|
||||
Author: Chris Jerdonek
|
||||
Author-email: chris.jerdonek@gmail.com
|
||||
License: MIT
|
||||
Description: .. Do not edit this file. This file is auto-generated for PyPI by setup.py
|
||||
.. using pandoc, so edits should go in the source files rather than here.
|
||||
|
||||
Pystache
|
||||
========
|
||||
|
||||
.. figure:: http://defunkt.github.com/pystache/images/logo_phillips.png
|
||||
:alt: mustachioed, monocled snake by David Phillips
|
||||
|
||||
.. figure:: https://secure.travis-ci.org/defunkt/pystache.png
|
||||
:alt: Travis CI current build status
|
||||
|
||||
`Pystache <http://defunkt.github.com/pystache>`__ is a Python
|
||||
implementation of `Mustache <http://mustache.github.com/>`__. Mustache
|
||||
is a framework-agnostic, logic-free templating system inspired by
|
||||
`ctemplate <http://code.google.com/p/google-ctemplate/>`__ and
|
||||
`et <http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html>`__.
|
||||
Like ctemplate, Mustache "emphasizes separating logic from presentation:
|
||||
it is impossible to embed application logic in this template language."
|
||||
|
||||
The `mustache(5) <http://mustache.github.com/mustache.5.html>`__ man
|
||||
page provides a good introduction to Mustache's syntax. For a more
|
||||
complete (and more current) description of Mustache's behavior, see the
|
||||
official `Mustache spec <https://github.com/mustache/spec>`__.
|
||||
|
||||
Pystache is `semantically versioned <http://semver.org>`__ and can be
|
||||
found on `PyPI <http://pypi.python.org/pypi/pystache>`__. This version
|
||||
of Pystache passes all tests in `version
|
||||
1.1.2 <https://github.com/mustache/spec/tree/v1.1.2>`__ of the spec.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Pystache is tested with--
|
||||
|
||||
- Python 2.4 (requires simplejson `version
|
||||
2.0.9 <http://pypi.python.org/pypi/simplejson/2.0.9>`__ or earlier)
|
||||
- Python 2.5 (requires
|
||||
`simplejson <http://pypi.python.org/pypi/simplejson/>`__)
|
||||
- Python 2.6
|
||||
- Python 2.7
|
||||
- Python 3.1
|
||||
- Python 3.2
|
||||
- Python 3.3
|
||||
- `PyPy <http://pypy.org/>`__
|
||||
|
||||
`Distribute <http://packages.python.org/distribute/>`__ (the setuptools
|
||||
fork) is recommended over
|
||||
`setuptools <http://pypi.python.org/pypi/setuptools>`__, and is required
|
||||
in some cases (e.g. for Python 3 support). If you use
|
||||
`pip <http://www.pip-installer.org/>`__, you probably already satisfy
|
||||
this requirement.
|
||||
|
||||
JSON support is needed only for the command-line interface and to run
|
||||
the spec tests. We require simplejson for earlier versions of Python
|
||||
since Python's `json <http://docs.python.org/library/json.html>`__
|
||||
module was added in Python 2.6.
|
||||
|
||||
For Python 2.4 we require an earlier version of simplejson since
|
||||
simplejson stopped officially supporting Python 2.4 in simplejson
|
||||
version 2.1.0. Earlier versions of simplejson can be installed manually,
|
||||
as follows:
|
||||
|
||||
::
|
||||
|
||||
pip install 'simplejson<2.1.0'
|
||||
|
||||
Official support for Python 2.4 will end with Pystache version 0.6.0.
|
||||
|
||||
Install It
|
||||
----------
|
||||
|
||||
::
|
||||
|
||||
pip install pystache
|
||||
|
||||
And test it--
|
||||
|
||||
::
|
||||
|
||||
pystache-test
|
||||
|
||||
To install and test from source (e.g. from GitHub), see the Develop
|
||||
section.
|
||||
|
||||
Use It
|
||||
------
|
||||
|
||||
::
|
||||
|
||||
>>> import pystache
|
||||
>>> print pystache.render('Hi {{person}}!', {'person': 'Mom'})
|
||||
Hi Mom!
|
||||
|
||||
You can also create dedicated view classes to hold your view logic.
|
||||
|
||||
Here's your view class (in .../examples/readme.py):
|
||||
|
||||
::
|
||||
|
||||
class SayHello(object):
|
||||
def to(self):
|
||||
return "Pizza"
|
||||
|
||||
Instantiating like so:
|
||||
|
||||
::
|
||||
|
||||
>>> from pystache.tests.examples.readme import SayHello
|
||||
>>> hello = SayHello()
|
||||
|
||||
Then your template, say\_hello.mustache (by default in the same
|
||||
directory as your class definition):
|
||||
|
||||
::
|
||||
|
||||
Hello, {{to}}!
|
||||
|
||||
Pull it together:
|
||||
|
||||
::
|
||||
|
||||
>>> renderer = pystache.Renderer()
|
||||
>>> print renderer.render(hello)
|
||||
Hello, Pizza!
|
||||
|
||||
For greater control over rendering (e.g. to specify a custom template
|
||||
directory), use the ``Renderer`` class like above. One can pass
|
||||
attributes to the Renderer class constructor or set them on a Renderer
|
||||
instance. To customize template loading on a per-view basis, subclass
|
||||
``TemplateSpec``. See the docstrings of the
|
||||
`Renderer <https://github.com/defunkt/pystache/blob/master/pystache/renderer.py>`__
|
||||
class and
|
||||
`TemplateSpec <https://github.com/defunkt/pystache/blob/master/pystache/template_spec.py>`__
|
||||
class for more information.
|
||||
|
||||
You can also pre-parse a template:
|
||||
|
||||
::
|
||||
|
||||
>>> parsed = pystache.parse(u"Hey {{#who}}{{.}}!{{/who}}")
|
||||
>>> print parsed
|
||||
[u'Hey ', _SectionNode(key=u'who', index_begin=12, index_end=18, parsed=[_EscapeNode(key=u'.'), u'!'])]
|
||||
|
||||
And then:
|
||||
|
||||
::
|
||||
|
||||
>>> print renderer.render(parsed, {'who': 'Pops'})
|
||||
Hey Pops!
|
||||
>>> print renderer.render(parsed, {'who': 'you'})
|
||||
Hey you!
|
||||
|
||||
Python 3
|
||||
--------
|
||||
|
||||
Pystache has supported Python 3 since version 0.5.1. Pystache behaves
|
||||
slightly differently between Python 2 and 3, as follows:
|
||||
|
||||
- In Python 2, the default html-escape function ``cgi.escape()`` does
|
||||
not escape single quotes. In Python 3, the default escape function
|
||||
``html.escape()`` does escape single quotes.
|
||||
- In both Python 2 and 3, the string and file encodings default to
|
||||
``sys.getdefaultencoding()``. However, this function can return
|
||||
different values under Python 2 and 3, even when run from the same
|
||||
system. Check your own system for the behavior on your system, or do
|
||||
not rely on the defaults by passing in the encodings explicitly (e.g.
|
||||
to the ``Renderer`` class).
|
||||
|
||||
Unicode
|
||||
-------
|
||||
|
||||
This section describes how Pystache handles unicode, strings, and
|
||||
encodings.
|
||||
|
||||
Internally, Pystache uses `only unicode
|
||||
strings <http://docs.python.org/howto/unicode.html#tips-for-writing-unicode-aware-programs>`__
|
||||
(``str`` in Python 3 and ``unicode`` in Python 2). For input, Pystache
|
||||
accepts both unicode strings and byte strings (``bytes`` in Python 3 and
|
||||
``str`` in Python 2). For output, Pystache's template rendering methods
|
||||
return only unicode.
|
||||
|
||||
Pystache's ``Renderer`` class supports a number of attributes to control
|
||||
how Pystache converts byte strings to unicode on input. These include
|
||||
the ``file_encoding``, ``string_encoding``, and ``decode_errors``
|
||||
attributes.
|
||||
|
||||
The ``file_encoding`` attribute is the encoding the renderer uses to
|
||||
convert to unicode any files read from the file system. Similarly,
|
||||
``string_encoding`` is the encoding the renderer uses to convert any
|
||||
other byte strings encountered during the rendering process into unicode
|
||||
(e.g. context values that are encoded byte strings).
|
||||
|
||||
The ``decode_errors`` attribute is what the renderer passes as the
|
||||
``errors`` argument to Python's built-in unicode-decoding function
|
||||
(``str()`` in Python 3 and ``unicode()`` in Python 2). The valid values
|
||||
for this argument are ``strict``, ``ignore``, and ``replace``.
|
||||
|
||||
Each of these attributes can be set via the ``Renderer`` class's
|
||||
constructor using a keyword argument of the same name. See the Renderer
|
||||
class's docstrings for further details. In addition, the
|
||||
``file_encoding`` attribute can be controlled on a per-view basis by
|
||||
subclassing the ``TemplateSpec`` class. When not specified explicitly,
|
||||
these attributes default to values set in Pystache's ``defaults``
|
||||
module.
|
||||
|
||||
Develop
|
||||
-------
|
||||
|
||||
To test from a source distribution (without installing)--
|
||||
|
||||
::
|
||||
|
||||
python test_pystache.py
|
||||
|
||||
To test Pystache with multiple versions of Python (with a single
|
||||
command!), you can use `tox <http://pypi.python.org/pypi/tox>`__:
|
||||
|
||||
::
|
||||
|
||||
pip install 'virtualenv<1.8' # Version 1.8 dropped support for Python 2.4.
|
||||
pip install 'tox<1.4' # Version 1.4 dropped support for Python 2.4.
|
||||
tox
|
||||
|
||||
If you do not have all Python versions listed in ``tox.ini``--
|
||||
|
||||
::
|
||||
|
||||
tox -e py26,py32 # for example
|
||||
|
||||
The source distribution tests also include doctests and tests from the
|
||||
Mustache spec. To include tests from the Mustache spec in your test
|
||||
runs:
|
||||
|
||||
::
|
||||
|
||||
git submodule init
|
||||
git submodule update
|
||||
|
||||
The test harness parses the spec's (more human-readable) yaml files if
|
||||
`PyYAML <http://pypi.python.org/pypi/PyYAML>`__ is present. Otherwise,
|
||||
it parses the json files. To install PyYAML--
|
||||
|
||||
::
|
||||
|
||||
pip install pyyaml
|
||||
|
||||
To run a subset of the tests, you can use
|
||||
`nose <http://somethingaboutorange.com/mrl/projects/nose/0.11.1/testing.html>`__:
|
||||
|
||||
::
|
||||
|
||||
pip install nose
|
||||
nosetests --tests pystache/tests/test_context.py:GetValueTests.test_dictionary__key_present
|
||||
|
||||
Using Python 3 with Pystache from source
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Pystache is written in Python 2 and must be converted to Python 3 prior
|
||||
to using it with Python 3. The installation process (and tox) do this
|
||||
automatically.
|
||||
|
||||
To convert the code to Python 3 manually (while using Python 3)--
|
||||
|
||||
::
|
||||
|
||||
python setup.py build
|
||||
|
||||
This writes the converted code to a subdirectory called ``build``. By
|
||||
design, Python 3 builds
|
||||
`cannot <https://bitbucket.org/tarek/distribute/issue/292/allow-use_2to3-with-python-2>`__
|
||||
be created from Python 2.
|
||||
|
||||
To convert the code without using setup.py, you can use
|
||||
`2to3 <http://docs.python.org/library/2to3.html>`__ as follows (two
|
||||
steps)--
|
||||
|
||||
::
|
||||
|
||||
2to3 --write --nobackups --no-diffs --doctests_only pystache
|
||||
2to3 --write --nobackups --no-diffs pystache
|
||||
|
||||
This converts the code (and doctests) in place.
|
||||
|
||||
To ``import pystache`` from a source distribution while using Python 3,
|
||||
be sure that you are importing from a directory containing a converted
|
||||
version of the code (e.g. from the ``build`` directory after
|
||||
converting), and not from the original (unconverted) source directory.
|
||||
Otherwise, you will get a syntax error. You can help prevent this by not
|
||||
running the Python IDE from the project directory when importing
|
||||
Pystache while using Python 3.
|
||||
|
||||
Mailing List
|
||||
------------
|
||||
|
||||
There is a `mailing list <http://librelist.com/browser/pystache/>`__.
|
||||
Note that there is a bit of a delay between posting a message and seeing
|
||||
it appear in the mailing list archive.
|
||||
|
||||
Credits
|
||||
-------
|
||||
|
||||
::
|
||||
|
||||
>>> context = { 'author': 'Chris Wanstrath', 'maintainer': 'Chris Jerdonek' }
|
||||
>>> print pystache.render("Author: {{author}}\nMaintainer: {{maintainer}}", context)
|
||||
Author: Chris Wanstrath
|
||||
Maintainer: Chris Jerdonek
|
||||
|
||||
Pystache logo by `David Phillips <http://davidphillips.us/>`__ is
|
||||
licensed under a `Creative Commons Attribution-ShareAlike 3.0 Unported
|
||||
License <http://creativecommons.org/licenses/by-sa/3.0/deed.en_US>`__.
|
||||
|image0|
|
||||
|
||||
History
|
||||
=======
|
||||
|
||||
**Note:** Official support for Python 2.4 will end with Pystache version
|
||||
0.6.0.
|
||||
|
||||
0.5.4 (2014-07-11)
|
||||
------------------
|
||||
|
||||
- Bugfix: made test with filenames OS agnostic (issue #162).
|
||||
|
||||
0.5.3 (2012-11-03)
|
||||
------------------
|
||||
|
||||
- Added ability to customize string coercion (e.g. to have None render
|
||||
as ``''``) (issue #130).
|
||||
- Added Renderer.render\_name() to render a template by name (issue
|
||||
#122).
|
||||
- Added TemplateSpec.template\_path to specify an absolute path to a
|
||||
template (issue #41).
|
||||
- Added option of raising errors on missing tags/partials:
|
||||
``Renderer(missing_tags='strict')`` (issue #110).
|
||||
- Added support for finding and loading templates by file name in
|
||||
addition to by template name (issue #127). [xgecko]
|
||||
- Added a ``parse()`` function that yields a printable, pre-compiled
|
||||
parse tree.
|
||||
- Added support for rendering pre-compiled templates.
|
||||
- Added Python 3.3 to the list of supported versions.
|
||||
- Added support for `PyPy <http://pypy.org/>`__ (issue #125).
|
||||
- Added support for `Travis CI <http://travis-ci.org>`__ (issue #124).
|
||||
[msabramo]
|
||||
- Bugfix: ``defaults.DELIMITERS`` can now be changed at runtime (issue
|
||||
#135). [bennoleslie]
|
||||
- Bugfix: exceptions raised from a property are no longer swallowed
|
||||
when getting a key from a context stack (issue #110).
|
||||
- Bugfix: lambda section values can now return non-ascii, non-unicode
|
||||
strings (issue #118).
|
||||
- Bugfix: allow ``test_pystache.py`` and ``tox`` to pass when run from
|
||||
a downloaded sdist (i.e. without the spec test directory).
|
||||
- Convert HISTORY and README files from reST to Markdown.
|
||||
- More robust handling of byte strings in Python 3.
|
||||
- Added Creative Commons license for David Phillips's logo.
|
||||
|
||||
0.5.2 (2012-05-03)
|
||||
------------------
|
||||
|
||||
- Added support for dot notation and version 1.1.2 of the spec (issue
|
||||
#99). [rbp]
|
||||
- Missing partials now render as empty string per latest version of
|
||||
spec (issue #115).
|
||||
- Bugfix: falsey values now coerced to strings using str().
|
||||
- Bugfix: lambda return values for sections no longer pushed onto
|
||||
context stack (issue #113).
|
||||
- Bugfix: lists of lambdas for sections were not rendered (issue #114).
|
||||
|
||||
0.5.1 (2012-04-24)
|
||||
------------------
|
||||
|
||||
- Added support for Python 3.1 and 3.2.
|
||||
- Added tox support to test multiple Python versions.
|
||||
- Added test script entry point: pystache-test.
|
||||
- Added \_\_version\_\_ package attribute.
|
||||
- Test harness now supports both YAML and JSON forms of Mustache spec.
|
||||
- Test harness no longer requires nose.
|
||||
|
||||
0.5.0 (2012-04-03)
|
||||
------------------
|
||||
|
||||
This version represents a major rewrite and refactoring of the code base
|
||||
that also adds features and fixes many bugs. All functionality and
|
||||
nearly all unit tests have been preserved. However, some backwards
|
||||
incompatible changes to the API have been made.
|
||||
|
||||
Below is a selection of some of the changes (not exhaustive).
|
||||
|
||||
Highlights:
|
||||
|
||||
- Pystache now passes all tests in version 1.0.3 of the `Mustache
|
||||
spec <https://github.com/mustache/spec>`__. [pvande]
|
||||
- Removed View class: it is no longer necessary to subclass from View
|
||||
or from any other class to create a view.
|
||||
- Replaced Template with Renderer class: template rendering behavior
|
||||
can be modified via the Renderer constructor or by setting attributes
|
||||
on a Renderer instance.
|
||||
- Added TemplateSpec class: template rendering can be specified on a
|
||||
per-view basis by subclassing from TemplateSpec.
|
||||
- Introduced separation of concerns and removed circular dependencies
|
||||
(e.g. between Template and View classes, cf. `issue
|
||||
#13 <https://github.com/defunkt/pystache/issues/13>`__).
|
||||
- Unicode now used consistently throughout the rendering process.
|
||||
- Expanded test coverage: nosetests now runs doctests and ~105 test
|
||||
cases from the Mustache spec (increasing the number of tests from 56
|
||||
to ~315).
|
||||
- Added a rudimentary benchmarking script to gauge performance while
|
||||
refactoring.
|
||||
- Extensive documentation added (e.g. docstrings).
|
||||
|
||||
Other changes:
|
||||
|
||||
- Added a command-line interface. [vrde]
|
||||
- The main rendering class now accepts a custom partial loader (e.g. a
|
||||
dictionary) and a custom escape function.
|
||||
- Non-ascii characters in str strings are now supported while
|
||||
rendering.
|
||||
- Added string encoding, file encoding, and errors options for decoding
|
||||
to unicode.
|
||||
- Removed the output encoding option.
|
||||
- Removed the use of markupsafe.
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- Context values no longer processed as template strings.
|
||||
[jakearchibald]
|
||||
- Whitespace surrounding sections is no longer altered, per the spec.
|
||||
[heliodor]
|
||||
- Zeroes now render correctly when using PyPy. [alex]
|
||||
- Multline comments now permitted. [fczuardi]
|
||||
- Extensionless template files are now supported.
|
||||
- Passing ``**kwargs`` to ``Template()`` no longer modifies the
|
||||
context.
|
||||
- Passing ``**kwargs`` to ``Template()`` with no context no longer
|
||||
raises an exception.
|
||||
|
||||
0.4.1 (2012-03-25)
|
||||
------------------
|
||||
|
||||
- Added support for Python 2.4. [wangtz, jvantuyl]
|
||||
|
||||
0.4.0 (2011-01-12)
|
||||
------------------
|
||||
|
||||
- Add support for nested contexts (within template and view)
|
||||
- Add support for inverted lists
|
||||
- Decoupled template loading
|
||||
|
||||
0.3.1 (2010-05-07)
|
||||
------------------
|
||||
|
||||
- Fix package
|
||||
|
||||
0.3.0 (2010-05-03)
|
||||
------------------
|
||||
|
||||
- View.template\_path can now hold a list of path
|
||||
- Add {{& blah}} as an alias for {{{ blah }}}
|
||||
- Higher Order Sections
|
||||
- Inverted sections
|
||||
|
||||
0.2.0 (2010-02-15)
|
||||
------------------
|
||||
|
||||
- Bugfix: Methods returning False or None are not rendered
|
||||
- Bugfix: Don't render an empty string when a tag's value is 0.
|
||||
[enaeseth]
|
||||
- Add support for using non-callables as View attributes.
|
||||
[joshthecoder]
|
||||
- Allow using View instances as attributes. [joshthecoder]
|
||||
- Support for Unicode and non-ASCII-encoded bytestring output.
|
||||
[enaeseth]
|
||||
- Template file encoding awareness. [enaeseth]
|
||||
|
||||
0.1.1 (2009-11-13)
|
||||
------------------
|
||||
|
||||
- Ensure we're dealing with strings, always
|
||||
- Tests can be run by executing the test file directly
|
||||
|
||||
0.1.0 (2009-11-12)
|
||||
------------------
|
||||
|
||||
- First release
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
Copyright (C) 2012 Chris Jerdonek. All rights reserved.
|
||||
|
||||
Copyright (c) 2009 Chris Wanstrath
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
.. |image0| image:: http://i.creativecommons.org/l/by-sa/3.0/88x31.png
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 4 - Beta
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.4
|
||||
Classifier: Programming Language :: Python :: 2.5
|
||||
Classifier: Programming Language :: Python :: 2.6
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.1
|
||||
Classifier: Programming Language :: Python :: 3.2
|
||||
Classifier: Programming Language :: Python :: 3.3
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
97
third_party/python/pystache/pystache.egg-info/SOURCES.txt
vendored
Normal file
97
third_party/python/pystache/pystache.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
HISTORY.md
|
||||
LICENSE
|
||||
MANIFEST.in
|
||||
README.md
|
||||
TODO.md
|
||||
setup.py
|
||||
setup_description.rst
|
||||
test_pystache.py
|
||||
tox.ini
|
||||
pystache/__init__.py
|
||||
pystache/common.py
|
||||
pystache/context.py
|
||||
pystache/defaults.py
|
||||
pystache/init.py
|
||||
pystache/loader.py
|
||||
pystache/locator.py
|
||||
pystache/parsed.py
|
||||
pystache/parser.py
|
||||
pystache/renderengine.py
|
||||
pystache/renderer.py
|
||||
pystache/specloader.py
|
||||
pystache/template_spec.py
|
||||
pystache.egg-info/PKG-INFO
|
||||
pystache.egg-info/SOURCES.txt
|
||||
pystache.egg-info/dependency_links.txt
|
||||
pystache.egg-info/entry_points.txt
|
||||
pystache.egg-info/top_level.txt
|
||||
pystache/commands/__init__.py
|
||||
pystache/commands/render.py
|
||||
pystache/commands/test.py
|
||||
pystache/tests/__init__.py
|
||||
pystache/tests/benchmark.py
|
||||
pystache/tests/common.py
|
||||
pystache/tests/doctesting.py
|
||||
pystache/tests/main.py
|
||||
pystache/tests/spectesting.py
|
||||
pystache/tests/test___init__.py
|
||||
pystache/tests/test_commands.py
|
||||
pystache/tests/test_context.py
|
||||
pystache/tests/test_defaults.py
|
||||
pystache/tests/test_examples.py
|
||||
pystache/tests/test_loader.py
|
||||
pystache/tests/test_locator.py
|
||||
pystache/tests/test_parser.py
|
||||
pystache/tests/test_pystache.py
|
||||
pystache/tests/test_renderengine.py
|
||||
pystache/tests/test_renderer.py
|
||||
pystache/tests/test_simple.py
|
||||
pystache/tests/test_specloader.py
|
||||
pystache/tests/data/__init__.py
|
||||
pystache/tests/data/ascii.mustache
|
||||
pystache/tests/data/duplicate.mustache
|
||||
pystache/tests/data/non_ascii.mustache
|
||||
pystache/tests/data/sample_view.mustache
|
||||
pystache/tests/data/say_hello.mustache
|
||||
pystache/tests/data/views.py
|
||||
pystache/tests/data/locator/__init__.py
|
||||
pystache/tests/data/locator/duplicate.mustache
|
||||
pystache/tests/data/locator/template.txt
|
||||
pystache/tests/examples/__init__.py
|
||||
pystache/tests/examples/comments.mustache
|
||||
pystache/tests/examples/comments.py
|
||||
pystache/tests/examples/complex.mustache
|
||||
pystache/tests/examples/complex.py
|
||||
pystache/tests/examples/delimiters.mustache
|
||||
pystache/tests/examples/delimiters.py
|
||||
pystache/tests/examples/double_section.mustache
|
||||
pystache/tests/examples/double_section.py
|
||||
pystache/tests/examples/escaped.mustache
|
||||
pystache/tests/examples/escaped.py
|
||||
pystache/tests/examples/inner_partial.mustache
|
||||
pystache/tests/examples/inner_partial.txt
|
||||
pystache/tests/examples/inverted.mustache
|
||||
pystache/tests/examples/inverted.py
|
||||
pystache/tests/examples/lambdas.mustache
|
||||
pystache/tests/examples/lambdas.py
|
||||
pystache/tests/examples/looping_partial.mustache
|
||||
pystache/tests/examples/nested_context.mustache
|
||||
pystache/tests/examples/nested_context.py
|
||||
pystache/tests/examples/partial_in_partial.mustache
|
||||
pystache/tests/examples/partial_with_lambda.mustache
|
||||
pystache/tests/examples/partial_with_partial_and_lambda.mustache
|
||||
pystache/tests/examples/partials_with_lambdas.py
|
||||
pystache/tests/examples/readme.py
|
||||
pystache/tests/examples/say_hello.mustache
|
||||
pystache/tests/examples/simple.mustache
|
||||
pystache/tests/examples/simple.py
|
||||
pystache/tests/examples/tagless.mustache
|
||||
pystache/tests/examples/template_partial.mustache
|
||||
pystache/tests/examples/template_partial.py
|
||||
pystache/tests/examples/template_partial.txt
|
||||
pystache/tests/examples/unescaped.mustache
|
||||
pystache/tests/examples/unescaped.py
|
||||
pystache/tests/examples/unicode_input.mustache
|
||||
pystache/tests/examples/unicode_input.py
|
||||
pystache/tests/examples/unicode_output.mustache
|
||||
pystache/tests/examples/unicode_output.py
|
1
third_party/python/pystache/pystache.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/pystache/pystache.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
4
third_party/python/pystache/pystache.egg-info/entry_points.txt
vendored
Normal file
4
third_party/python/pystache/pystache.egg-info/entry_points.txt
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
[console_scripts]
|
||||
pystache = pystache.commands.render:main
|
||||
pystache-test = pystache.commands.test:main
|
||||
|
1
third_party/python/pystache/pystache.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/pystache/pystache.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
pystache
|
10
third_party/python/pytoml/pytoml.egg-info/PKG-INFO
vendored
Normal file
10
third_party/python/pytoml/pytoml.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: pytoml
|
||||
Version: 0.1.10
|
||||
Summary: A parser for TOML-0.4.0
|
||||
Home-page: https://github.com/avakar/pytoml
|
||||
Author: Martin Vejnár
|
||||
Author-email: avakar@ratatanek.cz
|
||||
License: MIT
|
||||
Description: UNKNOWN
|
||||
Platform: UNKNOWN
|
10
third_party/python/pytoml/pytoml.egg-info/SOURCES.txt
vendored
Normal file
10
third_party/python/pytoml/pytoml.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
setup.py
|
||||
pytoml/__init__.py
|
||||
pytoml/core.py
|
||||
pytoml/parser.py
|
||||
pytoml/writer.py
|
||||
pytoml.egg-info/PKG-INFO
|
||||
pytoml.egg-info/SOURCES.txt
|
||||
pytoml.egg-info/dependency_links.txt
|
||||
pytoml.egg-info/top_level.txt
|
||||
test/test.py
|
1
third_party/python/pytoml/pytoml.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/pytoml/pytoml.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/pytoml/pytoml.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/pytoml/pytoml.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
pytoml
|
14
third_party/python/slugid/slugid.egg-info/PKG-INFO
vendored
Normal file
14
third_party/python/slugid/slugid.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
Metadata-Version: 1.1
|
||||
Name: slugid
|
||||
Version: 1.0.7
|
||||
Summary: Base64 encoded uuid v4 slugs
|
||||
Home-page: http://taskcluster.github.io/slugid.py
|
||||
Author: Pete Moore
|
||||
Author-email: pmoore@mozilla.com
|
||||
License: MPL 2.0
|
||||
Description: UNKNOWN
|
||||
Platform: UNKNOWN
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3.5
|
8
third_party/python/slugid/slugid.egg-info/SOURCES.txt
vendored
Normal file
8
third_party/python/slugid/slugid.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
README.rst
|
||||
setup.py
|
||||
slugid/__init__.py
|
||||
slugid/slugid.py
|
||||
slugid.egg-info/PKG-INFO
|
||||
slugid.egg-info/SOURCES.txt
|
||||
slugid.egg-info/dependency_links.txt
|
||||
slugid.egg-info/top_level.txt
|
1
third_party/python/slugid/slugid.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/slugid/slugid.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
1
third_party/python/slugid/slugid.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/slugid/slugid.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
slugid
|
797
third_party/python/yarl/yarl.egg-info/PKG-INFO
vendored
Normal file
797
third_party/python/yarl/yarl.egg-info/PKG-INFO
vendored
Normal file
@ -0,0 +1,797 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: yarl
|
||||
Version: 1.6.3
|
||||
Summary: Yet another URL library
|
||||
Home-page: https://github.com/aio-libs/yarl/
|
||||
Author: Andrew Svetlov
|
||||
Author-email: andrew.svetlov@gmail.com
|
||||
License: Apache 2
|
||||
Description: yarl
|
||||
====
|
||||
|
||||
.. image:: https://github.com/aio-libs/yarl/workflows/CI/badge.svg
|
||||
:target: https://github.com/aio-libs/yarl/actions?query=workflow%3ACI
|
||||
:align: right
|
||||
|
||||
.. image:: https://codecov.io/gh/aio-libs/yarl/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/aio-libs/yarl
|
||||
|
||||
.. image:: https://badge.fury.io/py/yarl.svg
|
||||
:target: https://badge.fury.io/py/yarl
|
||||
|
||||
|
||||
.. image:: https://readthedocs.org/projects/yarl/badge/?version=latest
|
||||
:target: https://yarl.readthedocs.io
|
||||
|
||||
|
||||
.. image:: https://img.shields.io/pypi/pyversions/yarl.svg
|
||||
:target: https://pypi.python.org/pypi/yarl
|
||||
|
||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:target: https://gitter.im/aio-libs/Lobby
|
||||
:alt: Chat on Gitter
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Url is constructed from ``str``:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> from yarl import URL
|
||||
>>> url = URL('https://www.python.org/~guido?arg=1#frag')
|
||||
>>> url
|
||||
URL('https://www.python.org/~guido?arg=1#frag')
|
||||
|
||||
All url parts: *scheme*, *user*, *password*, *host*, *port*, *path*,
|
||||
*query* and *fragment* are accessible by properties:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> url.scheme
|
||||
'https'
|
||||
>>> url.host
|
||||
'www.python.org'
|
||||
>>> url.path
|
||||
'/~guido'
|
||||
>>> url.query_string
|
||||
'arg=1'
|
||||
>>> url.query
|
||||
<MultiDictProxy('arg': '1')>
|
||||
>>> url.fragment
|
||||
'frag'
|
||||
|
||||
All url manipulations produce a new url object:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> url = URL('https://www.python.org')
|
||||
>>> url / 'foo' / 'bar'
|
||||
URL('https://www.python.org/foo/bar')
|
||||
>>> url / 'foo' % {'bar': 'baz'}
|
||||
URL('https://www.python.org/foo?bar=baz')
|
||||
|
||||
Strings passed to constructor and modification methods are
|
||||
automatically encoded giving canonical representation as result:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> url = URL('https://www.python.org/путь')
|
||||
>>> url
|
||||
URL('https://www.python.org/%D0%BF%D1%83%D1%82%D1%8C')
|
||||
|
||||
Regular properties are *percent-decoded*, use ``raw_`` versions for
|
||||
getting *encoded* strings:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> url.path
|
||||
'/путь'
|
||||
|
||||
>>> url.raw_path
|
||||
'/%D0%BF%D1%83%D1%82%D1%8C'
|
||||
|
||||
Human readable representation of URL is available as ``.human_repr()``:
|
||||
|
||||
.. code-block:: pycon
|
||||
|
||||
>>> url.human_repr()
|
||||
'https://www.python.org/путь'
|
||||
|
||||
For full documentation please read https://yarl.readthedocs.org.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
::
|
||||
|
||||
$ pip install yarl
|
||||
|
||||
The library is Python 3 only!
|
||||
|
||||
PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
|
||||
``yarl`` on another operating system (like *Alpine Linux*, which is not
|
||||
manylinux-compliant because of the missing glibc and therefore, cannot be
|
||||
used with our wheels) the the tarball will be used to compile the library from
|
||||
the source code. It requires a C compiler and and Python headers installed.
|
||||
|
||||
To skip the compilation you must explicitly opt-in by setting the `YARL_NO_EXTENSIONS`
|
||||
environment variable to a non-empty value, e.g.:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ YARL_NO_EXTENSIONS=1 pip install yarl
|
||||
|
||||
Please note that the pure-Python (uncompiled) version is much slower. However,
|
||||
PyPy always uses a pure-Python implementation, and, as such, it is unaffected
|
||||
by this variable.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
YARL requires multidict_ library.
|
||||
|
||||
|
||||
API documentation
|
||||
------------------
|
||||
|
||||
The documentation is located at https://yarl.readthedocs.org
|
||||
|
||||
|
||||
Why isn't boolean supported by the URL query API?
|
||||
-------------------------------------------------
|
||||
|
||||
There is no standard for boolean representation of boolean values.
|
||||
|
||||
Some systems prefer ``true``/``false``, others like ``yes``/``no``, ``on``/``off``,
|
||||
``Y``/``N``, ``1``/``0``, etc.
|
||||
|
||||
``yarl`` cannot make an unambiguous decision on how to serialize ``bool`` values because
|
||||
it is specific to how the end-user's application is built and would be different for
|
||||
different apps. The library doesn't accept booleans in the API; a user should convert
|
||||
bools into strings using own preferred translation protocol.
|
||||
|
||||
|
||||
Comparison with other URL libraries
|
||||
------------------------------------
|
||||
|
||||
* furl (https://pypi.python.org/pypi/furl)
|
||||
|
||||
The library has rich functionality but the ``furl`` object is mutable.
|
||||
|
||||
I'm afraid to pass this object into foreign code: who knows if the
|
||||
code will modify my url in a terrible way while I just want to send URL
|
||||
with handy helpers for accessing URL properties.
|
||||
|
||||
``furl`` has other non-obvious tricky things but the main objection
|
||||
is mutability.
|
||||
|
||||
* URLObject (https://pypi.python.org/pypi/URLObject)
|
||||
|
||||
URLObject is immutable, that's pretty good.
|
||||
|
||||
Every URL change generates a new URL object.
|
||||
|
||||
But the library doesn't do any decode/encode transformations leaving the
|
||||
end user to cope with these gory details.
|
||||
|
||||
|
||||
Source code
|
||||
-----------
|
||||
|
||||
The project is hosted on GitHub_
|
||||
|
||||
Please file an issue on the `bug tracker
|
||||
<https://github.com/aio-libs/yarl/issues>`_ if you have found a bug
|
||||
or have some suggestion in order to improve the library.
|
||||
|
||||
The library uses `Azure Pipelines <https://dev.azure.com/aio-libs/yarl>`_ for
|
||||
Continuous Integration.
|
||||
|
||||
Discussion list
|
||||
---------------
|
||||
|
||||
*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
|
||||
|
||||
Feel free to post your questions and ideas here.
|
||||
|
||||
|
||||
Authors and License
|
||||
-------------------
|
||||
|
||||
The ``yarl`` package is written by Andrew Svetlov.
|
||||
|
||||
It's *Apache 2* licensed and freely available.
|
||||
|
||||
|
||||
.. _GitHub: https://github.com/aio-libs/yarl
|
||||
|
||||
.. _multidict: https://github.com/aio-libs/multidict
|
||||
|
||||
|
||||
=========
|
||||
Changelog
|
||||
=========
|
||||
|
||||
..
|
||||
You should *NOT* be adding new change log entries to this file, this
|
||||
file is managed by towncrier. You *may* edit previous change logs to
|
||||
fix problems like typo corrections or such.
|
||||
To add a new change log entry, please see
|
||||
https://pip.pypa.io/en/latest/development/#adding-a-news-entry
|
||||
we named the news folder "changes".
|
||||
|
||||
WARNING: Don't drop the next directive!
|
||||
|
||||
.. towncrier release notes start
|
||||
|
||||
1.6.3 (2020-11-14)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- No longer loose characters when decoding incorrect percent-sequences (like ``%e2%82%f8``). All non-decodable percent-sequences are now preserved.
|
||||
`#517 <https://github.com/aio-libs/yarl/issues/517>`_
|
||||
- Provide x86 Windows wheels.
|
||||
`#535 <https://github.com/aio-libs/yarl/issues/535>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
1.6.2 (2020-10-12)
|
||||
==================
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Provide generated ``.c`` files in TarBall distribution.
|
||||
`#530 <https://github.com/aio-libs/multidict/issues/530>`_
|
||||
|
||||
1.6.1 (2020-10-12)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Provide wheels for ``aarch64``, ``i686``, ``ppc64le``, ``s390x`` architectures on
|
||||
Linux as well as ``x86_64``.
|
||||
`#507 <https://github.com/aio-libs/yarl/issues/507>`_
|
||||
- Provide wheels for Python 3.9.
|
||||
`#526 <https://github.com/aio-libs/yarl/issues/526>`_
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ``human_repr()`` now always produces valid representation equivalent to the original URL (if the original URL is valid).
|
||||
`#511 <https://github.com/aio-libs/yarl/issues/511>`_
|
||||
- Fixed requoting a single percent followed by a percent-encoded character in the Cython implementation.
|
||||
`#514 <https://github.com/aio-libs/yarl/issues/514>`_
|
||||
- Fix ValueError when decoding ``%`` which is not followed by two hexadecimal digits.
|
||||
`#516 <https://github.com/aio-libs/yarl/issues/516>`_
|
||||
- Fix decoding ``%`` followed by a space and hexadecimal digit.
|
||||
`#520 <https://github.com/aio-libs/yarl/issues/520>`_
|
||||
- Fix annotation of ``with_query()``/``update_query()`` methods for ``key=[val1, val2]`` case.
|
||||
`#528 <https://github.com/aio-libs/yarl/issues/528>`_
|
||||
|
||||
Removal
|
||||
-------
|
||||
|
||||
- Drop Python 3.5 support; Python 3.6 is the minimal supported Python version.
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
1.6.0 (2020-09-23)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Allow for int and float subclasses in query, while still denying bool.
|
||||
`#492 <https://github.com/aio-libs/yarl/issues/492>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Do not requote arguments in ``URL.build()``, ``with_xxx()`` and in ``/`` operator.
|
||||
`#502 <https://github.com/aio-libs/yarl/issues/502>`_
|
||||
- Keep IPv6 brackets in ``origin()``.
|
||||
`#504 <https://github.com/aio-libs/yarl/issues/504>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
1.5.1 (2020-08-01)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix including relocated internal ``yarl._quoting_c`` C-extension into published PyPI dists.
|
||||
`#485 <https://github.com/aio-libs/yarl/issues/485>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#484 <https://github.com/aio-libs/yarl/issues/484>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
1.5.0 (2020-07-26)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Convert host to lowercase on URL building.
|
||||
`#386 <https://github.com/aio-libs/yarl/issues/386>`_
|
||||
- Allow using ``mod`` operator (`%`) for updating query string (an alias for ``update_query()`` method).
|
||||
`#435 <https://github.com/aio-libs/yarl/issues/435>`_
|
||||
- Allow use of sequences such as ``list`` and ``tuple`` in the values
|
||||
of a mapping such as ``dict`` to represent that a key has many values::
|
||||
|
||||
url = URL("http://example.com")
|
||||
assert url.with_query({"a": [1, 2]}) == URL("http://example.com/?a=1&a=2")
|
||||
|
||||
`#443 <https://github.com/aio-libs/yarl/issues/443>`_
|
||||
- Support URL.build() with scheme and path (creates a relative URL).
|
||||
`#464 <https://github.com/aio-libs/yarl/issues/464>`_
|
||||
- Cache slow IDNA encode/decode calls.
|
||||
`#476 <https://github.com/aio-libs/yarl/issues/476>`_
|
||||
- Add ``@final`` / ``Final`` type hints
|
||||
`#477 <https://github.com/aio-libs/yarl/issues/477>`_
|
||||
- Support URL authority/raw_authority properties and authority argument of ``URL.build()`` method.
|
||||
`#478 <https://github.com/aio-libs/yarl/issues/478>`_
|
||||
- Hide the library implementation details, make the exposed public list very clean.
|
||||
`#483 <https://github.com/aio-libs/yarl/issues/483>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix tests with newer Python (3.7.6, 3.8.1 and 3.9.0+).
|
||||
`#409 <https://github.com/aio-libs/yarl/issues/409>`_
|
||||
- Fix a bug where query component, passed in a form of mapping or sequence, is unquoted in unexpected way.
|
||||
`#426 <https://github.com/aio-libs/yarl/issues/426>`_
|
||||
- Hide `Query` and `QueryVariable` type aliases in `__init__.pyi`, now they are prefixed with underscore.
|
||||
`#431 <https://github.com/aio-libs/yarl/issues/431>`_
|
||||
- Keep ipv6 brackets after updating port/user/password.
|
||||
`#451 <https://github.com/aio-libs/yarl/issues/451>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
1.4.2 (2019-12-05)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Workaround for missing `str.isascii()` in Python 3.6
|
||||
`#389 <https://github.com/aio-libs/yarl/issues/389>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
1.4.1 (2019-11-29)
|
||||
==================
|
||||
|
||||
* Fix regression, make the library work on Python 3.5 and 3.6 again.
|
||||
|
||||
1.4.0 (2019-11-29)
|
||||
==================
|
||||
|
||||
* Distinguish an empty password in URL from a password not provided at all (#262)
|
||||
|
||||
* Fixed annotations for optional parameters of ``URL.build`` (#309)
|
||||
|
||||
* Use None as default value of ``user`` parameter of ``URL.build`` (#309)
|
||||
|
||||
* Enforce building C Accelerated modules when installing from source tarball, use
|
||||
``YARL_NO_EXTENSIONS`` environment variable for falling back to (slower) Pure Python
|
||||
implementation (#329)
|
||||
|
||||
* Drop Python 3.5 support
|
||||
|
||||
* Fix quoting of plus in path by pure python version (#339)
|
||||
|
||||
* Don't create a new URL if fragment is unchanged (#292)
|
||||
|
||||
* Included in error msg the path that produces starting slash forbidden error (#376)
|
||||
|
||||
* Skip slow IDNA encoding for ASCII-only strings (#387)
|
||||
|
||||
|
||||
1.3.0 (2018-12-11)
|
||||
==================
|
||||
|
||||
* Fix annotations for ``query`` parameter (#207)
|
||||
|
||||
* An incoming query sequence can have int variables (the same as for
|
||||
Mapping type) (#208)
|
||||
|
||||
* Add ``URL.explicit_port`` property (#218)
|
||||
|
||||
* Give a friendlier error when port cant be converted to int (#168)
|
||||
|
||||
* ``bool(URL())`` now returns ``False`` (#272)
|
||||
|
||||
1.2.6 (2018-06-14)
|
||||
==================
|
||||
|
||||
* Drop Python 3.4 trove classifier (#205)
|
||||
|
||||
1.2.5 (2018-05-23)
|
||||
==================
|
||||
|
||||
* Fix annotations for ``build`` (#199)
|
||||
|
||||
1.2.4 (2018-05-08)
|
||||
==================
|
||||
|
||||
* Fix annotations for ``cached_property`` (#195)
|
||||
|
||||
1.2.3 (2018-05-03)
|
||||
==================
|
||||
|
||||
* Accept ``str`` subclasses in ``URL`` constructor (#190)
|
||||
|
||||
1.2.2 (2018-05-01)
|
||||
==================
|
||||
|
||||
* Fix build
|
||||
|
||||
1.2.1 (2018-04-30)
|
||||
==================
|
||||
|
||||
* Pin minimal required Python to 3.5.3 (#189)
|
||||
|
||||
1.2.0 (2018-04-30)
|
||||
==================
|
||||
|
||||
* Forbid inheritance, replace ``__init__`` with ``__new__`` (#171)
|
||||
|
||||
* Support PEP-561 (provide type hinting marker) (#182)
|
||||
|
||||
1.1.1 (2018-02-17)
|
||||
==================
|
||||
|
||||
* Fix performance regression: don't encode enmpty netloc (#170)
|
||||
|
||||
1.1.0 (2018-01-21)
|
||||
==================
|
||||
|
||||
* Make pure Python quoter consistent with Cython version (#162)
|
||||
|
||||
1.0.0 (2018-01-15)
|
||||
==================
|
||||
|
||||
* Use fast path if quoted string does not need requoting (#154)
|
||||
|
||||
* Speed up quoting/unquoting by ``_Quoter`` and ``_Unquoter`` classes (#155)
|
||||
|
||||
* Drop ``yarl.quote`` and ``yarl.unquote`` public functions (#155)
|
||||
|
||||
* Add custom string writer, reuse static buffer if available (#157)
|
||||
Code is 50-80 times faster than Pure Python version (was 4-5 times faster)
|
||||
|
||||
* Don't recode IP zone (#144)
|
||||
|
||||
* Support ``encoded=True`` in ``yarl.URL.build()`` (#158)
|
||||
|
||||
* Fix updating query with multiple keys (#160)
|
||||
|
||||
0.18.0 (2018-01-10)
|
||||
===================
|
||||
|
||||
* Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible (#152)
|
||||
|
||||
0.17.0 (2017-12-30)
|
||||
===================
|
||||
|
||||
* Use IDNA 2008 for domain name processing (#149)
|
||||
|
||||
0.16.0 (2017-12-07)
|
||||
===================
|
||||
|
||||
* Fix raising ``TypeError`` by ``url.query_string()`` after
|
||||
``url.with_query({})`` (empty mapping) (#141)
|
||||
|
||||
0.15.0 (2017-11-23)
|
||||
===================
|
||||
|
||||
* Add ``raw_path_qs`` attribute (#137)
|
||||
|
||||
0.14.2 (2017-11-14)
|
||||
===================
|
||||
|
||||
* Restore ``strict`` parameter as no-op in ``quote`` / ``unquote``
|
||||
|
||||
0.14.1 (2017-11-13)
|
||||
===================
|
||||
|
||||
* Restore ``strict`` parameter as no-op for sake of compatibility with
|
||||
aiohttp 2.2
|
||||
|
||||
0.14.0 (2017-11-11)
|
||||
===================
|
||||
|
||||
* Drop strict mode (#123)
|
||||
|
||||
* Fix ``"ValueError: Unallowed PCT %"`` when there's a ``"%"`` in the url (#124)
|
||||
|
||||
0.13.0 (2017-10-01)
|
||||
===================
|
||||
|
||||
* Document ``encoded`` parameter (#102)
|
||||
|
||||
* Support relative urls like ``'?key=value'`` (#100)
|
||||
|
||||
* Unsafe encoding for QS fixed. Encode ``;`` char in value param (#104)
|
||||
|
||||
* Process passwords without user names (#95)
|
||||
|
||||
0.12.0 (2017-06-26)
|
||||
===================
|
||||
|
||||
* Properly support paths without leading slash in ``URL.with_path()`` (#90)
|
||||
|
||||
* Enable type annotation checks
|
||||
|
||||
0.11.0 (2017-06-26)
|
||||
===================
|
||||
|
||||
* Normalize path (#86)
|
||||
|
||||
* Clear query and fragment parts in ``.with_path()`` (#85)
|
||||
|
||||
0.10.3 (2017-06-13)
|
||||
===================
|
||||
|
||||
* Prevent double URL args unquoting (#83)
|
||||
|
||||
0.10.2 (2017-05-05)
|
||||
===================
|
||||
|
||||
* Unexpected hash behaviour (#75)
|
||||
|
||||
|
||||
0.10.1 (2017-05-03)
|
||||
===================
|
||||
|
||||
* Unexpected compare behaviour (#73)
|
||||
|
||||
* Do not quote or unquote + if not a query string. (#74)
|
||||
|
||||
|
||||
0.10.0 (2017-03-14)
|
||||
===================
|
||||
|
||||
* Added ``URL.build`` class method (#58)
|
||||
|
||||
* Added ``path_qs`` attribute (#42)
|
||||
|
||||
|
||||
0.9.8 (2017-02-16)
|
||||
==================
|
||||
|
||||
* Do not quote ``:`` in path
|
||||
|
||||
|
||||
0.9.7 (2017-02-16)
|
||||
==================
|
||||
|
||||
* Load from pickle without _cache (#56)
|
||||
|
||||
* Percent-encoded pluses in path variables become spaces (#59)
|
||||
|
||||
|
||||
0.9.6 (2017-02-15)
|
||||
==================
|
||||
|
||||
* Revert backward incompatible change (BaseURL)
|
||||
|
||||
|
||||
0.9.5 (2017-02-14)
|
||||
==================
|
||||
|
||||
* Fix BaseURL rich comparison support
|
||||
|
||||
|
||||
0.9.4 (2017-02-14)
|
||||
==================
|
||||
|
||||
* Use BaseURL
|
||||
|
||||
|
||||
0.9.3 (2017-02-14)
|
||||
==================
|
||||
|
||||
* Added BaseURL
|
||||
|
||||
|
||||
0.9.2 (2017-02-08)
|
||||
==================
|
||||
|
||||
* Remove debug print
|
||||
|
||||
|
||||
0.9.1 (2017-02-07)
|
||||
==================
|
||||
|
||||
* Do not lose tail chars (#45)
|
||||
|
||||
|
||||
0.9.0 (2017-02-07)
|
||||
==================
|
||||
|
||||
* Allow to quote ``%`` in non strict mode (#21)
|
||||
|
||||
* Incorrect parsing of query parameters with %3B (;) inside (#34)
|
||||
|
||||
* Fix core dumps (#41)
|
||||
|
||||
* tmpbuf - compiling error (#43)
|
||||
|
||||
* Added ``URL.update_path()`` method
|
||||
|
||||
* Added ``URL.update_query()`` method (#47)
|
||||
|
||||
|
||||
0.8.1 (2016-12-03)
|
||||
==================
|
||||
|
||||
* Fix broken aiohttp: revert back ``quote`` / ``unquote``.
|
||||
|
||||
|
||||
0.8.0 (2016-12-03)
|
||||
==================
|
||||
|
||||
* Support more verbose error messages in ``.with_query()`` (#24)
|
||||
|
||||
* Don't percent-encode ``@`` and ``:`` in path (#32)
|
||||
|
||||
* Don't expose ``yarl.quote`` and ``yarl.unquote``, these functions are
|
||||
part of private API
|
||||
|
||||
0.7.1 (2016-11-18)
|
||||
==================
|
||||
|
||||
* Accept not only ``str`` but all classes inherited from ``str`` also (#25)
|
||||
|
||||
0.7.0 (2016-11-07)
|
||||
==================
|
||||
|
||||
* Accept ``int`` as value for ``.with_query()``
|
||||
|
||||
0.6.0 (2016-11-07)
|
||||
==================
|
||||
|
||||
* Explicitly use UTF8 encoding in setup.py (#20)
|
||||
* Properly unquote non-UTF8 strings (#19)
|
||||
|
||||
0.5.3 (2016-11-02)
|
||||
==================
|
||||
|
||||
* Don't use namedtuple fields but indexes on URL construction
|
||||
|
||||
0.5.2 (2016-11-02)
|
||||
==================
|
||||
|
||||
* Inline ``_encode`` class method
|
||||
|
||||
0.5.1 (2016-11-02)
|
||||
==================
|
||||
|
||||
* Make URL construction faster by removing extra classmethod calls
|
||||
|
||||
0.5.0 (2016-11-02)
|
||||
==================
|
||||
|
||||
* Add cython optimization for quoting/unquoting
|
||||
* Provide binary wheels
|
||||
|
||||
0.4.3 (2016-09-29)
|
||||
==================
|
||||
|
||||
* Fix typing stubs
|
||||
|
||||
0.4.2 (2016-09-29)
|
||||
==================
|
||||
|
||||
* Expose ``quote()`` and ``unquote()`` as public API
|
||||
|
||||
0.4.1 (2016-09-28)
|
||||
==================
|
||||
|
||||
* Support empty values in query (``'/path?arg'``)
|
||||
|
||||
0.4.0 (2016-09-27)
|
||||
==================
|
||||
|
||||
* Introduce ``relative()`` (#16)
|
||||
|
||||
0.3.2 (2016-09-27)
|
||||
==================
|
||||
|
||||
* Typo fixes #15
|
||||
|
||||
0.3.1 (2016-09-26)
|
||||
==================
|
||||
|
||||
* Support sequence of pairs as ``with_query()`` parameter
|
||||
|
||||
0.3.0 (2016-09-26)
|
||||
==================
|
||||
|
||||
* Introduce ``is_default_port()``
|
||||
|
||||
0.2.1 (2016-09-26)
|
||||
==================
|
||||
|
||||
* Raise ValueError for URLs like 'http://:8080/'
|
||||
|
||||
0.2.0 (2016-09-18)
|
||||
==================
|
||||
|
||||
* Avoid doubling slashes when joining paths (#13)
|
||||
|
||||
* Appending path starting from slash is forbidden (#12)
|
||||
|
||||
0.1.4 (2016-09-09)
|
||||
==================
|
||||
|
||||
* Add kwargs support for ``with_query()`` (#10)
|
||||
|
||||
0.1.3 (2016-09-07)
|
||||
==================
|
||||
|
||||
* Document ``with_query()``, ``with_fragment()`` and ``origin()``
|
||||
|
||||
* Allow ``None`` for ``with_query()`` and ``with_fragment()``
|
||||
|
||||
0.1.2 (2016-09-07)
|
||||
==================
|
||||
|
||||
* Fix links, tune docs theme.
|
||||
|
||||
0.1.1 (2016-09-06)
|
||||
==================
|
||||
|
||||
* Update README, old version used obsolete API
|
||||
|
||||
0.1.0 (2016-09-06)
|
||||
==================
|
||||
|
||||
* The library was deeply refactored, bytes are gone away but all
|
||||
accepted strings are encoded if needed.
|
||||
|
||||
0.0.1 (2016-08-30)
|
||||
==================
|
||||
|
||||
* The first release.
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Topic :: Internet :: WWW/HTTP
|
||||
Requires-Python: >=3.6
|
||||
Description-Content-Type: text/x-rst
|
42
third_party/python/yarl/yarl.egg-info/SOURCES.txt
vendored
Normal file
42
third_party/python/yarl/yarl.egg-info/SOURCES.txt
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
CHANGES.rst
|
||||
LICENSE
|
||||
MANIFEST.in
|
||||
README.rst
|
||||
pyproject.toml
|
||||
setup.cfg
|
||||
setup.py
|
||||
docs/Makefile
|
||||
docs/api.rst
|
||||
docs/conf.py
|
||||
docs/index.rst
|
||||
docs/make.bat
|
||||
docs/spelling_wordlist.txt
|
||||
docs/yarl-icon-128x128.xcf
|
||||
docs/_static/yarl-icon-128x128.png
|
||||
docs/_templates/about.html
|
||||
tests/test_cache.py
|
||||
tests/test_cached_property.py
|
||||
tests/test_normalize_path.py
|
||||
tests/test_pickle.py
|
||||
tests/test_quoting.py
|
||||
tests/test_update_query.py
|
||||
tests/test_url.py
|
||||
tests/test_url_build.py
|
||||
tests/test_url_cmp_and_hash.py
|
||||
tests/test_url_parsing.py
|
||||
tests/test_url_query.py
|
||||
tests/test_url_update_netloc.py
|
||||
yarl/__init__.py
|
||||
yarl/__init__.pyi
|
||||
yarl/_quoting.py
|
||||
yarl/_quoting_c.c
|
||||
yarl/_quoting_c.pyi
|
||||
yarl/_quoting_c.pyx
|
||||
yarl/_quoting_py.py
|
||||
yarl/_url.py
|
||||
yarl/py.typed
|
||||
yarl.egg-info/PKG-INFO
|
||||
yarl.egg-info/SOURCES.txt
|
||||
yarl.egg-info/dependency_links.txt
|
||||
yarl.egg-info/requires.txt
|
||||
yarl.egg-info/top_level.txt
|
1
third_party/python/yarl/yarl.egg-info/dependency_links.txt
vendored
Normal file
1
third_party/python/yarl/yarl.egg-info/dependency_links.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
5
third_party/python/yarl/yarl.egg-info/requires.txt
vendored
Normal file
5
third_party/python/yarl/yarl.egg-info/requires.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
multidict>=4.0
|
||||
idna>=2.0
|
||||
|
||||
[:python_version < "3.8"]
|
||||
typing_extensions>=3.7.4
|
1
third_party/python/yarl/yarl.egg-info/top_level.txt
vendored
Normal file
1
third_party/python/yarl/yarl.egg-info/top_level.txt
vendored
Normal file
@ -0,0 +1 @@
|
||||
yarl
|
Loading…
Reference in New Issue
Block a user