Quokka instalación y configuración
This commit is contained in:
BIN
.venv/bin/__pycache__/jp.cpython-38.pyc
Normal file
BIN
.venv/bin/__pycache__/jp.cpython-38.pyc
Normal file
Binary file not shown.
8
.venv/bin/autopep8
Executable file
8
.venv/bin/autopep8
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from autopep8 import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/chardetect
Executable file
8
.venv/bin/chardetect
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from chardet.cli.chardetect import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/cl_napalm_configure
Executable file
8
.venv/bin/cl_napalm_configure
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from napalm.base.clitools.cl_napalm_configure import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/cl_napalm_test
Executable file
8
.venv/bin/cl_napalm_test
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from napalm.base.clitools.cl_napalm_test import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/cl_napalm_validate
Executable file
8
.venv/bin/cl_napalm_validate
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from napalm.base.clitools.cl_napalm_validate import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/flask
Executable file
8
.venv/bin/flask
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from flask.cli import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/futurize
Executable file
8
.venv/bin/futurize
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from libfuturize.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
23704
.venv/bin/get-pip.py
Normal file
23704
.venv/bin/get-pip.py
Normal file
File diff suppressed because it is too large
Load Diff
54
.venv/bin/jp.py
Executable file
54
.venv/bin/jp.py
Executable file
@ -0,0 +1,54 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
|
||||
import sys
|
||||
import json
|
||||
import argparse
|
||||
from pprint import pformat
|
||||
|
||||
import jmespath
|
||||
from jmespath import exceptions
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('expression')
|
||||
parser.add_argument('-f', '--filename',
|
||||
help=('The filename containing the input data. '
|
||||
'If a filename is not given then data is '
|
||||
'read from stdin.'))
|
||||
parser.add_argument('--ast', action='store_true',
|
||||
help=('Pretty print the AST, do not search the data.'))
|
||||
args = parser.parse_args()
|
||||
expression = args.expression
|
||||
if args.ast:
|
||||
# Only print the AST
|
||||
expression = jmespath.compile(args.expression)
|
||||
sys.stdout.write(pformat(expression.parsed))
|
||||
sys.stdout.write('\n')
|
||||
return 0
|
||||
if args.filename:
|
||||
with open(args.filename, 'r') as f:
|
||||
data = json.load(f)
|
||||
else:
|
||||
data = sys.stdin.read()
|
||||
data = json.loads(data)
|
||||
try:
|
||||
sys.stdout.write(json.dumps(
|
||||
jmespath.search(expression, data), indent=4, ensure_ascii=False))
|
||||
sys.stdout.write('\n')
|
||||
except exceptions.ArityError as e:
|
||||
sys.stderr.write("invalid-arity: %s\n" % e)
|
||||
return 1
|
||||
except exceptions.JMESPathTypeError as e:
|
||||
sys.stderr.write("invalid-type: %s\n" % e)
|
||||
return 1
|
||||
except exceptions.UnknownFunctionError as e:
|
||||
sys.stderr.write("unknown-function: %s\n" % e)
|
||||
return 1
|
||||
except exceptions.ParseError as e:
|
||||
sys.stderr.write("syntax-error: %s\n" % e)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
8
.venv/bin/napalm
Executable file
8
.venv/bin/napalm
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from napalm.base.clitools.cl_napalm import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/net-tools
Executable file
8
.venv/bin/net-tools
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from nettools.cli import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/netaddr
Executable file
8
.venv/bin/netaddr
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from netaddr.cli import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/pasteurize
Executable file
8
.venv/bin/pasteurize
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from libpasteurize.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/pycodestyle
Executable file
8
.venv/bin/pycodestyle
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pycodestyle import _main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(_main())
|
||||
8
.venv/bin/pyserial-miniterm
Executable file
8
.venv/bin/pyserial-miniterm
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from serial.tools.miniterm import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/pyserial-ports
Executable file
8
.venv/bin/pyserial-ports
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from serial.tools.list_ports import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
8
.venv/bin/tabulate
Executable file
8
.venv/bin/tabulate
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from tabulate import _main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(_main())
|
||||
8
.venv/bin/wheel
Executable file
8
.venv/bin/wheel
Executable file
@ -0,0 +1,8 @@
|
||||
#!/home/antonio/bin/CursoPythonDavidBombal/.venv/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from wheel.cli import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
||||
@ -0,0 +1,28 @@
|
||||
Copyright 2010 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
137
.venv/lib/python3.8/site-packages/Flask-1.1.2.dist-info/METADATA
Normal file
137
.venv/lib/python3.8/site-packages/Flask-1.1.2.dist-info/METADATA
Normal file
@ -0,0 +1,137 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Flask
|
||||
Version: 1.1.2
|
||||
Summary: A simple framework for building complex web applications.
|
||||
Home-page: https://palletsprojects.com/p/flask/
|
||||
Author: Armin Ronacher
|
||||
Author-email: armin.ronacher@active-4.com
|
||||
Maintainer: Pallets
|
||||
Maintainer-email: contact@palletsprojects.com
|
||||
License: BSD-3-Clause
|
||||
Project-URL: Documentation, https://flask.palletsprojects.com/
|
||||
Project-URL: Code, https://github.com/pallets/flask
|
||||
Project-URL: Issue tracker, https://github.com/pallets/flask/issues
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Framework :: Flask
|
||||
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.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
|
||||
Requires-Dist: Werkzeug (>=0.15)
|
||||
Requires-Dist: Jinja2 (>=2.10.1)
|
||||
Requires-Dist: itsdangerous (>=0.24)
|
||||
Requires-Dist: click (>=5.1)
|
||||
Provides-Extra: dev
|
||||
Requires-Dist: pytest ; extra == 'dev'
|
||||
Requires-Dist: coverage ; extra == 'dev'
|
||||
Requires-Dist: tox ; extra == 'dev'
|
||||
Requires-Dist: sphinx ; extra == 'dev'
|
||||
Requires-Dist: pallets-sphinx-themes ; extra == 'dev'
|
||||
Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'dev'
|
||||
Requires-Dist: sphinx-issues ; extra == 'dev'
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: sphinx ; extra == 'docs'
|
||||
Requires-Dist: pallets-sphinx-themes ; extra == 'docs'
|
||||
Requires-Dist: sphinxcontrib-log-cabinet ; extra == 'docs'
|
||||
Requires-Dist: sphinx-issues ; extra == 'docs'
|
||||
Provides-Extra: dotenv
|
||||
Requires-Dist: python-dotenv ; extra == 'dotenv'
|
||||
|
||||
Flask
|
||||
=====
|
||||
|
||||
Flask is a lightweight `WSGI`_ web application framework. It is designed
|
||||
to make getting started quick and easy, with the ability to scale up to
|
||||
complex applications. It began as a simple wrapper around `Werkzeug`_
|
||||
and `Jinja`_ and has become one of the most popular Python web
|
||||
application frameworks.
|
||||
|
||||
Flask offers suggestions, but doesn't enforce any dependencies or
|
||||
project layout. It is up to the developer to choose the tools and
|
||||
libraries they want to use. There are many extensions provided by the
|
||||
community that make adding new functionality easy.
|
||||
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
Install and update using `pip`_:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
pip install -U Flask
|
||||
|
||||
|
||||
A Simple Example
|
||||
----------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from flask import Flask
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route("/")
|
||||
def hello():
|
||||
return "Hello, World!"
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ env FLASK_APP=hello.py flask run
|
||||
* Serving Flask app "hello"
|
||||
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
|
||||
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
For guidance on setting up a development environment and how to make a
|
||||
contribution to Flask, see the `contributing guidelines`_.
|
||||
|
||||
.. _contributing guidelines: https://github.com/pallets/flask/blob/master/CONTRIBUTING.rst
|
||||
|
||||
|
||||
Donate
|
||||
------
|
||||
|
||||
The Pallets organization develops and supports Flask and the libraries
|
||||
it uses. 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://psfmember.org/civicrm/contribute/transact?reset=1&id=20
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
* Website: https://palletsprojects.com/p/flask/
|
||||
* Documentation: https://flask.palletsprojects.com/
|
||||
* Releases: https://pypi.org/project/Flask/
|
||||
* Code: https://github.com/pallets/flask
|
||||
* Issue tracker: https://github.com/pallets/flask/issues
|
||||
* Test status: https://dev.azure.com/pallets/flask/_build
|
||||
* Official chat: https://discord.gg/t6rrQZH
|
||||
|
||||
.. _WSGI: https://wsgi.readthedocs.io
|
||||
.. _Werkzeug: https://www.palletsprojects.com/p/werkzeug/
|
||||
.. _Jinja: https://www.palletsprojects.com/p/jinja/
|
||||
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
../../../bin/flask,sha256=NIK5z114xXP0Y3CQLwYG1ORDb705FZyfGjn4TR4Jwz4,250
|
||||
Flask-1.1.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Flask-1.1.2.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||
Flask-1.1.2.dist-info/METADATA,sha256=3INpPWH6nKfZ33R2N-bQZy4TOe1wQCMweZc9mwcNrtc,4591
|
||||
Flask-1.1.2.dist-info/RECORD,,
|
||||
Flask-1.1.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
Flask-1.1.2.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110
|
||||
Flask-1.1.2.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42
|
||||
Flask-1.1.2.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6
|
||||
flask/__init__.py,sha256=YnA9wkwbJcnb_jTT-nMsMFeFE_UWt33khKzdHmMSuyI,1894
|
||||
flask/__main__.py,sha256=fjVtt3QTANXlpJCOv3Ha7d5H-76MwzSIOab7SFD9TEk,254
|
||||
flask/__pycache__/__init__.cpython-38.pyc,,
|
||||
flask/__pycache__/__main__.cpython-38.pyc,,
|
||||
flask/__pycache__/_compat.cpython-38.pyc,,
|
||||
flask/__pycache__/app.cpython-38.pyc,,
|
||||
flask/__pycache__/blueprints.cpython-38.pyc,,
|
||||
flask/__pycache__/cli.cpython-38.pyc,,
|
||||
flask/__pycache__/config.cpython-38.pyc,,
|
||||
flask/__pycache__/ctx.cpython-38.pyc,,
|
||||
flask/__pycache__/debughelpers.cpython-38.pyc,,
|
||||
flask/__pycache__/globals.cpython-38.pyc,,
|
||||
flask/__pycache__/helpers.cpython-38.pyc,,
|
||||
flask/__pycache__/logging.cpython-38.pyc,,
|
||||
flask/__pycache__/sessions.cpython-38.pyc,,
|
||||
flask/__pycache__/signals.cpython-38.pyc,,
|
||||
flask/__pycache__/templating.cpython-38.pyc,,
|
||||
flask/__pycache__/testing.cpython-38.pyc,,
|
||||
flask/__pycache__/views.cpython-38.pyc,,
|
||||
flask/__pycache__/wrappers.cpython-38.pyc,,
|
||||
flask/_compat.py,sha256=8KPT54Iig96TuLipdogLRHNYToIcg-xPhnSV5VRERnw,4099
|
||||
flask/app.py,sha256=tmEhx_XrIRP24vZg39dHMWFzJ2jj-YxIcd51LaIT5cE,98059
|
||||
flask/blueprints.py,sha256=vkdm8NusGsfZUeIfPdCluj733QFmiQcT4Sk1tuZLUjw,21400
|
||||
flask/cli.py,sha256=SIb22uq9wYBeB2tKMl0pYdhtZ1MAQyZtPL-3m6es4G0,31035
|
||||
flask/config.py,sha256=3dejvQRYfNHw_V7dCLMxU8UNFpL34xIKemN7gHZIZ8Y,10052
|
||||
flask/ctx.py,sha256=cks-omGedkxawHFo6bKIrdOHsJCAgg1i_NWw_htxb5U,16724
|
||||
flask/debughelpers.py,sha256=-whvPKuAoU8AZ9c1z_INuOeBgfYDqE1J2xNBsoriugU,6475
|
||||
flask/globals.py,sha256=OgcHb6_NCyX6-TldciOdKcyj4PNfyQwClxdMhvov6aA,1637
|
||||
flask/helpers.py,sha256=IHa578HU_3XAAo1wpXQv24MYRYO5TzaiDQQwvUIcE6Q,43074
|
||||
flask/json/__init__.py,sha256=6nITbZYiYOPB8Qfi1-dvsblwn01KRz8VOsMBIZyaYek,11988
|
||||
flask/json/__pycache__/__init__.cpython-38.pyc,,
|
||||
flask/json/__pycache__/tag.cpython-38.pyc,,
|
||||
flask/json/tag.py,sha256=vq9GOllg_0kTWKuVFrwmkeOQzR-jdBD23x-89JyCCQI,8306
|
||||
flask/logging.py,sha256=WcY5UkqTysGfmosyygSlXyZYGwOp3y-VsE6ehoJ48dk,3250
|
||||
flask/sessions.py,sha256=G0KsEkr_i1LG_wOINwFSOW3ts7Xbv4bNgEZKc7TRloc,14360
|
||||
flask/signals.py,sha256=yYLOed2x8WnQ7pirGalQYfpYpCILJ0LJhmNSrnWvjqw,2212
|
||||
flask/templating.py,sha256=F8E_IZXn9BGsjMzUJ5N_ACMyZdiFBp_SSEaUunvfZ7g,4939
|
||||
flask/testing.py,sha256=WXsciCQbHBP7xjHqNvOA4bT0k86GvSNpgzncfXLDEEg,10146
|
||||
flask/views.py,sha256=eeWnadLAj0QdQPLtjKipDetRZyG62CT2y7fNOFDJz0g,5802
|
||||
flask/wrappers.py,sha256=kgsvtZuMM6RQaDqhRbc5Pcj9vqTnaERl2pmXcdGL7LU,4736
|
||||
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.33.6)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
[console_scripts]
|
||||
flask = flask.cli:main
|
||||
|
||||
@ -0,0 +1 @@
|
||||
flask
|
||||
@ -0,0 +1,7 @@
|
||||
Copyright (C) 2016 Cory Dolphin, Olin College
|
||||
|
||||
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.
|
||||
@ -0,0 +1,162 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Flask-Cors
|
||||
Version: 3.0.9
|
||||
Summary: A Flask extension adding a decorator for CORS support
|
||||
Home-page: https://github.com/corydolphin/flask-cors
|
||||
Author: Cory Dolphin
|
||||
Author-email: corydolphin@gmail.com
|
||||
License: MIT
|
||||
Platform: any
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT 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: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Dist: Flask (>=0.9)
|
||||
Requires-Dist: Six
|
||||
|
||||
Flask-CORS
|
||||
==========
|
||||
|
||||
|Build Status| |Latest Version| |Supported Python versions|
|
||||
|License|
|
||||
|
||||
A Flask extension for handling Cross Origin Resource Sharing (CORS),
|
||||
making cross-origin AJAX possible.
|
||||
|
||||
This package has a simple philosophy, when you want to enable CORS, you
|
||||
wish to enable it for all use cases on a domain. This means no mucking
|
||||
around with different allowed headers, methods, etc. By default,
|
||||
submission of cookies across domains is disabled due to the security
|
||||
implications, please see the documentation for how to enable
|
||||
credential'ed requests, and please make sure you add some sort of
|
||||
`CSRF <http://en.wikipedia.org/wiki/Cross-site_request_forgery>`__
|
||||
protection before doing so!
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Install the extension with using pip, or easy\_install.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ pip install -U flask-cors
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
This package exposes a Flask extension which by default enables CORS support on all routes, for all origins and methods. It allows parameterization of all CORS headers on a per-resource level. The package also contains a decorator, for those who prefer this approach.
|
||||
|
||||
Simple Usage
|
||||
~~~~~~~~~~~~
|
||||
|
||||
In the simplest case, initialize the Flask-Cors extension with default
|
||||
arguments in order to allow CORS for all domains on all routes. See the
|
||||
full list of options in the `documentation <https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
|
||||
|
||||
.. code:: python
|
||||
|
||||
|
||||
from flask import Flask
|
||||
from flask_cors import CORS
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
@app.route("/")
|
||||
def helloWorld():
|
||||
return "Hello, cross-origin-world!"
|
||||
|
||||
Resource specific CORS
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Alternatively, you can specify CORS options on a resource and origin
|
||||
level of granularity by passing a dictionary as the `resources` option,
|
||||
mapping paths to a set of options. See the
|
||||
full list of options in the `documentation <https://flask-cors.corydolphin.com/en/latest/api.html#extension>`__.
|
||||
|
||||
.. code:: python
|
||||
|
||||
app = Flask(__name__)
|
||||
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
|
||||
|
||||
@app.route("/api/v1/users")
|
||||
def list_users():
|
||||
return "user example"
|
||||
|
||||
Route specific CORS via decorator
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This extension also exposes a simple decorator to decorate flask routes
|
||||
with. Simply add ``@cross_origin()`` below a call to Flask's
|
||||
``@app.route(..)`` to allow CORS on a given route. See the
|
||||
full list of options in the `decorator documentation <https://flask-cors.corydolphin.com/en/latest/api.html#decorator>`__.
|
||||
|
||||
.. code:: python
|
||||
|
||||
@app.route("/")
|
||||
@cross_origin()
|
||||
def helloWorld():
|
||||
return "Hello, cross-origin-world!"
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
For a full list of options, please see the full
|
||||
`documentation <https://flask-cors.corydolphin.com/en/latest/api.html>`__
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
If things aren't working as you expect, enable logging to help understand
|
||||
what is going on under the hood, and why.
|
||||
|
||||
.. code:: python
|
||||
|
||||
logging.getLogger('flask_cors').level = logging.DEBUG
|
||||
|
||||
|
||||
Tests
|
||||
-----
|
||||
|
||||
A simple set of tests is included in ``test/``. To run, install nose,
|
||||
and simply invoke ``nosetests`` or ``python setup.py test`` to exercise
|
||||
the tests.
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
Questions, comments or improvements? Please create an issue on
|
||||
`Github <https://github.com/corydolphin/flask-cors>`__, tweet at
|
||||
`@corydolphin <https://twitter.com/corydolphin>`__ or send me an email.
|
||||
I do my best to include every contribution proposed in any way that I
|
||||
can.
|
||||
|
||||
Credits
|
||||
-------
|
||||
|
||||
This Flask extension is based upon the `Decorator for the HTTP Access
|
||||
Control <http://flask.pocoo.org/snippets/56/>`__ written by Armin
|
||||
Ronacher.
|
||||
|
||||
.. |Build Status| image:: https://api.travis-ci.org/corydolphin/flask-cors.svg?branch=master
|
||||
:target: https://travis-ci.org/corydolphin/flask-cors
|
||||
.. |Latest Version| image:: https://img.shields.io/pypi/v/Flask-Cors.svg
|
||||
:target: https://pypi.python.org/pypi/Flask-Cors/
|
||||
.. |Supported Python versions| image:: https://img.shields.io/pypi/pyversions/Flask-Cors.svg
|
||||
:target: https://img.shields.io/pypi/pyversions/Flask-Cors.svg
|
||||
.. |License| image:: http://img.shields.io/:license-mit-blue.svg
|
||||
:target: https://pypi.python.org/pypi/Flask-Cors/
|
||||
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
Flask_Cors-3.0.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Flask_Cors-3.0.9.dist-info/LICENSE,sha256=bhob3FSDTB4HQMvOXV9vLK4chG_Sp_SCsRZJWU-vvV0,1069
|
||||
Flask_Cors-3.0.9.dist-info/METADATA,sha256=cUytRTISWTyZGDu2VxycuGloLxldjEGw7gTLKe1irAU,5368
|
||||
Flask_Cors-3.0.9.dist-info/RECORD,,
|
||||
Flask_Cors-3.0.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
Flask_Cors-3.0.9.dist-info/WHEEL,sha256=ADKeyaGyKF5DwBNE0sRE5pvW-bSkFMJfBuhzZ3rceP4,110
|
||||
Flask_Cors-3.0.9.dist-info/top_level.txt,sha256=aWye_0QNZPp_QtPF4ZluLHqnyVLT9CPJsfiGhwqkWuo,11
|
||||
flask_cors/__init__.py,sha256=oJExwfR7yU3HAsmQ_EfL6KoLK3zq3J9HsET9r-56sfM,791
|
||||
flask_cors/__pycache__/__init__.cpython-38.pyc,,
|
||||
flask_cors/__pycache__/core.cpython-38.pyc,,
|
||||
flask_cors/__pycache__/decorator.cpython-38.pyc,,
|
||||
flask_cors/__pycache__/extension.cpython-38.pyc,,
|
||||
flask_cors/__pycache__/version.cpython-38.pyc,,
|
||||
flask_cors/core.py,sha256=N6dEVe5dffaQTw79Mc8IvEeTzvY_YsKCiOZ1lJ_PyNk,13894
|
||||
flask_cors/decorator.py,sha256=iiwjUi0lVeCm4OJJHY5Cvuzj2nENbUns3Iq6zqKXuss,4937
|
||||
flask_cors/extension.py,sha256=5PvNVLg6GsR6bWS0izBx737kZMw0vf3DUYUNdSDcBtA,7585
|
||||
flask_cors/version.py,sha256=GgzlXELdHTkTAUXqLnCAGFr2E0nwjjBPe-3RxfSkl6c,22
|
||||
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.35.1)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@ -0,0 +1 @@
|
||||
flask_cors
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,28 @@
|
||||
Copyright 2010 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@ -0,0 +1,94 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Flask-SQLAlchemy
|
||||
Version: 2.4.4
|
||||
Summary: Adds SQLAlchemy support to your Flask application.
|
||||
Home-page: https://github.com/pallets/flask-sqlalchemy
|
||||
Author: Armin Ronacher
|
||||
Author-email: armin.ronacher@active-4.com
|
||||
Maintainer: Pallets
|
||||
Maintainer-email: contact@palletsprojects.com
|
||||
License: BSD-3-Clause
|
||||
Project-URL: Documentation, https://flask-sqlalchemy.palletsprojects.com/
|
||||
Project-URL: Code, https://github.com/pallets/flask-sqlalchemy
|
||||
Project-URL: Issue tracker, https://github.com/pallets/flask-sqlalchemy/issues
|
||||
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: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >= 2.7, != 3.0.*, != 3.1.*, != 3.2.*, != 3.3.*
|
||||
Requires-Dist: Flask (>=0.10)
|
||||
Requires-Dist: SQLAlchemy (>=0.8.0)
|
||||
|
||||
Flask-SQLAlchemy
|
||||
================
|
||||
|
||||
Flask-SQLAlchemy is an extension for `Flask`_ that adds support for
|
||||
`SQLAlchemy`_ to your application. It aims to simplify using SQLAlchemy
|
||||
with Flask by providing useful defaults and extra helpers that make it
|
||||
easier to accomplish common tasks.
|
||||
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
Install and update using `pip`_:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ pip install -U Flask-SQLAlchemy
|
||||
|
||||
|
||||
A Simple Example
|
||||
----------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from flask import Flask
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///example.sqlite"
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
|
||||
class User(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
username = db.Column(db.String, unique=True, nullable=False)
|
||||
email = db.Column(db.String, unique=True, nullable=False)
|
||||
|
||||
|
||||
db.session.add(User(name="Flask", email="example@example.com"))
|
||||
db.session.commit()
|
||||
|
||||
users = User.query.all()
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
- Documentation: https://flask-sqlalchemy.palletsprojects.com/
|
||||
- Releases: https://pypi.org/project/Flask-SQLAlchemy/
|
||||
- Code: https://github.com/pallets/flask-sqlalchemy
|
||||
- Issue tracker: https://github.com/pallets/flask-sqlalchemy/issues
|
||||
- Test status: https://travis-ci.org/pallets/flask-sqlalchemy
|
||||
- Test coverage: https://codecov.io/gh/pallets/flask-sqlalchemy
|
||||
|
||||
.. _Flask: https://palletsprojects.com/p/flask/
|
||||
.. _SQLAlchemy: https://www.sqlalchemy.org
|
||||
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/METADATA,sha256=1yH4TLt3DLzKOecOhPYiTI0WbP6lfpGt_9DrNfxqEU0,3128
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/RECORD,,
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110
|
||||
Flask_SQLAlchemy-2.4.4.dist-info/top_level.txt,sha256=w2K4fNNoTh4HItoFfz2FRQShSeLcvHYrzU_sZov21QU,17
|
||||
flask_sqlalchemy/__init__.py,sha256=3GEH-HwbpHrmd3bFpkFbG66_r1Y0W78wkGDNWG84qz8,39265
|
||||
flask_sqlalchemy/__pycache__/__init__.cpython-38.pyc,,
|
||||
flask_sqlalchemy/__pycache__/_compat.cpython-38.pyc,,
|
||||
flask_sqlalchemy/__pycache__/model.cpython-38.pyc,,
|
||||
flask_sqlalchemy/__pycache__/utils.cpython-38.pyc,,
|
||||
flask_sqlalchemy/_compat.py,sha256=yua0ZSgVWwi56QpEgwaPInzkNQ9PFb7YQdvEk3dImXo,821
|
||||
flask_sqlalchemy/model.py,sha256=bd2mIv9LA1A2MZkQObgnMUCSrxNvyqplaSkCxyxKNxY,4988
|
||||
flask_sqlalchemy/utils.py,sha256=4eHqAbYElnJ3NbSAHhuINckoAHDABoxjleMJD0iKgyg,1390
|
||||
@ -0,0 +1 @@
|
||||
flask_sqlalchemy
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,28 @@
|
||||
Copyright 2007 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@ -0,0 +1,106 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Jinja2
|
||||
Version: 2.11.2
|
||||
Summary: A very fast and expressive template engine.
|
||||
Home-page: https://palletsprojects.com/p/jinja/
|
||||
Author: Armin Ronacher
|
||||
Author-email: armin.ronacher@active-4.com
|
||||
Maintainer: Pallets
|
||||
Maintainer-email: contact@palletsprojects.com
|
||||
License: BSD-3-Clause
|
||||
Project-URL: Documentation, https://jinja.palletsprojects.com/
|
||||
Project-URL: Code, https://github.com/pallets/jinja
|
||||
Project-URL: Issue tracker, https://github.com/pallets/jinja/issues
|
||||
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.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
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.*, !=3.4.*
|
||||
Description-Content-Type: text/x-rst
|
||||
Requires-Dist: MarkupSafe (>=0.23)
|
||||
Provides-Extra: i18n
|
||||
Requires-Dist: Babel (>=0.8) ; extra == 'i18n'
|
||||
|
||||
Jinja
|
||||
=====
|
||||
|
||||
Jinja is a fast, expressive, extensible templating engine. Special
|
||||
placeholders in the template allow writing code similar to Python
|
||||
syntax. Then the template is passed data to render the final document.
|
||||
|
||||
It includes:
|
||||
|
||||
- Template inheritance and inclusion.
|
||||
- Define and import macros within templates.
|
||||
- HTML templates can use autoescaping to prevent XSS from untrusted
|
||||
user input.
|
||||
- A sandboxed environment can safely render untrusted templates.
|
||||
- AsyncIO support for generating templates and calling async
|
||||
functions.
|
||||
- I18N support with Babel.
|
||||
- Templates are compiled to optimized Python code just-in-time and
|
||||
cached, or can be compiled ahead-of-time.
|
||||
- Exceptions point to the correct line in templates to make debugging
|
||||
easier.
|
||||
- Extensible filters, tests, functions, and even syntax.
|
||||
|
||||
Jinja's philosophy is that while application logic belongs in Python if
|
||||
possible, it shouldn't make the template designer's job difficult by
|
||||
restricting functionality too much.
|
||||
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
Install and update using `pip`_:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ pip install -U Jinja2
|
||||
|
||||
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||
|
||||
|
||||
In A Nutshell
|
||||
-------------
|
||||
|
||||
.. code-block:: jinja
|
||||
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Members{% endblock %}
|
||||
{% block content %}
|
||||
<ul>
|
||||
{% for user in users %}
|
||||
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
- Website: https://palletsprojects.com/p/jinja/
|
||||
- Documentation: https://jinja.palletsprojects.com/
|
||||
- Releases: https://pypi.org/project/Jinja2/
|
||||
- Code: https://github.com/pallets/jinja
|
||||
- Issue tracker: https://github.com/pallets/jinja/issues
|
||||
- Test status: https://dev.azure.com/pallets/jinja/_build
|
||||
- Official chat: https://discord.gg/t6rrQZH
|
||||
|
||||
|
||||
@ -0,0 +1,61 @@
|
||||
Jinja2-2.11.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Jinja2-2.11.2.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
|
||||
Jinja2-2.11.2.dist-info/METADATA,sha256=5ZHRZoIRAMHsJPnqhlJ622_dRPsYePYJ-9EH4-Ry7yI,3535
|
||||
Jinja2-2.11.2.dist-info/RECORD,,
|
||||
Jinja2-2.11.2.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110
|
||||
Jinja2-2.11.2.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61
|
||||
Jinja2-2.11.2.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7
|
||||
jinja2/__init__.py,sha256=0QCM_jKKDM10yzSdHRVV4mQbCbDqf0GN0GirAqibn9Y,1549
|
||||
jinja2/__pycache__/__init__.cpython-38.pyc,,
|
||||
jinja2/__pycache__/_compat.cpython-38.pyc,,
|
||||
jinja2/__pycache__/_identifier.cpython-38.pyc,,
|
||||
jinja2/__pycache__/asyncfilters.cpython-38.pyc,,
|
||||
jinja2/__pycache__/asyncsupport.cpython-38.pyc,,
|
||||
jinja2/__pycache__/bccache.cpython-38.pyc,,
|
||||
jinja2/__pycache__/compiler.cpython-38.pyc,,
|
||||
jinja2/__pycache__/constants.cpython-38.pyc,,
|
||||
jinja2/__pycache__/debug.cpython-38.pyc,,
|
||||
jinja2/__pycache__/defaults.cpython-38.pyc,,
|
||||
jinja2/__pycache__/environment.cpython-38.pyc,,
|
||||
jinja2/__pycache__/exceptions.cpython-38.pyc,,
|
||||
jinja2/__pycache__/ext.cpython-38.pyc,,
|
||||
jinja2/__pycache__/filters.cpython-38.pyc,,
|
||||
jinja2/__pycache__/idtracking.cpython-38.pyc,,
|
||||
jinja2/__pycache__/lexer.cpython-38.pyc,,
|
||||
jinja2/__pycache__/loaders.cpython-38.pyc,,
|
||||
jinja2/__pycache__/meta.cpython-38.pyc,,
|
||||
jinja2/__pycache__/nativetypes.cpython-38.pyc,,
|
||||
jinja2/__pycache__/nodes.cpython-38.pyc,,
|
||||
jinja2/__pycache__/optimizer.cpython-38.pyc,,
|
||||
jinja2/__pycache__/parser.cpython-38.pyc,,
|
||||
jinja2/__pycache__/runtime.cpython-38.pyc,,
|
||||
jinja2/__pycache__/sandbox.cpython-38.pyc,,
|
||||
jinja2/__pycache__/tests.cpython-38.pyc,,
|
||||
jinja2/__pycache__/utils.cpython-38.pyc,,
|
||||
jinja2/__pycache__/visitor.cpython-38.pyc,,
|
||||
jinja2/_compat.py,sha256=B6Se8HjnXVpzz9-vfHejn-DV2NjaVK-Iewupc5kKlu8,3191
|
||||
jinja2/_identifier.py,sha256=EdgGJKi7O1yvr4yFlvqPNEqV6M1qHyQr8Gt8GmVTKVM,1775
|
||||
jinja2/asyncfilters.py,sha256=XJtYXTxFvcJ5xwk6SaDL4S0oNnT0wPYvXBCSzc482fI,4250
|
||||
jinja2/asyncsupport.py,sha256=ZBFsDLuq3Gtji3Ia87lcyuDbqaHZJRdtShZcqwpFnSQ,7209
|
||||
jinja2/bccache.py,sha256=3Pmp4jo65M9FQuIxdxoDBbEDFwe4acDMQf77nEJfrHA,12139
|
||||
jinja2/compiler.py,sha256=Ta9W1Lit542wItAHXlDcg0sEOsFDMirCdlFPHAurg4o,66284
|
||||
jinja2/constants.py,sha256=RR1sTzNzUmKco6aZicw4JpQpJGCuPuqm1h1YmCNUEFY,1458
|
||||
jinja2/debug.py,sha256=neR7GIGGjZH3_ILJGVUYy3eLQCCaWJMXOb7o0kGInWc,8529
|
||||
jinja2/defaults.py,sha256=85B6YUUCyWPSdrSeVhcqFVuu_bHUAQXeey--FIwSeVQ,1126
|
||||
jinja2/environment.py,sha256=XDSLKc4SqNLMOwTSq3TbWEyA5WyXfuLuVD0wAVjEFwM,50629
|
||||
jinja2/exceptions.py,sha256=VjNLawcmf2ODffqVMCQK1cRmvFaUfQWF4u8ouP3QPcE,5425
|
||||
jinja2/ext.py,sha256=AtwL5O5enT_L3HR9-oBvhGyUTdGoyaqG_ICtnR_EVd4,26441
|
||||
jinja2/filters.py,sha256=_RpPgAlgIj7ExvyDzcHAC3B36cocfWK-1TEketbNeM0,41415
|
||||
jinja2/idtracking.py,sha256=J3O4VHsrbf3wzwiBc7Cro26kHb6_5kbULeIOzocchIU,9211
|
||||
jinja2/lexer.py,sha256=nUFLRKhhKmmEWkLI65nQePgcQs7qsRdjVYZETMt_v0g,30331
|
||||
jinja2/loaders.py,sha256=C-fST_dmFjgWkp0ZuCkrgICAoOsoSIF28wfAFink0oU,17666
|
||||
jinja2/meta.py,sha256=QjyYhfNRD3QCXjBJpiPl9KgkEkGXJbAkCUq4-Ur10EQ,4131
|
||||
jinja2/nativetypes.py,sha256=Ul__gtVw4xH-0qvUvnCNHedQeNDwmEuyLJztzzSPeRg,2753
|
||||
jinja2/nodes.py,sha256=Mk1oJPVgIjnQw9WOqILvcu3rLepcFZ0ahxQm2mbwDwc,31095
|
||||
jinja2/optimizer.py,sha256=gQLlMYzvQhluhzmAIFA1tXS0cwgWYOjprN-gTRcHVsc,1457
|
||||
jinja2/parser.py,sha256=fcfdqePNTNyvosIvczbytVA332qpsURvYnCGcjDHSkA,35660
|
||||
jinja2/runtime.py,sha256=0y-BRyIEZ9ltByL2Id6GpHe1oDRQAwNeQvI0SKobNMw,30618
|
||||
jinja2/sandbox.py,sha256=knayyUvXsZ-F0mk15mO2-ehK9gsw04UhB8td-iUOtLc,17127
|
||||
jinja2/tests.py,sha256=iO_Y-9Vo60zrVe1lMpSl5sKHqAxe2leZHC08OoZ8K24,4799
|
||||
jinja2/utils.py,sha256=OoVMlQe9S2-lWT6jJbTu9tDuDvGNyWUhHDcE51i5_Do,22522
|
||||
jinja2/visitor.py,sha256=DUHupl0a4PGp7nxRtZFttUzAi1ccxzqc2hzetPYUz8U,3240
|
||||
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.34.2)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
[babel.extractors]
|
||||
jinja2 = jinja2.ext:babel_extract [i18n]
|
||||
|
||||
@ -0,0 +1 @@
|
||||
jinja2
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,28 @@
|
||||
Copyright 2010 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@ -0,0 +1,105 @@
|
||||
Metadata-Version: 2.1
|
||||
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
|
||||
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.*
|
||||
Description-Content-Type: text/x-rst
|
||||
|
||||
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
|
||||
* Official chat: https://discord.gg/t6rrQZH
|
||||
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
MarkupSafe-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
MarkupSafe-1.1.1.dist-info/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||
MarkupSafe-1.1.1.dist-info/METADATA,sha256=IFCP4hCNGjXJgMoSvdjPiKDLAMUTTWoxKXQsQvmyMNU,3653
|
||||
MarkupSafe-1.1.1.dist-info/RECORD,,
|
||||
MarkupSafe-1.1.1.dist-info/WHEEL,sha256=VEyGcIFAmk_1KbI6gaZGw_mMiT-pdGweASQLX-DzYaY,108
|
||||
MarkupSafe-1.1.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
||||
markupsafe/__init__.py,sha256=oTblO5f9KFM-pvnq9bB0HgElnqkJyqHnFN1Nx2NIvnY,10126
|
||||
markupsafe/__pycache__/__init__.cpython-38.pyc,,
|
||||
markupsafe/__pycache__/_compat.cpython-38.pyc,,
|
||||
markupsafe/__pycache__/_constants.cpython-38.pyc,,
|
||||
markupsafe/__pycache__/_native.cpython-38.pyc,,
|
||||
markupsafe/_compat.py,sha256=uEW1ybxEjfxIiuTbRRaJpHsPFf4yQUMMKaPgYEC5XbU,558
|
||||
markupsafe/_constants.py,sha256=zo2ajfScG-l1Sb_52EP3MlDCqO7Y1BVHUXXKRsVDRNk,4690
|
||||
markupsafe/_native.py,sha256=d-8S_zzYt2y512xYcuSxq0NeG2DUUvG80wVdTn-4KI8,1873
|
||||
markupsafe/_speedups.c,sha256=k0fzEIK3CP6MmMqeY0ob43TP90mVN0DTyn7BAl3RqSg,9884
|
||||
markupsafe/_speedups.cpython-38-x86_64-linux-gnu.so,sha256=SbJwN321Xn7OPYGv5a6Ghzga75uT8RHQUGkoQUASF-o,48016
|
||||
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.31.1)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp38-cp38-manylinux1_x86_64
|
||||
|
||||
@ -0,0 +1 @@
|
||||
markupsafe
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
174
.venv/lib/python3.8/site-packages/PyNaCl-1.4.0.dist-info/LICENSE
Normal file
174
.venv/lib/python3.8/site-packages/PyNaCl-1.4.0.dist-info/LICENSE
Normal file
@ -0,0 +1,174 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
@ -0,0 +1,227 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: PyNaCl
|
||||
Version: 1.4.0
|
||||
Summary: Python binding to the Networking and Cryptography (NaCl) library
|
||||
Home-page: https://github.com/pyca/pynacl/
|
||||
Author: The PyNaCl developers
|
||||
Author-email: cryptography-dev@python.org
|
||||
License: Apache License 2.0
|
||||
Platform: UNKNOWN
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
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
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
|
||||
Requires-Dist: six
|
||||
Requires-Dist: cffi (>=1.4.1)
|
||||
Provides-Extra: docs
|
||||
Requires-Dist: sphinx (>=1.6.5) ; extra == 'docs'
|
||||
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
|
||||
Provides-Extra: tests
|
||||
Requires-Dist: pytest (!=3.3.0,>=3.2.1) ; extra == 'tests'
|
||||
Requires-Dist: hypothesis (>=3.27.0) ; extra == 'tests'
|
||||
|
||||
===============================================
|
||||
PyNaCl: Python binding to the libsodium library
|
||||
===============================================
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/pynacl.svg
|
||||
:target: https://pypi.org/project/PyNaCl/
|
||||
:alt: Latest Version
|
||||
|
||||
.. image:: https://travis-ci.org/pyca/pynacl.svg?branch=master
|
||||
:target: https://travis-ci.org/pyca/pynacl
|
||||
|
||||
.. image:: https://codecov.io/github/pyca/pynacl/coverage.svg?branch=master
|
||||
:target: https://codecov.io/github/pyca/pynacl?branch=master
|
||||
|
||||
.. image:: https://img.shields.io/pypi/pyversions/pynacl.svg
|
||||
:target: https://pypi.org/project/PyNaCl/
|
||||
:alt: Compatible Python Versions
|
||||
|
||||
PyNaCl is a Python binding to `libsodium`_, which is a fork of the
|
||||
`Networking and Cryptography library`_. These libraries have a stated goal of
|
||||
improving usability, security and speed. It supports Python 2.7 and 3.5+ as
|
||||
well as PyPy 2.6+.
|
||||
|
||||
.. _libsodium: https://github.com/jedisct1/libsodium
|
||||
.. _Networking and Cryptography library: https://nacl.cr.yp.to/
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* Digital signatures
|
||||
* Secret-key encryption
|
||||
* Public-key encryption
|
||||
* Hashing and message authentication
|
||||
* Password based key derivation and password hashing
|
||||
|
||||
`Changelog`_
|
||||
------------
|
||||
|
||||
.. _Changelog: https://pynacl.readthedocs.io/en/stable/changelog/
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Binary wheel install
|
||||
--------------------
|
||||
|
||||
PyNaCl ships as a binary wheel on macOS, Windows and Linux ``manylinux1`` [#many]_ ,
|
||||
so all dependencies are included. Make sure you have an up-to-date pip
|
||||
and run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install pynacl
|
||||
|
||||
Linux source build
|
||||
------------------
|
||||
|
||||
PyNaCl relies on `libsodium`_, a portable C library. A copy is bundled
|
||||
with PyNaCl so to install you can run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ pip install pynacl
|
||||
|
||||
If you'd prefer to use the version of ``libsodium`` provided by your
|
||||
distribution, you can disable the bundled copy during install by running:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ SODIUM_INSTALL=system pip install pynacl
|
||||
|
||||
.. warning:: Usage of the legacy ``easy_install`` command provided by setuptools
|
||||
is generally discouraged, and is completely unsupported in PyNaCl's case.
|
||||
|
||||
.. _libsodium: https://github.com/jedisct1/libsodium
|
||||
|
||||
.. [#many] `manylinux1 wheels <https://www.python.org/dev/peps/pep-0513/>`_
|
||||
are built on a baseline linux environment based on Centos 5.11
|
||||
and should work on most x86 and x86_64 glibc based linux environments.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
1.4.0 (2020-05-25)
|
||||
------------------
|
||||
|
||||
* Update ``libsodium`` to 1.0.18.
|
||||
* **BACKWARDS INCOMPATIBLE:** We no longer distribute 32-bit ``manylinux1``
|
||||
wheels. Continuing to produce them was a maintenance burden.
|
||||
* Added support for Python 3.8, and removed support for Python 3.4.
|
||||
* Add low level bindings for extracting the seed and the public key
|
||||
from crypto_sign_ed25519 secret key
|
||||
* Add low level bindings for deterministic random generation.
|
||||
* Add ``wheel`` and ``setuptools`` setup_requirements in ``setup.py`` (#485)
|
||||
* Fix checks on very slow builders (#481, #495)
|
||||
* Add low-level bindings to ed25519 arithmetic functions
|
||||
* Update low-level blake2b state implementation
|
||||
* Fix wrong short-input behavior of SealedBox.decrypt() (#517)
|
||||
* Raise CryptPrefixError exception instead of InvalidkeyError when trying
|
||||
to check a password against a verifier stored in a unknown format (#519)
|
||||
* Add support for minimal builds of libsodium. Trying to call functions
|
||||
not available in a minimal build will raise an UnavailableError
|
||||
exception. To compile a minimal build of the bundled libsodium, set
|
||||
the SODIUM_INSTALL_MINIMAL environment variable to any non-empty
|
||||
string (e.g. ``SODIUM_INSTALL_MINIMAL=1``) for setup.
|
||||
|
||||
1.3.0 2018-09-26
|
||||
----------------
|
||||
|
||||
* Added support for Python 3.7.
|
||||
* Update ``libsodium`` to 1.0.16.
|
||||
* Run and test all code examples in PyNaCl docs through sphinx's
|
||||
doctest builder.
|
||||
* Add low-level bindings for chacha20-poly1305 AEAD constructions.
|
||||
* Add low-level bindings for the chacha20-poly1305 secretstream constructions.
|
||||
* Add low-level bindings for ed25519ph pre-hashed signing construction.
|
||||
* Add low-level bindings for constant-time increment and addition
|
||||
on fixed-precision big integers represented as little-endian
|
||||
byte sequences.
|
||||
* Add low-level bindings for the ISO/IEC 7816-4 compatible padding API.
|
||||
* Add low-level bindings for libsodium's crypto_kx... key exchange
|
||||
construction.
|
||||
* Set hypothesis deadline to None in tests/test_pwhash.py to avoid
|
||||
incorrect test failures on slower processor architectures. GitHub
|
||||
issue #370
|
||||
|
||||
1.2.1 - 2017-12-04
|
||||
------------------
|
||||
|
||||
* Update hypothesis minimum allowed version.
|
||||
* Infrastructure: add proper configuration for readthedocs builder
|
||||
runtime environment.
|
||||
|
||||
1.2.0 - 2017-11-01
|
||||
------------------
|
||||
|
||||
* Update ``libsodium`` to 1.0.15.
|
||||
* Infrastructure: add jenkins support for automatic build of
|
||||
``manylinux1`` binary wheels
|
||||
* Added support for ``SealedBox`` construction.
|
||||
* Added support for ``argon2i`` and ``argon2id`` password hashing constructs
|
||||
and restructured high-level password hashing implementation to expose
|
||||
the same interface for all hashers.
|
||||
* Added support for 128 bit ``siphashx24`` variant of ``siphash24``.
|
||||
* Added support for ``from_seed`` APIs for X25519 keypair generation.
|
||||
* Dropped support for Python 3.3.
|
||||
|
||||
1.1.2 - 2017-03-31
|
||||
------------------
|
||||
|
||||
* reorder link time library search path when using bundled
|
||||
libsodium
|
||||
|
||||
1.1.1 - 2017-03-15
|
||||
------------------
|
||||
|
||||
* Fixed a circular import bug in ``nacl.utils``.
|
||||
|
||||
1.1.0 - 2017-03-14
|
||||
------------------
|
||||
|
||||
* Dropped support for Python 2.6.
|
||||
* Added ``shared_key()`` method on ``Box``.
|
||||
* You can now pass ``None`` to ``nonce`` when encrypting with ``Box`` or
|
||||
``SecretBox`` and it will automatically generate a random nonce.
|
||||
* Added support for ``siphash24``.
|
||||
* Added support for ``blake2b``.
|
||||
* Added support for ``scrypt``.
|
||||
* Update ``libsodium`` to 1.0.11.
|
||||
* Default to the bundled ``libsodium`` when compiling.
|
||||
* All raised exceptions are defined mixing-in
|
||||
``nacl.exceptions.CryptoError``
|
||||
|
||||
1.0.1 - 2016-01-24
|
||||
------------------
|
||||
|
||||
* Fix an issue with absolute paths that prevented the creation of wheels.
|
||||
|
||||
1.0 - 2016-01-23
|
||||
----------------
|
||||
|
||||
* PyNaCl has been ported to use the new APIs available in cffi 1.0+.
|
||||
Due to this change we no longer support PyPy releases older than 2.6.
|
||||
* Python 3.2 support has been dropped.
|
||||
* Functions to convert between Ed25519 and Curve25519 keys have been added.
|
||||
|
||||
0.3.0 - 2015-03-04
|
||||
------------------
|
||||
|
||||
* The low-level API (`nacl.c.*`) has been changed to match the
|
||||
upstream NaCl C/C++ conventions (as well as those of other NaCl bindings).
|
||||
The order of arguments and return values has changed significantly. To
|
||||
avoid silent failures, `nacl.c` has been removed, and replaced with
|
||||
`nacl.bindings` (with the new argument ordering). If you have code which
|
||||
calls these functions (e.g. `nacl.c.crypto_box_keypair()`), you must review
|
||||
the new docstrings and update your code/imports to match the new
|
||||
conventions.
|
||||
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
PyNaCl-1.4.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
PyNaCl-1.4.0.dist-info/LICENSE,sha256=0xdK1j5yHUydzLitQyCEiZLTFDabxGMZcgtYAskVP-k,9694
|
||||
PyNaCl-1.4.0.dist-info/METADATA,sha256=VXYKfhj8GTj_EfH7PT_oGHgxCAF7YonQtvn0ApWLbmY,8114
|
||||
PyNaCl-1.4.0.dist-info/RECORD,,
|
||||
PyNaCl-1.4.0.dist-info/WHEEL,sha256=HAbUOEaMuGu1vSI8bKL7nQShDuU2XC9f79bOtOydX1A,108
|
||||
PyNaCl-1.4.0.dist-info/top_level.txt,sha256=wfdEOI_G2RIzmzsMyhpqP17HUh6Jcqi99to9aHLEslo,13
|
||||
nacl/__init__.py,sha256=F4fZFkZq5_reCDDlQb3NVH_Lc1-K3JmsAQaOnJZPzXc,1170
|
||||
nacl/__pycache__/__init__.cpython-38.pyc,,
|
||||
nacl/__pycache__/encoding.cpython-38.pyc,,
|
||||
nacl/__pycache__/exceptions.cpython-38.pyc,,
|
||||
nacl/__pycache__/hash.cpython-38.pyc,,
|
||||
nacl/__pycache__/hashlib.cpython-38.pyc,,
|
||||
nacl/__pycache__/public.cpython-38.pyc,,
|
||||
nacl/__pycache__/secret.cpython-38.pyc,,
|
||||
nacl/__pycache__/signing.cpython-38.pyc,,
|
||||
nacl/__pycache__/utils.cpython-38.pyc,,
|
||||
nacl/_sodium.abi3.so,sha256=yoqlIcLJfPPPBpIaFDUQ_kricoapUJ1dzMU-00JRB1A,3270761
|
||||
nacl/bindings/__init__.py,sha256=c8Wn3gTCAZSdLMGxVnOuRChvh-8L7DrgBieAUFRqQ8Q,16883
|
||||
nacl/bindings/__pycache__/__init__.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_aead.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_box.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_core.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_generichash.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_hash.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_kx.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_pwhash.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_scalarmult.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_secretbox.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_secretstream.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_shorthash.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/crypto_sign.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/randombytes.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/sodium_core.cpython-38.pyc,,
|
||||
nacl/bindings/__pycache__/utils.cpython-38.pyc,,
|
||||
nacl/bindings/crypto_aead.py,sha256=DE5zdi09GeHZxvmrhHtxVuTqF61y1cs8trTGh_6uP8Q,17335
|
||||
nacl/bindings/crypto_box.py,sha256=VVBRvAACrEARLEZDHOFEp4g0meQWwWXTiCW0npPt0HU,9958
|
||||
nacl/bindings/crypto_core.py,sha256=7zOeRHS2oBWwI_KB1E4-sRq_ITZGWSUqxI0aT-evPGw,13433
|
||||
nacl/bindings/crypto_generichash.py,sha256=a0h-yxZR8fD7AkzaTcXj48pgFrCKVa7Mmer1wj8Az2A,8949
|
||||
nacl/bindings/crypto_hash.py,sha256=7Xp4mpXr4cpn-hAOU66KlYVUCVHP6deT0v_eW4UZZXo,2243
|
||||
nacl/bindings/crypto_kx.py,sha256=2Gjxu5c7IKAwW2MOJa9zEn1EgpIVQ0tbZQs33REZb38,6937
|
||||
nacl/bindings/crypto_pwhash.py,sha256=TH-oXgrzwnNnBCNR_iPw7TtakVBzmW1kIkJciF8MVdM,18696
|
||||
nacl/bindings/crypto_scalarmult.py,sha256=8w9CIMSar2eGR2nwmqQlQdN3z_o7L-P4unGnm9gwkVU,8208
|
||||
nacl/bindings/crypto_secretbox.py,sha256=luvzB3lwBwXxKm63e9nA2neGtOXeeG8R9SyWEckIqdI,2864
|
||||
nacl/bindings/crypto_secretstream.py,sha256=FLICuAI6kRM5qNIZbDetZVzLV-7y2dv5Vd1LTpUEhmo,10475
|
||||
nacl/bindings/crypto_shorthash.py,sha256=PK_h7X2WH_QRKJoSHbsQdhc19TIpFFqXy_wkzRPvpnY,2587
|
||||
nacl/bindings/crypto_sign.py,sha256=bQc_2VQ4CGttdi9s1hvD5PcqPXFo4ca44dRG-W2kRkc,10617
|
||||
nacl/bindings/randombytes.py,sha256=r93-dAfODRnXAUacx9MXsop-WVZ5xMJJB3xyPkHjQr4,1597
|
||||
nacl/bindings/sodium_core.py,sha256=52z0K7y6Ge6IlXcysWDVN7UdYcTOij6v0Cb0OLo8_Qc,1079
|
||||
nacl/bindings/utils.py,sha256=jOKsDbsjxN9v_HI8DOib72chyU3byqbynXxbiV909-g,4420
|
||||
nacl/encoding.py,sha256=tOiyIQVVpGU6A4Lzr0tMuqomhc_Aj0V_c1t56a-ZtPw,1928
|
||||
nacl/exceptions.py,sha256=6-hSnpjbUREnrmI1tZT2XqOBterZ0qoBsMvhCm1W5KQ,2128
|
||||
nacl/hash.py,sha256=83tVxKjG_DAZUsHKaKl-_kli7K0wNrV20cZxm4vY620,6164
|
||||
nacl/hashlib.py,sha256=R2uAL8lfdm_wGwEUcNI92YLyUcFKz9568xZFus7Msps,4197
|
||||
nacl/public.py,sha256=-nwQof5ov-wSSdvvoXh-FavTtjfpRnYykZkatNKyLd0,13442
|
||||
nacl/pwhash/__init__.py,sha256=_GxfRAjUCQlztdDHOUBbDINC3aJPIha8I-j3HIZE7eU,2720
|
||||
nacl/pwhash/__pycache__/__init__.cpython-38.pyc,,
|
||||
nacl/pwhash/__pycache__/_argon2.cpython-38.pyc,,
|
||||
nacl/pwhash/__pycache__/argon2i.cpython-38.pyc,,
|
||||
nacl/pwhash/__pycache__/argon2id.cpython-38.pyc,,
|
||||
nacl/pwhash/__pycache__/scrypt.cpython-38.pyc,,
|
||||
nacl/pwhash/_argon2.py,sha256=Eu3-juLws3_v1gNy5aeSVPEwuRVFdGOrfeF0wPH9VHA,1878
|
||||
nacl/pwhash/argon2i.py,sha256=EpheK0UHJvZYca_EMhhOcX5GXaOr0xCjFDTIgmSCSDo,4598
|
||||
nacl/pwhash/argon2id.py,sha256=IqNm5RQNEd1Z9F-bEWT-_Y9noU26QoTR5YdWONg1uuI,4610
|
||||
nacl/pwhash/scrypt.py,sha256=mpx0A2ocNkUiHVMy1qiW4UfSyI3RKxLraqkMXjbg6NI,6731
|
||||
nacl/secret.py,sha256=jf4WuUjnnXTekZ2elGgQozZl6zGzxGY_0Nw0fwehUlg,5430
|
||||
nacl/signing.py,sha256=jtPBhqfiY6JOZ-HlllRjIQ-8w3a0PFe1AyKVRBLlesg,7339
|
||||
nacl/utils.py,sha256=2rL0bIijNgEe7DOMk1-ClaZfoJCQ1NqkksrXP7bDWYU,2166
|
||||
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.34.2)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp35-abi3-manylinux1_x86_64
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
_sodium
|
||||
nacl
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,20 @@
|
||||
Copyright (c) 2017-2020 Ingy döt Net
|
||||
Copyright (c) 2006-2016 Kirill Simonov
|
||||
|
||||
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.
|
||||
@ -0,0 +1,41 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: PyYAML
|
||||
Version: 5.3.1
|
||||
Summary: YAML parser and emitter for Python
|
||||
Home-page: https://github.com/yaml/pyyaml
|
||||
Author: Kirill Simonov
|
||||
Author-email: xi@resolvent.net
|
||||
License: MIT
|
||||
Download-URL: https://pypi.org/project/PyYAML/
|
||||
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.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
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.*
|
||||
|
||||
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.
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
PyYAML-5.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
PyYAML-5.3.1.dist-info/LICENSE,sha256=xAESRJ8lS5dTBFklJIMT6ScO-jbSJrItgtTMbEPFfyk,1101
|
||||
PyYAML-5.3.1.dist-info/METADATA,sha256=xTsZFjd8T4M-5rC2M3BHgx_KTTpEPy5vFDIXrbzRXPQ,1758
|
||||
PyYAML-5.3.1.dist-info/RECORD,,
|
||||
PyYAML-5.3.1.dist-info/WHEEL,sha256=hzx2-39jWfx-No5BPGm7YN661ryRYBuLP8gZdbxDo8I,103
|
||||
PyYAML-5.3.1.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11
|
||||
yaml/__init__.py,sha256=XFUNbKTg4afAd0BETjGQ1mKQ97_g5jbE1C0WoKc74dc,13170
|
||||
yaml/__pycache__/__init__.cpython-38.pyc,,
|
||||
yaml/__pycache__/composer.cpython-38.pyc,,
|
||||
yaml/__pycache__/constructor.cpython-38.pyc,,
|
||||
yaml/__pycache__/cyaml.cpython-38.pyc,,
|
||||
yaml/__pycache__/dumper.cpython-38.pyc,,
|
||||
yaml/__pycache__/emitter.cpython-38.pyc,,
|
||||
yaml/__pycache__/error.cpython-38.pyc,,
|
||||
yaml/__pycache__/events.cpython-38.pyc,,
|
||||
yaml/__pycache__/loader.cpython-38.pyc,,
|
||||
yaml/__pycache__/nodes.cpython-38.pyc,,
|
||||
yaml/__pycache__/parser.cpython-38.pyc,,
|
||||
yaml/__pycache__/reader.cpython-38.pyc,,
|
||||
yaml/__pycache__/representer.cpython-38.pyc,,
|
||||
yaml/__pycache__/resolver.cpython-38.pyc,,
|
||||
yaml/__pycache__/scanner.cpython-38.pyc,,
|
||||
yaml/__pycache__/serializer.cpython-38.pyc,,
|
||||
yaml/__pycache__/tokens.cpython-38.pyc,,
|
||||
yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
|
||||
yaml/constructor.py,sha256=O3Uaf0_J_5GQBoeI9ZNhpJAhtdagr_X2HzDgGbZOMnw,28627
|
||||
yaml/cyaml.py,sha256=LiMkvchNonfoy1F6ec9L2BiUz3r0bwF4hympASJX1Ic,3846
|
||||
yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837
|
||||
yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006
|
||||
yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533
|
||||
yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445
|
||||
yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061
|
||||
yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440
|
||||
yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495
|
||||
yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794
|
||||
yaml/representer.py,sha256=82UM3ZxUQKqsKAF4ltWOxCS6jGPIFtXpGs7mvqyv4Xs,14184
|
||||
yaml/resolver.py,sha256=DJCjpQr8YQCEYYjKEYqTl0GrsZil2H4aFOI9b0Oe-U4,8970
|
||||
yaml/scanner.py,sha256=KeQIKGNlSyPE8QDwionHxy9CgbqE5teJEz05FR9-nAg,51277
|
||||
yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165
|
||||
yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573
|
||||
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.36.2)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp38-cp38-linux_x86_64
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
_yaml
|
||||
yaml
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,19 @@
|
||||
Copyright 2005-2020 SQLAlchemy authors and contributors <see AUTHORS file>.
|
||||
|
||||
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.
|
||||
@ -0,0 +1,210 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: SQLAlchemy
|
||||
Version: 1.3.22
|
||||
Summary: Database Abstraction Library
|
||||
Home-page: http://www.sqlalchemy.org
|
||||
Author: Mike Bayer
|
||||
Author-email: mike_mp@zzzcomputing.com
|
||||
License: MIT
|
||||
Project-URL: Documentation, https://docs.sqlalchemy.org
|
||||
Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
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: 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 :: Database :: Front-Ends
|
||||
Classifier: Operating System :: OS Independent
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
|
||||
Provides-Extra: mssql
|
||||
Requires-Dist: pyodbc ; extra == 'mssql'
|
||||
Provides-Extra: mssql_pymssql
|
||||
Requires-Dist: pymssql ; extra == 'mssql_pymssql'
|
||||
Provides-Extra: mssql_pyodbc
|
||||
Requires-Dist: pyodbc ; extra == 'mssql_pyodbc'
|
||||
Provides-Extra: mysql
|
||||
Requires-Dist: mysqlclient ; extra == 'mysql'
|
||||
Provides-Extra: oracle
|
||||
Requires-Dist: cx-oracle ; extra == 'oracle'
|
||||
Provides-Extra: postgresql
|
||||
Requires-Dist: psycopg2 ; extra == 'postgresql'
|
||||
Provides-Extra: postgresql_pg8000
|
||||
Requires-Dist: pg8000 ; extra == 'postgresql_pg8000'
|
||||
Provides-Extra: postgresql_psycopg2binary
|
||||
Requires-Dist: psycopg2-binary ; extra == 'postgresql_psycopg2binary'
|
||||
Provides-Extra: postgresql_psycopg2cffi
|
||||
Requires-Dist: psycopg2cffi ; extra == 'postgresql_psycopg2cffi'
|
||||
Provides-Extra: pymysql
|
||||
Requires-Dist: pymysql ; extra == 'pymysql'
|
||||
|
||||
SQLAlchemy
|
||||
==========
|
||||
|
||||
|PyPI| |Python| |Downloads|
|
||||
|
||||
.. |PyPI| image:: https://img.shields.io/pypi/v/sqlalchemy
|
||||
:target: https://pypi.org/project/sqlalchemy
|
||||
:alt: PyPI
|
||||
|
||||
.. |Python| image:: https://img.shields.io/pypi/pyversions/sqlalchemy
|
||||
:target: https://pypi.org/project/sqlalchemy
|
||||
:alt: PyPI - Python Version
|
||||
|
||||
.. |Downloads| image:: https://img.shields.io/pypi/dm/sqlalchemy
|
||||
:target: https://pypi.org/project/sqlalchemy
|
||||
:alt: PyPI - Downloads
|
||||
|
||||
|
||||
The Python SQL Toolkit and Object Relational Mapper
|
||||
|
||||
Introduction
|
||||
-------------
|
||||
|
||||
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper
|
||||
that gives application developers the full power and
|
||||
flexibility of SQL. SQLAlchemy provides a full suite
|
||||
of well known enterprise-level persistence patterns,
|
||||
designed for efficient and high-performing database
|
||||
access, adapted into a simple and Pythonic domain
|
||||
language.
|
||||
|
||||
Major SQLAlchemy features include:
|
||||
|
||||
* An industrial strength ORM, built
|
||||
from the core on the identity map, unit of work,
|
||||
and data mapper patterns. These patterns
|
||||
allow transparent persistence of objects
|
||||
using a declarative configuration system.
|
||||
Domain models
|
||||
can be constructed and manipulated naturally,
|
||||
and changes are synchronized with the
|
||||
current transaction automatically.
|
||||
* A relationally-oriented query system, exposing
|
||||
the full range of SQL's capabilities
|
||||
explicitly, including joins, subqueries,
|
||||
correlation, and most everything else,
|
||||
in terms of the object model.
|
||||
Writing queries with the ORM uses the same
|
||||
techniques of relational composition you use
|
||||
when writing SQL. While you can drop into
|
||||
literal SQL at any time, it's virtually never
|
||||
needed.
|
||||
* A comprehensive and flexible system
|
||||
of eager loading for related collections and objects.
|
||||
Collections are cached within a session,
|
||||
and can be loaded on individual access, all
|
||||
at once using joins, or by query per collection
|
||||
across the full result set.
|
||||
* A Core SQL construction system and DBAPI
|
||||
interaction layer. The SQLAlchemy Core is
|
||||
separate from the ORM and is a full database
|
||||
abstraction layer in its own right, and includes
|
||||
an extensible Python-based SQL expression
|
||||
language, schema metadata, connection pooling,
|
||||
type coercion, and custom types.
|
||||
* All primary and foreign key constraints are
|
||||
assumed to be composite and natural. Surrogate
|
||||
integer primary keys are of course still the
|
||||
norm, but SQLAlchemy never assumes or hardcodes
|
||||
to this model.
|
||||
* Database introspection and generation. Database
|
||||
schemas can be "reflected" in one step into
|
||||
Python structures representing database metadata;
|
||||
those same structures can then generate
|
||||
CREATE statements right back out - all within
|
||||
the Core, independent of the ORM.
|
||||
|
||||
SQLAlchemy's philosophy:
|
||||
|
||||
* SQL databases behave less and less like object
|
||||
collections the more size and performance start to
|
||||
matter; object collections behave less and less like
|
||||
tables and rows the more abstraction starts to matter.
|
||||
SQLAlchemy aims to accommodate both of these
|
||||
principles.
|
||||
* An ORM doesn't need to hide the "R". A relational
|
||||
database provides rich, set-based functionality
|
||||
that should be fully exposed. SQLAlchemy's
|
||||
ORM provides an open-ended set of patterns
|
||||
that allow a developer to construct a custom
|
||||
mediation layer between a domain model and
|
||||
a relational schema, turning the so-called
|
||||
"object relational impedance" issue into
|
||||
a distant memory.
|
||||
* The developer, in all cases, makes all decisions
|
||||
regarding the design, structure, and naming conventions
|
||||
of both the object model as well as the relational
|
||||
schema. SQLAlchemy only provides the means
|
||||
to automate the execution of these decisions.
|
||||
* With SQLAlchemy, there's no such thing as
|
||||
"the ORM generated a bad query" - you
|
||||
retain full control over the structure of
|
||||
queries, including how joins are organized,
|
||||
how subqueries and correlation is used, what
|
||||
columns are requested. Everything SQLAlchemy
|
||||
does is ultimately the result of a developer-
|
||||
initiated decision.
|
||||
* Don't use an ORM if the problem doesn't need one.
|
||||
SQLAlchemy consists of a Core and separate ORM
|
||||
component. The Core offers a full SQL expression
|
||||
language that allows Pythonic construction
|
||||
of SQL constructs that render directly to SQL
|
||||
strings for a target database, returning
|
||||
result sets that are essentially enhanced DBAPI
|
||||
cursors.
|
||||
* Transactions should be the norm. With SQLAlchemy's
|
||||
ORM, nothing goes to permanent storage until
|
||||
commit() is called. SQLAlchemy encourages applications
|
||||
to create a consistent means of delineating
|
||||
the start and end of a series of operations.
|
||||
* Never render a literal value in a SQL statement.
|
||||
Bound parameters are used to the greatest degree
|
||||
possible, allowing query optimizers to cache
|
||||
query plans effectively and making SQL injection
|
||||
attacks a non-issue.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
Latest documentation is at:
|
||||
|
||||
http://www.sqlalchemy.org/docs/
|
||||
|
||||
Installation / Requirements
|
||||
---------------------------
|
||||
|
||||
Full documentation for installation is at
|
||||
`Installation <http://www.sqlalchemy.org/docs/intro.html#installation>`_.
|
||||
|
||||
Getting Help / Development / Bug reporting
|
||||
------------------------------------------
|
||||
|
||||
Please refer to the `SQLAlchemy Community Guide <http://www.sqlalchemy.org/support.html>`_.
|
||||
|
||||
Code of Conduct
|
||||
---------------
|
||||
|
||||
Above all, SQLAlchemy places great emphasis on polite, thoughtful, and
|
||||
constructive communication between users and developers.
|
||||
Please see our current Code of Conduct at
|
||||
`Code of Conduct <http://www.sqlalchemy.org/codeofconduct.html>`_.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
SQLAlchemy is distributed under the `MIT license
|
||||
<http://www.opensource.org/licenses/mit-license.php>`_.
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,407 @@
|
||||
SQLAlchemy-1.3.22.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
SQLAlchemy-1.3.22.dist-info/LICENSE,sha256=WG4lA_RQxK6BaWDKMtQTuCDHQWJpdWvZThIkXGD4WXI,1100
|
||||
SQLAlchemy-1.3.22.dist-info/METADATA,sha256=CoXBOklkuv5C54I0lpgAWD3eo1WsfsnGvz59qYFRGlo,7789
|
||||
SQLAlchemy-1.3.22.dist-info/RECORD,,
|
||||
SQLAlchemy-1.3.22.dist-info/WHEEL,sha256=RIeRBYNNiNK3sXfnenIjXDrR2Tzyz05xCMpKF2hJ1iA,111
|
||||
SQLAlchemy-1.3.22.dist-info/top_level.txt,sha256=rp-ZgB7D8G11ivXON5VGPjupT1voYmWqkciDt5Uaw_Q,11
|
||||
sqlalchemy/__init__.py,sha256=tWsogOTtCEk-rYVPcFwB9kJcnHBBaEtFzU383QYgdN4,4789
|
||||
sqlalchemy/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/events.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/exc.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/inspection.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/log.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/processors.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/schema.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/types.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__init__.py,sha256=78tsbgw8Kh1tPCC2te-KV7DqeE7gRzUE2Qq64XIoUkU,278
|
||||
sqlalchemy/connectors/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__pycache__/mxodbc.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__pycache__/zxJDBC.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/mxodbc.py,sha256=GsSOKjogNoyDu5pVjEiO_-adrx2RzyXkO8xn0W2ReeM,5350
|
||||
sqlalchemy/connectors/pyodbc.py,sha256=omoA7IIG5gTQRbsp9CMWk61mjlpSg1vuwIbdZ2nn7WQ,5995
|
||||
sqlalchemy/connectors/zxJDBC.py,sha256=wJlwdsmRov3naSY71JvifytEC4lPqO5_eiF_K9UDb3E,1878
|
||||
sqlalchemy/cprocessors.cpython-38-x86_64-linux-gnu.so,sha256=QNaUMvt1uyqjKU6dqcw06lzC1hUaCa-p99CtmHK8uvA,64760
|
||||
sqlalchemy/cresultproxy.cpython-38-x86_64-linux-gnu.so,sha256=GjJQLlzy0F3KTj0Lv_2utRcSal7ekLnJ6FZnk1saA5A,77600
|
||||
sqlalchemy/cutils.cpython-38-x86_64-linux-gnu.so,sha256=htd6yvuj9obaVjC0LZw-EEC1AvkPu7dk9NXtTxv5mZk,39864
|
||||
sqlalchemy/databases/__init__.py,sha256=IywgDc8lo4rrxtHR7u1S1ttUMTKrKpYS3wwnd8bISQA,819
|
||||
sqlalchemy/databases/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/__init__.py,sha256=2Cra66jK1L9BzcAJUhVaJXR0vPG06L3MI6GEh-b69KI,1909
|
||||
sqlalchemy/dialects/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__init__.py,sha256=xiywqBgVlgc1yaV-IlwJdgLXhAb9ise-B-vfcoFzQLw,1152
|
||||
sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/base.py,sha256=JhCY_X5rRIQK_HniJ2YxDX1NO-_LvXLImmxGvCzLsyM,30316
|
||||
sqlalchemy/dialects/firebird/fdb.py,sha256=kQQ3atPmEdsgxqtYBRZwg0HGitQiS5-VtL2f13WDWpI,4079
|
||||
sqlalchemy/dialects/firebird/kinterbasdb.py,sha256=X7UfqENJaVFJaQj_7dK7NyxmGU8bvAfKkv5m2lQl4rs,6437
|
||||
sqlalchemy/dialects/mssql/__init__.py,sha256=OMkEnG7PSHt4ee_P0DKfhXG1jLh5nzRuvxqKLfYLPO8,1812
|
||||
sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/adodbapi.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/adodbapi.py,sha256=u8QnHUI6C5nImuzyuk25D6oiBAQRjspM5SGjLySse1s,2719
|
||||
sqlalchemy/dialects/mssql/base.py,sha256=pu_UYrpbD3DDdnGX7adgawvYQbBWOIJYpHED1exWIpM,91031
|
||||
sqlalchemy/dialects/mssql/information_schema.py,sha256=plSgus0f7PsR28oTB8y4-UkXU43rTxh0ltaFRvua9-A,5639
|
||||
sqlalchemy/dialects/mssql/mxodbc.py,sha256=F1phlAJ-56EseTSANb6wloD5YVAZ_pJpnlxliv1S3Sc,4611
|
||||
sqlalchemy/dialects/mssql/provision.py,sha256=j7eVrBHR1NjPvT_DmtPcNnAadZiHG1x65AyxYnZJ7d0,2785
|
||||
sqlalchemy/dialects/mssql/pymssql.py,sha256=mcCcdFNgy-J0_IH3LFbYNHMMg2rM8-a2O3cS9qFT7Xo,4784
|
||||
sqlalchemy/dialects/mssql/pyodbc.py,sha256=bLTkylNbycr-CW5LNBKtXYM25HMH-VmNzTQU0qcdIO8,16310
|
||||
sqlalchemy/dialects/mssql/zxjdbc.py,sha256=zxUozig0SWOlC6JuqzuyG6ojI55oI44P1RkaToWYul4,2311
|
||||
sqlalchemy/dialects/mysql/__init__.py,sha256=9mlm4mqt_CxcbFh9KC38Srw0_OnvrSluBmOcaWoOlV8,2056
|
||||
sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/dml.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/gaerdbms.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/json.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/types.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/base.py,sha256=7QtozBM2OWrbiWlW7eUnVo8LPxpVcPHrXwnyoOxqTeA,106393
|
||||
sqlalchemy/dialects/mysql/cymysql.py,sha256=u0voBllZm3b9iXv965cBy3-1xkK6tzL93Vs9Ext3JMs,2244
|
||||
sqlalchemy/dialects/mysql/dml.py,sha256=yq9Kgm2IvLkt0_Uw1RGsuyjNQVgpWIWMFd2Ntm_R65Y,4764
|
||||
sqlalchemy/dialects/mysql/enumerated.py,sha256=9hhAfnVzvFjXKEShwqp52XT6Kaq8aw4uD7CD6doPd6k,11307
|
||||
sqlalchemy/dialects/mysql/gaerdbms.py,sha256=khU9l7SolzCyhF7d7q1iBn_OhPj3gw3IqGGtzomsugo,3375
|
||||
sqlalchemy/dialects/mysql/json.py,sha256=5uARvhbY4DUWV62bd05bI0fq-p-GAyXUM_PT6XvXbZM,2045
|
||||
sqlalchemy/dialects/mysql/mysqlconnector.py,sha256=2piMPvg48daNXr2XzpLwmMm1VYVs9mw0AJ43OLXQgvI,7889
|
||||
sqlalchemy/dialects/mysql/mysqldb.py,sha256=aSkj-xdGYIhPlH2sOvGOo0qrbX3lkR1r8RX-84Rxe4Q,8383
|
||||
sqlalchemy/dialects/mysql/oursql.py,sha256=GzFBpEZGwWnLPVmC4IlU5_Y9gZvc-8-44-s6Xo2BXpg,8086
|
||||
sqlalchemy/dialects/mysql/provision.py,sha256=sJ7IpiIB1Eb9AdRK3loRlsCHKzzsFGJzMgICyRrkFpY,1269
|
||||
sqlalchemy/dialects/mysql/pymysql.py,sha256=8-V0VEWKOv1ooPQgRnm2Piqkk1lAqVDq16wZQB-xq58,2440
|
||||
sqlalchemy/dialects/mysql/pyodbc.py,sha256=0UdZSRnCF-0EWsX36Azrvc15xE87YEzyJSSGQJqVx0U,3470
|
||||
sqlalchemy/dialects/mysql/reflection.py,sha256=sATBWFF3obhp5nuGokvnmT-B3Wd0xYN4KgB0wPgbWrI,18271
|
||||
sqlalchemy/dialects/mysql/types.py,sha256=yDSwYFEdLfmDAdsTRUtLWLs25hXYu_xAKzohGGDM3u0,24589
|
||||
sqlalchemy/dialects/mysql/zxjdbc.py,sha256=u-jcqk3ZnpuPv89Hv3iEiCEhN0Ck4J48OLSYChZ3H-s,3970
|
||||
sqlalchemy/dialects/oracle/__init__.py,sha256=0800ZWZlvJfZ8qd_K4OfDEUq0TnAL7WkvaJPkMLiRDU,1257
|
||||
sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/base.py,sha256=mue1RhCQUK-nTUF0LW1Vp22xON2mAchWS6vJC0dxXPs,77802
|
||||
sqlalchemy/dialects/oracle/cx_oracle.py,sha256=zM83axCPncgTx_mPxg0_g23Zvr95gU-CBT_FAPmDu-4,46948
|
||||
sqlalchemy/dialects/oracle/provision.py,sha256=zpAooUqZY741vrjplNkxV2v3uf4kbZb3r_LfH9dKkJw,3862
|
||||
sqlalchemy/dialects/oracle/zxjdbc.py,sha256=eBqslfHL08YaEUzZ32-faQo9nxLCR3s8IadVAI200FY,8207
|
||||
sqlalchemy/dialects/postgresql/__init__.py,sha256=G0qS6NaThvmq48RH378d90vBbfglrgKt_LxuGyq8UAM,2461
|
||||
sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/array.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/json.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/pygresql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/array.py,sha256=XrpqVaX2xvF8poI5CyD6gIq-3XgoSqIEeBwU_BSA41I,12043
|
||||
sqlalchemy/dialects/postgresql/base.py,sha256=wMEv2904ffhr6vzbmPnsctlicFB8EFt1xFaiGIJWiPg,128016
|
||||
sqlalchemy/dialects/postgresql/dml.py,sha256=JWLLh1Z9Kuu6TgReIFMKqOHoQBwc0xDqzIwRLik7Yoc,7790
|
||||
sqlalchemy/dialects/postgresql/ext.py,sha256=rH0yspLzDG2g_PnzYwozSlfsQ0f5xXl2wGcq-IU6ozc,7523
|
||||
sqlalchemy/dialects/postgresql/hstore.py,sha256=Xrd7qS3vLDBwlhz2JxbOwzH5es0nknH7wW_BXNd5WLI,12417
|
||||
sqlalchemy/dialects/postgresql/json.py,sha256=g92R5yLuQqYViVf1oMsVdLOxECBy-MKzmbAJ4MIEWZQ,10103
|
||||
sqlalchemy/dialects/postgresql/pg8000.py,sha256=bQI9hm4lr4JshUlFWSDpAYBWXsMCsgWyETkSZPDexJg,9722
|
||||
sqlalchemy/dialects/postgresql/provision.py,sha256=E8LOoSNSWUlx77ihNLQfW9csAxsmL-qleiLPbVlSlVw,2008
|
||||
sqlalchemy/dialects/postgresql/psycopg2.py,sha256=7Y-HFcAXA6x6XvEP9paK-K-UzLrpqV45uwmwkyHIwxc,37129
|
||||
sqlalchemy/dialects/postgresql/psycopg2cffi.py,sha256=8X5uLoW2am61rqwYs0agfngZ8awYia7AAnbgWwDF27w,1657
|
||||
sqlalchemy/dialects/postgresql/pygresql.py,sha256=eyRnGRlqeEbiwYbhcazQUkyHnB4yCeh9c7nhnQyPJ8E,8129
|
||||
sqlalchemy/dialects/postgresql/pypostgresql.py,sha256=9giPOxOzVlJHc7r4g-YsVsFWONZQQjIi_mVWzKopI2c,2915
|
||||
sqlalchemy/dialects/postgresql/ranges.py,sha256=pkjWG66y1QdPYOIsfeUxgB48fyDwL298xs-Ek49TTXk,4622
|
||||
sqlalchemy/dialects/postgresql/zxjdbc.py,sha256=YMtRIy1IbMVMQKMxa_gORzXHbkEVxiJVBpeg4IFuYvM,1415
|
||||
sqlalchemy/dialects/sqlite/__init__.py,sha256=EvPKdQyHTkXlziZo6wYrJ2D1V8Pa52zK5kb2I59uX4s,1042
|
||||
sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/json.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/base.py,sha256=wo1z7H3Z8uGSHgDUnGxLtwFx6BpWmoVggsLDpuqhmXE,75091
|
||||
sqlalchemy/dialects/sqlite/json.py,sha256=IwhCnGL_BKtASpm0-OzeNByp3qtkcLZgAeBGY_EPUvM,2292
|
||||
sqlalchemy/dialects/sqlite/provision.py,sha256=PEmgxbdz67KsONOEhFVQFLX3s4BXWKLb2gvNgj0gn9M,2591
|
||||
sqlalchemy/dialects/sqlite/pysqlcipher.py,sha256=RwePrdk3xrEg2c0vpFQSos6823EKEHJKrF-jgo7mYrE,4692
|
||||
sqlalchemy/dialects/sqlite/pysqlite.py,sha256=wDRcXcw8JFnGjbeu4qAeEp1vK8M_z86vY8Ls4AOSzEI,20983
|
||||
sqlalchemy/dialects/sybase/__init__.py,sha256=W9wFI2eRTBJVLaoplH5esmiITkz9LiNa-nDhiG8DwpM,1363
|
||||
sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/base.py,sha256=spYtmJV718RW-IUzKx11N8_k9GEKM95qeXVMK0ZtmBQ,31789
|
||||
sqlalchemy/dialects/sybase/mxodbc.py,sha256=LqEEcLRrXuLICWLpg2ePgczZhuGzU20JsO2j_W3M2Ho,902
|
||||
sqlalchemy/dialects/sybase/pyodbc.py,sha256=013aGwoG1C19S_v4lPSZj4ComdPrdlwSMH8F7pjyMS8,2120
|
||||
sqlalchemy/dialects/sybase/pysybase.py,sha256=7iF-t7qfR5VGNeYzHkDoPNthUAJGSAIjeLwXrC5BJQE,3313
|
||||
sqlalchemy/engine/__init__.py,sha256=2IHVbSen5T6EwNuFYNBRF8u-xc1GzGAsLPrag7MD-Oc,25066
|
||||
sqlalchemy/engine/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/default.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/reflection.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/result.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/strategies.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/threadlocal.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/url.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/engine/base.py,sha256=xTJIDom7lgRsT5vWs4fH6BNlEiARvrppFCiGKDo8n84,87152
|
||||
sqlalchemy/engine/default.py,sha256=S5wb-9U1PQsPdu2wvievCdC7jLY2EELwWPuIcVVyKq8,55686
|
||||
sqlalchemy/engine/interfaces.py,sha256=7FGt4Hspxek4nshvzgTJMfnQSpwMxfP4Up5-2D-3nnI,48491
|
||||
sqlalchemy/engine/reflection.py,sha256=jp4RzhNu9hgNX_mhTi1HuQLtGjRDvtLyVcJ6G2aENHs,34712
|
||||
sqlalchemy/engine/result.py,sha256=qZP_SUyscXNrJ8n1kv2bqRO74wVkNsSjeYp9Mp5gHdQ,54716
|
||||
sqlalchemy/engine/strategies.py,sha256=BuDOCGp6TMAej65TOresW9VHW2VfS60hx-rH4WfDPis,9847
|
||||
sqlalchemy/engine/threadlocal.py,sha256=EsPbaSO4S8WU4beLAyZ22iHV5YfxXt4ZejxuSMTu6pI,4764
|
||||
sqlalchemy/engine/url.py,sha256=R-tH6h6jc4TjKCba12OGXU_QjwWkRViTOpSzwpt49yY,9445
|
||||
sqlalchemy/engine/util.py,sha256=wDnfhJyQyxToapCC1jw6FRyW006dnChVIXYBIavzGF4,2421
|
||||
sqlalchemy/event/__init__.py,sha256=BuOhHzdZQnfPwXK3cvVUbsGJ7vhwwRzN673a8ImEPlA,596
|
||||
sqlalchemy/event/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/api.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/attr.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/legacy.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/registry.cpython-38.pyc,,
|
||||
sqlalchemy/event/api.py,sha256=sLPVhizMz6MK4GAHRgDmwgeuRYtbnLlSc4Ykk_aTUcU,7083
|
||||
sqlalchemy/event/attr.py,sha256=5fbrn1j-0e-h7Y6Jg7mqE9B6VwMJ392QRZ8vDlyJvFI,13849
|
||||
sqlalchemy/event/base.py,sha256=tHBwE-EY08qkw5M8Eyb7FMRYUONlv31DziUEW2Zc6vU,9748
|
||||
sqlalchemy/event/legacy.py,sha256=T9ZOjmibgXCOqW2XADc1nsXxbS159ZYl2ueRUEfsZrU,5904
|
||||
sqlalchemy/event/registry.py,sha256=h1iO_JQDAH98H1IcrJprdnaVoRcS-ZF1UBtb_lW1NU8,8229
|
||||
sqlalchemy/events.py,sha256=ppBP0biMNisscdih0-nrOVcXzORqk4Ro0IXcWLSEZsc,53461
|
||||
sqlalchemy/exc.py,sha256=UiJtKg-Vwmc6tyVvz6OMaYEquyWBGPFCME8EBzvuI6I,17826
|
||||
sqlalchemy/ext/__init__.py,sha256=A8EjxtBgEW-qCJX0qqqo3OUJQe9sjjBYPYw5dN866bE,322
|
||||
sqlalchemy/ext/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/associationproxy.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/automap.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/baked.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/compiler.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/horizontal_shard.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/hybrid.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/indexable.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/instrumentation.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/mutable.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/orderinglist.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/serializer.cpython-38.pyc,,
|
||||
sqlalchemy/ext/associationproxy.py,sha256=ko2k26KMjbGP3jFTngEKTpCbDiaZjX_c68m7RtWLl-0,49985
|
||||
sqlalchemy/ext/automap.py,sha256=4g3HrD-jyJ1LctT3O4iTNLAYVPrP4OwdMCruQrXbLiI,42157
|
||||
sqlalchemy/ext/baked.py,sha256=LV_cDwv9P3rI1kfCGUd8eJ39Tm-p6ROtDDZlonFKFMk,21980
|
||||
sqlalchemy/ext/compiler.py,sha256=q5kP9F7PaReG7HEx1H5P0EuwN0mJ25Uk-KutMfuj-JY,17147
|
||||
sqlalchemy/ext/declarative/__init__.py,sha256=7c0OfggXwiLSVvehkwJJDDunv3AuY6Kq-4eMuNT-VNA,902
|
||||
sqlalchemy/ext/declarative/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/__pycache__/api.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/__pycache__/clsregistry.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/api.py,sha256=ZtsVHtG5owzKwBcmcgy8atKWEvaGLSP_ol9sDYbQvL0,28728
|
||||
sqlalchemy/ext/declarative/base.py,sha256=vAVhpcwXCXFhQ_Yl-yL6D1ypnmogue4AW4CHgCXgQQI,32093
|
||||
sqlalchemy/ext/declarative/clsregistry.py,sha256=iypzPLy6tOloztJL3dwvzGRtDQWvlYowK3ydYr2newo,12561
|
||||
sqlalchemy/ext/horizontal_shard.py,sha256=ZkZC6nnCZdpux3H4Y1GV2A-vSXXTixOIsmXmJWyodI8,9139
|
||||
sqlalchemy/ext/hybrid.py,sha256=AlfnlP9Oks9EoSgiAhmz7o5zgV-Yr9FQNvzZi5DqPsw,40399
|
||||
sqlalchemy/ext/indexable.py,sha256=pj8WNfIe_YsOIqFsel_93sMzTNsA9Rg03mGs11UNA3E,11254
|
||||
sqlalchemy/ext/instrumentation.py,sha256=FfL8M6OAJYxvKZNgS1O638pkPDWsiRXE34IL5ZJebUE,14371
|
||||
sqlalchemy/ext/mutable.py,sha256=qPhBEnRCj3GuRUF1a44J9jEdcvfsDCcgeGzZN_eSOHM,31820
|
||||
sqlalchemy/ext/orderinglist.py,sha256=KqFEFTrQ3-mRuf4vshwPWO3qDW3uWhe9jlrmY4Bniac,13899
|
||||
sqlalchemy/ext/serializer.py,sha256=ece4dfFCNbKgg-PbzDG_vZXM3C04w-C1REpF9h6INgQ,5784
|
||||
sqlalchemy/inspection.py,sha256=FTJ3hH14FIQkWxWBohhoItt_--IvQIlLG2CmniEPbzo,3030
|
||||
sqlalchemy/interfaces.py,sha256=F8zw_dufYkf7zfc2bxb00AZUmOuSr5zoiWqx3GCNWNk,12740
|
||||
sqlalchemy/log.py,sha256=9K0QmnWqg4YTKdHkcJpudvdNsY2m9LmH5MKxj9INqlU,6705
|
||||
sqlalchemy/orm/__init__.py,sha256=duBKN1IeiDeFTwomZkrq3vTu8WAxvRgmOfs4k1rzgpc,9938
|
||||
sqlalchemy/orm/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/attributes.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/collections.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/dependency.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/deprecated_interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/descriptor_props.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/dynamic.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/evaluator.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/events.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/exc.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/identity.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/instrumentation.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/loading.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/mapper.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/path_registry.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/persistence.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/properties.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/query.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/relationships.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/scoping.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/session.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/state.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/strategies.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/strategy_options.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/sync.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/unitofwork.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/orm/attributes.py,sha256=8tirz99gFkG0Y2Xxs13dLOWWiO07jeUyag5Fs852rC8,68083
|
||||
sqlalchemy/orm/base.py,sha256=zZroxlK7Gq750BeLcYULhYRJXWXnN9DgsdGXbaVECxg,15304
|
||||
sqlalchemy/orm/collections.py,sha256=kgmi4NdHYEC6KVS8hntPUgRL--fxAA5kVNElsFUpDUs,52864
|
||||
sqlalchemy/orm/dependency.py,sha256=02Jyovdu-dyQ6umen79zeggcYnocRk4QW4zT2StA4vs,46556
|
||||
sqlalchemy/orm/deprecated_interfaces.py,sha256=xzTjb_GkKFXj1Ymsd1k1-03T_fG_U1dUOppmPrTWW1s,20759
|
||||
sqlalchemy/orm/descriptor_props.py,sha256=sPvsR4Y4PxSp7VoV5CP9WEWls_9uOzbTPilLcygztj0,28373
|
||||
sqlalchemy/orm/dynamic.py,sha256=CkhdHMxa73Nc7yQvzhC6_R0kP0hF3NH8yVQGET2myTw,14667
|
||||
sqlalchemy/orm/evaluator.py,sha256=clC6Tf6Ppv-xwmDTAcNh5axOqrvrnzC5Jq7rowPo3kA,5441
|
||||
sqlalchemy/orm/events.py,sha256=aO_xmYndB3IOuDUb32Bt_xXPopImOuFwV_Gv-ed4cho,104638
|
||||
sqlalchemy/orm/exc.py,sha256=G_szgGYDr2ojIaYk9-qAjQA6B3d5Kbi0tVTIgq5HHbs,6616
|
||||
sqlalchemy/orm/identity.py,sha256=7Jhn-byH1e-K7xihNaYEpQLEkUaTuvykR3seXY7ahgU,10436
|
||||
sqlalchemy/orm/instrumentation.py,sha256=1bL_ZSE7w-KLk9nYQ2yif0uXOWHKurlfLIicXi3_IfY,18603
|
||||
sqlalchemy/orm/interfaces.py,sha256=7hJtC3irDY9htapLJdjzxKCCja8MBrJobOYn5UTG-NA,25851
|
||||
sqlalchemy/orm/loading.py,sha256=52zNHuTHoCyEKtkzHEc_eH5YJJDdzrc4j_gjKztuUG8,33839
|
||||
sqlalchemy/orm/mapper.py,sha256=CfNWgoHk9g4a0IhOmXh5A8gsF-ZYOgmNo62BOeAiTeA,130942
|
||||
sqlalchemy/orm/path_registry.py,sha256=AT4cnr3fvxo44FthmyKjzX7LTHrfdgOotr8jStycWXY,13764
|
||||
sqlalchemy/orm/persistence.py,sha256=22t8D4koNHhpHn3SSnhRW5p_p0OXr0RFgJJXVTSOVI4,66035
|
||||
sqlalchemy/orm/properties.py,sha256=xIKHjXzA42KL-FtoFWuUe_9xsos3zSbZ8vHEuAPzV5k,12695
|
||||
sqlalchemy/orm/query.py,sha256=FUfYgbqP-XHd5Rz-XCEJ3QMLVegFKHVb3rWI5utqVjU,181457
|
||||
sqlalchemy/orm/relationships.py,sha256=PkRQ4cyxWIvy8bX89YmMq-PnLqBTfUpuSB0vDodEwQ4,138036
|
||||
sqlalchemy/orm/scoping.py,sha256=F-RHAC3Ynw3kl_kwfalr8dGoiN50oyunXUGL0Tyz3U4,6414
|
||||
sqlalchemy/orm/session.py,sha256=Rkm18vc_gTtM2z0jyx0VxZbdcmzTVXXbmzo0cuHTyPA,131771
|
||||
sqlalchemy/orm/state.py,sha256=Qc3bo-8HoOet0lR1tnAXBQVxX3nymX30W57MnNQqq4A,30811
|
||||
sqlalchemy/orm/strategies.py,sha256=NW6dJ99XhmSy-6qhH8w_OaWkLad9aEtqn1NRQui4jI8,87320
|
||||
sqlalchemy/orm/strategy_options.py,sha256=m78UubwO1ErFQncZ0aBqN4mCpbrK0ye8RDo90jFUVEw,57823
|
||||
sqlalchemy/orm/sync.py,sha256=564q5ie_-aOiswgHZtaK-pnB8sCfzakOXte_V9V27Dk,5823
|
||||
sqlalchemy/orm/unitofwork.py,sha256=o10cE2q4M1pVQ77LCXBQF99KnDVDtMsh5P9zlnzGDQ4,24743
|
||||
sqlalchemy/orm/util.py,sha256=D1BqHmzGQigwyxJVYWH-p15cnFsTaO9jZrSbe8egwcs,45446
|
||||
sqlalchemy/pool/__init__.py,sha256=-Vflck_t3sr66dgA4mehtNPZdvOsK7CgkjvY7UC7CbY,1483
|
||||
sqlalchemy/pool/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/pool/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/pool/__pycache__/dbapi_proxy.cpython-38.pyc,,
|
||||
sqlalchemy/pool/__pycache__/impl.cpython-38.pyc,,
|
||||
sqlalchemy/pool/base.py,sha256=-RL2p09Jx_X-kxmDltHdyG2cCSmYCrSDAELLNnFjd4g,36523
|
||||
sqlalchemy/pool/dbapi_proxy.py,sha256=zKCnvTcKfKuf04zqPMDjuuLtmdpIbkIKnk4dICLg_WA,4320
|
||||
sqlalchemy/pool/impl.py,sha256=B_S_0TXFD33hEDakRGvDZzq2DFkIXuCcdLFH0uSKCmo,14958
|
||||
sqlalchemy/processors.py,sha256=i_DiEYBHp5JJvvp7omB_TXSXf5efWTILvjVYvu8LHmw,5744
|
||||
sqlalchemy/schema.py,sha256=xI4_Yyv3mUbm9XqjUQNGYxQkLe3sOPsJxuohgjxTCUY,2466
|
||||
sqlalchemy/sql/__init__.py,sha256=12olVEiRBSf27BGAt_aWOUsLBF3sptfDvt-o-4K_7ts,3789
|
||||
sqlalchemy/sql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/annotation.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/compiler.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/crud.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/ddl.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/default_comparator.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/dml.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/elements.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/expression.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/functions.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/naming.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/operators.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/schema.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/selectable.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/sqltypes.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/type_api.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/visitors.cpython-38.pyc,,
|
||||
sqlalchemy/sql/annotation.py,sha256=8XH8I_XmZI5iF2QwqX9N0auQCnh0EHZkOeoPiFQoUZM,6725
|
||||
sqlalchemy/sql/base.py,sha256=3JDLljnnsYv8qU_7c6Uire8bt1DafZIzJRJ9RSk8ln8,21715
|
||||
sqlalchemy/sql/compiler.py,sha256=6dWHJvu0yIF0xt5sXAA4kko4nmXFWbtWxyeIKphY8hM,128253
|
||||
sqlalchemy/sql/crud.py,sha256=ca_9Rjlxw_OnWZxBas_ElvMGtClvIUhLjxWOHhHJ6BE,25889
|
||||
sqlalchemy/sql/ddl.py,sha256=v-hKxZSV3q9MvnIJ4TxllvRQFU38nr42BO9bdYJhww0,41440
|
||||
sqlalchemy/sql/default_comparator.py,sha256=tRDxI3AGdgrhG-hWymXgH2952Fqfw5f5-zB8Rbfq2qQ,12234
|
||||
sqlalchemy/sql/dml.py,sha256=swzNBHPMt_T-7wGtqs0T3BV-34uO6LvGzWrQjhQ6GjY,35672
|
||||
sqlalchemy/sql/elements.py,sha256=Y7rVzH02tU1AhR0FgwBBzjKNMg5U-jyJf39qbJnZsw0,161275
|
||||
sqlalchemy/sql/expression.py,sha256=BVhn2KBPg3CQBmBfKPQqvYMgTHqHkt_-bqej3RLSD-g,9209
|
||||
sqlalchemy/sql/functions.py,sha256=iZJq1EzPLLdPlkKBZb4YC-bBTC7Svj5fGVjVKMHRPQw,35835
|
||||
sqlalchemy/sql/naming.py,sha256=zVMDaA0Npbe8NzBSVBykw69cobe-dfQDC4r451cpvUk,5889
|
||||
sqlalchemy/sql/operators.py,sha256=HtptKzSLoTPYA3Rv454tZlDXGOwWqDobAYIko2VfMbc,42560
|
||||
sqlalchemy/sql/schema.py,sha256=c7KLL3CrGj4WP4UwqEwZwTZqLSMEyNp7-9O1d6Pkxo4,176030
|
||||
sqlalchemy/sql/selectable.py,sha256=OWKFAH1UuJnGfH9ZfvOCGjx6IeQVtqQ4Gh_SEByVdqw,139439
|
||||
sqlalchemy/sql/sqltypes.py,sha256=FW05TmHTLt1oUnHAstBOvCrP_k9EOPTEL1j2YYN2JnA,101624
|
||||
sqlalchemy/sql/type_api.py,sha256=MX6gi4tjokyq0hsggvJQLkNS4IZTYY36HXNtbL6oYks,52237
|
||||
sqlalchemy/sql/util.py,sha256=aLc-QNG1wq1ZuPyZryRlYP6H7G3o3aw7JJO4Q12A-88,30042
|
||||
sqlalchemy/sql/visitors.py,sha256=TKrLgLI4_0WTyrsDL5CkvFWLA_6SClEmhi3eib9edTQ,15940
|
||||
sqlalchemy/testing/__init__.py,sha256=7TAjnlxdn_Sen4QxQWm142mmtKyT_kGsAce6mJH0_mU,2867
|
||||
sqlalchemy/testing/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/assertions.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/assertsql.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/config.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/engines.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/entities.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/exclusions.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/fixtures.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/mock.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/pickleable.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/profiling.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/replay_fixture.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/requirements.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/schema.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/warnings.cpython-38.pyc,,
|
||||
sqlalchemy/testing/assertions.py,sha256=Ed9vOnO-KKzWVGMC_MyOCKmFr1mkgtpLlrj-STK3Nsk,22260
|
||||
sqlalchemy/testing/assertsql.py,sha256=jFlDDOJlNGQPTd3oo2eWnKipDICAYnrfk64m5OK8RUM,13590
|
||||
sqlalchemy/testing/config.py,sha256=OQC0OW8r_rlj3Bljv03Vb1pVABJoLwM0MWUll-daaGk,5521
|
||||
sqlalchemy/testing/engines.py,sha256=NNQ2kbMq2M3HLtxn__DqiqnZSErhkTyFkLG3yXtmGx0,10528
|
||||
sqlalchemy/testing/entities.py,sha256=c40-zDP6Y6vx18Pmj9Lx4JZ26lr4dQ_42JoffyEP9cA,3203
|
||||
sqlalchemy/testing/exclusions.py,sha256=0hOS3GnCs9T149eB4fZfxtGSWsPU_bi1VAlLhldr16w,13037
|
||||
sqlalchemy/testing/fixtures.py,sha256=eMARL5rpAaypiTpiK8YCAUFOZztrTTWCoLyElMTUSNA,15034
|
||||
sqlalchemy/testing/mock.py,sha256=TMVhpHQtM3v-2CFNYsP6np2vsF7aNDMWXCnjfI9rNvI,893
|
||||
sqlalchemy/testing/pickleable.py,sha256=6JlSnkXCrbbjeHkbFBwdA8BBrYfLz-PVA7slVhGNYYE,2693
|
||||
sqlalchemy/testing/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
sqlalchemy/testing/plugin/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/bootstrap.py,sha256=0rkror_9S175GPGNnbtbDmfdLEhu9v-AAv715lR8KyU,1468
|
||||
sqlalchemy/testing/plugin/plugin_base.py,sha256=3VM5tJHm74gCTawivXHCQeLhx9-aiPZ71UPQ8v8aD9Y,20361
|
||||
sqlalchemy/testing/plugin/pytestplugin.py,sha256=g-s_XCxAp23sP81mTgIgKNlu2h63RnRypmcFFAt7KcM,16055
|
||||
sqlalchemy/testing/profiling.py,sha256=AhgGlmcnzzOHD0z1XNbM8XrcEyuL-yAc0881kI4QBfY,8741
|
||||
sqlalchemy/testing/provision.py,sha256=s11i8ptv5CY7TiGfEXVNrpPHmD6wA3HkoI3Wfy5oD_0,5504
|
||||
sqlalchemy/testing/replay_fixture.py,sha256=W_QZD96t7ichRNvILOjhuoQXTCYnd2usiHBQhPkzUYI,5875
|
||||
sqlalchemy/testing/requirements.py,sha256=ORzMeYOUn-FSiL-YBw6CMZC0LTeBj0b6T_VzVY8r5Lg,32669
|
||||
sqlalchemy/testing/schema.py,sha256=V5Kggty3LB9YDzbLqmSHsc60J7fUXLDnBJnt_ZmXkas,3712
|
||||
sqlalchemy/testing/suite/__init__.py,sha256=SUWU-LR3asH2hN2YsIhlpqxeuo8fpvej3o6nct-L4xU,358
|
||||
sqlalchemy/testing/suite/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_cte.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_insert.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_results.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_select.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_types.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/test_cte.py,sha256=VbBzRrNWXk2EkuFAz5f5vFXaR9tU240c63dSY88qpf0,6801
|
||||
sqlalchemy/testing/suite/test_ddl.py,sha256=TGFhoJEy-_NqPb5ypR8x8eYW7Xus323kt4p9DXRsjtk,2896
|
||||
sqlalchemy/testing/suite/test_dialect.py,sha256=jELX6CVW7nHeY0trT9cSsV7X-oiJ24No2FVBQo2UBiQ,6860
|
||||
sqlalchemy/testing/suite/test_insert.py,sha256=Hiwa4iE-oG4csNG57CieNgN2-hGfHX8xgbMQT3rM0TE,9672
|
||||
sqlalchemy/testing/suite/test_reflection.py,sha256=FtMUIbgT2PpumvxjYNYiQ1q2uNHTygmThpj4hcfajNU,48391
|
||||
sqlalchemy/testing/suite/test_results.py,sha256=wemYY7ZTVisKLbks8p1Maf1HEOLZ9vigIsGoHHc4Cbw,10971
|
||||
sqlalchemy/testing/suite/test_select.py,sha256=Sy-B7GWsEsIuA2rK-EhDHcAI9B4GZwmHMLq9_z6Xjto,24393
|
||||
sqlalchemy/testing/suite/test_sequence.py,sha256=oacBvtAqW3Ua3gcqyqnT1U_hpJutEW_EmEbwvf7Xq7E,4661
|
||||
sqlalchemy/testing/suite/test_types.py,sha256=hTKuq3ZxbwJp1xLsqjKhGAJRrOEFQMS6Ew6A9EJUS-c,37161
|
||||
sqlalchemy/testing/suite/test_update_delete.py,sha256=I2NOhWu7iwKLJzcqM_6sLh3WCE1jmcN8tLwBzvNYLPg,1491
|
||||
sqlalchemy/testing/util.py,sha256=Pn41mDkl_Bb7mCbzGmqA4m1d5LCrpvh8v4C7lUCKvwY,10149
|
||||
sqlalchemy/testing/warnings.py,sha256=m0M3oN0gR7VH7d_VbFZaQu2igcsJDKTJvKRwNdfEwsY,1671
|
||||
sqlalchemy/types.py,sha256=LRIjlg-DVeBMAhVI7iXXY8NhQQDDr2UPKp3ONwyMZhI,3377
|
||||
sqlalchemy/util/__init__.py,sha256=xLmso7FFmW6kJgAMzCleof4EKNiakewjM4vDQNij_Nk,6711
|
||||
sqlalchemy/util/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/_collections.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/_preloaded.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/compat.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/deprecations.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/langhelpers.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/queue.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/topological.cpython-38.pyc,,
|
||||
sqlalchemy/util/_collections.py,sha256=MfX2a2MJ95_cYqGQFDWTuf_y7frdtY-z7LBI261HJWE,29219
|
||||
sqlalchemy/util/_preloaded.py,sha256=SNekMTv90mk-iC1q0xCZ4DcvJRZuIU4CWaou04KvRb0,5765
|
||||
sqlalchemy/util/compat.py,sha256=RSrQvxtdXt3bjY2C9mkqj-rDDW2J_voQE2bcPuvqgrg,16920
|
||||
sqlalchemy/util/deprecations.py,sha256=odcWi5Ciq7T-kpYbavOjMaK89fuX6BvN4j-zB_Pr8BA,7474
|
||||
sqlalchemy/util/langhelpers.py,sha256=QnjL9OJUpUKepUYiRtDn43JzGigeK2YNoSrBuAWU_Vs,47707
|
||||
sqlalchemy/util/queue.py,sha256=QHh_QckIfyisS9q_blxbwamt92JPXKZgt-pf971dsEs,6827
|
||||
sqlalchemy/util/topological.py,sha256=lbXO1ZDDTtYHps_rE7NlEZ3AG773IDLP_7L941DTt6U,2767
|
||||
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.36.2)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp38-cp38-manylinux2010_x86_64
|
||||
|
||||
@ -0,0 +1 @@
|
||||
sqlalchemy
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,28 @@
|
||||
Copyright 2007 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@ -0,0 +1,128 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: Werkzeug
|
||||
Version: 1.0.1
|
||||
Summary: The comprehensive WSGI web application library.
|
||||
Home-page: https://palletsprojects.com/p/werkzeug/
|
||||
Author: Armin Ronacher
|
||||
Author-email: armin.ronacher@active-4.com
|
||||
Maintainer: Pallets
|
||||
Maintainer-email: contact@palletsprojects.com
|
||||
License: BSD-3-Clause
|
||||
Project-URL: Documentation, https://werkzeug.palletsprojects.com/
|
||||
Project-URL: Code, https://github.com/pallets/werkzeug
|
||||
Project-URL: Issue tracker, https://github.com/pallets/werkzeug/issues
|
||||
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.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware
|
||||
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
|
||||
Description-Content-Type: text/x-rst
|
||||
Provides-Extra: dev
|
||||
Requires-Dist: pytest ; extra == 'dev'
|
||||
Requires-Dist: pytest-timeout ; extra == 'dev'
|
||||
Requires-Dist: coverage ; extra == 'dev'
|
||||
Requires-Dist: tox ; extra == 'dev'
|
||||
Requires-Dist: sphinx ; extra == 'dev'
|
||||
Requires-Dist: pallets-sphinx-themes ; extra == 'dev'
|
||||
Requires-Dist: sphinx-issues ; extra == 'dev'
|
||||
Provides-Extra: watchdog
|
||||
Requires-Dist: watchdog ; extra == 'watchdog'
|
||||
|
||||
Werkzeug
|
||||
========
|
||||
|
||||
*werkzeug* German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff")
|
||||
|
||||
Werkzeug is a comprehensive `WSGI`_ web application library. It began as
|
||||
a simple collection of various utilities for WSGI applications and has
|
||||
become one of the most advanced WSGI utility libraries.
|
||||
|
||||
It includes:
|
||||
|
||||
- An interactive debugger that allows inspecting stack traces and
|
||||
source code in the browser with an interactive interpreter for any
|
||||
frame in the stack.
|
||||
- A full-featured request object with objects to interact with
|
||||
headers, query args, form data, files, and cookies.
|
||||
- A response object that can wrap other WSGI applications and handle
|
||||
streaming data.
|
||||
- A routing system for matching URLs to endpoints and generating URLs
|
||||
for endpoints, with an extensible system for capturing variables
|
||||
from URLs.
|
||||
- HTTP utilities to handle entity tags, cache control, dates, user
|
||||
agents, cookies, files, and more.
|
||||
- A threaded WSGI server for use while developing applications
|
||||
locally.
|
||||
- A test client for simulating HTTP requests during testing without
|
||||
requiring running a server.
|
||||
|
||||
Werkzeug is Unicode aware and doesn't enforce any dependencies. It is up
|
||||
to the developer to choose a template engine, database adapter, and even
|
||||
how to handle requests. It can be used to build all sorts of end user
|
||||
applications such as blogs, wikis, or bulletin boards.
|
||||
|
||||
`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while
|
||||
providing more structure and patterns for defining powerful
|
||||
applications.
|
||||
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
Install and update using `pip`_:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
pip install -U Werkzeug
|
||||
|
||||
|
||||
A Simple Example
|
||||
----------------
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from werkzeug.wrappers import Request, Response
|
||||
|
||||
@Request.application
|
||||
def application(request):
|
||||
return Response('Hello, World!')
|
||||
|
||||
if __name__ == '__main__':
|
||||
from werkzeug.serving import run_simple
|
||||
run_simple('localhost', 4000, application)
|
||||
|
||||
|
||||
Links
|
||||
-----
|
||||
|
||||
- Website: https://palletsprojects.com/p/werkzeug/
|
||||
- Documentation: https://werkzeug.palletsprojects.com/
|
||||
- Releases: https://pypi.org/project/Werkzeug/
|
||||
- Code: https://github.com/pallets/werkzeug
|
||||
- Issue tracker: https://github.com/pallets/werkzeug/issues
|
||||
- Test status: https://dev.azure.com/pallets/werkzeug/_build
|
||||
- Official chat: https://discord.gg/t6rrQZH
|
||||
|
||||
.. _WSGI: https://wsgi.readthedocs.io/en/latest/
|
||||
.. _Flask: https://www.palletsprojects.com/p/flask/
|
||||
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||
|
||||
|
||||
@ -0,0 +1,101 @@
|
||||
Werkzeug-1.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
Werkzeug-1.0.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
|
||||
Werkzeug-1.0.1.dist-info/METADATA,sha256=d0zmVNa4UC2-nAo2A8_81oiy123D6JTGRSuY_Ymgyt4,4730
|
||||
Werkzeug-1.0.1.dist-info/RECORD,,
|
||||
Werkzeug-1.0.1.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110
|
||||
Werkzeug-1.0.1.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9
|
||||
werkzeug/__init__.py,sha256=rb-yPiXOjTLbtDOl5fQp5hN7oBdaoXAoQ-slAAvfZAo,502
|
||||
werkzeug/__pycache__/__init__.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/_compat.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/_internal.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/_reloader.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/datastructures.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/exceptions.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/filesystem.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/formparser.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/http.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/local.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/posixemulation.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/routing.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/security.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/serving.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/test.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/testapp.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/urls.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/useragents.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/utils.cpython-38.pyc,,
|
||||
werkzeug/__pycache__/wsgi.cpython-38.pyc,,
|
||||
werkzeug/_compat.py,sha256=zjufTNrhQ8BgYSGSh-sVu6iW3r3O9WzjE9j-qJobx-g,6671
|
||||
werkzeug/_internal.py,sha256=d_4AqheyS6dHMViwdc0drFrjs67ZzT6Ej2gWf-Z-Iys,14351
|
||||
werkzeug/_reloader.py,sha256=I3mg3oRQ0lLzl06oEoVopN3bN7CtINuuUQdqDcmTnEs,11531
|
||||
werkzeug/datastructures.py,sha256=AonxOcwU0TPMEzfKF1368ySULxHgxE-JE-DEAGdo2ts,100480
|
||||
werkzeug/debug/__init__.py,sha256=3RtUMc5Y9hYyK11ugHltgkQ9Dt-ViR945Vy_X5NV7zU,17289
|
||||
werkzeug/debug/__pycache__/__init__.cpython-38.pyc,,
|
||||
werkzeug/debug/__pycache__/console.cpython-38.pyc,,
|
||||
werkzeug/debug/__pycache__/repr.cpython-38.pyc,,
|
||||
werkzeug/debug/__pycache__/tbtools.cpython-38.pyc,,
|
||||
werkzeug/debug/console.py,sha256=OATaO7KHYMqpbzIFe1HeW9Mnl3wZgA3jMQoGDPn5URc,5488
|
||||
werkzeug/debug/repr.py,sha256=lIwuhbyrMwVe3P_cFqNyqzHL7P93TLKod7lw9clydEw,9621
|
||||
werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673
|
||||
werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507
|
||||
werkzeug/debug/shared/debugger.js,sha256=rOhqZMRfpZnnu6_XCGn6wMWPhtfwRAcyZKksdIxPJas,6400
|
||||
werkzeug/debug/shared/jquery.js,sha256=CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo,88145
|
||||
werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191
|
||||
werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200
|
||||
werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818
|
||||
werkzeug/debug/shared/style.css,sha256=gZ9uhmb5zj3XLuT9RvnMp6jMINgQ-VVBCp-2AZbG3YQ,6604
|
||||
werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220
|
||||
werkzeug/debug/tbtools.py,sha256=2iJ8RURUZUSbopOIehy53LnVJWx47lsHN2V2l6hc7Wc,20363
|
||||
werkzeug/exceptions.py,sha256=UTYSDkmAsH-vt8VSidlEffwqBVNXuT7bRg-_NqgUe8A,25188
|
||||
werkzeug/filesystem.py,sha256=HzKl-j0Hd8Jl66j778UbPTAYNnY6vUZgYLlBZ0e7uw0,2101
|
||||
werkzeug/formparser.py,sha256=Sto0jZid9im9ZVIf56vilCdyX-arK33wSftkYsLCnzo,21788
|
||||
werkzeug/http.py,sha256=KVRV3yFK14PJeI56qClEq4qxFdvKUQVy4C_dwuWz9_Q,43107
|
||||
werkzeug/local.py,sha256=_Tk7gB238pPWUU7habxFkZF02fiCMRVW6d62YWL1Rh0,14371
|
||||
werkzeug/middleware/__init__.py,sha256=f1SFZo67IlW4k1uqKzNHxYQlsakUS-D6KK_j0e3jjwQ,549
|
||||
werkzeug/middleware/__pycache__/__init__.cpython-38.pyc,,
|
||||
werkzeug/middleware/__pycache__/dispatcher.cpython-38.pyc,,
|
||||
werkzeug/middleware/__pycache__/http_proxy.cpython-38.pyc,,
|
||||
werkzeug/middleware/__pycache__/lint.cpython-38.pyc,,
|
||||
werkzeug/middleware/__pycache__/profiler.cpython-38.pyc,,
|
||||
werkzeug/middleware/__pycache__/proxy_fix.cpython-38.pyc,,
|
||||
werkzeug/middleware/__pycache__/shared_data.cpython-38.pyc,,
|
||||
werkzeug/middleware/dispatcher.py,sha256=_-KoMzHtcISHS7ouWKAOraqlCLprdh83YOAn_8DjLp8,2240
|
||||
werkzeug/middleware/http_proxy.py,sha256=lRjTdMmghHiZuZrS7_UJ3gZc-vlFizhBbFZ-XZPLwIA,7117
|
||||
werkzeug/middleware/lint.py,sha256=ItTwuWJnflF8xMT1uqU_Ty1ryhux-CjeUfskqaUpxsw,12967
|
||||
werkzeug/middleware/profiler.py,sha256=8B_s23d6BGrU_q54gJsm6kcCbOJbTSqrXCsioHON0Xs,4471
|
||||
werkzeug/middleware/proxy_fix.py,sha256=K5oZ3DPXOzdZi0Xba5zW7ClPOxgUuqXHQHvY2-AWCGw,6431
|
||||
werkzeug/middleware/shared_data.py,sha256=sPSRTKqtKSVBUyN8fr6jOJbdq9cdOLu6pg3gz4Y_1Xo,9599
|
||||
werkzeug/posixemulation.py,sha256=gSSiv1SCmOyzOM_nq1ZaZCtxP__C5MeDJl_4yXJmi4Q,3541
|
||||
werkzeug/routing.py,sha256=6-iZ7CKeUILYAehoKXLbmi5E6LgLbwuzUh8TNplnf5Q,79019
|
||||
werkzeug/security.py,sha256=81149MplFq7-hD4RK4sKp9kzXXejjV9D4lWBzaRyeQ8,8106
|
||||
werkzeug/serving.py,sha256=YvTqvurA-Mnj8mkqRe2kBdVr2ap4ibCq1ByQjOA6g1w,38694
|
||||
werkzeug/test.py,sha256=GJ9kxTMSJ-nB7kfGtxuROr9JGmXxDRev-2U1SkeUJGE,39564
|
||||
werkzeug/testapp.py,sha256=bHekqMsqRfVxwgFbvOMem-DYa_sdB7R47yUXpt1RUTo,9329
|
||||
werkzeug/urls.py,sha256=T8-hV_1vwhu6xhX93FwsHteK-W-kIE2orj5WoMf-WFw,39322
|
||||
werkzeug/useragents.py,sha256=TSoGv5IOvP375eK5gLLpsLQCeUgTR6sO1WftmAP_YvM,5563
|
||||
werkzeug/utils.py,sha256=hrVK4u_wi8z9viBO9bgOLlm1aaIvCpn-p2d1FeZQDEo,25251
|
||||
werkzeug/wrappers/__init__.py,sha256=S4VioKAmF_av9Ec9zQvG71X1EOkYfPx1TYck9jyDiyY,1384
|
||||
werkzeug/wrappers/__pycache__/__init__.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/accept.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/auth.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/base_request.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/base_response.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/common_descriptors.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/cors.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/etag.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/json.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/request.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/response.cpython-38.pyc,,
|
||||
werkzeug/wrappers/__pycache__/user_agent.cpython-38.pyc,,
|
||||
werkzeug/wrappers/accept.py,sha256=TIvjUc0g73fhTWX54wg_D9NNzKvpnG1X8u1w26tK1o8,1760
|
||||
werkzeug/wrappers/auth.py,sha256=Pmn6iaGHBrUyHbJpW0lZhO_q9RVoAa5QalaTqcavdAI,1158
|
||||
werkzeug/wrappers/base_request.py,sha256=4TuGlKWeKQdlq4eU94hJYcXSfWo8Rk7CS1Ef5lJ3ZM0,26012
|
||||
werkzeug/wrappers/base_response.py,sha256=JTxJZ8o-IBetpoWJqt2HFwPaNWNDAlM3_GXJe1Whw80,27784
|
||||
werkzeug/wrappers/common_descriptors.py,sha256=X2Ktd5zUWsmcd4ciaF62Dd8Lru9pLGP_XDUNukc8cXs,12829
|
||||
werkzeug/wrappers/cors.py,sha256=XMbaCol4dWTGvb-dCJBoN0p3JX91v93AIAHd7tnB3L4,3466
|
||||
werkzeug/wrappers/etag.py,sha256=XMXtyfByBsOjxwaX8U7ZtUY7JXkbQLP45oXZ0qkyTNs,12217
|
||||
werkzeug/wrappers/json.py,sha256=HvK_A4NpO0sLqgb10sTJcoZydYOwyNiPCJPV7SVgcgE,4343
|
||||
werkzeug/wrappers/request.py,sha256=QbHGqDpGPN684pnOPEokwkPESfm-NnfYM7ydOMxW_NI,1514
|
||||
werkzeug/wrappers/response.py,sha256=Oqv8TMG_dnOKTq_V30ddgkO5B7IJhkVPODvm7cbhZ3c,2524
|
||||
werkzeug/wrappers/user_agent.py,sha256=YJb-vr12cujG7sQMG9V89VsJa-03SWSenhg1W4cT0EY,435
|
||||
werkzeug/wsgi.py,sha256=ZGk85NzRyQTzkYis-xl8V9ydJgfClBdStvhzDzER2mw,34367
|
||||
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.34.2)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@ -0,0 +1 @@
|
||||
werkzeug
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.venv/lib/python3.8/site-packages/__pycache__/scp.cpython-38.pyc
Normal file
BIN
.venv/lib/python3.8/site-packages/__pycache__/scp.cpython-38.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.venv/lib/python3.8/site-packages/_cffi_backend.cpython-38-x86_64-linux-gnu.so
Executable file
BIN
.venv/lib/python3.8/site-packages/_cffi_backend.cpython-38-x86_64-linux-gnu.so
Executable file
Binary file not shown.
@ -0,0 +1,48 @@
|
||||
Main contributors
|
||||
-----------------
|
||||
- Hideo Hattori (https://github.com/hhatto)
|
||||
- Steven Myint (https://github.com/myint)
|
||||
- Bill Wendling (https://github.com/gwelymernans)
|
||||
|
||||
Patches
|
||||
-------
|
||||
- Fraser Tweedale (https://github.com/frasertweedale)
|
||||
- clach04 (https://github.com/clach04)
|
||||
- Marc Abramowitz (https://github.com/msabramo)
|
||||
- dellis23 (https://github.com/dellis23)
|
||||
- Sam Vilain (https://github.com/samv)
|
||||
- Florent Xicluna (https://github.com/florentx)
|
||||
- Andras Tim (https://github.com/andras-tim)
|
||||
- tomscytale (https://github.com/tomscytale)
|
||||
- Filip Noetzel (https://github.com/peritus)
|
||||
- Erik Bray (https://github.com/iguananaut)
|
||||
- Christopher Medrela (https://github.com/chrismedrela)
|
||||
- 小明 (https://github.com/dongweiming)
|
||||
- Andy Hayden (https://github.com/hayd)
|
||||
- Fabio Zadrozny (https://github.com/fabioz)
|
||||
- Alex Chernetz (https://github.com/achernet)
|
||||
- Marc Schlaich (https://github.com/schlamar)
|
||||
- E. M. Bray (https://github.com/embray)
|
||||
- Thomas Hisch (https://github.com/thisch)
|
||||
- Florian Best (https://github.com/spaceone)
|
||||
- Ian Clark (https://github.com/evenicoulddoit)
|
||||
- Khairi Hafsham (https://github.com/khairihafsham)
|
||||
- Neil Halelamien (https://github.com/neilsh)
|
||||
- Hashem Nasarat (https://github.com/Hnasar)
|
||||
- Hugo van Kemenade (https://github.com/hugovk)
|
||||
- gmbnomis (https://github.com/gmbnomis)
|
||||
- Samuel Lelièvre (https://github.com/slel)
|
||||
- bigredengineer (https://github.com/bigredengineer)
|
||||
- Kai Chen (https://github.com/kx-chen)
|
||||
- Anthony Sottile (https://github.com/asottile)
|
||||
- 秋葉 (https://github.com/Hanaasagi)
|
||||
- Christian Clauss (https://github.com/cclauss)
|
||||
- tobixx (https://github.com/tobixx)
|
||||
- bigredengineer (https://github.com/bigredengineer)
|
||||
- Bastien Gérard (https://github.com/bagerard)
|
||||
- nicolasbonifas (https://github.com/nicolasbonifas)
|
||||
- Andrii Yurchuk (https://github.com/Ch00k)
|
||||
- José M. Guisado (https://github.com/pvxe)
|
||||
- Dai Truong (https://github.com/NovaDev94)
|
||||
- jnozsc (https://github.com/jnozsc)
|
||||
- Edwin Shepherd (https://github.com/shardros)
|
||||
@ -0,0 +1 @@
|
||||
pip
|
||||
@ -0,0 +1,23 @@
|
||||
Copyright (C) 2010-2011 Hideo Hattori
|
||||
Copyright (C) 2011-2013 Hideo Hattori, Steven Myint
|
||||
Copyright (C) 2013-2016 Hideo Hattori, Steven Myint, Bill Wendling
|
||||
|
||||
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.
|
||||
@ -0,0 +1,455 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: autopep8
|
||||
Version: 1.5.4
|
||||
Summary: A tool that automatically formats Python code to conform to the PEP 8 style guide
|
||||
Home-page: https://github.com/hhatto/autopep8
|
||||
Author: Hideo Hattori
|
||||
Author-email: hhatto.jp@gmail.com
|
||||
License: Expat License
|
||||
Keywords: automation,pep8,format,pycodestyle
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Console
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT 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: Programming Language :: Python :: 3.8
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: Software Development :: Quality Assurance
|
||||
Requires-Dist: pycodestyle (>=2.6.0)
|
||||
Requires-Dist: toml
|
||||
|
||||
========
|
||||
autopep8
|
||||
========
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/autopep8.svg
|
||||
:target: https://pypi.org/project/autopep8/
|
||||
:alt: PyPI Version
|
||||
|
||||
.. image:: https://github.com/hhatto/autopep8/workflows/Python%20package/badge.svg
|
||||
:target: https://github.com/hhatto/autopep8/actions
|
||||
:alt: Build status
|
||||
|
||||
.. image:: https://codecov.io/gh/hhatto/autopep8/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/hhatto/autopep8
|
||||
:alt: Code Coverage
|
||||
|
||||
autopep8 automatically formats Python code to conform to the `PEP 8`_ style
|
||||
guide. It uses the pycodestyle_ utility to determine what parts of the code
|
||||
needs to be formatted. autopep8 is capable of fixing most of the formatting
|
||||
issues_ that can be reported by pycodestyle.
|
||||
|
||||
.. _PEP 8: https://www.python.org/dev/peps/pep-0008/
|
||||
.. _issues: https://pycodestyle.readthedocs.org/en/latest/intro.html#error-codes
|
||||
|
||||
.. contents::
|
||||
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
From pip::
|
||||
|
||||
$ pip install --upgrade autopep8
|
||||
|
||||
Consider using the ``--user`` option_.
|
||||
|
||||
.. _option: https://pip.pypa.io/en/latest/user_guide/#user-installs
|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
autopep8 requires pycodestyle_.
|
||||
|
||||
.. _pycodestyle: https://github.com/PyCQA/pycodestyle
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To modify a file in place (with aggressive level 2)::
|
||||
|
||||
$ autopep8 --in-place --aggressive --aggressive <filename>
|
||||
|
||||
Before running autopep8.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import math, sys;
|
||||
|
||||
def example1():
|
||||
####This is a long comment. This should be wrapped to fit within 72 characters.
|
||||
some_tuple=( 1,2, 3,'a' );
|
||||
some_variable={'long':'Long code lines should be wrapped within 79 characters.',
|
||||
'other':[math.pi, 100,200,300,9876543210,'This is a long string that goes on'],
|
||||
'more':{'inner':'This whole logical line should be wrapped.',some_tuple:[1,
|
||||
20,300,40000,500000000,60000000000000000]}}
|
||||
return (some_tuple, some_variable)
|
||||
def example2(): return {'has_key() is deprecated':True}.has_key({'f':2}.has_key(''));
|
||||
class Example3( object ):
|
||||
def __init__ ( self, bar ):
|
||||
#Comments should have a space after the hash.
|
||||
if bar : bar+=1; bar=bar* bar ; return bar
|
||||
else:
|
||||
some_string = """
|
||||
Indentation in multiline strings should not be touched.
|
||||
Only actual code should be reindented.
|
||||
"""
|
||||
return (sys.path, some_string)
|
||||
|
||||
After running autopep8.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import math
|
||||
import sys
|
||||
|
||||
|
||||
def example1():
|
||||
# This is a long comment. This should be wrapped to fit within 72
|
||||
# characters.
|
||||
some_tuple = (1, 2, 3, 'a')
|
||||
some_variable = {
|
||||
'long': 'Long code lines should be wrapped within 79 characters.',
|
||||
'other': [
|
||||
math.pi,
|
||||
100,
|
||||
200,
|
||||
300,
|
||||
9876543210,
|
||||
'This is a long string that goes on'],
|
||||
'more': {
|
||||
'inner': 'This whole logical line should be wrapped.',
|
||||
some_tuple: [
|
||||
1,
|
||||
20,
|
||||
300,
|
||||
40000,
|
||||
500000000,
|
||||
60000000000000000]}}
|
||||
return (some_tuple, some_variable)
|
||||
|
||||
|
||||
def example2(): return ('' in {'f': 2}) in {'has_key() is deprecated': True}
|
||||
|
||||
|
||||
class Example3(object):
|
||||
def __init__(self, bar):
|
||||
# Comments should have a space after the hash.
|
||||
if bar:
|
||||
bar += 1
|
||||
bar = bar * bar
|
||||
return bar
|
||||
else:
|
||||
some_string = """
|
||||
Indentation in multiline strings should not be touched.
|
||||
Only actual code should be reindented.
|
||||
"""
|
||||
return (sys.path, some_string)
|
||||
|
||||
Options::
|
||||
|
||||
usage: autopep8 [-h] [--version] [-v] [-d] [-i] [--global-config filename]
|
||||
[--ignore-local-config] [-r] [-j n] [-p n] [-a]
|
||||
[--experimental] [--exclude globs] [--list-fixes]
|
||||
[--ignore errors] [--select errors] [--max-line-length n]
|
||||
[--line-range line line] [--hang-closing] [--exit-code]
|
||||
[files [files ...]]
|
||||
|
||||
Automatically formats Python code to conform to the PEP 8 style guide.
|
||||
|
||||
positional arguments:
|
||||
files files to format or '-' for standard in
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--version show program's version number and exit
|
||||
-v, --verbose print verbose messages; multiple -v result in more
|
||||
verbose messages
|
||||
-d, --diff print the diff for the fixed source
|
||||
-i, --in-place make changes to files in place
|
||||
--global-config filename
|
||||
path to a global pep8 config file; if this file does
|
||||
not exist then this is ignored (default:
|
||||
~/.config/pep8)
|
||||
--ignore-local-config
|
||||
don't look for and apply local config files; if not
|
||||
passed, defaults are updated with any config files in
|
||||
the project's root directory
|
||||
-r, --recursive run recursively over directories; must be used with
|
||||
--in-place or --diff
|
||||
-j n, --jobs n number of parallel jobs; match CPU count if value is
|
||||
less than 1
|
||||
-p n, --pep8-passes n
|
||||
maximum number of additional pep8 passes (default:
|
||||
infinite)
|
||||
-a, --aggressive enable non-whitespace changes; multiple -a result in
|
||||
more aggressive changes
|
||||
--experimental enable experimental fixes
|
||||
--exclude globs exclude file/directory names that match these comma-
|
||||
separated globs
|
||||
--list-fixes list codes for fixes; used by --ignore and --select
|
||||
--ignore errors do not fix these errors/warnings (default:
|
||||
E226,E24,W50,W690)
|
||||
--select errors fix only these errors/warnings (e.g. E4,W)
|
||||
--max-line-length n set maximum allowed line length (default: 79)
|
||||
--line-range line line, --range line line
|
||||
only fix errors found within this inclusive range of
|
||||
line numbers (e.g. 1 99); line numbers are indexed at
|
||||
1
|
||||
--hang-closing hang-closing option passed to pycodestyle
|
||||
--exit-code change to behavior of exit code. default behavior of
|
||||
return value, 0 is no differences, 1 is error exit.
|
||||
return 2 when add this option. 2 is exists
|
||||
differences.
|
||||
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
autopep8 fixes the following issues_ reported by pycodestyle_::
|
||||
|
||||
E101 - Reindent all lines.
|
||||
E11 - Fix indentation.
|
||||
E121 - Fix indentation to be a multiple of four.
|
||||
E122 - Add absent indentation for hanging indentation.
|
||||
E123 - Align closing bracket to match opening bracket.
|
||||
E124 - Align closing bracket to match visual indentation.
|
||||
E125 - Indent to distinguish line from next logical line.
|
||||
E126 - Fix over-indented hanging indentation.
|
||||
E127 - Fix visual indentation.
|
||||
E128 - Fix visual indentation.
|
||||
E129 - Fix visual indentation.
|
||||
E131 - Fix hanging indent for unaligned continuation line.
|
||||
E133 - Fix missing indentation for closing bracket.
|
||||
E20 - Remove extraneous whitespace.
|
||||
E211 - Remove extraneous whitespace.
|
||||
E22 - Fix extraneous whitespace around keywords.
|
||||
E224 - Remove extraneous whitespace around operator.
|
||||
E225 - Fix missing whitespace around operator.
|
||||
E226 - Fix missing whitespace around arithmetic operator.
|
||||
E227 - Fix missing whitespace around bitwise/shift operator.
|
||||
E228 - Fix missing whitespace around modulo operator.
|
||||
E231 - Add missing whitespace.
|
||||
E241 - Fix extraneous whitespace around keywords.
|
||||
E242 - Remove extraneous whitespace around operator.
|
||||
E251 - Remove whitespace around parameter '=' sign.
|
||||
E252 - Missing whitespace around parameter equals.
|
||||
E26 - Fix spacing after comment hash for inline comments.
|
||||
E265 - Fix spacing after comment hash for block comments.
|
||||
E266 - Fix too many leading '#' for block comments.
|
||||
E27 - Fix extraneous whitespace around keywords.
|
||||
E301 - Add missing blank line.
|
||||
E302 - Add missing 2 blank lines.
|
||||
E303 - Remove extra blank lines.
|
||||
E304 - Remove blank line following function decorator.
|
||||
E305 - Expected 2 blank lines after end of function or class.
|
||||
E306 - Expected 1 blank line before a nested definition.
|
||||
E401 - Put imports on separate lines.
|
||||
E402 - Fix module level import not at top of file
|
||||
E501 - Try to make lines fit within --max-line-length characters.
|
||||
E502 - Remove extraneous escape of newline.
|
||||
E701 - Put colon-separated compound statement on separate lines.
|
||||
E70 - Put semicolon-separated compound statement on separate lines.
|
||||
E711 - Fix comparison with None.
|
||||
E712 - Fix comparison with boolean.
|
||||
E713 - Use 'not in' for test for membership.
|
||||
E714 - Use 'is not' test for object identity.
|
||||
E721 - Use "isinstance()" instead of comparing types directly.
|
||||
E722 - Fix bare except.
|
||||
E731 - Use a def when use do not assign a lambda expression.
|
||||
W291 - Remove trailing whitespace.
|
||||
W292 - Add a single newline at the end of the file.
|
||||
W293 - Remove trailing whitespace on blank line.
|
||||
W391 - Remove trailing blank lines.
|
||||
W503 - Fix line break before binary operator.
|
||||
W504 - Fix line break after binary operator.
|
||||
W601 - Use "in" rather than "has_key()".
|
||||
W602 - Fix deprecated form of raising exception.
|
||||
W603 - Use "!=" instead of "<>"
|
||||
W604 - Use "repr()" instead of backticks.
|
||||
W605 - Fix invalid escape sequence 'x'.
|
||||
W690 - Fix various deprecated code (via lib2to3).
|
||||
|
||||
autopep8 also fixes some issues not found by pycodestyle_.
|
||||
|
||||
- Correct deprecated or non-idiomatic Python code (via ``lib2to3``). Use this
|
||||
for making Python 2.7 code more compatible with Python 3. (This is triggered
|
||||
if ``W690`` is enabled.)
|
||||
- Normalize files with mixed line endings.
|
||||
- Put a blank line between a class docstring and its first method
|
||||
declaration. (Enabled with ``E301``.)
|
||||
- Remove blank lines between a function declaration and its docstring. (Enabled
|
||||
with ``E303``.)
|
||||
|
||||
autopep8 avoids fixing some issues found by pycodestyle_.
|
||||
|
||||
- ``E112``/``E113`` for non comments are reports of bad indentation that break
|
||||
syntax rules. These should not be modified at all.
|
||||
- ``E265``, which refers to spacing after comment hash, is ignored if the
|
||||
comment looks like code. autopep8 avoids modifying these since they are not
|
||||
real comments. If you really want to get rid of the pycodestyle_ warning,
|
||||
consider just removing the commented-out code. (This can be automated via
|
||||
eradicate_.)
|
||||
|
||||
.. _eradicate: https://github.com/myint/eradicate
|
||||
|
||||
|
||||
More advanced usage
|
||||
===================
|
||||
|
||||
By default autopep8 only makes whitespace changes. Thus, by default, it does
|
||||
not fix ``E711`` and ``E712``. (Changing ``x == None`` to ``x is None`` may
|
||||
change the meaning of the program if ``x`` has its ``__eq__`` method
|
||||
overridden.) Nor does it correct deprecated code ``W6``. To enable these
|
||||
more aggressive fixes, use the ``--aggressive`` option::
|
||||
|
||||
$ autopep8 --aggressive <filename>
|
||||
|
||||
Use multiple ``--aggressive`` to increase the aggressiveness level. For
|
||||
example, ``E712`` requires aggressiveness level 2 (since ``x == True`` could be
|
||||
changed to either ``x`` or ``x is True``, but autopep8 chooses the former).
|
||||
|
||||
``--aggressive`` will also shorten lines more aggressively. It will also remove
|
||||
trailing whitespace more aggressively. (Usually, we don't touch trailing
|
||||
whitespace in docstrings and other multiline strings. And to do even more
|
||||
aggressive changes to docstrings, use docformatter_.)
|
||||
|
||||
.. _docformatter: https://github.com/myint/docformatter
|
||||
|
||||
To enable only a subset of the fixes, use the ``--select`` option. For example,
|
||||
to fix various types of indentation issues::
|
||||
|
||||
$ autopep8 --select=E1,W1 <filename>
|
||||
|
||||
Similarly, to just fix deprecated code::
|
||||
|
||||
$ autopep8 --aggressive --select=W6 <filename>
|
||||
|
||||
The above is useful when trying to port a single code base to work with both
|
||||
Python 2 and Python 3 at the same time.
|
||||
|
||||
If the file being fixed is large, you may want to enable verbose progress
|
||||
messages::
|
||||
|
||||
$ autopep8 -v <filename>
|
||||
|
||||
Passing in ``--experimental`` enables the following functionality:
|
||||
|
||||
- Shortens code lines by taking its length into account
|
||||
|
||||
::
|
||||
|
||||
$ autopep8 --experimental <filename>
|
||||
|
||||
Use as a module
|
||||
===============
|
||||
|
||||
The simplest way of using autopep8 as a module is via the ``fix_code()``
|
||||
function:
|
||||
|
||||
>>> import autopep8
|
||||
>>> autopep8.fix_code('x= 123\n')
|
||||
'x = 123\n'
|
||||
|
||||
Or with options:
|
||||
|
||||
>>> import autopep8
|
||||
>>> autopep8.fix_code('x.has_key(y)\n',
|
||||
... options={'aggressive': 1})
|
||||
'y in x\n'
|
||||
>>> autopep8.fix_code('print( 123 )\n',
|
||||
... options={'ignore': ['E']})
|
||||
'print( 123 )\n'
|
||||
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
By default, if ``$HOME/.config/pycodestyle`` (``~\.pycodestyle`` in Windows
|
||||
environment) exists, it will be used as global configuration file.
|
||||
Alternatively, you can specify the global configuration file with the
|
||||
``--global-config`` option.
|
||||
|
||||
Also, if ``setup.cfg``, ``tox.ini``, ``.pep8`` and ``.flake8`` files exist
|
||||
in the directory where the target file exists, it will be used as the
|
||||
configuration file.
|
||||
|
||||
``pep8``, ``pycodestyle``, and ``flake8`` can be used as a section.
|
||||
|
||||
configuration file example::
|
||||
|
||||
[pycodestyle]
|
||||
max_line_length = 120
|
||||
ignore = E501
|
||||
|
||||
pyproject.toml
|
||||
--------------
|
||||
|
||||
autopep8 can also use ``pyproject.toml``.
|
||||
section must use ``[tool.autopep8]``, and ``pyproject.toml`` takes precedence
|
||||
over any other configuration files.
|
||||
|
||||
configuration file example::
|
||||
|
||||
[tool.autopep8]
|
||||
max_line_length = 120
|
||||
ignore = "E501,W6" # or ["E501", "W6"]
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Test cases are in ``test/test_autopep8.py``. They can be run directly via
|
||||
``python test/test_autopep8.py`` or via tox_. The latter is useful for
|
||||
testing against multiple Python interpreters. (We currently test against
|
||||
CPython versions 2.7, 3.4, 3.5, 3.6 and 3.7. We also test against PyPy.)
|
||||
|
||||
.. _`tox`: https://pypi.org/project/tox/
|
||||
|
||||
Broad spectrum testing is available via ``test/acid.py``. This script runs
|
||||
autopep8 against Python code and checks for correctness and completeness of the
|
||||
code fixes. It can check that the bytecode remains identical.
|
||||
``test/acid_pypi.py`` makes use of ``acid.py`` to test against the latest
|
||||
released packages on PyPI.
|
||||
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
``pkg_resources.DistributionNotFound``
|
||||
--------------------------------------
|
||||
|
||||
If you are using an ancient version of ``setuptools``, you might encounter
|
||||
``pkg_resources.DistributionNotFound`` when trying to run ``autopep8``. Try
|
||||
upgrading ``setuptools`` to workaround this ``setuptools`` problem::
|
||||
|
||||
$ pip install --upgrade setuptools
|
||||
|
||||
Use ``sudo`` if you are installing to the system.
|
||||
|
||||
|
||||
Links
|
||||
=====
|
||||
|
||||
* PyPI_
|
||||
* GitHub_
|
||||
* `Travis CI`_
|
||||
* Coveralls_
|
||||
|
||||
.. _PyPI: https://pypi.org/project/autopep8/
|
||||
.. _GitHub: https://github.com/hhatto/autopep8
|
||||
.. _`Travis CI`: https://travis-ci.org/hhatto/autopep8
|
||||
.. _`Coveralls`: https://coveralls.io/r/hhatto/autopep8
|
||||
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
../../../bin/autopep8,sha256=gg3g7EGW9NSqYB806aJn70uhDxy3NGikE0G-CrlBZ6g,248
|
||||
__pycache__/autopep8.cpython-38.pyc,,
|
||||
autopep8-1.5.4.dist-info/AUTHORS.rst,sha256=tiTPsbzGl9dtXCMEWXbWSV1zan1M-BoWtiixs46GIWk,2003
|
||||
autopep8-1.5.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
autopep8-1.5.4.dist-info/LICENSE,sha256=jR0COOSFQ0QZFMqwdB1N4-Bwobg2f3h69fIJr7YLCWo,1181
|
||||
autopep8-1.5.4.dist-info/METADATA,sha256=xGWUpO3NYAhFVnkHL7oP9pXmNrTCcl_-fZlCkxJAo48,16767
|
||||
autopep8-1.5.4.dist-info/RECORD,,
|
||||
autopep8-1.5.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
autopep8-1.5.4.dist-info/WHEEL,sha256=kGT74LWyRUZrL4VgLh6_g12IeVl_9u9ZVhadrgXZUEY,110
|
||||
autopep8-1.5.4.dist-info/entry_points.txt,sha256=iHNa5_cSXw2ablVbRmfiFGMG1CNrpEPRCEjn3nspaJ8,44
|
||||
autopep8-1.5.4.dist-info/top_level.txt,sha256=s2x-di3QBwGxr7kd5xErt2pom8dsFRdINbmwsOEgLfU,9
|
||||
autopep8.py,sha256=95wzvmkg4MH1726gIXpUSFBaE15SdNjTUGPcAp2pLJ8,153775
|
||||
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.34.2)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
[console_scripts]
|
||||
autopep8 = autopep8:main
|
||||
|
||||
@ -0,0 +1 @@
|
||||
autopep8
|
||||
4514
.venv/lib/python3.8/site-packages/autopep8.py
Normal file
4514
.venv/lib/python3.8/site-packages/autopep8.py
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1 @@
|
||||
pip
|
||||
201
.venv/lib/python3.8/site-packages/bcrypt-3.2.0.dist-info/LICENSE
Normal file
201
.venv/lib/python3.8/site-packages/bcrypt-3.2.0.dist-info/LICENSE
Normal file
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@ -0,0 +1,252 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: bcrypt
|
||||
Version: 3.2.0
|
||||
Summary: Modern password hashing for your software and your servers
|
||||
Home-page: https://github.com/pyca/bcrypt/
|
||||
Author: The Python Cryptographic Authority developers
|
||||
Author-email: cryptography-dev@python.org
|
||||
License: Apache License, Version 2.0
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Requires-Python: >=3.6
|
||||
Requires-Dist: cffi (>=1.1)
|
||||
Requires-Dist: six (>=1.4.1)
|
||||
Provides-Extra: tests
|
||||
Requires-Dist: pytest (!=3.3.0,>=3.2.1) ; extra == 'tests'
|
||||
Provides-Extra: typecheck
|
||||
Requires-Dist: mypy ; extra == 'typecheck'
|
||||
|
||||
bcrypt
|
||||
======
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/bcrypt.svg
|
||||
:target: https://pypi.org/project/bcrypt/
|
||||
:alt: Latest Version
|
||||
|
||||
.. image:: https://travis-ci.org/pyca/bcrypt.svg?branch=master
|
||||
:target: https://travis-ci.org/pyca/bcrypt
|
||||
|
||||
.. image:: https://github.com/pyca/bcrypt/workflows/CI/badge.svg?branch=master
|
||||
:target: https://github.com/pyca/bcrypt/actions?query=workflow%3ACI+branch%3Amaster
|
||||
|
||||
Good password hashing for your software and your servers
|
||||
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
To install bcrypt, simply:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ pip install bcrypt
|
||||
|
||||
Note that bcrypt should build very easily on Linux provided you have a C compiler, headers for Python (if you're not using pypy), and headers for the libffi libraries available on your system.
|
||||
|
||||
For Debian and Ubuntu, the following command will ensure that the required dependencies are installed:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ sudo apt-get install build-essential libffi-dev python-dev
|
||||
|
||||
For Fedora and RHEL-derivatives, the following command will ensure that the required dependencies are installed:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ sudo yum install gcc libffi-devel python-devel
|
||||
|
||||
For Alpine, the following command will ensure that the required dependencies are installed:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
$ apk add --update musl-dev gcc libffi-dev
|
||||
|
||||
|
||||
Alternatives
|
||||
============
|
||||
|
||||
While bcrypt remains a good choice for password storage depending on your specific use case you may also want to consider using scrypt (either via `standard library`_ or `cryptography`_) or argon2id via `argon2_cffi`_.
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
|
||||
3.2.0
|
||||
-----
|
||||
|
||||
* Added typehints for library functions.
|
||||
* Dropped support for Python versions less than 3.6 (2.7, 3.4, 3.5).
|
||||
* Shipped ``abi3`` Windows wheels (requires pip >= 20).
|
||||
|
||||
3.1.7
|
||||
-----
|
||||
|
||||
* Set a ``setuptools`` lower bound for PEP517 wheel building.
|
||||
* We no longer distribute 32-bit ``manylinux1`` wheels. Continuing to produce
|
||||
them was a maintenance burden.
|
||||
|
||||
3.1.6
|
||||
-----
|
||||
|
||||
* Added support for compilation on Haiku.
|
||||
|
||||
3.1.5
|
||||
-----
|
||||
|
||||
* Added support for compilation on AIX.
|
||||
* Dropped Python 2.6 and 3.3 support.
|
||||
* Switched to using ``abi3`` wheels for Python 3. If you are not getting a
|
||||
wheel on a compatible platform please upgrade your ``pip`` version.
|
||||
|
||||
3.1.4
|
||||
-----
|
||||
|
||||
* Fixed compilation with mingw and on illumos.
|
||||
|
||||
3.1.3
|
||||
-----
|
||||
* Fixed a compilation issue on Solaris.
|
||||
* Added a warning when using too few rounds with ``kdf``.
|
||||
|
||||
3.1.2
|
||||
-----
|
||||
* Fixed a compile issue affecting big endian platforms.
|
||||
* Fixed invalid escape sequence warnings on Python 3.6.
|
||||
* Fixed building in non-UTF8 environments on Python 2.
|
||||
|
||||
3.1.1
|
||||
-----
|
||||
* Resolved a ``UserWarning`` when used with ``cffi`` 1.8.3.
|
||||
|
||||
3.1.0
|
||||
-----
|
||||
* Added support for ``checkpw``, a convenience method for verifying a password.
|
||||
* Ensure that you get a ``$2y$`` hash when you input a ``$2y$`` salt.
|
||||
* Fixed a regression where ``$2a`` hashes were vulnerable to a wraparound bug.
|
||||
* Fixed compilation under Alpine Linux.
|
||||
|
||||
3.0.0
|
||||
-----
|
||||
* Switched the C backend to code obtained from the OpenBSD project rather than
|
||||
openwall.
|
||||
* Added support for ``bcrypt_pbkdf`` via the ``kdf`` function.
|
||||
|
||||
2.0.0
|
||||
-----
|
||||
* Added support for an adjustible prefix when calling ``gensalt``.
|
||||
* Switched to CFFI 1.0+
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Password Hashing
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Hashing and then later checking that a password matches the previous hashed
|
||||
password is very simple:
|
||||
|
||||
.. code:: pycon
|
||||
|
||||
>>> import bcrypt
|
||||
>>> password = b"super secret password"
|
||||
>>> # Hash a password for the first time, with a randomly-generated salt
|
||||
>>> hashed = bcrypt.hashpw(password, bcrypt.gensalt())
|
||||
>>> # Check that an unhashed password matches one that has previously been
|
||||
>>> # hashed
|
||||
>>> if bcrypt.checkpw(password, hashed):
|
||||
... print("It Matches!")
|
||||
... else:
|
||||
... print("It Does not Match :(")
|
||||
|
||||
KDF
|
||||
~~~
|
||||
|
||||
As of 3.0.0 ``bcrypt`` now offers a ``kdf`` function which does ``bcrypt_pbkdf``.
|
||||
This KDF is used in OpenSSH's newer encrypted private key format.
|
||||
|
||||
.. code:: pycon
|
||||
|
||||
>>> import bcrypt
|
||||
>>> key = bcrypt.kdf(
|
||||
... password=b'password',
|
||||
... salt=b'salt',
|
||||
... desired_key_bytes=32,
|
||||
... rounds=100)
|
||||
|
||||
|
||||
Adjustable Work Factor
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
One of bcrypt's features is an adjustable logarithmic work factor. To adjust
|
||||
the work factor merely pass the desired number of rounds to
|
||||
``bcrypt.gensalt(rounds=12)`` which defaults to 12):
|
||||
|
||||
.. code:: pycon
|
||||
|
||||
>>> import bcrypt
|
||||
>>> password = b"super secret password"
|
||||
>>> # Hash a password for the first time, with a certain number of rounds
|
||||
>>> hashed = bcrypt.hashpw(password, bcrypt.gensalt(14))
|
||||
>>> # Check that a unhashed password matches one that has previously been
|
||||
>>> # hashed
|
||||
>>> if bcrypt.checkpw(password, hashed):
|
||||
... print("It Matches!")
|
||||
... else:
|
||||
... print("It Does not Match :(")
|
||||
|
||||
|
||||
Adjustable Prefix
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Another one of bcrypt's features is an adjustable prefix to let you define what
|
||||
libraries you'll remain compatible with. To adjust this, pass either ``2a`` or
|
||||
``2b`` (the default) to ``bcrypt.gensalt(prefix=b"2b")`` as a bytes object.
|
||||
|
||||
As of 3.0.0 the ``$2y$`` prefix is still supported in ``hashpw`` but deprecated.
|
||||
|
||||
Maximum Password Length
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The bcrypt algorithm only handles passwords up to 72 characters, any characters
|
||||
beyond that are ignored. To work around this, a common approach is to hash a
|
||||
password with a cryptographic hash (such as ``sha256``) and then base64
|
||||
encode it to prevent NULL byte problems before hashing the result with
|
||||
``bcrypt``:
|
||||
|
||||
.. code:: pycon
|
||||
|
||||
>>> password = b"an incredibly long password" * 10
|
||||
>>> hashed = bcrypt.hashpw(
|
||||
... base64.b64encode(hashlib.sha256(password).digest()),
|
||||
... bcrypt.gensalt()
|
||||
... )
|
||||
|
||||
Compatibility
|
||||
-------------
|
||||
|
||||
This library should be compatible with py-bcrypt and it will run on Python
|
||||
3.6+, and PyPy 3.
|
||||
|
||||
C Code
|
||||
------
|
||||
|
||||
This library uses code from OpenBSD.
|
||||
|
||||
Security
|
||||
--------
|
||||
|
||||
``bcrypt`` follows the `same security policy as cryptography`_, if you
|
||||
identify a vulnerability, we ask you to contact us privately.
|
||||
|
||||
.. _`same security policy as cryptography`: https://cryptography.io/en/latest/security/
|
||||
.. _`standard library`: https://docs.python.org/3/library/hashlib.html#hashlib.scrypt
|
||||
.. _`argon2_cffi`: https://argon2-cffi.readthedocs.io
|
||||
.. _`cryptography`: https://cryptography.io/en/latest/hazmat/primitives/key-derivation-functions/#cryptography.hazmat.primitives.kdf.scrypt.Scrypt
|
||||
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
bcrypt-3.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
bcrypt-3.2.0.dist-info/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
||||
bcrypt-3.2.0.dist-info/METADATA,sha256=GdD7y9zNFz4pIwJMsoqoBNMUi0F8KmOPAEWWPZ86gWw,7471
|
||||
bcrypt-3.2.0.dist-info/RECORD,,
|
||||
bcrypt-3.2.0.dist-info/WHEEL,sha256=anfJboABYoHdkg0AA4Ga5g8v1QHyNq_zIyy3oKyWQ14,111
|
||||
bcrypt-3.2.0.dist-info/top_level.txt,sha256=igJttN6fNWPEzk4lnCMzlitVT_1PlLVJzxzogMWGARU,15
|
||||
bcrypt/__about__.py,sha256=R9tFLrp54uy-g5mKOLOr8ZaJASKzpn8pf_FHWoBh_HM,1320
|
||||
bcrypt/__init__.py,sha256=Kcn4lm_wsTtTMKBqHQYsHTHQz3xSZlLwMbQT6gKbhIg,5774
|
||||
bcrypt/__pycache__/__about__.cpython-38.pyc,,
|
||||
bcrypt/__pycache__/__init__.cpython-38.pyc,,
|
||||
bcrypt/_bcrypt.abi3.so,sha256=RGDqDI8HZJIbzrAenMXe8ZHG34tvXxaOjCjtMi1FErg,139632
|
||||
bcrypt/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user