| @@ -7,7 +7,7 @@ from flask_socketio import SocketIO, emit | |||
| import logging | |||
| # Define the WSGI application object | |||
| from app_config import * | |||
| from .app_config import * | |||
| import pprint | |||
| from modules.core.db import get_db | |||
| @@ -30,15 +30,15 @@ import modules.actor | |||
| import modules.notification | |||
| import modules.fermenter | |||
| from modules.addon.endpoints import initPlugins | |||
| import modules.ui | |||
| import modules.system | |||
| import modules.ui.endpoints | |||
| import modules.system.endpoints | |||
| import modules.buzzer | |||
| import modules.stats | |||
| import modules.kettle | |||
| import modules.recipe_import | |||
| import modules.core.db_mirgrate | |||
| from app_config import cbpi | |||
| from .app_config import cbpi | |||
| # Build the database: | |||
| # This will create the database file using SQLAlchemy | |||
| @@ -47,7 +47,7 @@ pp = pprint.PrettyPrinter(indent=6) | |||
| def init_db(): | |||
| print "INIT DB" | |||
| print("INIT DB") | |||
| with app.app_context(): | |||
| db = get_db() | |||
| @@ -1 +0,0 @@ | |||
| import endpoints | |||
| @@ -134,7 +134,7 @@ def plugins(): | |||
| """ | |||
| response = requests.get("https://raw.githubusercontent.com/Manuel83/craftbeerpi-plugins/master/plugins.yaml") | |||
| cbpi.cache["plugins"] = merge(yaml.load(response.text), cbpi.cache["plugins"]) | |||
| for key, value in cbpi.cache["plugins"].iteritems(): | |||
| for key, value in cbpi.cache["plugins"].items(): | |||
| value["installed"] = os.path.isdir("./modules/plugins/%s/" % (key)) | |||
| return json.dumps(cbpi.cache["plugins"]) | |||
| @@ -8,8 +8,6 @@ from flask_socketio import SocketIO, emit | |||
| import logging | |||
| from modules.core.core import CraftBeerPi, ActorBase, SensorBase | |||
| from modules.core.db import DBModel | |||
| @@ -15,7 +15,7 @@ class DummyTempSensor(SensorActive): | |||
| @cbpi.action("My Custom Action") | |||
| def my_action(self): | |||
| print "HELLO WORLD" | |||
| pass | |||
| def get_unit(self): | |||
| @@ -10,7 +10,7 @@ try: | |||
| GPIO.setmode(GPIO.BCM) | |||
| except Exception as e: | |||
| print e | |||
| print(e) | |||
| pass | |||
| @@ -25,11 +25,11 @@ class GPIOSimple(ActorBase): | |||
| GPIO.output(int(self.gpio), 0) | |||
| def on(self, power=0): | |||
| print "GPIO ON %s" % str(self.gpio) | |||
| print("GPIO ON %s" % str(self.gpio)) | |||
| GPIO.output(int(self.gpio), 1) | |||
| def off(self): | |||
| print "GPIO OFF" | |||
| print("GPIO OFF") | |||
| GPIO.output(int(self.gpio), 0) | |||
| @cbpi.actor | |||
| @@ -67,7 +67,7 @@ class GPIOPWM(ActorBase): | |||
| self.p.ChangeDutyCycle(self.power) | |||
| def off(self): | |||
| print "GPIO OFF" | |||
| print("GPIO OFF") | |||
| self.p.stop() | |||
| @@ -98,10 +98,10 @@ class Dummy(ActorBase): | |||
| :param power: int value between 0 - 100 | |||
| :return: | |||
| ''' | |||
| print "ON" | |||
| print("ON") | |||
| def off(self): | |||
| print "OFF" | |||
| print("OFF") | |||
| @@ -1,5 +1,5 @@ | |||
| import time | |||
| from thread import start_new_thread | |||
| #from threading import start_new_thread | |||
| from modules import cbpi | |||
| try: | |||
| @@ -44,8 +44,8 @@ class Buzzer(object): | |||
| time.sleep(i) | |||
| except Exception as e: | |||
| pass | |||
| start_new_thread(play, (self.sound,)) | |||
| ## TODO | |||
| #start_new_thread(play, (self.sound,)) | |||
| @cbpi.initalizer(order=1) | |||
| def init(cbpi): | |||
| @@ -46,7 +46,7 @@ class ConfigView(BaseView): | |||
| with cls.api.app.app_context(): | |||
| cls.api.cache[cls.cache_key] = {} | |||
| for key, value in cls.model.get_all().iteritems(): | |||
| for key, value in cls.model.get_all().items(): | |||
| cls.post_init_callback(value) | |||
| cls.api.cache[cls.cache_key][value.name] = value | |||
| @@ -104,6 +104,6 @@ class BaseView(FlaskView): | |||
| cls.api.cache[cls.cache_key].append(value) | |||
| else: | |||
| cls.api.cache[cls.cache_key] = {} | |||
| for key, value in cls.model.get_all().iteritems(): | |||
| for key, value in cls.model.get_all().items(): | |||
| cls.post_init_callback(value) | |||
| cls.api.cache[cls.cache_key][key] = value | |||
| @@ -42,7 +42,7 @@ class ControllerBase(object): | |||
| @staticmethod | |||
| def init_global(): | |||
| print "GLOBAL CONTROLLER INIT" | |||
| print("GLOBAL CONTROLLER INIT") | |||
| def notify(self, headline, message, type="success", timeout=5000): | |||
| self.api.notify(headline, message, type, timeout) | |||
| @@ -12,9 +12,9 @@ from time import localtime, strftime | |||
| from functools import wraps, update_wrapper | |||
| from props import * | |||
| from .props import * | |||
| from hardware import * | |||
| from .hardware import * | |||
| import time | |||
| import uuid | |||
| @@ -28,7 +28,7 @@ class ActorAPI(object): | |||
| def init_actors(self): | |||
| self.app.logger.info("Init Actors") | |||
| t = self.cache.get("actor_types") | |||
| for key, value in t.iteritems(): | |||
| for key, value in t.items(): | |||
| value.get("class").api = self | |||
| value.get("class").init_global() | |||
| @@ -89,7 +89,7 @@ class SensorAPI(object): | |||
| self.app.logger.info("Init Sensors") | |||
| t = self.cache.get("sensor_types") | |||
| for key, value in t.iteritems(): | |||
| for key, value in t.items(): | |||
| value.get("class").init_global() | |||
| for key in self.cache.get("sensors"): | |||
| @@ -292,7 +292,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): | |||
| t = tmpObj.__getattribute__(m) | |||
| self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable, "description": t.description}) | |||
| for name, method in cls.__dict__.iteritems(): | |||
| for name, method in cls.__dict__.items(): | |||
| if hasattr(method, "action"): | |||
| label = method.__getattribute__("label") | |||
| self.cache[key][cls.__name__]["actions"].append({"method": name, "label": label}) | |||
| @@ -309,10 +309,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): | |||
| def actor2(self, description="", power=True, **options): | |||
| def decorator(f): | |||
| print f() | |||
| print f | |||
| print options | |||
| print description | |||
| return f | |||
| return decorator | |||
| @@ -369,7 +366,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): | |||
| t = tmpObj.__getattribute__(m) | |||
| self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable, "description": t.description}) | |||
| for name, method in cls.__dict__.iteritems(): | |||
| for name, method in cls.__dict__.items(): | |||
| if hasattr(method, "action"): | |||
| label = method.__getattribute__("label") | |||
| self.cache[key][cls.__name__]["actions"].append({"method": name, "label": label}) | |||
| @@ -79,7 +79,7 @@ class DBModel(object): | |||
| cur = get_db().cursor() | |||
| if cls.__priamry_key__ is not None and kwargs.has_key(cls.__priamry_key__): | |||
| if cls.__priamry_key__ is not None and cls.__priamry_key__ in kwargs: | |||
| query = "INSERT INTO %s (%s, %s) VALUES (?, %s)" % ( | |||
| cls.__table_name__, | |||
| cls.__priamry_key__, | |||
| @@ -1,12 +1,15 @@ | |||
| import sqlite3 | |||
| import os | |||
| from modules import cbpi | |||
| from db import get_db | |||
| from .db import get_db | |||
| def execute_file(curernt_version, data): | |||
| # TODO add if block | |||
| ''' | |||
| if curernt_version >= data["version"]: | |||
| cbpi.app.logger.info("SKIP DB FILE: %s" % data["file"]) | |||
| return | |||
| ''' | |||
| try: | |||
| with sqlite3.connect("craftbeerpi.db") as conn: | |||
| with open('./update/%s' % data["file"], 'r') as f: | |||
| @@ -19,8 +22,8 @@ def execute_file(curernt_version, data): | |||
| conn.commit() | |||
| except sqlite3.OperationalError as err: | |||
| print "EXCEPT" | |||
| print err | |||
| print("EXCEPT") | |||
| print(err) | |||
| @cbpi.initalizer(order=-9999) | |||
| def init(app=None): | |||
| @@ -40,18 +40,16 @@ class Base(object): | |||
| class SensorBase(Base): | |||
| last_value = 0 | |||
| def init(self): | |||
| print "INIT Base SENSOR" | |||
| print("INIT Base SENSOR") | |||
| def stop(self): | |||
| print "STOP SENSOR" | |||
| print("STOP SENSOR") | |||
| def data_received(self, data): | |||
| self.last_value = data | |||
| self.api.receive_sensor_value(self.id, data) | |||
| @@ -65,12 +63,11 @@ class SensorBase(Base): | |||
| return {"value": self.last_value, "unit": self.get_unit()} | |||
| class SensorActive(SensorBase): | |||
| class SensorActive(SensorBase): | |||
| __running = False | |||
| def is_running(self): | |||
| return self.__running | |||
| def init(self): | |||
| @@ -79,14 +76,13 @@ class SensorActive(SensorBase): | |||
| def stop(self): | |||
| self.__running = False | |||
| def execute(self): | |||
| pass | |||
| class SensorPassive(SensorBase): | |||
| def init(self): | |||
| print "INIT PASSIV SENSOR" | |||
| print("INIT PASSIV SENSOR") | |||
| pass | |||
| def read(self): | |||
| @@ -109,10 +109,10 @@ class StepBase(Timer, ActorAPI, SensorAPI, KettleAPI): | |||
| pass | |||
| def execute(self): | |||
| print "-------------" | |||
| print "Step Info" | |||
| print "Kettle ID: %s" % self.kettle_id | |||
| print "ID: %s" % self.id | |||
| print("-------------") | |||
| print("Step Info") | |||
| print("Kettle ID: %s" % self.kettle_id) | |||
| print("ID: %s" % self.id) | |||
| def __init__(self, *args, **kwds): | |||
| @@ -210,7 +210,7 @@ class FermenterView(BaseView): | |||
| def toggle(self, id): | |||
| fermenter = cbpi.cache.get(self.cache_key)[id] | |||
| try: | |||
| print fermenter.state | |||
| print(fermenter.state) | |||
| if fermenter.state is False: | |||
| # Start controller | |||
| if fermenter.logic is not None: | |||
| @@ -236,7 +236,7 @@ class FermenterView(BaseView): | |||
| cbpi.emit("UPDATE_FERMENTER", cbpi.cache.get(self.cache_key).get(id)) | |||
| except Exception as e: | |||
| print e | |||
| print(e) | |||
| cbpi.notify("Toogle Fementer Controller failed", "Pleae check the %s configuration" % fermenter.name, | |||
| type="danger", timeout=None) | |||
| return ('', 500) | |||
| @@ -261,7 +261,7 @@ class FermenterView(BaseView): | |||
| cbpi.emit("UPDATE_FERMENTER", cbpi.cache.get(self.cache_key)[id]) | |||
| def check_step(self): | |||
| for key, value in cbpi.cache["fermenter_task"].iteritems(): | |||
| for key, value in cbpi.cache["fermenter_task"].items(): | |||
| try: | |||
| fermenter = self.get_fermenter(key) | |||
| @@ -292,7 +292,7 @@ def read_target_temps(api): | |||
| :return: None | |||
| """ | |||
| result = {} | |||
| for key, value in cbpi.cache.get("fermenter").iteritems(): | |||
| for key, value in cbpi.cache.get("fermenter").items(): | |||
| cbpi.save_to_file(key, value.target_temp, prefix="fermenter") | |||
| @@ -86,7 +86,7 @@ def read_target_temps(api): | |||
| :return: None | |||
| """ | |||
| result = {} | |||
| for key, value in cbpi.cache.get("kettle").iteritems(): | |||
| for key, value in cbpi.cache.get("kettle").items(): | |||
| cbpi.save_to_file(key, value.target_temp, prefix="kettle") | |||
| @cbpi.initalizer() | |||
| @@ -1 +0,0 @@ | |||
| import endpoints | |||
| @@ -1,3 +0,0 @@ | |||
| import beerxml | |||
| import kbh | |||
| import restapi | |||
| @@ -29,7 +29,7 @@ class KBH(FlaskView): | |||
| result.append({"id": row[0], "name": row[1], "brewed": row[2]}) | |||
| return json.dumps(result) | |||
| except Exception as e: | |||
| print e | |||
| print(e) | |||
| self.api.notify(headline="Failed to load KHB database", message="ERROR", type="danger") | |||
| return ('', 500) | |||
| finally: | |||
| @@ -43,6 +43,6 @@ def read_passive_sensor(api): | |||
| :return: None | |||
| """ | |||
| for key, value in cbpi.cache.get("sensors").iteritems(): | |||
| for key, value in cbpi.cache.get("sensors").items(): | |||
| if value.mode == "P": | |||
| value.instance.read() | |||
| @@ -1 +0,0 @@ | |||
| import endpoints | |||
| @@ -109,7 +109,7 @@ class SystemView(FlaskView): | |||
| vf = self.api.app.view_functions | |||
| for f in self.api.app.view_functions: | |||
| print f | |||
| print(f) | |||
| endpoints = {} | |||
| re = { | |||
| "swagger": "2.0", | |||
| @@ -1 +0,0 @@ | |||
| import endpoints | |||
| @@ -0,0 +1,76 @@ | |||
| # 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 | |||
| @@ -0,0 +1,37 @@ | |||
| # 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 | |||
| @@ -0,0 +1,75 @@ | |||
| # 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 | |||
| @@ -0,0 +1,11 @@ | |||
| #!/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()) | |||
| @@ -0,0 +1,11 @@ | |||
| #!/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()) | |||
| @@ -0,0 +1,11 @@ | |||
| #!/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()) | |||
| @@ -0,0 +1,11 @@ | |||
| #!/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()) | |||
| @@ -0,0 +1,12 @@ | |||
| #!/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')() | |||
| ) | |||
| @@ -0,0 +1,12 @@ | |||
| #!/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')() | |||
| ) | |||
| @@ -0,0 +1,12 @@ | |||
| #!/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')() | |||
| ) | |||
| @@ -0,0 +1,157 @@ | |||
| /* 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 */ | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,39 @@ | |||
| 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. | |||
| @@ -0,0 +1,121 @@ | |||
| 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 | |||
| @@ -0,0 +1,40 @@ | |||
| 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,, | |||
| @@ -0,0 +1,6 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.31.1) | |||
| Root-Is-Purelib: true | |||
| Tag: py2-none-any | |||
| Tag: py3-none-any | |||
| @@ -0,0 +1 @@ | |||
| click | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,28 @@ | |||
| Copyright 2010 Pallets | |||
| Redistribution and use in source and binary forms, with or without | |||
| modification, are permitted provided that the following conditions are | |||
| met: | |||
| 1. Redistributions of source code must retain the above copyright | |||
| notice, this list of conditions and the following disclaimer. | |||
| 2. Redistributions in binary form must reproduce the above copyright | |||
| notice, this list of conditions and the following disclaimer in the | |||
| documentation and/or other materials provided with the distribution. | |||
| 3. Neither the name of the copyright holder nor the names of its | |||
| contributors may be used to endorse or promote products derived from | |||
| this software without specific prior written permission. | |||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | |||
| PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |||
| HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | |||
| TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |||
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| @@ -0,0 +1,134 @@ | |||
| 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/ | |||
| @@ -0,0 +1,48 @@ | |||
| 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,, | |||
| @@ -0,0 +1,6 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.33.4) | |||
| Root-Is-Purelib: true | |||
| Tag: py2-none-any | |||
| Tag: py3-none-any | |||
| @@ -0,0 +1,3 @@ | |||
| [console_scripts] | |||
| flask = flask.cli:main | |||
| @@ -0,0 +1 @@ | |||
| flask | |||
| @@ -0,0 +1,27 @@ | |||
| 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 | |||
| @@ -0,0 +1,10 @@ | |||
| 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 | |||
| @@ -0,0 +1 @@ | |||
| @@ -0,0 +1,8 @@ | |||
| ../__pycache__/flask_classy.cpython-36.pyc | |||
| ../flask_classy.py | |||
| PKG-INFO | |||
| SOURCES.txt | |||
| dependency_links.txt | |||
| not-zip-safe | |||
| requires.txt | |||
| top_level.txt | |||
| @@ -0,0 +1 @@ | |||
| @@ -0,0 +1 @@ | |||
| Flask>=0.9 | |||
| @@ -0,0 +1 @@ | |||
| flask_classy | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,20 @@ | |||
| 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. | |||
| @@ -0,0 +1,28 @@ | |||
| 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. | |||
| @@ -0,0 +1,14 @@ | |||
| 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,, | |||
| @@ -0,0 +1,6 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.33.4) | |||
| Root-Is-Purelib: true | |||
| Tag: py2-none-any | |||
| Tag: py3-none-any | |||
| @@ -0,0 +1 @@ | |||
| flask_socketio | |||
| @@ -0,0 +1,38 @@ | |||
| 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. | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,30 @@ | |||
| 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. | |||
| @@ -0,0 +1,30 @@ | |||
| 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 | |||
| @@ -0,0 +1,205 @@ | |||
| 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,, | |||
| @@ -0,0 +1,5 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.33.4) | |||
| Root-Is-Purelib: true | |||
| Tag: py3-none-any | |||
| @@ -0,0 +1 @@ | |||
| git | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,31 @@ | |||
| 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. | |||
| @@ -0,0 +1,67 @@ | |||
| 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/ | |||
| @@ -0,0 +1,61 @@ | |||
| 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,, | |||
| @@ -0,0 +1,6 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.33.1) | |||
| Root-Is-Purelib: true | |||
| Tag: py2-none-any | |||
| Tag: py3-none-any | |||
| @@ -0,0 +1,4 @@ | |||
| [babel.extractors] | |||
| jinja2 = jinja2.ext:babel_extract[i18n] | |||
| @@ -0,0 +1 @@ | |||
| jinja2 | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,28 @@ | |||
| Copyright 2010 Pallets | |||
| Redistribution and use in source and binary forms, with or without | |||
| modification, are permitted provided that the following conditions are | |||
| met: | |||
| 1. Redistributions of source code must retain the above copyright | |||
| notice, this list of conditions and the following disclaimer. | |||
| 2. Redistributions in binary form must reproduce the above copyright | |||
| notice, this list of conditions and the following disclaimer in the | |||
| documentation and/or other materials provided with the distribution. | |||
| 3. Neither the name of the copyright holder nor the names of its | |||
| contributors may be used to endorse or promote products derived from | |||
| this software without specific prior written permission. | |||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | |||
| PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |||
| HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | |||
| TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |||
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| @@ -0,0 +1,103 @@ | |||
| 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 | |||
| @@ -0,0 +1,16 @@ | |||
| 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,, | |||
| @@ -0,0 +1,5 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.33.1) | |||
| Root-Is-Purelib: false | |||
| Tag: cp36-cp36m-macosx_10_6_intel | |||
| @@ -0,0 +1 @@ | |||
| markupsafe | |||
| @@ -0,0 +1,38 @@ | |||
| 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.* | |||
| @@ -0,0 +1,27 @@ | |||
| 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 | |||
| @@ -0,0 +1 @@ | |||
| @@ -0,0 +1,38 @@ | |||
| ../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 | |||
| @@ -0,0 +1,2 @@ | |||
| _yaml | |||
| yaml | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,28 @@ | |||
| Copyright 2007 Pallets | |||
| Redistribution and use in source and binary forms, with or without | |||
| modification, are permitted provided that the following conditions are | |||
| met: | |||
| 1. Redistributions of source code must retain the above copyright | |||
| notice, this list of conditions and the following disclaimer. | |||
| 2. Redistributions in binary form must reproduce the above copyright | |||
| notice, this list of conditions and the following disclaimer in the | |||
| documentation and/or other materials provided with the distribution. | |||
| 3. Neither the name of the copyright holder nor the names of its | |||
| contributors may be used to endorse or promote products derived from | |||
| this software without specific prior written permission. | |||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | |||
| PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |||
| HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | |||
| TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |||
| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |||
| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |||
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| @@ -0,0 +1,128 @@ | |||
| Metadata-Version: 2.1 | |||
| Name: Werkzeug | |||
| Version: 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/ | |||
| @@ -0,0 +1,119 @@ | |||
| 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,, | |||
| @@ -0,0 +1,6 @@ | |||
| Wheel-Version: 1.0 | |||
| Generator: bdist_wheel (0.33.4) | |||
| Root-Is-Purelib: true | |||
| Tag: py2-none-any | |||
| Tag: py3-none-any | |||
| @@ -0,0 +1 @@ | |||
| werkzeug | |||
| @@ -0,0 +1,50 @@ | |||
| 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/ | |||
| @@ -0,0 +1 @@ | |||
| pip | |||
| @@ -0,0 +1,21 @@ | |||
| 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 $ | |||
| @@ -0,0 +1,74 @@ | |||
| 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/ | |||
| @@ -0,0 +1,15 @@ | |||
| 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,, | |||