| @@ -7,7 +7,7 @@ from flask_socketio import SocketIO, emit | |||||
| import logging | import logging | ||||
| # Define the WSGI application object | # Define the WSGI application object | ||||
| from app_config import * | |||||
| from .app_config import * | |||||
| import pprint | import pprint | ||||
| from modules.core.db import get_db | from modules.core.db import get_db | ||||
| @@ -30,15 +30,15 @@ import modules.actor | |||||
| import modules.notification | import modules.notification | ||||
| import modules.fermenter | import modules.fermenter | ||||
| from modules.addon.endpoints import initPlugins | 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.buzzer | ||||
| import modules.stats | import modules.stats | ||||
| import modules.kettle | import modules.kettle | ||||
| import modules.recipe_import | import modules.recipe_import | ||||
| import modules.core.db_mirgrate | import modules.core.db_mirgrate | ||||
| from app_config import cbpi | |||||
| from .app_config import cbpi | |||||
| # Build the database: | # Build the database: | ||||
| # This will create the database file using SQLAlchemy | # This will create the database file using SQLAlchemy | ||||
| @@ -47,7 +47,7 @@ pp = pprint.PrettyPrinter(indent=6) | |||||
| def init_db(): | def init_db(): | ||||
| print "INIT DB" | |||||
| print("INIT DB") | |||||
| with app.app_context(): | with app.app_context(): | ||||
| db = get_db() | 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") | response = requests.get("https://raw.githubusercontent.com/Manuel83/craftbeerpi-plugins/master/plugins.yaml") | ||||
| cbpi.cache["plugins"] = merge(yaml.load(response.text), cbpi.cache["plugins"]) | 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)) | value["installed"] = os.path.isdir("./modules/plugins/%s/" % (key)) | ||||
| return json.dumps(cbpi.cache["plugins"]) | return json.dumps(cbpi.cache["plugins"]) | ||||
| @@ -8,8 +8,6 @@ from flask_socketio import SocketIO, emit | |||||
| import logging | import logging | ||||
| from modules.core.core import CraftBeerPi, ActorBase, SensorBase | from modules.core.core import CraftBeerPi, ActorBase, SensorBase | ||||
| from modules.core.db import DBModel | from modules.core.db import DBModel | ||||
| @@ -15,7 +15,7 @@ class DummyTempSensor(SensorActive): | |||||
| @cbpi.action("My Custom Action") | @cbpi.action("My Custom Action") | ||||
| def my_action(self): | def my_action(self): | ||||
| print "HELLO WORLD" | |||||
| pass | pass | ||||
| def get_unit(self): | def get_unit(self): | ||||
| @@ -10,7 +10,7 @@ try: | |||||
| GPIO.setmode(GPIO.BCM) | GPIO.setmode(GPIO.BCM) | ||||
| except Exception as e: | except Exception as e: | ||||
| print e | |||||
| print(e) | |||||
| pass | pass | ||||
| @@ -25,11 +25,11 @@ class GPIOSimple(ActorBase): | |||||
| GPIO.output(int(self.gpio), 0) | GPIO.output(int(self.gpio), 0) | ||||
| def on(self, power=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) | GPIO.output(int(self.gpio), 1) | ||||
| def off(self): | def off(self): | ||||
| print "GPIO OFF" | |||||
| print("GPIO OFF") | |||||
| GPIO.output(int(self.gpio), 0) | GPIO.output(int(self.gpio), 0) | ||||
| @cbpi.actor | @cbpi.actor | ||||
| @@ -67,7 +67,7 @@ class GPIOPWM(ActorBase): | |||||
| self.p.ChangeDutyCycle(self.power) | self.p.ChangeDutyCycle(self.power) | ||||
| def off(self): | def off(self): | ||||
| print "GPIO OFF" | |||||
| print("GPIO OFF") | |||||
| self.p.stop() | self.p.stop() | ||||
| @@ -98,10 +98,10 @@ class Dummy(ActorBase): | |||||
| :param power: int value between 0 - 100 | :param power: int value between 0 - 100 | ||||
| :return: | :return: | ||||
| ''' | ''' | ||||
| print "ON" | |||||
| print("ON") | |||||
| def off(self): | def off(self): | ||||
| print "OFF" | |||||
| print("OFF") | |||||
| @@ -1,5 +1,5 @@ | |||||
| import time | import time | ||||
| from thread import start_new_thread | |||||
| #from threading import start_new_thread | |||||
| from modules import cbpi | from modules import cbpi | ||||
| try: | try: | ||||
| @@ -44,8 +44,8 @@ class Buzzer(object): | |||||
| time.sleep(i) | time.sleep(i) | ||||
| except Exception as e: | except Exception as e: | ||||
| pass | pass | ||||
| start_new_thread(play, (self.sound,)) | |||||
| ## TODO | |||||
| #start_new_thread(play, (self.sound,)) | |||||
| @cbpi.initalizer(order=1) | @cbpi.initalizer(order=1) | ||||
| def init(cbpi): | def init(cbpi): | ||||
| @@ -46,7 +46,7 @@ class ConfigView(BaseView): | |||||
| with cls.api.app.app_context(): | with cls.api.app.app_context(): | ||||
| cls.api.cache[cls.cache_key] = {} | 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.post_init_callback(value) | ||||
| cls.api.cache[cls.cache_key][value.name] = 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) | cls.api.cache[cls.cache_key].append(value) | ||||
| else: | else: | ||||
| cls.api.cache[cls.cache_key] = {} | 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.post_init_callback(value) | ||||
| cls.api.cache[cls.cache_key][key] = value | cls.api.cache[cls.cache_key][key] = value | ||||
| @@ -42,7 +42,7 @@ class ControllerBase(object): | |||||
| @staticmethod | @staticmethod | ||||
| def init_global(): | def init_global(): | ||||
| print "GLOBAL CONTROLLER INIT" | |||||
| print("GLOBAL CONTROLLER INIT") | |||||
| def notify(self, headline, message, type="success", timeout=5000): | def notify(self, headline, message, type="success", timeout=5000): | ||||
| self.api.notify(headline, message, type, timeout) | self.api.notify(headline, message, type, timeout) | ||||
| @@ -12,9 +12,9 @@ from time import localtime, strftime | |||||
| from functools import wraps, update_wrapper | from functools import wraps, update_wrapper | ||||
| from props import * | |||||
| from .props import * | |||||
| from hardware import * | |||||
| from .hardware import * | |||||
| import time | import time | ||||
| import uuid | import uuid | ||||
| @@ -28,7 +28,7 @@ class ActorAPI(object): | |||||
| def init_actors(self): | def init_actors(self): | ||||
| self.app.logger.info("Init Actors") | self.app.logger.info("Init Actors") | ||||
| t = self.cache.get("actor_types") | 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").api = self | ||||
| value.get("class").init_global() | value.get("class").init_global() | ||||
| @@ -89,7 +89,7 @@ class SensorAPI(object): | |||||
| self.app.logger.info("Init Sensors") | self.app.logger.info("Init Sensors") | ||||
| t = self.cache.get("sensor_types") | t = self.cache.get("sensor_types") | ||||
| for key, value in t.iteritems(): | |||||
| for key, value in t.items(): | |||||
| value.get("class").init_global() | value.get("class").init_global() | ||||
| for key in self.cache.get("sensors"): | for key in self.cache.get("sensors"): | ||||
| @@ -292,7 +292,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): | |||||
| t = tmpObj.__getattribute__(m) | t = tmpObj.__getattribute__(m) | ||||
| self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable, "description": t.description}) | 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"): | if hasattr(method, "action"): | ||||
| label = method.__getattribute__("label") | label = method.__getattribute__("label") | ||||
| self.cache[key][cls.__name__]["actions"].append({"method": name, "label": 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 actor2(self, description="", power=True, **options): | ||||
| def decorator(f): | def decorator(f): | ||||
| print f() | |||||
| print f | |||||
| print options | |||||
| print description | |||||
| return f | return f | ||||
| return decorator | return decorator | ||||
| @@ -369,7 +366,7 @@ class CraftBeerPi(ActorAPI, SensorAPI): | |||||
| t = tmpObj.__getattribute__(m) | t = tmpObj.__getattribute__(m) | ||||
| self.cache[key][name]["properties"].append({"name": m, "label": t.label, "type": "kettle", "configurable": t.configurable, "description": t.description}) | 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"): | if hasattr(method, "action"): | ||||
| label = method.__getattribute__("label") | label = method.__getattribute__("label") | ||||
| self.cache[key][cls.__name__]["actions"].append({"method": name, "label": label}) | self.cache[key][cls.__name__]["actions"].append({"method": name, "label": label}) | ||||
| @@ -79,7 +79,7 @@ class DBModel(object): | |||||
| cur = get_db().cursor() | 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)" % ( | query = "INSERT INTO %s (%s, %s) VALUES (?, %s)" % ( | ||||
| cls.__table_name__, | cls.__table_name__, | ||||
| cls.__priamry_key__, | cls.__priamry_key__, | ||||
| @@ -1,12 +1,15 @@ | |||||
| import sqlite3 | import sqlite3 | ||||
| import os | import os | ||||
| from modules import cbpi | from modules import cbpi | ||||
| from db import get_db | |||||
| from .db import get_db | |||||
| def execute_file(curernt_version, data): | def execute_file(curernt_version, data): | ||||
| # TODO add if block | |||||
| ''' | |||||
| if curernt_version >= data["version"]: | if curernt_version >= data["version"]: | ||||
| cbpi.app.logger.info("SKIP DB FILE: %s" % data["file"]) | cbpi.app.logger.info("SKIP DB FILE: %s" % data["file"]) | ||||
| return | return | ||||
| ''' | |||||
| try: | try: | ||||
| with sqlite3.connect("craftbeerpi.db") as conn: | with sqlite3.connect("craftbeerpi.db") as conn: | ||||
| with open('./update/%s' % data["file"], 'r') as f: | with open('./update/%s' % data["file"], 'r') as f: | ||||
| @@ -19,8 +22,8 @@ def execute_file(curernt_version, data): | |||||
| conn.commit() | conn.commit() | ||||
| except sqlite3.OperationalError as err: | except sqlite3.OperationalError as err: | ||||
| print "EXCEPT" | |||||
| print err | |||||
| print("EXCEPT") | |||||
| print(err) | |||||
| @cbpi.initalizer(order=-9999) | @cbpi.initalizer(order=-9999) | ||||
| def init(app=None): | def init(app=None): | ||||
| @@ -40,18 +40,16 @@ class Base(object): | |||||
| class SensorBase(Base): | class SensorBase(Base): | ||||
| last_value = 0 | last_value = 0 | ||||
| def init(self): | def init(self): | ||||
| print "INIT Base SENSOR" | |||||
| print("INIT Base SENSOR") | |||||
| def stop(self): | def stop(self): | ||||
| print "STOP SENSOR" | |||||
| print("STOP SENSOR") | |||||
| def data_received(self, data): | def data_received(self, data): | ||||
| self.last_value = data | self.last_value = data | ||||
| self.api.receive_sensor_value(self.id, 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()} | return {"value": self.last_value, "unit": self.get_unit()} | ||||
| class SensorActive(SensorBase): | |||||
| class SensorActive(SensorBase): | |||||
| __running = False | __running = False | ||||
| def is_running(self): | def is_running(self): | ||||
| return self.__running | return self.__running | ||||
| def init(self): | def init(self): | ||||
| @@ -79,14 +76,13 @@ class SensorActive(SensorBase): | |||||
| def stop(self): | def stop(self): | ||||
| self.__running = False | self.__running = False | ||||
| def execute(self): | def execute(self): | ||||
| pass | pass | ||||
| class SensorPassive(SensorBase): | class SensorPassive(SensorBase): | ||||
| def init(self): | def init(self): | ||||
| print "INIT PASSIV SENSOR" | |||||
| print("INIT PASSIV SENSOR") | |||||
| pass | pass | ||||
| def read(self): | def read(self): | ||||
| @@ -109,10 +109,10 @@ class StepBase(Timer, ActorAPI, SensorAPI, KettleAPI): | |||||
| pass | pass | ||||
| def execute(self): | 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): | def __init__(self, *args, **kwds): | ||||
| @@ -210,7 +210,7 @@ class FermenterView(BaseView): | |||||
| def toggle(self, id): | def toggle(self, id): | ||||
| fermenter = cbpi.cache.get(self.cache_key)[id] | fermenter = cbpi.cache.get(self.cache_key)[id] | ||||
| try: | try: | ||||
| print fermenter.state | |||||
| print(fermenter.state) | |||||
| if fermenter.state is False: | if fermenter.state is False: | ||||
| # Start controller | # Start controller | ||||
| if fermenter.logic is not None: | 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)) | cbpi.emit("UPDATE_FERMENTER", cbpi.cache.get(self.cache_key).get(id)) | ||||
| except Exception as e: | except Exception as e: | ||||
| print e | |||||
| print(e) | |||||
| cbpi.notify("Toogle Fementer Controller failed", "Pleae check the %s configuration" % fermenter.name, | cbpi.notify("Toogle Fementer Controller failed", "Pleae check the %s configuration" % fermenter.name, | ||||
| type="danger", timeout=None) | type="danger", timeout=None) | ||||
| return ('', 500) | return ('', 500) | ||||
| @@ -261,7 +261,7 @@ class FermenterView(BaseView): | |||||
| cbpi.emit("UPDATE_FERMENTER", cbpi.cache.get(self.cache_key)[id]) | cbpi.emit("UPDATE_FERMENTER", cbpi.cache.get(self.cache_key)[id]) | ||||
| def check_step(self): | def check_step(self): | ||||
| for key, value in cbpi.cache["fermenter_task"].iteritems(): | |||||
| for key, value in cbpi.cache["fermenter_task"].items(): | |||||
| try: | try: | ||||
| fermenter = self.get_fermenter(key) | fermenter = self.get_fermenter(key) | ||||
| @@ -292,7 +292,7 @@ def read_target_temps(api): | |||||
| :return: None | :return: None | ||||
| """ | """ | ||||
| result = {} | 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") | cbpi.save_to_file(key, value.target_temp, prefix="fermenter") | ||||
| @@ -86,7 +86,7 @@ def read_target_temps(api): | |||||
| :return: None | :return: None | ||||
| """ | """ | ||||
| result = {} | 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.save_to_file(key, value.target_temp, prefix="kettle") | ||||
| @cbpi.initalizer() | @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]}) | result.append({"id": row[0], "name": row[1], "brewed": row[2]}) | ||||
| return json.dumps(result) | return json.dumps(result) | ||||
| except Exception as e: | except Exception as e: | ||||
| print e | |||||
| print(e) | |||||
| self.api.notify(headline="Failed to load KHB database", message="ERROR", type="danger") | self.api.notify(headline="Failed to load KHB database", message="ERROR", type="danger") | ||||
| return ('', 500) | return ('', 500) | ||||
| finally: | finally: | ||||
| @@ -43,6 +43,6 @@ def read_passive_sensor(api): | |||||
| :return: None | :return: None | ||||
| """ | """ | ||||
| for key, value in cbpi.cache.get("sensors").iteritems(): | |||||
| for key, value in cbpi.cache.get("sensors").items(): | |||||
| if value.mode == "P": | if value.mode == "P": | ||||
| value.instance.read() | value.instance.read() | ||||
| @@ -1 +0,0 @@ | |||||
| import endpoints | |||||
| @@ -109,7 +109,7 @@ class SystemView(FlaskView): | |||||
| vf = self.api.app.view_functions | vf = self.api.app.view_functions | ||||
| for f in self.api.app.view_functions: | for f in self.api.app.view_functions: | ||||
| print f | |||||
| print(f) | |||||
| endpoints = {} | endpoints = {} | ||||
| re = { | re = { | ||||
| "swagger": "2.0", | "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,, | |||||