| @@ -4,7 +4,7 @@ craftbeerpi.db | |||||
| **/node_modules/* | **/node_modules/* | ||||
| *.pyc | *.pyc | ||||
| *.templog | *.templog | ||||
| venv/ | |||||
| venv2/ | |||||
| modules/plugins/* | modules/plugins/* | ||||
| !modules/plugins/__init__.py | !modules/plugins/__init__.py | ||||
| *.pyc | *.pyc | ||||
| @@ -1,76 +0,0 @@ | |||||
| # This file must be used with "source bin/activate" *from bash* | |||||
| # you cannot run it directly | |||||
| deactivate () { | |||||
| # reset old environment variables | |||||
| if [ -n "$_OLD_VIRTUAL_PATH" ] ; then | |||||
| PATH="$_OLD_VIRTUAL_PATH" | |||||
| export PATH | |||||
| unset _OLD_VIRTUAL_PATH | |||||
| fi | |||||
| if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then | |||||
| PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" | |||||
| export PYTHONHOME | |||||
| unset _OLD_VIRTUAL_PYTHONHOME | |||||
| fi | |||||
| # This should detect bash and zsh, which have a hash command that must | |||||
| # be called to get it to forget past commands. Without forgetting | |||||
| # past commands the $PATH changes we made may not be respected | |||||
| if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then | |||||
| hash -r | |||||
| fi | |||||
| if [ -n "$_OLD_VIRTUAL_PS1" ] ; then | |||||
| PS1="$_OLD_VIRTUAL_PS1" | |||||
| export PS1 | |||||
| unset _OLD_VIRTUAL_PS1 | |||||
| fi | |||||
| unset VIRTUAL_ENV | |||||
| if [ ! "$1" = "nondestructive" ] ; then | |||||
| # Self destruct! | |||||
| unset -f deactivate | |||||
| fi | |||||
| } | |||||
| # unset irrelevant variables | |||||
| deactivate nondestructive | |||||
| VIRTUAL_ENV="/Users/manuelfritsch/cbp3_py3/venv" | |||||
| export VIRTUAL_ENV | |||||
| _OLD_VIRTUAL_PATH="$PATH" | |||||
| PATH="$VIRTUAL_ENV/bin:$PATH" | |||||
| export PATH | |||||
| # unset PYTHONHOME if set | |||||
| # this will fail if PYTHONHOME is set to the empty string (which is bad anyway) | |||||
| # could use `if (set -u; : $PYTHONHOME) ;` in bash | |||||
| if [ -n "$PYTHONHOME" ] ; then | |||||
| _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" | |||||
| unset PYTHONHOME | |||||
| fi | |||||
| if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then | |||||
| _OLD_VIRTUAL_PS1="$PS1" | |||||
| if [ "x(venv) " != x ] ; then | |||||
| PS1="(venv) $PS1" | |||||
| else | |||||
| if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then | |||||
| # special case for Aspen magic directories | |||||
| # see http://www.zetadev.com/software/aspen/ | |||||
| PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" | |||||
| else | |||||
| PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" | |||||
| fi | |||||
| fi | |||||
| export PS1 | |||||
| fi | |||||
| # This should detect bash and zsh, which have a hash command that must | |||||
| # be called to get it to forget past commands. Without forgetting | |||||
| # past commands the $PATH changes we made may not be respected | |||||
| if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then | |||||
| hash -r | |||||
| fi | |||||
| @@ -1,37 +0,0 @@ | |||||
| # This file must be used with "source bin/activate.csh" *from csh*. | |||||
| # You cannot run it directly. | |||||
| # Created by Davide Di Blasi <davidedb@gmail.com>. | |||||
| # Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com> | |||||
| alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' | |||||
| # Unset irrelevant variables. | |||||
| deactivate nondestructive | |||||
| setenv VIRTUAL_ENV "/Users/manuelfritsch/cbp3_py3/venv" | |||||
| set _OLD_VIRTUAL_PATH="$PATH" | |||||
| setenv PATH "$VIRTUAL_ENV/bin:$PATH" | |||||
| set _OLD_VIRTUAL_PROMPT="$prompt" | |||||
| if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then | |||||
| if ("venv" != "") then | |||||
| set env_name = "venv" | |||||
| else | |||||
| if (`basename "VIRTUAL_ENV"` == "__") then | |||||
| # special case for Aspen magic directories | |||||
| # see http://www.zetadev.com/software/aspen/ | |||||
| set env_name = `basename \`dirname "$VIRTUAL_ENV"\`` | |||||
| else | |||||
| set env_name = `basename "$VIRTUAL_ENV"` | |||||
| endif | |||||
| endif | |||||
| set prompt = "[$env_name] $prompt" | |||||
| unset env_name | |||||
| endif | |||||
| alias pydoc python -m pydoc | |||||
| rehash | |||||
| @@ -1,75 +0,0 @@ | |||||
| # This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) | |||||
| # you cannot run it directly | |||||
| function deactivate -d "Exit virtualenv and return to normal shell environment" | |||||
| # reset old environment variables | |||||
| if test -n "$_OLD_VIRTUAL_PATH" | |||||
| set -gx PATH $_OLD_VIRTUAL_PATH | |||||
| set -e _OLD_VIRTUAL_PATH | |||||
| end | |||||
| if test -n "$_OLD_VIRTUAL_PYTHONHOME" | |||||
| set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME | |||||
| set -e _OLD_VIRTUAL_PYTHONHOME | |||||
| end | |||||
| if test -n "$_OLD_FISH_PROMPT_OVERRIDE" | |||||
| functions -e fish_prompt | |||||
| set -e _OLD_FISH_PROMPT_OVERRIDE | |||||
| functions -c _old_fish_prompt fish_prompt | |||||
| functions -e _old_fish_prompt | |||||
| end | |||||
| set -e VIRTUAL_ENV | |||||
| if test "$argv[1]" != "nondestructive" | |||||
| # Self destruct! | |||||
| functions -e deactivate | |||||
| end | |||||
| end | |||||
| # unset irrelevant variables | |||||
| deactivate nondestructive | |||||
| set -gx VIRTUAL_ENV "/Users/manuelfritsch/cbp3_py3/venv" | |||||
| set -gx _OLD_VIRTUAL_PATH $PATH | |||||
| set -gx PATH "$VIRTUAL_ENV/bin" $PATH | |||||
| # unset PYTHONHOME if set | |||||
| if set -q PYTHONHOME | |||||
| set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME | |||||
| set -e PYTHONHOME | |||||
| end | |||||
| if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" | |||||
| # fish uses a function instead of an env var to generate the prompt. | |||||
| # save the current fish_prompt function as the function _old_fish_prompt | |||||
| functions -c fish_prompt _old_fish_prompt | |||||
| # with the original prompt function renamed, we can override with our own. | |||||
| function fish_prompt | |||||
| # Save the return status of the last command | |||||
| set -l old_status $status | |||||
| # Prompt override? | |||||
| if test -n "(venv) " | |||||
| printf "%s%s" "(venv) " (set_color normal) | |||||
| else | |||||
| # ...Otherwise, prepend env | |||||
| set -l _checkbase (basename "$VIRTUAL_ENV") | |||||
| if test $_checkbase = "__" | |||||
| # special case for Aspen magic directories | |||||
| # see http://www.zetadev.com/software/aspen/ | |||||
| printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) | |||||
| else | |||||
| printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) | |||||
| end | |||||
| end | |||||
| # Restore the return status of the previous command. | |||||
| echo "exit $old_status" | . | |||||
| _old_fish_prompt | |||||
| end | |||||
| set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" | |||||
| end | |||||
| @@ -1,11 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # -*- 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()) | |||||
| @@ -1,11 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # -*- coding: utf-8 -*- | |||||
| import re | |||||
| import sys | |||||
| from setuptools.command.easy_install import main | |||||
| if __name__ == '__main__': | |||||
| sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
| sys.exit(main()) | |||||
| @@ -1,11 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # -*- coding: utf-8 -*- | |||||
| import re | |||||
| import sys | |||||
| from setuptools.command.easy_install import main | |||||
| if __name__ == '__main__': | |||||
| sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
| sys.exit(main()) | |||||
| @@ -1,11 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # -*- 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()) | |||||
| @@ -1,12 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip' | |||||
| __requires__ = 'pip==10.0.1' | |||||
| import re | |||||
| import sys | |||||
| from pkg_resources import load_entry_point | |||||
| if __name__ == '__main__': | |||||
| sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
| sys.exit( | |||||
| load_entry_point('pip==10.0.1', 'console_scripts', 'pip')() | |||||
| ) | |||||
| @@ -1,12 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip3' | |||||
| __requires__ = 'pip==10.0.1' | |||||
| import re | |||||
| import sys | |||||
| from pkg_resources import load_entry_point | |||||
| if __name__ == '__main__': | |||||
| sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
| sys.exit( | |||||
| load_entry_point('pip==10.0.1', 'console_scripts', 'pip3')() | |||||
| ) | |||||
| @@ -1,12 +0,0 @@ | |||||
| #!/Users/manuelfritsch/cbp3_py3/venv/bin/python | |||||
| # EASY-INSTALL-ENTRY-SCRIPT: 'pip==10.0.1','console_scripts','pip3.6' | |||||
| __requires__ = 'pip==10.0.1' | |||||
| import re | |||||
| import sys | |||||
| from pkg_resources import load_entry_point | |||||
| if __name__ == '__main__': | |||||
| sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) | |||||
| sys.exit( | |||||
| load_entry_point('pip==10.0.1', 'console_scripts', 'pip3.6')() | |||||
| ) | |||||
| @@ -1,157 +0,0 @@ | |||||
| /* vim:set noet ts=8 sw=8 : */ | |||||
| /* Greenlet object interface */ | |||||
| #ifndef Py_GREENLETOBJECT_H | |||||
| #define Py_GREENLETOBJECT_H | |||||
| #include <Python.h> | |||||
| #ifdef __cplusplus | |||||
| extern "C" { | |||||
| #endif | |||||
| #define GREENLET_VERSION "0.4.15" | |||||
| #if PY_VERSION_HEX >= 0x030700A3 | |||||
| # define GREENLET_USE_EXC_INFO | |||||
| #endif | |||||
| typedef struct _greenlet { | |||||
| PyObject_HEAD | |||||
| char* stack_start; | |||||
| char* stack_stop; | |||||
| char* stack_copy; | |||||
| intptr_t stack_saved; | |||||
| struct _greenlet* stack_prev; | |||||
| struct _greenlet* parent; | |||||
| PyObject* run_info; | |||||
| struct _frame* top_frame; | |||||
| int recursion_depth; | |||||
| PyObject* weakreflist; | |||||
| #ifdef GREENLET_USE_EXC_INFO | |||||
| _PyErr_StackItem* exc_info; | |||||
| _PyErr_StackItem exc_state; | |||||
| #else | |||||
| PyObject* exc_type; | |||||
| PyObject* exc_value; | |||||
| PyObject* exc_traceback; | |||||
| #endif | |||||
| PyObject* dict; | |||||
| } PyGreenlet; | |||||
| #define PyGreenlet_Check(op) PyObject_TypeCheck(op, &PyGreenlet_Type) | |||||
| #define PyGreenlet_MAIN(op) (((PyGreenlet*)(op))->stack_stop == (char*) -1) | |||||
| #define PyGreenlet_STARTED(op) (((PyGreenlet*)(op))->stack_stop != NULL) | |||||
| #define PyGreenlet_ACTIVE(op) (((PyGreenlet*)(op))->stack_start != NULL) | |||||
| #define PyGreenlet_GET_PARENT(op) (((PyGreenlet*)(op))->parent) | |||||
| #if (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 7) || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 1) || PY_MAJOR_VERSION > 3 | |||||
| #define GREENLET_USE_PYCAPSULE | |||||
| #endif | |||||
| /* C API functions */ | |||||
| /* Total number of symbols that are exported */ | |||||
| #define PyGreenlet_API_pointers 8 | |||||
| #define PyGreenlet_Type_NUM 0 | |||||
| #define PyExc_GreenletError_NUM 1 | |||||
| #define PyExc_GreenletExit_NUM 2 | |||||
| #define PyGreenlet_New_NUM 3 | |||||
| #define PyGreenlet_GetCurrent_NUM 4 | |||||
| #define PyGreenlet_Throw_NUM 5 | |||||
| #define PyGreenlet_Switch_NUM 6 | |||||
| #define PyGreenlet_SetParent_NUM 7 | |||||
| #ifndef GREENLET_MODULE | |||||
| /* This section is used by modules that uses the greenlet C API */ | |||||
| static void **_PyGreenlet_API = NULL; | |||||
| #define PyGreenlet_Type (*(PyTypeObject *) _PyGreenlet_API[PyGreenlet_Type_NUM]) | |||||
| #define PyExc_GreenletError \ | |||||
| ((PyObject *) _PyGreenlet_API[PyExc_GreenletError_NUM]) | |||||
| #define PyExc_GreenletExit \ | |||||
| ((PyObject *) _PyGreenlet_API[PyExc_GreenletExit_NUM]) | |||||
| /* | |||||
| * PyGreenlet_New(PyObject *args) | |||||
| * | |||||
| * greenlet.greenlet(run, parent=None) | |||||
| */ | |||||
| #define PyGreenlet_New \ | |||||
| (* (PyGreenlet * (*)(PyObject *run, PyGreenlet *parent)) \ | |||||
| _PyGreenlet_API[PyGreenlet_New_NUM]) | |||||
| /* | |||||
| * PyGreenlet_GetCurrent(void) | |||||
| * | |||||
| * greenlet.getcurrent() | |||||
| */ | |||||
| #define PyGreenlet_GetCurrent \ | |||||
| (* (PyGreenlet * (*)(void)) _PyGreenlet_API[PyGreenlet_GetCurrent_NUM]) | |||||
| /* | |||||
| * PyGreenlet_Throw( | |||||
| * PyGreenlet *greenlet, | |||||
| * PyObject *typ, | |||||
| * PyObject *val, | |||||
| * PyObject *tb) | |||||
| * | |||||
| * g.throw(...) | |||||
| */ | |||||
| #define PyGreenlet_Throw \ | |||||
| (* (PyObject * (*) \ | |||||
| (PyGreenlet *self, PyObject *typ, PyObject *val, PyObject *tb)) \ | |||||
| _PyGreenlet_API[PyGreenlet_Throw_NUM]) | |||||
| /* | |||||
| * PyGreenlet_Switch(PyGreenlet *greenlet, PyObject *args) | |||||
| * | |||||
| * g.switch(*args, **kwargs) | |||||
| */ | |||||
| #define PyGreenlet_Switch \ | |||||
| (* (PyObject * (*)(PyGreenlet *greenlet, PyObject *args, PyObject *kwargs)) \ | |||||
| _PyGreenlet_API[PyGreenlet_Switch_NUM]) | |||||
| /* | |||||
| * PyGreenlet_SetParent(PyObject *greenlet, PyObject *new_parent) | |||||
| * | |||||
| * g.parent = new_parent | |||||
| */ | |||||
| #define PyGreenlet_SetParent \ | |||||
| (* (int (*)(PyGreenlet *greenlet, PyGreenlet *nparent)) \ | |||||
| _PyGreenlet_API[PyGreenlet_SetParent_NUM]) | |||||
| /* Macro that imports greenlet and initializes C API */ | |||||
| #ifdef GREENLET_USE_PYCAPSULE | |||||
| #define PyGreenlet_Import() \ | |||||
| { \ | |||||
| _PyGreenlet_API = (void**)PyCapsule_Import("greenlet._C_API", 0); \ | |||||
| } | |||||
| #else | |||||
| #define PyGreenlet_Import() \ | |||||
| { \ | |||||
| PyObject *module = PyImport_ImportModule("greenlet"); \ | |||||
| if (module != NULL) { \ | |||||
| PyObject *c_api_object = PyObject_GetAttrString( \ | |||||
| module, "_C_API"); \ | |||||
| if (c_api_object != NULL && PyCObject_Check(c_api_object)) { \ | |||||
| _PyGreenlet_API = \ | |||||
| (void **) PyCObject_AsVoidPtr(c_api_object); \ | |||||
| Py_DECREF(c_api_object); \ | |||||
| } \ | |||||
| Py_DECREF(module); \ | |||||
| } \ | |||||
| } | |||||
| #endif | |||||
| #endif /* GREENLET_MODULE */ | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| #endif /* !Py_GREENLETOBJECT_H */ | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,39 +0,0 @@ | |||||
| Copyright © 2014 by the Pallets team. | |||||
| Some rights reserved. | |||||
| Redistribution and use in source and binary forms of the software as | |||||
| well as documentation, with or without modification, are permitted | |||||
| provided that the following conditions are met: | |||||
| - Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| - 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. | |||||
| - 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 AND DOCUMENTATION 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 AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF | |||||
| SUCH DAMAGE. | |||||
| ---- | |||||
| Click uses parts of optparse written by Gregory P. Ward and maintained | |||||
| by the Python Software Foundation. This is limited to code in parser.py. | |||||
| Copyright © 2001-2006 Gregory P. Ward. All rights reserved. | |||||
| Copyright © 2002-2006 Python Software Foundation. All rights reserved. | |||||
| @@ -1,121 +0,0 @@ | |||||
| Metadata-Version: 2.1 | |||||
| Name: Click | |||||
| Version: 7.0 | |||||
| Summary: Composable command line interface toolkit | |||||
| Home-page: https://palletsprojects.com/p/click/ | |||||
| Author: Armin Ronacher | |||||
| Author-email: armin.ronacher@active-4.com | |||||
| Maintainer: Pallets Team | |||||
| Maintainer-email: contact@palletsprojects.com | |||||
| License: BSD | |||||
| Project-URL: Documentation, https://click.palletsprojects.com/ | |||||
| Project-URL: Code, https://github.com/pallets/click | |||||
| Project-URL: Issue tracker, https://github.com/pallets/click/issues | |||||
| Platform: UNKNOWN | |||||
| Classifier: Development Status :: 5 - Production/Stable | |||||
| 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 | |||||
| Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* | |||||
| \$ click\_ | |||||
| ========== | |||||
| Click is a Python package for creating beautiful command line interfaces | |||||
| in a composable way with as little code as necessary. It's the "Command | |||||
| Line Interface Creation Kit". It's highly configurable but comes with | |||||
| sensible defaults out of the box. | |||||
| It aims to make the process of writing command line tools quick and fun | |||||
| while also preventing any frustration caused by the inability to | |||||
| implement an intended CLI API. | |||||
| Click in three points: | |||||
| - Arbitrary nesting of commands | |||||
| - Automatic help page generation | |||||
| - Supports lazy loading of subcommands at runtime | |||||
| Installing | |||||
| ---------- | |||||
| Install and update using `pip`_: | |||||
| .. code-block:: text | |||||
| $ pip install click | |||||
| Click supports Python 3.4 and newer, Python 2.7, and PyPy. | |||||
| .. _pip: https://pip.pypa.io/en/stable/quickstart/ | |||||
| A Simple Example | |||||
| ---------------- | |||||
| What does it look like? Here is an example of a simple Click program: | |||||
| .. code-block:: python | |||||
| import click | |||||
| @click.command() | |||||
| @click.option("--count", default=1, help="Number of greetings.") | |||||
| @click.option("--name", prompt="Your name", | |||||
| help="The person to greet.") | |||||
| def hello(count, name): | |||||
| """Simple program that greets NAME for a total of COUNT times.""" | |||||
| for _ in range(count): | |||||
| click.echo("Hello, %s!" % name) | |||||
| if __name__ == '__main__': | |||||
| hello() | |||||
| And what it looks like when run: | |||||
| .. code-block:: text | |||||
| $ python hello.py --count=3 | |||||
| Your name: Click | |||||
| Hello, Click! | |||||
| Hello, Click! | |||||
| Hello, Click! | |||||
| Donate | |||||
| ------ | |||||
| The Pallets organization develops and supports Click and other popular | |||||
| packages. 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/click/ | |||||
| * Documentation: https://click.palletsprojects.com/ | |||||
| * License: `BSD <https://github.com/pallets/click/blob/master/LICENSE.rst>`_ | |||||
| * Releases: https://pypi.org/project/click/ | |||||
| * Code: https://github.com/pallets/click | |||||
| * Issue tracker: https://github.com/pallets/click/issues | |||||
| * Test status: | |||||
| * Linux, Mac: https://travis-ci.org/pallets/click | |||||
| * Windows: https://ci.appveyor.com/project/pallets/click | |||||
| * Test coverage: https://codecov.io/gh/pallets/click | |||||
| @@ -1,40 +0,0 @@ | |||||
| Click-7.0.dist-info/LICENSE.txt,sha256=4hIxn676T0Wcisk3_chVcECjyrivKTZsoqSNI5AlIlw,1876 | |||||
| Click-7.0.dist-info/METADATA,sha256=-r8jeke3Zer4diRvT1MjFZuiJ6yTT_qFP39svLqdaLI,3516 | |||||
| Click-7.0.dist-info/RECORD,, | |||||
| Click-7.0.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 | |||||
| Click-7.0.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 | |||||
| click/__init__.py,sha256=HjGThQ7tef9kkwCV371TBnrf0SAi6fKfU_jtEnbYTvQ,2789 | |||||
| click/_bashcomplete.py,sha256=iaNUmtxag0YPfxba3TDYCNietiTMQIrvhRLj-H8okFU,11014 | |||||
| click/_compat.py,sha256=vYmvoj4opPxo-c-2GMQQjYT_r_QkOKybkfGoeVrt0dA,23399 | |||||
| click/_termui_impl.py,sha256=xHmLtOJhKUCVD6168yucJ9fknUJPAMs0eUTPgVUO-GQ,19611 | |||||
| click/_textwrap.py,sha256=gwS4m7bdQiJnzaDG8osFcRb-5vn4t4l2qSCy-5csCEc,1198 | |||||
| click/_unicodefun.py,sha256=QHy2_5jYlX-36O-JVrTHNnHOqg8tquUR0HmQFev7Ics,4364 | |||||
| click/_winconsole.py,sha256=PPWVak8Iikm_gAPsxMrzwsVFCvHgaW3jPaDWZ1JBl3U,8965 | |||||
| click/core.py,sha256=q8FLcDZsagBGSRe5Y9Hi_FGvAeZvusNfoO5EkhkSQ8Y,75305 | |||||
| click/decorators.py,sha256=idKt6duLUUfAFftrHoREi8MJSd39XW36pUVHthdglwk,11226 | |||||
| click/exceptions.py,sha256=CNpAjBAE7qjaV4WChxQeak95e5yUOau8AsvT-8m6wss,7663 | |||||
| click/formatting.py,sha256=eh-cypTUAhpI3HD-K4ZpR3vCiURIO62xXvKkR3tNUTM,8889 | |||||
| click/globals.py,sha256=oQkou3ZQ5DgrbVM6BwIBirwiqozbjfirzsLGAlLRRdg,1514 | |||||
| click/parser.py,sha256=m-nGZz4VwprM42_qtFlWFGo7yRJQxkBlRcZodoH593Y,15510 | |||||
| click/termui.py,sha256=o_ZXB2jyvL2Rce7P_bFGq452iyBq9ykJyRApIPMCZO0,23207 | |||||
| click/testing.py,sha256=aYGqY_iWLu2p4k7lkuJ6t3fqpf6aPGqTsyLzNY_ngKg,13062 | |||||
| click/types.py,sha256=2Q929p-aBP_ZYuMFJqJR-Ipucofv3fmDc5JzBDPmzJU,23287 | |||||
| click/utils.py,sha256=6-D0WkAxvv9FkgHXSHwDIv0l9Gdx9Mm6Z5vuKNLIfZI,15763 | |||||
| Click-7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| click/__pycache__/parser.cpython-36.pyc,, | |||||
| click/__pycache__/exceptions.cpython-36.pyc,, | |||||
| click/__pycache__/formatting.cpython-36.pyc,, | |||||
| click/__pycache__/testing.cpython-36.pyc,, | |||||
| click/__pycache__/types.cpython-36.pyc,, | |||||
| click/__pycache__/_bashcomplete.cpython-36.pyc,, | |||||
| click/__pycache__/_compat.cpython-36.pyc,, | |||||
| click/__pycache__/_winconsole.cpython-36.pyc,, | |||||
| click/__pycache__/_unicodefun.cpython-36.pyc,, | |||||
| click/__pycache__/utils.cpython-36.pyc,, | |||||
| click/__pycache__/_textwrap.cpython-36.pyc,, | |||||
| click/__pycache__/core.cpython-36.pyc,, | |||||
| click/__pycache__/termui.cpython-36.pyc,, | |||||
| click/__pycache__/__init__.cpython-36.pyc,, | |||||
| click/__pycache__/globals.cpython-36.pyc,, | |||||
| click/__pycache__/decorators.cpython-36.pyc,, | |||||
| click/__pycache__/_termui_impl.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.31.1) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1 +0,0 @@ | |||||
| click | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,28 +0,0 @@ | |||||
| 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. | |||||
| @@ -1,134 +0,0 @@ | |||||
| Metadata-Version: 2.1 | |||||
| Name: Flask | |||||
| Version: 1.1.1 | |||||
| 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: 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/ | |||||
| @@ -1,48 +0,0 @@ | |||||
| flask/__init__.py,sha256=qaBW4gy9Xxmdc3ygYO0_H214H1VpF7fq8xRR4XbqRjE,1894 | |||||
| flask/__main__.py,sha256=fjVtt3QTANXlpJCOv3Ha7d5H-76MwzSIOab7SFD9TEk,254 | |||||
| flask/_compat.py,sha256=8KPT54Iig96TuLipdogLRHNYToIcg-xPhnSV5VRERnw,4099 | |||||
| flask/app.py,sha256=gLZInxueeQ9dkBo1wrntZ-bZqiDT4rYxy_AQ1xraFDc,98066 | |||||
| flask/blueprints.py,sha256=vkdm8NusGsfZUeIfPdCluj733QFmiQcT4Sk1tuZLUjw,21400 | |||||
| flask/cli.py,sha256=_WhPG1bggNdrP0QO95Vex6VJpDqTsVK0z54Y5poljKU,30933 | |||||
| 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=x2Pa85R5dV6uA5f5423JTb6x4u6ZaMGf8sfosUZ76dQ,43004 | |||||
| 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=b0QaEejx0UcXqfSFP43k5W57bTVeDyrNK3uPD8JUpCk,10146 | |||||
| flask/views.py,sha256=eeWnadLAj0QdQPLtjKipDetRZyG62CT2y7fNOFDJz0g,5802 | |||||
| flask/wrappers.py,sha256=kgsvtZuMM6RQaDqhRbc5Pcj9vqTnaERl2pmXcdGL7LU,4736 | |||||
| flask/json/__init__.py,sha256=6nITbZYiYOPB8Qfi1-dvsblwn01KRz8VOsMBIZyaYek,11988 | |||||
| flask/json/tag.py,sha256=vq9GOllg_0kTWKuVFrwmkeOQzR-jdBD23x-89JyCCQI,8306 | |||||
| Flask-1.1.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 | |||||
| Flask-1.1.1.dist-info/METADATA,sha256=Ht4R6TpTKOaXOmmQHhEF3A0Obpzde2Ai0kzNdu6-VWQ,4400 | |||||
| Flask-1.1.1.dist-info/WHEEL,sha256=h_aVn5OB2IERUjMbi2pucmR_zzWJtk303YXvhh60NJ8,110 | |||||
| Flask-1.1.1.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42 | |||||
| Flask-1.1.1.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 | |||||
| Flask-1.1.1.dist-info/RECORD,, | |||||
| ../../../bin/flask,sha256=-cLOd7vTAhTID_opTyZhKLiDYYDhP22ZZi5nO-mvSGg,241 | |||||
| Flask-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| flask/__pycache__/blueprints.cpython-36.pyc,, | |||||
| flask/__pycache__/logging.cpython-36.pyc,, | |||||
| flask/__pycache__/sessions.cpython-36.pyc,, | |||||
| flask/__pycache__/templating.cpython-36.pyc,, | |||||
| flask/__pycache__/cli.cpython-36.pyc,, | |||||
| flask/__pycache__/config.cpython-36.pyc,, | |||||
| flask/__pycache__/signals.cpython-36.pyc,, | |||||
| flask/__pycache__/testing.cpython-36.pyc,, | |||||
| flask/__pycache__/views.cpython-36.pyc,, | |||||
| flask/__pycache__/ctx.cpython-36.pyc,, | |||||
| flask/__pycache__/app.cpython-36.pyc,, | |||||
| flask/__pycache__/__main__.cpython-36.pyc,, | |||||
| flask/__pycache__/_compat.cpython-36.pyc,, | |||||
| flask/__pycache__/helpers.cpython-36.pyc,, | |||||
| flask/__pycache__/wrappers.cpython-36.pyc,, | |||||
| flask/__pycache__/__init__.cpython-36.pyc,, | |||||
| flask/__pycache__/debughelpers.cpython-36.pyc,, | |||||
| flask/__pycache__/globals.cpython-36.pyc,, | |||||
| flask/json/__pycache__/tag.cpython-36.pyc,, | |||||
| flask/json/__pycache__/__init__.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.33.4) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1,3 +0,0 @@ | |||||
| [console_scripts] | |||||
| flask = flask.cli:main | |||||
| @@ -1 +0,0 @@ | |||||
| flask | |||||
| @@ -1,27 +0,0 @@ | |||||
| Metadata-Version: 1.1 | |||||
| Name: Flask-Classy | |||||
| Version: 0.6.10 | |||||
| Summary: Class based views for Flask | |||||
| Home-page: https://github.com/apiguy/flask-classy | |||||
| Author: Freedom Dumlao | |||||
| Author-email: freedomdumlao@gmail.com | |||||
| License: BSD | |||||
| Description: | |||||
| Flask-Classy | |||||
| ------------- | |||||
| Class based views for Flask | |||||
| Platform: any | |||||
| 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.6 | |||||
| Classifier: Programming Language :: Python :: 2.7 | |||||
| Classifier: Programming Language :: Python :: 3 | |||||
| Classifier: Programming Language :: Python :: 3.3 | |||||
| Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content | |||||
| Classifier: Topic :: Software Development :: Libraries :: Python Modules | |||||
| @@ -1,10 +0,0 @@ | |||||
| README.rst | |||||
| flask_classy.py | |||||
| setup.cfg | |||||
| setup.py | |||||
| Flask_Classy.egg-info/PKG-INFO | |||||
| Flask_Classy.egg-info/SOURCES.txt | |||||
| Flask_Classy.egg-info/dependency_links.txt | |||||
| Flask_Classy.egg-info/not-zip-safe | |||||
| Flask_Classy.egg-info/requires.txt | |||||
| Flask_Classy.egg-info/top_level.txt | |||||
| @@ -1 +0,0 @@ | |||||
| @@ -1,8 +0,0 @@ | |||||
| ../__pycache__/flask_classy.cpython-36.pyc | |||||
| ../flask_classy.py | |||||
| PKG-INFO | |||||
| SOURCES.txt | |||||
| dependency_links.txt | |||||
| not-zip-safe | |||||
| requires.txt | |||||
| top_level.txt | |||||
| @@ -1 +0,0 @@ | |||||
| @@ -1 +0,0 @@ | |||||
| Flask>=0.9 | |||||
| @@ -1 +0,0 @@ | |||||
| flask_classy | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,20 +0,0 @@ | |||||
| The MIT License (MIT) | |||||
| Copyright (c) 2014 Miguel Grinberg | |||||
| 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. | |||||
| @@ -1,28 +0,0 @@ | |||||
| Metadata-Version: 2.1 | |||||
| Name: Flask-SocketIO | |||||
| Version: 4.2.1 | |||||
| Summary: Socket.IO integration for Flask applications | |||||
| Home-page: http://github.com/miguelgrinberg/Flask-SocketIO/ | |||||
| Author: Miguel Grinberg | |||||
| Author-email: miguelgrinberg50@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 :: 3 | |||||
| Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content | |||||
| Classifier: Topic :: Software Development :: Libraries :: Python Modules | |||||
| Requires-Dist: Flask (>=0.9) | |||||
| Requires-Dist: python-socketio (>=4.3.0) | |||||
| Flask-SocketIO | |||||
| -------------- | |||||
| Socket.IO integration for Flask applications. | |||||
| @@ -1,14 +0,0 @@ | |||||
| flask_socketio/__init__.py,sha256=aburhZcXf3Ubm5HWqg7nWOFNDCV4yXLsfHHo2u0iDfM,44245 | |||||
| flask_socketio/cli.py,sha256=4ymPf4kmrmiFgr60Wt0ZDDm2QWPnrHtkx7xcHjo_Irg,2916 | |||||
| flask_socketio/namespace.py,sha256=kXy10sQFl3nbQr2CWgxM9IxzcHzKTWTPLDYl3vzPLLQ,2020 | |||||
| flask_socketio/test_client.py,sha256=t7cDFgkb2hVaKbbBZm2Vnzz8OEwNtyeXds7NUKxUIzM,9695 | |||||
| Flask_SocketIO-4.2.1.dist-info/LICENSE,sha256=aNCWbkgKjS_T1cJtACyZbvCM36KxWnfQ0LWTuavuYKQ,1082 | |||||
| Flask_SocketIO-4.2.1.dist-info/METADATA,sha256=L-PmXGiiDVZHu80GBY0KoXMP06EDnspJEJEadfpXP4w,873 | |||||
| Flask_SocketIO-4.2.1.dist-info/WHEEL,sha256=h_aVn5OB2IERUjMbi2pucmR_zzWJtk303YXvhh60NJ8,110 | |||||
| Flask_SocketIO-4.2.1.dist-info/top_level.txt,sha256=C1ugzQBJ3HHUJsWGzyt70XRVOX-y4CUAR8MWKjwJOQ8,15 | |||||
| Flask_SocketIO-4.2.1.dist-info/RECORD,, | |||||
| Flask_SocketIO-4.2.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| flask_socketio/__pycache__/cli.cpython-36.pyc,, | |||||
| flask_socketio/__pycache__/namespace.cpython-36.pyc,, | |||||
| flask_socketio/__pycache__/__init__.cpython-36.pyc,, | |||||
| flask_socketio/__pycache__/test_client.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.33.4) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1 +0,0 @@ | |||||
| flask_socketio | |||||
| @@ -1,38 +0,0 @@ | |||||
| GitPython was originally written by Michael Trier. | |||||
| GitPython 0.2 was partially (re)written by Sebastian Thiel, based on 0.1.6 and git-dulwich. | |||||
| Contributors are: | |||||
| -Michael Trier <mtrier _at_ gmail.com> | |||||
| -Alan Briolat | |||||
| -Florian Apolloner <florian _at_ apolloner.eu> | |||||
| -David Aguilar <davvid _at_ gmail.com> | |||||
| -Jelmer Vernooij <jelmer _at_ samba.org> | |||||
| -Steve Frécinaux <code _at_ istique.net> | |||||
| -Kai Lautaportti <kai _at_ lautaportti.fi> | |||||
| -Paul Sowden <paul _at_ idontsmoke.co.uk> | |||||
| -Sebastian Thiel <byronimo _at_ gmail.com> | |||||
| -Jonathan Chu <jonathan.chu _at_ me.com> | |||||
| -Vincent Driessen <me _at_ nvie.com> | |||||
| -Phil Elson <pelson _dot_ pub _at_ gmail.com> | |||||
| -Bernard `Guyzmo` Pratz <guyzmo+gitpython+pub@m0g.net> | |||||
| -Timothy B. Hartman <tbhartman _at_ gmail.com> | |||||
| -Konstantin Popov <konstantin.popov.89 _at_ yandex.ru> | |||||
| -Peter Jones <pjones _at_ redhat.com> | |||||
| -Anson Mansfield <anson.mansfield _at_ gmail.com> | |||||
| -Ken Odegard <ken.odegard _at_ gmail.com> | |||||
| -Alexis Horgix Chotard | |||||
| -Piotr Babij <piotr.babij _at_ gmail.com> | |||||
| -Mikuláš Poul <mikulaspoul _at_ gmail.com> | |||||
| -Charles Bouchard-Légaré <cblegare.atl _at_ ntis.ca> | |||||
| -Yaroslav Halchenko <debian _at_ onerussian.com> | |||||
| -Tim Swast <swast _at_ google.com> | |||||
| -William Luc Ritchie | |||||
| -David Host <hostdm _at_ outlook.com> | |||||
| -A. Jesse Jiryu Davis <jesse _at_ emptysquare.net> | |||||
| -Steven Whitman <ninloot _at_ gmail.com> | |||||
| -Stefan Stancu <stefan.stancu _at_ gmail.com> | |||||
| -César Izurieta <cesar _at_ caih.org> | |||||
| -Arthur Milchior <arthur _at_ milchior.fr> | |||||
| Portions derived from other open source works and are clearly marked. | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,30 +0,0 @@ | |||||
| Copyright (C) 2008, 2009 Michael Trier and contributors | |||||
| All rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions | |||||
| are met: | |||||
| * Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| * 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. | |||||
| * Neither the name of the GitPython project 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 | |||||
| OWNER 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. | |||||
| @@ -1,30 +0,0 @@ | |||||
| Metadata-Version: 2.1 | |||||
| Name: GitPython | |||||
| Version: 3.0.1 | |||||
| Summary: Python Git Library | |||||
| Home-page: https://github.com/gitpython-developers/GitPython | |||||
| Author: Sebastian Thiel, Michael Trier | |||||
| Author-email: byronimo@gmail.com, mtrier@gmail.com | |||||
| License: BSD License | |||||
| Platform: UNKNOWN | |||||
| Classifier: Development Status :: 5 - Production/Stable | |||||
| Classifier: Environment :: Console | |||||
| Classifier: Intended Audience :: Developers | |||||
| Classifier: License :: OSI Approved :: BSD License | |||||
| Classifier: Operating System :: OS Independent | |||||
| Classifier: Operating System :: POSIX | |||||
| Classifier: Operating System :: Microsoft :: Windows | |||||
| Classifier: Operating System :: MacOS :: MacOS X | |||||
| Classifier: Programming Language :: Python | |||||
| 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 | |||||
| Requires-Python: >=3.0, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* | |||||
| Requires-Dist: gitdb2 (>=2.0.0) | |||||
| Requires-Dist: ddt (>=1.1.1) | |||||
| GitPython is a python library used to interact with Git repositories | |||||
| @@ -1,205 +0,0 @@ | |||||
| git/__init__.py,sha256=IlCyl1whk7laDXftgI_2KSrBpWcb22ceo1XDTW70sM4,2334 | |||||
| git/cmd.py,sha256=LMQPoBNZyOioob082qOySDtEGJxQF1SdV9eHMQ-KWAQ,42624 | |||||
| git/compat.py,sha256=DF_FNA4u3PFpcKbvw9aG9TTA0gcyrgBPcKKi64-bIWc,9478 | |||||
| git/config.py,sha256=EEtOissM9JvGGTK9dlb0Lq6MJ7TBAdQgSjr6xS9rI9c,27011 | |||||
| git/db.py,sha256=pgC0B4wCqRN7xrvLuMQhLwM252ilkZyFL6qq0cPA2j4,1980 | |||||
| git/diff.py,sha256=n-NVLLUSWSOvznnA6BqwCly1k9tqn5MPCuoDIPgCYMg,18661 | |||||
| git/exc.py,sha256=U01S3wgpn9gGfGG8fIvL6p127Uu2LI_Ho7Jcc24xOYI,4878 | |||||
| git/remote.py,sha256=MfJvyq3WQkLiIkDSk6JivGUPDW23YTBiaN9JMAnNkoE,35689 | |||||
| git/util.py,sha256=bDO_vxWSwjnr7eedM9906xSxIlOb7UbQ2b1TjR_KMgs,32300 | |||||
| git/index/__init__.py,sha256=Wj5zgJggZkEXueEDXdijxXahzxhextC08k70n0lHRN0,129 | |||||
| git/index/base.py,sha256=ACRqf_rarJULDQwl5G8QWCbMv4JmT0E9Dg_uVfaLQdo,52048 | |||||
| git/index/fun.py,sha256=ZptIr1Wr7Zh1RlI1LliRxxGaxxwLsLHd94GSpk9ClGw,14312 | |||||
| git/index/typ.py,sha256=GLBZbDS3yScHJs0U18CX-heLTDjjGu6fN7T2L_NQr4A,4976 | |||||
| git/index/util.py,sha256=l6oh9_1KU1v5GQdpxqCOqs6WLt5xN1uWvkVHQqcCToA,2902 | |||||
| git/objects/__init__.py,sha256=6C02LlMygiFwTYtncz3GxEQfzHZr2WvUId0fnJ8HfLo,683 | |||||
| git/objects/base.py,sha256=UZiyzyzx4_OJ3bWnwqb3mqh0LXT7oo0biYaTm-sLuAw,6689 | |||||
| git/objects/blob.py,sha256=evI3ptPmlln6gLpoQRvbIKjK4v59nT8ipd1vk1dGYtc,927 | |||||
| git/objects/commit.py,sha256=9Q5BupWXf5mkvoF5v8xrK4Z-3mFsksoII-SL7fT4iNI,20743 | |||||
| git/objects/fun.py,sha256=kEUFE2Q5kXeoxbjALRNl_jzRP_m9KKqQyxIcW-h6XGM,7415 | |||||
| git/objects/tag.py,sha256=mDkbxAiyZJBf8LR8uwzXroufj0TWZPEO4z_V6lasO-E,3201 | |||||
| git/objects/tree.py,sha256=Ta1qAkuwzn7lk54_d7knqF2WL6DOc2MQG1k8mKLel1s,11069 | |||||
| git/objects/util.py,sha256=GRIAWLR1gaK2QE3s5TtmNmN_LqOjEBlUkZWiouJMVe8,12355 | |||||
| git/objects/submodule/__init__.py,sha256=OsMeiex7cG6ev2f35IaJ5csH-eXchSoNKCt4HXUG5Ws,93 | |||||
| git/objects/submodule/base.py,sha256=MH_U61iMnPTIlc9c9ZowRy59VTE_XWT5FWSOqGtXH50,53899 | |||||
| git/objects/submodule/root.py,sha256=N2i0PjRcw5bNLLIDAkviQjXhf9RvGSfVnbav4FNzkXo,17656 | |||||
| git/objects/submodule/util.py,sha256=VdgIG-cBo47b_7JcolAvjWaIMU0X5oImLjJ4wluc_iw,2745 | |||||
| git/refs/__init__.py,sha256=3CRfAyE-Z78rJ3kSdKR1PNiXHEjHLw2VkU2JyDviNDU,242 | |||||
| git/refs/head.py,sha256=MbO65f5SU0X3DvzmHpU0dY4h4SyvwqNaW2d8bUu3YSc,8724 | |||||
| git/refs/log.py,sha256=_4JC--cqZc49Gm0ZLkE66ePsaxwP4TagiCQi53_xI88,10881 | |||||
| git/refs/reference.py,sha256=OcQMwHJuelR1yKe1EF0IBfxeQZYv2kf0xunNSVwZV-M,4408 | |||||
| git/refs/remote.py,sha256=6JOyIurnomM3tNXdKRXfMK_V75gJNgr9_2sdevKU_tI,1670 | |||||
| git/refs/symbolic.py,sha256=2YA20sTqEP5IOqZi7TR9AxIBHrwAPRnR62wm9q8k5ko,26858 | |||||
| git/refs/tag.py,sha256=qoHwJ9suHx8u8NNg-6GvNftK36RnCNkpElRjh2r9wcI,2964 | |||||
| git/repo/__init__.py,sha256=ssUH4IVCoua5shI5h1l46P0X1kp82ydxVcH3PIVCnzg,108 | |||||
| git/repo/base.py,sha256=l-nfQEbQl1rlNQ56dfV4u8jnUJkBxe0ccYOZ7mNsTtc,44229 | |||||
| git/repo/fun.py,sha256=SuguBZs4sZE_SvAcfvn7yxXdoxKmgQdwUhgKAkeyISQ,11396 | |||||
| git/test/__init__.py,sha256=q-WCITGqFKTHnRFjUvJz5hUJBi8SP4InaAZRXZ8qj8k,220 | |||||
| git/test/test_actor.py,sha256=1bYmrTwWAYT_Qj9l9chbvuI8nNtHY6yGlDRJDDEq9A0,1242 | |||||
| git/test/test_base.py,sha256=k6I5nG7ZeBCYpXwi3HX_mvURFelgvQFys5pWVQR6kjw,5649 | |||||
| git/test/test_blob.py,sha256=Bs4FWke9Sjzx06EJuG9hh1T5qBgJEEz4aBCcr3cW9L0,878 | |||||
| git/test/test_commit.py,sha256=IhFvgXZ05tT0MTdheIHjNCHjVXpWytORBdcgaunJ2HY,15460 | |||||
| git/test/test_config.py,sha256=FDJi5_OEoVT_G9LbPh-xglCqtC0HdK1ZE7dKnfF3M9k,16604 | |||||
| git/test/test_db.py,sha256=e9UNddyQfoa-kzZo-XyrwVuYiq887NUkYrK8wZkTu9M,939 | |||||
| git/test/test_diff.py,sha256=D6JROrJiEmpvju_WZxkiO64ryU4yfA4viUdMN_3eBcg,12598 | |||||
| git/test/test_docs.py,sha256=HZC6I1W4yF8YAGveIurEiTsWinDtnDP8lnwwIjLoKZw,25357 | |||||
| git/test/test_exc.py,sha256=0DBYNiYVfPVlFKYRzqsoZUJnf0lQiUDmdrRIIHWeSlE,5123 | |||||
| git/test/test_fun.py,sha256=a91XgGk-YPwlgJEc-gy2tI_ilSq29XSQEywwc-kDnG0,10456 | |||||
| git/test/test_git.py,sha256=QiBmUVH1aro-GB_fIKoTFNB6t2Omdbdaut5W6AQ6U4g,11162 | |||||
| git/test/test_index.py,sha256=WiHPJNgD5Y00YKJoklTZkPJH0LE-0XEOTrA_2O9rsRs,37014 | |||||
| git/test/test_reflog.py,sha256=vfI-NQCtnGlJEUtYR0_k7Y1Hc4pZQ5F_T4T49hxSnNU,3505 | |||||
| git/test/test_refs.py,sha256=2rNm9HdJZTWXx775JHG_R9Pd5X022IQ9C2CbP_9vDoE,23357 | |||||
| git/test/test_remote.py,sha256=kVvdzfI2eQj-_9JUYY-s5Hak-S4_mu0y5bkOn8JNCs8,26706 | |||||
| git/test/test_repo.py,sha256=pI82U2tAfAdOe7tLgJnu08lR1vM2ehkmBMdXO8jMiks,39594 | |||||
| git/test/test_stats.py,sha256=qmF2lL1wW0tEd17E-tkjmpPFVXzjREf7KW5JMCTQ4Zg,971 | |||||
| git/test/test_submodule.py,sha256=yyMisD-6UH0Im4sAKGgG1XTNMIBTbs5bRAz-3iZivOw,41981 | |||||
| git/test/test_tree.py,sha256=nR5OAQZLhv7kISoL3RO8ppkXAbKFYz3XlPAxABU1b4o,4046 | |||||
| git/test/test_util.py,sha256=gYdPEwowPzEdES7JPgCozIAac2PU-Fa8N3cf97ir__k,9092 | |||||
| git/test/fixtures/blame,sha256=4EDRSXdgbRtxHU_2lASFXC7eNShL2cVq3IU43tLWlD4,3663 | |||||
| git/test/fixtures/blame_binary,sha256=YLzoHqTAuv2Uv8IILh4ndQxJ_A1c09176E-3d5FMQsM,14807 | |||||
| git/test/fixtures/blame_complex_revision,sha256=tPguLsqmLxjuZWg5nRcdZCZeaBi-LOeVQEHfTX6X_B0,7645 | |||||
| git/test/fixtures/blame_incremental,sha256=3VXtrk8LVqfS5f2vsP5DTzFU3opeevUbENQUq22vTdw,982 | |||||
| git/test/fixtures/blame_incremental_2.11.1_plus,sha256=JDA_xCevOrOMDeKW-U8svYeA0E8Pa3sI7G8GALpxOHw,1154 | |||||
| git/test/fixtures/cat_file.py,sha256=7RDIymGyByw8I1OibenXM-DVsZ0_7gpazeYYG4C5GDM,136 | |||||
| git/test/fixtures/cat_file_blob,sha256=ZOyIygCyaOW6GjVnihtTFtIS9PNmskdyMlNKiuyjfzw,11 | |||||
| git/test/fixtures/cat_file_blob_nl,sha256=GJShnIW6FTrL90OsTkP8AEyJFgSyb4xp4eg-oq_HxI8,12 | |||||
| git/test/fixtures/cat_file_blob_size,sha256=JdTyqG3rXiV0uzIQtnuyT8xK-xn5OntloFfaqHSp0Y4,3 | |||||
| git/test/fixtures/commit_invalid_data,sha256=QlV-Pw5mw1Vhp6qivAQY5kcBP_BMJ_OIdLCinmes5Sw,242 | |||||
| git/test/fixtures/commit_with_gpgsig,sha256=3in_tJPkQv2K1wFx-PGqaCZQe40liMnl9cMYOJ8krTA,1387 | |||||
| git/test/fixtures/diff_2,sha256=sxE-xkV5lQrUEbpllp2X_AcFfPUmUr2wvSsc9qkZQLc,1994 | |||||
| git/test/fixtures/diff_2f,sha256=na11T8R1dhJUOKeO-fEeHymOxhXNrjvzzmA_r7x6oJM,732 | |||||
| git/test/fixtures/diff_abbrev-40_full-index_M_raw_no-color,sha256=AW-YEfutyH_RVyaP2nCTPhtjvkfqWi7NVL4s9Ab3Qww,109 | |||||
| git/test/fixtures/diff_change_in_type,sha256=Wo1iCaT1YBfGn5ZSJ40H7iVeqXKm-v-qJnsBUBKrpsI,319 | |||||
| git/test/fixtures/diff_change_in_type_raw,sha256=67KYtwIlQdTSwesABnIYTZxFgiwPhVyBXaDFoPXRFt4,108 | |||||
| git/test/fixtures/diff_f,sha256=sNsG26bYvqU4pK_RwahaO-Lya8O9Xonwlyth8do_ptY,504 | |||||
| git/test/fixtures/diff_file_with_spaces,sha256=BOvQkq4AjQ_cR1e0iLYDQdNq2BLa-P5xhI4Xal7hYcE,216 | |||||
| git/test/fixtures/diff_i,sha256=792rEQvP9Q-MNxZ3_FsvhG5emE_q1nT9jpmQ_A1hFWE,5705 | |||||
| git/test/fixtures/diff_index_patch,sha256=qd9jD_eAQY5I9OLsbqdz3-lm_ncL2ALJhVLyj3enAfk,4598 | |||||
| git/test/fixtures/diff_index_raw,sha256=odNXPZQ4rlBnqYfJvvTKGS8QvfJE33WN_X-lIRMT8NI,101 | |||||
| git/test/fixtures/diff_initial,sha256=1RJTg7QSTdMGlqLDvjFUhKtV0bAV2NFW8rHBgzlVfyg,76 | |||||
| git/test/fixtures/diff_mode_only,sha256=pqDOHBLm09TWZ0orff-S7pCkQktD2sooW5mURG0vqLQ,46005 | |||||
| git/test/fixtures/diff_new_mode,sha256=b70EDNoC_gfq_P_fVFCIqT3WHU_P0l-1jhuR2cSEJFg,546 | |||||
| git/test/fixtures/diff_numstat,sha256=_Ls171vvsERXlRiJ1i1tA5vHyoYCzt3hKorFmic7UyE,22 | |||||
| git/test/fixtures/diff_p,sha256=3YlhR3UNFIPDv90Zn1vCXC46kQCVDuepUZIzwzD8xmk,19273 | |||||
| git/test/fixtures/diff_patch_binary,sha256=CLWigD0x0z3n_fpdh8LlkEyRUy7oDiWM-CJpGrqWPiM,155 | |||||
| git/test/fixtures/diff_patch_unsafe_paths,sha256=jsc2GM8j56puEDnMEhlBHG4jIhziN0uY8cuzGTTtHmw,3145 | |||||
| git/test/fixtures/diff_raw_binary,sha256=-PUPqf5wop8KkmubHnPK6RAVinlJuQf9Lqo4VBff23I,103 | |||||
| git/test/fixtures/diff_rename,sha256=-f4kqw0Zt1lRZZOmt5I0w9Jenbr3PngyTH2QeUQfv8g,415 | |||||
| git/test/fixtures/diff_rename_raw,sha256=VVBUjGEoXWWMYQFq-dyE708DijCnG974Qn79plVT39Q,112 | |||||
| git/test/fixtures/diff_tree_numstat_root,sha256=NbBofQm3wGm-1hyz8XKIoxMtC_bzz4x8TlxxuF8LLDU,63 | |||||
| git/test/fixtures/for_each_ref_with_path_component,sha256=hHVSiVHNEW5PKSPP4zFxxpYs4EYlPSJ9y-yykzkpWjk,84 | |||||
| git/test/fixtures/git_config,sha256=_Igi3In2TsksvwUdn7YcusMv-069ftMdlV1G7ZCs8nU,1517 | |||||
| git/test/fixtures/git_config-inc.cfg,sha256=jYjjNgfYBBkEAXYj5wLy7en-ISXbvVyOOfOmKsURYdc,92 | |||||
| git/test/fixtures/git_config_global,sha256=_tFDHYTW1Hxue2WXqjafVm_b9eM-OjTV6WTD2yZ3aqM,366 | |||||
| git/test/fixtures/git_config_multiple,sha256=xhyn_df95CrbWfA_YWV_Y1eR9bpbc-xZxWAnzCJTUU4,121 | |||||
| git/test/fixtures/git_config_with_comments,sha256=Q9IHrB4KE3l15iXoYD9-4TIMyd_rFczQ1CPAu-CI8bU,3997 | |||||
| git/test/fixtures/git_config_with_empty_value,sha256=686iisjxnex4YeT4qWdjsQh22X8UDw5yzKSerefFSTM,35 | |||||
| git/test/fixtures/git_file,sha256=44Qr9_8TluxWGPiPjDT4dEyF8x3fvnA9W7moDNiFAKo,16 | |||||
| git/test/fixtures/index,sha256=OBeM4XodizcBFgK_7S92fdjNTaitNxGzSBkcHXXWQvs,163616 | |||||
| git/test/fixtures/index_merge,sha256=IdtRRV85gi9dGFC4LNuGrZU2yttGAAANeS0_qvNO85w,9192 | |||||
| git/test/fixtures/issue-301_stderr,sha256=z6QL_UgCKQ1MMviNQNdhM22hOgp00zfJyc5LCm7Jl64,302879 | |||||
| git/test/fixtures/ls_tree_a,sha256=uBvIY8-7HnaBvSsVYigYJdsbeslxrtfeXh-tWXKtOnc,429 | |||||
| git/test/fixtures/ls_tree_b,sha256=pW3aIRcXMA1ZSE36049fJWeiVQl95qk_31U8Eh3Tc1c,119 | |||||
| git/test/fixtures/ls_tree_commit,sha256=cOgzX5Qcqvy4LU4dIBkcc63ccrOPBLab5DsCQPVpz_E,173 | |||||
| git/test/fixtures/ls_tree_empty,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 | |||||
| git/test/fixtures/reflog_HEAD,sha256=8J5zwsJRmdb8xdWyQoRUzJYJnDSaeo0rLa5uthBovyQ,114210 | |||||
| git/test/fixtures/reflog_invalid_date,sha256=VlAYk2kGs3CySphJV0OmWwpWZK_uB9FxICTICZuKwSM,409 | |||||
| git/test/fixtures/reflog_invalid_email,sha256=1OoNdoGKNcNKWVQAv5ZKSgVEt0zSkigvHOTs3MMhVW0,411 | |||||
| git/test/fixtures/reflog_invalid_newsha,sha256=i-xph-C12dZT-dEKWS4VTDtX4AzQVUcCF3KXfMp9Gu0,404 | |||||
| git/test/fixtures/reflog_invalid_oldsha,sha256=guzXH-wQOfz3yQJFMChzhuXcgQ6G6rGTSwlIdBVX8Wg,398 | |||||
| git/test/fixtures/reflog_invalid_sep,sha256=0D9WHWpIGE2tQXD8utDcq-bbxdgVnWWCAMK_vwI3-zA,415 | |||||
| git/test/fixtures/reflog_master,sha256=K1-VX1oQ3gM_23qTjVV-8yQOXeXuRtePgUXAE6D1TVo,31286 | |||||
| git/test/fixtures/rev_list,sha256=pJPFZuJGwLzQ6m4P2d7VNaRLdMefGxxtztgU9fQfCCU,123 | |||||
| git/test/fixtures/rev_list_bisect_all,sha256=r0gnyZwq-IVHxNss4qE6zMv29PEcLyE0t_fV4MKISHc,2172 | |||||
| git/test/fixtures/rev_list_commit_diffs,sha256=n8qhU8FHEqr7Z8z8PvRGEODveuPbFIuaXB8UYGTqTPc,306 | |||||
| git/test/fixtures/rev_list_commit_idabbrev,sha256=W_cHcxor5sFGeS8-nmIpWNim-wtFY7636Hwh04Sfve8,271 | |||||
| git/test/fixtures/rev_list_commit_stats,sha256=1bZgYDN3iqjdIiZtYUuPNZXcyJYlDiusy3dw5utnr3M,244 | |||||
| git/test/fixtures/rev_list_count,sha256=wyBmlaA46bFntXaF6nx28phdDPwTZVW5kJr71pRrmb0,26855 | |||||
| git/test/fixtures/rev_list_delta_a,sha256=ikrcoYkO311vbCS_xoeyKE6myYKlKP5by88KU4oG6qI,328 | |||||
| git/test/fixtures/rev_list_delta_b,sha256=iiTGJRF2nzZrsHLXB1oOcZaoLvnSGAB3B9PLt5acmno,451 | |||||
| git/test/fixtures/rev_list_single,sha256=YqAJowQ_ujS8kUnNfBlm8ibKY7ki5vu2nXc_vt-4nq0,293 | |||||
| git/test/fixtures/rev_parse,sha256=y9iM5H6QPxDLEoGO9D4qSMBuDw4nz196c5VMflC1rak,8 | |||||
| git/test/fixtures/show_empty_commit,sha256=xeKoNCOFUPZcSztV3olKSs6u14fVdHwjnkGYLsEcZn8,252 | |||||
| git/test/fixtures/uncommon_branch_prefix_FETCH_HEAD,sha256=NO36DB4HWl4sOisR6EdFroTDakA-4XOx2kk4lFQIsiQ,603 | |||||
| git/test/fixtures/uncommon_branch_prefix_stderr,sha256=4-rJlXvPu-1ByjZzsUUJXFruPRxan7C5ssNtM7qZbeo,324 | |||||
| git/test/lib/__init__.py,sha256=k2xMRT9FC0m3yX_iMKaDcyuuZe0tGSr95ork3VOaeWk,414 | |||||
| git/test/lib/asserts.py,sha256=_9sOUHopeO-3PZOkxMXfTWaTxxPaWwmpnAVaDxpcaWk,2273 | |||||
| git/test/lib/helper.py,sha256=TI69pdx0xIMhfzOzBDB3BwqPvPsykp9bUXiyw2B0Xd8,13592 | |||||
| git/test/performance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 | |||||
| git/test/performance/lib.py,sha256=qSicSiyRI30rP3EFeVoevC_sBDgXDFtZKIFr_Ikz84g,2427 | |||||
| git/test/performance/test_commit.py,sha256=ws8ORcvg3h0eXkI2G7a4OEl5QFG-9s2Agf0ut_8sUqU,3732 | |||||
| git/test/performance/test_odb.py,sha256=knbDhq2sRagwyGHKQ7uNZLWN8bzYt_VF6bNucoON6dI,2651 | |||||
| git/test/performance/test_streams.py,sha256=w5mqPX6Yjo-j3mAz9GGa0O_pzYCBgGhhdoKCAz-iMD0,5850 | |||||
| GitPython-3.0.1.dist-info/AUTHORS,sha256=03VRYpqdYOsIlgdOybv95yCNoISZ512MXZqdz2TeAio,1523 | |||||
| GitPython-3.0.1.dist-info/LICENSE,sha256=_WV__CzvY9JceMq3gI1BTdA6KC5jiTSR_RHDL5i-Z_s,1521 | |||||
| GitPython-3.0.1.dist-info/METADATA,sha256=8fNgCOWWxPpu5L_dQKqX2rHeifR5tDoc3cg_NCoyDMo,1127 | |||||
| GitPython-3.0.1.dist-info/WHEEL,sha256=S8S5VL-stOTSZDYxHyf0KP7eds0J72qrK0Evu3TfyAY,92 | |||||
| GitPython-3.0.1.dist-info/top_level.txt,sha256=0hzDuIp8obv624V3GmbqsagBWkk8ohtGU-Bc1PmTT0o,4 | |||||
| GitPython-3.0.1.dist-info/RECORD,, | |||||
| GitPython-3.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| git/test/__pycache__/test_commit.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_repo.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_exc.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_docs.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_fun.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_refs.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_stats.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_base.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_git.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_config.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_diff.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_db.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_blob.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_remote.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_tree.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_util.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_index.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_reflog.cpython-36.pyc,, | |||||
| git/test/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_actor.cpython-36.pyc,, | |||||
| git/test/__pycache__/test_submodule.cpython-36.pyc,, | |||||
| git/test/lib/__pycache__/helper.cpython-36.pyc,, | |||||
| git/test/lib/__pycache__/asserts.cpython-36.pyc,, | |||||
| git/test/lib/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/test/fixtures/__pycache__/cat_file.cpython-36.pyc,, | |||||
| git/test/performance/__pycache__/test_odb.cpython-36.pyc,, | |||||
| git/test/performance/__pycache__/test_commit.cpython-36.pyc,, | |||||
| git/test/performance/__pycache__/test_streams.cpython-36.pyc,, | |||||
| git/test/performance/__pycache__/lib.cpython-36.pyc,, | |||||
| git/test/performance/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/objects/submodule/__pycache__/util.cpython-36.pyc,, | |||||
| git/objects/submodule/__pycache__/root.cpython-36.pyc,, | |||||
| git/objects/submodule/__pycache__/base.cpython-36.pyc,, | |||||
| git/objects/submodule/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/objects/__pycache__/tree.cpython-36.pyc,, | |||||
| git/objects/__pycache__/util.cpython-36.pyc,, | |||||
| git/objects/__pycache__/tag.cpython-36.pyc,, | |||||
| git/objects/__pycache__/blob.cpython-36.pyc,, | |||||
| git/objects/__pycache__/base.cpython-36.pyc,, | |||||
| git/objects/__pycache__/commit.cpython-36.pyc,, | |||||
| git/objects/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/objects/__pycache__/fun.cpython-36.pyc,, | |||||
| git/__pycache__/util.cpython-36.pyc,, | |||||
| git/__pycache__/cmd.cpython-36.pyc,, | |||||
| git/__pycache__/config.cpython-36.pyc,, | |||||
| git/__pycache__/db.cpython-36.pyc,, | |||||
| git/__pycache__/remote.cpython-36.pyc,, | |||||
| git/__pycache__/diff.cpython-36.pyc,, | |||||
| git/__pycache__/compat.cpython-36.pyc,, | |||||
| git/__pycache__/exc.cpython-36.pyc,, | |||||
| git/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/refs/__pycache__/tag.cpython-36.pyc,, | |||||
| git/refs/__pycache__/head.cpython-36.pyc,, | |||||
| git/refs/__pycache__/reference.cpython-36.pyc,, | |||||
| git/refs/__pycache__/remote.cpython-36.pyc,, | |||||
| git/refs/__pycache__/symbolic.cpython-36.pyc,, | |||||
| git/refs/__pycache__/log.cpython-36.pyc,, | |||||
| git/refs/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/index/__pycache__/util.cpython-36.pyc,, | |||||
| git/index/__pycache__/typ.cpython-36.pyc,, | |||||
| git/index/__pycache__/base.cpython-36.pyc,, | |||||
| git/index/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/index/__pycache__/fun.cpython-36.pyc,, | |||||
| git/repo/__pycache__/base.cpython-36.pyc,, | |||||
| git/repo/__pycache__/__init__.cpython-36.pyc,, | |||||
| git/repo/__pycache__/fun.cpython-36.pyc,, | |||||
| @@ -1,5 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.33.4) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py3-none-any | |||||
| @@ -1 +0,0 @@ | |||||
| git | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,31 +0,0 @@ | |||||
| Copyright (c) 2009 by the Jinja Team, see AUTHORS for more details. | |||||
| Some rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions are | |||||
| met: | |||||
| * Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| * 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. | |||||
| * The names of the contributors may not 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 | |||||
| OWNER 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. | |||||
| @@ -1,67 +0,0 @@ | |||||
| Metadata-Version: 2.1 | |||||
| Name: Jinja2 | |||||
| Version: 2.10.1 | |||||
| Summary: A small but fast and easy to use stand-alone template engine written in pure python. | |||||
| Home-page: http://jinja.pocoo.org/ | |||||
| Author: Armin Ronacher | |||||
| Author-email: armin.ronacher@active-4.com | |||||
| License: BSD | |||||
| 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.6 | |||||
| Classifier: Programming Language :: Python :: 2.7 | |||||
| Classifier: Programming Language :: Python :: 3 | |||||
| Classifier: Programming Language :: Python :: 3.3 | |||||
| Classifier: Programming Language :: Python :: 3.4 | |||||
| Classifier: Programming Language :: Python :: 3.5 | |||||
| Classifier: Programming Language :: Python :: 3.6 | |||||
| Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content | |||||
| Classifier: Topic :: Software Development :: Libraries :: Python Modules | |||||
| Classifier: Topic :: Text Processing :: Markup :: HTML | |||||
| Requires-Dist: MarkupSafe (>=0.23) | |||||
| Provides-Extra: i18n | |||||
| Requires-Dist: Babel (>=0.8) ; extra == 'i18n' | |||||
| Jinja2 | |||||
| ~~~~~~ | |||||
| Jinja2 is a template engine written in pure Python. It provides a | |||||
| `Django`_ inspired non-XML syntax but supports inline expressions and | |||||
| an optional `sandboxed`_ environment. | |||||
| Nutshell | |||||
| -------- | |||||
| Here a small example of a Jinja template:: | |||||
| {% extends 'base.html' %} | |||||
| {% block title %}Memberlist{% endblock %} | |||||
| {% block content %} | |||||
| <ul> | |||||
| {% for user in users %} | |||||
| <li><a href="{{ user.url }}">{{ user.username }}</a></li> | |||||
| {% endfor %} | |||||
| </ul> | |||||
| {% endblock %} | |||||
| Philosophy | |||||
| ---------- | |||||
| Application logic is for the controller but don't try to make the life | |||||
| for the template designer too hard by giving him too few functionality. | |||||
| For more informations visit the new `Jinja2 webpage`_ and `documentation`_. | |||||
| .. _sandboxed: https://en.wikipedia.org/wiki/Sandbox_(computer_security) | |||||
| .. _Django: https://www.djangoproject.com/ | |||||
| .. _Jinja2 webpage: http://jinja.pocoo.org/ | |||||
| .. _documentation: http://jinja.pocoo.org/2/documentation/ | |||||
| @@ -1,61 +0,0 @@ | |||||
| jinja2/__init__.py,sha256=V1D-JHQKklZseXOMA-uAW7-BeKe_TfPpOFi9-dV04ZA,2616 | |||||
| jinja2/_compat.py,sha256=xP60CE5Qr8FTYcDE1f54tbZLKGvMwYml4-8T7Q4KG9k,2596 | |||||
| jinja2/_identifier.py,sha256=W1QBSY-iJsyt6oR_nKSuNNCzV95vLIOYgUNPUI1d5gU,1726 | |||||
| jinja2/asyncfilters.py,sha256=cTDPvrS8Hp_IkwsZ1m9af_lr5nHysw7uTa5gV0NmZVE,4144 | |||||
| jinja2/asyncsupport.py,sha256=UErQ3YlTLaSjFb94P4MVn08-aVD9jJxty2JVfMRb-1M,7878 | |||||
| jinja2/bccache.py,sha256=nQldx0ZRYANMyfvOihRoYFKSlUdd5vJkS7BjxNwlOZM,12794 | |||||
| jinja2/compiler.py,sha256=BqC5U6JxObSRhblyT_a6Tp5GtEU5z3US1a4jLQaxxgo,65386 | |||||
| jinja2/constants.py,sha256=uwwV8ZUhHhacAuz5PTwckfsbqBaqM7aKfyJL7kGX5YQ,1626 | |||||
| jinja2/debug.py,sha256=WTVeUFGUa4v6ReCsYv-iVPa3pkNB75OinJt3PfxNdXs,12045 | |||||
| jinja2/defaults.py,sha256=Em-95hmsJxIenDCZFB1YSvf9CNhe9rBmytN3yUrBcWA,1400 | |||||
| jinja2/environment.py,sha256=VnkAkqw8JbjZct4tAyHlpBrka2vqB-Z58RAP-32P1ZY,50849 | |||||
| jinja2/exceptions.py,sha256=_Rj-NVi98Q6AiEjYQOsP8dEIdu5AlmRHzcSNOPdWix4,4428 | |||||
| jinja2/ext.py,sha256=atMQydEC86tN1zUsdQiHw5L5cF62nDbqGue25Yiu3N4,24500 | |||||
| jinja2/filters.py,sha256=yOAJk0MsH-_gEC0i0U6NweVQhbtYaC-uE8xswHFLF4w,36528 | |||||
| jinja2/idtracking.py,sha256=2GbDSzIvGArEBGLkovLkqEfmYxmWsEf8c3QZwM4uNsw,9197 | |||||
| jinja2/lexer.py,sha256=ySEPoXd1g7wRjsuw23uimS6nkGN5aqrYwcOKxCaVMBQ,28559 | |||||
| jinja2/loaders.py,sha256=xiTuURKAEObyym0nU8PCIXu_Qp8fn0AJ5oIADUUm-5Q,17382 | |||||
| jinja2/meta.py,sha256=fmKHxkmZYAOm9QyWWy8EMd6eefAIh234rkBMW2X4ZR8,4340 | |||||
| jinja2/nativetypes.py,sha256=_sJhS8f-8Q0QMIC0dm1YEdLyxEyoO-kch8qOL5xUDfE,7308 | |||||
| jinja2/nodes.py,sha256=L10L_nQDfubLhO3XjpF9qz46FSh2clL-3e49ogVlMmA,30853 | |||||
| jinja2/optimizer.py,sha256=MsdlFACJ0FRdPtjmCAdt7JQ9SGrXFaDNUaslsWQaG3M,1722 | |||||
| jinja2/parser.py,sha256=lPzTEbcpTRBLw8ii6OYyExHeAhaZLMA05Hpv4ll3ULk,35875 | |||||
| jinja2/runtime.py,sha256=DHdD38Pq8gj7uWQC5usJyWFoNWL317A9AvXOW_CLB34,27755 | |||||
| jinja2/sandbox.py,sha256=UmX8hVjdaERCbA3RXBwrV1f-beA23KmijG5kzPJyU4A,17106 | |||||
| jinja2/tests.py,sha256=iJQLwbapZr-EKquTG_fVOVdwHUUKf3SX9eNkjQDF8oU,4237 | |||||
| jinja2/utils.py,sha256=q24VupGZotQ-uOyrJxCaXtDWhZC1RgsQG7kcdmjck2Q,20629 | |||||
| jinja2/visitor.py,sha256=JD1H1cANA29JcntFfN5fPyqQxB4bI4wC00BzZa-XHks,3316 | |||||
| Jinja2-2.10.1.dist-info/LICENSE,sha256=JvzUNv3Io51EiWrAPm8d_SXjhJnEjyDYvB3Tvwqqils,1554 | |||||
| Jinja2-2.10.1.dist-info/METADATA,sha256=rx0eN8lX8iq8-YVppmCzV1Qx4y3Pj9IWi08mXUCrewI,2227 | |||||
| Jinja2-2.10.1.dist-info/WHEEL,sha256=HX-v9-noUkyUoxyZ1PMSuS7auUxDAR4VBdoYLqD0xws,110 | |||||
| Jinja2-2.10.1.dist-info/entry_points.txt,sha256=NdzVcOrqyNyKDxD09aERj__3bFx2paZhizFDsKmVhiA,72 | |||||
| Jinja2-2.10.1.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 | |||||
| Jinja2-2.10.1.dist-info/RECORD,, | |||||
| Jinja2-2.10.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| jinja2/__pycache__/lexer.cpython-36.pyc,, | |||||
| jinja2/__pycache__/sandbox.cpython-36.pyc,, | |||||
| jinja2/__pycache__/debug.cpython-36.pyc,, | |||||
| jinja2/__pycache__/constants.cpython-36.pyc,, | |||||
| jinja2/__pycache__/idtracking.cpython-36.pyc,, | |||||
| jinja2/__pycache__/parser.cpython-36.pyc,, | |||||
| jinja2/__pycache__/exceptions.cpython-36.pyc,, | |||||
| jinja2/__pycache__/ext.cpython-36.pyc,, | |||||
| jinja2/__pycache__/meta.cpython-36.pyc,, | |||||
| jinja2/__pycache__/environment.cpython-36.pyc,, | |||||
| jinja2/__pycache__/loaders.cpython-36.pyc,, | |||||
| jinja2/__pycache__/asyncsupport.cpython-36.pyc,, | |||||
| jinja2/__pycache__/asyncfilters.cpython-36.pyc,, | |||||
| jinja2/__pycache__/tests.cpython-36.pyc,, | |||||
| jinja2/__pycache__/optimizer.cpython-36.pyc,, | |||||
| jinja2/__pycache__/compiler.cpython-36.pyc,, | |||||
| jinja2/__pycache__/bccache.cpython-36.pyc,, | |||||
| jinja2/__pycache__/_identifier.cpython-36.pyc,, | |||||
| jinja2/__pycache__/_compat.cpython-36.pyc,, | |||||
| jinja2/__pycache__/defaults.cpython-36.pyc,, | |||||
| jinja2/__pycache__/utils.cpython-36.pyc,, | |||||
| jinja2/__pycache__/nodes.cpython-36.pyc,, | |||||
| jinja2/__pycache__/filters.cpython-36.pyc,, | |||||
| jinja2/__pycache__/runtime.cpython-36.pyc,, | |||||
| jinja2/__pycache__/__init__.cpython-36.pyc,, | |||||
| jinja2/__pycache__/nativetypes.cpython-36.pyc,, | |||||
| jinja2/__pycache__/visitor.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.33.1) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1,4 +0,0 @@ | |||||
| [babel.extractors] | |||||
| jinja2 = jinja2.ext:babel_extract[i18n] | |||||
| @@ -1 +0,0 @@ | |||||
| jinja2 | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,28 +0,0 @@ | |||||
| 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. | |||||
| @@ -1,103 +0,0 @@ | |||||
| 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.* | |||||
| 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 | |||||
| @@ -1,16 +0,0 @@ | |||||
| markupsafe/__init__.py,sha256=oTblO5f9KFM-pvnq9bB0HgElnqkJyqHnFN1Nx2NIvnY,10126 | |||||
| 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-36m-darwin.so,sha256=gAFPy56Sic0xoW6ZX3vNlSIudH37VfkTL5p5huZTCKQ,35080 | |||||
| MarkupSafe-1.1.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 | |||||
| MarkupSafe-1.1.1.dist-info/METADATA,sha256=nJHwJ4_4ka-V39QH883jPrslj6inNdyyNASBXbYgHXQ,3570 | |||||
| MarkupSafe-1.1.1.dist-info/WHEEL,sha256=jbwwsYxUMSTI4YtVtq_YJIxL7IgPdHeCKUMmQlt2K6U,109 | |||||
| MarkupSafe-1.1.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 | |||||
| MarkupSafe-1.1.1.dist-info/RECORD,, | |||||
| MarkupSafe-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| markupsafe/__pycache__/_native.cpython-36.pyc,, | |||||
| markupsafe/__pycache__/_constants.cpython-36.pyc,, | |||||
| markupsafe/__pycache__/_compat.cpython-36.pyc,, | |||||
| markupsafe/__pycache__/__init__.cpython-36.pyc,, | |||||
| @@ -1,5 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.33.1) | |||||
| Root-Is-Purelib: false | |||||
| Tag: cp36-cp36m-macosx_10_6_intel | |||||
| @@ -1 +0,0 @@ | |||||
| markupsafe | |||||
| @@ -1,38 +0,0 @@ | |||||
| Metadata-Version: 1.2 | |||||
| Name: PyYAML | |||||
| Version: 5.1.2 | |||||
| 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/ | |||||
| Description: YAML is a data serialization format designed for human readability | |||||
| and interaction with scripting languages. PyYAML is a YAML parser | |||||
| and emitter for Python. | |||||
| PyYAML features a complete YAML 1.1 parser, Unicode support, pickle | |||||
| support, capable extension API, and sensible error messages. PyYAML | |||||
| supports standard YAML tags and provides Python-specific tags that | |||||
| allow to represent an arbitrary Python object. | |||||
| PyYAML is applicable for a broad range of tasks from complex | |||||
| configuration files to object serialization and persistence. | |||||
| Platform: Any | |||||
| Classifier: Development Status :: 5 - Production/Stable | |||||
| Classifier: Intended Audience :: Developers | |||||
| Classifier: License :: OSI Approved :: MIT License | |||||
| Classifier: Operating System :: OS Independent | |||||
| Classifier: Programming Language :: 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 :: Software Development :: Libraries :: Python Modules | |||||
| Classifier: Topic :: Text Processing :: Markup | |||||
| Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* | |||||
| @@ -1,27 +0,0 @@ | |||||
| README | |||||
| setup.cfg | |||||
| ext/_yaml.c | |||||
| ext/_yaml.h | |||||
| ext/_yaml.pxd | |||||
| ext/_yaml.pyx | |||||
| lib3/PyYAML.egg-info/PKG-INFO | |||||
| lib3/PyYAML.egg-info/SOURCES.txt | |||||
| lib3/PyYAML.egg-info/dependency_links.txt | |||||
| lib3/PyYAML.egg-info/top_level.txt | |||||
| lib3/yaml/__init__.py | |||||
| lib3/yaml/composer.py | |||||
| lib3/yaml/constructor.py | |||||
| lib3/yaml/cyaml.py | |||||
| lib3/yaml/dumper.py | |||||
| lib3/yaml/emitter.py | |||||
| lib3/yaml/error.py | |||||
| lib3/yaml/events.py | |||||
| lib3/yaml/loader.py | |||||
| lib3/yaml/nodes.py | |||||
| lib3/yaml/parser.py | |||||
| lib3/yaml/reader.py | |||||
| lib3/yaml/representer.py | |||||
| lib3/yaml/resolver.py | |||||
| lib3/yaml/scanner.py | |||||
| lib3/yaml/serializer.py | |||||
| lib3/yaml/tokens.py | |||||
| @@ -1 +0,0 @@ | |||||
| @@ -1,38 +0,0 @@ | |||||
| ../yaml/__init__.py | |||||
| ../yaml/__pycache__/__init__.cpython-36.pyc | |||||
| ../yaml/__pycache__/composer.cpython-36.pyc | |||||
| ../yaml/__pycache__/constructor.cpython-36.pyc | |||||
| ../yaml/__pycache__/cyaml.cpython-36.pyc | |||||
| ../yaml/__pycache__/dumper.cpython-36.pyc | |||||
| ../yaml/__pycache__/emitter.cpython-36.pyc | |||||
| ../yaml/__pycache__/error.cpython-36.pyc | |||||
| ../yaml/__pycache__/events.cpython-36.pyc | |||||
| ../yaml/__pycache__/loader.cpython-36.pyc | |||||
| ../yaml/__pycache__/nodes.cpython-36.pyc | |||||
| ../yaml/__pycache__/parser.cpython-36.pyc | |||||
| ../yaml/__pycache__/reader.cpython-36.pyc | |||||
| ../yaml/__pycache__/representer.cpython-36.pyc | |||||
| ../yaml/__pycache__/resolver.cpython-36.pyc | |||||
| ../yaml/__pycache__/scanner.cpython-36.pyc | |||||
| ../yaml/__pycache__/serializer.cpython-36.pyc | |||||
| ../yaml/__pycache__/tokens.cpython-36.pyc | |||||
| ../yaml/composer.py | |||||
| ../yaml/constructor.py | |||||
| ../yaml/cyaml.py | |||||
| ../yaml/dumper.py | |||||
| ../yaml/emitter.py | |||||
| ../yaml/error.py | |||||
| ../yaml/events.py | |||||
| ../yaml/loader.py | |||||
| ../yaml/nodes.py | |||||
| ../yaml/parser.py | |||||
| ../yaml/reader.py | |||||
| ../yaml/representer.py | |||||
| ../yaml/resolver.py | |||||
| ../yaml/scanner.py | |||||
| ../yaml/serializer.py | |||||
| ../yaml/tokens.py | |||||
| PKG-INFO | |||||
| SOURCES.txt | |||||
| dependency_links.txt | |||||
| top_level.txt | |||||
| @@ -1,2 +0,0 @@ | |||||
| _yaml | |||||
| yaml | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,28 +0,0 @@ | |||||
| 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. | |||||
| @@ -1,128 +0,0 @@ | |||||
| Metadata-Version: 2.1 | |||||
| Name: Werkzeug | |||||
| Version: 0.15.5 | |||||
| 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.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 :: 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.* | |||||
| 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: sphinx-issues ; extra == 'dev' | |||||
| Provides-Extra: termcolor | |||||
| Requires-Dist: termcolor ; extra == 'termcolor' | |||||
| 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/ | |||||
| @@ -1,119 +0,0 @@ | |||||
| werkzeug/__init__.py,sha256=TqqguxCOVD9JRfiTjo_JNHcEmtQsdK1B9FxwDNchE18,6805 | |||||
| werkzeug/_compat.py,sha256=oBEVVrJT4sqYdIZbUWmgV9T9w257RhTSDBlTjh0Zbb0,6431 | |||||
| werkzeug/_internal.py,sha256=Wx7cpTRWqeBd0LAqobo0lCO4pNUW4oav6XKf7Taumgk,14590 | |||||
| werkzeug/_reloader.py,sha256=J0EYq3YrGtC3bNDRqWCHf4yBPuVYoZBy8qp69eHO3YQ,11281 | |||||
| werkzeug/datastructures.py,sha256=8HoA4Gu9i7ZWi5OBjx244OLWvDEE4JTQQUUTRoAYKog,91761 | |||||
| werkzeug/exceptions.py,sha256=UzmMCkt5PCn5-TDNI0iGxGz07d3sKHQoArJrvurqVBE,23638 | |||||
| werkzeug/filesystem.py,sha256=HzKl-j0Hd8Jl66j778UbPTAYNnY6vUZgYLlBZ0e7uw0,2101 | |||||
| werkzeug/formparser.py,sha256=tN6SO4mn6RUsxRZq4qVBWXbNWNuasn2KaBznTieMaVk,21790 | |||||
| werkzeug/http.py,sha256=t0ET2tySAf9ZWdEelVWJoLaZzFViYpjoUmiYHPz10-E,43304 | |||||
| werkzeug/local.py,sha256=USVEcgIg-oCiUJFPIecFIW9jkIejfw4Fjf1u5yN-Np4,14456 | |||||
| werkzeug/posixemulation.py,sha256=gSSiv1SCmOyzOM_nq1ZaZCtxP__C5MeDJl_4yXJmi4Q,3541 | |||||
| werkzeug/routing.py,sha256=BSgjrYNwj2j5dAHQtK4INEp2TOf4OJP8hBncYSRO2ps,73410 | |||||
| werkzeug/security.py,sha256=81149MplFq7-hD4RK4sKp9kzXXejjV9D4lWBzaRyeQ8,8106 | |||||
| werkzeug/serving.py,sha256=tUFUMg7Bj9iw3nA8ZgC_czMDJJKN7vFskajEmgEFhzE,36597 | |||||
| werkzeug/test.py,sha256=Cnb5xa3vLDL0hzFCH1fkG_YRpndViGQgCh4D744iSQk,40645 | |||||
| werkzeug/testapp.py,sha256=hcKBzorVlSHC-uGvGXXjCm3FzCwGWq4yjbTG3Pr7MV8,9301 | |||||
| werkzeug/urls.py,sha256=8yHdYI99N__-isoTwvGqvuj9QhOh66dd1Xh1DIp0q0g,39261 | |||||
| werkzeug/useragents.py,sha256=FIonyUF790Ro8OG8cJqG1zixhg5YzXdHmkZbrnK0QRo,5965 | |||||
| werkzeug/utils.py,sha256=O20Y0qWk5O1IWamC_A5gkmzR5cgBd3yDIHviwBTfNB0,27387 | |||||
| werkzeug/wsgi.py,sha256=h-zyAeInwE6X6ciSnHI14ImA85adV-F861PmR7UGtRk,36681 | |||||
| werkzeug/contrib/__init__.py,sha256=EvNyiiCF49j5P0fZYJ3ZGe82ofXdSBvUNqWFwwBMibQ,553 | |||||
| werkzeug/contrib/atom.py,sha256=KpPJcTfzNW1J0VNQckCbVtVGBe3V8s451tOUya4qByI,15415 | |||||
| werkzeug/contrib/cache.py,sha256=AEh5UIw-Ui7sHZnlpvrD7ueOKUhCaAD55FXiPtXbbRs,32115 | |||||
| werkzeug/contrib/fixers.py,sha256=peEtAiIWYT5bh00EWEPOGKzGZXivOzVhhzKPvvzk1RM,9193 | |||||
| werkzeug/contrib/iterio.py,sha256=KKHa_8aCF_uhoeQVyPGUwrivuB6y6nNdXYo2D2vzOA8,10928 | |||||
| werkzeug/contrib/lint.py,sha256=NdIxP0E2kVt1xDIxoaIz3Rcl8ZdgmHaFbGTOaybGpN4,296 | |||||
| werkzeug/contrib/profiler.py,sha256=k_oMLU-AtsVvQ9TxNdermY6FuzSTYr-WE-ZmWb_DMyU,1229 | |||||
| werkzeug/contrib/securecookie.py,sha256=xbtElskGmtbiApgOJ5WhGgqGDs_68_PcWzqDIAY_QZY,13076 | |||||
| werkzeug/contrib/sessions.py,sha256=oVXh_7-6_CWOMxDKqcaK05H8RpYoWqAd3al-KzMFPYs,13042 | |||||
| werkzeug/contrib/wrappers.py,sha256=ZmNk0wpzD66yomPnQxapndZQs4c0kNJaRzqI-BVxeQk,13199 | |||||
| werkzeug/debug/__init__.py,sha256=Bo3HvgTNY4NQ_2jROTSk3r1ScZcT_g_4EnuHTjKyrKM,18275 | |||||
| werkzeug/debug/console.py,sha256=HoBL21bbcmtiCLqiLDJLZi1LYnWMZxjoXYH5WaZB1XY,5469 | |||||
| werkzeug/debug/repr.py,sha256=lIwuhbyrMwVe3P_cFqNyqzHL7P93TLKod7lw9clydEw,9621 | |||||
| werkzeug/debug/tbtools.py,sha256=SkAAA4KKfwsXJinUbf-AEP4GqONTsR4uU7WPUloXcSE,20318 | |||||
| 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/middleware/__init__.py,sha256=f1SFZo67IlW4k1uqKzNHxYQlsakUS-D6KK_j0e3jjwQ,549 | |||||
| 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=Y86VcU2oAQ--x0mi4iFVJyEFMzp3Ao8q0zvr_SsrpNw,8506 | |||||
| werkzeug/middleware/shared_data.py,sha256=WtSphPrsUdpEk4E-_09CAILhfOBJ1YtcX1LrxcQfIzw,8224 | |||||
| werkzeug/wrappers/__init__.py,sha256=S4VioKAmF_av9Ec9zQvG71X1EOkYfPx1TYck9jyDiyY,1384 | |||||
| werkzeug/wrappers/accept.py,sha256=TIvjUc0g73fhTWX54wg_D9NNzKvpnG1X8u1w26tK1o8,1760 | |||||
| werkzeug/wrappers/auth.py,sha256=Pmn6iaGHBrUyHbJpW0lZhO_q9RVoAa5QalaTqcavdAI,1158 | |||||
| werkzeug/wrappers/base_request.py,sha256=aknREwqVT7WJUxm4weUGdBj90H6rDR3DvsIvmYhaC8A,26943 | |||||
| werkzeug/wrappers/base_response.py,sha256=ZA1XlxtsbvG4SpbdOEMT5--z7aZM0w6C5y33W8wOXa4,27906 | |||||
| werkzeug/wrappers/common_descriptors.py,sha256=OJ8jOwMun4L-BxCuFPkK1vaefx_-Y5IndVXvvn_ems4,12089 | |||||
| werkzeug/wrappers/etag.py,sha256=TwMO1fvluXbBqnFTj2DvrCNa3mYhbHYe1UZAVzfXvuU,12533 | |||||
| werkzeug/wrappers/json.py,sha256=HvK_A4NpO0sLqgb10sTJcoZydYOwyNiPCJPV7SVgcgE,4343 | |||||
| werkzeug/wrappers/request.py,sha256=qPo2zmmBv4HxboywtWZb2pJL8OPXo07BUXBKw2j9Fi8,1338 | |||||
| werkzeug/wrappers/response.py,sha256=vDZFEGzDOG0jjmS0uVVjeT3hqRt1hFaf15npnx7RD28,2329 | |||||
| werkzeug/wrappers/user_agent.py,sha256=4bTgQKTLQmGUyxOREYOzbeiFP2VwIOE7E14AhUB5NqM,444 | |||||
| Werkzeug-0.15.5.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 | |||||
| Werkzeug-0.15.5.dist-info/METADATA,sha256=QMmXGaI5L-K5NH-S1q3ATVwWxqU0tQgUCdrJ7_OzqwU,4712 | |||||
| Werkzeug-0.15.5.dist-info/WHEEL,sha256=h_aVn5OB2IERUjMbi2pucmR_zzWJtk303YXvhh60NJ8,110 | |||||
| Werkzeug-0.15.5.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 | |||||
| Werkzeug-0.15.5.dist-info/RECORD,, | |||||
| Werkzeug-0.15.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| werkzeug/middleware/__pycache__/http_proxy.cpython-36.pyc,, | |||||
| werkzeug/middleware/__pycache__/lint.cpython-36.pyc,, | |||||
| werkzeug/middleware/__pycache__/dispatcher.cpython-36.pyc,, | |||||
| werkzeug/middleware/__pycache__/shared_data.cpython-36.pyc,, | |||||
| werkzeug/middleware/__pycache__/profiler.cpython-36.pyc,, | |||||
| werkzeug/middleware/__pycache__/proxy_fix.cpython-36.pyc,, | |||||
| werkzeug/middleware/__pycache__/__init__.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/response.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/base_response.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/request.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/base_request.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/auth.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/user_agent.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/etag.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/__init__.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/json.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/accept.cpython-36.pyc,, | |||||
| werkzeug/wrappers/__pycache__/common_descriptors.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/posixemulation.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/exceptions.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/datastructures.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/filesystem.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/useragents.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/serving.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/testapp.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/_compat.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/security.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/_internal.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/routing.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/_reloader.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/local.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/http.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/utils.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/wsgi.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/formparser.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/__init__.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/test.cpython-36.pyc,, | |||||
| werkzeug/__pycache__/urls.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/sessions.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/lint.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/iterio.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/securecookie.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/fixers.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/profiler.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/cache.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/wrappers.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/__init__.cpython-36.pyc,, | |||||
| werkzeug/contrib/__pycache__/atom.cpython-36.pyc,, | |||||
| werkzeug/debug/__pycache__/repr.cpython-36.pyc,, | |||||
| werkzeug/debug/__pycache__/console.cpython-36.pyc,, | |||||
| werkzeug/debug/__pycache__/tbtools.cpython-36.pyc,, | |||||
| werkzeug/debug/__pycache__/__init__.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.33.4) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1 +0,0 @@ | |||||
| werkzeug | |||||
| @@ -1,50 +0,0 @@ | |||||
| Certifi: Python SSL Certificates | |||||
| ================================ | |||||
| `Certifi`_ is a carefully curated collection of Root Certificates for | |||||
| validating the trustworthiness of SSL certificates while verifying the identity | |||||
| of TLS hosts. It has been extracted from the `Requests`_ project. | |||||
| Installation | |||||
| ------------ | |||||
| ``certifi`` is available on PyPI. Simply install it with ``pip``:: | |||||
| $ pip install certifi | |||||
| Usage | |||||
| ----- | |||||
| To reference the installed certificate authority (CA) bundle, you can use the | |||||
| built-in function:: | |||||
| >>> import certifi | |||||
| >>> certifi.where() | |||||
| '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' | |||||
| Or from the command line:: | |||||
| $ python -m certifi | |||||
| /usr/local/lib/python2.7/site-packages/certifi/cacert.pem | |||||
| Enjoy! | |||||
| 1024-bit Root Certificates | |||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||||
| Browsers and certificate authorities have concluded that 1024-bit keys are | |||||
| unacceptably weak for certificates, particularly root certificates. For this | |||||
| reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its | |||||
| bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) | |||||
| certificate from the same CA. Because Mozilla removed these certificates from | |||||
| its bundle, ``certifi`` removed them as well. | |||||
| In previous versions, ``certifi`` provided the ``certifi.old_where()`` function | |||||
| to intentionally re-add the 1024-bit roots back into your bundle. This was not | |||||
| recommended in production and therefore was removed at the end of 2018. | |||||
| .. _`Certifi`: https://certifi.io/en/latest/ | |||||
| .. _`Requests`: http://docs.python-requests.org/en/latest/ | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,21 +0,0 @@ | |||||
| This packge contains a modified version of ca-bundle.crt: | |||||
| ca-bundle.crt -- Bundle of CA Root Certificates | |||||
| Certificate data from Mozilla as of: Thu Nov 3 19:04:19 2011# | |||||
| This is a bundle of X.509 certificates of public Certificate Authorities | |||||
| (CA). These were automatically extracted from Mozilla's root certificates | |||||
| file (certdata.txt). This file can be found in the mozilla source tree: | |||||
| http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1# | |||||
| It contains the certificates in PEM format and therefore | |||||
| can be directly used with curl / libcurl / php_curl, or with | |||||
| an Apache+mod_ssl webserver for SSL client authentication. | |||||
| Just configure this file as the SSLCACertificateFile.# | |||||
| ***** BEGIN LICENSE BLOCK ***** | |||||
| This Source Code Form is subject to the terms of the Mozilla Public License, | |||||
| v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain | |||||
| one at http://mozilla.org/MPL/2.0/. | |||||
| ***** END LICENSE BLOCK ***** | |||||
| @(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ | |||||
| @@ -1,74 +0,0 @@ | |||||
| Metadata-Version: 2.0 | |||||
| Name: certifi | |||||
| Version: 2019.6.16 | |||||
| Summary: Python package for providing Mozilla's CA Bundle. | |||||
| Home-page: https://certifi.io/ | |||||
| Author: Kenneth Reitz | |||||
| Author-email: me@kennethreitz.com | |||||
| License: MPL-2.0 | |||||
| Platform: UNKNOWN | |||||
| Classifier: Development Status :: 5 - Production/Stable | |||||
| Classifier: Intended Audience :: Developers | |||||
| Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) | |||||
| Classifier: Natural Language :: English | |||||
| Classifier: Programming Language :: Python | |||||
| Classifier: Programming Language :: Python :: 2 | |||||
| Classifier: Programming Language :: Python :: 2.6 | |||||
| Classifier: Programming Language :: Python :: 2.7 | |||||
| Classifier: Programming Language :: Python :: 3 | |||||
| Classifier: Programming Language :: Python :: 3.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 | |||||
| Certifi: Python SSL Certificates | |||||
| ================================ | |||||
| `Certifi`_ is a carefully curated collection of Root Certificates for | |||||
| validating the trustworthiness of SSL certificates while verifying the identity | |||||
| of TLS hosts. It has been extracted from the `Requests`_ project. | |||||
| Installation | |||||
| ------------ | |||||
| ``certifi`` is available on PyPI. Simply install it with ``pip``:: | |||||
| $ pip install certifi | |||||
| Usage | |||||
| ----- | |||||
| To reference the installed certificate authority (CA) bundle, you can use the | |||||
| built-in function:: | |||||
| >>> import certifi | |||||
| >>> certifi.where() | |||||
| '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' | |||||
| Or from the command line:: | |||||
| $ python -m certifi | |||||
| /usr/local/lib/python2.7/site-packages/certifi/cacert.pem | |||||
| Enjoy! | |||||
| 1024-bit Root Certificates | |||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~ | |||||
| Browsers and certificate authorities have concluded that 1024-bit keys are | |||||
| unacceptably weak for certificates, particularly root certificates. For this | |||||
| reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its | |||||
| bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) | |||||
| certificate from the same CA. Because Mozilla removed these certificates from | |||||
| its bundle, ``certifi`` removed them as well. | |||||
| In previous versions, ``certifi`` provided the ``certifi.old_where()`` function | |||||
| to intentionally re-add the 1024-bit roots back into your bundle. This was not | |||||
| recommended in production and therefore was removed at the end of 2018. | |||||
| .. _`Certifi`: https://certifi.io/en/latest/ | |||||
| .. _`Requests`: http://docs.python-requests.org/en/latest/ | |||||
| @@ -1,15 +0,0 @@ | |||||
| certifi/__init__.py,sha256=phsMyKTQP7MMe1wAHfhXPbQVxL3wXixOomxzNh5Cwa4,52 | |||||
| certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41 | |||||
| certifi/cacert.pem,sha256=DddOv7pQyMB8zNNgiXSSFrPVn7EN8qbe7P6h_IYyuek,282085 | |||||
| certifi/core.py,sha256=EuFc2BsToG5O1-qsx4BSjQ1r1-7WRtH87b1WflZOWhI,218 | |||||
| certifi-2019.6.16.dist-info/DESCRIPTION.rst,sha256=aLNHONztn2ZiBpSTivVFy6EDIWmuNYSsEQwx4NWbvB4,1580 | |||||
| certifi-2019.6.16.dist-info/LICENSE.txt,sha256=anCkv2sBABbVmmS4rkrY3H9e8W8ftFPMLs13HFo0ETE,1048 | |||||
| certifi-2019.6.16.dist-info/METADATA,sha256=bmxei5fIjQJCT_5_2k2ReQ1IDvrguA5Qan26BXRcbN0,2522 | |||||
| certifi-2019.6.16.dist-info/RECORD,, | |||||
| certifi-2019.6.16.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113 | |||||
| certifi-2019.6.16.dist-info/metadata.json,sha256=soH2Ke2dIXqmSFFz1swsK3Uno_9ed57OqPIXuOxFXYA,1048 | |||||
| certifi-2019.6.16.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 | |||||
| certifi-2019.6.16.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| certifi/__pycache__/__main__.cpython-36.pyc,, | |||||
| certifi/__pycache__/core.cpython-36.pyc,, | |||||
| certifi/__pycache__/__init__.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.30.0.a0) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1 +0,0 @@ | |||||
| {"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7"], "extensions": {"python.details": {"contacts": [{"email": "me@kennethreitz.com", "name": "Kenneth Reitz", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst", "license": "LICENSE.txt"}, "project_urls": {"Home": "https://certifi.io/"}}}, "generator": "bdist_wheel (0.30.0.a0)", "license": "MPL-2.0", "metadata_version": "2.0", "name": "certifi", "summary": "Python package for providing Mozilla's CA Bundle.", "version": "2019.6.16"} | |||||
| @@ -1 +0,0 @@ | |||||
| certifi | |||||
| @@ -1,3 +0,0 @@ | |||||
| from .core import where | |||||
| __version__ = "2019.06.16" | |||||
| @@ -1,2 +0,0 @@ | |||||
| from certifi import where | |||||
| print(where()) | |||||
| @@ -1,15 +0,0 @@ | |||||
| # -*- coding: utf-8 -*- | |||||
| """ | |||||
| certifi.py | |||||
| ~~~~~~~~~~ | |||||
| This module returns the installation location of cacert.pem. | |||||
| """ | |||||
| import os | |||||
| def where(): | |||||
| f = os.path.dirname(__file__) | |||||
| return os.path.join(f, 'cacert.pem') | |||||
| @@ -1,70 +0,0 @@ | |||||
| Chardet: The Universal Character Encoding Detector | |||||
| -------------------------------------------------- | |||||
| .. image:: https://img.shields.io/travis/chardet/chardet/stable.svg | |||||
| :alt: Build status | |||||
| :target: https://travis-ci.org/chardet/chardet | |||||
| .. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg | |||||
| :target: https://coveralls.io/r/chardet/chardet | |||||
| .. image:: https://img.shields.io/pypi/v/chardet.svg | |||||
| :target: https://warehouse.python.org/project/chardet/ | |||||
| :alt: Latest version on PyPI | |||||
| .. image:: https://img.shields.io/pypi/l/chardet.svg | |||||
| :alt: License | |||||
| Detects | |||||
| - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) | |||||
| - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) | |||||
| - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) | |||||
| - EUC-KR, ISO-2022-KR (Korean) | |||||
| - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) | |||||
| - ISO-8859-5, windows-1251 (Bulgarian) | |||||
| - ISO-8859-1, windows-1252 (Western European languages) | |||||
| - ISO-8859-7, windows-1253 (Greek) | |||||
| - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) | |||||
| - TIS-620 (Thai) | |||||
| .. note:: | |||||
| Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily | |||||
| disabled until we can retrain the models. | |||||
| Requires Python 2.6, 2.7, or 3.3+. | |||||
| Installation | |||||
| ------------ | |||||
| Install from `PyPI <https://pypi.python.org/pypi/chardet>`_:: | |||||
| pip install chardet | |||||
| Documentation | |||||
| ------------- | |||||
| For users, docs are now available at https://chardet.readthedocs.io/. | |||||
| Command-line Tool | |||||
| ----------------- | |||||
| chardet comes with a command-line script which reports on the encodings of one | |||||
| or more files:: | |||||
| % chardetect somefile someotherfile | |||||
| somefile: windows-1252 with confidence 0.5 | |||||
| someotherfile: ascii with confidence 1.0 | |||||
| About | |||||
| ----- | |||||
| This is a continuation of Mark Pilgrim's excellent chardet. Previously, two | |||||
| versions needed to be maintained: one that supported python 2.x and one that | |||||
| supported python 3.x. We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s | |||||
| `charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one | |||||
| coherent version that works for Python 2.6+. | |||||
| :maintainer: Dan Blanchard | |||||
| @@ -1 +0,0 @@ | |||||
| pip | |||||
| @@ -1,96 +0,0 @@ | |||||
| Metadata-Version: 2.0 | |||||
| Name: chardet | |||||
| Version: 3.0.4 | |||||
| Summary: Universal encoding detector for Python 2 and 3 | |||||
| Home-page: https://github.com/chardet/chardet | |||||
| Author: Daniel Blanchard | |||||
| Author-email: dan.blanchard@gmail.com | |||||
| License: LGPL | |||||
| Keywords: encoding,i18n,xml | |||||
| Platform: UNKNOWN | |||||
| Classifier: Development Status :: 4 - Beta | |||||
| Classifier: Intended Audience :: Developers | |||||
| Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) | |||||
| Classifier: Operating System :: OS Independent | |||||
| Classifier: Programming Language :: Python | |||||
| Classifier: Programming Language :: Python :: 2 | |||||
| Classifier: Programming Language :: Python :: 2.6 | |||||
| Classifier: Programming Language :: Python :: 2.7 | |||||
| Classifier: Programming Language :: Python :: 3 | |||||
| Classifier: Programming Language :: Python :: 3.3 | |||||
| Classifier: Programming Language :: Python :: 3.4 | |||||
| Classifier: Programming Language :: Python :: 3.5 | |||||
| Classifier: Programming Language :: Python :: 3.6 | |||||
| Classifier: Topic :: Software Development :: Libraries :: Python Modules | |||||
| Classifier: Topic :: Text Processing :: Linguistic | |||||
| Chardet: The Universal Character Encoding Detector | |||||
| -------------------------------------------------- | |||||
| .. image:: https://img.shields.io/travis/chardet/chardet/stable.svg | |||||
| :alt: Build status | |||||
| :target: https://travis-ci.org/chardet/chardet | |||||
| .. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg | |||||
| :target: https://coveralls.io/r/chardet/chardet | |||||
| .. image:: https://img.shields.io/pypi/v/chardet.svg | |||||
| :target: https://warehouse.python.org/project/chardet/ | |||||
| :alt: Latest version on PyPI | |||||
| .. image:: https://img.shields.io/pypi/l/chardet.svg | |||||
| :alt: License | |||||
| Detects | |||||
| - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) | |||||
| - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) | |||||
| - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) | |||||
| - EUC-KR, ISO-2022-KR (Korean) | |||||
| - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) | |||||
| - ISO-8859-5, windows-1251 (Bulgarian) | |||||
| - ISO-8859-1, windows-1252 (Western European languages) | |||||
| - ISO-8859-7, windows-1253 (Greek) | |||||
| - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) | |||||
| - TIS-620 (Thai) | |||||
| .. note:: | |||||
| Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily | |||||
| disabled until we can retrain the models. | |||||
| Requires Python 2.6, 2.7, or 3.3+. | |||||
| Installation | |||||
| ------------ | |||||
| Install from `PyPI <https://pypi.python.org/pypi/chardet>`_:: | |||||
| pip install chardet | |||||
| Documentation | |||||
| ------------- | |||||
| For users, docs are now available at https://chardet.readthedocs.io/. | |||||
| Command-line Tool | |||||
| ----------------- | |||||
| chardet comes with a command-line script which reports on the encodings of one | |||||
| or more files:: | |||||
| % chardetect somefile someotherfile | |||||
| somefile: windows-1252 with confidence 0.5 | |||||
| someotherfile: ascii with confidence 1.0 | |||||
| About | |||||
| ----- | |||||
| This is a continuation of Mark Pilgrim's excellent chardet. Previously, two | |||||
| versions needed to be maintained: one that supported python 2.x and one that | |||||
| supported python 3.x. We've recently merged with `Ian Cordasco <https://github.com/sigmavirus24>`_'s | |||||
| `charade <https://github.com/sigmavirus24/charade>`_ fork, so now we have one | |||||
| coherent version that works for Python 2.6+. | |||||
| :maintainer: Dan Blanchard | |||||
| @@ -1,91 +0,0 @@ | |||||
| chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559 | |||||
| chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 | |||||
| chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 | |||||
| chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 | |||||
| chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787 | |||||
| chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 | |||||
| chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 | |||||
| chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134 | |||||
| chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 | |||||
| chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 | |||||
| chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 | |||||
| chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 | |||||
| chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 | |||||
| chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 | |||||
| chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 | |||||
| chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 | |||||
| chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 | |||||
| chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 | |||||
| chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 | |||||
| chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 | |||||
| chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 | |||||
| chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 | |||||
| chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839 | |||||
| chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948 | |||||
| chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688 | |||||
| chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345 | |||||
| chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592 | |||||
| chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290 | |||||
| chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102 | |||||
| chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 | |||||
| chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 | |||||
| chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 | |||||
| chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 | |||||
| chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657 | |||||
| chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546 | |||||
| chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 | |||||
| chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485 | |||||
| chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 | |||||
| chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242 | |||||
| chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 | |||||
| chardet/cli/chardetect.py,sha256=YBO8L4mXo0WR6_-Fjh_8QxPBoEBNqB9oNxNrdc54AQs,2738 | |||||
| chardet-3.0.4.dist-info/DESCRIPTION.rst,sha256=PQ4sBsMyKFZkjC6QpmbpLn0UtCNyeb-ZqvCGEgyZMGk,2174 | |||||
| chardet-3.0.4.dist-info/METADATA,sha256=RV_2I4B1Z586DL8oVO5Kp7X5bUdQ5EuKAvNoAEF8wSw,3239 | |||||
| chardet-3.0.4.dist-info/RECORD,, | |||||
| chardet-3.0.4.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 | |||||
| chardet-3.0.4.dist-info/entry_points.txt,sha256=fAMmhu5eJ-zAJ-smfqQwRClQ3-nozOCmvJ6-E8lgGJo,60 | |||||
| chardet-3.0.4.dist-info/metadata.json,sha256=0htbRM18ujyGZDdfowgAqj6Hq2eQtwzwyhaEveKntgo,1375 | |||||
| chardet-3.0.4.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8 | |||||
| ../../../bin/chardetect,sha256=tdd0S2YJVvT6yubIapfjDA-fyiySzs92Asb2iuXGH2U,254 | |||||
| chardet-3.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 | |||||
| chardet/__pycache__/langgreekmodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/sjisprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/eucjpprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/cp949prober.cpython-36.pyc,, | |||||
| chardet/__pycache__/euctwfreq.cpython-36.pyc,, | |||||
| chardet/__pycache__/gb2312prober.cpython-36.pyc,, | |||||
| chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/langturkishmodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/version.cpython-36.pyc,, | |||||
| chardet/__pycache__/euckrprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/euckrfreq.cpython-36.pyc,, | |||||
| chardet/__pycache__/chardistribution.cpython-36.pyc,, | |||||
| chardet/__pycache__/escsm.cpython-36.pyc,, | |||||
| chardet/__pycache__/euctwprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/big5freq.cpython-36.pyc,, | |||||
| chardet/__pycache__/compat.cpython-36.pyc,, | |||||
| chardet/__pycache__/hebrewprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/latin1prober.cpython-36.pyc,, | |||||
| chardet/__pycache__/universaldetector.cpython-36.pyc,, | |||||
| chardet/__pycache__/escprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/codingstatemachine.cpython-36.pyc,, | |||||
| chardet/__pycache__/utf8prober.cpython-36.pyc,, | |||||
| chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/gb2312freq.cpython-36.pyc,, | |||||
| chardet/__pycache__/enums.cpython-36.pyc,, | |||||
| chardet/__pycache__/langthaimodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/jpcntx.cpython-36.pyc,, | |||||
| chardet/__pycache__/mbcssm.cpython-36.pyc,, | |||||
| chardet/__pycache__/big5prober.cpython-36.pyc,, | |||||
| chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/__init__.cpython-36.pyc,, | |||||
| chardet/__pycache__/jisfreq.cpython-36.pyc,, | |||||
| chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, | |||||
| chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, | |||||
| chardet/__pycache__/charsetprober.cpython-36.pyc,, | |||||
| chardet/cli/__pycache__/chardetect.cpython-36.pyc,, | |||||
| chardet/cli/__pycache__/__init__.cpython-36.pyc,, | |||||
| @@ -1,6 +0,0 @@ | |||||
| Wheel-Version: 1.0 | |||||
| Generator: bdist_wheel (0.29.0) | |||||
| Root-Is-Purelib: true | |||||
| Tag: py2-none-any | |||||
| Tag: py3-none-any | |||||
| @@ -1,3 +0,0 @@ | |||||
| [console_scripts] | |||||
| chardetect = chardet.cli.chardetect:main | |||||
| @@ -1 +0,0 @@ | |||||
| {"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"], "extensions": {"python.commands": {"wrap_console": {"chardetect": "chardet.cli.chardetect:main"}}, "python.details": {"contacts": [{"email": "dan.blanchard@gmail.com", "name": "Daniel Blanchard", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/chardet/chardet"}}, "python.exports": {"console_scripts": {"chardetect": "chardet.cli.chardetect:main"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["encoding", "i18n", "xml"], "license": "LGPL", "metadata_version": "2.0", "name": "chardet", "summary": "Universal encoding detector for Python 2 and 3", "test_requires": [{"requires": ["hypothesis", "pytest"]}], "version": "3.0.4"} | |||||
| @@ -1 +0,0 @@ | |||||
| chardet | |||||
| @@ -1,39 +0,0 @@ | |||||
| ######################## BEGIN LICENSE BLOCK ######################## | |||||
| # This library is free software; you can redistribute it and/or | |||||
| # modify it under the terms of the GNU Lesser General Public | |||||
| # License as published by the Free Software Foundation; either | |||||
| # version 2.1 of the License, or (at your option) any later version. | |||||
| # | |||||
| # This library is distributed in the hope that it will be useful, | |||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # Lesser General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public | |||||
| # License along with this library; if not, write to the Free Software | |||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |||||
| # 02110-1301 USA | |||||
| ######################### END LICENSE BLOCK ######################### | |||||
| from .compat import PY2, PY3 | |||||
| from .universaldetector import UniversalDetector | |||||
| from .version import __version__, VERSION | |||||
| def detect(byte_str): | |||||
| """ | |||||
| Detect the encoding of the given byte string. | |||||
| :param byte_str: The byte sequence to examine. | |||||
| :type byte_str: ``bytes`` or ``bytearray`` | |||||
| """ | |||||
| if not isinstance(byte_str, bytearray): | |||||
| if not isinstance(byte_str, bytes): | |||||
| raise TypeError('Expected object of type bytes or bytearray, got: ' | |||||
| '{0}'.format(type(byte_str))) | |||||
| else: | |||||
| byte_str = bytearray(byte_str) | |||||
| detector = UniversalDetector() | |||||
| detector.feed(byte_str) | |||||
| return detector.close() | |||||
| @@ -1,386 +0,0 @@ | |||||
| ######################## BEGIN LICENSE BLOCK ######################## | |||||
| # The Original Code is Mozilla Communicator client code. | |||||
| # | |||||
| # The Initial Developer of the Original Code is | |||||
| # Netscape Communications Corporation. | |||||
| # Portions created by the Initial Developer are Copyright (C) 1998 | |||||
| # the Initial Developer. All Rights Reserved. | |||||
| # | |||||
| # Contributor(s): | |||||
| # Mark Pilgrim - port to Python | |||||
| # | |||||
| # This library is free software; you can redistribute it and/or | |||||
| # modify it under the terms of the GNU Lesser General Public | |||||
| # License as published by the Free Software Foundation; either | |||||
| # version 2.1 of the License, or (at your option) any later version. | |||||
| # | |||||
| # This library is distributed in the hope that it will be useful, | |||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # Lesser General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public | |||||
| # License along with this library; if not, write to the Free Software | |||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |||||
| # 02110-1301 USA | |||||
| ######################### END LICENSE BLOCK ######################### | |||||
| # Big5 frequency table | |||||
| # by Taiwan's Mandarin Promotion Council | |||||
| # <http://www.edu.tw:81/mandr/> | |||||
| # | |||||
| # 128 --> 0.42261 | |||||
| # 256 --> 0.57851 | |||||
| # 512 --> 0.74851 | |||||
| # 1024 --> 0.89384 | |||||
| # 2048 --> 0.97583 | |||||
| # | |||||
| # Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 | |||||
| # Random Distribution Ration = 512/(5401-512)=0.105 | |||||
| # | |||||
| # Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR | |||||
| BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 | |||||
| #Char to FreqOrder table | |||||
| BIG5_TABLE_SIZE = 5376 | |||||
| BIG5_CHAR_TO_FREQ_ORDER = ( | |||||
| 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 | |||||
| 3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 | |||||
| 1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 | |||||
| 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 | |||||
| 3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 | |||||
| 4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 | |||||
| 5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 | |||||
| 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 | |||||
| 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 | |||||
| 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 | |||||
| 2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 | |||||
| 1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 | |||||
| 3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 | |||||
| 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 | |||||
| 1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 | |||||
| 3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 | |||||
| 2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 | |||||
| 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 | |||||
| 3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 | |||||
| 1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 | |||||
| 5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 | |||||
| 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 | |||||
| 5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 | |||||
| 1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 | |||||
| 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 | |||||
| 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 | |||||
| 3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 | |||||
| 3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 | |||||
| 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 | |||||
| 2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 | |||||
| 2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 | |||||
| 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 | |||||
| 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 | |||||
| 3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 | |||||
| 1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 | |||||
| 1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 | |||||
| 1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 | |||||
| 2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 | |||||
| 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 | |||||
| 4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 | |||||
| 1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 | |||||
| 5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 | |||||
| 2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 | |||||
| 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 | |||||
| 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 | |||||
| 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 | |||||
| 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 | |||||
| 5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 | |||||
| 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 | |||||
| 1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 | |||||
| 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 | |||||
| 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 | |||||
| 5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 | |||||
| 1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 | |||||
| 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 | |||||
| 3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 | |||||
| 4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 | |||||
| 3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 | |||||
| 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 | |||||
| 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 | |||||
| 1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 | |||||
| 4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 | |||||
| 3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 | |||||
| 3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 | |||||
| 2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 | |||||
| 5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 | |||||
| 3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 | |||||
| 5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 | |||||
| 1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 | |||||
| 2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 | |||||
| 1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 | |||||
| 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 | |||||
| 1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 | |||||
| 4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 | |||||
| 3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 | |||||
| 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 | |||||
| 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 | |||||
| 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 | |||||
| 2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 | |||||
| 5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 | |||||
| 1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 | |||||
| 2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 | |||||
| 1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 | |||||
| 1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 | |||||
| 5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 | |||||
| 5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 | |||||
| 5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 | |||||
| 3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 | |||||
| 4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 | |||||
| 4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 | |||||
| 2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 | |||||
| 5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 | |||||
| 3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 | |||||
| 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 | |||||
| 5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 | |||||
| 5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 | |||||
| 1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 | |||||
| 2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 | |||||
| 3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 | |||||
| 4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 | |||||
| 5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 | |||||
| 3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 | |||||
| 4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 | |||||
| 1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 | |||||
| 1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 | |||||
| 4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 | |||||
| 1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 | |||||
| 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 | |||||
| 1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 | |||||
| 1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 | |||||
| 3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 | |||||
| 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 | |||||
| 5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 | |||||
| 2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 | |||||
| 1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 | |||||
| 1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 | |||||
| 5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 | |||||
| 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 | |||||
| 4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 | |||||
| 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 | |||||
| 2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 | |||||
| 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 | |||||
| 1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 | |||||
| 1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 | |||||
| 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 | |||||
| 4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 | |||||
| 4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 | |||||
| 1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 | |||||
| 3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 | |||||
| 5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 | |||||
| 5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 | |||||
| 1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 | |||||
| 2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 | |||||
| 1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 | |||||
| 3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 | |||||
| 2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 | |||||
| 3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 | |||||
| 2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 | |||||
| 4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 | |||||
| 4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 | |||||
| 3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 | |||||
| 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 | |||||
| 3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 | |||||
| 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 | |||||
| 3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 | |||||
| 4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 | |||||
| 3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 | |||||
| 1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 | |||||
| 5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 | |||||
| 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 | |||||
| 5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 | |||||
| 1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 | |||||
| 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 | |||||
| 4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 | |||||
| 4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 | |||||
| 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 | |||||
| 2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 | |||||
| 2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 | |||||
| 3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 | |||||
| 1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 | |||||
| 4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 | |||||
| 2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 | |||||
| 1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 | |||||
| 1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 | |||||
| 2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 | |||||
| 3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 | |||||
| 1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 | |||||
| 5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 | |||||
| 1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 | |||||
| 4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 | |||||
| 1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 | |||||
| 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 | |||||
| 1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 | |||||
| 4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 | |||||
| 4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 | |||||
| 2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 | |||||
| 1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 | |||||
| 4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 | |||||
| 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 | |||||
| 5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 | |||||
| 2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 | |||||
| 3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 | |||||
| 4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 | |||||
| 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 | |||||
| 5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 | |||||
| 5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 | |||||
| 1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 | |||||
| 4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 | |||||
| 4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 | |||||
| 2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 | |||||
| 3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 | |||||
| 3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 | |||||
| 2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 | |||||
| 1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 | |||||
| 4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 | |||||
| 3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 | |||||
| 3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 | |||||
| 2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 | |||||
| 4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 | |||||
| 5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 | |||||
| 3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 | |||||
| 2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 | |||||
| 3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 | |||||
| 1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 | |||||
| 2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 | |||||
| 3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 | |||||
| 4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 | |||||
| 2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 | |||||
| 2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 | |||||
| 5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 | |||||
| 1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 | |||||
| 2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 | |||||
| 1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 | |||||
| 3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 | |||||
| 4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 | |||||
| 2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 | |||||
| 3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 | |||||
| 3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 | |||||
| 2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 | |||||
| 4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 | |||||
| 2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 | |||||
| 3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 | |||||
| 4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 | |||||
| 5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 | |||||
| 3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 | |||||
| 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 | |||||
| 1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 | |||||
| 4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 | |||||
| 1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 | |||||
| 4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 | |||||
| 5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 | |||||
| 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 | |||||
| 5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 | |||||
| 5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 | |||||
| 2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 | |||||
| 3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 | |||||
| 2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 | |||||
| 2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 | |||||
| 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 | |||||
| 1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 | |||||
| 4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 | |||||
| 3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 | |||||
| 3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 | |||||
| 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 | |||||
| 2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 | |||||
| 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 | |||||
| 2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 | |||||
| 4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 | |||||
| 1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 | |||||
| 4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 | |||||
| 1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 | |||||
| 3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 | |||||
| 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 | |||||
| 3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 | |||||
| 5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 | |||||
| 5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 | |||||
| 3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 | |||||
| 3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 | |||||
| 1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 | |||||
| 2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 | |||||
| 5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 | |||||
| 1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 | |||||
| 1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 | |||||
| 3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 | |||||
| 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 | |||||
| 1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 | |||||
| 4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 | |||||
| 5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 | |||||
| 2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 | |||||
| 3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 | |||||
| 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 | |||||
| 1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 | |||||
| 2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 | |||||
| 2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 | |||||
| 5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 | |||||
| 5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 | |||||
| 5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 | |||||
| 2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 | |||||
| 2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 | |||||
| 1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 | |||||
| 4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 | |||||
| 3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 | |||||
| 3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 | |||||
| 4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 | |||||
| 4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 | |||||
| 2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 | |||||
| 2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 | |||||
| 5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 | |||||
| 4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 | |||||
| 5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 | |||||
| 4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 | |||||
| 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 | |||||
| 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 | |||||
| 1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 | |||||
| 3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 | |||||
| 4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 | |||||
| 1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 | |||||
| 5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 | |||||
| 2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 | |||||
| 2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 | |||||
| 3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 | |||||
| 5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 | |||||
| 1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 | |||||
| 3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 | |||||
| 5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 | |||||
| 1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 | |||||
| 5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 | |||||
| 2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 | |||||
| 3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 | |||||
| 2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 | |||||
| 3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 | |||||
| 3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 | |||||
| 3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 | |||||
| 4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 | |||||
| 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 | |||||
| 2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 | |||||
| 4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 | |||||
| 3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 | |||||
| 5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 | |||||
| 1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 | |||||
| 5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 | |||||
| 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 | |||||
| 1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 | |||||
| 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 | |||||
| 4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 | |||||
| 1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 | |||||
| 4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 | |||||
| 1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 | |||||
| 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 | |||||
| 3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 | |||||
| 4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 | |||||
| 5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 | |||||
| 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 | |||||
| 3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 | |||||
| 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 | |||||
| 2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 | |||||
| ) | |||||
| @@ -1,47 +0,0 @@ | |||||
| ######################## BEGIN LICENSE BLOCK ######################## | |||||
| # The Original Code is Mozilla Communicator client code. | |||||
| # | |||||
| # The Initial Developer of the Original Code is | |||||
| # Netscape Communications Corporation. | |||||
| # Portions created by the Initial Developer are Copyright (C) 1998 | |||||
| # the Initial Developer. All Rights Reserved. | |||||
| # | |||||
| # Contributor(s): | |||||
| # Mark Pilgrim - port to Python | |||||
| # | |||||
| # This library is free software; you can redistribute it and/or | |||||
| # modify it under the terms of the GNU Lesser General Public | |||||
| # License as published by the Free Software Foundation; either | |||||
| # version 2.1 of the License, or (at your option) any later version. | |||||
| # | |||||
| # This library is distributed in the hope that it will be useful, | |||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # Lesser General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public | |||||
| # License along with this library; if not, write to the Free Software | |||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |||||
| # 02110-1301 USA | |||||
| ######################### END LICENSE BLOCK ######################### | |||||
| from .mbcharsetprober import MultiByteCharSetProber | |||||
| from .codingstatemachine import CodingStateMachine | |||||
| from .chardistribution import Big5DistributionAnalysis | |||||
| from .mbcssm import BIG5_SM_MODEL | |||||
| class Big5Prober(MultiByteCharSetProber): | |||||
| def __init__(self): | |||||
| super(Big5Prober, self).__init__() | |||||
| self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) | |||||
| self.distribution_analyzer = Big5DistributionAnalysis() | |||||
| self.reset() | |||||
| @property | |||||
| def charset_name(self): | |||||
| return "Big5" | |||||
| @property | |||||
| def language(self): | |||||
| return "Chinese" | |||||
| @@ -1,233 +0,0 @@ | |||||
| ######################## BEGIN LICENSE BLOCK ######################## | |||||
| # The Original Code is Mozilla Communicator client code. | |||||
| # | |||||
| # The Initial Developer of the Original Code is | |||||
| # Netscape Communications Corporation. | |||||
| # Portions created by the Initial Developer are Copyright (C) 1998 | |||||
| # the Initial Developer. All Rights Reserved. | |||||
| # | |||||
| # Contributor(s): | |||||
| # Mark Pilgrim - port to Python | |||||
| # | |||||
| # This library is free software; you can redistribute it and/or | |||||
| # modify it under the terms of the GNU Lesser General Public | |||||
| # License as published by the Free Software Foundation; either | |||||
| # version 2.1 of the License, or (at your option) any later version. | |||||
| # | |||||
| # This library is distributed in the hope that it will be useful, | |||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # Lesser General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public | |||||
| # License along with this library; if not, write to the Free Software | |||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |||||
| # 02110-1301 USA | |||||
| ######################### END LICENSE BLOCK ######################### | |||||
| from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, | |||||
| EUCTW_TYPICAL_DISTRIBUTION_RATIO) | |||||
| from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, | |||||
| EUCKR_TYPICAL_DISTRIBUTION_RATIO) | |||||
| from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, | |||||
| GB2312_TYPICAL_DISTRIBUTION_RATIO) | |||||
| from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, | |||||
| BIG5_TYPICAL_DISTRIBUTION_RATIO) | |||||
| from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, | |||||
| JIS_TYPICAL_DISTRIBUTION_RATIO) | |||||
| class CharDistributionAnalysis(object): | |||||
| ENOUGH_DATA_THRESHOLD = 1024 | |||||
| SURE_YES = 0.99 | |||||
| SURE_NO = 0.01 | |||||
| MINIMUM_DATA_THRESHOLD = 3 | |||||
| def __init__(self): | |||||
| # Mapping table to get frequency order from char order (get from | |||||
| # GetOrder()) | |||||
| self._char_to_freq_order = None | |||||
| self._table_size = None # Size of above table | |||||
| # This is a constant value which varies from language to language, | |||||
| # used in calculating confidence. See | |||||
| # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html | |||||
| # for further detail. | |||||
| self.typical_distribution_ratio = None | |||||
| self._done = None | |||||
| self._total_chars = None | |||||
| self._freq_chars = None | |||||
| self.reset() | |||||
| def reset(self): | |||||
| """reset analyser, clear any state""" | |||||
| # If this flag is set to True, detection is done and conclusion has | |||||
| # been made | |||||
| self._done = False | |||||
| self._total_chars = 0 # Total characters encountered | |||||
| # The number of characters whose frequency order is less than 512 | |||||
| self._freq_chars = 0 | |||||
| def feed(self, char, char_len): | |||||
| """feed a character with known length""" | |||||
| if char_len == 2: | |||||
| # we only care about 2-bytes character in our distribution analysis | |||||
| order = self.get_order(char) | |||||
| else: | |||||
| order = -1 | |||||
| if order >= 0: | |||||
| self._total_chars += 1 | |||||
| # order is valid | |||||
| if order < self._table_size: | |||||
| if 512 > self._char_to_freq_order[order]: | |||||
| self._freq_chars += 1 | |||||
| def get_confidence(self): | |||||
| """return confidence based on existing data""" | |||||
| # if we didn't receive any character in our consideration range, | |||||
| # return negative answer | |||||
| if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: | |||||
| return self.SURE_NO | |||||
| if self._total_chars != self._freq_chars: | |||||
| r = (self._freq_chars / ((self._total_chars - self._freq_chars) | |||||
| * self.typical_distribution_ratio)) | |||||
| if r < self.SURE_YES: | |||||
| return r | |||||
| # normalize confidence (we don't want to be 100% sure) | |||||
| return self.SURE_YES | |||||
| def got_enough_data(self): | |||||
| # It is not necessary to receive all data to draw conclusion. | |||||
| # For charset detection, certain amount of data is enough | |||||
| return self._total_chars > self.ENOUGH_DATA_THRESHOLD | |||||
| def get_order(self, byte_str): | |||||
| # We do not handle characters based on the original encoding string, | |||||
| # but convert this encoding string to a number, here called order. | |||||
| # This allows multiple encodings of a language to share one frequency | |||||
| # table. | |||||
| return -1 | |||||
| class EUCTWDistributionAnalysis(CharDistributionAnalysis): | |||||
| def __init__(self): | |||||
| super(EUCTWDistributionAnalysis, self).__init__() | |||||
| self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER | |||||
| self._table_size = EUCTW_TABLE_SIZE | |||||
| self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO | |||||
| def get_order(self, byte_str): | |||||
| # for euc-TW encoding, we are interested | |||||
| # first byte range: 0xc4 -- 0xfe | |||||
| # second byte range: 0xa1 -- 0xfe | |||||
| # no validation needed here. State machine has done that | |||||
| first_char = byte_str[0] | |||||
| if first_char >= 0xC4: | |||||
| return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 | |||||
| else: | |||||
| return -1 | |||||
| class EUCKRDistributionAnalysis(CharDistributionAnalysis): | |||||
| def __init__(self): | |||||
| super(EUCKRDistributionAnalysis, self).__init__() | |||||
| self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER | |||||
| self._table_size = EUCKR_TABLE_SIZE | |||||
| self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO | |||||
| def get_order(self, byte_str): | |||||
| # for euc-KR encoding, we are interested | |||||
| # first byte range: 0xb0 -- 0xfe | |||||
| # second byte range: 0xa1 -- 0xfe | |||||
| # no validation needed here. State machine has done that | |||||
| first_char = byte_str[0] | |||||
| if first_char >= 0xB0: | |||||
| return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 | |||||
| else: | |||||
| return -1 | |||||
| class GB2312DistributionAnalysis(CharDistributionAnalysis): | |||||
| def __init__(self): | |||||
| super(GB2312DistributionAnalysis, self).__init__() | |||||
| self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER | |||||
| self._table_size = GB2312_TABLE_SIZE | |||||
| self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO | |||||
| def get_order(self, byte_str): | |||||
| # for GB2312 encoding, we are interested | |||||
| # first byte range: 0xb0 -- 0xfe | |||||
| # second byte range: 0xa1 -- 0xfe | |||||
| # no validation needed here. State machine has done that | |||||
| first_char, second_char = byte_str[0], byte_str[1] | |||||
| if (first_char >= 0xB0) and (second_char >= 0xA1): | |||||
| return 94 * (first_char - 0xB0) + second_char - 0xA1 | |||||
| else: | |||||
| return -1 | |||||
| class Big5DistributionAnalysis(CharDistributionAnalysis): | |||||
| def __init__(self): | |||||
| super(Big5DistributionAnalysis, self).__init__() | |||||
| self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER | |||||
| self._table_size = BIG5_TABLE_SIZE | |||||
| self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO | |||||
| def get_order(self, byte_str): | |||||
| # for big5 encoding, we are interested | |||||
| # first byte range: 0xa4 -- 0xfe | |||||
| # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe | |||||
| # no validation needed here. State machine has done that | |||||
| first_char, second_char = byte_str[0], byte_str[1] | |||||
| if first_char >= 0xA4: | |||||
| if second_char >= 0xA1: | |||||
| return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 | |||||
| else: | |||||
| return 157 * (first_char - 0xA4) + second_char - 0x40 | |||||
| else: | |||||
| return -1 | |||||
| class SJISDistributionAnalysis(CharDistributionAnalysis): | |||||
| def __init__(self): | |||||
| super(SJISDistributionAnalysis, self).__init__() | |||||
| self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER | |||||
| self._table_size = JIS_TABLE_SIZE | |||||
| self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO | |||||
| def get_order(self, byte_str): | |||||
| # for sjis encoding, we are interested | |||||
| # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe | |||||
| # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe | |||||
| # no validation needed here. State machine has done that | |||||
| first_char, second_char = byte_str[0], byte_str[1] | |||||
| if (first_char >= 0x81) and (first_char <= 0x9F): | |||||
| order = 188 * (first_char - 0x81) | |||||
| elif (first_char >= 0xE0) and (first_char <= 0xEF): | |||||
| order = 188 * (first_char - 0xE0 + 31) | |||||
| else: | |||||
| return -1 | |||||
| order = order + second_char - 0x40 | |||||
| if second_char > 0x7F: | |||||
| order = -1 | |||||
| return order | |||||
| class EUCJPDistributionAnalysis(CharDistributionAnalysis): | |||||
| def __init__(self): | |||||
| super(EUCJPDistributionAnalysis, self).__init__() | |||||
| self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER | |||||
| self._table_size = JIS_TABLE_SIZE | |||||
| self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO | |||||
| def get_order(self, byte_str): | |||||
| # for euc-JP encoding, we are interested | |||||
| # first byte range: 0xa0 -- 0xfe | |||||
| # second byte range: 0xa1 -- 0xfe | |||||
| # no validation needed here. State machine has done that | |||||
| char = byte_str[0] | |||||
| if char >= 0xA0: | |||||
| return 94 * (char - 0xA1) + byte_str[1] - 0xa1 | |||||
| else: | |||||
| return -1 | |||||
| @@ -1,106 +0,0 @@ | |||||
| ######################## BEGIN LICENSE BLOCK ######################## | |||||
| # The Original Code is Mozilla Communicator client code. | |||||
| # | |||||
| # The Initial Developer of the Original Code is | |||||
| # Netscape Communications Corporation. | |||||
| # Portions created by the Initial Developer are Copyright (C) 1998 | |||||
| # the Initial Developer. All Rights Reserved. | |||||
| # | |||||
| # Contributor(s): | |||||
| # Mark Pilgrim - port to Python | |||||
| # | |||||
| # This library is free software; you can redistribute it and/or | |||||
| # modify it under the terms of the GNU Lesser General Public | |||||
| # License as published by the Free Software Foundation; either | |||||
| # version 2.1 of the License, or (at your option) any later version. | |||||
| # | |||||
| # This library is distributed in the hope that it will be useful, | |||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # Lesser General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public | |||||
| # License along with this library; if not, write to the Free Software | |||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |||||
| # 02110-1301 USA | |||||
| ######################### END LICENSE BLOCK ######################### | |||||
| from .enums import ProbingState | |||||
| from .charsetprober import CharSetProber | |||||
| class CharSetGroupProber(CharSetProber): | |||||
| def __init__(self, lang_filter=None): | |||||
| super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) | |||||
| self._active_num = 0 | |||||
| self.probers = [] | |||||
| self._best_guess_prober = None | |||||
| def reset(self): | |||||
| super(CharSetGroupProber, self).reset() | |||||
| self._active_num = 0 | |||||
| for prober in self.probers: | |||||
| if prober: | |||||
| prober.reset() | |||||
| prober.active = True | |||||
| self._active_num += 1 | |||||
| self._best_guess_prober = None | |||||
| @property | |||||
| def charset_name(self): | |||||
| if not self._best_guess_prober: | |||||
| self.get_confidence() | |||||
| if not self._best_guess_prober: | |||||
| return None | |||||
| return self._best_guess_prober.charset_name | |||||
| @property | |||||
| def language(self): | |||||
| if not self._best_guess_prober: | |||||
| self.get_confidence() | |||||
| if not self._best_guess_prober: | |||||
| return None | |||||
| return self._best_guess_prober.language | |||||
| def feed(self, byte_str): | |||||
| for prober in self.probers: | |||||
| if not prober: | |||||
| continue | |||||
| if not prober.active: | |||||
| continue | |||||
| state = prober.feed(byte_str) | |||||
| if not state: | |||||
| continue | |||||
| if state == ProbingState.FOUND_IT: | |||||
| self._best_guess_prober = prober | |||||
| return self.state | |||||
| elif state == ProbingState.NOT_ME: | |||||
| prober.active = False | |||||
| self._active_num -= 1 | |||||
| if self._active_num <= 0: | |||||
| self._state = ProbingState.NOT_ME | |||||
| return self.state | |||||
| return self.state | |||||
| def get_confidence(self): | |||||
| state = self.state | |||||
| if state == ProbingState.FOUND_IT: | |||||
| return 0.99 | |||||
| elif state == ProbingState.NOT_ME: | |||||
| return 0.01 | |||||
| best_conf = 0.0 | |||||
| self._best_guess_prober = None | |||||
| for prober in self.probers: | |||||
| if not prober: | |||||
| continue | |||||
| if not prober.active: | |||||
| self.logger.debug('%s not active', prober.charset_name) | |||||
| continue | |||||
| conf = prober.get_confidence() | |||||
| self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) | |||||
| if best_conf < conf: | |||||
| best_conf = conf | |||||
| self._best_guess_prober = prober | |||||
| if not self._best_guess_prober: | |||||
| return 0.0 | |||||
| return best_conf | |||||
| @@ -1,145 +0,0 @@ | |||||
| ######################## BEGIN LICENSE BLOCK ######################## | |||||
| # The Original Code is Mozilla Universal charset detector code. | |||||
| # | |||||
| # The Initial Developer of the Original Code is | |||||
| # Netscape Communications Corporation. | |||||
| # Portions created by the Initial Developer are Copyright (C) 2001 | |||||
| # the Initial Developer. All Rights Reserved. | |||||
| # | |||||
| # Contributor(s): | |||||
| # Mark Pilgrim - port to Python | |||||
| # Shy Shalom - original C code | |||||
| # | |||||
| # This library is free software; you can redistribute it and/or | |||||
| # modify it under the terms of the GNU Lesser General Public | |||||
| # License as published by the Free Software Foundation; either | |||||
| # version 2.1 of the License, or (at your option) any later version. | |||||
| # | |||||
| # This library is distributed in the hope that it will be useful, | |||||
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # Lesser General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public | |||||
| # License along with this library; if not, write to the Free Software | |||||
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | |||||
| # 02110-1301 USA | |||||
| ######################### END LICENSE BLOCK ######################### | |||||
| import logging | |||||
| import re | |||||
| from .enums import ProbingState | |||||
| class CharSetProber(object): | |||||
| SHORTCUT_THRESHOLD = 0.95 | |||||
| def __init__(self, lang_filter=None): | |||||
| self._state = None | |||||
| self.lang_filter = lang_filter | |||||
| self.logger = logging.getLogger(__name__) | |||||
| def reset(self): | |||||
| self._state = ProbingState.DETECTING | |||||
| @property | |||||
| def charset_name(self): | |||||
| return None | |||||
| def feed(self, buf): | |||||
| pass | |||||
| @property | |||||
| def state(self): | |||||
| return self._state | |||||
| def get_confidence(self): | |||||
| return 0.0 | |||||
| @staticmethod | |||||
| def filter_high_byte_only(buf): | |||||
| buf = re.sub(b'([\x00-\x7F])+', b' ', buf) | |||||
| return buf | |||||
| @staticmethod | |||||
| def filter_international_words(buf): | |||||
| """ | |||||
| We define three types of bytes: | |||||
| alphabet: english alphabets [a-zA-Z] | |||||
| international: international characters [\x80-\xFF] | |||||
| marker: everything else [^a-zA-Z\x80-\xFF] | |||||
| The input buffer can be thought to contain a series of words delimited | |||||
| by markers. This function works to filter all words that contain at | |||||
| least one international character. All contiguous sequences of markers | |||||
| are replaced by a single space ascii character. | |||||
| This filter applies to all scripts which do not use English characters. | |||||
| """ | |||||
| filtered = bytearray() | |||||
| # This regex expression filters out only words that have at-least one | |||||
| # international character. The word may include one marker character at | |||||
| # the end. | |||||
| words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', | |||||
| buf) | |||||
| for word in words: | |||||
| filtered.extend(word[:-1]) | |||||
| # If the last character in the word is a marker, replace it with a | |||||
| # space as markers shouldn't affect our analysis (they are used | |||||
| # similarly across all languages and may thus have similar | |||||
| # frequencies). | |||||
| last_char = word[-1:] | |||||
| if not last_char.isalpha() and last_char < b'\x80': | |||||
| last_char = b' ' | |||||
| filtered.extend(last_char) | |||||
| return filtered | |||||
| @staticmethod | |||||
| def filter_with_english_letters(buf): | |||||
| """ | |||||
| Returns a copy of ``buf`` that retains only the sequences of English | |||||
| alphabet and high byte characters that are not between <> characters. | |||||
| Also retains English alphabet and high byte characters immediately | |||||
| before occurrences of >. | |||||
| This filter can be applied to all scripts which contain both English | |||||
| characters and extended ASCII characters, but is currently only used by | |||||
| ``Latin1Prober``. | |||||
| """ | |||||
| filtered = bytearray() | |||||
| in_tag = False | |||||
| prev = 0 | |||||
| for curr in range(len(buf)): | |||||
| # Slice here to get bytes instead of an int with Python 3 | |||||
| buf_char = buf[curr:curr + 1] | |||||
| # Check if we're coming out of or entering an HTML tag | |||||
| if buf_char == b'>': | |||||
| in_tag = False | |||||
| elif buf_char == b'<': | |||||
| in_tag = True | |||||
| # If current character is not extended-ASCII and not alphabetic... | |||||
| if buf_char < b'\x80' and not buf_char.isalpha(): | |||||
| # ...and we're not in a tag | |||||
| if curr > prev and not in_tag: | |||||
| # Keep everything after last non-extended-ASCII, | |||||
| # non-alphabetic character | |||||
| filtered.extend(buf[prev:curr]) | |||||
| # Output a space to delimit stretch we kept | |||||
| filtered.extend(b' ') | |||||
| prev = curr + 1 | |||||
| # If we're not in a tag... | |||||
| if not in_tag: | |||||
| # Keep everything after last non-extended-ASCII, non-alphabetic | |||||
| # character | |||||
| filtered.extend(buf[prev:]) | |||||
| return filtered | |||||
| @@ -1 +0,0 @@ | |||||
| @@ -1,85 +0,0 @@ | |||||
| #!/usr/bin/env python | |||||
| """ | |||||
| Script which takes one or more file paths and reports on their detected | |||||
| encodings | |||||
| Example:: | |||||
| % chardetect somefile someotherfile | |||||
| somefile: windows-1252 with confidence 0.5 | |||||
| someotherfile: ascii with confidence 1.0 | |||||
| If no paths are provided, it takes its input from stdin. | |||||
| """ | |||||
| from __future__ import absolute_import, print_function, unicode_literals | |||||
| import argparse | |||||
| import sys | |||||
| from chardet import __version__ | |||||
| from chardet.compat import PY2 | |||||
| from chardet.universaldetector import UniversalDetector | |||||
| def description_of(lines, name='stdin'): | |||||
| """ | |||||
| Return a string describing the probable encoding of a file or | |||||
| list of strings. | |||||
| :param lines: The lines to get the encoding of. | |||||
| :type lines: Iterable of bytes | |||||
| :param name: Name of file or collection of lines | |||||
| :type name: str | |||||
| """ | |||||
| u = UniversalDetector() | |||||
| for line in lines: | |||||
| line = bytearray(line) | |||||
| u.feed(line) | |||||
| # shortcut out of the loop to save reading further - particularly useful if we read a BOM. | |||||
| if u.done: | |||||
| break | |||||
| u.close() | |||||
| result = u.result | |||||
| if PY2: | |||||
| name = name.decode(sys.getfilesystemencoding(), 'ignore') | |||||
| if result['encoding']: | |||||
| return '{0}: {1} with confidence {2}'.format(name, result['encoding'], | |||||
| result['confidence']) | |||||
| else: | |||||
| return '{0}: no result'.format(name) | |||||
| def main(argv=None): | |||||
| """ | |||||
| Handles command line arguments and gets things started. | |||||
| :param argv: List of arguments, as if specified on the command-line. | |||||
| If None, ``sys.argv[1:]`` is used instead. | |||||
| :type argv: list of str | |||||
| """ | |||||
| # Get command line arguments | |||||
| parser = argparse.ArgumentParser( | |||||
| description="Takes one or more file paths and reports their detected \ | |||||
| encodings") | |||||
| parser.add_argument('input', | |||||
| help='File whose encoding we would like to determine. \ | |||||
| (default: stdin)', | |||||
| type=argparse.FileType('rb'), nargs='*', | |||||
| default=[sys.stdin if PY2 else sys.stdin.buffer]) | |||||
| parser.add_argument('--version', action='version', | |||||
| version='%(prog)s {0}'.format(__version__)) | |||||
| args = parser.parse_args(argv) | |||||
| for f in args.input: | |||||
| if f.isatty(): | |||||
| print("You are running chardetect interactively. Press " + | |||||
| "CTRL-D twice at the start of a blank line to signal the " + | |||||
| "end of your input. If you want help, run chardetect " + | |||||
| "--help\n", file=sys.stderr) | |||||
| print(description_of(f, f.name)) | |||||
| if __name__ == '__main__': | |||||
| main() | |||||