Initial commit
This commit is contained in:
commit
19697ea192
8
.idea/.gitignore
vendored
Normal file
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
10
.idea/OpenHome.iml
Normal file
10
.idea/OpenHome.iml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
6
.idea/inspectionProfiles/profiles_settings.xml
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
4
.idea/misc.xml
Normal file
4
.idea/misc.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (OpenHome)" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/OpenHome.iml" filepath="$PROJECT_DIR$/.idea/OpenHome.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
BIN
__pycache__/cun.cpython-39.pyc
Normal file
BIN
__pycache__/cun.cpython-39.pyc
Normal file
Binary file not shown.
225
cun.py
Normal file
225
cun.py
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
from telnetlib import Telnet
|
||||||
|
import serial
|
||||||
|
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
|
||||||
|
class MAXPacketFactory:
|
||||||
|
def create_packet(rec: str):
|
||||||
|
pkt_type = int(rec[7:9], 16)
|
||||||
|
if pkt_type == 0:
|
||||||
|
return MAXPairPingPacket.from_received(rec)
|
||||||
|
elif pkt_type == 1:
|
||||||
|
return MAXPairPongPacket.from_received(rec)
|
||||||
|
elif pkt_type == 2:
|
||||||
|
return MAXAckPacket.from_received(rec)
|
||||||
|
elif pkt_type == 0xF1:
|
||||||
|
return MAXWakeUpPacket.from_received(rec)
|
||||||
|
elif pkt_type == 0xF0:
|
||||||
|
return MAXResetPacket.from_received(rec)
|
||||||
|
else:
|
||||||
|
print("Unknown message type: {}".format(pkt_type))
|
||||||
|
return MAXPacket.from_received(rec)
|
||||||
|
|
||||||
|
|
||||||
|
class MAXPacket:
|
||||||
|
def __init__(self, length, message_counter: str, message_type: str, message_flag: str, sender_address: str, dest_address: str,
|
||||||
|
group_id:str):
|
||||||
|
self.length = length
|
||||||
|
self.counter = message_counter
|
||||||
|
self.type = message_type
|
||||||
|
self.flag = message_flag
|
||||||
|
self.sender_address = sender_address
|
||||||
|
self.dest_address = dest_address
|
||||||
|
self.group_id = group_id
|
||||||
|
|
||||||
|
def from_received(rec: str):
|
||||||
|
return MAXPacket(rec[1:3], rec[3:5], rec[5:7], rec[7:9], rec[9:15], rec[15:21], rec[21:23])
|
||||||
|
|
||||||
|
def gen_header(self):
|
||||||
|
header_str = "{}{}{}{}{}{}".format(self.counter, self.flag, self.type, self.sender_address,
|
||||||
|
self.dest_address, self.group_id)
|
||||||
|
return header_str
|
||||||
|
|
||||||
|
def to_string(self):
|
||||||
|
return "MAXPacket: len={}, counter={}, flag={}, type={}, sender_addr={}, dest_addr={}, group_id={}".format(
|
||||||
|
self.length, self.counter, self.flag, self.type, self.sender_address, self.dest_address, self.group_id
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MAXPairPingPacket(MAXPacket):
|
||||||
|
def from_received(rec: str):
|
||||||
|
result = MAXPacket.from_received(rec)
|
||||||
|
firmware_val = int(rec[23:25], 16)
|
||||||
|
result.firmware_major = firmware_val // 16
|
||||||
|
result.firmware_minor = firmware_val % 16
|
||||||
|
result.device_type = rec[25:27]
|
||||||
|
result.test_result = rec[27:29]
|
||||||
|
result.serial = rec[29:-2]
|
||||||
|
return result
|
||||||
|
|
||||||
|
def __init__(self, length, message_counter: str, message_type: str, message_flag: str, sender_address: str, dest_address: str,
|
||||||
|
group_id:str, firmware_major, firmware_minor, device_type, test_result, serial):
|
||||||
|
MAXPacket.__init__(length, message_counter, message_type, message_flag, sender_address, dest_address, group_id)
|
||||||
|
self.firmware_major = firmware_major
|
||||||
|
self.firmware_minor = firmware_minor
|
||||||
|
self.device_type = device_type
|
||||||
|
self.test_result = test_result
|
||||||
|
self.serial = serial
|
||||||
|
|
||||||
|
def to_string(self):
|
||||||
|
result = "{}\nMAXPairPingPacket: firmware_major={} firmware_minor={} device_type={} " \
|
||||||
|
"test_result={} serial={}".format(super().to_string(), self.firmware_major, self.firmware_minor,
|
||||||
|
self.device_type, self.test_result, self.serial)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class MAXPairPongPacket(MAXPacket):
|
||||||
|
# def __init__(self, rec):
|
||||||
|
# super().__init__(rec)
|
||||||
|
|
||||||
|
def __init__(self, message_counter: str, message_flag: str, sender_address: str, dest_address: str,
|
||||||
|
group_id:str):
|
||||||
|
MAXPacket.__init__(message_counter, "01", message_flag, sender_address, dest_address, group_id)
|
||||||
|
self.payload = "00"
|
||||||
|
|
||||||
|
def serialize(self):
|
||||||
|
header = self.gen_header()
|
||||||
|
length = (len(header) + len(self.payload))/2
|
||||||
|
return "Zs{}{}{}".format(length, header, self.payload)
|
||||||
|
|
||||||
|
|
||||||
|
class MAXAckPacket(MAXPacket):
|
||||||
|
def __init__(self, rec):
|
||||||
|
super().__init__(rec)
|
||||||
|
|
||||||
|
|
||||||
|
class MAXWakeUpPacket(MAXPacket):
|
||||||
|
def __init__(self, rec):
|
||||||
|
super().__init__(rec)
|
||||||
|
|
||||||
|
|
||||||
|
class MAXResetPacket(MAXPacket):
|
||||||
|
def __init__(self, rec):
|
||||||
|
super().__init__(rec)
|
||||||
|
|
||||||
|
|
||||||
|
class CUL:
|
||||||
|
def __init__(self):
|
||||||
|
self.client: serial.Serial = None
|
||||||
|
|
||||||
|
def connect(self, port):
|
||||||
|
if self.client is None:
|
||||||
|
self.client = serial.Serial(port, 38400, timeout=1)
|
||||||
|
|
||||||
|
def disconnect(self):
|
||||||
|
if self.client is not None:
|
||||||
|
self.client.close()
|
||||||
|
self.client = None
|
||||||
|
|
||||||
|
def request(self, req):
|
||||||
|
if self.client is not None:
|
||||||
|
self.client.write(req.encode())
|
||||||
|
self.client.write(b"\n")
|
||||||
|
if DEBUG:
|
||||||
|
print(">>> {}".format(req))
|
||||||
|
else:
|
||||||
|
print("Request while not connected!")
|
||||||
|
|
||||||
|
def response(self):
|
||||||
|
if self.client is not None:
|
||||||
|
response = self.client.read(100).decode()
|
||||||
|
if DEBUG:
|
||||||
|
print("<<< {}".format(response))
|
||||||
|
return response
|
||||||
|
else:
|
||||||
|
print("Waiting for response while not connected!")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def version_string(self):
|
||||||
|
self.request("V")
|
||||||
|
return self.response()
|
||||||
|
|
||||||
|
def is_connected(self):
|
||||||
|
return self.client is not None
|
||||||
|
|
||||||
|
def set_moritz_mode(self, moritz_mode_enable):
|
||||||
|
if moritz_mode_enable:
|
||||||
|
self.request("Zr")
|
||||||
|
#return self.response()
|
||||||
|
else:
|
||||||
|
self.request("Zx")
|
||||||
|
|
||||||
|
|
||||||
|
class CUN:
|
||||||
|
def __init__(self):
|
||||||
|
self.client: Telnet = None
|
||||||
|
|
||||||
|
def connect(self, host, ip):
|
||||||
|
if self.client is None:
|
||||||
|
self.client = Telnet(host, ip)
|
||||||
|
|
||||||
|
def disconnect(self):
|
||||||
|
if self.client is not None:
|
||||||
|
self.client.close()
|
||||||
|
self.client = None
|
||||||
|
|
||||||
|
def version_string(self):
|
||||||
|
self.request("V")
|
||||||
|
return self.response()
|
||||||
|
|
||||||
|
def request(self, req):
|
||||||
|
if self.client is not None:
|
||||||
|
self.client.write(req.encode())
|
||||||
|
self.client.write(b"\n")
|
||||||
|
if DEBUG:
|
||||||
|
print(">>> {}".format(req))
|
||||||
|
else:
|
||||||
|
print("Request while not connected!")
|
||||||
|
|
||||||
|
def response(self):
|
||||||
|
if self.client is not None:
|
||||||
|
response = self.client.read_some().decode()
|
||||||
|
if DEBUG:
|
||||||
|
print("<<< {}".format(response))
|
||||||
|
return response
|
||||||
|
else:
|
||||||
|
print("Waiting for response while not connected!")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def set_moritz_mode(self, moritz_mode_enable):
|
||||||
|
if moritz_mode_enable:
|
||||||
|
self.request("Zr")
|
||||||
|
#return self.response()
|
||||||
|
else:
|
||||||
|
self.request("Zx")
|
||||||
|
|
||||||
|
def configure(self, ip, netmask, gateway, ):
|
||||||
|
# ToDo: NYI
|
||||||
|
pass
|
||||||
|
|
||||||
|
def h_request(self):
|
||||||
|
self.request("H?")
|
||||||
|
return self.response()
|
||||||
|
|
||||||
|
def send_moritz(self, packet: MAXPacket):
|
||||||
|
# llnnccttssssssddddddpp...
|
||||||
|
# ll - length
|
||||||
|
# nn - msg counter
|
||||||
|
# cc - control byte
|
||||||
|
# tt - msg type
|
||||||
|
# ss - sender address(3 byte)
|
||||||
|
# dd - destination address(3 byte - 000000 for broadcast)
|
||||||
|
# pp - payload...
|
||||||
|
len_str = packet.length
|
||||||
|
msg_counter_str = packet.ms
|
||||||
|
control_byte_str = "00"
|
||||||
|
message_type_str = "02"
|
||||||
|
sender_addr_str = "000000"
|
||||||
|
dest_addr_str = "000000"
|
||||||
|
payload = "l:"
|
||||||
|
self.request("Zs{}{}{}{}{}{}{}".format(packet.length, packet.message_counter, control_byte_str,
|
||||||
|
message_type_str, sender_addr_str,
|
||||||
|
dest_addr_str, payload))
|
||||||
|
#self.request("l:")
|
||||||
|
return self.response()
|
35
main.py
Normal file
35
main.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
from cun import CUL, MAXPacketFactory, MAXPacket, MAXPairPingPacket, MAXPairPongPacket
|
||||||
|
import time
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
#cun = CUN()
|
||||||
|
#cun.connect("192.168.0.244", 2323)
|
||||||
|
#cun.request(b"V\n")
|
||||||
|
#print(cun.response())
|
||||||
|
#version = cun.version_string()
|
||||||
|
#print(version)
|
||||||
|
#cun.set_moritz_mode(True)
|
||||||
|
#print(cun.send_moritz())
|
||||||
|
#cun.request("Zsl:")
|
||||||
|
#print(cun.response())
|
||||||
|
#cun.disconnect()
|
||||||
|
|
||||||
|
cul = CUL()
|
||||||
|
cul.connect("COM8")
|
||||||
|
print(cul.version_string())
|
||||||
|
cul.set_moritz_mode(True)
|
||||||
|
while cul.is_connected():
|
||||||
|
resp = cul.response()
|
||||||
|
if resp is not None and resp[0:1] == "Z":
|
||||||
|
pkt = MAXPacketFactory.create_packet(resp)
|
||||||
|
print(pkt.to_string())
|
||||||
|
if isinstance(pkt, MAXPairPingPacket):
|
||||||
|
print("Sending Pong!")
|
||||||
|
pong = MAXPairPongPacket(message_counter="00", message_flag="00", sender_address="FDF7CA",
|
||||||
|
dest_address=pkt.sender_address, group_id="00")
|
||||||
|
pong_str = pong.serialize()
|
||||||
|
cul.request(pong_str)
|
||||||
|
|
||||||
|
time.sleep(1)
|
||||||
|
cul.disconnect()
|
||||||
|
|
146
venv/Include/site/python3.9/greenlet/greenlet.h
Normal file
146
venv/Include/site/python3.9/greenlet/greenlet.h
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
/* -*- indent-tabs-mode: nil; tab-width: 4; -*- */
|
||||||
|
|
||||||
|
/* Greenlet object interface */
|
||||||
|
|
||||||
|
#ifndef Py_GREENLETOBJECT_H
|
||||||
|
#define Py_GREENLETOBJECT_H
|
||||||
|
|
||||||
|
#include <Python.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* This is deprecated and undocumented. It does not change. */
|
||||||
|
#define GREENLET_VERSION "1.0.0"
|
||||||
|
|
||||||
|
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;
|
||||||
|
#if PY_VERSION_HEX >= 0x030700A3
|
||||||
|
_PyErr_StackItem* exc_info;
|
||||||
|
_PyErr_StackItem exc_state;
|
||||||
|
#else
|
||||||
|
PyObject* exc_type;
|
||||||
|
PyObject* exc_value;
|
||||||
|
PyObject* exc_traceback;
|
||||||
|
#endif
|
||||||
|
PyObject* dict;
|
||||||
|
#if PY_VERSION_HEX >= 0x030700A3
|
||||||
|
PyObject* context;
|
||||||
|
#endif
|
||||||
|
#if PY_VERSION_HEX >= 0x30A00B1
|
||||||
|
CFrame* cframe;
|
||||||
|
#endif
|
||||||
|
} 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)
|
||||||
|
|
||||||
|
/* 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 */
|
||||||
|
/* NOTE: This has actually moved to ``greenlet._greenlet._C_API``, but we
|
||||||
|
keep the older definition to be sure older code that might have a copy of
|
||||||
|
the header still works. */
|
||||||
|
# define PyGreenlet_Import() \
|
||||||
|
{ \
|
||||||
|
_PyGreenlet_API = (void**)PyCapsule_Import("greenlet._C_API", 0); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* GREENLET_MODULE */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* !Py_GREENLETOBJECT_H */
|
1
venv/Lib/site-packages/Flask-2.0.1.dist-info/INSTALLER
Normal file
1
venv/Lib/site-packages/Flask-2.0.1.dist-info/INSTALLER
Normal file
@ -0,0 +1 @@
|
|||||||
|
pip
|
28
venv/Lib/site-packages/Flask-2.0.1.dist-info/LICENSE.rst
Normal file
28
venv/Lib/site-packages/Flask-2.0.1.dist-info/LICENSE.rst
Normal file
@ -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.
|
124
venv/Lib/site-packages/Flask-2.0.1.dist-info/METADATA
Normal file
124
venv/Lib/site-packages/Flask-2.0.1.dist-info/METADATA
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Flask
|
||||||
|
Version: 2.0.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: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://flask.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://flask.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source Code, https://github.com/pallets/flask/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets/flask/issues/
|
||||||
|
Project-URL: Twitter, https://twitter.com/PalletsTeam
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
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: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
||||||
|
Requires-Python: >=3.6
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
Requires-Dist: Werkzeug (>=2.0)
|
||||||
|
Requires-Dist: Jinja2 (>=3.0)
|
||||||
|
Requires-Dist: itsdangerous (>=2.0)
|
||||||
|
Requires-Dist: click (>=7.1.2)
|
||||||
|
Provides-Extra: async
|
||||||
|
Requires-Dist: asgiref (>=3.2) ; extra == 'async'
|
||||||
|
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.
|
||||||
|
|
||||||
|
.. _WSGI: https://wsgi.readthedocs.io/
|
||||||
|
.. _Werkzeug: https://werkzeug.palletsprojects.com/
|
||||||
|
.. _Jinja: https://jinja.palletsprojects.com/
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
$ pip install -U Flask
|
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||||
|
|
||||||
|
|
||||||
|
A Simple Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# save this as app.py
|
||||||
|
from flask import Flask
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/")
|
||||||
|
def hello():
|
||||||
|
return "Hello, World!"
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
$ flask run
|
||||||
|
* 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/main/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://palletsprojects.com/donate
|
||||||
|
|
||||||
|
|
||||||
|
Links
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://flask.palletsprojects.com/
|
||||||
|
- Changes: https://flask.palletsprojects.com/changes/
|
||||||
|
- PyPI Releases: https://pypi.org/project/Flask/
|
||||||
|
- Source Code: https://github.com/pallets/flask/
|
||||||
|
- Issue Tracker: https://github.com/pallets/flask/issues/
|
||||||
|
- Website: https://palletsprojects.com/p/flask/
|
||||||
|
- Twitter: https://twitter.com/PalletsTeam
|
||||||
|
- Chat: https://discord.gg/pallets
|
||||||
|
|
||||||
|
|
51
venv/Lib/site-packages/Flask-2.0.1.dist-info/RECORD
Normal file
51
venv/Lib/site-packages/Flask-2.0.1.dist-info/RECORD
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
../../Scripts/flask.exe,sha256=jAsR3j2HDZxKuPxMa4-KTV_CkpVSHVaFcQeGKvncEIE,106342
|
||||||
|
Flask-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Flask-2.0.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||||
|
Flask-2.0.1.dist-info/METADATA,sha256=50Jm1647RKw98p4RF64bCqRh0wajk-n3hQ7av2-pniA,3808
|
||||||
|
Flask-2.0.1.dist-info/RECORD,,
|
||||||
|
Flask-2.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
|
||||||
|
Flask-2.0.1.dist-info/entry_points.txt,sha256=gBLA1aKg0OYR8AhbAfg8lnburHtKcgJLDU52BBctN0k,42
|
||||||
|
Flask-2.0.1.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6
|
||||||
|
flask/__init__.py,sha256=w5v6GCNm8eLDMNWqs2ue7HLHo75aslAwz1h3k3YO9HY,2251
|
||||||
|
flask/__main__.py,sha256=bYt9eEaoRQWdejEHFD8REx9jxVEdZptECFsV7F49Ink,30
|
||||||
|
flask/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/__main__.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/app.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/blueprints.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/cli.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/config.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/ctx.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/debughelpers.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/globals.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/helpers.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/logging.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/scaffold.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/sessions.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/signals.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/templating.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/testing.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/typing.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/views.cpython-39.pyc,,
|
||||||
|
flask/__pycache__/wrappers.cpython-39.pyc,,
|
||||||
|
flask/app.py,sha256=q6lpiiWVxjljQRwjjneUBpfllXYPEq0CFAUpTQ5gIeA,82376
|
||||||
|
flask/blueprints.py,sha256=OjI-dkwx96ZNMUGDDFMKzgcpUJf240WRuMlHkmgI1Lc,23541
|
||||||
|
flask/cli.py,sha256=iN1pL2SevE5Nmvey-0WwnxG3nipZXIiE__Ed4lx3IuM,32036
|
||||||
|
flask/config.py,sha256=jj_7JGen_kYuTlKrx8ZPBsZddb8mihC0ODg4gcjXBX8,11068
|
||||||
|
flask/ctx.py,sha256=EM3W0v1ctuFQAGk_HWtQdoJEg_r2f5Le4xcmElxFwwk,17428
|
||||||
|
flask/debughelpers.py,sha256=wk5HtLwENsQ4e8tkxfBn6ykUeVRDuMbQCKgtEVe6jxk,6171
|
||||||
|
flask/globals.py,sha256=cWd-R2hUH3VqPhnmQNww892tQS6Yjqg_wg8UvW1M7NM,1723
|
||||||
|
flask/helpers.py,sha256=00WqA3wYeyjMrnAOPZTUyrnUf7H8ik3CVT0kqGl_qjk,30589
|
||||||
|
flask/json/__init__.py,sha256=d-db2DJMASq0G7CI-JvobehRE1asNRGX1rIDQ1GF9WM,11580
|
||||||
|
flask/json/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
flask/json/__pycache__/tag.cpython-39.pyc,,
|
||||||
|
flask/json/tag.py,sha256=fys3HBLssWHuMAIJuTcf2K0bCtosePBKXIWASZEEjnU,8857
|
||||||
|
flask/logging.py,sha256=1o_hirVGqdj7SBdETnhX7IAjklG89RXlrwz_2CjzQQE,2273
|
||||||
|
flask/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
flask/scaffold.py,sha256=EhQuiFrdcmJHxqPGQkEpqLsEUZ7ULZD0rtED2NrduvM,32400
|
||||||
|
flask/sessions.py,sha256=Kb7zY4qBIOU2cw1xM5mQ_KmgYUBDFbUYWjlkq0EFYis,15189
|
||||||
|
flask/signals.py,sha256=HQWgBEXlrLbHwLBoWqAStJKcN-rsB1_AMO8-VZ7LDOo,2126
|
||||||
|
flask/templating.py,sha256=l96VD39JQ0nue4Bcj7wZ4-FWWs-ppLxvgBCpwDQ4KAk,5626
|
||||||
|
flask/testing.py,sha256=OsHT-2B70abWH3ulY9IbhLchXIeyj3L-cfcDa88wv5E,10281
|
||||||
|
flask/typing.py,sha256=zVqhz53KklncAv-WxbpxGZfaRGOqeWAsLdP1tTMaCuE,1684
|
||||||
|
flask/views.py,sha256=F2PpWPloe4x0906IUjnPcsOqg5YvmQIfk07_lFeAD4s,5865
|
||||||
|
flask/wrappers.py,sha256=VndbHPRBSUUOejmd2Y3ydkoCVUtsS2OJIdJEVIkBVD8,5604
|
5
venv/Lib/site-packages/Flask-2.0.1.dist-info/WHEEL
Normal file
5
venv/Lib/site-packages/Flask-2.0.1.dist-info/WHEEL
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.36.2)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
[console_scripts]
|
||||||
|
flask = flask.cli:main
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
flask
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,28 @@
|
|||||||
|
Copyright 2010 Pallets
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,94 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Flask-SQLAlchemy
|
||||||
|
Version: 2.5.1
|
||||||
|
Summary: Adds SQLAlchemy support to your Flask application.
|
||||||
|
Home-page: https://github.com/pallets/flask-sqlalchemy
|
||||||
|
Author: Armin Ronacher
|
||||||
|
Author-email: armin.ronacher@active-4.com
|
||||||
|
Maintainer: Pallets
|
||||||
|
Maintainer-email: contact@palletsprojects.com
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Project-URL: Documentation, https://flask-sqlalchemy.palletsprojects.com/
|
||||||
|
Project-URL: Code, https://github.com/pallets/flask-sqlalchemy
|
||||||
|
Project-URL: Issue tracker, https://github.com/pallets/flask-sqlalchemy/issues
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Environment :: Web Environment
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: BSD License
|
||||||
|
Classifier: Operating System :: OS Independent
|
||||||
|
Classifier: Programming Language :: Python
|
||||||
|
Classifier: Programming Language :: Python :: 2
|
||||||
|
Classifier: Programming Language :: Python :: 2.7
|
||||||
|
Classifier: Programming Language :: Python :: 3
|
||||||
|
Classifier: Programming Language :: Python :: 3.4
|
||||||
|
Classifier: Programming Language :: Python :: 3.5
|
||||||
|
Classifier: Programming Language :: Python :: 3.6
|
||||||
|
Classifier: Programming Language :: Python :: 3.7
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||||
|
Requires-Python: >= 2.7, != 3.0.*, != 3.1.*, != 3.2.*, != 3.3.*
|
||||||
|
Requires-Dist: Flask (>=0.10)
|
||||||
|
Requires-Dist: SQLAlchemy (>=0.8.0)
|
||||||
|
|
||||||
|
Flask-SQLAlchemy
|
||||||
|
================
|
||||||
|
|
||||||
|
Flask-SQLAlchemy is an extension for `Flask`_ that adds support for
|
||||||
|
`SQLAlchemy`_ to your application. It aims to simplify using SQLAlchemy
|
||||||
|
with Flask by providing useful defaults and extra helpers that make it
|
||||||
|
easier to accomplish common tasks.
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
$ pip install -U Flask-SQLAlchemy
|
||||||
|
|
||||||
|
|
||||||
|
A Simple Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from flask import Flask
|
||||||
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///example.sqlite"
|
||||||
|
db = SQLAlchemy(app)
|
||||||
|
|
||||||
|
|
||||||
|
class User(db.Model):
|
||||||
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
|
username = db.Column(db.String, unique=True, nullable=False)
|
||||||
|
email = db.Column(db.String, unique=True, nullable=False)
|
||||||
|
|
||||||
|
|
||||||
|
db.session.add(User(name="Flask", email="example@example.com"))
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
users = User.query.all()
|
||||||
|
|
||||||
|
|
||||||
|
Links
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://flask-sqlalchemy.palletsprojects.com/
|
||||||
|
- Releases: https://pypi.org/project/Flask-SQLAlchemy/
|
||||||
|
- Code: https://github.com/pallets/flask-sqlalchemy
|
||||||
|
- Issue tracker: https://github.com/pallets/flask-sqlalchemy/issues
|
||||||
|
- Test status: https://travis-ci.org/pallets/flask-sqlalchemy
|
||||||
|
- Test coverage: https://codecov.io/gh/pallets/flask-sqlalchemy
|
||||||
|
|
||||||
|
.. _Flask: https://palletsprojects.com/p/flask/
|
||||||
|
.. _SQLAlchemy: https://www.sqlalchemy.org
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||||
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
Flask_SQLAlchemy-2.5.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Flask_SQLAlchemy-2.5.1.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||||
|
Flask_SQLAlchemy-2.5.1.dist-info/METADATA,sha256=vVCeMtTM_xOrUVoVyemeNaTUI5L9iXa16NsiMDDOgFU,3128
|
||||||
|
Flask_SQLAlchemy-2.5.1.dist-info/RECORD,,
|
||||||
|
Flask_SQLAlchemy-2.5.1.dist-info/WHEEL,sha256=Z-nyYpwrcSqxfdux5Mbn_DQ525iP7J2DG3JgGvOYyTQ,110
|
||||||
|
Flask_SQLAlchemy-2.5.1.dist-info/top_level.txt,sha256=w2K4fNNoTh4HItoFfz2FRQShSeLcvHYrzU_sZov21QU,17
|
||||||
|
flask_sqlalchemy/__init__.py,sha256=IaupgTRkQnY05KPLYvfiNnJdrmwoyfsxaiyGtrEYfO4,40738
|
||||||
|
flask_sqlalchemy/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
flask_sqlalchemy/__pycache__/_compat.cpython-39.pyc,,
|
||||||
|
flask_sqlalchemy/__pycache__/model.cpython-39.pyc,,
|
||||||
|
flask_sqlalchemy/__pycache__/utils.cpython-39.pyc,,
|
||||||
|
flask_sqlalchemy/_compat.py,sha256=yua0ZSgVWwi56QpEgwaPInzkNQ9PFb7YQdvEk3dImXo,821
|
||||||
|
flask_sqlalchemy/model.py,sha256=bd2mIv9LA1A2MZkQObgnMUCSrxNvyqplaSkCxyxKNxY,4988
|
||||||
|
flask_sqlalchemy/utils.py,sha256=4eHqAbYElnJ3NbSAHhuINckoAHDABoxjleMJD0iKgyg,1390
|
@ -0,0 +1,6 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.36.2)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py2-none-any
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
flask_sqlalchemy
|
1
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/INSTALLER
Normal file
1
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/INSTALLER
Normal file
@ -0,0 +1 @@
|
|||||||
|
pip
|
28
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/LICENSE.rst
Normal file
28
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/LICENSE.rst
Normal file
@ -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.
|
112
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/METADATA
Normal file
112
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/METADATA
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Jinja2
|
||||||
|
Version: 3.0.1
|
||||||
|
Summary: A very fast and expressive template engine.
|
||||||
|
Home-page: https://palletsprojects.com/p/jinja/
|
||||||
|
Author: Armin Ronacher
|
||||||
|
Author-email: armin.ronacher@active-4.com
|
||||||
|
Maintainer: Pallets
|
||||||
|
Maintainer-email: contact@palletsprojects.com
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Project-URL: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://jinja.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://jinja.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source Code, https://github.com/pallets/jinja/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets/jinja/issues/
|
||||||
|
Project-URL: Twitter, https://twitter.com/PalletsTeam
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
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: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Requires-Python: >=3.6
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
Requires-Dist: MarkupSafe (>=2.0)
|
||||||
|
Provides-Extra: i18n
|
||||||
|
Requires-Dist: Babel (>=2.7) ; extra == 'i18n'
|
||||||
|
|
||||||
|
Jinja
|
||||||
|
=====
|
||||||
|
|
||||||
|
Jinja is a fast, expressive, extensible templating engine. Special
|
||||||
|
placeholders in the template allow writing code similar to Python
|
||||||
|
syntax. Then the template is passed data to render the final document.
|
||||||
|
|
||||||
|
It includes:
|
||||||
|
|
||||||
|
- Template inheritance and inclusion.
|
||||||
|
- Define and import macros within templates.
|
||||||
|
- HTML templates can use autoescaping to prevent XSS from untrusted
|
||||||
|
user input.
|
||||||
|
- A sandboxed environment can safely render untrusted templates.
|
||||||
|
- AsyncIO support for generating templates and calling async
|
||||||
|
functions.
|
||||||
|
- I18N support with Babel.
|
||||||
|
- Templates are compiled to optimized Python code just-in-time and
|
||||||
|
cached, or can be compiled ahead-of-time.
|
||||||
|
- Exceptions point to the correct line in templates to make debugging
|
||||||
|
easier.
|
||||||
|
- Extensible filters, tests, functions, and even syntax.
|
||||||
|
|
||||||
|
Jinja's philosophy is that while application logic belongs in Python if
|
||||||
|
possible, it shouldn't make the template designer's job difficult by
|
||||||
|
restricting functionality too much.
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
$ pip install -U Jinja2
|
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||||
|
|
||||||
|
|
||||||
|
In A Nutshell
|
||||||
|
-------------
|
||||||
|
|
||||||
|
.. code-block:: jinja
|
||||||
|
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}Members{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<ul>
|
||||||
|
{% for user in users %}
|
||||||
|
<li><a href="{{ user.url }}">{{ user.username }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
Donate
|
||||||
|
------
|
||||||
|
|
||||||
|
The Pallets organization develops and supports Jinja 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
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://jinja.palletsprojects.com/
|
||||||
|
- Changes: https://jinja.palletsprojects.com/changes/
|
||||||
|
- PyPI Releases: https://pypi.org/project/Jinja2/
|
||||||
|
- Source Code: https://github.com/pallets/jinja/
|
||||||
|
- Issue Tracker: https://github.com/pallets/jinja/issues/
|
||||||
|
- Website: https://palletsprojects.com/p/jinja/
|
||||||
|
- Twitter: https://twitter.com/PalletsTeam
|
||||||
|
- Chat: https://discord.gg/pallets
|
||||||
|
|
||||||
|
|
58
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/RECORD
Normal file
58
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/RECORD
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Jinja2-3.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Jinja2-3.0.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
|
||||||
|
Jinja2-3.0.1.dist-info/METADATA,sha256=k6STiOONbGESP2rEKmjhznuG10vm9sNCHCUQL9AQFM4,3508
|
||||||
|
Jinja2-3.0.1.dist-info/RECORD,,
|
||||||
|
Jinja2-3.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
|
||||||
|
Jinja2-3.0.1.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61
|
||||||
|
Jinja2-3.0.1.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7
|
||||||
|
jinja2/__init__.py,sha256=fd8jaCRsCATgC7ahuUTD8CyfQoc4aRfALEIny4mwfog,2205
|
||||||
|
jinja2/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/_identifier.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/async_utils.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/bccache.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/compiler.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/constants.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/debug.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/defaults.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/environment.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/exceptions.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/ext.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/filters.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/idtracking.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/lexer.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/loaders.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/meta.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/nativetypes.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/nodes.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/optimizer.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/parser.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/runtime.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/sandbox.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/tests.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/utils.cpython-39.pyc,,
|
||||||
|
jinja2/__pycache__/visitor.cpython-39.pyc,,
|
||||||
|
jinja2/_identifier.py,sha256=EdgGJKi7O1yvr4yFlvqPNEqV6M1qHyQr8Gt8GmVTKVM,1775
|
||||||
|
jinja2/async_utils.py,sha256=bY2nCUfBA_4FSnNUsIsJgljBq3hACr6fzLi7LiyMTn8,1751
|
||||||
|
jinja2/bccache.py,sha256=smAvSDgDSvXdvJzCN_9s0XfkVpQEu8be-QwgeMlrwiM,12677
|
||||||
|
jinja2/compiler.py,sha256=qq0Fo9EpDAEwHPLAs3sAP7dindUvDrFrbx4AcB8xV5M,72046
|
||||||
|
jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433
|
||||||
|
jinja2/debug.py,sha256=uBmrsiwjYH5l14R9STn5mydOOyriBYol5lDGvEqAb3A,9238
|
||||||
|
jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267
|
||||||
|
jinja2/environment.py,sha256=T6U4be9mY1CUXXin_EQFwpvpFqCiryweGqzXGRYIoSA,61573
|
||||||
|
jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071
|
||||||
|
jinja2/ext.py,sha256=44SjDjeYkkxQTpmC2BetOTxEFMgQ42p2dfSwXmPFcSo,32122
|
||||||
|
jinja2/filters.py,sha256=LslRsJd0JVFBHtdfU_WraM1eQitotciwawiW-seR42U,52577
|
||||||
|
jinja2/idtracking.py,sha256=KdFVohVNK-baOwt_INPMco19D7AfLDEN8i3_JoiYnGQ,10713
|
||||||
|
jinja2/lexer.py,sha256=D5qOKB3KnRqK9gPAZFQvRguomYsQok5-14TKiWTN8Jw,29923
|
||||||
|
jinja2/loaders.py,sha256=ePpWB0xDrILgLVqNFcxqqSbPizsI0T-JlkNEUFqq9fo,22350
|
||||||
|
jinja2/meta.py,sha256=GNPEvifmSaU3CMxlbheBOZjeZ277HThOPUTf1RkppKQ,4396
|
||||||
|
jinja2/nativetypes.py,sha256=62hvvsAxAj0YaxylOHoREYVogJ5JqOlJISgGY3OKd_o,3675
|
||||||
|
jinja2/nodes.py,sha256=LHF97fu6GW4r2Z9UaOX92MOT1wZpdS9Nx4N-5Fp5ti8,34509
|
||||||
|
jinja2/optimizer.py,sha256=tHkMwXxfZkbfA1KmLcqmBMSaz7RLIvvItrJcPoXTyD8,1650
|
||||||
|
jinja2/parser.py,sha256=kHnU8v92GwMYkfr0MVakWv8UlSf_kJPx8LUsgQMof70,39767
|
||||||
|
jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
jinja2/runtime.py,sha256=bSWdawLjReKpKHhF3-96OIuWYpUy1yxFJCN3jBYyoXc,35013
|
||||||
|
jinja2/sandbox.py,sha256=-8zxR6TO9kUkciAVFsIKu8Oq-C7PTeYEdZ5TtA55-gw,14600
|
||||||
|
jinja2/tests.py,sha256=Am5Z6Lmfr2XaH_npIfJJ8MdXtWsbLjMULZJulTAj30E,5905
|
||||||
|
jinja2/utils.py,sha256=0wGkxDbxlW10y0ac4-kEiy1Bn0AsWXqz8uomK9Ugy1Q,26961
|
||||||
|
jinja2/visitor.py,sha256=ZmeLuTj66ic35-uFH-1m0EKXiw4ObDDb_WuE6h5vPFg,3572
|
5
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/WHEEL
Normal file
5
venv/Lib/site-packages/Jinja2-3.0.1.dist-info/WHEEL
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.36.2)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
[babel.extractors]
|
||||||
|
jinja2 = jinja2.ext:babel_extract [i18n]
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
jinja2
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
@ -0,0 +1,28 @@
|
|||||||
|
Copyright 2010 Pallets
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
100
venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/METADATA
Normal file
100
venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/METADATA
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: MarkupSafe
|
||||||
|
Version: 2.0.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: Pallets
|
||||||
|
Maintainer-email: contact@palletsprojects.com
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Project-URL: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source Code, https://github.com/pallets/markupsafe/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/
|
||||||
|
Project-URL: Twitter, https://twitter.com/PalletsTeam
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
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: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||||
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||||
|
Requires-Python: >=3.6
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
|
||||||
|
MarkupSafe
|
||||||
|
==========
|
||||||
|
|
||||||
|
MarkupSafe implements a text object that escapes characters so it is
|
||||||
|
safe to use in HTML and XML. Characters that have special meanings are
|
||||||
|
replaced so that they display as the actual characters. This mitigates
|
||||||
|
injection attacks, meaning untrusted user input can safely be displayed
|
||||||
|
on a page.
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
pip install -U MarkupSafe
|
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||||
|
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. code-block:: pycon
|
||||||
|
|
||||||
|
>>> from markupsafe import Markup, escape
|
||||||
|
|
||||||
|
>>> # escape replaces special characters and wraps in Markup
|
||||||
|
>>> escape("<script>alert(document.cookie);</script>")
|
||||||
|
Markup('<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 str subclass
|
||||||
|
>>> # methods and operators escape their arguments
|
||||||
|
>>> template = Markup("Hello <em>{name}</em>")
|
||||||
|
>>> template.format(name='"World"')
|
||||||
|
Markup('Hello <em>"World"</em>')
|
||||||
|
|
||||||
|
|
||||||
|
Donate
|
||||||
|
------
|
||||||
|
|
||||||
|
The Pallets organization develops and supports MarkupSafe 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
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://markupsafe.palletsprojects.com/
|
||||||
|
- Changes: https://markupsafe.palletsprojects.com/changes/
|
||||||
|
- PyPI Releases: https://pypi.org/project/MarkupSafe/
|
||||||
|
- Source Code: https://github.com/pallets/markupsafe/
|
||||||
|
- Issue Tracker: https://github.com/pallets/markupsafe/issues/
|
||||||
|
- Website: https://palletsprojects.com/p/markupsafe/
|
||||||
|
- Twitter: https://twitter.com/PalletsTeam
|
||||||
|
- Chat: https://discord.gg/pallets
|
||||||
|
|
||||||
|
|
13
venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/RECORD
Normal file
13
venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/RECORD
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
MarkupSafe-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
MarkupSafe-2.0.1.dist-info/LICENSE.rst,sha256=RjHsDbX9kKVH4zaBcmTGeYIUM4FG-KyUtKV_lu6MnsQ,1503
|
||||||
|
MarkupSafe-2.0.1.dist-info/METADATA,sha256=FmPpxBdaqCCjF-XKqoxeEzqAzhetQnrkkSsd3V3X-Jc,3211
|
||||||
|
MarkupSafe-2.0.1.dist-info/RECORD,,
|
||||||
|
MarkupSafe-2.0.1.dist-info/WHEEL,sha256=jr7ubY0Lkz_yXH9FfFe9PTtLhGOsf62dZkNvTYrJINE,100
|
||||||
|
MarkupSafe-2.0.1.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
||||||
|
markupsafe/__init__.py,sha256=s08KbuFRV3zh4Wh7xjsIphXgp1xf0EUB79wlPj-4scc,9211
|
||||||
|
markupsafe/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
markupsafe/__pycache__/_native.cpython-39.pyc,,
|
||||||
|
markupsafe/_native.py,sha256=JMXegJtk1ZcnRKrgyCA-CEXmRnOpaIXLyDAM98GbshY,2061
|
||||||
|
markupsafe/_speedups.cp39-win_amd64.pyd,sha256=hPTsANj9bt7hLYxWLuZcC7E3-EnJQ4GlvIf9Vx0p1p0,16384
|
||||||
|
markupsafe/_speedups.pyi,sha256=f5QtwIOP0eLrxh2v5p6SmaYmlcHIGIfmz0DovaqL0OU,238
|
||||||
|
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL
Normal file
5
venv/Lib/site-packages/MarkupSafe-2.0.1.dist-info/WHEEL
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.36.2)
|
||||||
|
Root-Is-Purelib: false
|
||||||
|
Tag: cp39-cp39-win_amd64
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
markupsafe
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
19
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/LICENSE
Normal file
19
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/LICENSE
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Copyright 2005-2021 SQLAlchemy authors and contributors <see AUTHORS file>.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||||
|
of the Software, and to permit persons to whom the Software is furnished to do
|
||||||
|
so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
234
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/METADATA
Normal file
234
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/METADATA
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: SQLAlchemy
|
||||||
|
Version: 1.4.20
|
||||||
|
Summary: Database Abstraction Library
|
||||||
|
Home-page: http://www.sqlalchemy.org
|
||||||
|
Author: Mike Bayer
|
||||||
|
Author-email: mike_mp@zzzcomputing.com
|
||||||
|
License: MIT
|
||||||
|
Project-URL: Documentation, https://docs.sqlalchemy.org
|
||||||
|
Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/
|
||||||
|
Platform: UNKNOWN
|
||||||
|
Classifier: Development Status :: 5 - Production/Stable
|
||||||
|
Classifier: Intended Audience :: Developers
|
||||||
|
Classifier: License :: OSI Approved :: MIT License
|
||||||
|
Classifier: 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.6
|
||||||
|
Classifier: Programming Language :: Python :: 3.7
|
||||||
|
Classifier: Programming Language :: Python :: 3.8
|
||||||
|
Classifier: Programming Language :: Python :: 3.9
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||||
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||||
|
Classifier: Topic :: Database :: Front-Ends
|
||||||
|
Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
Requires-Dist: importlib-metadata ; python_version < "3.8"
|
||||||
|
Requires-Dist: greenlet (!=0.4.17) ; python_version >= "3"
|
||||||
|
Provides-Extra: aiomysql
|
||||||
|
Requires-Dist: greenlet (!=0.4.17) ; (python_version >= "3") and extra == 'aiomysql'
|
||||||
|
Requires-Dist: aiomysql ; (python_version >= "3") and extra == 'aiomysql'
|
||||||
|
Provides-Extra: aiosqlite
|
||||||
|
Requires-Dist: greenlet (!=0.4.17) ; (python_version >= "3") and extra == 'aiosqlite'
|
||||||
|
Requires-Dist: aiosqlite ; (python_version >= "3") and extra == 'aiosqlite'
|
||||||
|
Provides-Extra: asyncio
|
||||||
|
Requires-Dist: greenlet (!=0.4.17) ; (python_version >= "3") and extra == 'asyncio'
|
||||||
|
Provides-Extra: mariadb_connector
|
||||||
|
Requires-Dist: mariadb (>=1.0.1) ; (python_version >= "3") and extra == 'mariadb_connector'
|
||||||
|
Provides-Extra: mssql
|
||||||
|
Requires-Dist: pyodbc ; extra == 'mssql'
|
||||||
|
Provides-Extra: mssql_pymssql
|
||||||
|
Requires-Dist: pymssql ; extra == 'mssql_pymssql'
|
||||||
|
Provides-Extra: mssql_pyodbc
|
||||||
|
Requires-Dist: pyodbc ; extra == 'mssql_pyodbc'
|
||||||
|
Provides-Extra: mypy
|
||||||
|
Requires-Dist: sqlalchemy2-stubs ; extra == 'mypy'
|
||||||
|
Requires-Dist: mypy (>=0.800) ; (python_version >= "3") and extra == 'mypy'
|
||||||
|
Provides-Extra: mysql
|
||||||
|
Requires-Dist: mysqlclient (<2,>=1.4.0) ; (python_version < "3") and extra == 'mysql'
|
||||||
|
Requires-Dist: mysqlclient (>=1.4.0) ; (python_version >= "3") and extra == 'mysql'
|
||||||
|
Provides-Extra: mysql_connector
|
||||||
|
Requires-Dist: mysqlconnector ; extra == 'mysql_connector'
|
||||||
|
Provides-Extra: oracle
|
||||||
|
Requires-Dist: cx-oracle (<8,>=7) ; (python_version < "3") and extra == 'oracle'
|
||||||
|
Requires-Dist: cx-oracle (>=7) ; (python_version >= "3") and extra == 'oracle'
|
||||||
|
Provides-Extra: postgresql
|
||||||
|
Requires-Dist: psycopg2 (>=2.7) ; extra == 'postgresql'
|
||||||
|
Provides-Extra: postgresql_asyncpg
|
||||||
|
Requires-Dist: greenlet (!=0.4.17) ; (python_version >= "3") and extra == 'postgresql_asyncpg'
|
||||||
|
Requires-Dist: asyncpg ; (python_version >= "3") and extra == 'postgresql_asyncpg'
|
||||||
|
Provides-Extra: postgresql_pg8000
|
||||||
|
Requires-Dist: pg8000 (>=1.16.6) ; extra == 'postgresql_pg8000'
|
||||||
|
Provides-Extra: postgresql_psycopg2binary
|
||||||
|
Requires-Dist: psycopg2-binary ; extra == 'postgresql_psycopg2binary'
|
||||||
|
Provides-Extra: postgresql_psycopg2cffi
|
||||||
|
Requires-Dist: psycopg2cffi ; extra == 'postgresql_psycopg2cffi'
|
||||||
|
Provides-Extra: pymysql
|
||||||
|
Requires-Dist: pymysql (<1) ; (python_version < "3") and extra == 'pymysql'
|
||||||
|
Requires-Dist: pymysql ; (python_version >= "3") and extra == 'pymysql'
|
||||||
|
Provides-Extra: sqlcipher
|
||||||
|
Requires-Dist: sqlcipher3-binary ; (python_version >= "3") and extra == 'sqlcipher'
|
||||||
|
|
||||||
|
SQLAlchemy
|
||||||
|
==========
|
||||||
|
|
||||||
|
|PyPI| |Python| |Downloads|
|
||||||
|
|
||||||
|
.. |PyPI| image:: https://img.shields.io/pypi/v/sqlalchemy
|
||||||
|
:target: https://pypi.org/project/sqlalchemy
|
||||||
|
:alt: PyPI
|
||||||
|
|
||||||
|
.. |Python| image:: https://img.shields.io/pypi/pyversions/sqlalchemy
|
||||||
|
:target: https://pypi.org/project/sqlalchemy
|
||||||
|
:alt: PyPI - Python Version
|
||||||
|
|
||||||
|
.. |Downloads| image:: https://img.shields.io/pypi/dm/sqlalchemy
|
||||||
|
:target: https://pypi.org/project/sqlalchemy
|
||||||
|
:alt: PyPI - Downloads
|
||||||
|
|
||||||
|
|
||||||
|
The Python SQL Toolkit and Object Relational Mapper
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
-------------
|
||||||
|
|
||||||
|
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper
|
||||||
|
that gives application developers the full power and
|
||||||
|
flexibility of SQL. SQLAlchemy provides a full suite
|
||||||
|
of well known enterprise-level persistence patterns,
|
||||||
|
designed for efficient and high-performing database
|
||||||
|
access, adapted into a simple and Pythonic domain
|
||||||
|
language.
|
||||||
|
|
||||||
|
Major SQLAlchemy features include:
|
||||||
|
|
||||||
|
* An industrial strength ORM, built
|
||||||
|
from the core on the identity map, unit of work,
|
||||||
|
and data mapper patterns. These patterns
|
||||||
|
allow transparent persistence of objects
|
||||||
|
using a declarative configuration system.
|
||||||
|
Domain models
|
||||||
|
can be constructed and manipulated naturally,
|
||||||
|
and changes are synchronized with the
|
||||||
|
current transaction automatically.
|
||||||
|
* A relationally-oriented query system, exposing
|
||||||
|
the full range of SQL's capabilities
|
||||||
|
explicitly, including joins, subqueries,
|
||||||
|
correlation, and most everything else,
|
||||||
|
in terms of the object model.
|
||||||
|
Writing queries with the ORM uses the same
|
||||||
|
techniques of relational composition you use
|
||||||
|
when writing SQL. While you can drop into
|
||||||
|
literal SQL at any time, it's virtually never
|
||||||
|
needed.
|
||||||
|
* A comprehensive and flexible system
|
||||||
|
of eager loading for related collections and objects.
|
||||||
|
Collections are cached within a session,
|
||||||
|
and can be loaded on individual access, all
|
||||||
|
at once using joins, or by query per collection
|
||||||
|
across the full result set.
|
||||||
|
* A Core SQL construction system and DBAPI
|
||||||
|
interaction layer. The SQLAlchemy Core is
|
||||||
|
separate from the ORM and is a full database
|
||||||
|
abstraction layer in its own right, and includes
|
||||||
|
an extensible Python-based SQL expression
|
||||||
|
language, schema metadata, connection pooling,
|
||||||
|
type coercion, and custom types.
|
||||||
|
* All primary and foreign key constraints are
|
||||||
|
assumed to be composite and natural. Surrogate
|
||||||
|
integer primary keys are of course still the
|
||||||
|
norm, but SQLAlchemy never assumes or hardcodes
|
||||||
|
to this model.
|
||||||
|
* Database introspection and generation. Database
|
||||||
|
schemas can be "reflected" in one step into
|
||||||
|
Python structures representing database metadata;
|
||||||
|
those same structures can then generate
|
||||||
|
CREATE statements right back out - all within
|
||||||
|
the Core, independent of the ORM.
|
||||||
|
|
||||||
|
SQLAlchemy's philosophy:
|
||||||
|
|
||||||
|
* SQL databases behave less and less like object
|
||||||
|
collections the more size and performance start to
|
||||||
|
matter; object collections behave less and less like
|
||||||
|
tables and rows the more abstraction starts to matter.
|
||||||
|
SQLAlchemy aims to accommodate both of these
|
||||||
|
principles.
|
||||||
|
* An ORM doesn't need to hide the "R". A relational
|
||||||
|
database provides rich, set-based functionality
|
||||||
|
that should be fully exposed. SQLAlchemy's
|
||||||
|
ORM provides an open-ended set of patterns
|
||||||
|
that allow a developer to construct a custom
|
||||||
|
mediation layer between a domain model and
|
||||||
|
a relational schema, turning the so-called
|
||||||
|
"object relational impedance" issue into
|
||||||
|
a distant memory.
|
||||||
|
* The developer, in all cases, makes all decisions
|
||||||
|
regarding the design, structure, and naming conventions
|
||||||
|
of both the object model as well as the relational
|
||||||
|
schema. SQLAlchemy only provides the means
|
||||||
|
to automate the execution of these decisions.
|
||||||
|
* With SQLAlchemy, there's no such thing as
|
||||||
|
"the ORM generated a bad query" - you
|
||||||
|
retain full control over the structure of
|
||||||
|
queries, including how joins are organized,
|
||||||
|
how subqueries and correlation is used, what
|
||||||
|
columns are requested. Everything SQLAlchemy
|
||||||
|
does is ultimately the result of a developer-
|
||||||
|
initiated decision.
|
||||||
|
* Don't use an ORM if the problem doesn't need one.
|
||||||
|
SQLAlchemy consists of a Core and separate ORM
|
||||||
|
component. The Core offers a full SQL expression
|
||||||
|
language that allows Pythonic construction
|
||||||
|
of SQL constructs that render directly to SQL
|
||||||
|
strings for a target database, returning
|
||||||
|
result sets that are essentially enhanced DBAPI
|
||||||
|
cursors.
|
||||||
|
* Transactions should be the norm. With SQLAlchemy's
|
||||||
|
ORM, nothing goes to permanent storage until
|
||||||
|
commit() is called. SQLAlchemy encourages applications
|
||||||
|
to create a consistent means of delineating
|
||||||
|
the start and end of a series of operations.
|
||||||
|
* Never render a literal value in a SQL statement.
|
||||||
|
Bound parameters are used to the greatest degree
|
||||||
|
possible, allowing query optimizers to cache
|
||||||
|
query plans effectively and making SQL injection
|
||||||
|
attacks a non-issue.
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Latest documentation is at:
|
||||||
|
|
||||||
|
http://www.sqlalchemy.org/docs/
|
||||||
|
|
||||||
|
Installation / Requirements
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Full documentation for installation is at
|
||||||
|
`Installation <http://www.sqlalchemy.org/docs/intro.html#installation>`_.
|
||||||
|
|
||||||
|
Getting Help / Development / Bug reporting
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Please refer to the `SQLAlchemy Community Guide <http://www.sqlalchemy.org/support.html>`_.
|
||||||
|
|
||||||
|
Code of Conduct
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Above all, SQLAlchemy places great emphasis on polite, thoughtful, and
|
||||||
|
constructive communication between users and developers.
|
||||||
|
Please see our current Code of Conduct at
|
||||||
|
`Code of Conduct <http://www.sqlalchemy.org/codeofconduct.html>`_.
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
SQLAlchemy is distributed under the `MIT license
|
||||||
|
<http://www.opensource.org/licenses/mit-license.php>`_.
|
||||||
|
|
||||||
|
|
||||||
|
|
479
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/RECORD
Normal file
479
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/RECORD
Normal file
@ -0,0 +1,479 @@
|
|||||||
|
SQLAlchemy-1.4.20.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
SQLAlchemy-1.4.20.dist-info/LICENSE,sha256=YBpAuebmf1_VblyrYHwFdqeATqzBxJ-T6h8-e4s2zW4,1119
|
||||||
|
SQLAlchemy-1.4.20.dist-info/METADATA,sha256=Jw3VHRkzzDevEV7BfHjLoAigwu92NLmbpX1abbrS8w4,9386
|
||||||
|
SQLAlchemy-1.4.20.dist-info/RECORD,,
|
||||||
|
SQLAlchemy-1.4.20.dist-info/WHEEL,sha256=jr7ubY0Lkz_yXH9FfFe9PTtLhGOsf62dZkNvTYrJINE,100
|
||||||
|
SQLAlchemy-1.4.20.dist-info/top_level.txt,sha256=rp-ZgB7D8G11ivXON5VGPjupT1voYmWqkciDt5Uaw_Q,11
|
||||||
|
sqlalchemy/__init__.py,sha256=ExIPxvWel4JwxLhYY4m_-B3qZdcD0IIJGfcSP8c11gw,4241
|
||||||
|
sqlalchemy/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/events.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/exc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/inspection.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/log.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/processors.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/schema.cpython-39.pyc,,
|
||||||
|
sqlalchemy/__pycache__/types.cpython-39.pyc,,
|
||||||
|
sqlalchemy/cimmutabledict.cp39-win_amd64.pyd,sha256=dFj0Cbv6yOjMa3hJzlY5LcEsJlrQC0p5Sonj8AZsYS4,14848
|
||||||
|
sqlalchemy/connectors/__init__.py,sha256=TBW6z0L_8lga2UXWZBC2kXFkmBj1tyyHGj2zPiwVTnA,288
|
||||||
|
sqlalchemy/connectors/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/connectors/__pycache__/mxodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/connectors/__pycache__/pyodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/connectors/mxodbc.py,sha256=YPVxoPpPZyCGgZuNG-PXh6vF_y4BT2IJTbhSoSUFgG0,5948
|
||||||
|
sqlalchemy/connectors/pyodbc.py,sha256=-9snrm-iRg68Zf-3HBGDvJqFQlK17lku5zL03KJbB0I,7005
|
||||||
|
sqlalchemy/cprocessors.cp39-win_amd64.pyd,sha256=qLenj6vwMu-MHzCk6kaLlSuQf1FQhVHZNmCHhLy5OcE,17408
|
||||||
|
sqlalchemy/cresultproxy.cp39-win_amd64.pyd,sha256=1tj6189v39vpUK7vBUYkM80Tk72094dU3wzaOtEiL6M,20992
|
||||||
|
sqlalchemy/databases/__init__.py,sha256=Wr0SaNwZ_U8v65tQ9b0kL8hcpsCMCQ9f8dnfLjg9z1M,1047
|
||||||
|
sqlalchemy/databases/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/__init__.py,sha256=Q9SoXJ9mpShD_4lbIXI6wjJqJsmpmDgS-yndzS1aauU,2156
|
||||||
|
sqlalchemy/dialects/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/__init__.py,sha256=99IsIXbvMTkG2KkeQDdsuxdM5eonmd8kN_7_Hwew1TA,1193
|
||||||
|
sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/firebird/base.py,sha256=SFPEpzpyUTKy4zwIZe1rnM4V8wjuwk0A7RV-XGMGCXc,32167
|
||||||
|
sqlalchemy/dialects/firebird/fdb.py,sha256=qQf8oSpPCWYrXQCVSZlGMLGn2XiqNloP6opoSrMGkxY,4229
|
||||||
|
sqlalchemy/dialects/firebird/kinterbasdb.py,sha256=fchGnET7sqXuiNcj-Bim_rmRjhaMPcXyrSkUSuBKVdw,6675
|
||||||
|
sqlalchemy/dialects/mssql/__init__.py,sha256=8fhQ2dxcuRwcdYrdbI9nzVAel5nNJotnV1btviNhIag,1872
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/json.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/provision.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mssql/base.py,sha256=_xMHlPWaOgx7EyTZOklfxSQBQ2Q4ckxm5m9vFfrwnVo,110143
|
||||||
|
sqlalchemy/dialects/mssql/information_schema.py,sha256=yjE4A6JS0MQnC7mdIFFoh8wIz4TXAfvzBcMSKJvRkYM,7815
|
||||||
|
sqlalchemy/dialects/mssql/json.py,sha256=bAi9z-htrC6adJUiBRetVj3RwtJ2GNN5I_KGeHFL8_s,4683
|
||||||
|
sqlalchemy/dialects/mssql/mxodbc.py,sha256=EwR2i5KeL0O_QOoC_w8bB8-Ibmmca07p_Pk-B9V6oXs,4956
|
||||||
|
sqlalchemy/dialects/mssql/provision.py,sha256=oTGw0l5RNcXIWkA0s2erVgk2XKiNw26IRzZE84tN2uE,4371
|
||||||
|
sqlalchemy/dialects/mssql/pymssql.py,sha256=KXNWqN_gcJNs4eOcGMUuK2JS0zo3QIZpLtK0Cc2lo10,4979
|
||||||
|
sqlalchemy/dialects/mssql/pyodbc.py,sha256=dt8bzeusRcfPSrW14tfK1auaLHbIiKyIAL455R_n66c,21198
|
||||||
|
sqlalchemy/dialects/mysql/__init__.py,sha256=zGUaA54PNMKz_foJOomYcDZ0nRcM0FOBTXeZC4DkjkQ,2261
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/aiomysql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/dml.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/expression.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/json.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/mariadb.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/mariadbconnector.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/provision.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/__pycache__/types.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/mysql/aiomysql.py,sha256=IIaMMlE5Sa6tNHdBF2_w-quqjSckbSLJLO6yGkqWO4I,9458
|
||||||
|
sqlalchemy/dialects/mysql/base.py,sha256=PgA-SPgvPsAvwovzNM0jL8MygoeJW1xAzdexHszrM14,121335
|
||||||
|
sqlalchemy/dialects/mysql/cymysql.py,sha256=u_2t1j9HsNYjHN1W5mcer3VzXKWpy9Ht0U23fmVv4TA,2352
|
||||||
|
sqlalchemy/dialects/mysql/dml.py,sha256=rRmYkeT-R8ZgfqwSG2uuCPwVMN60AMCJ3IMhVdQNjbw,6355
|
||||||
|
sqlalchemy/dialects/mysql/enumerated.py,sha256=7Gpd__GD6cqATpJG_exsGzADlV7PmS7Krr4K1KaAYHM,9396
|
||||||
|
sqlalchemy/dialects/mysql/expression.py,sha256=rinSVZR7GK6S6OpqNwoUIrbNuT671gObXv5OD_Y6qwk,3867
|
||||||
|
sqlalchemy/dialects/mysql/json.py,sha256=iEKILiRmIpakQcqJt2OzfmVGFsgSyi7gBg63khPggu4,2396
|
||||||
|
sqlalchemy/dialects/mysql/mariadb.py,sha256=jE1Hpmka_nKJjWsFHcCVRKWvjg7l1mNCjCzvVADMD-k,523
|
||||||
|
sqlalchemy/dialects/mysql/mariadbconnector.py,sha256=PONgd15UBS5TUZL8OB6hLj0Za_RpRA4VN6vgZoMYnlY,7755
|
||||||
|
sqlalchemy/dialects/mysql/mysqlconnector.py,sha256=DhI1eAhINj_iWsC61fOCMSvJJOW_D9PKQBjOJUZX7gM,7929
|
||||||
|
sqlalchemy/dialects/mysql/mysqldb.py,sha256=UFaJzBGFO9ix5oo22IAMQLnVRsETILV8b_zNSAq8drI,10853
|
||||||
|
sqlalchemy/dialects/mysql/oursql.py,sha256=lJexKOuqiuzYlbbc4qd6oyzn2jQ8QbocDcgixKGnxEU,8794
|
||||||
|
sqlalchemy/dialects/mysql/provision.py,sha256=-gCG7MwEMtztSmNU107Q563t-nN-oqTVkCiay-HRRQI,2727
|
||||||
|
sqlalchemy/dialects/mysql/pymysql.py,sha256=QtNLSJ_etMgSoo31A47gyt8lMRXbSOHYPaVyjtS8tjE,2867
|
||||||
|
sqlalchemy/dialects/mysql/pyodbc.py,sha256=95nwWGTVR-Ym4-R_QrDRuxcH8-pwu21-ZWBVNvZeTcM,4637
|
||||||
|
sqlalchemy/dialects/mysql/reflection.py,sha256=gCWmTOsvrRDGKAmXh4AGGnO03rClVuXPswASmzALgg0,19110
|
||||||
|
sqlalchemy/dialects/mysql/types.py,sha256=zMqX3xlwcFf1N4AZhZUeguI3UAn8vEDLJiVBj1TbIYg,25361
|
||||||
|
sqlalchemy/dialects/oracle/__init__.py,sha256=z_sm511AIB30Vuv1Es-hfkRMHe5-yeqNGpnzE_XkPPo,1286
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/__pycache__/provision.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/oracle/base.py,sha256=yMK4KDqaFhfntVEXtYXOU3RKhgp8yo8vTiIamog9YEU,89010
|
||||||
|
sqlalchemy/dialects/oracle/cx_oracle.py,sha256=9CBbppRxvJEkptdy6iRBRpKRC8LDEyAvYPd7_q8Va5E,50460
|
||||||
|
sqlalchemy/dialects/oracle/provision.py,sha256=HCi5hs5fv6rXv-lVQir6gsKrhes9NoAWlChzR3ueq74,5965
|
||||||
|
sqlalchemy/dialects/postgresql/__init__.py,sha256=WraAOkI7m26v85Pf28M2ONh-3j4SduvqFdefDPpc3EM,2625
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/array.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/asyncpg.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/json.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/provision.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/pygresql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/postgresql/array.py,sha256=3WQ2yBDAhms40MhJ683FELKmN9TL8XLpXDj3-TIaASo,12615
|
||||||
|
sqlalchemy/dialects/postgresql/asyncpg.py,sha256=SmsjkLFctg51nrJKv3zrPWFNXhp0wRf8vWRa06FvC8A,34474
|
||||||
|
sqlalchemy/dialects/postgresql/base.py,sha256=m28uVDT3IYxGRKZjeEyilwOAo8o8l_isjF145-Q8zuU,155990
|
||||||
|
sqlalchemy/dialects/postgresql/dml.py,sha256=Id1QgpOnhLNOpIiF0igYYovdOcPvpHG0KJsD1VvQH60,9828
|
||||||
|
sqlalchemy/dialects/postgresql/ext.py,sha256=K5huWreKbPLRVuwF7gFRhSPG0CY5sdXF0LiFFmDpMbY,8656
|
||||||
|
sqlalchemy/dialects/postgresql/hstore.py,sha256=obkZOC84OYVWUC8O4PyMlEGifJAA-AjsgINtrkOj0Ac,12837
|
||||||
|
sqlalchemy/dialects/postgresql/json.py,sha256=szREjVPlVfpwAc5D6tHqNCBL2UHIfr6yk_CgZqZQ10A,10777
|
||||||
|
sqlalchemy/dialects/postgresql/pg8000.py,sha256=-KFdYLjDPQapVZ-nth9-NxcDETC7m2wwg3NdXuHtV_g,17390
|
||||||
|
sqlalchemy/dialects/postgresql/provision.py,sha256=EgdZRObrTzwZ7jaBA_oPkWx3Ly1Cathw4pOfWZm6Pn0,4543
|
||||||
|
sqlalchemy/dialects/postgresql/psycopg2.py,sha256=hwJ1yjtBiekK2WHr5NHCF6XQWRuL_Wj65oUEBGBgQVs,39900
|
||||||
|
sqlalchemy/dialects/postgresql/psycopg2cffi.py,sha256=DgxWc4LrxnS3ay2KYr4sYZ76wC2ff1HFc-61Nf9TkpY,1753
|
||||||
|
sqlalchemy/dialects/postgresql/pygresql.py,sha256=i7H04i1vuc0I8f3nnUmNinsfGGCku_BKGu_6i1j083A,8861
|
||||||
|
sqlalchemy/dialects/postgresql/pypostgresql.py,sha256=MIEJhCHUwj3JF1PC4dB8dAOuoRaoiF8W0yzAU_L-a-g,3817
|
||||||
|
sqlalchemy/dialects/postgresql/ranges.py,sha256=b04r-iDteuTMhmVAc5Yf6cGraGTFggZTi0hx61_P3ng,4762
|
||||||
|
sqlalchemy/dialects/sqlite/__init__.py,sha256=rPgXiMXoA6X1_aeqq4ABU6QDqhGfIHcBaUY89utTQQw,1255
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/aiosqlite.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/dml.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/json.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/provision.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sqlite/aiosqlite.py,sha256=pUeydy7OicEYmuYE59LIvcyaN2pPZHEQgq8JCeMtCtw,10179
|
||||||
|
sqlalchemy/dialects/sqlite/base.py,sha256=J6JqD1JGTYfDWQZZOOKIKdBhb8MQ1naSX44A8RbzTp0,90650
|
||||||
|
sqlalchemy/dialects/sqlite/dml.py,sha256=9CKXKKpA2e1Xqo6U1gvvHedyfAZvpkRBpZiRQJVF9ZU,7037
|
||||||
|
sqlalchemy/dialects/sqlite/json.py,sha256=bz_1axFG5YI9kLszE-oiCN3-z95zIPPcLgVwug_-AT4,2602
|
||||||
|
sqlalchemy/dialects/sqlite/provision.py,sha256=3F5ZX2dYGMFAGra99UVavCihth1_XazJXX9XAet8gbw,4818
|
||||||
|
sqlalchemy/dialects/sqlite/pysqlcipher.py,sha256=stRIWDxLkq0QATChLf1p3v1P0xlHfGm_sYIrye83vxM,5768
|
||||||
|
sqlalchemy/dialects/sqlite/pysqlite.py,sha256=ZL7OxYuaX9nf_3QGutZL29x1RRgqCdPo6d_wR4ZKu_w,23896
|
||||||
|
sqlalchemy/dialects/sybase/__init__.py,sha256=L1T7DkOKeeT4rs_-HMQtT8a6L_yeHNJqtTi8MGd_pbw,1430
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-39.pyc,,
|
||||||
|
sqlalchemy/dialects/sybase/base.py,sha256=4aLf2TrGblF0ojJR54tHifgNkfTD0adC9j_wR_GYU1Y,33519
|
||||||
|
sqlalchemy/dialects/sybase/mxodbc.py,sha256=5QXZjzxHpne8MKAAwPR32x6YXU5IQPDPKCLaSW23wp8,971
|
||||||
|
sqlalchemy/dialects/sybase/pyodbc.py,sha256=BNaSGyeAroOrHLc7rLIZ9kkeZxULVDxqHZtzNIjbG6A,2321
|
||||||
|
sqlalchemy/dialects/sybase/pysybase.py,sha256=AEIbV2egEfWKrXYMkTj74HlB7owPSn7hs8U7M_b_EpE,3474
|
||||||
|
sqlalchemy/engine/__init__.py,sha256=x8TozgrDsPtS2j-9ByAv0ACrcpUMiFJMpxc0lsGQmo8,2092
|
||||||
|
sqlalchemy/engine/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/characteristics.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/create.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/cursor.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/default.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/events.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/interfaces.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/mock.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/reflection.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/result.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/row.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/strategies.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/url.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/__pycache__/util.cpython-39.pyc,,
|
||||||
|
sqlalchemy/engine/base.py,sha256=cQVJm7LS3VvsdznS_EmthCan6qCyjENX0LFsGFJ5Gls,121303
|
||||||
|
sqlalchemy/engine/characteristics.py,sha256=DrhLcmpnkMpmgo_kgQpcujoD4nW81vTt-GkuWqW9QaY,1873
|
||||||
|
sqlalchemy/engine/create.py,sha256=lMQRneFu5OcwkQNxmOgonrgwU-9E1oGh0h7ZlmKk_IQ,31143
|
||||||
|
sqlalchemy/engine/cursor.py,sha256=B3rcfKd1WHfOQtxkIUCVWZaKFT6AFxKqfNLZHbPYBuU,69686
|
||||||
|
sqlalchemy/engine/default.py,sha256=WhPeP06ZwFzR6TECsP7AKDhDt2ABOJN1eH017p1m2eA,66314
|
||||||
|
sqlalchemy/engine/events.py,sha256=Hv0GAy-w8m9xdq8E6vZz0fSuLgbZ_9uXMVO3N-HavN4,33483
|
||||||
|
sqlalchemy/engine/interfaces.py,sha256=h0i-LWMoBq5f2PFDG1qYQTt87TSAzl4BvIypVgq_MLc,60760
|
||||||
|
sqlalchemy/engine/mock.py,sha256=eXuMRQawEZFJWpdTELQcljPq5guokWSW9koqySGL-90,3743
|
||||||
|
sqlalchemy/engine/reflection.py,sha256=dRuXqeVrQXa-24YA45ZuiHDPprdr0d-kGNnt4WZp_v8,39755
|
||||||
|
sqlalchemy/engine/result.py,sha256=jJ3QGGPeINyfbEnYkaRSvm7e5UArvWaw_u3dYlxVKto,54923
|
||||||
|
sqlalchemy/engine/row.py,sha256=J0ku18YCc8_DAu-B8oFTTdeLj-5AbylRSrN7eY16AGo,18799
|
||||||
|
sqlalchemy/engine/strategies.py,sha256=Qqx7Nw6TPJe6KzM58oPHavzbSqaVST4DQGrhTO42R14,430
|
||||||
|
sqlalchemy/engine/url.py,sha256=kpLkdISaFyNChYyUViXS05hg5m4SYx6vrqj3LEkeClc,26200
|
||||||
|
sqlalchemy/engine/util.py,sha256=R2fGBk_tpc5LR05Q-mIauF5mGgPDm5IJ9TBl5Brhitg,7875
|
||||||
|
sqlalchemy/event/__init__.py,sha256=UEArBlnnF0If5n_aohWAmYx3Jjoym-8bBgyZ0Fp7hMI,533
|
||||||
|
sqlalchemy/event/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/api.cpython-39.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/attr.cpython-39.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/legacy.cpython-39.pyc,,
|
||||||
|
sqlalchemy/event/__pycache__/registry.cpython-39.pyc,,
|
||||||
|
sqlalchemy/event/api.py,sha256=zmVEc1OZ2IHUHxRk7QBIQj12NKkXA1_tedtPq1xWpu4,6994
|
||||||
|
sqlalchemy/event/attr.py,sha256=W_Yy6A5oChf1S1cafSm_lKflMjfxYtZbjEQNTDHU03Y,15092
|
||||||
|
sqlalchemy/event/base.py,sha256=uL2Vvau-A6b5W9IREO2_jfSz78aP_QH8cjglIbaTBNY,11280
|
||||||
|
sqlalchemy/event/legacy.py,sha256=spFIf45jAL4hi4ah9_ttIbj0hzpgq5bJlv4lpoA7eRs,6454
|
||||||
|
sqlalchemy/event/registry.py,sha256=p1ixAawLN7Lssif73SjTsPKHNU6fhTJOwrVtCrSfifE,8567
|
||||||
|
sqlalchemy/events.py,sha256=08BdPP_ASWqos10aJ_grM8qKKsjKFIupUIwqt3kaH-c,480
|
||||||
|
sqlalchemy/exc.py,sha256=EzLFC6lCWPchAYYfGFLWCXkNhqxtH7n_FovNx9qgmG8,20959
|
||||||
|
sqlalchemy/ext/__init__.py,sha256=FFnko4I2iMY2OaeAIJdsu200D68cAfubuqC_2Eeg8BM,332
|
||||||
|
sqlalchemy/ext/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/associationproxy.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/automap.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/baked.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/compiler.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/horizontal_shard.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/hybrid.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/indexable.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/instrumentation.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/mutable.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/orderinglist.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/__pycache__/serializer.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/associationproxy.py,sha256=QoEz-UR5j43ZnqNl13gZp-cMpdBS7ldv1Wtay-EkTNo,51568
|
||||||
|
sqlalchemy/ext/asyncio/__init__.py,sha256=D_PoNbVNTdnK6h7keS-ppBSFcjXFs9WhmyuOyvx9EBU,798
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/engine.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/events.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/exc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/result.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/scoping.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/__pycache__/session.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/asyncio/base.py,sha256=DQjKnvQPq6d_WwCbks3NSRVt9mcU2u8xojaV3E60Zno,2291
|
||||||
|
sqlalchemy/ext/asyncio/engine.py,sha256=g1rq30UYH54G9LnXX8xxtmNbtaHgzsGQM-EF8gDCNgY,23751
|
||||||
|
sqlalchemy/ext/asyncio/events.py,sha256=mXQgkDLsnS6qkQeB_GV-i6VhtmNAve85B-jIGs7cRyg,1270
|
||||||
|
sqlalchemy/ext/asyncio/exc.py,sha256=0gqT7n-U-p7rLbkzAQKfzQ6_jBZxHweK-2mXFWVYvec,659
|
||||||
|
sqlalchemy/ext/asyncio/result.py,sha256=aYLMEM5TNsmyAWG4659wyperZrDttKUlToxqo_eOHkE,20531
|
||||||
|
sqlalchemy/ext/asyncio/scoping.py,sha256=WaTlSFO_J7RNPF7pKVgVZs84D6MmDMZThrFVlyk9P0g,2947
|
||||||
|
sqlalchemy/ext/asyncio/session.py,sha256=6G4_B-gnbIyMlSaoBNQN_KpUasIwVVGa0lATEpwt0fY,15392
|
||||||
|
sqlalchemy/ext/automap.py,sha256=s0hAWEawAv94ETxRhXqvAwrKUc3bGBX1PEFEcVv2wbU,46422
|
||||||
|
sqlalchemy/ext/baked.py,sha256=Yc9t2UY5c8Fu4v_yDWInPFZBeLi657uwXVpGr8g8dwo,20616
|
||||||
|
sqlalchemy/ext/compiler.py,sha256=Xfq_ONWDQ_mhHNSHH_AY5eIhDF4OEQwqc5018l9fQxU,18496
|
||||||
|
sqlalchemy/ext/declarative/__init__.py,sha256=4lGjX9yq22BJ3K7ZGvFF_46oWoYStN9pkIKypXNavNQ,1905
|
||||||
|
sqlalchemy/ext/declarative/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/declarative/__pycache__/extensions.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/declarative/extensions.py,sha256=hwtcP7O8i9le8Lhg_nVH1lDnRxE0psG-oRoq2Kov-kU,16866
|
||||||
|
sqlalchemy/ext/horizontal_shard.py,sha256=qREdIj09TeY5axbuWsFfrfCZuk9zgjDzcqREd-DxoAo,8990
|
||||||
|
sqlalchemy/ext/hybrid.py,sha256=MKlGMqD2-7uyYZx05Zq3znS0pCpToyTN-ScQRNE4uek,43102
|
||||||
|
sqlalchemy/ext/indexable.py,sha256=7GhAsHMFk_q4YiCAbMU0J9_jbQeJa73E-iVzDNB9DNU,11606
|
||||||
|
sqlalchemy/ext/instrumentation.py,sha256=kx2zn8mN30F-CbWqiBxb7HgnMSJChLcvQhJ8Tb8VIXo,14802
|
||||||
|
sqlalchemy/ext/mutable.py,sha256=cuiyl1bgu6DSCMMCZcQIHObul1BLUh-jSTXGtZUgwm4,32947
|
||||||
|
sqlalchemy/ext/mypy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/apply.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/decl_class.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/infer.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/names.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/plugin.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/__pycache__/util.cpython-39.pyc,,
|
||||||
|
sqlalchemy/ext/mypy/apply.py,sha256=AWjlXxc1ZSEKs-KpJfPZ60gGDOzdinls2cc6keW3pxI,9296
|
||||||
|
sqlalchemy/ext/mypy/decl_class.py,sha256=LUzP227RsiT_Em2wQas-mLdrRxg0Mzqn7bXQcw8hiMY,17040
|
||||||
|
sqlalchemy/ext/mypy/infer.py,sha256=r9Ceg7FiaUL1HGQCvZRK7RHmGrkmCvFVba_TWLLPwGo,17690
|
||||||
|
sqlalchemy/ext/mypy/names.py,sha256=Z8tpYE8i6xGBkuRXpme7Yd58wryMILd_TAAWHKy0OFQ,7902
|
||||||
|
sqlalchemy/ext/mypy/plugin.py,sha256=bjxzxej4w80N315Md3Y_gJECXqaYhN3RwN1jwfNLoNs,9955
|
||||||
|
sqlalchemy/ext/mypy/util.py,sha256=U5IzfJart5sqq2eM9zhFQQHxoA4w9XJXQmWSImVX_ak,6236
|
||||||
|
sqlalchemy/ext/orderinglist.py,sha256=sa2PZ06PH8Cs6Zwcgzog3vUg6WjUbGxdGkGkoMCpJxc,14262
|
||||||
|
sqlalchemy/ext/serializer.py,sha256=rae10NTl3_fm9I_SrXflEioL8GNQnShlH7cUxfSUnds,6132
|
||||||
|
sqlalchemy/future/__init__.py,sha256=uXl3ElTaXdjRoOBshDEitc07u6IGLfCzLONWerWRF88,542
|
||||||
|
sqlalchemy/future/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/future/__pycache__/engine.cpython-39.pyc,,
|
||||||
|
sqlalchemy/future/engine.py,sha256=2Qc97YYmaKSp0jyOF4X6S6efF4btcsuj3c0Wpu1PlNU,16993
|
||||||
|
sqlalchemy/future/orm/__init__.py,sha256=_g7j2aIWEydf4JHJuJDetdAVACyheROjqXmBkKb2OaQ,298
|
||||||
|
sqlalchemy/future/orm/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/inspection.py,sha256=vfF9qC0gJSRzn4JLu9CjNENzqCtDdzAIthoLxl8rW50,3143
|
||||||
|
sqlalchemy/log.py,sha256=MWkG0aStnbomwsE9wqkuQqwQiRyTykirq9_oY2032tg,6994
|
||||||
|
sqlalchemy/orm/__init__.py,sha256=-IMaSfF-yrtmMGrlFYkXjcA8iAnEAR6UkROHHAXYSpU,10769
|
||||||
|
sqlalchemy/orm/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/attributes.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/clsregistry.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/collections.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/context.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/decl_api.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/decl_base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/dependency.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/descriptor_props.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/dynamic.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/evaluator.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/events.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/exc.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/identity.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/instrumentation.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/interfaces.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/loading.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/mapper.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/path_registry.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/persistence.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/properties.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/query.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/relationships.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/scoping.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/session.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/state.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/strategies.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/strategy_options.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/sync.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/unitofwork.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/__pycache__/util.cpython-39.pyc,,
|
||||||
|
sqlalchemy/orm/attributes.py,sha256=wGWhtVsCdcev3nl_ucxsAIS7w_iV5_pAccf-iBxHmCM,77884
|
||||||
|
sqlalchemy/orm/base.py,sha256=JR1bHf9tmjd5Ucb_b4-Yx20p210hkeklUjYeA0ea_XY,15473
|
||||||
|
sqlalchemy/orm/clsregistry.py,sha256=T_cR_8J6_k8zBAtISYPnjWpKbMKQAbzREdPhBDzG6Z8,13731
|
||||||
|
sqlalchemy/orm/collections.py,sha256=WxqkreJpyfguYOZtbIqKgx01pdL3ihmNzNNprnUobl8,56416
|
||||||
|
sqlalchemy/orm/context.py,sha256=ujp5554a0aM-NI6tw99tw03M6DKbMPNRSO_YH74UxwM,106564
|
||||||
|
sqlalchemy/orm/decl_api.py,sha256=Lbj6w87SXY2q8dzoWFYgZbdStVZ0Ordnw9O6yXH6nuk,35949
|
||||||
|
sqlalchemy/orm/decl_base.py,sha256=BR85kxbPUf0CDzbiF-_tgfqMIafC0Esl-4B8OTzQcMk,43849
|
||||||
|
sqlalchemy/orm/dependency.py,sha256=HPQE5POiLq8yUPuFtQ-IrMS9jPw67Z1-05c7xuZbm4Y,48268
|
||||||
|
sqlalchemy/orm/descriptor_props.py,sha256=S0vw_wnNFB0p3lBM-0RRGcxvyzgGoDYXK4kb4xn_FUo,26701
|
||||||
|
sqlalchemy/orm/dynamic.py,sha256=INcHvTXxXb17gGW_3HbSuQ53VVUPRANexuUn79g-X0k,16306
|
||||||
|
sqlalchemy/orm/evaluator.py,sha256=ymKsLcqOwf7OZ98PZINfgp2WUlB-Hv1pAXuoAbWITHU,7092
|
||||||
|
sqlalchemy/orm/events.py,sha256=MCsdnTPUnhW4ORFAZDrBk4pvGZw6Lr1l8h2jJOLVKtY,113098
|
||||||
|
sqlalchemy/orm/exc.py,sha256=XQNh69fkGLyeZ3apPiTTRwSO6y_ULbVOBLUACOfWNFc,6735
|
||||||
|
sqlalchemy/orm/identity.py,sha256=9D0FTwPOsUQ21mTlOkzdMSoIKYPcyn1gvbxee6MqHyI,7040
|
||||||
|
sqlalchemy/orm/instrumentation.py,sha256=tE5A13NbKUfNvpOEaJuHFbh4BrrQ9JmqA14SKVXBNdA,20998
|
||||||
|
sqlalchemy/orm/interfaces.py,sha256=Fn0Q-aojEwBlFiad5moTR8OkAgYsHAVO1bIngxqRoGE,29347
|
||||||
|
sqlalchemy/orm/loading.py,sha256=WNkS0444FA49IzPEvoejbW9DZ6W-pmSz07yzHWfKFCk,50987
|
||||||
|
sqlalchemy/orm/mapper.py,sha256=Hxn0jmpxhgk_yOlHcUzUVP32nqKHIolcFYpaDh5JW34,139805
|
||||||
|
sqlalchemy/orm/path_registry.py,sha256=Qe86D6vzluH4rkfnmb3ZpHnTCt7eBri5PtyuhlcCbUQ,15588
|
||||||
|
sqlalchemy/orm/persistence.py,sha256=rhqAtyFKgJMin6hGFgTAdLgK2kpMowAfBiytkERurkg,81401
|
||||||
|
sqlalchemy/orm/properties.py,sha256=H0cSlyMOIDvaizxmCoWeKdQWiqImyQb5VLd9I4Sy3pc,15319
|
||||||
|
sqlalchemy/orm/query.py,sha256=gIAWefHFhHJqfuofCGb6RaJMVm-a-S7Sy1XRPVUk6q8,125217
|
||||||
|
sqlalchemy/orm/relationships.py,sha256=PHsSUNrlqjrz95pu36DhC10ZHx884nRiDlLXkJR6dls,146477
|
||||||
|
sqlalchemy/orm/scoping.py,sha256=GPFT5NinEnV49r0gidhRxdzc3LcFWx52VNFZqz-SGQs,6880
|
||||||
|
sqlalchemy/orm/session.py,sha256=vuX_VvIBp5Enx-a1h7lSSlSOlPiYd0m1ILy-lZjyGJ8,159850
|
||||||
|
sqlalchemy/orm/state.py,sha256=9jv6AlV8RwoEBkN6Mti3Z84C0hHSTBfHX4Hh8VZEyl8,34431
|
||||||
|
sqlalchemy/orm/strategies.py,sha256=Cr0PC-PG8X3_L2K3Ieu_EZMOofeZ8OePf-bA1J_1vxc,109896
|
||||||
|
sqlalchemy/orm/strategy_options.py,sha256=09iyh4ILS7yBxYK8IZWsFuYYWpnYdwALPyqyZY7se8g,63532
|
||||||
|
sqlalchemy/orm/sync.py,sha256=3WNF_rv2bvq-8w-Umo6WPPMpZR81CCC6lR0LVsdUyyQ,5990
|
||||||
|
sqlalchemy/orm/unitofwork.py,sha256=XZdTDFw3CHBZstRU1jWDtZ-op0h-Sh_UZUx7h8moQZc,27873
|
||||||
|
sqlalchemy/orm/util.py,sha256=DZAiAIKYeGtoa8IWS75W7Te4p2v2WvNy9YzFzzEdLFU,70601
|
||||||
|
sqlalchemy/pool/__init__.py,sha256=vPypHYNtKMNIc2Yrgw6qyVWHvvisQfIC0Gn3AhKi654,1658
|
||||||
|
sqlalchemy/pool/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/pool/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/pool/__pycache__/dbapi_proxy.cpython-39.pyc,,
|
||||||
|
sqlalchemy/pool/__pycache__/events.cpython-39.pyc,,
|
||||||
|
sqlalchemy/pool/__pycache__/impl.cpython-39.pyc,,
|
||||||
|
sqlalchemy/pool/base.py,sha256=BoVrinbry7_706Y6z5HuCUeTevH3tZF6d91JGQRaabY,36657
|
||||||
|
sqlalchemy/pool/dbapi_proxy.py,sha256=EECXJ-pyG1436lAs5H02gN3ByZIRd54yeVG6EInHmQU,4375
|
||||||
|
sqlalchemy/pool/events.py,sha256=e9pXO_HEZzsg-8V6jdtV-u6BjW4GCvdvSIJYeNYh8GU,8942
|
||||||
|
sqlalchemy/pool/impl.py,sha256=ebFDPqQEggH7W43Ld13wd2UV3geMkJEDD66EruvmF1k,16284
|
||||||
|
sqlalchemy/processors.py,sha256=S-h949YV8k_f3HMoV2ChfwZE5L-e1sDPYTko5M1Gj_o,5920
|
||||||
|
sqlalchemy/schema.py,sha256=ntWzaOocNzjjFTTGcH2W-OHElZYiAxLFcWUhxVQJ-oE,2471
|
||||||
|
sqlalchemy/sql/__init__.py,sha256=Ie0LsqfpzMNZN621dtp3LFeF0ySw-FJmMoLrqrL81Z8,4810
|
||||||
|
sqlalchemy/sql/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/annotation.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/coercions.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/compiler.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/crud.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/ddl.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/default_comparator.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/dml.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/elements.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/events.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/expression.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/functions.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/lambdas.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/naming.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/operators.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/roles.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/schema.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/selectable.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/sqltypes.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/traversals.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/type_api.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/util.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/__pycache__/visitors.cpython-39.pyc,,
|
||||||
|
sqlalchemy/sql/annotation.py,sha256=EvDBXH-wt9RRqHNY-8hlXiXYJfl9antb8M3IvB91cqM,11592
|
||||||
|
sqlalchemy/sql/base.py,sha256=Aue1owXMTXOzO3WXF_QcMtlkBtEJCvRputH7WjbYQnY,56651
|
||||||
|
sqlalchemy/sql/coercions.py,sha256=PcuTab2Rs91JX3qZQixKjmmTT-oj_A-HIjbmdw_4CrA,33560
|
||||||
|
sqlalchemy/sql/compiler.py,sha256=BtiVfBp-T7V8FQEmG6EASPwaD_b8EtO9Nz2RcjuqeXg,176837
|
||||||
|
sqlalchemy/sql/crud.py,sha256=dkdesuCs9Lt5QanQg3vvVT8glavy-b5LK5ABYFm3Dfo,35833
|
||||||
|
sqlalchemy/sql/ddl.py,sha256=uvUIePaU1oObVGquGcEdrqebIQ8DLz6qstns1Ag5_R0,45336
|
||||||
|
sqlalchemy/sql/default_comparator.py,sha256=7iC7YGjoXyICcnxjovGA37T_smTSSnMlsf4RJGprF2U,11233
|
||||||
|
sqlalchemy/sql/dml.py,sha256=lDzS--PzSyEldp0zjjZMbNhUiGy9jjkH5AmefyrsZTg,52695
|
||||||
|
sqlalchemy/sql/elements.py,sha256=AdCKqNXv2zjCYH3i9HjwkON7LM8T0YiGn_LTpMBkK4Q,175679
|
||||||
|
sqlalchemy/sql/events.py,sha256=pQJPAeybf1jel2LMq59CU5cYe-_duV9pkUGbDxkSelc,13412
|
||||||
|
sqlalchemy/sql/expression.py,sha256=xA7Kg_G_oobzVANzXaXRC9Ms96U0g80UxgxH2GrPdmo,9105
|
||||||
|
sqlalchemy/sql/functions.py,sha256=l9RCbwROk-KtEpzTUsOI72xxO1saJtbNRWx502IEU0E,48502
|
||||||
|
sqlalchemy/sql/lambdas.py,sha256=kC56163Xqy_FPpZcMUQQ89rJuEN0cGeV6lMOzg2SAuY,44237
|
||||||
|
sqlalchemy/sql/naming.py,sha256=frPyvaq5BALvRCUcaH7s30e8lTZMoWEBHLkZILUIdi4,6995
|
||||||
|
sqlalchemy/sql/operators.py,sha256=MexbaWdAztb_Xd6dCLU3oFbe-imrWS96izD8iSVxsKw,49446
|
||||||
|
sqlalchemy/sql/roles.py,sha256=eiVyxFCACcmCnxf4z5dXxhIHgZLRuETY8xV1zd8fCYc,5625
|
||||||
|
sqlalchemy/sql/schema.py,sha256=aouTvkn9-Zs7gRPyRDklmidF-4K8RLqa0GRW_BHpugg,191714
|
||||||
|
sqlalchemy/sql/selectable.py,sha256=2YPclquuN66CXtuD9d9Dcf1EU1j3ww6h1yGmuT7jy9k,224427
|
||||||
|
sqlalchemy/sql/sqltypes.py,sha256=-0di1pjJubEtr7G5fbiRQoiMxFC4rF979N5EI9dqA3U,113934
|
||||||
|
sqlalchemy/sql/traversals.py,sha256=eTRuqYptAJ33ihgLPizlc_S5m9zvKqC3V2t2YYtE6Fo,50825
|
||||||
|
sqlalchemy/sql/type_api.py,sha256=ChLSlTQAeN2beCz7XQeoKkZfvYEBM4_-RlGJoMve-1I,59372
|
||||||
|
sqlalchemy/sql/util.py,sha256=UhOSuPJ4yGVN8Qal2tDvDMNMd9eOI05DGVUcACmZ8bo,35520
|
||||||
|
sqlalchemy/sql/visitors.py,sha256=-Yuc-yAKUZBf9XjJ6bvOP8Sy5Zv7mB-gdXKo9JOzHLQ,28063
|
||||||
|
sqlalchemy/testing/__init__.py,sha256=XCdyR7e5mC5m4fhcmPgjxAGsIe2Vgca7rygudyUryJY,2851
|
||||||
|
sqlalchemy/testing/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/assertions.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/assertsql.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/asyncio.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/config.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/engines.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/entities.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/exclusions.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/fixtures.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/mock.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/pickleable.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/profiling.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/provision.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/requirements.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/schema.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/util.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/__pycache__/warnings.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/assertions.py,sha256=s2UhwsBzCPa75W8UQRxlR3gfWm9WIfTksdG-zWPtOYg,24466
|
||||||
|
sqlalchemy/testing/assertsql.py,sha256=2UQGJYRLD4IgFzYm1IwdUDoeJgIDIIeJIcrOit-XGLE,14689
|
||||||
|
sqlalchemy/testing/asyncio.py,sha256=4qUnZPDR7omIo3FLoRWy6hBJbne1KbyMELbdIWEZddk,3800
|
||||||
|
sqlalchemy/testing/config.py,sha256=IxwIEAW7_1b88yUOX_wjivjuS9PvlCJVEpIScmtQh7Y,6751
|
||||||
|
sqlalchemy/testing/engines.py,sha256=TU32-pY1rHRiWR3zrXr6_sRXYMuh1CkF9AyoPCbNm8s,13098
|
||||||
|
sqlalchemy/testing/entities.py,sha256=BzhnwvfZ_NkNn4xtvFbLzPvQw2T9gEBNc7hMay2cG5s,3363
|
||||||
|
sqlalchemy/testing/exclusions.py,sha256=2X5m5QCLO0W0D6GmI7cw6BuMIclsBoMnnjaqAY2Hclc,13793
|
||||||
|
sqlalchemy/testing/fixtures.py,sha256=DyIAvYvavTI3Qs3oYtHT8TGqwFaFevEguc4gNApUGi0,25977
|
||||||
|
sqlalchemy/testing/mock.py,sha256=krEfc7Vz1EEjkPb1D07yRZXX1ehaCCT2uFoQiXz9EOM,925
|
||||||
|
sqlalchemy/testing/pickleable.py,sha256=5Dlu3OP7s5DKAI1c4XP6UCz_17MOJsM3E0zqQWesZFA,2847
|
||||||
|
sqlalchemy/testing/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/__pycache__/reinvent_fixtures_py2k.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/plugin/bootstrap.py,sha256=0104b_dYFUT5WsZU-NL44wlMo1LrKByBtPQYaFt6CTQ,1738
|
||||||
|
sqlalchemy/testing/plugin/plugin_base.py,sha256=t0PKr1XE2GiH5zb6Z5lXV_abu3rZva6v8DLQglTTF00,22349
|
||||||
|
sqlalchemy/testing/plugin/pytestplugin.py,sha256=Tj-wscMJ9yuPsS74U1AiJ-4UTrxNT-ZI89qHAAcv0-Y,24973
|
||||||
|
sqlalchemy/testing/plugin/reinvent_fixtures_py2k.py,sha256=b9fWp5RXdePykrNviZPXaGDIjOEOfovchez2Ovr4IRQ,3400
|
||||||
|
sqlalchemy/testing/profiling.py,sha256=K4Kn3o4GMbdb-1YMu1E4tPkpuHxbnJIWEqypsv_nY2s,10900
|
||||||
|
sqlalchemy/testing/provision.py,sha256=J9PWi7i7Xmr-sALBrmK4OTXH9ur4rpFXKHhnhrjcQcs,12461
|
||||||
|
sqlalchemy/testing/requirements.py,sha256=-69hbEEuVSCVdNC3KiHJL2xC7fbSguoL66f_li1Nq50,42209
|
||||||
|
sqlalchemy/testing/schema.py,sha256=2MNf-qPPUqEtxtCfVjZpwaoOBZEToUOHfW-egM2Nov4,6761
|
||||||
|
sqlalchemy/testing/suite/__init__.py,sha256=u3lEc0j47s7Dad_2SVWOZ6EU2aOMRWqE_WrQ17HmBsA,489
|
||||||
|
sqlalchemy/testing/suite/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_cte.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_deprecations.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_insert.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_results.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_rowcount.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_select.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_types.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_unicode_ddl.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-39.pyc,,
|
||||||
|
sqlalchemy/testing/suite/test_cte.py,sha256=shi2WJZpzAzDCdkmzx0IDEu-URsLLBsdyFdzDqsfpyw,6387
|
||||||
|
sqlalchemy/testing/suite/test_ddl.py,sha256=BZuYkKaG_tNUkZcFLNd6o1qnfbzU0IYiedCw_NhOJBg,12143
|
||||||
|
sqlalchemy/testing/suite/test_deprecations.py,sha256=0LUmXIiK8hHUr6tY8cJJC7VErOj9YNGNN-c324k08Dw,5204
|
||||||
|
sqlalchemy/testing/suite/test_dialect.py,sha256=XpwZxIXlMVsZlP74khuPW2wZskinT0IOT9S6PM5PyE8,11256
|
||||||
|
sqlalchemy/testing/suite/test_insert.py,sha256=QlMovNeDU-GB5UvTEumce3LLK94PAduKlWe2TqCcLF4,11501
|
||||||
|
sqlalchemy/testing/suite/test_reflection.py,sha256=kZI4xcVR7_Ft_8kYYF58FjM7IIeuFzS0yXDj7lVfwbA,56815
|
||||||
|
sqlalchemy/testing/suite/test_results.py,sha256=qa_V37VKFRfi2xoI8d5bW9EzB_E_oPFhShBo9VPjCss,14396
|
||||||
|
sqlalchemy/testing/suite/test_rowcount.py,sha256=M6E-d4JuoVVfbBC-z59hB1accmoh4yARRJsD4yVFP60,4944
|
||||||
|
sqlalchemy/testing/suite/test_select.py,sha256=hZfNo0bTFQodHg2PB4_dqdnJ2mnXq3Fs_mdp17409uk,54167
|
||||||
|
sqlalchemy/testing/suite/test_sequence.py,sha256=2KBcs0FtoL3gk37IN2PnRZSnQwt7RKkShAbYQHFTBcw,8713
|
||||||
|
sqlalchemy/testing/suite/test_types.py,sha256=kiVqATGP79gKi3LNvjCFpWF2qFNCjvy8svv68peQU8E,45445
|
||||||
|
sqlalchemy/testing/suite/test_unicode_ddl.py,sha256=T9Bkkj7Cm2mIQW5BQFU2NnJVnvBhZyEQXcuHRO3AhKc,6937
|
||||||
|
sqlalchemy/testing/suite/test_update_delete.py,sha256=q3AoCPMKhxYVUi4n7YBjf8v8nb9obXmUXqnFsVxpZLY,1646
|
||||||
|
sqlalchemy/testing/util.py,sha256=pF1e_qH8eH1LVN4xB0hgL3XNfsbb5A2iRvNG8c_IgVc,12960
|
||||||
|
sqlalchemy/testing/warnings.py,sha256=n7poYJsx6YspiD9RIp2QiYxWbnWG7OQMLkjrmWqn85g,6010
|
||||||
|
sqlalchemy/types.py,sha256=xd4i1Yi0zY9lb6jZuy70TOkdKwP_deLpB20IQ3nx_zw,2997
|
||||||
|
sqlalchemy/util/__init__.py,sha256=Eklvf318BEPscpatTBry6K7hQU9JfragXEX_clr-Fm0,6434
|
||||||
|
sqlalchemy/util/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/_collections.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/_concurrency_py3k.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/_preloaded.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/compat.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/concurrency.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/deprecations.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/langhelpers.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/queue.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/__pycache__/topological.cpython-39.pyc,,
|
||||||
|
sqlalchemy/util/_collections.py,sha256=vQ5XrglAq0tVxIQtay9WVuQSgnKJ-L_bF4bRflNgEew,30227
|
||||||
|
sqlalchemy/util/_concurrency_py3k.py,sha256=iE8ZnXzkIVXWIwR7In5bwIK1esv_vrlP2Nm2fhBose8,6728
|
||||||
|
sqlalchemy/util/_preloaded.py,sha256=B7sQrjHOamdgOWZ1EAFWPOvlXH59ose5KoOwFMkhFe0,2463
|
||||||
|
sqlalchemy/util/compat.py,sha256=S4vHlw295cr9gH4dmUYxCjKjCh9poB7e7-5hlF1Mwc8,18786
|
||||||
|
sqlalchemy/util/concurrency.py,sha256=tdD998NG1XOOC4m8Ml0mB2xuHzHy9UlVGMpNftMelbk,1826
|
||||||
|
sqlalchemy/util/deprecations.py,sha256=oz5oLKUYL7WOMq8WudNdr4olB9KJycR1B88FuyN_BFU,11894
|
||||||
|
sqlalchemy/util/langhelpers.py,sha256=5eFZacBOGQoWvnBjVU5ItoOgkWjz7Q05PSMi0vbLDSk,58174
|
||||||
|
sqlalchemy/util/queue.py,sha256=SoUrtd6cw5ncTUk2FN1-YEvetBHcZzo5Zbr2l-9VJGw,9583
|
||||||
|
sqlalchemy/util/topological.py,sha256=w9_UvLP0Gf8wsCjpBxNwspXdoll_7kqO-rYVb-I5AU8,2957
|
5
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/WHEEL
Normal file
5
venv/Lib/site-packages/SQLAlchemy-1.4.20.dist-info/WHEEL
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.36.2)
|
||||||
|
Root-Is-Purelib: false
|
||||||
|
Tag: cp39-cp39-win_amd64
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
sqlalchemy
|
@ -0,0 +1 @@
|
|||||||
|
pip
|
28
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/LICENSE.rst
Normal file
28
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/LICENSE.rst
Normal file
@ -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.
|
128
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/METADATA
Normal file
128
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/METADATA
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
Metadata-Version: 2.1
|
||||||
|
Name: Werkzeug
|
||||||
|
Version: 2.0.1
|
||||||
|
Summary: The comprehensive WSGI web application library.
|
||||||
|
Home-page: https://palletsprojects.com/p/werkzeug/
|
||||||
|
Author: Armin Ronacher
|
||||||
|
Author-email: armin.ronacher@active-4.com
|
||||||
|
Maintainer: Pallets
|
||||||
|
Maintainer-email: contact@palletsprojects.com
|
||||||
|
License: BSD-3-Clause
|
||||||
|
Project-URL: Donate, https://palletsprojects.com/donate
|
||||||
|
Project-URL: Documentation, https://werkzeug.palletsprojects.com/
|
||||||
|
Project-URL: Changes, https://werkzeug.palletsprojects.com/changes/
|
||||||
|
Project-URL: Source Code, https://github.com/pallets/werkzeug/
|
||||||
|
Project-URL: Issue Tracker, https://github.com/pallets/werkzeug/issues/
|
||||||
|
Project-URL: Twitter, https://twitter.com/PalletsTeam
|
||||||
|
Project-URL: Chat, https://discord.gg/pallets
|
||||||
|
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: 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
|
||||||
|
Requires-Python: >=3.6
|
||||||
|
Description-Content-Type: text/x-rst
|
||||||
|
Requires-Dist: dataclasses ; python_version < "3.7"
|
||||||
|
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 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.
|
||||||
|
|
||||||
|
.. _WSGI: https://wsgi.readthedocs.io/en/latest/
|
||||||
|
.. _Flask: https://www.palletsprojects.com/p/flask/
|
||||||
|
|
||||||
|
|
||||||
|
Installing
|
||||||
|
----------
|
||||||
|
|
||||||
|
Install and update using `pip`_:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
pip install -U Werkzeug
|
||||||
|
|
||||||
|
.. _pip: https://pip.pypa.io/en/stable/quickstart/
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
Donate
|
||||||
|
------
|
||||||
|
|
||||||
|
The Pallets organization develops and supports Werkzeug 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
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Documentation: https://werkzeug.palletsprojects.com/
|
||||||
|
- Changes: https://werkzeug.palletsprojects.com/changes/
|
||||||
|
- PyPI Releases: https://pypi.org/project/Werkzeug/
|
||||||
|
- Source Code: https://github.com/pallets/werkzeug/
|
||||||
|
- Issue Tracker: https://github.com/pallets/werkzeug/issues/
|
||||||
|
- Website: https://palletsprojects.com/p/werkzeug/
|
||||||
|
- Twitter: https://twitter.com/PalletsTeam
|
||||||
|
- Chat: https://discord.gg/pallets
|
||||||
|
|
||||||
|
|
111
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/RECORD
Normal file
111
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/RECORD
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
Werkzeug-2.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
|
Werkzeug-2.0.1.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475
|
||||||
|
Werkzeug-2.0.1.dist-info/METADATA,sha256=8-W33EMnGqnCCi-d8Dv63IQQuyELRIsXhwOJNXbNgL0,4421
|
||||||
|
Werkzeug-2.0.1.dist-info/RECORD,,
|
||||||
|
Werkzeug-2.0.1.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
|
||||||
|
Werkzeug-2.0.1.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9
|
||||||
|
werkzeug/__init__.py,sha256=_CCsfdeqNllFNRJx8cvqYrwBsQQQXJaMmnk2sAZnDng,188
|
||||||
|
werkzeug/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/_internal.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/_reloader.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/datastructures.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/exceptions.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/filesystem.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/formparser.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/http.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/local.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/routing.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/security.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/serving.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/test.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/testapp.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/urls.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/user_agent.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/useragents.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/utils.cpython-39.pyc,,
|
||||||
|
werkzeug/__pycache__/wsgi.cpython-39.pyc,,
|
||||||
|
werkzeug/_internal.py,sha256=_QKkvdaG4pDFwK68c0EpPzYJGe9Y7toRAT1cBbC-CxU,18572
|
||||||
|
werkzeug/_reloader.py,sha256=B1hEfgsUOz2IginBQM5Zak_eaIF7gr3GS5-0x2OHvAE,13950
|
||||||
|
werkzeug/datastructures.py,sha256=KahVPSLOapbNbKh1ppr9K8_DgWJv1EGgA9DhTEGMHcg,97886
|
||||||
|
werkzeug/datastructures.pyi,sha256=5DTPF8P8Zvi458eK27Qcj7eNUlLM_AC0jBNkj6uQpds,33774
|
||||||
|
werkzeug/debug/__init__.py,sha256=CUFrPEYAaotHRkmjOieqd3EasXDii2JVC1HdmEzMwqM,17924
|
||||||
|
werkzeug/debug/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
werkzeug/debug/__pycache__/console.cpython-39.pyc,,
|
||||||
|
werkzeug/debug/__pycache__/repr.cpython-39.pyc,,
|
||||||
|
werkzeug/debug/__pycache__/tbtools.cpython-39.pyc,,
|
||||||
|
werkzeug/debug/console.py,sha256=E1nBMEvFkX673ShQjPtVY-byYatfX9MN-dBMjRI8a8E,5897
|
||||||
|
werkzeug/debug/repr.py,sha256=QCSHENKsChEZDCIApkVi_UNjhJ77v8BMXK1OfxO189M,9483
|
||||||
|
werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673
|
||||||
|
werkzeug/debug/shared/ICON_LICENSE.md,sha256=DhA6Y1gUl5Jwfg0NFN9Rj4VWITt8tUx0IvdGf0ux9-s,222
|
||||||
|
werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507
|
||||||
|
werkzeug/debug/shared/debugger.js,sha256=dYbUmFmb3YZb5YpWpYPOQArdrN7NPeY0ODawL7ihzDI,10524
|
||||||
|
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=vyp1RnB227Fuw8LIyM5C-bBCBQN5hvZSCApY2oeJ9ik,6705
|
||||||
|
werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220
|
||||||
|
werkzeug/debug/tbtools.py,sha256=TfReusPbM3yjm3xvOFkH45V7-5JnNqB9x1EQPnVC6Xo,19189
|
||||||
|
werkzeug/exceptions.py,sha256=CUwx0pBiNbk4f9cON17ekgKnmLi6HIVFjUmYZc2x0wM,28681
|
||||||
|
werkzeug/filesystem.py,sha256=JS2Dv2QF98WILxY4_thHl-WMcUcwluF_4igkDPaP1l4,1956
|
||||||
|
werkzeug/formparser.py,sha256=GIKfzuQ_khuBXnf3N7_LzOEruYwNc3m4bI02BgtT5jg,17385
|
||||||
|
werkzeug/http.py,sha256=oUCXFFMnkOQ-cHbUY_aiqitshcrSzNDq3fEMf1VI_yk,45141
|
||||||
|
werkzeug/local.py,sha256=WsR6H-2XOtPigpimjORbLsS3h9WI0lCdZjGI2LHDDxA,22733
|
||||||
|
werkzeug/middleware/__init__.py,sha256=qfqgdT5npwG9ses3-FXQJf3aB95JYP1zchetH_T3PUw,500
|
||||||
|
werkzeug/middleware/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/__pycache__/dispatcher.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/__pycache__/http_proxy.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/__pycache__/lint.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/__pycache__/profiler.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/__pycache__/proxy_fix.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/__pycache__/shared_data.cpython-39.pyc,,
|
||||||
|
werkzeug/middleware/dispatcher.py,sha256=Fh_w-KyWnTSYF-Lfv5dimQ7THSS7afPAZMmvc4zF1gg,2580
|
||||||
|
werkzeug/middleware/http_proxy.py,sha256=HE8VyhS7CR-E1O6_9b68huv8FLgGGR1DLYqkS3Xcp3Q,7558
|
||||||
|
werkzeug/middleware/lint.py,sha256=yMzMdm4xI2_N-Wv2j1yoaVI3ltHOYS6yZyA-wUv1sKw,13962
|
||||||
|
werkzeug/middleware/profiler.py,sha256=G2JieUMv4QPamtCY6ibIK7P-piPRdPybav7bm2MSFvs,4898
|
||||||
|
werkzeug/middleware/proxy_fix.py,sha256=uRgQ3dEvFV8JxUqajHYYYOPEeA_BFqaa51Yp8VW0uzA,6849
|
||||||
|
werkzeug/middleware/shared_data.py,sha256=eOCGr-i6BCexDfL7xdPRWMwPJPgp0NE2B416Gl67Q78,10959
|
||||||
|
werkzeug/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
werkzeug/routing.py,sha256=FDRtvCfaZSmXnQ0cUYxowb3P0y0dxlUlMSUmerY5sb0,84147
|
||||||
|
werkzeug/sansio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||||
|
werkzeug/sansio/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
werkzeug/sansio/__pycache__/multipart.cpython-39.pyc,,
|
||||||
|
werkzeug/sansio/__pycache__/request.cpython-39.pyc,,
|
||||||
|
werkzeug/sansio/__pycache__/response.cpython-39.pyc,,
|
||||||
|
werkzeug/sansio/__pycache__/utils.cpython-39.pyc,,
|
||||||
|
werkzeug/sansio/multipart.py,sha256=bJMCNC2f5xyAaylahNViJ0JqmV4ThLRbDVGVzKwcqrQ,8751
|
||||||
|
werkzeug/sansio/request.py,sha256=aA9rABkWiG4MhYMByanst2NXkEclsq8SIxhb0LQf0e0,20228
|
||||||
|
werkzeug/sansio/response.py,sha256=HSG6t-tyPZd3awzWqr7qL9IV4HYAvDgON1c0YPU2RXw,24117
|
||||||
|
werkzeug/sansio/utils.py,sha256=V5v-UUnX8pm4RehP9Tt_NiUSOJGJGUvKjlW0eOIQldM,4164
|
||||||
|
werkzeug/security.py,sha256=gPDRuCjkjWrcqj99tBMq8_nHFZLFQjgoW5Ga5XIw9jo,8158
|
||||||
|
werkzeug/serving.py,sha256=_RG2dCclOQcdjJ2NE8tzCRybGePlwcs8kTypiWRP2gY,38030
|
||||||
|
werkzeug/test.py,sha256=EJXJy-b_JriHrlfs5VNCkwbki8Kn_xUDkOYOCx_6Q7Q,48096
|
||||||
|
werkzeug/testapp.py,sha256=f48prWSGJhbSrvYb8e1fnAah4BkrLb0enHSdChgsjBY,9471
|
||||||
|
werkzeug/urls.py,sha256=3o_aUcr5Ou13XihSU6VvX6RHMhoWkKpXuCCia9SSAb8,41021
|
||||||
|
werkzeug/user_agent.py,sha256=WclZhpvgLurMF45hsioSbS75H1Zb4iMQGKN3_yZ2oKo,1420
|
||||||
|
werkzeug/useragents.py,sha256=G8tmv_6vxJaPrLQH3eODNgIYe0_V6KETROQlJI-WxDE,7264
|
||||||
|
werkzeug/utils.py,sha256=WrU-LbwemyGd8zBHBgQyLaIxing4QLEChiP0qnzr2sc,36771
|
||||||
|
werkzeug/wrappers/__init__.py,sha256=-s75nPbyXHzU_rwmLPDhoMuGbEUk0jZT_n0ZQAOFGf8,654
|
||||||
|
werkzeug/wrappers/__pycache__/__init__.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/accept.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/auth.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/base_request.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/base_response.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/common_descriptors.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/cors.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/etag.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/json.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/request.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/response.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/__pycache__/user_agent.cpython-39.pyc,,
|
||||||
|
werkzeug/wrappers/accept.py,sha256=_oZtAQkahvsrPRkNj2fieg7_St9P0NFC3SgZbJKS6xU,429
|
||||||
|
werkzeug/wrappers/auth.py,sha256=rZPCzGxHk9R55PRkmS90kRywUVjjuMWzCGtH68qCq8U,856
|
||||||
|
werkzeug/wrappers/base_request.py,sha256=saz9RyNQkvI_XLPYVm29KijNHmD1YzgxDqa0qHTbgss,1174
|
||||||
|
werkzeug/wrappers/base_response.py,sha256=q_-TaYywT5G4zA-DWDRDJhJSat2_4O7gOPob6ye4_9A,1186
|
||||||
|
werkzeug/wrappers/common_descriptors.py,sha256=v_kWLH3mvCiSRVJ1FNw7nO3w2UJfzY57UKKB5J4zCvE,898
|
||||||
|
werkzeug/wrappers/cors.py,sha256=c5UndlZsZvYkbPrp6Gj5iSXxw_VOJDJHskO6-jRmNyQ,846
|
||||||
|
werkzeug/wrappers/etag.py,sha256=XHWQQs7Mdd1oWezgBIsl-bYe8ydKkRZVil2Qd01D0Mo,846
|
||||||
|
werkzeug/wrappers/json.py,sha256=HM1btPseGeXca0vnwQN_MvZl6h-qNsFY5YBKXKXFwus,410
|
||||||
|
werkzeug/wrappers/request.py,sha256=0zAkCUwJbUBzioGy2UKxE6XpuXPAZbEhhML4WErzeBo,24818
|
||||||
|
werkzeug/wrappers/response.py,sha256=95hXIysZTeNC0bqhvGB2fLBRKxedR_cgI5szZZWfyzw,35177
|
||||||
|
werkzeug/wrappers/user_agent.py,sha256=Wl1-A0-1r8o7cHIZQTB55O4Ged6LpCKENaQDlOY5pXA,435
|
||||||
|
werkzeug/wsgi.py,sha256=7psV3SHLtCzk1KSuGmIK5uP2QTDXyfCCDclyqCmIUO4,33715
|
5
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/WHEEL
Normal file
5
venv/Lib/site-packages/Werkzeug-2.0.1.dist-info/WHEEL
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Wheel-Version: 1.0
|
||||||
|
Generator: bdist_wheel (0.36.2)
|
||||||
|
Root-Is-Purelib: true
|
||||||
|
Tag: py3-none-any
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
werkzeug
|
BIN
venv/Lib/site-packages/__pycache__/pyparsing.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/__pycache__/pyparsing.cpython-39.pyc
Normal file
Binary file not shown.
128
venv/Lib/site-packages/_distutils_hack/__init__.py
Normal file
128
venv/Lib/site-packages/_distutils_hack/__init__.py
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import importlib
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
|
||||||
|
is_pypy = '__pypy__' in sys.builtin_module_names
|
||||||
|
|
||||||
|
|
||||||
|
warnings.filterwarnings('ignore',
|
||||||
|
r'.+ distutils\b.+ deprecated',
|
||||||
|
DeprecationWarning)
|
||||||
|
|
||||||
|
|
||||||
|
def warn_distutils_present():
|
||||||
|
if 'distutils' not in sys.modules:
|
||||||
|
return
|
||||||
|
if is_pypy and sys.version_info < (3, 7):
|
||||||
|
# PyPy for 3.6 unconditionally imports distutils, so bypass the warning
|
||||||
|
# https://foss.heptapod.net/pypy/pypy/-/blob/be829135bc0d758997b3566062999ee8b23872b4/lib-python/3/site.py#L250
|
||||||
|
return
|
||||||
|
warnings.warn(
|
||||||
|
"Distutils was imported before Setuptools, but importing Setuptools "
|
||||||
|
"also replaces the `distutils` module in `sys.modules`. This may lead "
|
||||||
|
"to undesirable behaviors or errors. To avoid these issues, avoid "
|
||||||
|
"using distutils directly, ensure that setuptools is installed in the "
|
||||||
|
"traditional way (e.g. not an editable install), and/or make sure "
|
||||||
|
"that setuptools is always imported before distutils.")
|
||||||
|
|
||||||
|
|
||||||
|
def clear_distutils():
|
||||||
|
if 'distutils' not in sys.modules:
|
||||||
|
return
|
||||||
|
warnings.warn("Setuptools is replacing distutils.")
|
||||||
|
mods = [name for name in sys.modules if re.match(r'distutils\b', name)]
|
||||||
|
for name in mods:
|
||||||
|
del sys.modules[name]
|
||||||
|
|
||||||
|
|
||||||
|
def enabled():
|
||||||
|
"""
|
||||||
|
Allow selection of distutils by environment variable.
|
||||||
|
"""
|
||||||
|
which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'stdlib')
|
||||||
|
return which == 'local'
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_local_distutils():
|
||||||
|
clear_distutils()
|
||||||
|
distutils = importlib.import_module('setuptools._distutils')
|
||||||
|
distutils.__name__ = 'distutils'
|
||||||
|
sys.modules['distutils'] = distutils
|
||||||
|
|
||||||
|
# sanity check that submodules load as expected
|
||||||
|
core = importlib.import_module('distutils.core')
|
||||||
|
assert '_distutils' in core.__file__, core.__file__
|
||||||
|
|
||||||
|
|
||||||
|
def do_override():
|
||||||
|
"""
|
||||||
|
Ensure that the local copy of distutils is preferred over stdlib.
|
||||||
|
|
||||||
|
See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401
|
||||||
|
for more motivation.
|
||||||
|
"""
|
||||||
|
if enabled():
|
||||||
|
warn_distutils_present()
|
||||||
|
ensure_local_distutils()
|
||||||
|
|
||||||
|
|
||||||
|
class DistutilsMetaFinder:
|
||||||
|
def find_spec(self, fullname, path, target=None):
|
||||||
|
if path is not None:
|
||||||
|
return
|
||||||
|
|
||||||
|
method_name = 'spec_for_{fullname}'.format(**locals())
|
||||||
|
method = getattr(self, method_name, lambda: None)
|
||||||
|
return method()
|
||||||
|
|
||||||
|
def spec_for_distutils(self):
|
||||||
|
import importlib.abc
|
||||||
|
import importlib.util
|
||||||
|
|
||||||
|
class DistutilsLoader(importlib.abc.Loader):
|
||||||
|
|
||||||
|
def create_module(self, spec):
|
||||||
|
return importlib.import_module('setuptools._distutils')
|
||||||
|
|
||||||
|
def exec_module(self, module):
|
||||||
|
pass
|
||||||
|
|
||||||
|
return importlib.util.spec_from_loader('distutils', DistutilsLoader())
|
||||||
|
|
||||||
|
def spec_for_pip(self):
|
||||||
|
"""
|
||||||
|
Ensure stdlib distutils when running under pip.
|
||||||
|
See pypa/pip#8761 for rationale.
|
||||||
|
"""
|
||||||
|
if self.pip_imported_during_build():
|
||||||
|
return
|
||||||
|
clear_distutils()
|
||||||
|
self.spec_for_distutils = lambda: None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def pip_imported_during_build():
|
||||||
|
"""
|
||||||
|
Detect if pip is being imported in a build script. Ref #2355.
|
||||||
|
"""
|
||||||
|
import traceback
|
||||||
|
return any(
|
||||||
|
frame.f_globals['__file__'].endswith('setup.py')
|
||||||
|
for frame, line in traceback.walk_stack(None)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
DISTUTILS_FINDER = DistutilsMetaFinder()
|
||||||
|
|
||||||
|
|
||||||
|
def add_shim():
|
||||||
|
sys.meta_path.insert(0, DISTUTILS_FINDER)
|
||||||
|
|
||||||
|
|
||||||
|
def remove_shim():
|
||||||
|
try:
|
||||||
|
sys.meta_path.remove(DISTUTILS_FINDER)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
Binary file not shown.
Binary file not shown.
1
venv/Lib/site-packages/_distutils_hack/override.py
Normal file
1
venv/Lib/site-packages/_distutils_hack/override.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
__import__('_distutils_hack').do_override()
|
8
venv/Lib/site-packages/_pytest/__init__.py
Normal file
8
venv/Lib/site-packages/_pytest/__init__.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
__all__ = ["__version__"]
|
||||||
|
|
||||||
|
try:
|
||||||
|
from ._version import version as __version__
|
||||||
|
except ImportError:
|
||||||
|
# broken installation, we don't even try
|
||||||
|
# unknown only works because we do poor mans version compare
|
||||||
|
__version__ = "unknown"
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/compat.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/compat.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/main.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/main.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/nodes.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/nodes.cpython-39.pyc
Normal file
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/nose.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/nose.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/python.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/python.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/runner.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/runner.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/store.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/store.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/timing.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/timing.cpython-39.pyc
Normal file
Binary file not shown.
BIN
venv/Lib/site-packages/_pytest/__pycache__/tmpdir.cpython-39.pyc
Normal file
BIN
venv/Lib/site-packages/_pytest/__pycache__/tmpdir.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
117
venv/Lib/site-packages/_pytest/_argcomplete.py
Normal file
117
venv/Lib/site-packages/_pytest/_argcomplete.py
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
"""Allow bash-completion for argparse with argcomplete if installed.
|
||||||
|
|
||||||
|
Needs argcomplete>=0.5.6 for python 3.2/3.3 (older versions fail
|
||||||
|
to find the magic string, so _ARGCOMPLETE env. var is never set, and
|
||||||
|
this does not need special code).
|
||||||
|
|
||||||
|
Function try_argcomplete(parser) should be called directly before
|
||||||
|
the call to ArgumentParser.parse_args().
|
||||||
|
|
||||||
|
The filescompleter is what you normally would use on the positional
|
||||||
|
arguments specification, in order to get "dirname/" after "dirn<TAB>"
|
||||||
|
instead of the default "dirname ":
|
||||||
|
|
||||||
|
optparser.add_argument(Config._file_or_dir, nargs='*').completer=filescompleter
|
||||||
|
|
||||||
|
Other, application specific, completers should go in the file
|
||||||
|
doing the add_argument calls as they need to be specified as .completer
|
||||||
|
attributes as well. (If argcomplete is not installed, the function the
|
||||||
|
attribute points to will not be used).
|
||||||
|
|
||||||
|
SPEEDUP
|
||||||
|
=======
|
||||||
|
|
||||||
|
The generic argcomplete script for bash-completion
|
||||||
|
(/etc/bash_completion.d/python-argcomplete.sh)
|
||||||
|
uses a python program to determine startup script generated by pip.
|
||||||
|
You can speed up completion somewhat by changing this script to include
|
||||||
|
# PYTHON_ARGCOMPLETE_OK
|
||||||
|
so the python-argcomplete-check-easy-install-script does not
|
||||||
|
need to be called to find the entry point of the code and see if that is
|
||||||
|
marked with PYTHON_ARGCOMPLETE_OK.
|
||||||
|
|
||||||
|
INSTALL/DEBUGGING
|
||||||
|
=================
|
||||||
|
|
||||||
|
To include this support in another application that has setup.py generated
|
||||||
|
scripts:
|
||||||
|
|
||||||
|
- Add the line:
|
||||||
|
# PYTHON_ARGCOMPLETE_OK
|
||||||
|
near the top of the main python entry point.
|
||||||
|
|
||||||
|
- Include in the file calling parse_args():
|
||||||
|
from _argcomplete import try_argcomplete, filescompleter
|
||||||
|
Call try_argcomplete just before parse_args(), and optionally add
|
||||||
|
filescompleter to the positional arguments' add_argument().
|
||||||
|
|
||||||
|
If things do not work right away:
|
||||||
|
|
||||||
|
- Switch on argcomplete debugging with (also helpful when doing custom
|
||||||
|
completers):
|
||||||
|
export _ARC_DEBUG=1
|
||||||
|
|
||||||
|
- Run:
|
||||||
|
python-argcomplete-check-easy-install-script $(which appname)
|
||||||
|
echo $?
|
||||||
|
will echo 0 if the magic line has been found, 1 if not.
|
||||||
|
|
||||||
|
- Sometimes it helps to find early on errors using:
|
||||||
|
_ARGCOMPLETE=1 _ARC_DEBUG=1 appname
|
||||||
|
which should throw a KeyError: 'COMPLINE' (which is properly set by the
|
||||||
|
global argcomplete script).
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from glob import glob
|
||||||
|
from typing import Any
|
||||||
|
from typing import List
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
class FastFilesCompleter:
|
||||||
|
"""Fast file completer class."""
|
||||||
|
|
||||||
|
def __init__(self, directories: bool = True) -> None:
|
||||||
|
self.directories = directories
|
||||||
|
|
||||||
|
def __call__(self, prefix: str, **kwargs: Any) -> List[str]:
|
||||||
|
# Only called on non option completions.
|
||||||
|
if os.path.sep in prefix[1:]:
|
||||||
|
prefix_dir = len(os.path.dirname(prefix) + os.path.sep)
|
||||||
|
else:
|
||||||
|
prefix_dir = 0
|
||||||
|
completion = []
|
||||||
|
globbed = []
|
||||||
|
if "*" not in prefix and "?" not in prefix:
|
||||||
|
# We are on unix, otherwise no bash.
|
||||||
|
if not prefix or prefix[-1] == os.path.sep:
|
||||||
|
globbed.extend(glob(prefix + ".*"))
|
||||||
|
prefix += "*"
|
||||||
|
globbed.extend(glob(prefix))
|
||||||
|
for x in sorted(globbed):
|
||||||
|
if os.path.isdir(x):
|
||||||
|
x += "/"
|
||||||
|
# Append stripping the prefix (like bash, not like compgen).
|
||||||
|
completion.append(x[prefix_dir:])
|
||||||
|
return completion
|
||||||
|
|
||||||
|
|
||||||
|
if os.environ.get("_ARGCOMPLETE"):
|
||||||
|
try:
|
||||||
|
import argcomplete.completers
|
||||||
|
except ImportError:
|
||||||
|
sys.exit(-1)
|
||||||
|
filescompleter: Optional[FastFilesCompleter] = FastFilesCompleter()
|
||||||
|
|
||||||
|
def try_argcomplete(parser: argparse.ArgumentParser) -> None:
|
||||||
|
argcomplete.autocomplete(parser, always_complete_options=False)
|
||||||
|
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
def try_argcomplete(parser: argparse.ArgumentParser) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
filescompleter = None
|
22
venv/Lib/site-packages/_pytest/_code/__init__.py
Normal file
22
venv/Lib/site-packages/_pytest/_code/__init__.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
"""Python inspection/code generation API."""
|
||||||
|
from .code import Code
|
||||||
|
from .code import ExceptionInfo
|
||||||
|
from .code import filter_traceback
|
||||||
|
from .code import Frame
|
||||||
|
from .code import getfslineno
|
||||||
|
from .code import Traceback
|
||||||
|
from .code import TracebackEntry
|
||||||
|
from .source import getrawcode
|
||||||
|
from .source import Source
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"Code",
|
||||||
|
"ExceptionInfo",
|
||||||
|
"filter_traceback",
|
||||||
|
"Frame",
|
||||||
|
"getfslineno",
|
||||||
|
"getrawcode",
|
||||||
|
"Traceback",
|
||||||
|
"TracebackEntry",
|
||||||
|
"Source",
|
||||||
|
]
|
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user