Restarted VENV
This commit is contained in:
parent
5258a6787c
commit
ace8f0524f
6
.idea/BlendCharmSettings.xml
generated
Normal file
6
.idea/BlendCharmSettings.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="BlendCharmPersistentData">
|
||||
<option name="blenderSettings" value="<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <blenderSettingsData> <showVerbose>false</showVerbose> </blenderSettingsData> " />
|
||||
</component>
|
||||
</project>
|
@ -11,7 +11,7 @@ password = open("../sqlPass.txt", 'r').read()
|
||||
scheduler = AsyncIOScheduler({
|
||||
'apscheduler.jobstores.default': {
|
||||
'type': 'sqlalchemy',
|
||||
'url': f'mysql+pymysql://discord_bot:{password}@localhost:5618/discord_bot?charset=utf8mb4',
|
||||
'url': f'mysql+pymysql://quentin:{password}@192.168.1.52:5618/discord_bot?charset=utf8mb4',
|
||||
},
|
||||
'apscheduler.job_defaults.coalesce': 'True',
|
||||
'apscheduler.timezone': 'America/Chicago'
|
||||
@ -23,9 +23,9 @@ mcSelf = None
|
||||
|
||||
|
||||
def get_con() -> pymysql.Connection:
|
||||
return pymysql.connect(host='localhost',
|
||||
return pymysql.connect(host='192.168.1.52',
|
||||
port=5618,
|
||||
user='discord_bot',
|
||||
user='quentin',
|
||||
password=f'{password}',
|
||||
db='minecraft',
|
||||
charset='utf8mb4',
|
||||
@ -122,7 +122,7 @@ class McRoll(commands.Cog):
|
||||
async def main_poll_recursion(self, choices, channelId):
|
||||
self.pollMessageId = (await self.poll(choices, channelId)).id
|
||||
scheduler.add_job(get_poll_results, 'date',
|
||||
run_date=(datetime.now() + timedelta(days=1)),
|
||||
run_date=(datetime.now() + timedelta(seconds=6)),
|
||||
args=[choices, self.pollMessageId, channelId],
|
||||
coalesce=True)
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
34
scr/bot.py
34
scr/bot.py
@ -1,34 +0,0 @@
|
||||
import discord
|
||||
from discord.ext.commands import Bot
|
||||
|
||||
token = open("../token.txt")
|
||||
|
||||
cogs = ["Modules.TMC.autoReply.Join", "Modules.TMC.autoReply.Leave",
|
||||
"Modules.TMC.McRoll", "Modules.TMC.ParseForIssues", "Modules.TMC.doym"]
|
||||
|
||||
prefix = 'o!'
|
||||
intents = discord.Intents().all()
|
||||
|
||||
"""
|
||||
tokens = open("tokens.txt", 'r')
|
||||
tokens = tokens.readlines()
|
||||
bot_running = input("Would you like to run the test bot[T] or the default[D] :: ")
|
||||
if bot_running == 'T':
|
||||
token = tokens[0].rstrip()
|
||||
elif bot_running == 'D':
|
||||
token = tokens[1].rstrip()
|
||||
tokens = ''
|
||||
"""
|
||||
client = Bot(command_prefix=prefix, intents=intents)
|
||||
client.remove_command("help")
|
||||
|
||||
|
||||
@client.event
|
||||
async def on_ready():
|
||||
print('Logged in as:')
|
||||
print('{0.user}'.format(client))
|
||||
|
||||
for cog in cogs:
|
||||
client.load_extension(cog)
|
||||
|
||||
client.run(token.read())
|
@ -1,241 +0,0 @@
|
||||
<#
|
||||
.Synopsis
|
||||
Activate a Python virtual environment for the current PowerShell session.
|
||||
|
||||
.Description
|
||||
Pushes the python executable for a virtual environment to the front of the
|
||||
$Env:PATH environment variable and sets the prompt to signify that you are
|
||||
in a Python virtual environment. Makes use of the command line switches as
|
||||
well as the `pyvenv.cfg` file values present in the virtual environment.
|
||||
|
||||
.Parameter VenvDir
|
||||
Path to the directory that contains the virtual environment to activate. The
|
||||
default value for this is the parent of the directory that the Activate.ps1
|
||||
script is located within.
|
||||
|
||||
.Parameter Prompt
|
||||
The prompt prefix to display when this virtual environment is activated. By
|
||||
default, this prompt is the name of the virtual environment folder (VenvDir)
|
||||
surrounded by parentheses and followed by a single space (ie. '(.venv) ').
|
||||
|
||||
.Example
|
||||
Activate.ps1
|
||||
Activates the Python virtual environment that contains the Activate.ps1 script.
|
||||
|
||||
.Example
|
||||
Activate.ps1 -Verbose
|
||||
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||
and shows extra information about the activation as it executes.
|
||||
|
||||
.Example
|
||||
Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv
|
||||
Activates the Python virtual environment located in the specified location.
|
||||
|
||||
.Example
|
||||
Activate.ps1 -Prompt "MyPython"
|
||||
Activates the Python virtual environment that contains the Activate.ps1 script,
|
||||
and prefixes the current prompt with the specified string (surrounded in
|
||||
parentheses) while the virtual environment is active.
|
||||
|
||||
.Notes
|
||||
On Windows, it may be required to enable this Activate.ps1 script by setting the
|
||||
execution policy for the user. You can do this by issuing the following PowerShell
|
||||
command:
|
||||
|
||||
PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
|
||||
For more information on Execution Policies:
|
||||
https://go.microsoft.com/fwlink/?LinkID=135170
|
||||
|
||||
#>
|
||||
Param(
|
||||
[Parameter(Mandatory = $false)]
|
||||
[String]
|
||||
$VenvDir,
|
||||
[Parameter(Mandatory = $false)]
|
||||
[String]
|
||||
$Prompt
|
||||
)
|
||||
|
||||
<# Function declarations --------------------------------------------------- #>
|
||||
|
||||
<#
|
||||
.Synopsis
|
||||
Remove all shell session elements added by the Activate script, including the
|
||||
addition of the virtual environment's Python executable from the beginning of
|
||||
the PATH variable.
|
||||
|
||||
.Parameter NonDestructive
|
||||
If present, do not remove this function from the global namespace for the
|
||||
session.
|
||||
|
||||
#>
|
||||
function global:deactivate ([switch]$NonDestructive) {
|
||||
# Revert to original values
|
||||
|
||||
# The prior prompt:
|
||||
if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) {
|
||||
Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt
|
||||
Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT
|
||||
}
|
||||
|
||||
# The prior PYTHONHOME:
|
||||
if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) {
|
||||
Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME
|
||||
Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME
|
||||
}
|
||||
|
||||
# The prior PATH:
|
||||
if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) {
|
||||
Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH
|
||||
Remove-Item -Path Env:_OLD_VIRTUAL_PATH
|
||||
}
|
||||
|
||||
# Just remove the VIRTUAL_ENV altogether:
|
||||
if (Test-Path -Path Env:VIRTUAL_ENV) {
|
||||
Remove-Item -Path env:VIRTUAL_ENV
|
||||
}
|
||||
|
||||
# Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether:
|
||||
if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) {
|
||||
Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force
|
||||
}
|
||||
|
||||
# Leave deactivate function in the global namespace if requested:
|
||||
if (-not $NonDestructive) {
|
||||
Remove-Item -Path function:deactivate
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.Description
|
||||
Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the
|
||||
given folder, and returns them in a map.
|
||||
|
||||
For each line in the pyvenv.cfg file, if that line can be parsed into exactly
|
||||
two strings separated by `=` (with any amount of whitespace surrounding the =)
|
||||
then it is considered a `key = value` line. The left hand string is the key,
|
||||
the right hand is the value.
|
||||
|
||||
If the value starts with a `'` or a `"` then the first and last character is
|
||||
stripped from the value before being captured.
|
||||
|
||||
.Parameter ConfigDir
|
||||
Path to the directory that contains the `pyvenv.cfg` file.
|
||||
#>
|
||||
function Get-PyVenvConfig(
|
||||
[String]
|
||||
$ConfigDir
|
||||
) {
|
||||
Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg"
|
||||
|
||||
# Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue).
|
||||
$pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue
|
||||
|
||||
# An empty map will be returned if no config file is found.
|
||||
$pyvenvConfig = @{ }
|
||||
|
||||
if ($pyvenvConfigPath) {
|
||||
|
||||
Write-Verbose "File exists, parse `key = value` lines"
|
||||
$pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath
|
||||
|
||||
$pyvenvConfigContent | ForEach-Object {
|
||||
$keyval = $PSItem -split "\s*=\s*", 2
|
||||
if ($keyval[0] -and $keyval[1]) {
|
||||
$val = $keyval[1]
|
||||
|
||||
# Remove extraneous quotations around a string value.
|
||||
if ("'""".Contains($val.Substring(0, 1))) {
|
||||
$val = $val.Substring(1, $val.Length - 2)
|
||||
}
|
||||
|
||||
$pyvenvConfig[$keyval[0]] = $val
|
||||
Write-Verbose "Adding Key: '$($keyval[0])'='$val'"
|
||||
}
|
||||
}
|
||||
}
|
||||
return $pyvenvConfig
|
||||
}
|
||||
|
||||
|
||||
<# Begin Activate script --------------------------------------------------- #>
|
||||
|
||||
# Determine the containing directory of this script
|
||||
$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
|
||||
$VenvExecDir = Get-Item -Path $VenvExecPath
|
||||
|
||||
Write-Verbose "Activation script is located in path: '$VenvExecPath'"
|
||||
Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)"
|
||||
Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)"
|
||||
|
||||
# Set values required in priority: CmdLine, ConfigFile, Default
|
||||
# First, get the location of the virtual environment, it might not be
|
||||
# VenvExecDir if specified on the command line.
|
||||
if ($VenvDir) {
|
||||
Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values"
|
||||
}
|
||||
else {
|
||||
Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir."
|
||||
$VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/")
|
||||
Write-Verbose "VenvDir=$VenvDir"
|
||||
}
|
||||
|
||||
# Next, read the `pyvenv.cfg` file to determine any required value such
|
||||
# as `prompt`.
|
||||
$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir
|
||||
|
||||
# Next, set the prompt from the command line, or the config file, or
|
||||
# just use the name of the virtual environment folder.
|
||||
if ($Prompt) {
|
||||
Write-Verbose "Prompt specified as argument, using '$Prompt'"
|
||||
}
|
||||
else {
|
||||
Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value"
|
||||
if ($pyvenvCfg -and $pyvenvCfg['prompt']) {
|
||||
Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'"
|
||||
$Prompt = $pyvenvCfg['prompt'];
|
||||
}
|
||||
else {
|
||||
Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virutal environment)"
|
||||
Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'"
|
||||
$Prompt = Split-Path -Path $venvDir -Leaf
|
||||
}
|
||||
}
|
||||
|
||||
Write-Verbose "Prompt = '$Prompt'"
|
||||
Write-Verbose "VenvDir='$VenvDir'"
|
||||
|
||||
# Deactivate any currently active virtual environment, but leave the
|
||||
# deactivate function in place.
|
||||
deactivate -nondestructive
|
||||
|
||||
# Now set the environment variable VIRTUAL_ENV, used by many tools to determine
|
||||
# that there is an activated venv.
|
||||
$env:VIRTUAL_ENV = $VenvDir
|
||||
|
||||
if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) {
|
||||
|
||||
Write-Verbose "Setting prompt to '$Prompt'"
|
||||
|
||||
# Set the prompt to include the env name
|
||||
# Make sure _OLD_VIRTUAL_PROMPT is global
|
||||
function global:_OLD_VIRTUAL_PROMPT { "" }
|
||||
Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT
|
||||
New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt
|
||||
|
||||
function global:prompt {
|
||||
Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) "
|
||||
_OLD_VIRTUAL_PROMPT
|
||||
}
|
||||
}
|
||||
|
||||
# Clear PYTHONHOME
|
||||
if (Test-Path -Path Env:PYTHONHOME) {
|
||||
Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME
|
||||
Remove-Item -Path Env:PYTHONHOME
|
||||
}
|
||||
|
||||
# Add the venv to the PATH
|
||||
Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH
|
||||
$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH"
|
@ -1,76 +0,0 @@
|
||||
# This file must be used with "source bin/activate" *from bash*
|
||||
# you cannot run it directly
|
||||
|
||||
deactivate () {
|
||||
# reset old environment variables
|
||||
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
|
||||
PATH="${_OLD_VIRTUAL_PATH:-}"
|
||||
export PATH
|
||||
unset _OLD_VIRTUAL_PATH
|
||||
fi
|
||||
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
|
||||
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
|
||||
export PYTHONHOME
|
||||
unset _OLD_VIRTUAL_PYTHONHOME
|
||||
fi
|
||||
|
||||
# This should detect bash and zsh, which have a hash command that must
|
||||
# be called to get it to forget past commands. Without forgetting
|
||||
# past commands the $PATH changes we made may not be respected
|
||||
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
|
||||
hash -r
|
||||
fi
|
||||
|
||||
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
|
||||
PS1="${_OLD_VIRTUAL_PS1:-}"
|
||||
export PS1
|
||||
unset _OLD_VIRTUAL_PS1
|
||||
fi
|
||||
|
||||
unset VIRTUAL_ENV
|
||||
if [ ! "${1:-}" = "nondestructive" ] ; then
|
||||
# Self destruct!
|
||||
unset -f deactivate
|
||||
fi
|
||||
}
|
||||
|
||||
# unset irrelevant variables
|
||||
deactivate nondestructive
|
||||
|
||||
VIRTUAL_ENV="/home/discord_bot/bot/venv-linux"
|
||||
export VIRTUAL_ENV
|
||||
|
||||
_OLD_VIRTUAL_PATH="$PATH"
|
||||
PATH="$VIRTUAL_ENV/bin:$PATH"
|
||||
export PATH
|
||||
|
||||
# unset PYTHONHOME if set
|
||||
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
|
||||
# could use `if (set -u; : $PYTHONHOME) ;` in bash
|
||||
if [ -n "${PYTHONHOME:-}" ] ; then
|
||||
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}"
|
||||
unset PYTHONHOME
|
||||
fi
|
||||
|
||||
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
|
||||
_OLD_VIRTUAL_PS1="${PS1:-}"
|
||||
if [ "x(venv-linux) " != x ] ; then
|
||||
PS1="(venv-linux) ${PS1:-}"
|
||||
else
|
||||
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
|
||||
# special case for Aspen magic directories
|
||||
# see https://aspen.io/
|
||||
PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
|
||||
else
|
||||
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
|
||||
fi
|
||||
fi
|
||||
export PS1
|
||||
fi
|
||||
|
||||
# This should detect bash and zsh, which have a hash command that must
|
||||
# be called to get it to forget past commands. Without forgetting
|
||||
# past commands the $PATH changes we made may not be respected
|
||||
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
|
||||
hash -r
|
||||
fi
|
@ -1,37 +0,0 @@
|
||||
# This file must be used with "source bin/activate.csh" *from csh*.
|
||||
# You cannot run it directly.
|
||||
# Created by Davide Di Blasi <davidedb@gmail.com>.
|
||||
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com>
|
||||
|
||||
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
|
||||
|
||||
# Unset irrelevant variables.
|
||||
deactivate nondestructive
|
||||
|
||||
setenv VIRTUAL_ENV "/home/discord_bot/bot/venv-linux"
|
||||
|
||||
set _OLD_VIRTUAL_PATH="$PATH"
|
||||
setenv PATH "$VIRTUAL_ENV/bin:$PATH"
|
||||
|
||||
|
||||
set _OLD_VIRTUAL_PROMPT="$prompt"
|
||||
|
||||
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then
|
||||
if ("venv-linux" != "") then
|
||||
set env_name = "venv-linux"
|
||||
else
|
||||
if (`basename "VIRTUAL_ENV"` == "__") then
|
||||
# special case for Aspen magic directories
|
||||
# see https://aspen.io/
|
||||
set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
|
||||
else
|
||||
set env_name = `basename "$VIRTUAL_ENV"`
|
||||
endif
|
||||
endif
|
||||
set prompt = "[$env_name] $prompt"
|
||||
unset env_name
|
||||
endif
|
||||
|
||||
alias pydoc python -m pydoc
|
||||
|
||||
rehash
|
@ -1,75 +0,0 @@
|
||||
# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
|
||||
# you cannot run it directly
|
||||
|
||||
function deactivate -d "Exit virtualenv and return to normal shell environment"
|
||||
# reset old environment variables
|
||||
if test -n "$_OLD_VIRTUAL_PATH"
|
||||
set -gx PATH $_OLD_VIRTUAL_PATH
|
||||
set -e _OLD_VIRTUAL_PATH
|
||||
end
|
||||
if test -n "$_OLD_VIRTUAL_PYTHONHOME"
|
||||
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
|
||||
set -e _OLD_VIRTUAL_PYTHONHOME
|
||||
end
|
||||
|
||||
if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
|
||||
functions -e fish_prompt
|
||||
set -e _OLD_FISH_PROMPT_OVERRIDE
|
||||
functions -c _old_fish_prompt fish_prompt
|
||||
functions -e _old_fish_prompt
|
||||
end
|
||||
|
||||
set -e VIRTUAL_ENV
|
||||
if test "$argv[1]" != "nondestructive"
|
||||
# Self destruct!
|
||||
functions -e deactivate
|
||||
end
|
||||
end
|
||||
|
||||
# unset irrelevant variables
|
||||
deactivate nondestructive
|
||||
|
||||
set -gx VIRTUAL_ENV "/home/discord_bot/bot/venv-linux"
|
||||
|
||||
set -gx _OLD_VIRTUAL_PATH $PATH
|
||||
set -gx PATH "$VIRTUAL_ENV/bin" $PATH
|
||||
|
||||
# unset PYTHONHOME if set
|
||||
if set -q PYTHONHOME
|
||||
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
|
||||
set -e PYTHONHOME
|
||||
end
|
||||
|
||||
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
|
||||
# fish uses a function instead of an env var to generate the prompt.
|
||||
|
||||
# save the current fish_prompt function as the function _old_fish_prompt
|
||||
functions -c fish_prompt _old_fish_prompt
|
||||
|
||||
# with the original prompt function renamed, we can override with our own.
|
||||
function fish_prompt
|
||||
# Save the return status of the last command
|
||||
set -l old_status $status
|
||||
|
||||
# Prompt override?
|
||||
if test -n "(venv-linux) "
|
||||
printf "%s%s" "(venv-linux) " (set_color normal)
|
||||
else
|
||||
# ...Otherwise, prepend env
|
||||
set -l _checkbase (basename "$VIRTUAL_ENV")
|
||||
if test $_checkbase = "__"
|
||||
# special case for Aspen magic directories
|
||||
# see https://aspen.io/
|
||||
printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal)
|
||||
else
|
||||
printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal)
|
||||
end
|
||||
end
|
||||
|
||||
# Restore the return status of the previous command.
|
||||
echo "exit $old_status" | .
|
||||
_old_fish_prompt
|
||||
end
|
||||
|
||||
set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
|
||||
end
|
@ -1,8 +0,0 @@
|
||||
#!/home/discord_bot/bot/venv-linux/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from chardet.cli.chardetect import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1,8 +0,0 @@
|
||||
#!/home/discord_bot/bot/venv-linux/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from setuptools.command.easy_install import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1,8 +0,0 @@
|
||||
#!/home/discord_bot/bot/venv-linux/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from setuptools.command.easy_install import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1,8 +0,0 @@
|
||||
#!/home/discord_bot/bot/venv-linux/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pip._internal.cli.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1,8 +0,0 @@
|
||||
#!/home/discord_bot/bot/venv-linux/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pip._internal.cli.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1,8 +0,0 @@
|
||||
#!/home/discord_bot/bot/venv-linux/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
import sys
|
||||
from pip._internal.cli.main import main
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(main())
|
@ -1 +0,0 @@
|
||||
python3
|
@ -1 +0,0 @@
|
||||
/usr/lib/python-exec/python3.8/python3
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,19 +0,0 @@
|
||||
This is the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
|
||||
Copyright (c) Alex Grönholm
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
||||
to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
@ -1,140 +0,0 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: APScheduler
|
||||
Version: 3.7.0
|
||||
Summary: In-process task scheduler with Cron-like capabilities
|
||||
Home-page: https://github.com/agronholm/apscheduler
|
||||
Author: Alex Grönholm
|
||||
Author-email: apscheduler@nextday.fi
|
||||
License: MIT
|
||||
Keywords: scheduling cron
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
|
||||
Requires-Dist: setuptools (>=0.7)
|
||||
Requires-Dist: six (>=1.4.0)
|
||||
Requires-Dist: pytz
|
||||
Requires-Dist: tzlocal (~=2.0)
|
||||
Requires-Dist: funcsigs ; python_version < "3.5"
|
||||
Requires-Dist: futures ; python_version == "2.7"
|
||||
Provides-Extra: asyncio
|
||||
Requires-Dist: trollius ; (python_version == "2.7") and extra == 'asyncio'
|
||||
Provides-Extra: doc
|
||||
Requires-Dist: sphinx ; extra == 'doc'
|
||||
Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
|
||||
Provides-Extra: gevent
|
||||
Requires-Dist: gevent ; extra == 'gevent'
|
||||
Provides-Extra: mongodb
|
||||
Requires-Dist: pymongo (>=3.0) ; extra == 'mongodb'
|
||||
Provides-Extra: redis
|
||||
Requires-Dist: redis (>=3.0) ; extra == 'redis'
|
||||
Provides-Extra: rethinkdb
|
||||
Requires-Dist: rethinkdb (>=2.4.0) ; extra == 'rethinkdb'
|
||||
Provides-Extra: sqlalchemy
|
||||
Requires-Dist: sqlalchemy (>=0.8) ; extra == 'sqlalchemy'
|
||||
Provides-Extra: testing
|
||||
Requires-Dist: pytest (<6) ; extra == 'testing'
|
||||
Requires-Dist: pytest-cov ; extra == 'testing'
|
||||
Requires-Dist: pytest-tornado5 ; extra == 'testing'
|
||||
Requires-Dist: mock ; (python_version == "2.7") and extra == 'testing'
|
||||
Requires-Dist: pytest-asyncio (<0.6) ; (python_version == "3.4") and extra == 'testing'
|
||||
Requires-Dist: pytest-asyncio ; (python_version >= "3.5") and extra == 'testing'
|
||||
Provides-Extra: tornado
|
||||
Requires-Dist: tornado (>=4.3) ; extra == 'tornado'
|
||||
Provides-Extra: twisted
|
||||
Requires-Dist: twisted ; extra == 'twisted'
|
||||
Provides-Extra: zookeeper
|
||||
Requires-Dist: kazoo ; extra == 'zookeeper'
|
||||
|
||||
.. image:: https://travis-ci.com/agronholm/apscheduler.svg?branch=master
|
||||
:target: https://travis-ci.com/agronholm/apscheduler
|
||||
:alt: Build Status
|
||||
.. image:: https://coveralls.io/repos/github/agronholm/apscheduler/badge.svg?branch=master
|
||||
:target: https://coveralls.io/github/agronholm/apscheduler?branch=master
|
||||
:alt: Code Coverage
|
||||
|
||||
Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code
|
||||
to be executed later, either just once or periodically. You can add new jobs or remove old ones on
|
||||
the fly as you please. If you store your jobs in a database, they will also survive scheduler
|
||||
restarts and maintain their state. When the scheduler is restarted, it will then run all the jobs
|
||||
it should have run while it was offline [#f1]_.
|
||||
|
||||
Among other things, APScheduler can be used as a cross-platform, application specific replacement
|
||||
to platform specific schedulers, such as the cron daemon or the Windows task scheduler. Please
|
||||
note, however, that APScheduler is **not** a daemon or service itself, nor does it come with any
|
||||
command line tools. It is primarily meant to be run inside existing applications. That said,
|
||||
APScheduler does provide some building blocks for you to build a scheduler service or to run a
|
||||
dedicated scheduler process.
|
||||
|
||||
APScheduler has three built-in scheduling systems you can use:
|
||||
|
||||
* Cron-style scheduling (with optional start/end times)
|
||||
* Interval-based execution (runs jobs on even intervals, with optional start/end times)
|
||||
* One-off delayed execution (runs jobs once, on a set date/time)
|
||||
|
||||
You can mix and match scheduling systems and the backends where the jobs are stored any way you
|
||||
like. Supported backends for storing jobs include:
|
||||
|
||||
* Memory
|
||||
* `SQLAlchemy <http://www.sqlalchemy.org/>`_ (any RDBMS supported by SQLAlchemy works)
|
||||
* `MongoDB <http://www.mongodb.org/>`_
|
||||
* `Redis <http://redis.io/>`_
|
||||
* `RethinkDB <https://www.rethinkdb.com/>`_
|
||||
* `ZooKeeper <https://zookeeper.apache.org/>`_
|
||||
|
||||
APScheduler also integrates with several common Python frameworks, like:
|
||||
|
||||
* `asyncio <http://docs.python.org/3.4/library/asyncio.html>`_ (:pep:`3156`)
|
||||
* `gevent <http://www.gevent.org/>`_
|
||||
* `Tornado <http://www.tornadoweb.org/>`_
|
||||
* `Twisted <http://twistedmatrix.com/>`_
|
||||
* `Qt <http://qt-project.org/>`_ (using either
|
||||
`PyQt <http://www.riverbankcomputing.com/software/pyqt/intro>`_ ,
|
||||
`PySide2 <https://wiki.qt.io/Qt_for_Python>`_ or
|
||||
`PySide <http://qt-project.org/wiki/PySide>`_)
|
||||
|
||||
There are third party solutions for integrating APScheduler with other frameworks:
|
||||
|
||||
* `Django <https://github.com/jarekwg/django-apscheduler>`_
|
||||
* `Flask <https://github.com/viniciuschiele/flask-apscheduler>`_
|
||||
|
||||
|
||||
.. [#f1] The cutoff period for this is also configurable.
|
||||
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
Documentation can be found `here <http://readthedocs.org/docs/apscheduler/en/latest/>`_.
|
||||
|
||||
|
||||
Source
|
||||
------
|
||||
|
||||
The source can be browsed at `Github <https://github.com/agronholm/apscheduler>`_.
|
||||
|
||||
|
||||
Reporting bugs
|
||||
--------------
|
||||
|
||||
A `bug tracker <https://github.com/agronholm/apscheduler/issues>`_ is provided by Github.
|
||||
|
||||
|
||||
Getting help
|
||||
------------
|
||||
|
||||
If you have problems or other questions, you can either:
|
||||
|
||||
* Ask in the `apscheduler <https://gitter.im/apscheduler/Lobby>`_ room on Gitter
|
||||
* Ask on the `APScheduler Google group <http://groups.google.com/group/apscheduler>`_, or
|
||||
* Ask on `StackOverflow <http://stackoverflow.com/questions/tagged/apscheduler>`_ and tag your
|
||||
question with the ``apscheduler`` tag
|
||||
|
||||
|
@ -1,84 +0,0 @@
|
||||
APScheduler-3.7.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
APScheduler-3.7.0.dist-info/LICENSE.txt,sha256=YWP3mH37ONa8MgzitwsvArhivEESZRbVUu8c1DJH51g,1130
|
||||
APScheduler-3.7.0.dist-info/METADATA,sha256=nv0HEv4xOwQh-OD13duoBbl8yiRqrg2egM15MAbpoRk,5685
|
||||
APScheduler-3.7.0.dist-info/RECORD,,
|
||||
APScheduler-3.7.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
APScheduler-3.7.0.dist-info/WHEEL,sha256=Z-nyYpwrcSqxfdux5Mbn_DQ525iP7J2DG3JgGvOYyTQ,110
|
||||
APScheduler-3.7.0.dist-info/entry_points.txt,sha256=7RgkYN_OYyCUQtIGhj-UNcelnIjsNm7nC9rogdMQh3U,1148
|
||||
APScheduler-3.7.0.dist-info/top_level.txt,sha256=O3oMCWxG-AHkecUoO6Ze7-yYjWrttL95uHO8-RFdYvE,12
|
||||
apscheduler/__init__.py,sha256=qFEK2ysRBcLiYmm3deyJJ1avUOugaM_nCGHMD42WMBw,380
|
||||
apscheduler/__pycache__/__init__.cpython-38.pyc,,
|
||||
apscheduler/__pycache__/events.cpython-38.pyc,,
|
||||
apscheduler/__pycache__/job.cpython-38.pyc,,
|
||||
apscheduler/__pycache__/util.cpython-38.pyc,,
|
||||
apscheduler/events.py,sha256=KRMTDQUS6d2uVnrQvPoz3ZPV5V9XKsCAZLsgx913FFo,3593
|
||||
apscheduler/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
apscheduler/executors/__pycache__/__init__.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/asyncio.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/base.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/base_py3.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/debug.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/gevent.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/pool.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/tornado.cpython-38.pyc,,
|
||||
apscheduler/executors/__pycache__/twisted.cpython-38.pyc,,
|
||||
apscheduler/executors/asyncio.py,sha256=ji5f6Qm2uGhov-3w52CXHZi8jc5U_gS56lisQylKTBQ,2087
|
||||
apscheduler/executors/base.py,sha256=hogiMc_t-huw6BMod0HEeY2FhRNmAAUyNNuBHvIX31M,5336
|
||||
apscheduler/executors/base_py3.py,sha256=8WOpTeX1NA-spdbEQ1oJMh5T2O_t2UdsaSnAh-iEWe0,1831
|
||||
apscheduler/executors/debug.py,sha256=15_ogSBzl8RRCfBYDnkIV2uMH8cLk1KImYmBa_NVGpc,573
|
||||
apscheduler/executors/gevent.py,sha256=aulrNmoefyBgrOkH9awRhFiXIDnSCnZ4U0o0_JXIXgc,777
|
||||
apscheduler/executors/pool.py,sha256=6FEUTMl3WCRKebTqwCvpl7B2L9y0GYH16ULs4y_VNJg,2107
|
||||
apscheduler/executors/tornado.py,sha256=DU75VaQ9R6nBuy8lbPUvDKUgsuJcZqwAvURC5vg3r6w,1780
|
||||
apscheduler/executors/twisted.py,sha256=bRoU0C4BoVcS6_BjKD5wfUs0IJpGkmLsRAcMH2rJJss,778
|
||||
apscheduler/job.py,sha256=JCRERBpfWLuomPiNNHX-jrluEwfHkdscEmz4i0Y8rao,11216
|
||||
apscheduler/jobstores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
apscheduler/jobstores/__pycache__/__init__.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/base.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/memory.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/mongodb.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/redis.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/rethinkdb.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/sqlalchemy.cpython-38.pyc,,
|
||||
apscheduler/jobstores/__pycache__/zookeeper.cpython-38.pyc,,
|
||||
apscheduler/jobstores/base.py,sha256=DXzSW9XscueHZHMvy1qFiG-vYqUl_MMv0n0uBSZWXGo,4523
|
||||
apscheduler/jobstores/memory.py,sha256=ZxWiKsqfsCHFvac-6X9BztuhnuSxlOYi1dhT6g-pjQo,3655
|
||||
apscheduler/jobstores/mongodb.py,sha256=JI6t3PanXsxHjj6fzxMdzcZBy5ytV84ZPU_WWB5zEA4,5335
|
||||
apscheduler/jobstores/redis.py,sha256=kjQDIzPXz-Yq976U9HK3aMkcCI_QRLKgTADQWKewtik,5483
|
||||
apscheduler/jobstores/rethinkdb.py,sha256=k1rSLYJqejuhQxJY3pXwHAQYcpZ1QFJsoQ8n0oEu5MM,5863
|
||||
apscheduler/jobstores/sqlalchemy.py,sha256=alfkAEIzwSJKbYYXGc4G8DTeBsLdGhtac8ebjYvoVT0,6134
|
||||
apscheduler/jobstores/zookeeper.py,sha256=avGLXaJGjHD0F7uG6rLJ2gg_TXNqXDEM4PqOu56f-Xg,6363
|
||||
apscheduler/schedulers/__init__.py,sha256=jM63xA_K7GSToBenhsz-SCcqfhk1pdEVb6ajwoO5Kqg,406
|
||||
apscheduler/schedulers/__pycache__/__init__.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/asyncio.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/background.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/base.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/blocking.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/gevent.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/qt.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/tornado.cpython-38.pyc,,
|
||||
apscheduler/schedulers/__pycache__/twisted.cpython-38.pyc,,
|
||||
apscheduler/schedulers/asyncio.py,sha256=BuSE8re61ytQtUNRw197iJdhOepaIexr3-WYEDAjhR0,2230
|
||||
apscheduler/schedulers/background.py,sha256=751p-f5Di6pY4x6UXlZggpxQ5k2ObJ_Q5wSeWmKHS8o,1566
|
||||
apscheduler/schedulers/base.py,sha256=gvC0rjzSljDPxn0iGu-DyCy-9Fh48NJoY4-VeoZzDZo,43237
|
||||
apscheduler/schedulers/blocking.py,sha256=8nubfJ4PoUnAkEY6WRQG4COzG4SxGyW9PjuVPhDAbsk,985
|
||||
apscheduler/schedulers/gevent.py,sha256=csPBvV75FGcboXXsdex6fCD7J54QgBddYNdWj62ZO9g,1031
|
||||
apscheduler/schedulers/qt.py,sha256=vH2ZHL0PkFTcnHfnsU_tnI3u7bVQ81yy2v_is-575jQ,1463
|
||||
apscheduler/schedulers/tornado.py,sha256=D9Vaq3Ee9EFiXa1jDy9tedI048gR_YT_LAFUWqO_uEw,1926
|
||||
apscheduler/schedulers/twisted.py,sha256=D5EBjjMRtMBxy0_aAURcULAI8Ky2IvCTr9tK9sO1rYk,1844
|
||||
apscheduler/triggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
apscheduler/triggers/__pycache__/__init__.cpython-38.pyc,,
|
||||
apscheduler/triggers/__pycache__/base.cpython-38.pyc,,
|
||||
apscheduler/triggers/__pycache__/combining.cpython-38.pyc,,
|
||||
apscheduler/triggers/__pycache__/date.cpython-38.pyc,,
|
||||
apscheduler/triggers/__pycache__/interval.cpython-38.pyc,,
|
||||
apscheduler/triggers/base.py,sha256=BvBJdOnIeVClXPXeInzYK25cN64jAc4a9IiEQucSiVk,1355
|
||||
apscheduler/triggers/combining.py,sha256=klaSoBp1kyrPX5D3gBpNTlsGKjks5QeKPW5JN_MVs30,3449
|
||||
apscheduler/triggers/cron/__init__.py,sha256=XVdyymFsnXQMw57gpU1M0vmJo5oGdQ_t8BAkhEFNMFA,9236
|
||||
apscheduler/triggers/cron/__pycache__/__init__.cpython-38.pyc,,
|
||||
apscheduler/triggers/cron/__pycache__/expressions.cpython-38.pyc,,
|
||||
apscheduler/triggers/cron/__pycache__/fields.cpython-38.pyc,,
|
||||
apscheduler/triggers/cron/expressions.py,sha256=hu1kq0mKvivIw7U0D0Nnrbuk3q01dCuhZ7SHRPw6qhI,9184
|
||||
apscheduler/triggers/cron/fields.py,sha256=NWPClh1NgSOpTlJ3sm1TXM_ViC2qJGKWkd_vg0xsw7o,3510
|
||||
apscheduler/triggers/date.py,sha256=RrfB1PNO9G9e91p1BOf-y_TseVHQQR-KJPhNdPpAHcU,1705
|
||||
apscheduler/triggers/interval.py,sha256=M4y6APgeP9DEh_XKHbFcaUKFk7wAb0-XoSO50bR4qXc,4369
|
||||
apscheduler/util.py,sha256=3gKKUbW2fyEa5LkYCGHnaWSk2jqj_HreQbE4SrJiDxc,14087
|
@ -1,6 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.36.2)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py2-none-any
|
||||
Tag: py3-none-any
|
||||
|
@ -1,24 +0,0 @@
|
||||
[apscheduler.executors]
|
||||
asyncio = apscheduler.executors.asyncio:AsyncIOExecutor [asyncio]
|
||||
debug = apscheduler.executors.debug:DebugExecutor
|
||||
gevent = apscheduler.executors.gevent:GeventExecutor [gevent]
|
||||
processpool = apscheduler.executors.pool:ProcessPoolExecutor
|
||||
threadpool = apscheduler.executors.pool:ThreadPoolExecutor
|
||||
tornado = apscheduler.executors.tornado:TornadoExecutor [tornado]
|
||||
twisted = apscheduler.executors.twisted:TwistedExecutor [twisted]
|
||||
|
||||
[apscheduler.jobstores]
|
||||
memory = apscheduler.jobstores.memory:MemoryJobStore
|
||||
mongodb = apscheduler.jobstores.mongodb:MongoDBJobStore [mongodb]
|
||||
redis = apscheduler.jobstores.redis:RedisJobStore [redis]
|
||||
rethinkdb = apscheduler.jobstores.rethinkdb:RethinkDBJobStore [rethinkdb]
|
||||
sqlalchemy = apscheduler.jobstores.sqlalchemy:SQLAlchemyJobStore [sqlalchemy]
|
||||
zookeeper = apscheduler.jobstores.zookeeper:ZooKeeperJobStore [zookeeper]
|
||||
|
||||
[apscheduler.triggers]
|
||||
and = apscheduler.triggers.combining:AndTrigger
|
||||
cron = apscheduler.triggers.cron:CronTrigger
|
||||
date = apscheduler.triggers.date:DateTrigger
|
||||
interval = apscheduler.triggers.interval:IntervalTrigger
|
||||
or = apscheduler.triggers.combining:OrTrigger
|
||||
|
@ -1 +0,0 @@
|
||||
apscheduler
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,19 +0,0 @@
|
||||
Copyright (c) 2010, 2013 PyMySQL contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
@ -1,180 +0,0 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: PyMySQL
|
||||
Version: 1.0.2
|
||||
Summary: Pure Python MySQL Driver
|
||||
Home-page: https://github.com/PyMySQL/PyMySQL/
|
||||
Author: yutaka.matsubara
|
||||
Author-email: yutaka.matsubara@gmail.com
|
||||
Maintainer: Inada Naoki
|
||||
Maintainer-email: songofacandy@gmail.com
|
||||
License: "MIT"
|
||||
Project-URL: Documentation, https://pymysql.readthedocs.io/
|
||||
Keywords: MySQL
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
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: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Topic :: Database
|
||||
Requires-Python: >=3.6
|
||||
Provides-Extra: ed25519
|
||||
Requires-Dist: PyNaCl (>=1.4.0) ; extra == 'ed25519'
|
||||
Provides-Extra: rsa
|
||||
Requires-Dist: cryptography ; extra == 'rsa'
|
||||
|
||||
.. image:: https://readthedocs.org/projects/pymysql/badge/?version=latest
|
||||
:target: https://pymysql.readthedocs.io/
|
||||
:alt: Documentation Status
|
||||
|
||||
.. image:: https://coveralls.io/repos/PyMySQL/PyMySQL/badge.svg?branch=master&service=github
|
||||
:target: https://coveralls.io/github/PyMySQL/PyMySQL?branch=master
|
||||
|
||||
.. image:: https://img.shields.io/lgtm/grade/python/g/PyMySQL/PyMySQL.svg?logo=lgtm&logoWidth=18
|
||||
:target: https://lgtm.com/projects/g/PyMySQL/PyMySQL/context:python
|
||||
|
||||
|
||||
PyMySQL
|
||||
=======
|
||||
|
||||
.. contents:: Table of Contents
|
||||
:local:
|
||||
|
||||
This package contains a pure-Python MySQL client library, based on `PEP 249`_.
|
||||
|
||||
Most public APIs are compatible with mysqlclient and MySQLdb.
|
||||
|
||||
NOTE: PyMySQL doesn't support low level APIs `_mysql` provides like `data_seek`,
|
||||
`store_result`, and `use_result`. You should use high level APIs defined in `PEP 249`_.
|
||||
But some APIs like `autocommit` and `ping` are supported because `PEP 249`_ doesn't cover
|
||||
their usecase.
|
||||
|
||||
.. _`PEP 249`: https://www.python.org/dev/peps/pep-0249/
|
||||
|
||||
|
||||
Requirements
|
||||
-------------
|
||||
|
||||
* Python -- one of the following:
|
||||
|
||||
- CPython_ : 3.6 and newer
|
||||
- PyPy_ : Latest 3.x version
|
||||
|
||||
* MySQL Server -- one of the following:
|
||||
|
||||
- MySQL_ >= 5.6
|
||||
- MariaDB_ >= 10.0
|
||||
|
||||
.. _CPython: https://www.python.org/
|
||||
.. _PyPy: https://pypy.org/
|
||||
.. _MySQL: https://www.mysql.com/
|
||||
.. _MariaDB: https://mariadb.org/
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Package is uploaded on `PyPI <https://pypi.org/project/PyMySQL>`_.
|
||||
|
||||
You can install it with pip::
|
||||
|
||||
$ python3 -m pip install PyMySQL
|
||||
|
||||
To use "sha256_password" or "caching_sha2_password" for authenticate,
|
||||
you need to install additional dependency::
|
||||
|
||||
$ python3 -m pip install PyMySQL[rsa]
|
||||
|
||||
To use MariaDB's "ed25519" authentication method, you need to install
|
||||
additional dependency::
|
||||
|
||||
$ python3 -m pip install PyMySQL[ed25519]
|
||||
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
Documentation is available online: https://pymysql.readthedocs.io/
|
||||
|
||||
For support, please refer to the `StackOverflow
|
||||
<https://stackoverflow.com/questions/tagged/pymysql>`_.
|
||||
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
The following examples make use of a simple table
|
||||
|
||||
.. code:: sql
|
||||
|
||||
CREATE TABLE `users` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`email` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||
`password` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
|
||||
AUTO_INCREMENT=1 ;
|
||||
|
||||
|
||||
.. code:: python
|
||||
|
||||
import pymysql.cursors
|
||||
|
||||
# Connect to the database
|
||||
connection = pymysql.connect(host='localhost',
|
||||
user='user',
|
||||
password='passwd',
|
||||
database='db',
|
||||
cursorclass=pymysql.cursors.DictCursor)
|
||||
|
||||
with connection:
|
||||
with connection.cursor() as cursor:
|
||||
# Create a new record
|
||||
sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
|
||||
cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
|
||||
|
||||
# connection is not autocommit by default. So you must commit to save
|
||||
# your changes.
|
||||
connection.commit()
|
||||
|
||||
with connection.cursor() as cursor:
|
||||
# Read a single record
|
||||
sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
|
||||
cursor.execute(sql, ('webmaster@python.org',))
|
||||
result = cursor.fetchone()
|
||||
print(result)
|
||||
|
||||
|
||||
This example will print:
|
||||
|
||||
.. code:: python
|
||||
|
||||
{'password': 'very-secret', 'id': 1}
|
||||
|
||||
|
||||
Resources
|
||||
---------
|
||||
|
||||
* DB-API 2.0: https://www.python.org/dev/peps/pep-0249/
|
||||
|
||||
* MySQL Reference Manuals: https://dev.mysql.com/doc/
|
||||
|
||||
* MySQL client/server protocol:
|
||||
https://dev.mysql.com/doc/internals/en/client-server-protocol.html
|
||||
|
||||
* "Connector" channel in MySQL Community Slack:
|
||||
https://lefred.be/mysql-community-on-slack/
|
||||
|
||||
* PyMySQL mailing list: https://groups.google.com/forum/#!forum/pymysql-users
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
PyMySQL is released under the MIT License. See LICENSE for more information.
|
||||
|
||||
|
@ -1,43 +0,0 @@
|
||||
PyMySQL-1.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
PyMySQL-1.0.2.dist-info/LICENSE,sha256=MUEg3GXwgA9ziksxQAx27hTezR--d86cNUCkIbhup7Y,1070
|
||||
PyMySQL-1.0.2.dist-info/METADATA,sha256=hz4Fdo8sOFKcNqZ8wp4Bp-txNCOBCnw9-leYR7QBZ5I,5119
|
||||
PyMySQL-1.0.2.dist-info/RECORD,,
|
||||
PyMySQL-1.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
PyMySQL-1.0.2.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
|
||||
PyMySQL-1.0.2.dist-info/top_level.txt,sha256=IKlV-f4o90sOdnMd6HBvo0l2nqfJOGUzkwZeaEEGuRg,8
|
||||
pymysql/__init__.py,sha256=XL7skPUK4cbKiek68T0vMob-L4YkIRLb2KX4hdMZVvM,4391
|
||||
pymysql/__pycache__/__init__.cpython-38.pyc,,
|
||||
pymysql/__pycache__/_auth.cpython-38.pyc,,
|
||||
pymysql/__pycache__/charset.cpython-38.pyc,,
|
||||
pymysql/__pycache__/connections.cpython-38.pyc,,
|
||||
pymysql/__pycache__/converters.cpython-38.pyc,,
|
||||
pymysql/__pycache__/cursors.cpython-38.pyc,,
|
||||
pymysql/__pycache__/err.cpython-38.pyc,,
|
||||
pymysql/__pycache__/optionfile.cpython-38.pyc,,
|
||||
pymysql/__pycache__/protocol.cpython-38.pyc,,
|
||||
pymysql/__pycache__/times.cpython-38.pyc,,
|
||||
pymysql/_auth.py,sha256=l1VtBwDpCtTkalgYQFASO-rj-vEd3DGYR8g-eQjNF1U,7399
|
||||
pymysql/charset.py,sha256=JCvshFnNf4vzkpXc6uPCyg07qGNfZaVZoxrFqzVlKFs,10293
|
||||
pymysql/connections.py,sha256=EwKWqFIWlx6kbOeDFIhMFpjJ9-pyF140E5ouKgrrYfY,51251
|
||||
pymysql/constants/CLIENT.py,sha256=SSvMFPZCTVMU1UWa4zOrfhYMDdR2wG2mS0E5GzJhDsg,878
|
||||
pymysql/constants/COMMAND.py,sha256=TGITAUcNWlq2Gwg2wv5UK2ykdTd4LYTk_EcJJOCpGIc,679
|
||||
pymysql/constants/CR.py,sha256=oHyD9dnR1DUX7hd42rcamMnFrWhjUZz7E4S6qQWSQb4,1927
|
||||
pymysql/constants/ER.py,sha256=cH5wgU-e70wd0uSygNR5IFCnnXcrR9WLwJPMH22bhUw,12296
|
||||
pymysql/constants/FIELD_TYPE.py,sha256=ytFzgAnGmb9hvdsBlnK68qdZv_a6jYFIXT6VSAb60z8,370
|
||||
pymysql/constants/FLAG.py,sha256=Fy-PrCLnUI7fx_o5WypYnUAzWAM0E9d5yL8fFRVKffY,214
|
||||
pymysql/constants/SERVER_STATUS.py,sha256=m28Iq5JGCFCWLhafE73-iOvw_9gDGqnytW3NkHpbugA,333
|
||||
pymysql/constants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
pymysql/constants/__pycache__/CLIENT.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/COMMAND.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/CR.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/ER.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/FIELD_TYPE.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/FLAG.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/SERVER_STATUS.cpython-38.pyc,,
|
||||
pymysql/constants/__pycache__/__init__.cpython-38.pyc,,
|
||||
pymysql/converters.py,sha256=MBXTOCXSyewMculaRliBEzPVkOKXLiRMqvIXih9Akrg,9430
|
||||
pymysql/cursors.py,sha256=1E79f3vysxygyfZMhvR6-yFDfysRn3Go8xZTywteh4o,15366
|
||||
pymysql/err.py,sha256=bpxayM4IUnFQAd8bUZ3PFsFomi9QSfBk-0TJXyKU2FI,3773
|
||||
pymysql/optionfile.py,sha256=ehPrZW4d7pcEvXGAEpsKgLdXpFnIQD93yF7T_jHjoRk,573
|
||||
pymysql/protocol.py,sha256=Ur8xXkVvyFc6m5CA34QrHBasADvS_NPFsWU-Q3flRYA,11859
|
||||
pymysql/times.py,sha256=_qXgDaYwsHntvpIKSKXp1rrYIgtq6Z9pLyLnO2XNoL0,360
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.36.2)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
@ -1 +0,0 @@
|
||||
pymysql
|
@ -1 +0,0 @@
|
||||
pip
|
@ -1,19 +0,0 @@
|
||||
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.
|
@ -1,211 +0,0 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: SQLAlchemy
|
||||
Version: 1.3.23
|
||||
Summary: Database Abstraction Library
|
||||
Home-page: http://www.sqlalchemy.org
|
||||
Author: Mike Bayer
|
||||
Author-email: mike_mp@zzzcomputing.com
|
||||
License: MIT
|
||||
Project-URL: Documentation, https://docs.sqlalchemy.org
|
||||
Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Database :: Front-Ends
|
||||
Classifier: Operating System :: OS Independent
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
|
||||
Provides-Extra: mssql
|
||||
Requires-Dist: pyodbc ; extra == 'mssql'
|
||||
Provides-Extra: mssql_pymssql
|
||||
Requires-Dist: pymssql ; extra == 'mssql_pymssql'
|
||||
Provides-Extra: mssql_pyodbc
|
||||
Requires-Dist: pyodbc ; extra == 'mssql_pyodbc'
|
||||
Provides-Extra: mysql
|
||||
Requires-Dist: mysqlclient ; extra == 'mysql'
|
||||
Provides-Extra: oracle
|
||||
Requires-Dist: cx-oracle ; extra == 'oracle'
|
||||
Provides-Extra: postgresql
|
||||
Requires-Dist: psycopg2 ; extra == 'postgresql'
|
||||
Provides-Extra: postgresql_pg8000
|
||||
Requires-Dist: pg8000 (<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'
|
||||
|
||||
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>`_.
|
||||
|
||||
|
||||
|
@ -1,408 +0,0 @@
|
||||
SQLAlchemy-1.3.23.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
SQLAlchemy-1.3.23.dist-info/LICENSE,sha256=_-DCK5JvsC0ovMsgocueJWTu1m_PSeTv7r8oHE-pf6c,1100
|
||||
SQLAlchemy-1.3.23.dist-info/METADATA,sha256=pB1rDXWUGBqIOHOjvcQChBh8gBRyk_zK9qnyB6a10us,7903
|
||||
SQLAlchemy-1.3.23.dist-info/RECORD,,
|
||||
SQLAlchemy-1.3.23.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
SQLAlchemy-1.3.23.dist-info/WHEEL,sha256=RIeRBYNNiNK3sXfnenIjXDrR2Tzyz05xCMpKF2hJ1iA,111
|
||||
SQLAlchemy-1.3.23.dist-info/top_level.txt,sha256=rp-ZgB7D8G11ivXON5VGPjupT1voYmWqkciDt5Uaw_Q,11
|
||||
sqlalchemy/__init__.py,sha256=2Ar5kF-XtPUz2GGE9mvFg3J_B1GuvgiIE4SfRdxMRcY,4789
|
||||
sqlalchemy/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/events.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/exc.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/inspection.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/log.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/processors.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/schema.cpython-38.pyc,,
|
||||
sqlalchemy/__pycache__/types.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__init__.py,sha256=2ZX0t61fo77OLuGFpYxFo3LVPTQDKMRIF77YOhjPFQw,278
|
||||
sqlalchemy/connectors/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__pycache__/mxodbc.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/__pycache__/zxJDBC.cpython-38.pyc,,
|
||||
sqlalchemy/connectors/mxodbc.py,sha256=-1W0YZgXI4o1y0CjriCX9w007baz13TmTP7rdjO0mZ0,5350
|
||||
sqlalchemy/connectors/pyodbc.py,sha256=xeEuF8GUK8j7wijsnEyqU4YG1UCSM2nZHURFlOUGmmE,5995
|
||||
sqlalchemy/connectors/zxJDBC.py,sha256=5M6EatP2eiYrCeDUgZdpBcojZd0zlikTPJpbkirzrx8,1878
|
||||
sqlalchemy/cprocessors.cpython-38-x86_64-linux-gnu.so,sha256=vlfOa40nlyE_APsJ9wgV8ISgMxqD147-BApj4jU5aLo,64760
|
||||
sqlalchemy/cresultproxy.cpython-38-x86_64-linux-gnu.so,sha256=U5-j69w1eXot_Inck-R8MZk029DNhZjVOtukG-D3gQE,77600
|
||||
sqlalchemy/cutils.cpython-38-x86_64-linux-gnu.so,sha256=VZiCTQelvGp25k0Vno3SRIzcZ1VYtNMPDotiuVKt7ac,39864
|
||||
sqlalchemy/databases/__init__.py,sha256=gRoL6-LdtHu7sWIXmXla0M7pghKcE2hNlN6ifWHUdO0,819
|
||||
sqlalchemy/databases/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/__init__.py,sha256=vsfq3oDoCJLI6X35ZJSpqX2nUPbgM8u8ITOo2b5K0iI,1909
|
||||
sqlalchemy/dialects/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__init__.py,sha256=6M_TulUbTNL3JzHQHLGZDT1kP2ihNzwEZ_aPrGPCrXE,1152
|
||||
sqlalchemy/dialects/firebird/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__pycache__/fdb.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/__pycache__/kinterbasdb.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/firebird/base.py,sha256=gLKiJ2xAKraLohqErE8wZNwwU7DUZ-j45kS_rRQ8yH4,30316
|
||||
sqlalchemy/dialects/firebird/fdb.py,sha256=gYT3W60bcZpyZPDIAhzuNFE-TVbaarppYPEpd1oeOzk,4079
|
||||
sqlalchemy/dialects/firebird/kinterbasdb.py,sha256=qMlnnzYsIOHNfjgniR_tBCKgitz7YdjnSRFrpRETEGo,6437
|
||||
sqlalchemy/dialects/mssql/__init__.py,sha256=MlegTjxm6HyKJzBdArcCdDcrfD2gxgFihl2FbZI4RlU,1812
|
||||
sqlalchemy/dialects/mssql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/adodbapi.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/information_schema.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/mxodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/pymssql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mssql/adodbapi.py,sha256=d0s5geCj1gnPsw8OmOoLqodtOo5sNsrY8ogM6vt-gjY,2719
|
||||
sqlalchemy/dialects/mssql/base.py,sha256=O7SgxwNFBgyihARAXzsBidmw_iH49gzzlMdoOLNjMJQ,91331
|
||||
sqlalchemy/dialects/mssql/information_schema.py,sha256=FrOW0yDkxhhMKIQBu18p2fJK4XoQrzDyJ37qC5J1KlQ,5639
|
||||
sqlalchemy/dialects/mssql/mxodbc.py,sha256=i0usyju5kmj9KpJIwwE0XftDddPXM-4vm5eNCWr9hWQ,4611
|
||||
sqlalchemy/dialects/mssql/provision.py,sha256=j7eVrBHR1NjPvT_DmtPcNnAadZiHG1x65AyxYnZJ7d0,2785
|
||||
sqlalchemy/dialects/mssql/pymssql.py,sha256=_IqSxuRI0qpTQWdT56Hltcyhsh7QJ7fdxdFYWCYPA_Y,4784
|
||||
sqlalchemy/dialects/mssql/pyodbc.py,sha256=MzlNGZoc_NkiIx3qowoD2o8XGhFAA9OOdonmvGh-yw8,16310
|
||||
sqlalchemy/dialects/mssql/zxjdbc.py,sha256=o752DAx3F1FQA8-tmymP_V_GBxcTxLjmFGN0fJ7ajAs,2311
|
||||
sqlalchemy/dialects/mysql/__init__.py,sha256=-VDiSVlVCUr8JSds25zKeFNYd_wvIyJgW01PTp7o6I0,2056
|
||||
sqlalchemy/dialects/mysql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/dml.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/gaerdbms.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/json.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/oursql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/types.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/mysql/base.py,sha256=_KNksGABODI8rMh-l3igyQMfW0oh8rzAyy3ol_C2_-8,107173
|
||||
sqlalchemy/dialects/mysql/cymysql.py,sha256=dXNtv5TwMN5oT3BHczpkPFlrFxmFw9ckZy_fxTOr2_s,2244
|
||||
sqlalchemy/dialects/mysql/dml.py,sha256=yq9Kgm2IvLkt0_Uw1RGsuyjNQVgpWIWMFd2Ntm_R65Y,4764
|
||||
sqlalchemy/dialects/mysql/enumerated.py,sha256=pEeEuapS_bbaTCU6Iv-LwRkZ6i5K2zk5VciC2yW-Uwk,11307
|
||||
sqlalchemy/dialects/mysql/gaerdbms.py,sha256=E7sGM9Md2smw5cpJhTtpjcz1YSfw-i4gihXocULGtgg,3375
|
||||
sqlalchemy/dialects/mysql/json.py,sha256=B2OYzgnBF7ex23SQeWO0UtiDuPV2Yt4iWtOov-mFAAg,2045
|
||||
sqlalchemy/dialects/mysql/mysqlconnector.py,sha256=CR3vDeERyT2pXJRs_wSuqltyGFTSMM2dtnsrO9e5BDk,7889
|
||||
sqlalchemy/dialects/mysql/mysqldb.py,sha256=Kp95xmh3HIhAyKiBg0DwM6oZ9p8Mag0pVTe20AGlBxY,8504
|
||||
sqlalchemy/dialects/mysql/oursql.py,sha256=y4Y_QOEhXtcZSGJuDUlg-M5M2dxyLW0LT2DIv2FlNn4,8086
|
||||
sqlalchemy/dialects/mysql/provision.py,sha256=sJ7IpiIB1Eb9AdRK3loRlsCHKzzsFGJzMgICyRrkFpY,1269
|
||||
sqlalchemy/dialects/mysql/pymysql.py,sha256=kJJymEX_Xd3s1UJU1WcoZi9zBlFB9yxEDy1mWstZ51k,2720
|
||||
sqlalchemy/dialects/mysql/pyodbc.py,sha256=GqZTTkBkGnGWqtk0xuNeCeYchwFeWKyXdW5zzR4JQcg,3470
|
||||
sqlalchemy/dialects/mysql/reflection.py,sha256=mlLi4rqRM9LBO8IkxhMHsOk23mNq5GcsIPnknnVx4JQ,18275
|
||||
sqlalchemy/dialects/mysql/types.py,sha256=JuynK1xxpffyKKc_gKe4n_HOKJcf5G4yxwVY2XQhVGA,24589
|
||||
sqlalchemy/dialects/mysql/zxjdbc.py,sha256=HzHSEcOmpUEYdP-4w6q8qork3bMNgvDVIICUK0ERubw,3970
|
||||
sqlalchemy/dialects/oracle/__init__.py,sha256=E5ZEABZzwheOKeeWmkqTfNgqNTvGPHs6PyRVYISU-A4,1257
|
||||
sqlalchemy/dialects/oracle/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/cx_oracle.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/oracle/base.py,sha256=Mt2ZYQRbXXxNPsIFEF3nsKXA6PvvPliYAwFFePgdozA,78266
|
||||
sqlalchemy/dialects/oracle/cx_oracle.py,sha256=v73Pbntu2tLjLcbshCRR9WYG7CaFYf_YvikyuYXKfHY,48882
|
||||
sqlalchemy/dialects/oracle/provision.py,sha256=AQwaR1DOcAP0Z8j8ek7StLg6rmEYLrUbaH9fpYyq9HQ,5001
|
||||
sqlalchemy/dialects/oracle/zxjdbc.py,sha256=M4zftIcMyr9y95rr8d6Nbqw9pyClddQ9S1mhuptL6N4,8207
|
||||
sqlalchemy/dialects/postgresql/__init__.py,sha256=KQV__iX-kTOGf28JO-cIM5VAs6ZEyRsj0EEf1d-nOAc,2461
|
||||
sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/array.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/json.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/pg8000.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/pygresql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/pypostgresql.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/__pycache__/zxjdbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/postgresql/array.py,sha256=9UUpyCx_7KDQDiCKqIn-reeVabJ29fJ0QKYDh0Zw5D4,12043
|
||||
sqlalchemy/dialects/postgresql/base.py,sha256=VNbgxE7VvxoTN4k5b40V3hKDalFRdPt5gh4B47uoWdQ,128016
|
||||
sqlalchemy/dialects/postgresql/dml.py,sha256=JYliPOVnKoj8uo7X8qTTPtnm0bQNeBghZyymcMJk3-Y,7790
|
||||
sqlalchemy/dialects/postgresql/ext.py,sha256=uxuPOQp_hRDguODT5PEWs9iiLH27bCpGsx7twfvK9eM,7702
|
||||
sqlalchemy/dialects/postgresql/hstore.py,sha256=EUKmtCaONXFzaSfiejAlG5ZKxM5tHTYWNPa7GbSTwpk,12417
|
||||
sqlalchemy/dialects/postgresql/json.py,sha256=qgFvEcH12HSoMiWG0jw6ysBZmfkyBzw0vuJbjpgS7t4,10103
|
||||
sqlalchemy/dialects/postgresql/pg8000.py,sha256=aIa8KkZHHtfwEbKgDnewWgbvBHtw7kQUMg8B6O44Uq4,9722
|
||||
sqlalchemy/dialects/postgresql/provision.py,sha256=E8LOoSNSWUlx77ihNLQfW9csAxsmL-qleiLPbVlSlVw,2008
|
||||
sqlalchemy/dialects/postgresql/psycopg2.py,sha256=WRHgU0cAtwloz1fOPnFJO5WMpzSssl9afT9gMrNMrdA,37129
|
||||
sqlalchemy/dialects/postgresql/psycopg2cffi.py,sha256=wEY6Y__dRQ9nTYD9QT8wMqyWq72mWcFvu-aH8_Z0abw,1657
|
||||
sqlalchemy/dialects/postgresql/pygresql.py,sha256=k-98-shPJhe9Fdrry5WTm4md4BnWZVBJHWoGkVuq64U,8129
|
||||
sqlalchemy/dialects/postgresql/pypostgresql.py,sha256=XHqAmXAGD4RgBEMxJDtcfSgcZvbdH5xwkNslxuMyKU4,2915
|
||||
sqlalchemy/dialects/postgresql/ranges.py,sha256=g0kDAzz4ZpyRmxEBxD2A3oZGVoz7G4tR-dptArrDzFk,4622
|
||||
sqlalchemy/dialects/postgresql/zxjdbc.py,sha256=tTs7npUPBsirH5eJN8ug57ptm7NHpC64CRxW82xU-dM,1415
|
||||
sqlalchemy/dialects/sqlite/__init__.py,sha256=TuG5N7nTu2CYJFX62iZXBTyl4m-hpbmulRDvmLOncDM,1042
|
||||
sqlalchemy/dialects/sqlite/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/json.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/pysqlcipher.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/__pycache__/pysqlite.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sqlite/base.py,sha256=sohu343wSsOGQodxOmIGELStJyqniWeXxd_4Dvd-dNM,75220
|
||||
sqlalchemy/dialects/sqlite/json.py,sha256=IwhCnGL_BKtASpm0-OzeNByp3qtkcLZgAeBGY_EPUvM,2292
|
||||
sqlalchemy/dialects/sqlite/provision.py,sha256=PEmgxbdz67KsONOEhFVQFLX3s4BXWKLb2gvNgj0gn9M,2591
|
||||
sqlalchemy/dialects/sqlite/pysqlcipher.py,sha256=fYApVG70qWOzTbnNXOlVds_iFjjKKbN1CHUynGqZS6E,4692
|
||||
sqlalchemy/dialects/sqlite/pysqlite.py,sha256=cIq6mBIRqgZ9ICrZCD6AYqMUifuR0tgk3OZvQWzbSRA,20983
|
||||
sqlalchemy/dialects/sybase/__init__.py,sha256=SAXbbiAkTpa9uIO7ReFbRXzoETJPLyHgzyxVDfTf3kw,1363
|
||||
sqlalchemy/dialects/sybase/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/mxodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/pyodbc.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/__pycache__/pysybase.cpython-38.pyc,,
|
||||
sqlalchemy/dialects/sybase/base.py,sha256=abrB6wdPbwIEHgit5eoJuc7diD1qe3rGMb13trMKepQ,31789
|
||||
sqlalchemy/dialects/sybase/mxodbc.py,sha256=Ch21Wkqryfqcl5ilhvY2w1abU9xxUhMgsfhzeSKcJkE,902
|
||||
sqlalchemy/dialects/sybase/pyodbc.py,sha256=lszvO00cAbfzYRIkzMSMgpHhAO52U0IOqx_mafJ0E20,2120
|
||||
sqlalchemy/dialects/sybase/pysybase.py,sha256=X_LYYF0BiBqxIxkINnrkvwXO8dEEcT8uCLFxtXQBHkg,3313
|
||||
sqlalchemy/engine/__init__.py,sha256=lqwPyO4joLaFh7fH7HJVH3xZQuig4alN5lZqf1yPbJ0,25066
|
||||
sqlalchemy/engine/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/default.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/reflection.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/result.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/strategies.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/threadlocal.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/url.cpython-38.pyc,,
|
||||
sqlalchemy/engine/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/engine/base.py,sha256=8nG_zKOF6det1HQCJslUsg3mm3F1yeuMfiqlCoY0fKA,87152
|
||||
sqlalchemy/engine/default.py,sha256=C31_Zb3C7Ux6b7yic4LGRIfDUBH68g2A8wd1u4yKsFw,55723
|
||||
sqlalchemy/engine/interfaces.py,sha256=BaJBcKP-R1ZBv4q_XMhj6-G2DXQ6dz8ITweav_-z6Kk,48491
|
||||
sqlalchemy/engine/reflection.py,sha256=d6F8Zf64fsn1n-rafzN__j1vMvhMyGwse8t1APKgnbY,34712
|
||||
sqlalchemy/engine/result.py,sha256=yUxKClpINiDnbasn5ZgrNjSOxwMMovA83ZutALHno-0,54716
|
||||
sqlalchemy/engine/strategies.py,sha256=NykNfa1kpgd0oYMnTBg9iex3hWJmWKiT0l7M4Ng8WjM,9847
|
||||
sqlalchemy/engine/threadlocal.py,sha256=pq3Dda83-HCnzYM5Lduxvw4vyFLfbfDM69NfIoTEGaE,4764
|
||||
sqlalchemy/engine/url.py,sha256=FdGibIzQzMlx1gO1BejijBeSBbutR7lQ-M3UmBos-kE,9445
|
||||
sqlalchemy/engine/util.py,sha256=L-rKj_pXLbYPyZ35toBwLe3W0jtxBI4oWETau4aJ_1A,2421
|
||||
sqlalchemy/event/__init__.py,sha256=iaU3UOZRD9JzgDeVrDkU4cnRnqt-8G8p8fNs0bg84dQ,596
|
||||
sqlalchemy/event/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/api.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/attr.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/legacy.cpython-38.pyc,,
|
||||
sqlalchemy/event/__pycache__/registry.cpython-38.pyc,,
|
||||
sqlalchemy/event/api.py,sha256=51Oi42BEaAuGZ2piJ4PSqTHBAOuj0LezGGIEOsQ20AI,7083
|
||||
sqlalchemy/event/attr.py,sha256=RoFb0WRHeNTzU_6Es0DZv3cx7O9UUXbuYiYQS-R1ciQ,13849
|
||||
sqlalchemy/event/base.py,sha256=NF-G65o9iWzsMTH4QJLgn_AN2A3hGvWwGbEBiABAkS0,9748
|
||||
sqlalchemy/event/legacy.py,sha256=ZGn4YR3VKebg8DPvrfycnOckUkRAZN-EGc_74UrNDPg,5904
|
||||
sqlalchemy/event/registry.py,sha256=BQQzvrJPSG3HrlJfkTwJ4q_zMI6hBa7XixatzTp9G9c,8229
|
||||
sqlalchemy/events.py,sha256=my0slrUpnlzWTXEPaFjWKAK0U5ghlIwA9T9ta6MZyG8,53461
|
||||
sqlalchemy/exc.py,sha256=1nr2fMRIN3UFxlQAtP8DIM2EBUzZpBfyfUMTVSJDsvM,17879
|
||||
sqlalchemy/ext/__init__.py,sha256=qTDr6zFJdTSYPnYTjWfyyNM3N8AjBJwguF5F9vW3kK8,322
|
||||
sqlalchemy/ext/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/associationproxy.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/automap.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/baked.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/compiler.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/horizontal_shard.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/hybrid.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/indexable.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/instrumentation.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/mutable.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/orderinglist.cpython-38.pyc,,
|
||||
sqlalchemy/ext/__pycache__/serializer.cpython-38.pyc,,
|
||||
sqlalchemy/ext/associationproxy.py,sha256=iAD8qOQu8ErsbPUrGlCOkbzhddrRtg-U-368tzSfH6A,49985
|
||||
sqlalchemy/ext/automap.py,sha256=jEk3gULu4aWN3cnX9JCJlwiI9LvbxZV_yCi-6KxBSoA,42157
|
||||
sqlalchemy/ext/baked.py,sha256=woeB5ZY8g0YGZIHjn2QR-tOTycVmfxJ9rSueNDDbIes,21980
|
||||
sqlalchemy/ext/compiler.py,sha256=vTjdPj6Ivaz__Fq_Bze3qejHE_257gmMMj2C8xXHeJc,17357
|
||||
sqlalchemy/ext/declarative/__init__.py,sha256=CGsFgqic6gVqOi5-EkOCLGfFkUJGYdmrfvv5v1zpskI,902
|
||||
sqlalchemy/ext/declarative/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/__pycache__/api.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/__pycache__/clsregistry.cpython-38.pyc,,
|
||||
sqlalchemy/ext/declarative/api.py,sha256=DR2IqrsU0S8gmbtykhfPfBO081EPzgiz1DByKTkkgmg,28728
|
||||
sqlalchemy/ext/declarative/base.py,sha256=TKin_32YOj9twFzXZArX_rxiStNt39HXlKxyV2WOt2A,32093
|
||||
sqlalchemy/ext/declarative/clsregistry.py,sha256=yXVmcpVUVQYqxKmrK6gBcoUdQX_eyGhU7rwgWz0UGVw,12561
|
||||
sqlalchemy/ext/horizontal_shard.py,sha256=upsiKPAFIX1GpEjhvgs3uk3gpL5wk8yerd4AkaXvDz0,9139
|
||||
sqlalchemy/ext/hybrid.py,sha256=eglFZDgpn28Ik7kQ9c9wKstdsYuTrGrpfM4kJjDEYas,40399
|
||||
sqlalchemy/ext/indexable.py,sha256=YELHG5NDsb_U5WqmzMByiPFjyam_sqYol_c9KEHggxE,11254
|
||||
sqlalchemy/ext/instrumentation.py,sha256=FfL8M6OAJYxvKZNgS1O638pkPDWsiRXE34IL5ZJebUE,14371
|
||||
sqlalchemy/ext/mutable.py,sha256=lSgZOKa0uYZfveQQzySvFEFo_TutmK42SXlQuOPd4OQ,31820
|
||||
sqlalchemy/ext/orderinglist.py,sha256=FDxCKsCosB2azFYdcEnIYslAnVMhAsJlbozzuUHfuf0,13899
|
||||
sqlalchemy/ext/serializer.py,sha256=hLVvWbGpnJSi0XnadvzxQjWIttLyVBYxo7GNFoZMR78,5784
|
||||
sqlalchemy/inspection.py,sha256=P__ODm4vVnPbmg06OjL8BcCkg8RHNhdhKTheysN_fM8,3030
|
||||
sqlalchemy/interfaces.py,sha256=RloFpj6mUrLdQ3Niu7wMAgySM4p3da6T2yq9sV7lBs8,12740
|
||||
sqlalchemy/log.py,sha256=s79j1qy8XtNw9GajMKA4I5Xy35mQHVjzQ5jMPP9mMK4,6705
|
||||
sqlalchemy/orm/__init__.py,sha256=JCzIb6kwgkg_6mGuwnhj6206BOU4hkYG8zcAlWKSMuY,9938
|
||||
sqlalchemy/orm/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/attributes.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/collections.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/dependency.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/deprecated_interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/descriptor_props.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/dynamic.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/evaluator.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/events.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/exc.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/identity.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/instrumentation.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/interfaces.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/loading.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/mapper.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/path_registry.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/persistence.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/properties.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/query.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/relationships.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/scoping.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/session.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/state.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/strategies.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/strategy_options.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/sync.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/unitofwork.cpython-38.pyc,,
|
||||
sqlalchemy/orm/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/orm/attributes.py,sha256=ahJBcxLpnM5s1bqLnaGrAfs0Spc4cY9-flHc3CUHHQk,68083
|
||||
sqlalchemy/orm/base.py,sha256=vbsZ5c_LRPQkwS22p6-NGvtSIKw64LOz_zwfflF6pl8,15304
|
||||
sqlalchemy/orm/collections.py,sha256=xJj-NrKWzsPW5u7vErY-Iq394RAG3rTLiyFP3-PUYZc,52864
|
||||
sqlalchemy/orm/dependency.py,sha256=_9PByDItrMhM6i_gYlyVaEZ0mxIxPBTtee7hWnP5HRs,46556
|
||||
sqlalchemy/orm/deprecated_interfaces.py,sha256=7SXbqGG2JdboPJagiyFCvf5XjY8ZWzrBx4JYaYvY4Lo,20759
|
||||
sqlalchemy/orm/descriptor_props.py,sha256=Dk4Qn1yqUMmZEET9GppWSVmHIB4CRrjcRctnWOHpiY8,28373
|
||||
sqlalchemy/orm/dynamic.py,sha256=5TxYM9YBTnepjdWpGJmuOS9mJXMOCHGWQfCn4MFl3_o,14667
|
||||
sqlalchemy/orm/evaluator.py,sha256=L6YFApadrh4YSqjg4h7x6nSzAnYg4Znw1BTZj19tFw8,5441
|
||||
sqlalchemy/orm/events.py,sha256=vqfSjgvYrFX2n93t8jDJnhEpPuSvx1xmX3Nwxe--eOM,104638
|
||||
sqlalchemy/orm/exc.py,sha256=3TRLpgBqLGbs5tAmuDLXIKCP9miXqwWTswesLfHVDoQ,6616
|
||||
sqlalchemy/orm/identity.py,sha256=EtxAr9Xdqi-HDRKubM8WgKwV8MfopjGmrD6_PHZwLsI,10436
|
||||
sqlalchemy/orm/instrumentation.py,sha256=VZcwUhDYTSVEE-ghA1lddfg63wB1RKl0Y_S6FOoEuwk,18603
|
||||
sqlalchemy/orm/interfaces.py,sha256=wkyxGnrwjWmRB-V2YU6_N8bS5oJNJfGKpjA6XNtfERk,25851
|
||||
sqlalchemy/orm/loading.py,sha256=4tc3FogDFeu3w9AZ9kN_inlob4E_jc8R8Ychccyi5MQ,33839
|
||||
sqlalchemy/orm/mapper.py,sha256=N9fUoXRzyef4QmiDyzCx6XpWIqCKL1P8drmEldYoo7A,130942
|
||||
sqlalchemy/orm/path_registry.py,sha256=KWOoz1ehAs5gNLAHYJ-Q63ygIf4BBVLUyRmlkImDV9E,13764
|
||||
sqlalchemy/orm/persistence.py,sha256=6aTVTZ7XX-JqAhTX-YfcanrwZq58gIMnjFMo4JtU7ag,66035
|
||||
sqlalchemy/orm/properties.py,sha256=MAcp9PiA46pm47vf9bQA6IUVeoWFzaUnoii2XBXnGBc,12695
|
||||
sqlalchemy/orm/query.py,sha256=7hdesIIVlKrjY7vbur0puDVVkZIGNZ6fE6n5LBmRkmY,181457
|
||||
sqlalchemy/orm/relationships.py,sha256=7v8AjdTht_K_ieq57Lb1BBBQgUl3Rzd9CQgvXczYyQ0,138036
|
||||
sqlalchemy/orm/scoping.py,sha256=3Y83kBN7ZlTJ33h84W0yMTeXY4xC1WZH9e8klJ89sO8,6414
|
||||
sqlalchemy/orm/session.py,sha256=dfxPuikvPB1mF33KZ8ue-GXVDvStuP2LPFouiAtifQc,131771
|
||||
sqlalchemy/orm/state.py,sha256=8O06vy90cN7O-FW93DZ1aWKtxcEdGE4ET0kCfpdY814,30811
|
||||
sqlalchemy/orm/strategies.py,sha256=-V_9_FPbPR0AOqyF7AKDlFakOUDx6TlZxw-Bv80-ubA,87320
|
||||
sqlalchemy/orm/strategy_options.py,sha256=2awP_rijlFTpkTdxtOxmX_mACKgu691drwXU40BbQSI,57823
|
||||
sqlalchemy/orm/sync.py,sha256=4YOWE_Mcc9LvfHjFNpJsvS7hgJx6qrT2kXAtm8CB1sg,5823
|
||||
sqlalchemy/orm/unitofwork.py,sha256=Wn7CUBlJmRlnaHuM5dqHfhMJPc0iL3dW-8sBoox8DD8,24743
|
||||
sqlalchemy/orm/util.py,sha256=Tf7dPkuN3GXW_zbrRQuGMr91yGmX_fWscEbnBNYu98k,45446
|
||||
sqlalchemy/pool/__init__.py,sha256=tfTxHi0MH3JqYjze_JgTCzUvr9cjbmkc8WIVMmt5zdM,1483
|
||||
sqlalchemy/pool/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/pool/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/pool/__pycache__/dbapi_proxy.cpython-38.pyc,,
|
||||
sqlalchemy/pool/__pycache__/impl.cpython-38.pyc,,
|
||||
sqlalchemy/pool/base.py,sha256=l_LEQn-j81fMWKahPjgBGB_C4y-q7f3mPpa-GcGwOVQ,36523
|
||||
sqlalchemy/pool/dbapi_proxy.py,sha256=NKjSNzUEkc3H0KXyPvrYWZoxIDb2dm3ehcSqe7rzDGE,4320
|
||||
sqlalchemy/pool/impl.py,sha256=wcIS8k7wAg-lg6xmsT03MqZcw9EnheU4OFvVE6Pb95M,14958
|
||||
sqlalchemy/processors.py,sha256=VcPrLgLq1SxIuoFNC4RY5g0gSc2g71k2G06nq1XchRo,5744
|
||||
sqlalchemy/schema.py,sha256=jLYR7GdxP4SguXIxhAX8_1KTrtSYvtbm1SfTJ4emA_s,2466
|
||||
sqlalchemy/sql/__init__.py,sha256=Ml5KSEtBkCaJfZOiglqVFXoqNHLzjPo5OyjU55OvobA,3789
|
||||
sqlalchemy/sql/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/annotation.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/base.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/compiler.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/crud.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/ddl.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/default_comparator.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/dml.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/elements.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/expression.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/functions.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/naming.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/operators.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/schema.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/selectable.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/sqltypes.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/type_api.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/sql/__pycache__/visitors.cpython-38.pyc,,
|
||||
sqlalchemy/sql/annotation.py,sha256=VgvxZCXy6OEr23OQp4_isOMyk5KSweE4-mPIfkelDZM,6725
|
||||
sqlalchemy/sql/base.py,sha256=xP5syBfSh8OpNtHt_vVkYtglodIrTeRPiq2HDMnYAg4,21715
|
||||
sqlalchemy/sql/compiler.py,sha256=SvCfnnTXnAlUq9jygUxWNAl0f1wcYpjND2vNaJjguZU,128543
|
||||
sqlalchemy/sql/crud.py,sha256=8fFRPK-Bnr3rKifHngn7k1hVEGiGsvMKUxaOe2g7xIY,25889
|
||||
sqlalchemy/sql/ddl.py,sha256=xI-hDJP_7BcQGJsAGJiCzkIlCTpQ0T6hN1MOidbX3yc,41440
|
||||
sqlalchemy/sql/default_comparator.py,sha256=X-CAfBG7tb4XTeZK9Bu_kVAki-yxe-27BXLweu3h2dw,12234
|
||||
sqlalchemy/sql/dml.py,sha256=yXSELQt9PxXa3oQx4MlrCmMUxgSOCqp9A2PfzlJEkVQ,35672
|
||||
sqlalchemy/sql/elements.py,sha256=hkxhp5DBrzEulku2SCoCcDCCPnOanAW1BSHG6MmcEtc,161275
|
||||
sqlalchemy/sql/expression.py,sha256=8J7WLYExiOOzfV-pzWaVHiws_3NcEKWRw0mPGo543DQ,9209
|
||||
sqlalchemy/sql/functions.py,sha256=nJRqdL4e_Wo-FePk14xoYbBAImnv77zlh6GlH6Me1s0,35835
|
||||
sqlalchemy/sql/naming.py,sha256=swda027eaqs8dv6PI-JjJWsVcoM1_loYqV9JvGv64_E,5889
|
||||
sqlalchemy/sql/operators.py,sha256=8lXjIRD4k28vJihwvGtYDkssnvh7Q9zSyjevDZLWWFA,42560
|
||||
sqlalchemy/sql/schema.py,sha256=9k7Bl4q0YSsazWOWXqgwmZ3Au0VydrRbhMCGxbOeWCU,181259
|
||||
sqlalchemy/sql/selectable.py,sha256=n1cwkDQgQc2EjVGJ3RJfzMqsLedls_GM1FZaRhWL4Yw,139439
|
||||
sqlalchemy/sql/sqltypes.py,sha256=EMJp3m3ZsfKYL5MJq_aBv3Q_bDct2STbRIDoJbLWXNo,101624
|
||||
sqlalchemy/sql/type_api.py,sha256=WdIDK9-hM6faavMMpCW9068RAfENioOE6vt7x9L2PFQ,52062
|
||||
sqlalchemy/sql/util.py,sha256=XqOe4NcUVtNmpaekLGZdXs0z6fDdek1MoYpIIYe4drE,30042
|
||||
sqlalchemy/sql/visitors.py,sha256=nb8IRycDVzsTlqCk-t7kmvTgxU9u6v2EX-1CMKQJa8Y,15940
|
||||
sqlalchemy/testing/__init__.py,sha256=3d22By8REcvn1y89Tl2FX0NfWotUJUppcWmRWOOLPzg,2867
|
||||
sqlalchemy/testing/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/assertions.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/assertsql.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/config.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/engines.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/entities.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/exclusions.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/fixtures.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/mock.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/pickleable.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/profiling.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/provision.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/replay_fixture.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/requirements.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/schema.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/util.cpython-38.pyc,,
|
||||
sqlalchemy/testing/__pycache__/warnings.cpython-38.pyc,,
|
||||
sqlalchemy/testing/assertions.py,sha256=prUiqNGpWr-YdQOVElP_3wfeffhKOl8nra-6oodGtwY,22260
|
||||
sqlalchemy/testing/assertsql.py,sha256=V4k6jMuXHxzFRtprIC_eVEgJEXe9xcj9np2G2QXCpsY,13590
|
||||
sqlalchemy/testing/config.py,sha256=8MFev0_oNGmc3DfumGCY0YLfrd_D4fSI0rGorJRc63U,5521
|
||||
sqlalchemy/testing/engines.py,sha256=6xrmfdYHTCMa8QBaJxWxuT3sL_VZacwBVZYok9L5dXM,10528
|
||||
sqlalchemy/testing/entities.py,sha256=AqTYLKczh4WHFswa4Hw5vQ1CmPGXn3_I3_MBTr-QrAQ,3203
|
||||
sqlalchemy/testing/exclusions.py,sha256=7cQWoJRm_X3q5Sv7DDb11VnykB41l_-C791G3xQQjVg,13220
|
||||
sqlalchemy/testing/fixtures.py,sha256=JrC5yBhoOjWrzu0WolDvyGE0GYDoRlqDfAcjk4ELbr0,14917
|
||||
sqlalchemy/testing/mock.py,sha256=7GKwpmJQXqI65E8nIKqY0bwleIxxWkJl7vOQ-2X-0w4,893
|
||||
sqlalchemy/testing/pickleable.py,sha256=C_MqKsBUJnzPaOfzK5wsfwSqcvV8upId9xTC0c7-Wm0,2693
|
||||
sqlalchemy/testing/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
sqlalchemy/testing/plugin/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/__pycache__/bootstrap.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/__pycache__/plugin_base.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/__pycache__/pytestplugin.cpython-38.pyc,,
|
||||
sqlalchemy/testing/plugin/bootstrap.py,sha256=0rkror_9S175GPGNnbtbDmfdLEhu9v-AAv715lR8KyU,1468
|
||||
sqlalchemy/testing/plugin/plugin_base.py,sha256=bDj-2YKsiLOEwkYcT_1FnpFiT7cJUPQaVP2Z8aVMzKI,20455
|
||||
sqlalchemy/testing/plugin/pytestplugin.py,sha256=g-s_XCxAp23sP81mTgIgKNlu2h63RnRypmcFFAt7KcM,16055
|
||||
sqlalchemy/testing/profiling.py,sha256=LdmyansaQUqm6aP31FmQ33uEXE50nN5cLbPfLCjAsEE,8741
|
||||
sqlalchemy/testing/provision.py,sha256=-25MIMowZV4iCmbFgQ74oTaGVCHH33Rxq4zVoIF_XxU,5572
|
||||
sqlalchemy/testing/replay_fixture.py,sha256=W_QZD96t7ichRNvILOjhuoQXTCYnd2usiHBQhPkzUYI,5875
|
||||
sqlalchemy/testing/requirements.py,sha256=s8mXcHLlhi6fDwnWJ6Y8p1lfV8QmwUD89Pd3wfJ5yXo,33063
|
||||
sqlalchemy/testing/schema.py,sha256=yyhuI-l__HtQINm5lSbFOzJWTP33PWhEx7ErCAavyqU,3712
|
||||
sqlalchemy/testing/suite/__init__.py,sha256=SUWU-LR3asH2hN2YsIhlpqxeuo8fpvej3o6nct-L4xU,358
|
||||
sqlalchemy/testing/suite/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_cte.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_ddl.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_dialect.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_insert.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_reflection.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_results.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_select.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_sequence.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_types.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/__pycache__/test_update_delete.cpython-38.pyc,,
|
||||
sqlalchemy/testing/suite/test_cte.py,sha256=VbBzRrNWXk2EkuFAz5f5vFXaR9tU240c63dSY88qpf0,6801
|
||||
sqlalchemy/testing/suite/test_ddl.py,sha256=jRgSteRzO9dn1kQEFjW7DwmnGB_5A4nN0BoFR1tmOVo,9064
|
||||
sqlalchemy/testing/suite/test_dialect.py,sha256=jELX6CVW7nHeY0trT9cSsV7X-oiJ24No2FVBQo2UBiQ,6860
|
||||
sqlalchemy/testing/suite/test_insert.py,sha256=Hiwa4iE-oG4csNG57CieNgN2-hGfHX8xgbMQT3rM0TE,9672
|
||||
sqlalchemy/testing/suite/test_reflection.py,sha256=FtMUIbgT2PpumvxjYNYiQ1q2uNHTygmThpj4hcfajNU,48391
|
||||
sqlalchemy/testing/suite/test_results.py,sha256=wemYY7ZTVisKLbks8p1Maf1HEOLZ9vigIsGoHHc4Cbw,10971
|
||||
sqlalchemy/testing/suite/test_select.py,sha256=Sy-B7GWsEsIuA2rK-EhDHcAI9B4GZwmHMLq9_z6Xjto,24393
|
||||
sqlalchemy/testing/suite/test_sequence.py,sha256=oacBvtAqW3Ua3gcqyqnT1U_hpJutEW_EmEbwvf7Xq7E,4661
|
||||
sqlalchemy/testing/suite/test_types.py,sha256=hTKuq3ZxbwJp1xLsqjKhGAJRrOEFQMS6Ew6A9EJUS-c,37161
|
||||
sqlalchemy/testing/suite/test_update_delete.py,sha256=I2NOhWu7iwKLJzcqM_6sLh3WCE1jmcN8tLwBzvNYLPg,1491
|
||||
sqlalchemy/testing/util.py,sha256=aUqGKkFl8iiXX6-FnVsZn8raw_e2UEFvth1zIXh3BHQ,10149
|
||||
sqlalchemy/testing/warnings.py,sha256=VJkKwRvCn6aEdbS_aofomrktaWPmGkQ-up1LJLHJCVY,1649
|
||||
sqlalchemy/types.py,sha256=vPVnkVVfZrywYxCd_VWYfoJUOPBhpdAAleKlcxDxuB0,3377
|
||||
sqlalchemy/util/__init__.py,sha256=RvsFbqQLFJPxwHmAdhbruzlXNk-oZPX7PzOB9eZP1IE,6711
|
||||
sqlalchemy/util/__pycache__/__init__.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/_collections.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/_preloaded.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/compat.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/deprecations.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/langhelpers.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/queue.cpython-38.pyc,,
|
||||
sqlalchemy/util/__pycache__/topological.cpython-38.pyc,,
|
||||
sqlalchemy/util/_collections.py,sha256=GxzEak0oLJqdiOxmW9t5WW2UGy_F02FhFDiUVKtnuV8,29219
|
||||
sqlalchemy/util/_preloaded.py,sha256=GvH_E9UkXgMgCwwZVvIpEhsj-POcwsIVayjXB_8ON9c,5765
|
||||
sqlalchemy/util/compat.py,sha256=iJmEwGhtV7BcJNZ5zsZmyl4OnXp3AbqaUe-GEp-VH6k,16920
|
||||
sqlalchemy/util/deprecations.py,sha256=Lp160Bfl_01YfxRLxzMKtsV12ZrW2JlON5h693OfG60,7474
|
||||
sqlalchemy/util/langhelpers.py,sha256=oHRxxqMafVcK7JgtNqJ-p2G7UPedGt0zzJ5ezz2vq3Q,47707
|
||||
sqlalchemy/util/queue.py,sha256=ZX0mG0SLdrTAh4J6eBMfBOdwJVey_bPQf5HCXEu1IiM,6827
|
||||
sqlalchemy/util/topological.py,sha256=32yF_dXbio62iosoIbQvb2zcjUv9hWfbnIsFPcotYuE,2767
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.36.2)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp38-cp38-manylinux2010_x86_64
|
||||
|
@ -1 +0,0 @@
|
||||
sqlalchemy
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
pip
|
@ -1,201 +0,0 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2013-2020 aiohttp maintainers
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
@ -1,978 +0,0 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: aiohttp
|
||||
Version: 3.7.4.post0
|
||||
Summary: Async http client/server framework (asyncio)
|
||||
Home-page: https://github.com/aio-libs/aiohttp
|
||||
Author: Nikolay Kim
|
||||
Author-email: fafhrd91@gmail.com
|
||||
Maintainer: Nikolay Kim <fafhrd91@gmail.com>, Andrew Svetlov <andrew.svetlov@gmail.com>
|
||||
Maintainer-email: aio-libs@googlegroups.com
|
||||
License: Apache 2
|
||||
Project-URL: Chat: Gitter, https://gitter.im/aio-libs/Lobby
|
||||
Project-URL: CI: Azure Pipelines, https://dev.azure.com/aio-libs/aiohttp/_build
|
||||
Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/aiohttp
|
||||
Project-URL: Docs: RTD, https://docs.aiohttp.org
|
||||
Project-URL: GitHub: issues, https://github.com/aio-libs/aiohttp/issues
|
||||
Project-URL: GitHub: repo, https://github.com/aio-libs/aiohttp
|
||||
Platform: UNKNOWN
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Programming Language :: Python
|
||||
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: Development Status :: 5 - Production/Stable
|
||||
Classifier: Operating System :: POSIX
|
||||
Classifier: Operating System :: MacOS :: MacOS X
|
||||
Classifier: Operating System :: Microsoft :: Windows
|
||||
Classifier: Topic :: Internet :: WWW/HTTP
|
||||
Classifier: Framework :: AsyncIO
|
||||
Requires-Python: >=3.6
|
||||
Requires-Dist: attrs (>=17.3.0)
|
||||
Requires-Dist: chardet (<5.0,>=2.0)
|
||||
Requires-Dist: multidict (<7.0,>=4.5)
|
||||
Requires-Dist: async-timeout (<4.0,>=3.0)
|
||||
Requires-Dist: yarl (<2.0,>=1.0)
|
||||
Requires-Dist: typing-extensions (>=3.6.5)
|
||||
Requires-Dist: idna-ssl (>=1.0) ; python_version < "3.7"
|
||||
Provides-Extra: speedups
|
||||
Requires-Dist: aiodns ; extra == 'speedups'
|
||||
Requires-Dist: brotlipy ; extra == 'speedups'
|
||||
Requires-Dist: cchardet ; extra == 'speedups'
|
||||
|
||||
==================================
|
||||
Async http client/server framework
|
||||
==================================
|
||||
|
||||
.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/_static/aiohttp-icon-128x128.png
|
||||
:height: 64px
|
||||
:width: 64px
|
||||
:alt: aiohttp logo
|
||||
|
||||
|
|
||||
|
||||
.. image:: https://github.com/aio-libs/aiohttp/workflows/CI/badge.svg
|
||||
:target: https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
|
||||
:alt: GitHub Actions status for master branch
|
||||
|
||||
.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
|
||||
:target: https://codecov.io/gh/aio-libs/aiohttp
|
||||
:alt: codecov.io status for master branch
|
||||
|
||||
.. image:: https://badge.fury.io/py/aiohttp.svg
|
||||
:target: https://pypi.org/project/aiohttp
|
||||
:alt: Latest PyPI package version
|
||||
|
||||
.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
|
||||
:target: https://docs.aiohttp.org/
|
||||
:alt: Latest Read The Docs
|
||||
|
||||
.. image:: https://img.shields.io/discourse/status?server=https%3A%2F%2Faio-libs.discourse.group
|
||||
:target: https://aio-libs.discourse.group
|
||||
:alt: Discourse status
|
||||
|
||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:target: https://gitter.im/aio-libs/Lobby
|
||||
:alt: Chat on Gitter
|
||||
|
||||
|
||||
Key Features
|
||||
============
|
||||
|
||||
- Supports both client and server side of HTTP protocol.
|
||||
- Supports both client and server Web-Sockets out-of-the-box and avoids
|
||||
Callback Hell.
|
||||
- Provides Web-server with middlewares and plugable routing.
|
||||
|
||||
|
||||
Getting started
|
||||
===============
|
||||
|
||||
Client
|
||||
------
|
||||
|
||||
To get something from the web:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import aiohttp
|
||||
import asyncio
|
||||
|
||||
async def main():
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get('http://python.org') as response:
|
||||
|
||||
print("Status:", response.status)
|
||||
print("Content-type:", response.headers['content-type'])
|
||||
|
||||
html = await response.text()
|
||||
print("Body:", html[:15], "...")
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(main())
|
||||
|
||||
This prints:
|
||||
|
||||
.. code-block::
|
||||
|
||||
Status: 200
|
||||
Content-type: text/html; charset=utf-8
|
||||
Body: <!doctype html> ...
|
||||
|
||||
Coming from `requests <https://requests.readthedocs.io/>`_ ? Read `why we need so many lines <https://aiohttp.readthedocs.io/en/latest/http_request_lifecycle.html>`_.
|
||||
|
||||
Server
|
||||
------
|
||||
|
||||
An example using a simple server:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# examples/server_simple.py
|
||||
from aiohttp import web
|
||||
|
||||
async def handle(request):
|
||||
name = request.match_info.get('name', "Anonymous")
|
||||
text = "Hello, " + name
|
||||
return web.Response(text=text)
|
||||
|
||||
async def wshandle(request):
|
||||
ws = web.WebSocketResponse()
|
||||
await ws.prepare(request)
|
||||
|
||||
async for msg in ws:
|
||||
if msg.type == web.WSMsgType.text:
|
||||
await ws.send_str("Hello, {}".format(msg.data))
|
||||
elif msg.type == web.WSMsgType.binary:
|
||||
await ws.send_bytes(msg.data)
|
||||
elif msg.type == web.WSMsgType.close:
|
||||
break
|
||||
|
||||
return ws
|
||||
|
||||
|
||||
app = web.Application()
|
||||
app.add_routes([web.get('/', handle),
|
||||
web.get('/echo', wshandle),
|
||||
web.get('/{name}', handle)])
|
||||
|
||||
if __name__ == '__main__':
|
||||
web.run_app(app)
|
||||
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
https://aiohttp.readthedocs.io/
|
||||
|
||||
|
||||
Demos
|
||||
=====
|
||||
|
||||
https://github.com/aio-libs/aiohttp-demos
|
||||
|
||||
|
||||
External links
|
||||
==============
|
||||
|
||||
* `Third party libraries
|
||||
<http://aiohttp.readthedocs.io/en/latest/third_party.html>`_
|
||||
* `Built with aiohttp
|
||||
<http://aiohttp.readthedocs.io/en/latest/built_with.html>`_
|
||||
* `Powered by aiohttp
|
||||
<http://aiohttp.readthedocs.io/en/latest/powered_by.html>`_
|
||||
|
||||
Feel free to make a Pull Request for adding your link to these pages!
|
||||
|
||||
|
||||
Communication channels
|
||||
======================
|
||||
|
||||
*aio-libs discourse group*: https://aio-libs.discourse.group
|
||||
|
||||
*gitter chat* https://gitter.im/aio-libs/Lobby
|
||||
|
||||
We support `Stack Overflow
|
||||
<https://stackoverflow.com/questions/tagged/aiohttp>`_.
|
||||
Please add *aiohttp* tag to your question there.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
- Python >= 3.6
|
||||
- async-timeout_
|
||||
- attrs_
|
||||
- chardet_
|
||||
- multidict_
|
||||
- yarl_
|
||||
|
||||
Optionally you may install the cChardet_ and aiodns_ libraries (highly
|
||||
recommended for sake of speed).
|
||||
|
||||
.. _chardet: https://pypi.python.org/pypi/chardet
|
||||
.. _aiodns: https://pypi.python.org/pypi/aiodns
|
||||
.. _attrs: https://github.com/python-attrs/attrs
|
||||
.. _multidict: https://pypi.python.org/pypi/multidict
|
||||
.. _yarl: https://pypi.python.org/pypi/yarl
|
||||
.. _async-timeout: https://pypi.python.org/pypi/async_timeout
|
||||
.. _cChardet: https://pypi.python.org/pypi/cchardet
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
``aiohttp`` is offered under the Apache 2 license.
|
||||
|
||||
|
||||
Keepsafe
|
||||
========
|
||||
|
||||
The aiohttp community would like to thank Keepsafe
|
||||
(https://www.getkeepsafe.com) for its support in the early days of
|
||||
the project.
|
||||
|
||||
|
||||
Source code
|
||||
===========
|
||||
|
||||
The latest developer version is available in a GitHub repository:
|
||||
https://github.com/aio-libs/aiohttp
|
||||
|
||||
Benchmarks
|
||||
==========
|
||||
|
||||
If you are interested in efficiency, the AsyncIO community maintains a
|
||||
list of benchmarks on the official wiki:
|
||||
https://github.com/python/asyncio/wiki/Benchmarks
|
||||
|
||||
=========
|
||||
Changelog
|
||||
=========
|
||||
|
||||
..
|
||||
You should *NOT* be adding new change log entries to this file, this
|
||||
file is managed by towncrier. You *may* edit previous change logs to
|
||||
fix problems like typo corrections or such.
|
||||
To add a new change log entry, please see
|
||||
https://pip.pypa.io/en/latest/development/#adding-a-news-entry
|
||||
we named the news folder "changes".
|
||||
|
||||
WARNING: Don't drop the next directive!
|
||||
|
||||
.. towncrier release notes start
|
||||
|
||||
3.7.4.post0 (2021-03-06)
|
||||
========================
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- Bumped upper bound of the ``chardet`` runtime dependency
|
||||
to allow their v4.0 version stream.
|
||||
`#5366 <https://github.com/aio-libs/aiohttp/issues/5366>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.4 (2021-02-25)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- **(SECURITY BUG)** Started preventing open redirects in the
|
||||
``aiohttp.web.normalize_path_middleware`` middleware. For
|
||||
more details, see
|
||||
https://github.com/aio-libs/aiohttp/security/advisories/GHSA-v6wp-4m6f-gcjg.
|
||||
|
||||
Thanks to `Beast Glatisant <https://github.com/g147>`__ for
|
||||
finding the first instance of this issue and `Jelmer Vernooij
|
||||
<https://jelmer.uk/>`__ for reporting and tracking it down
|
||||
in aiohttp.
|
||||
`#5497 <https://github.com/aio-libs/aiohttp/issues/5497>`_
|
||||
- Fix interpretation difference of the pure-Python and the Cython-based
|
||||
HTTP parsers construct a ``yarl.URL`` object for HTTP request-target.
|
||||
|
||||
Before this fix, the Python parser would turn the URI's absolute-path
|
||||
for ``//some-path`` into ``/`` while the Cython code preserved it as
|
||||
``//some-path``. Now, both do the latter.
|
||||
`#5498 <https://github.com/aio-libs/aiohttp/issues/5498>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.3 (2020-11-18)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Use Brotli instead of brotlipy
|
||||
`#3803 <https://github.com/aio-libs/aiohttp/issues/3803>`_
|
||||
- Made exceptions pickleable. Also changed the repr of some exceptions.
|
||||
`#4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Raise a ClientResponseError instead of an AssertionError for a blank
|
||||
HTTP Reason Phrase.
|
||||
`#3532 <https://github.com/aio-libs/aiohttp/issues/3532>`_
|
||||
- Fix ``web_middlewares.normalize_path_middleware`` behavior for patch without slash.
|
||||
`#3669 <https://github.com/aio-libs/aiohttp/issues/3669>`_
|
||||
- Fix overshadowing of overlapped sub-applications prefixes.
|
||||
`#3701 <https://github.com/aio-libs/aiohttp/issues/3701>`_
|
||||
- Make `BaseConnector.close()` a coroutine and wait until the client closes all connections. Drop deprecated "with Connector():" syntax.
|
||||
`#3736 <https://github.com/aio-libs/aiohttp/issues/3736>`_
|
||||
- Reset the ``sock_read`` timeout each time data is received for a ``aiohttp.client`` response.
|
||||
`#3808 <https://github.com/aio-libs/aiohttp/issues/3808>`_
|
||||
- Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View
|
||||
`#3880 <https://github.com/aio-libs/aiohttp/issues/3880>`_
|
||||
- Fixed querying the address families from DNS that the current host supports.
|
||||
`#5156 <https://github.com/aio-libs/aiohttp/issues/5156>`_
|
||||
- Change return type of MultipartReader.__aiter__() and BodyPartReader.__aiter__() to AsyncIterator.
|
||||
`#5163 <https://github.com/aio-libs/aiohttp/issues/5163>`_
|
||||
- Provide x86 Windows wheels.
|
||||
`#5230 <https://github.com/aio-libs/aiohttp/issues/5230>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Add documentation for ``aiohttp.web.FileResponse``.
|
||||
`#3958 <https://github.com/aio-libs/aiohttp/issues/3958>`_
|
||||
- Removed deprecation warning in tracing example docs
|
||||
`#3964 <https://github.com/aio-libs/aiohttp/issues/3964>`_
|
||||
- Fixed wrong "Usage" docstring of ``aiohttp.client.request``.
|
||||
`#4603 <https://github.com/aio-libs/aiohttp/issues/4603>`_
|
||||
- Add aiohttp-pydantic to third party libraries
|
||||
`#5228 <https://github.com/aio-libs/aiohttp/issues/5228>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#4102 <https://github.com/aio-libs/aiohttp/issues/4102>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.2 (2020-10-27)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed static files handling for loops without ``.sendfile()`` support
|
||||
`#5149 <https://github.com/aio-libs/aiohttp/issues/5149>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.1 (2020-10-25)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed a type error caused by the conditional import of `Protocol`.
|
||||
`#5111 <https://github.com/aio-libs/aiohttp/issues/5111>`_
|
||||
- Server doesn't send Content-Length for 1xx or 204
|
||||
`#4901 <https://github.com/aio-libs/aiohttp/issues/4901>`_
|
||||
- Fix run_app typing
|
||||
`#4957 <https://github.com/aio-libs/aiohttp/issues/4957>`_
|
||||
- Always require ``typing_extensions`` library.
|
||||
`#5107 <https://github.com/aio-libs/aiohttp/issues/5107>`_
|
||||
- Fix a variable-shadowing bug causing `ThreadedResolver.resolve` to
|
||||
return the resolved IP as the ``hostname`` in each record, which prevented
|
||||
validation of HTTPS connections.
|
||||
`#5110 <https://github.com/aio-libs/aiohttp/issues/5110>`_
|
||||
- Added annotations to all public attributes.
|
||||
`#5115 <https://github.com/aio-libs/aiohttp/issues/5115>`_
|
||||
- Fix flaky test_when_timeout_smaller_second
|
||||
`#5116 <https://github.com/aio-libs/aiohttp/issues/5116>`_
|
||||
- Ensure sending a zero byte file does not throw an exception
|
||||
`#5124 <https://github.com/aio-libs/aiohttp/issues/5124>`_
|
||||
- Fix a bug in ``web.run_app()`` about Python version checking on Windows
|
||||
`#5127 <https://github.com/aio-libs/aiohttp/issues/5127>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.7.0 (2020-10-24)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Response headers are now prepared prior to running ``on_response_prepare`` hooks, directly before headers are sent to the client.
|
||||
`#1958 <https://github.com/aio-libs/aiohttp/issues/1958>`_
|
||||
- Add a ``quote_cookie`` option to ``CookieJar``, a way to skip quotation wrapping of cookies containing special characters.
|
||||
`#2571 <https://github.com/aio-libs/aiohttp/issues/2571>`_
|
||||
- Call ``AccessLogger.log`` with the current exception available from ``sys.exc_info()``.
|
||||
`#3557 <https://github.com/aio-libs/aiohttp/issues/3557>`_
|
||||
- `web.UrlDispatcher.add_routes` and `web.Application.add_routes` return a list
|
||||
of registered `AbstractRoute` instances. `AbstractRouteDef.register` (and all
|
||||
subclasses) return a list of registered resources registered resource.
|
||||
`#3866 <https://github.com/aio-libs/aiohttp/issues/3866>`_
|
||||
- Added properties of default ClientSession params to ClientSession class so it is available for introspection
|
||||
`#3882 <https://github.com/aio-libs/aiohttp/issues/3882>`_
|
||||
- Don't cancel web handler on peer disconnection, raise `OSError` on reading/writing instead.
|
||||
`#4080 <https://github.com/aio-libs/aiohttp/issues/4080>`_
|
||||
- Implement BaseRequest.get_extra_info() to access a protocol transports' extra info.
|
||||
`#4189 <https://github.com/aio-libs/aiohttp/issues/4189>`_
|
||||
- Added `ClientSession.timeout` property.
|
||||
`#4191 <https://github.com/aio-libs/aiohttp/issues/4191>`_
|
||||
- allow use of SameSite in cookies.
|
||||
`#4224 <https://github.com/aio-libs/aiohttp/issues/4224>`_
|
||||
- Use ``loop.sendfile()`` instead of custom implementation if available.
|
||||
`#4269 <https://github.com/aio-libs/aiohttp/issues/4269>`_
|
||||
- Apply SO_REUSEADDR to test server's socket.
|
||||
`#4393 <https://github.com/aio-libs/aiohttp/issues/4393>`_
|
||||
- Use .raw_host instead of slower .host in client API
|
||||
`#4402 <https://github.com/aio-libs/aiohttp/issues/4402>`_
|
||||
- Allow configuring the buffer size of input stream by passing ``read_bufsize`` argument.
|
||||
`#4453 <https://github.com/aio-libs/aiohttp/issues/4453>`_
|
||||
- Pass tests on Python 3.8 for Windows.
|
||||
`#4513 <https://github.com/aio-libs/aiohttp/issues/4513>`_
|
||||
- Add `method` and `url` attributes to `TraceRequestChunkSentParams` and `TraceResponseChunkReceivedParams`.
|
||||
`#4674 <https://github.com/aio-libs/aiohttp/issues/4674>`_
|
||||
- Add ClientResponse.ok property for checking status code under 400.
|
||||
`#4711 <https://github.com/aio-libs/aiohttp/issues/4711>`_
|
||||
- Don't ceil timeouts that are smaller than 5 seconds.
|
||||
`#4850 <https://github.com/aio-libs/aiohttp/issues/4850>`_
|
||||
- TCPSite now listens by default on all interfaces instead of just IPv4 when `None` is passed in as the host.
|
||||
`#4894 <https://github.com/aio-libs/aiohttp/issues/4894>`_
|
||||
- Bump ``http_parser`` to 2.9.4
|
||||
`#5070 <https://github.com/aio-libs/aiohttp/issues/5070>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix keepalive connections not being closed in time
|
||||
`#3296 <https://github.com/aio-libs/aiohttp/issues/3296>`_
|
||||
- Fix failed websocket handshake leaving connection hanging.
|
||||
`#3380 <https://github.com/aio-libs/aiohttp/issues/3380>`_
|
||||
- Fix tasks cancellation order on exit. The run_app task needs to be cancelled first for cleanup hooks to run with all tasks intact.
|
||||
`#3805 <https://github.com/aio-libs/aiohttp/issues/3805>`_
|
||||
- Don't start heartbeat until _writer is set
|
||||
`#4062 <https://github.com/aio-libs/aiohttp/issues/4062>`_
|
||||
- Fix handling of multipart file uploads without a content type.
|
||||
`#4089 <https://github.com/aio-libs/aiohttp/issues/4089>`_
|
||||
- Preserve view handler function attributes across middlewares
|
||||
`#4174 <https://github.com/aio-libs/aiohttp/issues/4174>`_
|
||||
- Fix the string representation of ``ServerDisconnectedError``.
|
||||
`#4175 <https://github.com/aio-libs/aiohttp/issues/4175>`_
|
||||
- Raising RuntimeError when trying to get encoding from not read body
|
||||
`#4214 <https://github.com/aio-libs/aiohttp/issues/4214>`_
|
||||
- Remove warning messages from noop.
|
||||
`#4282 <https://github.com/aio-libs/aiohttp/issues/4282>`_
|
||||
- Raise ClientPayloadError if FormData re-processed.
|
||||
`#4345 <https://github.com/aio-libs/aiohttp/issues/4345>`_
|
||||
- Fix a warning about unfinished task in ``web_protocol.py``
|
||||
`#4408 <https://github.com/aio-libs/aiohttp/issues/4408>`_
|
||||
- Fixed 'deflate' compression. According to RFC 2616 now.
|
||||
`#4506 <https://github.com/aio-libs/aiohttp/issues/4506>`_
|
||||
- Fixed OverflowError on platforms with 32-bit time_t
|
||||
`#4515 <https://github.com/aio-libs/aiohttp/issues/4515>`_
|
||||
- Fixed request.body_exists returns wrong value for methods without body.
|
||||
`#4528 <https://github.com/aio-libs/aiohttp/issues/4528>`_
|
||||
- Fix connecting to link-local IPv6 addresses.
|
||||
`#4554 <https://github.com/aio-libs/aiohttp/issues/4554>`_
|
||||
- Fix a problem with connection waiters that are never awaited.
|
||||
`#4562 <https://github.com/aio-libs/aiohttp/issues/4562>`_
|
||||
- Always make sure transport is not closing before reuse a connection.
|
||||
|
||||
Reuse a protocol based on keepalive in headers is unreliable.
|
||||
For example, uWSGI will not support keepalive even it serves a
|
||||
HTTP 1.1 request, except explicitly configure uWSGI with a
|
||||
``--http-keepalive`` option.
|
||||
|
||||
Servers designed like uWSGI could cause aiohttp intermittently
|
||||
raise a ConnectionResetException when the protocol poll runs
|
||||
out and some protocol is reused.
|
||||
`#4587 <https://github.com/aio-libs/aiohttp/issues/4587>`_
|
||||
- Handle the last CRLF correctly even if it is received via separate TCP segment.
|
||||
`#4630 <https://github.com/aio-libs/aiohttp/issues/4630>`_
|
||||
- Fix the register_resource function to validate route name before splitting it so that route name can include python keywords.
|
||||
`#4691 <https://github.com/aio-libs/aiohttp/issues/4691>`_
|
||||
- Improve typing annotations for ``web.Request``, ``aiohttp.ClientResponse`` and
|
||||
``multipart`` module.
|
||||
`#4736 <https://github.com/aio-libs/aiohttp/issues/4736>`_
|
||||
- Fix resolver task is not awaited when connector is cancelled
|
||||
`#4795 <https://github.com/aio-libs/aiohttp/issues/4795>`_
|
||||
- Fix a bug "Aiohttp doesn't return any error on invalid request methods"
|
||||
`#4798 <https://github.com/aio-libs/aiohttp/issues/4798>`_
|
||||
- Fix HEAD requests for static content.
|
||||
`#4809 <https://github.com/aio-libs/aiohttp/issues/4809>`_
|
||||
- Fix incorrect size calculation for memoryview
|
||||
`#4890 <https://github.com/aio-libs/aiohttp/issues/4890>`_
|
||||
- Add HTTPMove to _all__.
|
||||
`#4897 <https://github.com/aio-libs/aiohttp/issues/4897>`_
|
||||
- Fixed the type annotations in the ``tracing`` module.
|
||||
`#4912 <https://github.com/aio-libs/aiohttp/issues/4912>`_
|
||||
- Fix typing for multipart ``__aiter__``.
|
||||
`#4931 <https://github.com/aio-libs/aiohttp/issues/4931>`_
|
||||
- Fix for race condition on connections in BaseConnector that leads to exceeding the connection limit.
|
||||
`#4936 <https://github.com/aio-libs/aiohttp/issues/4936>`_
|
||||
- Add forced UTF-8 encoding for ``application/rdap+json`` responses.
|
||||
`#4938 <https://github.com/aio-libs/aiohttp/issues/4938>`_
|
||||
- Fix inconsistency between Python and C http request parsers in parsing pct-encoded URL.
|
||||
`#4972 <https://github.com/aio-libs/aiohttp/issues/4972>`_
|
||||
- Fix connection closing issue in HEAD request.
|
||||
`#5012 <https://github.com/aio-libs/aiohttp/issues/5012>`_
|
||||
- Fix type hint on BaseRunner.addresses (from ``List[str]`` to ``List[Any]``)
|
||||
`#5086 <https://github.com/aio-libs/aiohttp/issues/5086>`_
|
||||
- Make `web.run_app()` more responsive to Ctrl+C on Windows for Python < 3.8. It slightly
|
||||
increases CPU load as a side effect.
|
||||
`#5098 <https://github.com/aio-libs/aiohttp/issues/5098>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Fix example code in client quick-start
|
||||
`#3376 <https://github.com/aio-libs/aiohttp/issues/3376>`_
|
||||
- Updated the docs so there is no contradiction in ``ttl_dns_cache`` default value
|
||||
`#3512 <https://github.com/aio-libs/aiohttp/issues/3512>`_
|
||||
- Add 'Deploy with SSL' to docs.
|
||||
`#4201 <https://github.com/aio-libs/aiohttp/issues/4201>`_
|
||||
- Change typing of the secure argument on StreamResponse.set_cookie from ``Optional[str]`` to ``Optional[bool]``
|
||||
`#4204 <https://github.com/aio-libs/aiohttp/issues/4204>`_
|
||||
- Changes ``ttl_dns_cache`` type from int to Optional[int].
|
||||
`#4270 <https://github.com/aio-libs/aiohttp/issues/4270>`_
|
||||
- Simplify README hello word example and add a documentation page for people coming from requests.
|
||||
`#4272 <https://github.com/aio-libs/aiohttp/issues/4272>`_
|
||||
- Improve some code examples in the documentation involving websockets and starting a simple HTTP site with an AppRunner.
|
||||
`#4285 <https://github.com/aio-libs/aiohttp/issues/4285>`_
|
||||
- Fix typo in code example in Multipart docs
|
||||
`#4312 <https://github.com/aio-libs/aiohttp/issues/4312>`_
|
||||
- Fix code example in Multipart section.
|
||||
`#4314 <https://github.com/aio-libs/aiohttp/issues/4314>`_
|
||||
- Update contributing guide so new contributors read the most recent version of that guide. Update command used to create test coverage reporting.
|
||||
`#4810 <https://github.com/aio-libs/aiohttp/issues/4810>`_
|
||||
- Spelling: Change "canonize" to "canonicalize".
|
||||
`#4986 <https://github.com/aio-libs/aiohttp/issues/4986>`_
|
||||
- Add ``aiohttp-sse-client`` library to third party usage list.
|
||||
`#5084 <https://github.com/aio-libs/aiohttp/issues/5084>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#2856 <https://github.com/aio-libs/aiohttp/issues/2856>`_, `#4218 <https://github.com/aio-libs/aiohttp/issues/4218>`_, `#4250 <https://github.com/aio-libs/aiohttp/issues/4250>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.6.3 (2020-10-12)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Pin yarl to ``<1.6.0`` to avoid buggy behavior that will be fixed by the next aiohttp
|
||||
release.
|
||||
|
||||
3.6.2 (2019-10-09)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Made exceptions pickleable. Also changed the repr of some exceptions.
|
||||
`#4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_
|
||||
- Use ``Iterable`` type hint instead of ``Sequence`` for ``Application`` *middleware*
|
||||
parameter. `#4125 <https://github.com/aio-libs/aiohttp/issues/4125>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Reset the ``sock_read`` timeout each time data is received for a
|
||||
``aiohttp.ClientResponse``. `#3808
|
||||
<https://github.com/aio-libs/aiohttp/issues/3808>`_
|
||||
- Fix handling of expired cookies so they are not stored in CookieJar.
|
||||
`#4063 <https://github.com/aio-libs/aiohttp/issues/4063>`_
|
||||
- Fix misleading message in the string representation of ``ClientConnectorError``;
|
||||
``self.ssl == None`` means default SSL context, not SSL disabled `#4097
|
||||
<https://github.com/aio-libs/aiohttp/issues/4097>`_
|
||||
- Don't clobber HTTP status when using FileResponse.
|
||||
`#4106 <https://github.com/aio-libs/aiohttp/issues/4106>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Added minimal required logging configuration to logging documentation.
|
||||
`#2469 <https://github.com/aio-libs/aiohttp/issues/2469>`_
|
||||
- Update docs to reflect proxy support.
|
||||
`#4100 <https://github.com/aio-libs/aiohttp/issues/4100>`_
|
||||
- Fix typo in code example in testing docs.
|
||||
`#4108 <https://github.com/aio-libs/aiohttp/issues/4108>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#4102 <https://github.com/aio-libs/aiohttp/issues/4102>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.6.1 (2019-09-19)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Compatibility with Python 3.8.
|
||||
`#4056 <https://github.com/aio-libs/aiohttp/issues/4056>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- correct some exception string format
|
||||
`#4068 <https://github.com/aio-libs/aiohttp/issues/4068>`_
|
||||
- Emit a warning when ``ssl.OP_NO_COMPRESSION`` is
|
||||
unavailable because the runtime is built against
|
||||
an outdated OpenSSL.
|
||||
`#4052 <https://github.com/aio-libs/aiohttp/issues/4052>`_
|
||||
- Update multidict requirement to >= 4.5
|
||||
`#4057 <https://github.com/aio-libs/aiohttp/issues/4057>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Provide pytest-aiohttp namespace for pytest fixtures in docs.
|
||||
`#3723 <https://github.com/aio-libs/aiohttp/issues/3723>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.6.0 (2019-09-06)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- Add support for Named Pipes (Site and Connector) under Windows. This feature requires
|
||||
Proactor event loop to work. `#3629
|
||||
<https://github.com/aio-libs/aiohttp/issues/3629>`_
|
||||
- Removed ``Transfer-Encoding: chunked`` header from websocket responses to be
|
||||
compatible with more http proxy servers. `#3798
|
||||
<https://github.com/aio-libs/aiohttp/issues/3798>`_
|
||||
- Accept non-GET request for starting websocket handshake on server side.
|
||||
`#3980 <https://github.com/aio-libs/aiohttp/issues/3980>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Raise a ClientResponseError instead of an AssertionError for a blank
|
||||
HTTP Reason Phrase.
|
||||
`#3532 <https://github.com/aio-libs/aiohttp/issues/3532>`_
|
||||
- Fix an issue where cookies would sometimes not be set during a redirect.
|
||||
`#3576 <https://github.com/aio-libs/aiohttp/issues/3576>`_
|
||||
- Change normalize_path_middleware to use 308 redirect instead of 301.
|
||||
|
||||
This behavior should prevent clients from being unable to use PUT/POST
|
||||
methods on endpoints that are redirected because of a trailing slash.
|
||||
`#3579 <https://github.com/aio-libs/aiohttp/issues/3579>`_
|
||||
- Drop the processed task from ``all_tasks()`` list early. It prevents logging about a
|
||||
task with unhandled exception when the server is used in conjunction with
|
||||
``asyncio.run()``. `#3587 <https://github.com/aio-libs/aiohttp/issues/3587>`_
|
||||
- ``Signal`` type annotation changed from ``Signal[Callable[['TraceConfig'],
|
||||
Awaitable[None]]]`` to ``Signal[Callable[ClientSession, SimpleNamespace, ...]``.
|
||||
`#3595 <https://github.com/aio-libs/aiohttp/issues/3595>`_
|
||||
- Use sanitized URL as Location header in redirects
|
||||
`#3614 <https://github.com/aio-libs/aiohttp/issues/3614>`_
|
||||
- Improve typing annotations for multipart.py along with changes required
|
||||
by mypy in files that references multipart.py.
|
||||
`#3621 <https://github.com/aio-libs/aiohttp/issues/3621>`_
|
||||
- Close session created inside ``aiohttp.request`` when unhandled exception occurs
|
||||
`#3628 <https://github.com/aio-libs/aiohttp/issues/3628>`_
|
||||
- Cleanup per-chunk data in generic data read. Memory leak fixed.
|
||||
`#3631 <https://github.com/aio-libs/aiohttp/issues/3631>`_
|
||||
- Use correct type for add_view and family
|
||||
`#3633 <https://github.com/aio-libs/aiohttp/issues/3633>`_
|
||||
- Fix _keepalive field in __slots__ of ``RequestHandler``.
|
||||
`#3644 <https://github.com/aio-libs/aiohttp/issues/3644>`_
|
||||
- Properly handle ConnectionResetError, to silence the "Cannot write to closing
|
||||
transport" exception when clients disconnect uncleanly.
|
||||
`#3648 <https://github.com/aio-libs/aiohttp/issues/3648>`_
|
||||
- Suppress pytest warnings due to ``test_utils`` classes
|
||||
`#3660 <https://github.com/aio-libs/aiohttp/issues/3660>`_
|
||||
- Fix overshadowing of overlapped sub-application prefixes.
|
||||
`#3701 <https://github.com/aio-libs/aiohttp/issues/3701>`_
|
||||
- Fixed return type annotation for WSMessage.json()
|
||||
`#3720 <https://github.com/aio-libs/aiohttp/issues/3720>`_
|
||||
- Properly expose TooManyRedirects publicly as documented.
|
||||
`#3818 <https://github.com/aio-libs/aiohttp/issues/3818>`_
|
||||
- Fix missing brackets for IPv6 in proxy CONNECT request
|
||||
`#3841 <https://github.com/aio-libs/aiohttp/issues/3841>`_
|
||||
- Make the signature of ``aiohttp.test_utils.TestClient.request`` match
|
||||
``asyncio.ClientSession.request`` according to the docs `#3852
|
||||
<https://github.com/aio-libs/aiohttp/issues/3852>`_
|
||||
- Use correct style for re-exported imports, makes mypy ``--strict`` mode happy.
|
||||
`#3868 <https://github.com/aio-libs/aiohttp/issues/3868>`_
|
||||
- Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of
|
||||
View `#3880 <https://github.com/aio-libs/aiohttp/issues/3880>`_
|
||||
- Made cython HTTP parser set Reason-Phrase of the response to an empty string if it is
|
||||
missing. `#3906 <https://github.com/aio-libs/aiohttp/issues/3906>`_
|
||||
- Add URL to the string representation of ClientResponseError.
|
||||
`#3959 <https://github.com/aio-libs/aiohttp/issues/3959>`_
|
||||
- Accept ``istr`` keys in ``LooseHeaders`` type hints.
|
||||
`#3976 <https://github.com/aio-libs/aiohttp/issues/3976>`_
|
||||
- Fixed race conditions in _resolve_host caching and throttling when tracing is enabled.
|
||||
`#4013 <https://github.com/aio-libs/aiohttp/issues/4013>`_
|
||||
- For URLs like "unix://localhost/..." set Host HTTP header to "localhost" instead of
|
||||
"localhost:None". `#4039 <https://github.com/aio-libs/aiohttp/issues/4039>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Modify documentation for Background Tasks to remove deprecated usage of event loop.
|
||||
`#3526 <https://github.com/aio-libs/aiohttp/issues/3526>`_
|
||||
- use ``if __name__ == '__main__':`` in server examples.
|
||||
`#3775 <https://github.com/aio-libs/aiohttp/issues/3775>`_
|
||||
- Update documentation reference to the default access logger.
|
||||
`#3783 <https://github.com/aio-libs/aiohttp/issues/3783>`_
|
||||
- Improve documentation for ``web.BaseRequest.path`` and ``web.BaseRequest.raw_path``.
|
||||
`#3791 <https://github.com/aio-libs/aiohttp/issues/3791>`_
|
||||
- Removed deprecation warning in tracing example docs
|
||||
`#3964 <https://github.com/aio-libs/aiohttp/issues/3964>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.5.4 (2019-01-12)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix stream ``.read()`` / ``.readany()`` / ``.iter_any()`` which used to return a
|
||||
partial content only in case of compressed content
|
||||
`#3525 <https://github.com/aio-libs/aiohttp/issues/3525>`_
|
||||
|
||||
|
||||
3.5.3 (2019-01-10)
|
||||
==================
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix type stubs for ``aiohttp.web.run_app(access_log=True)`` and fix edge case of
|
||||
``access_log=True`` and the event loop being in debug mode. `#3504
|
||||
<https://github.com/aio-libs/aiohttp/issues/3504>`_
|
||||
- Fix ``aiohttp.ClientTimeout`` type annotations to accept ``None`` for fields
|
||||
`#3511 <https://github.com/aio-libs/aiohttp/issues/3511>`_
|
||||
- Send custom per-request cookies even if session jar is empty
|
||||
`#3515 <https://github.com/aio-libs/aiohttp/issues/3515>`_
|
||||
- Restore Linux binary wheels publishing on PyPI
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.5.2 (2019-01-08)
|
||||
==================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- ``FileResponse`` from ``web_fileresponse.py`` uses a ``ThreadPoolExecutor`` to work
|
||||
with files asynchronously. I/O based payloads from ``payload.py`` uses a
|
||||
``ThreadPoolExecutor`` to work with I/O objects asynchronously. `#3313
|
||||
<https://github.com/aio-libs/aiohttp/issues/3313>`_
|
||||
- Internal Server Errors in plain text if the browser does not support HTML.
|
||||
`#3483 <https://github.com/aio-libs/aiohttp/issues/3483>`_
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Preserve MultipartWriter parts headers on write. Refactor the way how
|
||||
``Payload.headers`` are handled. Payload instances now always have headers and
|
||||
Content-Type defined. Fix Payload Content-Disposition header reset after initial
|
||||
creation. `#3035 <https://github.com/aio-libs/aiohttp/issues/3035>`_
|
||||
- Log suppressed exceptions in ``GunicornWebWorker``.
|
||||
`#3464 <https://github.com/aio-libs/aiohttp/issues/3464>`_
|
||||
- Remove wildcard imports.
|
||||
`#3468 <https://github.com/aio-libs/aiohttp/issues/3468>`_
|
||||
- Use the same task for app initialization and web server handling in gunicorn workers.
|
||||
It allows to use Python3.7 context vars smoothly.
|
||||
`#3471 <https://github.com/aio-libs/aiohttp/issues/3471>`_
|
||||
- Fix handling of chunked+gzipped response when first chunk does not give uncompressed
|
||||
data `#3477 <https://github.com/aio-libs/aiohttp/issues/3477>`_
|
||||
- Replace ``collections.MutableMapping`` with ``collections.abc.MutableMapping`` to
|
||||
avoid a deprecation warning. `#3480
|
||||
<https://github.com/aio-libs/aiohttp/issues/3480>`_
|
||||
- ``Payload.size`` type annotation changed from ``Optional[float]`` to
|
||||
``Optional[int]``. `#3484 <https://github.com/aio-libs/aiohttp/issues/3484>`_
|
||||
- Ignore done tasks when cancels pending activities on ``web.run_app`` finalization.
|
||||
`#3497 <https://github.com/aio-libs/aiohttp/issues/3497>`_
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Add documentation for ``aiohttp.web.HTTPException``.
|
||||
`#3490 <https://github.com/aio-libs/aiohttp/issues/3490>`_
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- `#3487 <https://github.com/aio-libs/aiohttp/issues/3487>`_
|
||||
|
||||
|
||||
----
|
||||
|
||||
|
||||
3.5.1 (2018-12-24)
|
||||
====================
|
||||
|
||||
- Fix a regression about ``ClientSession._requote_redirect_url`` modification in debug
|
||||
mode.
|
||||
|
||||
3.5.0 (2018-12-22)
|
||||
====================
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- The library type annotations are checked in strict mode now.
|
||||
- Add support for setting cookies for individual request (`#2387
|
||||
<https://github.com/aio-libs/aiohttp/pull/2387>`_)
|
||||
- Application.add_domain implementation (`#2809
|
||||
<https://github.com/aio-libs/aiohttp/pull/2809>`_)
|
||||
- The default ``app`` in the request returned by ``test_utils.make_mocked_request`` can
|
||||
now have objects assigned to it and retrieved using the ``[]`` operator. (`#3174
|
||||
<https://github.com/aio-libs/aiohttp/pull/3174>`_)
|
||||
- Make ``request.url`` accessible when transport is closed. (`#3177
|
||||
<https://github.com/aio-libs/aiohttp/pull/3177>`_)
|
||||
- Add ``zlib_executor_size`` argument to ``Response`` constructor to allow compression
|
||||
to run in a background executor to avoid blocking the main thread and potentially
|
||||
triggering health check failures. (`#3205
|
||||
<https://github.com/aio-libs/aiohttp/pull/3205>`_)
|
||||
- Enable users to set ``ClientTimeout`` in ``aiohttp.request`` (`#3213
|
||||
<https://github.com/aio-libs/aiohttp/pull/3213>`_)
|
||||
- Don't raise a warning if ``NETRC`` environment variable is not set and ``~/.netrc``
|
||||
file doesn't exist. (`#3267 <https://github.com/aio-libs/aiohttp/pull/3267>`_)
|
||||
- Add default logging handler to web.run_app If the ``Application.debug``` flag is set
|
||||
and the default logger ``aiohttp.access`` is used, access logs will now be output
|
||||
using a *stderr* ``StreamHandler`` if no handlers are attached. Furthermore, if the
|
||||
default logger has no log level set, the log level will be set to ``DEBUG``. (`#3324
|
||||
<https://github.com/aio-libs/aiohttp/pull/3324>`_)
|
||||
- Add method argument to ``session.ws_connect()``. Sometimes server API requires a
|
||||
different HTTP method for WebSocket connection establishment. For example, ``Docker
|
||||
exec`` needs POST. (`#3378 <https://github.com/aio-libs/aiohttp/pull/3378>`_)
|
||||
- Create a task per request handling. (`#3406
|
||||
<https://github.com/aio-libs/aiohttp/pull/3406>`_)
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Enable passing ``access_log_class`` via ``handler_args`` (`#3158
|
||||
<https://github.com/aio-libs/aiohttp/pull/3158>`_)
|
||||
- Return empty bytes with end-of-chunk marker in empty stream reader. (`#3186
|
||||
<https://github.com/aio-libs/aiohttp/pull/3186>`_)
|
||||
- Accept ``CIMultiDictProxy`` instances for ``headers`` argument in ``web.Response``
|
||||
constructor. (`#3207 <https://github.com/aio-libs/aiohttp/pull/3207>`_)
|
||||
- Don't uppercase HTTP method in parser (`#3233
|
||||
<https://github.com/aio-libs/aiohttp/pull/3233>`_)
|
||||
- Make method match regexp RFC-7230 compliant (`#3235
|
||||
<https://github.com/aio-libs/aiohttp/pull/3235>`_)
|
||||
- Add ``app.pre_frozen`` state to properly handle startup signals in
|
||||
sub-applications. (`#3237 <https://github.com/aio-libs/aiohttp/pull/3237>`_)
|
||||
- Enhanced parsing and validation of helpers.BasicAuth.decode. (`#3239
|
||||
<https://github.com/aio-libs/aiohttp/pull/3239>`_)
|
||||
- Change imports from collections module in preparation for 3.8. (`#3258
|
||||
<https://github.com/aio-libs/aiohttp/pull/3258>`_)
|
||||
- Ensure Host header is added first to ClientRequest to better replicate browser (`#3265
|
||||
<https://github.com/aio-libs/aiohttp/pull/3265>`_)
|
||||
- Fix forward compatibility with Python 3.8: importing ABCs directly from the
|
||||
collections module will not be supported anymore. (`#3273
|
||||
<https://github.com/aio-libs/aiohttp/pull/3273>`_)
|
||||
- Keep the query string by ``normalize_path_middleware``. (`#3278
|
||||
<https://github.com/aio-libs/aiohttp/pull/3278>`_)
|
||||
- Fix missing parameter ``raise_for_status`` for aiohttp.request() (`#3290
|
||||
<https://github.com/aio-libs/aiohttp/pull/3290>`_)
|
||||
- Bracket IPv6 addresses in the HOST header (`#3304
|
||||
<https://github.com/aio-libs/aiohttp/pull/3304>`_)
|
||||
- Fix default message for server ping and pong frames. (`#3308
|
||||
<https://github.com/aio-libs/aiohttp/pull/3308>`_)
|
||||
- Fix tests/test_connector.py typo and tests/autobahn/server.py duplicate loop
|
||||
def. (`#3337 <https://github.com/aio-libs/aiohttp/pull/3337>`_)
|
||||
- Fix false-negative indicator end_of_HTTP_chunk in StreamReader.readchunk function
|
||||
(`#3361 <https://github.com/aio-libs/aiohttp/pull/3361>`_)
|
||||
- Release HTTP response before raising status exception (`#3364
|
||||
<https://github.com/aio-libs/aiohttp/pull/3364>`_)
|
||||
- Fix task cancellation when ``sendfile()`` syscall is used by static file
|
||||
handling. (`#3383 <https://github.com/aio-libs/aiohttp/pull/3383>`_)
|
||||
- Fix stack trace for ``asyncio.TimeoutError`` which was not logged, when it is caught
|
||||
in the handler. (`#3414 <https://github.com/aio-libs/aiohttp/pull/3414>`_)
|
||||
|
||||
|
||||
Improved Documentation
|
||||
----------------------
|
||||
|
||||
- Improve documentation of ``Application.make_handler`` parameters. (`#3152
|
||||
<https://github.com/aio-libs/aiohttp/pull/3152>`_)
|
||||
- Fix BaseRequest.raw_headers doc. (`#3215
|
||||
<https://github.com/aio-libs/aiohttp/pull/3215>`_)
|
||||
- Fix typo in TypeError exception reason in ``web.Application._handle`` (`#3229
|
||||
<https://github.com/aio-libs/aiohttp/pull/3229>`_)
|
||||
- Make server access log format placeholder %b documentation reflect
|
||||
behavior and docstring. (`#3307 <https://github.com/aio-libs/aiohttp/pull/3307>`_)
|
||||
|
||||
|
||||
Deprecations and Removals
|
||||
-------------------------
|
||||
|
||||
- Deprecate modification of ``session.requote_redirect_url`` (`#2278
|
||||
<https://github.com/aio-libs/aiohttp/pull/2278>`_)
|
||||
- Deprecate ``stream.unread_data()`` (`#3260
|
||||
<https://github.com/aio-libs/aiohttp/pull/3260>`_)
|
||||
- Deprecated use of boolean in ``resp.enable_compression()`` (`#3318
|
||||
<https://github.com/aio-libs/aiohttp/pull/3318>`_)
|
||||
- Encourage creation of aiohttp public objects inside a coroutine (`#3331
|
||||
<https://github.com/aio-libs/aiohttp/pull/3331>`_)
|
||||
- Drop dead ``Connection.detach()`` and ``Connection.writer``. Both methods were broken
|
||||
for more than 2 years. (`#3358 <https://github.com/aio-libs/aiohttp/pull/3358>`_)
|
||||
- Deprecate ``app.loop``, ``request.loop``, ``client.loop`` and ``connector.loop``
|
||||
properties. (`#3374 <https://github.com/aio-libs/aiohttp/pull/3374>`_)
|
||||
- Deprecate explicit debug argument. Use asyncio debug mode instead. (`#3381
|
||||
<https://github.com/aio-libs/aiohttp/pull/3381>`_)
|
||||
- Deprecate body parameter in HTTPException (and derived classes) constructor. (`#3385
|
||||
<https://github.com/aio-libs/aiohttp/pull/3385>`_)
|
||||
- Deprecate bare connector close, use ``async with connector:`` and ``await
|
||||
connector.close()`` instead. (`#3417
|
||||
<https://github.com/aio-libs/aiohttp/pull/3417>`_)
|
||||
- Deprecate obsolete ``read_timeout`` and ``conn_timeout`` in ``ClientSession``
|
||||
constructor. (`#3438 <https://github.com/aio-libs/aiohttp/pull/3438>`_)
|
||||
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
- #3341, #3351
|
||||
|
@ -1,135 +0,0 @@
|
||||
aiohttp-3.7.4.post0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
aiohttp-3.7.4.post0.dist-info/LICENSE.txt,sha256=lmJ77QrQjpsu-p9OBOgIN80FUOdpSg_sM7HaslUCgqs,11321
|
||||
aiohttp-3.7.4.post0.dist-info/METADATA,sha256=ZF35_2WGQmQSkWbZ9iHwYLbq61rWAzpVTk0FNlVNy84,38836
|
||||
aiohttp-3.7.4.post0.dist-info/RECORD,,
|
||||
aiohttp-3.7.4.post0.dist-info/WHEEL,sha256=CdtkbqNu7DBs9FjP8gJdY-3OlUWCYZ9daXyZrkB77RQ,111
|
||||
aiohttp-3.7.4.post0.dist-info/top_level.txt,sha256=iv-JIaacmTl-hSho3QmphcKnbRRYx1st47yjz_178Ro,8
|
||||
aiohttp/.hash/_cparser.pxd.hash,sha256=FL_-kRTf28EWLc1Y_LH1gBAITrbK5XUY0NJS4umU9c4,121
|
||||
aiohttp/.hash/_find_header.pxd.hash,sha256=_mbpD6vM-CVCKq3ulUvsOAz5Wdo88wrDzfpOsMQaMNA,125
|
||||
aiohttp/.hash/_frozenlist.pyx.hash,sha256=4VdSipvJDSaEmEEp05VjHxyaYx47L1m0nWnBHUftJBE,124
|
||||
aiohttp/.hash/_helpers.pyi.hash,sha256=Ew4BZDc2LqFwszgZZUHHrJvw5P8HBhJ700n1Ntg52hE,121
|
||||
aiohttp/.hash/_helpers.pyx.hash,sha256=5JQ6BlMBE4HnRaCGdkK9_wpL3ZSWpU1gyLYva0Wwx2c,121
|
||||
aiohttp/.hash/_http_parser.pyx.hash,sha256=yOaN1DvAXVE9aza6tMfm1eXhM8vwi8-4nVi0JA9YyXk,125
|
||||
aiohttp/.hash/_http_writer.pyx.hash,sha256=FcO55KvyCdZtJWSJO8EDy9zac5UpTdVS7Rb2MUVK_Cg,125
|
||||
aiohttp/.hash/_websocket.pyx.hash,sha256=M97f-Yti-4vnE4GNTD1s_DzKs-fG_ww3jle6EUvixnE,123
|
||||
aiohttp/.hash/frozenlist.pyi.hash,sha256=8pvDf3sm8KliTEOQESLQw1c-z2_Gtq0MucWoF3BKIWQ,123
|
||||
aiohttp/.hash/hdrs.py.hash,sha256=HIFr8dmUhg4XvuL31_KhQqbwjjDVWe3L4tmXtLiLiXk,116
|
||||
aiohttp/.hash/signals.pyi.hash,sha256=kutOtueKKfYBxDcvGchwFYjaBktzozP19ldFV5uYx10,120
|
||||
aiohttp/__init__.py,sha256=Eq4dXyV5iy5R94eim9JN1lZeH6uTrSwQfKtUg9EiZ5g,6940
|
||||
aiohttp/__pycache__/__init__.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/abc.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/base_protocol.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/client.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/client_exceptions.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/client_proto.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/client_reqrep.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/client_ws.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/connector.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/cookiejar.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/formdata.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/frozenlist.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/hdrs.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/helpers.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/http.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/http_exceptions.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/http_parser.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/http_websocket.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/http_writer.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/locks.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/log.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/multipart.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/payload.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/payload_streamer.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/pytest_plugin.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/resolver.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/signals.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/streams.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/tcp_helpers.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/test_utils.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/tracing.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/typedefs.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_app.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_exceptions.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_fileresponse.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_log.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_middlewares.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_protocol.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_request.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_response.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_routedef.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_runner.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_server.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_urldispatcher.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/web_ws.cpython-38.pyc,,
|
||||
aiohttp/__pycache__/worker.cpython-38.pyc,,
|
||||
aiohttp/_cparser.pxd,sha256=tgw30SL6kQSczzGMlMhx2Cuhf_O8P8ZPimVCb85xILc,3959
|
||||
aiohttp/_find_header.c,sha256=s8Urnxv8CDd2NuKCEzCsLWy4NbVFXfLMNlg-s2bCg3A,187570
|
||||
aiohttp/_find_header.h,sha256=5oOgQ85nF6V7rpU8NhyE5vyGkTo1Cgf1GIYrtxSTzQI,170
|
||||
aiohttp/_find_header.pxd,sha256=0GfwFCPN2zxEKTO1_MA5sYq2UfzsG8kcV3aTqvwlz3g,68
|
||||
aiohttp/_frozenlist.c,sha256=4m7L0I0wWumfGoXIMaYYeKxf9zG3ssoIxB-meEQDgh4,294193
|
||||
aiohttp/_frozenlist.cpython-38-x86_64-linux-gnu.so,sha256=StY8YfqC4r7-GAYfmE42n8TIB37bRO1CGYqBmRlv9_U,499488
|
||||
aiohttp/_frozenlist.pyx,sha256=BD8LcERExsWdo4qzuuQ84f-L_pHVzkUQO0lEAOe3Fog,2605
|
||||
aiohttp/_headers.pxi,sha256=n701k28dVPjwRnx5j6LpJhLTfj7dqu2vJt7f0O60Oyg,2007
|
||||
aiohttp/_helpers.c,sha256=meXX95gKMrawWPUl-q3Sdyf4VxSdsH-8lbCON6-ATOo,211989
|
||||
aiohttp/_helpers.cpython-38-x86_64-linux-gnu.so,sha256=Wx3OxSJ_OZwQg7bzAsmlb-d48U0pVA3qvEJWrpcjXAE,366376
|
||||
aiohttp/_helpers.pyi,sha256=ZoKiJSS51PxELhI2cmIr5737YjjZcJt7FbIRO3ym1Ss,202
|
||||
aiohttp/_helpers.pyx,sha256=XeLbNft5X_4ifi8QB8i6TyrRuayijMSO3IDHeSA89uM,1049
|
||||
aiohttp/_http_parser.c,sha256=O51TiHCn0eXUeiBWCyl7E7y-JjZLgeLRj10D18HudSU,1011524
|
||||
aiohttp/_http_parser.cpython-38-x86_64-linux-gnu.so,sha256=rUHaduTj24YA4-xsF891ki_lcX2_vrRYKIuxD4wFz_Y,2991944
|
||||
aiohttp/_http_parser.pyx,sha256=8GiPsugeqSvwoXgiJg2VkaMJeRAdoSpLhzET_EWftfo,29022
|
||||
aiohttp/_http_writer.c,sha256=QxJ09pt3guD8aVsQ7LaAxX4vxBUhJ7RhxeVMVWu8BUk,213020
|
||||
aiohttp/_http_writer.cpython-38-x86_64-linux-gnu.so,sha256=l6GWtDAH1YAAGldp5OEu8ue_chGxwwTUORauUQRTO3Q,320160
|
||||
aiohttp/_http_writer.pyx,sha256=Tnt_e6pcZZVOhaW3yNt3hqDsNJgIGwqUIPeSqAMIYoE,4200
|
||||
aiohttp/_websocket.c,sha256=F5V1i__yewPzFcgYKmcTWk_CjptCZUYlhQesX14u4ec,137427
|
||||
aiohttp/_websocket.cpython-38-x86_64-linux-gnu.so,sha256=rEfY7yjfrF49yLfByiccoMx2ellzngkR-J-GrN6ziak,121616
|
||||
aiohttp/_websocket.pyx,sha256=1XuOSNDCbyDrzF5uMA2isqausSs8l2jWTLDlNDLM9Io,1561
|
||||
aiohttp/abc.py,sha256=tbhrXunYB8-Jmq3-e6zbYtXaCR7Vfb8eRo4Ifk-juLQ,5247
|
||||
aiohttp/base_protocol.py,sha256=eNgmzKP-Lbh5vxSmShDBKTJ0JSAVpcrAZa-EKqmCTKA,2701
|
||||
aiohttp/client.py,sha256=9firS0XBuNEGshPE81CsmLxnkfkZoJsRUV6amoGZ1FA,43916
|
||||
aiohttp/client_exceptions.py,sha256=fW2rrDEcWitwpXhQIFtViuC2JEHDx1oIXXQsj6YGd5I,8529
|
||||
aiohttp/client_proto.py,sha256=Iek_ZuTr_2xFoKt30zveOBh1xYt6iXE7XZVwUPiCXTs,8163
|
||||
aiohttp/client_reqrep.py,sha256=okBWp3TC_leAiD0-kEtS8H0v8fZPTSVzyDXDwusSZrs,36439
|
||||
aiohttp/client_ws.py,sha256=sxkvG5Vw37Mr6V_8w9WZ0ulo_jKL_tRtSK1l9bRIPlY,10287
|
||||
aiohttp/connector.py,sha256=9A8wGKGoOXZCzRUBnw2dwT457aWXAxFSn4fPaEK5Lh8,42968
|
||||
aiohttp/cookiejar.py,sha256=SbX_n44bl69PrGIPOmj2imHwynzBlUbxrZUe16T3K-4,12163
|
||||
aiohttp/formdata.py,sha256=UJ4DgqX4Jk-LZpnKOeOCUewL5264eO4DyHPKOk5vgos,6080
|
||||
aiohttp/frozenlist.py,sha256=nFqoDVmyxfStqiY_FxcrME8GpvhRDXf3mh-BGCVxhnQ,1718
|
||||
aiohttp/frozenlist.pyi,sha256=bRNKoI2j1roPdtgfx_nseDanvBqZsZUNHDqmXtfjlRo,1434
|
||||
aiohttp/hdrs.py,sha256=WsjDJYADYEyJk7-oNXNhA2M3MwtyLkhJAklyzLtclfU,3446
|
||||
aiohttp/helpers.py,sha256=iAQNQGGoqN8ovgdMfHC2rggYSbOaSTToiUJqg1LJrzw,22918
|
||||
aiohttp/http.py,sha256=CHdBKhli7yITl_VfpBDdjgF6nT_cCWPRXov8UzBeo2k,1824
|
||||
aiohttp/http_exceptions.py,sha256=eACQt7azwNbUi8aqXB5J2tIcc_CB4_4y4mLM9SZd4tM,2586
|
||||
aiohttp/http_parser.py,sha256=wNwFkglxrBFRUHWN4AUbbUuFckMgwy5k_cX6zR4CEiE,30781
|
||||
aiohttp/http_websocket.py,sha256=k_mvpvQUsliv7F7ZlXmz01hzBnoysSHAr4KyZDC-O78,25098
|
||||
aiohttp/http_writer.py,sha256=ofDAEH8IJry013XsbrrfNiV82Fr7Gs3d7syduMx1vYU,5341
|
||||
aiohttp/locks.py,sha256=j5VO5HkQY_N5DRJAezRJXavE9y2N9Y9Sq3oWu8ftAOA,1220
|
||||
aiohttp/log.py,sha256=BbNKx9e3VMIm0xYjZI0IcBBoS7wjdeIeSaiJE7-qK2g,325
|
||||
aiohttp/multipart.py,sha256=ZrChyWL811TpsxcL0rcmx3VIJjzj-cINkrjgk9GhBt4,32251
|
||||
aiohttp/payload.py,sha256=jvvuncmzh4RuHUR05srhzSMXCUCxclUPgFnEDm1vl40,13333
|
||||
aiohttp/payload_streamer.py,sha256=qW8jvfRJYYnpRro74vQbrTXFd_5JZsHyVGi4-bulOwo,2102
|
||||
aiohttp/py.typed,sha256=sow9soTwP9T_gEAQSVh7Gb8855h04Nwmhs2We-JRgZM,7
|
||||
aiohttp/pytest_plugin.py,sha256=0z5FACR9mUEZp72jakz_jfDuy-dsmv2HISIY0EB01K4,11009
|
||||
aiohttp/resolver.py,sha256=VmUmtY_mjuRQCy4OrByS74bgooPzUeHrO_pEUPaMXc4,4608
|
||||
aiohttp/signals.py,sha256=YSWNpNheFirmccC7vWMr8J1TDWBN_P0m3Ch_FiZ3HVA,852
|
||||
aiohttp/signals.pyi,sha256=SLTfUPdx1-g4VSTqCnBXyhSCl0-KQ-Z0mCsEsIvBfV4,319
|
||||
aiohttp/streams.py,sha256=zmCpGESe27u2b-JmyOem_FThgOn9Iq_TpwIHJMjJfmY,20530
|
||||
aiohttp/tcp_helpers.py,sha256=l3XD9wWiuMawXCMdqiNSRHIz0iVtMKi7lwqXnHvyK3k,962
|
||||
aiohttp/test_utils.py,sha256=NG7YcgAE_E7LOlcaNQ8JhgOadhg5bg174-tukUQLDMA,20253
|
||||
aiohttp/tracing.py,sha256=-G2cfF6LNFqY8nCbnHJ8NkLdnJV1WSjRtKOnJ1gz_lw,14363
|
||||
aiohttp/typedefs.py,sha256=PUsJ7Y-f8bRqyDOdqd681VvaNi_LETRJ5L7rCPfPRN4,1374
|
||||
aiohttp/web.py,sha256=WNOEIih5I3g_0BSIJkrKvWuTQ8qZVKoGkjg-v6wcSms,17881
|
||||
aiohttp/web_app.py,sha256=lDfoKwy1y8_pnMkrqcfHiMnhWwH_4FCkCuSMLT4huA0,17053
|
||||
aiohttp/web_exceptions.py,sha256=-ZqN_zv7EiaLDS0Na5IpgXmiiNv9QZm8sebYoW3zeYc,10106
|
||||
aiohttp/web_fileresponse.py,sha256=hpzBp-L-VuVrlsSjoTvGRWpgWZrLODkaoQlGCNQrpag,9025
|
||||
aiohttp/web_log.py,sha256=hDwnH_USBiNqC1-XggEorcuVQUuKhEezCfjPY1wkac4,7498
|
||||
aiohttp/web_middlewares.py,sha256=QYD2PiB_AMkIQWpBEiQRP0UM_vBmZ7sAM9Qes3SoXH0,4193
|
||||
aiohttp/web_protocol.py,sha256=2nHNxxg7Mf8ZP88SFPxnBNGL8zmPhQpjtZ68VT0PeIo,23251
|
||||
aiohttp/web_request.py,sha256=fY-GmGuV3oayr5r0Szd1VsHraN8T-uW2wCij6iFfZOg,26454
|
||||
aiohttp/web_response.py,sha256=Xb9PfJhFHzu9Od4qHRmN9O6z5ojBRuL0ETqmR6S_8Ek,26202
|
||||
aiohttp/web_routedef.py,sha256=PIHf5KvaOnG30pg1J8IhZewoHLOEMd5emWBZBBWS9yE,6109
|
||||
aiohttp/web_runner.py,sha256=4AM4y6lgmCxBU1AHt1Sdd7IpB4pm9dWqSdapNfgzqG8,11194
|
||||
aiohttp/web_server.py,sha256=Zp-StXkTSDZ8Lyg2joDdRD05QRu9oh8LET3AKfx9D2I,2058
|
||||
aiohttp/web_urldispatcher.py,sha256=M930z-C2umyGyU4KmGVsabJNL5ZpT6Aj5tpSf6mSSPc,39532
|
||||
aiohttp/web_ws.py,sha256=f912oImpu973icUK0QUjeXIxa57R837gdkUUn1ZnSpQ,16783
|
||||
aiohttp/worker.py,sha256=T1CvPYNP4rqsdpyz3dNRuqNF5bzrH3WaEdDMLDsfLOc,8022
|
@ -1,5 +0,0 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.36.2)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp38-cp38-manylinux2014_x86_64
|
||||
|
@ -1 +0,0 @@
|
||||
aiohttp
|
@ -1 +0,0 @@
|
||||
b60c37d122fa91049ccf318c94c871d82ba17ff3bc3fc64f8a65426fce7120b7 /home/runner/work/aiohttp/aiohttp/aiohttp/_cparser.pxd
|
@ -1 +0,0 @@
|
||||
d067f01423cddb3c442933b5fcc039b18ab651fcec1bc91c577693aafc25cf78 /home/runner/work/aiohttp/aiohttp/aiohttp/_find_header.pxd
|
@ -1 +0,0 @@
|
||||
043f0b704444c6c59da38ab3bae43ce1ff8bfe91d5ce45103b494400e7b71688 /home/runner/work/aiohttp/aiohttp/aiohttp/_frozenlist.pyx
|
@ -1 +0,0 @@
|
||||
6682a22524b9d4fc442e123672622be7bdfb6238d9709b7b15b2113b7ca6d52b /home/runner/work/aiohttp/aiohttp/aiohttp/_helpers.pyi
|
@ -1 +0,0 @@
|
||||
5de2db35fb795ffe227e2f1007c8ba4f2ad1b9aca28cc48edc80c779203cf6e3 /home/runner/work/aiohttp/aiohttp/aiohttp/_helpers.pyx
|
@ -1 +0,0 @@
|
||||
f0688fb2e81ea92bf0a17822260d9591a30979101da12a4b873113fc459fb5fa /home/runner/work/aiohttp/aiohttp/aiohttp/_http_parser.pyx
|
@ -1 +0,0 @@
|
||||
4e7b7f7baa5c65954e85a5b7c8db7786a0ec3498081b0a9420f792a803086281 /home/runner/work/aiohttp/aiohttp/aiohttp/_http_writer.pyx
|
@ -1 +0,0 @@
|
||||
d57b8e48d0c26f20ebcc5e6e300da2b2a6aeb12b3c9768d64cb0e53432ccf48a /home/runner/work/aiohttp/aiohttp/aiohttp/_websocket.pyx
|
@ -1 +0,0 @@
|
||||
6d134aa08da3d6ba0f76d81fc7f9ec7836a7bc1a99b1950d1c3aa65ed7e3951a /home/runner/work/aiohttp/aiohttp/aiohttp/frozenlist.pyi
|
@ -1 +0,0 @@
|
||||
5ac8c3258003604c8993bfa8357361036337330b722e4849024972ccbb5c95f5 /home/runner/work/aiohttp/aiohttp/aiohttp/hdrs.py
|
@ -1 +0,0 @@
|
||||
48b4df50f771d7e8385524ea0a7057ca1482974f8a43e674982b04b08bc17d5e /home/runner/work/aiohttp/aiohttp/aiohttp/signals.pyi
|
@ -1,217 +0,0 @@
|
||||
__version__ = "3.7.4.post0"
|
||||
|
||||
from typing import Tuple
|
||||
|
||||
from . import hdrs as hdrs
|
||||
from .client import (
|
||||
BaseConnector as BaseConnector,
|
||||
ClientConnectionError as ClientConnectionError,
|
||||
ClientConnectorCertificateError as ClientConnectorCertificateError,
|
||||
ClientConnectorError as ClientConnectorError,
|
||||
ClientConnectorSSLError as ClientConnectorSSLError,
|
||||
ClientError as ClientError,
|
||||
ClientHttpProxyError as ClientHttpProxyError,
|
||||
ClientOSError as ClientOSError,
|
||||
ClientPayloadError as ClientPayloadError,
|
||||
ClientProxyConnectionError as ClientProxyConnectionError,
|
||||
ClientRequest as ClientRequest,
|
||||
ClientResponse as ClientResponse,
|
||||
ClientResponseError as ClientResponseError,
|
||||
ClientSession as ClientSession,
|
||||
ClientSSLError as ClientSSLError,
|
||||
ClientTimeout as ClientTimeout,
|
||||
ClientWebSocketResponse as ClientWebSocketResponse,
|
||||
ContentTypeError as ContentTypeError,
|
||||
Fingerprint as Fingerprint,
|
||||
InvalidURL as InvalidURL,
|
||||
NamedPipeConnector as NamedPipeConnector,
|
||||
RequestInfo as RequestInfo,
|
||||
ServerConnectionError as ServerConnectionError,
|
||||
ServerDisconnectedError as ServerDisconnectedError,
|
||||
ServerFingerprintMismatch as ServerFingerprintMismatch,
|
||||
ServerTimeoutError as ServerTimeoutError,
|
||||
TCPConnector as TCPConnector,
|
||||
TooManyRedirects as TooManyRedirects,
|
||||
UnixConnector as UnixConnector,
|
||||
WSServerHandshakeError as WSServerHandshakeError,
|
||||
request as request,
|
||||
)
|
||||
from .cookiejar import CookieJar as CookieJar, DummyCookieJar as DummyCookieJar
|
||||
from .formdata import FormData as FormData
|
||||
from .helpers import BasicAuth as BasicAuth, ChainMapProxy as ChainMapProxy
|
||||
from .http import (
|
||||
HttpVersion as HttpVersion,
|
||||
HttpVersion10 as HttpVersion10,
|
||||
HttpVersion11 as HttpVersion11,
|
||||
WebSocketError as WebSocketError,
|
||||
WSCloseCode as WSCloseCode,
|
||||
WSMessage as WSMessage,
|
||||
WSMsgType as WSMsgType,
|
||||
)
|
||||
from .multipart import (
|
||||
BadContentDispositionHeader as BadContentDispositionHeader,
|
||||
BadContentDispositionParam as BadContentDispositionParam,
|
||||
BodyPartReader as BodyPartReader,
|
||||
MultipartReader as MultipartReader,
|
||||
MultipartWriter as MultipartWriter,
|
||||
content_disposition_filename as content_disposition_filename,
|
||||
parse_content_disposition as parse_content_disposition,
|
||||
)
|
||||
from .payload import (
|
||||
PAYLOAD_REGISTRY as PAYLOAD_REGISTRY,
|
||||
AsyncIterablePayload as AsyncIterablePayload,
|
||||
BufferedReaderPayload as BufferedReaderPayload,
|
||||
BytesIOPayload as BytesIOPayload,
|
||||
BytesPayload as BytesPayload,
|
||||
IOBasePayload as IOBasePayload,
|
||||
JsonPayload as JsonPayload,
|
||||
Payload as Payload,
|
||||
StringIOPayload as StringIOPayload,
|
||||
StringPayload as StringPayload,
|
||||
TextIOPayload as TextIOPayload,
|
||||
get_payload as get_payload,
|
||||
payload_type as payload_type,
|
||||
)
|
||||
from .payload_streamer import streamer as streamer
|
||||
from .resolver import (
|
||||
AsyncResolver as AsyncResolver,
|
||||
DefaultResolver as DefaultResolver,
|
||||
ThreadedResolver as ThreadedResolver,
|
||||
)
|
||||
from .signals import Signal as Signal
|
||||
from .streams import (
|
||||
EMPTY_PAYLOAD as EMPTY_PAYLOAD,
|
||||
DataQueue as DataQueue,
|
||||
EofStream as EofStream,
|
||||
FlowControlDataQueue as FlowControlDataQueue,
|
||||
StreamReader as StreamReader,
|
||||
)
|
||||
from .tracing import (
|
||||
TraceConfig as TraceConfig,
|
||||
TraceConnectionCreateEndParams as TraceConnectionCreateEndParams,
|
||||
TraceConnectionCreateStartParams as TraceConnectionCreateStartParams,
|
||||
TraceConnectionQueuedEndParams as TraceConnectionQueuedEndParams,
|
||||
TraceConnectionQueuedStartParams as TraceConnectionQueuedStartParams,
|
||||
TraceConnectionReuseconnParams as TraceConnectionReuseconnParams,
|
||||
TraceDnsCacheHitParams as TraceDnsCacheHitParams,
|
||||
TraceDnsCacheMissParams as TraceDnsCacheMissParams,
|
||||
TraceDnsResolveHostEndParams as TraceDnsResolveHostEndParams,
|
||||
TraceDnsResolveHostStartParams as TraceDnsResolveHostStartParams,
|
||||
TraceRequestChunkSentParams as TraceRequestChunkSentParams,
|
||||
TraceRequestEndParams as TraceRequestEndParams,
|
||||
TraceRequestExceptionParams as TraceRequestExceptionParams,
|
||||
TraceRequestRedirectParams as TraceRequestRedirectParams,
|
||||
TraceRequestStartParams as TraceRequestStartParams,
|
||||
TraceResponseChunkReceivedParams as TraceResponseChunkReceivedParams,
|
||||
)
|
||||
|
||||
__all__: Tuple[str, ...] = (
|
||||
"hdrs",
|
||||
# client
|
||||
"BaseConnector",
|
||||
"ClientConnectionError",
|
||||
"ClientConnectorCertificateError",
|
||||
"ClientConnectorError",
|
||||
"ClientConnectorSSLError",
|
||||
"ClientError",
|
||||
"ClientHttpProxyError",
|
||||
"ClientOSError",
|
||||
"ClientPayloadError",
|
||||
"ClientProxyConnectionError",
|
||||
"ClientResponse",
|
||||
"ClientRequest",
|
||||
"ClientResponseError",
|
||||
"ClientSSLError",
|
||||
"ClientSession",
|
||||
"ClientTimeout",
|
||||
"ClientWebSocketResponse",
|
||||
"ContentTypeError",
|
||||
"Fingerprint",
|
||||
"InvalidURL",
|
||||
"RequestInfo",
|
||||
"ServerConnectionError",
|
||||
"ServerDisconnectedError",
|
||||
"ServerFingerprintMismatch",
|
||||
"ServerTimeoutError",
|
||||
"TCPConnector",
|
||||
"TooManyRedirects",
|
||||
"UnixConnector",
|
||||
"NamedPipeConnector",
|
||||
"WSServerHandshakeError",
|
||||
"request",
|
||||
# cookiejar
|
||||
"CookieJar",
|
||||
"DummyCookieJar",
|
||||
# formdata
|
||||
"FormData",
|
||||
# helpers
|
||||
"BasicAuth",
|
||||
"ChainMapProxy",
|
||||
# http
|
||||
"HttpVersion",
|
||||
"HttpVersion10",
|
||||
"HttpVersion11",
|
||||
"WSMsgType",
|
||||
"WSCloseCode",
|
||||
"WSMessage",
|
||||
"WebSocketError",
|
||||
# multipart
|
||||
"BadContentDispositionHeader",
|
||||
"BadContentDispositionParam",
|
||||
"BodyPartReader",
|
||||
"MultipartReader",
|
||||
"MultipartWriter",
|
||||
"content_disposition_filename",
|
||||
"parse_content_disposition",
|
||||
# payload
|
||||
"AsyncIterablePayload",
|
||||
"BufferedReaderPayload",
|
||||
"BytesIOPayload",
|
||||
"BytesPayload",
|
||||
"IOBasePayload",
|
||||
"JsonPayload",
|
||||
"PAYLOAD_REGISTRY",
|
||||
"Payload",
|
||||
"StringIOPayload",
|
||||
"StringPayload",
|
||||
"TextIOPayload",
|
||||
"get_payload",
|
||||
"payload_type",
|
||||
# payload_streamer
|
||||
"streamer",
|
||||
# resolver
|
||||
"AsyncResolver",
|
||||
"DefaultResolver",
|
||||
"ThreadedResolver",
|
||||
# signals
|
||||
"Signal",
|
||||
"DataQueue",
|
||||
"EMPTY_PAYLOAD",
|
||||
"EofStream",
|
||||
"FlowControlDataQueue",
|
||||
"StreamReader",
|
||||
# tracing
|
||||
"TraceConfig",
|
||||
"TraceConnectionCreateEndParams",
|
||||
"TraceConnectionCreateStartParams",
|
||||
"TraceConnectionQueuedEndParams",
|
||||
"TraceConnectionQueuedStartParams",
|
||||
"TraceConnectionReuseconnParams",
|
||||
"TraceDnsCacheHitParams",
|
||||
"TraceDnsCacheMissParams",
|
||||
"TraceDnsResolveHostEndParams",
|
||||
"TraceDnsResolveHostStartParams",
|
||||
"TraceRequestChunkSentParams",
|
||||
"TraceRequestEndParams",
|
||||
"TraceRequestExceptionParams",
|
||||
"TraceRequestRedirectParams",
|
||||
"TraceRequestStartParams",
|
||||
"TraceResponseChunkReceivedParams",
|
||||
)
|
||||
|
||||
try:
|
||||
from .worker import GunicornUVLoopWebWorker, GunicornWebWorker
|
||||
|
||||
__all__ += ("GunicornWebWorker", "GunicornUVLoopWebWorker")
|
||||
except ImportError: # pragma: no cover
|
||||
pass
|
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.
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.
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.
Binary file not shown.
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…
x
Reference in New Issue
Block a user