zen
2 years ago
commit
528e382532
885 changed files with 133297 additions and 0 deletions
@ -0,0 +1,4 @@
|
||||
Client written in Svelte, |
||||
API written in Flask/Python |
||||
|
||||
feed me spoons |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,30 @@
|
||||
from flask import Flask, request |
||||
from datetime import date |
||||
import os |
||||
|
||||
app = Flask(__name__) |
||||
|
||||
ip_addresses = {"187.144.10.199":[date.today()],"187.144.103.54":[date.today()],"187.144.121.210":[date.today()],"187.144.34.230":[date.today()],"187.144.46.100":[date.today()],"187.144.62.186":[date.today()],"187.144.78.121":[date.today()],"201.175.204.74":[date.today()],"209.52.88.22":[date.today()],"24.69.148.186":[date.today()]} |
||||
|
||||
@app.route("/api") |
||||
def ip_tracker(): |
||||
if request.headers.getlist("X-Forwarded-For"): |
||||
ip = request.headers.getlist("X-Forwarded-For")[0] |
||||
else: |
||||
ip = request.remote_addr |
||||
|
||||
visits = ip_addresses.get(ip) |
||||
|
||||
if visits == None: |
||||
ip_addresses[ip] = [date.today()] |
||||
else: |
||||
today = date.today() |
||||
if today not in ip_addresses[ip]: |
||||
ip_addresses[ip].append(today) |
||||
|
||||
return { |
||||
"length": len(ip_addresses), |
||||
"data": ip_addresses, |
||||
"user": ip |
||||
} |
||||
|
@ -0,0 +1,12 @@
|
||||
html { |
||||
font-family: sans-serif; |
||||
} |
||||
|
||||
body { |
||||
margin: 40px auto; |
||||
max-width: 650px; |
||||
line-height: 1.6; |
||||
font-size: 18px; |
||||
color: #444; |
||||
padding: 0 10px; |
||||
} |
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html> |
||||
<html lang=""> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<title>Flask Boilerplate</title> |
||||
<link rel="stylesheet" href="{{ url_for('static', filename='demo.css') }}"> |
||||
</head> |
||||
<body> |
||||
<header>This server is running via the <tt>app.py</tt> |
||||
file in <tt>{{ wd }}</tt></header> |
||||
<main> |
||||
{% if name %} |
||||
<h1>Hello, {{ name }}!</h1> |
||||
<p>You provided me a name through the URL of this webpage.</p> |
||||
<p>Flask parsed it and passed it as a parameter to the |
||||
<tt>render_template</tt> function in <tt>flask_demo.py</tt>, |
||||
which is located in the directory where you installed Flask</p> |
||||
<p>It also imports the css as a file in the <tt>static/</tt> |
||||
directory. This is the standard used for images etc.</p> |
||||
<hr/> |
||||
<p>There's plenty to learn about Flask! Hopefully this gives you |
||||
some of the information you need to dive deeper</p> |
||||
{% else %} |
||||
<h1>Hello!</h1> |
||||
<p>This is a page served up by Flask. Try adding a / followed by |
||||
your first name in the URL, or click <a href="/beautiful%20human">here</a> |
||||
for a demonstration of URL parsing.</p> |
||||
{% endif %} |
||||
</main> |
||||
<footer><small>courtesy of Bare Metal Alchemist, March 2022</small></footer> |
||||
</body> |
||||
</html> |
@ -0,0 +1,241 @@
|
||||
<# |
||||
.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" |
@ -0,0 +1,76 @@
|
||||
# This file must be used with "source bin/activate" *from bash* |
||||
# you cannot run it directly |
||||
|
||||
deactivate () { |
||||
# reset old environment variables |
||||
if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then |
||||
PATH="${_OLD_VIRTUAL_PATH:-}" |
||||
export PATH |
||||
unset _OLD_VIRTUAL_PATH |
||||
fi |
||||
if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then |
||||
PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" |
||||
export PYTHONHOME |
||||
unset _OLD_VIRTUAL_PYTHONHOME |
||||
fi |
||||
|
||||
# This should detect bash and zsh, which have a hash command that must |
||||
# be called to get it to forget past commands. Without forgetting |
||||
# past commands the $PATH changes we made may not be respected |
||||
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then |
||||
hash -r |
||||
fi |
||||
|
||||
if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then |
||||
PS1="${_OLD_VIRTUAL_PS1:-}" |
||||
export PS1 |
||||
unset _OLD_VIRTUAL_PS1 |
||||
fi |
||||
|
||||
unset VIRTUAL_ENV |
||||
if [ ! "${1:-}" = "nondestructive" ] ; then |
||||
# Self destruct! |
||||
unset -f deactivate |
||||
fi |
||||
} |
||||
|
||||
# unset irrelevant variables |
||||
deactivate nondestructive |
||||
|
||||
VIRTUAL_ENV="/home/dctrl/greenspots/flask/venv" |
||||
export VIRTUAL_ENV |
||||
|
||||
_OLD_VIRTUAL_PATH="$PATH" |
||||
PATH="$VIRTUAL_ENV/bin:$PATH" |
||||
export PATH |
||||
|
||||
# unset PYTHONHOME if set |
||||
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) |
||||
# could use `if (set -u; : $PYTHONHOME) ;` in bash |
||||
if [ -n "${PYTHONHOME:-}" ] ; then |
||||
_OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" |
||||
unset PYTHONHOME |
||||
fi |
||||
|
||||
if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then |
||||
_OLD_VIRTUAL_PS1="${PS1:-}" |
||||
if [ "x(venv) " != x ] ; then |
||||
PS1="(venv) ${PS1:-}" |
||||
else |
||||
if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then |
||||
# special case for Aspen magic directories |
||||
# see 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 |
@ -0,0 +1,37 @@
|
||||
# This file must be used with "source bin/activate.csh" *from csh*. |
||||
# You cannot run it directly. |
||||
# Created by Davide Di Blasi <davidedb@gmail.com>. |
||||
# Ported to Python 3.3 venv by Andrew Svetlov <andrew.svetlov@gmail.com> |
||||
|
||||
alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' |
||||
|
||||
# Unset irrelevant variables. |
||||
deactivate nondestructive |
||||
|
||||
setenv VIRTUAL_ENV "/home/dctrl/greenspots/flask/venv" |
||||
|
||||
set _OLD_VIRTUAL_PATH="$PATH" |
||||
setenv PATH "$VIRTUAL_ENV/bin:$PATH" |
||||
|
||||
|
||||
set _OLD_VIRTUAL_PROMPT="$prompt" |
||||
|
||||
if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then |
||||
if ("venv" != "") then |
||||
set env_name = "venv" |
||||
else |
||||
if (`basename "VIRTUAL_ENV"` == "__") then |
||||
# special case for Aspen magic directories |
||||
# see 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 |
@ -0,0 +1,75 @@
|
||||
# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) |
||||
# you cannot run it directly |
||||
|
||||
function deactivate -d "Exit virtualenv and return to normal shell environment" |
||||
# reset old environment variables |
||||
if test -n "$_OLD_VIRTUAL_PATH" |
||||
set -gx PATH $_OLD_VIRTUAL_PATH |
||||
set -e _OLD_VIRTUAL_PATH |
||||
end |
||||
if test -n "$_OLD_VIRTUAL_PYTHONHOME" |
||||
set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME |
||||
set -e _OLD_VIRTUAL_PYTHONHOME |
||||
end |
||||
|
||||
if test -n "$_OLD_FISH_PROMPT_OVERRIDE" |
||||
functions -e fish_prompt |
||||
set -e _OLD_FISH_PROMPT_OVERRIDE |
||||
functions -c _old_fish_prompt fish_prompt |
||||
functions -e _old_fish_prompt |
||||
end |
||||
|
||||
set -e VIRTUAL_ENV |
||||
if test "$argv[1]" != "nondestructive" |
||||
# Self destruct! |
||||
functions -e deactivate |
||||
end |
||||
end |
||||
|
||||
# unset irrelevant variables |
||||
deactivate nondestructive |
||||
|
||||
set -gx VIRTUAL_ENV "/home/dctrl/greenspots/flask/venv" |
||||
|
||||
set -gx _OLD_VIRTUAL_PATH $PATH |
||||
set -gx PATH "$VIRTUAL_ENV/bin" $PATH |
||||
|
||||
# unset PYTHONHOME if set |
||||
if set -q PYTHONHOME |
||||
set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME |
||||
set -e PYTHONHOME |
||||
end |
||||
|
||||
if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" |
||||
# fish uses a function instead of an env var to generate the prompt. |
||||
|
||||
# save the current fish_prompt function as the function _old_fish_prompt |
||||
functions -c fish_prompt _old_fish_prompt |
||||
|
||||
# with the original prompt function renamed, we can override with our own. |
||||
function fish_prompt |
||||
# Save the return status of the last command |
||||
set -l old_status $status |
||||
|
||||
# Prompt override? |
||||
if test -n "(venv) " |
||||
printf "%s%s" "(venv) " (set_color normal) |
||||
else |
||||
# ...Otherwise, prepend env |
||||
set -l _checkbase (basename "$VIRTUAL_ENV") |
||||
if test $_checkbase = "__" |
||||
# special case for Aspen magic directories |
||||
# see 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 |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- coding: utf-8 -*- |
||||
import re |
||||
import sys |
||||
from setuptools.command.easy_install import main |
||||
if __name__ == '__main__': |
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) |
||||
sys.exit(main()) |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- coding: utf-8 -*- |
||||
import re |
||||
import sys |
||||
from setuptools.command.easy_install import main |
||||
if __name__ == '__main__': |
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) |
||||
sys.exit(main()) |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- coding: utf-8 -*- |
||||
import re |
||||
import sys |
||||
from flask.cli import main |
||||
if __name__ == '__main__': |
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) |
||||
sys.exit(main()) |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- coding: utf-8 -*- |
||||
import re |
||||
import sys |
||||
from gunicorn.app.wsgiapp import run |
||||
if __name__ == '__main__': |
||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) |
||||
sys.exit(run()) |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- 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()) |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- 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()) |
@ -0,0 +1,8 @@
|
||||
#!/home/dctrl/greenspots/flask/venv/bin/python |
||||
# -*- 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()) |
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
pip |
@ -0,0 +1,28 @@
|
||||
Copyright 2010 Pallets |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are |
||||
met: |
||||
|
||||
1. Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in the |
||||
documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its |
||||
contributors may be used to endorse or promote products derived from |
||||
this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,125 @@
|
||||
Metadata-Version: 2.1 |
||||
Name: Flask |
||||
Version: 2.0.3 |
||||
Summary: A simple framework for building complex web applications. |
||||
Home-page: https://palletsprojects.com/p/flask |
||||
Author: Armin Ronacher |
||||
Author-email: armin.ronacher@active-4.com |
||||
Maintainer: Pallets |
||||
Maintainer-email: contact@palletsprojects.com |
||||
License: BSD-3-Clause |
||||
Project-URL: Donate, https://palletsprojects.com/donate |
||||
Project-URL: Documentation, https://flask.palletsprojects.com/ |
||||
Project-URL: Changes, https://flask.palletsprojects.com/changes/ |
||||
Project-URL: Source Code, https://github.com/pallets/flask/ |
||||
Project-URL: Issue Tracker, https://github.com/pallets/flask/issues/ |
||||
Project-URL: Twitter, https://twitter.com/PalletsTeam |
||||
Project-URL: Chat, https://discord.gg/pallets |
||||
Platform: UNKNOWN |
||||
Classifier: Development Status :: 5 - Production/Stable |
||||
Classifier: Environment :: Web Environment |
||||
Classifier: Framework :: Flask |
||||
Classifier: Intended Audience :: Developers |
||||
Classifier: License :: OSI Approved :: BSD License |
||||
Classifier: Operating System :: OS Independent |
||||
Classifier: Programming Language :: Python |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application |
||||
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks |
||||
Requires-Python: >=3.6 |
||||
Description-Content-Type: text/x-rst |
||||
License-File: LICENSE.rst |
||||
Requires-Dist: Werkzeug (>=2.0) |
||||
Requires-Dist: Jinja2 (>=3.0) |
||||
Requires-Dist: itsdangerous (>=2.0) |
||||
Requires-Dist: click (>=7.1.2) |
||||
Provides-Extra: async |
||||
Requires-Dist: asgiref (>=3.2) ; extra == 'async' |
||||
Provides-Extra: dotenv |
||||
Requires-Dist: python-dotenv ; extra == 'dotenv' |
||||
|
||||
Flask |
||||
===== |
||||
|
||||
Flask is a lightweight `WSGI`_ web application framework. It is designed |
||||
to make getting started quick and easy, with the ability to scale up to |
||||
complex applications. It began as a simple wrapper around `Werkzeug`_ |
||||
and `Jinja`_ and has become one of the most popular Python web |
||||
application frameworks. |
||||
|
||||
Flask offers suggestions, but doesn't enforce any dependencies or |
||||
project layout. It is up to the developer to choose the tools and |
||||
libraries they want to use. There are many extensions provided by the |
||||
community that make adding new functionality easy. |
||||
|
||||
.. _WSGI: https://wsgi.readthedocs.io/ |
||||
.. _Werkzeug: https://werkzeug.palletsprojects.com/ |
||||
.. _Jinja: https://jinja.palletsprojects.com/ |
||||
|
||||
|
||||
Installing |
||||
---------- |
||||
|
||||
Install and update using `pip`_: |
||||
|
||||
.. code-block:: text |
||||
|
||||
$ pip install -U Flask |
||||
|
||||
.. _pip: https://pip.pypa.io/en/stable/getting-started/ |
||||
|
||||
|
||||
A Simple Example |
||||
---------------- |
||||
|
||||
.. code-block:: python |
||||
|
||||
# save this as app.py |
||||
from flask import Flask |
||||
|
||||
app = Flask(__name__) |
||||
|
||||
@app.route("/") |
||||
def hello(): |
||||
return "Hello, World!" |
||||
|
||||
.. code-block:: text |
||||
|
||||
$ flask run |
||||
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) |
||||
|
||||
|
||||
Contributing |
||||
------------ |
||||
|
||||
For guidance on setting up a development environment and how to make a |
||||
contribution to Flask, see the `contributing guidelines`_. |
||||
|
||||
.. _contributing guidelines: https://github.com/pallets/flask/blob/main/CONTRIBUTING.rst |
||||
|
||||
|
||||
Donate |
||||
------ |
||||
|
||||
The Pallets organization develops and supports Flask and the libraries |
||||
it uses. In order to grow the community of contributors and users, and |
||||
allow the maintainers to devote more time to the projects, `please |
||||
donate today`_. |
||||
|
||||
.. _please donate today: https://palletsprojects.com/donate |
||||
|
||||
|
||||
Links |
||||
----- |
||||
|
||||
- Documentation: https://flask.palletsprojects.com/ |
||||
- Changes: https://flask.palletsprojects.com/changes/ |
||||
- PyPI Releases: https://pypi.org/project/Flask/ |
||||
- Source Code: https://github.com/pallets/flask/ |
||||
- Issue Tracker: https://github.com/pallets/flask/issues/ |
||||
- Website: https://palletsprojects.com/p/flask/ |
||||
- Twitter: https://twitter.com/PalletsTeam |
||||
- Chat: https://discord.gg/pallets |
||||
|
||||
|
@ -0,0 +1,51 @@
|
||||
../../../bin/flask,sha256=ZdbweAi2-y2l8TUWn7TIVCaE-CbxfpPH_z66cIC3h34,236 |
||||
Flask-2.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 |
||||
Flask-2.0.3.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 |
||||
Flask-2.0.3.dist-info/METADATA,sha256=jK50YtxZfODLQP_GF1sNH6dOXRCI5bBLrAc7pWQwuXw,3839 |
||||
Flask-2.0.3.dist-info/RECORD,, |
||||
Flask-2.0.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 |
||||
Flask-2.0.3.dist-info/entry_points.txt,sha256=s3MqQpduU25y4dq3ftBYD6bMVdVnbMpZP-sUNw0zw0k,41 |
||||
Flask-2.0.3.dist-info/top_level.txt,sha256=dvi65F6AeGWVU0TBpYiC04yM60-FX1gJFkK31IKQr5c,6 |
||||
flask/__init__.py,sha256=ubQS5Xt6LMjPSwGO3Jksi5yx8AyuU0vT_VdHjt0j97A,2251 |
||||
flask/__main__.py,sha256=bYt9eEaoRQWdejEHFD8REx9jxVEdZptECFsV7F49Ink,30 |
||||
flask/__pycache__/__init__.cpython-38.pyc,, |
||||
flask/__pycache__/__main__.cpython-38.pyc,, |
||||
flask/__pycache__/app.cpython-38.pyc,, |
||||
flask/__pycache__/blueprints.cpython-38.pyc,, |
||||
flask/__pycache__/cli.cpython-38.pyc,, |
||||
flask/__pycache__/config.cpython-38.pyc,, |
||||
flask/__pycache__/ctx.cpython-38.pyc,, |
||||
flask/__pycache__/debughelpers.cpython-38.pyc,, |
||||
flask/__pycache__/globals.cpython-38.pyc,, |
||||
flask/__pycache__/helpers.cpython-38.pyc,, |
||||
flask/__pycache__/logging.cpython-38.pyc,, |
||||
flask/__pycache__/scaffold.cpython-38.pyc,, |
||||
flask/__pycache__/sessions.cpython-38.pyc,, |
||||
flask/__pycache__/signals.cpython-38.pyc,, |
||||
flask/__pycache__/templating.cpython-38.pyc,, |
||||
flask/__pycache__/testing.cpython-38.pyc,, |
||||
flask/__pycache__/typing.cpython-38.pyc,, |
||||
flask/__pycache__/views.cpython-38.pyc,, |
||||
flask/__pycache__/wrappers.cpython-38.pyc,, |
||||
flask/app.py,sha256=ectBbi9hGmVHAse5TNcFQZIDRkDAxYUAnLgfuKD0Xws,81975 |
||||
flask/blueprints.py,sha256=AkAVXZ_MMkjwjklzCAMdBNowTiM0wVQPynnUnXjTL2M,23781 |
||||
flask/cli.py,sha256=9v7FDIwWZ3QZsR6ka-qMYzMxSThfmQ4PEA4lkI38R6c,32287 |
||||
flask/config.py,sha256=70Uyjh1Jzb9MfTCT7NDhuZWAzyIEu-TIyk6-22MP3zQ,11285 |
||||
flask/ctx.py,sha256=Rmw5VOFQdbomLoCQPbU_0FbQkuB56CtpnQVU4yzXYB8,17589 |
||||
flask/debughelpers.py,sha256=W82-xrRmodjopBngI9roYH-q08EbQwN2HEGfDAi6SA0,6184 |
||||
flask/globals.py,sha256=cWd-R2hUH3VqPhnmQNww892tQS6Yjqg_wg8UvW1M7NM,1723 |
||||
flask/helpers.py,sha256=kstplLDtD0Isobilp87Lfmwq1tk2spnHjUf_O5-EhoE,30618 |
||||
flask/json/__init__.py,sha256=_YIqOsy8YOSyoLbplFtNcKvF5kwNKenmJ87Ub2Myc0k,12104 |
||||
flask/json/__pycache__/__init__.cpython-38.pyc,, |
||||
flask/json/__pycache__/tag.cpython-38.pyc,, |
||||
flask/json/tag.py,sha256=fys3HBLssWHuMAIJuTcf2K0bCtosePBKXIWASZEEjnU,8857 |
||||
flask/logging.py,sha256=1o_hirVGqdj7SBdETnhX7IAjklG89RXlrwz_2CjzQQE,2273 |
||||
flask/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
||||
flask/scaffold.py,sha256=fM9mRy7QBh9fhJ0VTogVx900dDa5oxz8FOw6OK5F-TU,32796 |
||||
flask/sessions.py,sha256=46jK4JlcdeBiYbDWTZJn_6u8EqDV-ByRdhlKrbgFi5M,15714 |
||||
flask/signals.py,sha256=H7QwDciK-dtBxinjKpexpglP0E6k0MJILiFWTItfmqU,2136 |
||||
flask/templating.py,sha256=l96VD39JQ0nue4Bcj7wZ4-FWWs-ppLxvgBCpwDQ4KAk,5626 |
||||
flask/testing.py,sha256=T3mr2PLQEkfxoftSTxmGfTtb_FSX3PgfGT8DUGNPWuk,10840 |
||||
flask/typing.py,sha256=L5JMltVjj8fovGS1hrMpb13IPfsFDESCCnpRN5CPT4U,1844 |
||||
flask/views.py,sha256=nhq31TRB5Z-z2mjFGZACaaB2Et5XPCmWhWxJxOvLWww,5948 |
||||
flask/wrappers.py,sha256=VndbHPRBSUUOejmd2Y3ydkoCVUtsS2OJIdJEVIkBVD8,5604 |
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0 |
||||
Generator: bdist_wheel (0.37.1) |
||||
Root-Is-Purelib: true |
||||
Tag: py3-none-any |
||||
|
@ -0,0 +1,2 @@
|
||||
[console_scripts] |
||||
flask = flask.cli:main |
@ -0,0 +1 @@
|
||||
flask |
@ -0,0 +1 @@
|
||||
pip |
@ -0,0 +1,28 @@
|
||||
Copyright 2007 Pallets |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are |
||||
met: |
||||
|
||||
1. Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in the |
||||
documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its |
||||
contributors may be used to endorse or promote products derived from |
||||
this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,113 @@
|
||||
Metadata-Version: 2.1 |
||||
Name: Jinja2 |
||||
Version: 3.0.3 |
||||
Summary: A very fast and expressive template engine. |
||||
Home-page: https://palletsprojects.com/p/jinja/ |
||||
Author: Armin Ronacher |
||||
Author-email: armin.ronacher@active-4.com |
||||
Maintainer: Pallets |
||||
Maintainer-email: contact@palletsprojects.com |
||||
License: BSD-3-Clause |
||||
Project-URL: Donate, https://palletsprojects.com/donate |
||||
Project-URL: Documentation, https://jinja.palletsprojects.com/ |
||||
Project-URL: Changes, https://jinja.palletsprojects.com/changes/ |
||||
Project-URL: Source Code, https://github.com/pallets/jinja/ |
||||
Project-URL: Issue Tracker, https://github.com/pallets/jinja/issues/ |
||||
Project-URL: Twitter, https://twitter.com/PalletsTeam |
||||
Project-URL: Chat, https://discord.gg/pallets |
||||
Platform: UNKNOWN |
||||
Classifier: Development Status :: 5 - Production/Stable |
||||
Classifier: Environment :: Web Environment |
||||
Classifier: Intended Audience :: Developers |
||||
Classifier: License :: OSI Approved :: BSD License |
||||
Classifier: Operating System :: OS Independent |
||||
Classifier: Programming Language :: Python |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content |
||||
Classifier: Topic :: Text Processing :: Markup :: HTML |
||||
Requires-Python: >=3.6 |
||||
Description-Content-Type: text/x-rst |
||||
License-File: LICENSE.rst |
||||
Requires-Dist: MarkupSafe (>=2.0) |
||||
Provides-Extra: i18n |
||||
Requires-Dist: Babel (>=2.7) ; extra == 'i18n' |
||||
|
||||
Jinja |
||||
===== |
||||
|
||||
Jinja is a fast, expressive, extensible templating engine. Special |
||||
placeholders in the template allow writing code similar to Python |
||||
syntax. Then the template is passed data to render the final document. |
||||
|
||||
It includes: |
||||
|
||||
- Template inheritance and inclusion. |
||||
- Define and import macros within templates. |
||||
- HTML templates can use autoescaping to prevent XSS from untrusted |
||||
user input. |
||||
- A sandboxed environment can safely render untrusted templates. |
||||
- AsyncIO support for generating templates and calling async |
||||
functions. |
||||
- I18N support with Babel. |
||||
- Templates are compiled to optimized Python code just-in-time and |
||||
cached, or can be compiled ahead-of-time. |
||||
- Exceptions point to the correct line in templates to make debugging |
||||
easier. |
||||
- Extensible filters, tests, functions, and even syntax. |
||||
|
||||
Jinja's philosophy is that while application logic belongs in Python if |
||||
possible, it shouldn't make the template designer's job difficult by |
||||
restricting functionality too much. |
||||
|
||||
|
||||
Installing |
||||
---------- |
||||
|
||||
Install and update using `pip`_: |
||||
|
||||
.. code-block:: text |
||||
|
||||
$ pip install -U Jinja2 |
||||
|
||||
.. _pip: https://pip.pypa.io/en/stable/getting-started/ |
||||
|
||||
|
||||
In A Nutshell |
||||
------------- |
||||
|
||||
.. code-block:: jinja |
||||
|
||||
{% extends "base.html" %} |
||||
{% block title %}Members{% endblock %} |
||||
{% block content %} |
||||
<ul> |
||||
{% for user in users %} |
||||
<li><a href="{{ user.url }}">{{ user.username }}</a></li> |
||||
{% endfor %} |
||||
</ul> |
||||
{% endblock %} |
||||
|
||||
|
||||
Donate |
||||
------ |
||||
|
||||
The Pallets organization develops and supports Jinja and other popular |
||||
packages. In order to grow the community of contributors and users, and |
||||
allow the maintainers to devote more time to the projects, `please |
||||
donate today`_. |
||||
|
||||
.. _please donate today: https://palletsprojects.com/donate |
||||
|
||||
|
||||
Links |
||||
----- |
||||
|
||||
- Documentation: https://jinja.palletsprojects.com/ |
||||
- Changes: https://jinja.palletsprojects.com/changes/ |
||||
- PyPI Releases: https://pypi.org/project/Jinja2/ |
||||
- Source Code: https://github.com/pallets/jinja/ |
||||
- Issue Tracker: https://github.com/pallets/jinja/issues/ |
||||
- Website: https://palletsprojects.com/p/jinja/ |
||||
- Twitter: https://twitter.com/PalletsTeam |
||||
- Chat: https://discord.gg/pallets |
||||
|
||||
|
@ -0,0 +1,58 @@
|
||||
Jinja2-3.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 |
||||
Jinja2-3.0.3.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 |
||||
Jinja2-3.0.3.dist-info/METADATA,sha256=uvKoBSMLvh0qHK-6khEqSe1yOV4jxFzbPSREOp-3BXk,3539 |
||||
Jinja2-3.0.3.dist-info/RECORD,, |
||||
Jinja2-3.0.3.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92 |
||||
Jinja2-3.0.3.dist-info/entry_points.txt,sha256=Qy_DkVo6Xj_zzOtmErrATe8lHZhOqdjpt3e4JJAGyi8,61 |
||||
Jinja2-3.0.3.dist-info/top_level.txt,sha256=PkeVWtLb3-CqjWi1fO29OCbj55EhX_chhKrCdrVe_zs,7 |
||||
jinja2/__init__.py,sha256=V3JjnTV-nyIHN6rwj03N1M11fegjGvv-weiHMQwH1pk,2205 |
||||
jinja2/__pycache__/__init__.cpython-38.pyc,, |
||||
jinja2/__pycache__/_identifier.cpython-38.pyc,, |
||||
jinja2/__pycache__/async_utils.cpython-38.pyc,, |
||||
jinja2/__pycache__/bccache.cpython-38.pyc,, |
||||
jinja2/__pycache__/compiler.cpython-38.pyc,, |
||||
jinja2/__pycache__/constants.cpython-38.pyc,, |
||||
jinja2/__pycache__/debug.cpython-38.pyc,, |
||||
jinja2/__pycache__/defaults.cpython-38.pyc,, |
||||
jinja2/__pycache__/environment.cpython-38.pyc,, |
||||
jinja2/__pycache__/exceptions.cpython-38.pyc,, |
||||
jinja2/__pycache__/ext.cpython-38.pyc,, |
||||
jinja2/__pycache__/filters.cpython-38.pyc,, |
||||
jinja2/__pycache__/idtracking.cpython-38.pyc,, |
||||
jinja2/__pycache__/lexer.cpython-38.pyc,, |
||||
jinja2/__pycache__/loaders.cpython-38.pyc,, |
||||
jinja2/__pycache__/meta.cpython-38.pyc,, |
||||
jinja2/__pycache__/nativetypes.cpython-38.pyc,, |
||||
jinja2/__pycache__/nodes.cpython-38.pyc,, |
||||
jinja2/__pycache__/optimizer.cpython-38.pyc,, |
||||
jinja2/__pycache__/parser.cpython-38.pyc,, |
||||
jinja2/__pycache__/runtime.cpython-38.pyc,, |
||||
jinja2/__pycache__/sandbox.cpython-38.pyc,, |
||||
jinja2/__pycache__/tests.cpython-38.pyc,, |
||||
jinja2/__pycache__/utils.cpython-38.pyc,, |
||||
jinja2/__pycache__/visitor.cpython-38.pyc,, |
||||
jinja2/_identifier.py,sha256=EdgGJKi7O1yvr4yFlvqPNEqV6M1qHyQr8Gt8GmVTKVM,1775 |
||||
jinja2/async_utils.py,sha256=jBcJSmLoQa2PjJdNcOpwaUmBxFNE9rZNwMF7Ob3dP9I,1947 |
||||
jinja2/bccache.py,sha256=v5rKAlYxIvfJEa0uGzAC6yCYSS3KuXT5Eqi-n9qvNi8,12670 |
||||
jinja2/compiler.py,sha256=v7zKz-mgSYXmfXD9mRmi2BU0B6Z-1RGZmOXCrsPKzc0,72209 |
||||
jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433 |
||||
jinja2/debug.py,sha256=r0JL0vfO7HPlyKZEdr6eVlg7HoIg2OQGmJ7SeUEyAeI,8494 |
||||
jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267 |
||||
jinja2/environment.py,sha256=Vz20npBX5-SUH_eguQuxrSQDEsLFjho0qcHLdMhY3hA,60983 |
||||
jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071 |
||||
jinja2/ext.py,sha256=44SjDjeYkkxQTpmC2BetOTxEFMgQ42p2dfSwXmPFcSo,32122 |
||||
jinja2/filters.py,sha256=jusKTZbd0ddZMaibZkxMUVKNsOsaYtOq_Il8Imtx4BE,52609 |
||||
jinja2/idtracking.py,sha256=WekexMql3u5n3vDxFsQ_i8HW0j24AtjWTjrPBLWrHww,10721 |
||||
jinja2/lexer.py,sha256=qNEQqDQw_zO5EaH6rFQsER7Qwn2du0o22prB-TR11HE,29930 |
||||
jinja2/loaders.py,sha256=1MjXJOU6p4VywFqtpDZhtvtT_vIlmHnZKMKHHw4SZzA,22754 |
||||
jinja2/meta.py,sha256=GNPEvifmSaU3CMxlbheBOZjeZ277HThOPUTf1RkppKQ,4396 |
||||
jinja2/nativetypes.py,sha256=KCJl71MogrDih_BHBu6xV5p7Cr_jggAgu-shKTg6L28,3969 |
||||
jinja2/nodes.py,sha256=i34GPRAZexXMT6bwuf5SEyvdmS-bRCy9KMjwN5O6pjk,34550 |
||||
jinja2/optimizer.py,sha256=tHkMwXxfZkbfA1KmLcqmBMSaz7RLIvvItrJcPoXTyD8,1650 |
||||
jinja2/parser.py,sha256=kHnU8v92GwMYkfr0MVakWv8UlSf_kJPx8LUsgQMof70,39767 |
||||
jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
||||
jinja2/runtime.py,sha256=wVRlkEmAgNU67AIQDqLvI6UkNLkzDqpLA-z4Mi3vl3g,35054 |
||||
jinja2/sandbox.py,sha256=-8zxR6TO9kUkciAVFsIKu8Oq-C7PTeYEdZ5TtA55-gw,14600 |
||||
jinja2/tests.py,sha256=Am5Z6Lmfr2XaH_npIfJJ8MdXtWsbLjMULZJulTAj30E,5905 |
||||
jinja2/utils.py,sha256=udQxWIKaq4QDCZiXN31ngKOaGGdaMA5fl0JMaM-F6fg,26971 |
||||
jinja2/visitor.py,sha256=ZmeLuTj66ic35-uFH-1m0EKXiw4ObDDb_WuE6h5vPFg,3572 |
@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0 |
||||
Generator: bdist_wheel (0.37.0) |
||||
Root-Is-Purelib: true |
||||
Tag: py3-none-any |
||||
|
@ -0,0 +1,3 @@
|
||||
[babel.extractors] |
||||
jinja2 = jinja2.ext:babel_extract [i18n] |
||||
|
@ -0,0 +1 @@
|
||||
jinja2 |
@ -0,0 +1 @@
|
||||
pip |
@ -0,0 +1,28 @@
|
||||
Copyright 2010 Pallets |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are |
||||
met: |
||||
|
||||
1. Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in the |
||||
documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its |
||||
contributors may be used to endorse or promote products derived from |
||||
this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,101 @@
|
||||
Metadata-Version: 2.1 |
||||
Name: MarkupSafe |
||||
Version: 2.1.0 |
||||
Summary: Safely add untrusted strings to HTML/XML markup. |
||||
Home-page: https://palletsprojects.com/p/markupsafe/ |
||||
Author: Armin Ronacher |
||||
Author-email: armin.ronacher@active-4.com |
||||
Maintainer: Pallets |
||||
Maintainer-email: contact@palletsprojects.com |
||||
License: BSD-3-Clause |
||||
Project-URL: Donate, https://palletsprojects.com/donate |
||||
Project-URL: Documentation, https://markupsafe.palletsprojects.com/ |
||||
Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/ |
||||
Project-URL: Source Code, https://github.com/pallets/markupsafe/ |
||||
Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/ |
||||
Project-URL: Twitter, https://twitter.com/PalletsTeam |
||||
Project-URL: Chat, https://discord.gg/pallets |
||||
Platform: UNKNOWN |
||||
Classifier: Development Status :: 5 - Production/Stable |
||||
Classifier: Environment :: Web Environment |
||||
Classifier: Intended Audience :: Developers |
||||
Classifier: License :: OSI Approved :: BSD License |
||||
Classifier: Operating System :: OS Independent |
||||
Classifier: Programming Language :: Python |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content |
||||
Classifier: Topic :: Text Processing :: Markup :: HTML |
||||
Requires-Python: >=3.7 |
||||
Description-Content-Type: text/x-rst |
||||
License-File: LICENSE.rst |
||||
|
||||
MarkupSafe |
||||
========== |
||||
|
||||
MarkupSafe implements a text object that escapes characters so it is |
||||
safe to use in HTML and XML. Characters that have special meanings are |
||||
replaced so that they display as the actual characters. This mitigates |
||||
injection attacks, meaning untrusted user input can safely be displayed |
||||
on a page. |
||||
|
||||
|
||||
Installing |
||||
---------- |
||||
|
||||
Install and update using `pip`_: |
||||
|
||||
.. code-block:: text |
||||
|
||||
pip install -U MarkupSafe |
||||
|
||||
.. _pip: https://pip.pypa.io/en/stable/getting-started/ |
||||
|
||||
|
||||
Examples |
||||
-------- |
||||
|
||||
.. code-block:: pycon |
||||
|
||||
>>> from markupsafe import Markup, escape |
||||
|
||||
>>> # escape replaces special characters and wraps in Markup |
||||
>>> escape("<script>alert(document.cookie);</script>") |
||||
Markup('<script>alert(document.cookie);</script>') |
||||
|
||||
>>> # wrap in Markup to mark text "safe" and prevent escaping |
||||
>>> Markup("<strong>Hello</strong>") |
||||
Markup('<strong>hello</strong>') |
||||
|
||||
>>> escape(Markup("<strong>Hello</strong>")) |
||||
Markup('<strong>hello</strong>') |
||||
|
||||
>>> # Markup is a str subclass |
||||
>>> # methods and operators escape their arguments |
||||
>>> template = Markup("Hello <em>{name}</em>") |
||||
>>> template.format(name='"World"') |
||||
Markup('Hello <em>"World"</em>') |
||||
|
||||
|
||||
Donate |
||||
------ |
||||
|
||||
The Pallets organization develops and supports MarkupSafe and other |
||||
popular packages. In order to grow the community of contributors and |
||||
users, and allow the maintainers to devote more time to the projects, |
||||
`please donate today`_. |
||||
|
||||
.. _please donate today: https://palletsprojects.com/donate |
||||
|
||||
|
||||
Links |
||||
----- |
||||
|
||||
- Documentation: https://markupsafe.palletsprojects.com/ |
||||
- Changes: https://markupsafe.palletsprojects.com/changes/ |
||||
- PyPI Releases: https://pypi.org/project/MarkupSafe/ |
||||
- Source Code: https://github.com/pallets/markupsafe/ |
||||
- Issue Tracker: https://github.com/pallets/markupsafe/issues/ |
||||
- Website: https://palletsprojects.com/p/markupsafe/ |
||||
- Twitter: https://twitter.com/PalletsTeam |
||||
- Chat: https://discord.gg/pallets |
||||
|
||||
|
@ -0,0 +1,14 @@
|
||||
MarkupSafe-2.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 |
||||
MarkupSafe-2.1.0.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 |
||||
MarkupSafe-2.1.0.dist-info/METADATA,sha256=585PQ3HNHmJeHpbdXckhscUSR9AaQnh5RWaaMtCB4_8,3242 |
||||
MarkupSafe-2.1.0.dist-info/RECORD,, |
||||
MarkupSafe-2.1.0.dist-info/WHEEL,sha256=paN2rHE-sLfyg0Z4YvQnentMRWXxZnkclRDH8E5J6qk,148 |
||||
MarkupSafe-2.1.0.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 |
||||
markupsafe/__init__.py,sha256=7p5vza0YNtAtfancH4eGnJLe9V4uEFATInoX7Ko7aig,9130 |
||||
markupsafe/__pycache__/__init__.cpython-38.pyc,, |
||||
markupsafe/__pycache__/_native.cpython-38.pyc,, |
||||
markupsafe/_native.py,sha256=GR86Qvo_GcgKmKreA1WmYN9ud17OFwkww8E-fiW-57s,1713 |
||||
markupsafe/_speedups.c,sha256=X2XvQVtIdcK4Usz70BvkzoOfjTCmQlDkkjYSn-swE0g,7083 |
||||
markupsafe/_speedups.cpython-38-x86_64-linux-gnu.so,sha256=gBmi2f9vNFVvJs2gdtjYKwK0tIgrxEqVUMbyL-1roRo,45008 |
||||
markupsafe/_speedups.pyi,sha256=vfMCsOgbAXRNLUXkyuyonG8uEWKYU4PDqNuMaDELAYw,229 |
||||
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
@ -0,0 +1,6 @@
|
||||
Wheel-Version: 1.0 |
||||
Generator: bdist_wheel (0.37.0) |
||||
Root-Is-Purelib: false |
||||
Tag: cp38-cp38-manylinux_2_17_x86_64 |
||||
Tag: cp38-cp38-manylinux2014_x86_64 |
||||
|
@ -0,0 +1 @@
|
||||
markupsafe |
@ -0,0 +1 @@
|
||||
pip |
@ -0,0 +1,28 @@
|
||||
Copyright 2007 Pallets |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are |
||||
met: |
||||
|
||||
1. Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in the |
||||
documentation and/or other materials provided with the distribution. |
||||
|
||||
3. Neither the name of the copyright holder nor the names of its |
||||
contributors may be used to endorse or promote products derived from |
||||
this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,129 @@
|
||||
Metadata-Version: 2.1 |
||||
Name: Werkzeug |
||||
Version: 2.0.3 |
||||
Summary: The comprehensive WSGI web application library. |
||||
Home-page: https://palletsprojects.com/p/werkzeug/ |
||||
Author: Armin Ronacher |
||||
Author-email: armin.ronacher@active-4.com |
||||
Maintainer: Pallets |
||||
Maintainer-email: contact@palletsprojects.com |
||||
License: BSD-3-Clause |
||||
Project-URL: Donate, https://palletsprojects.com/donate |
||||
Project-URL: Documentation, https://werkzeug.palletsprojects.com/ |
||||
Project-URL: Changes, https://werkzeug.palletsprojects.com/changes/ |
||||
Project-URL: Source Code, https://github.com/pallets/werkzeug/ |
||||
Project-URL: Issue Tracker, https://github.com/pallets/werkzeug/issues/ |
||||
Project-URL: Twitter, https://twitter.com/PalletsTeam |
||||
Project-URL: Chat, https://discord.gg/pallets |
||||
Platform: UNKNOWN |
||||
Classifier: Development Status :: 5 - Production/Stable |
||||
Classifier: Environment :: Web Environment |
||||
Classifier: Intended Audience :: Developers |
||||
Classifier: License :: OSI Approved :: BSD License |
||||
Classifier: Operating System :: OS Independent |
||||
Classifier: Programming Language :: Python |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application |
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware |
||||
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks |
||||
Requires-Python: >=3.6 |
||||
Description-Content-Type: text/x-rst |
||||
License-File: LICENSE.rst |
||||
Requires-Dist: dataclasses ; python_version < "3.7" |
||||
Provides-Extra: watchdog |
||||
Requires-Dist: watchdog ; extra == 'watchdog' |
||||
|
||||
Werkzeug |
||||
======== |
||||
|
||||
*werkzeug* German noun: "tool". Etymology: *werk* ("work"), *zeug* ("stuff") |
||||
|
||||
Werkzeug is a comprehensive `WSGI`_ web application library. It began as |
||||
a simple collection of various utilities for WSGI applications and has |
||||
become one of the most advanced WSGI utility libraries. |
||||
|
||||
It includes: |
||||
|
||||
- An interactive debugger that allows inspecting stack traces and |
||||
source code in the browser with an interactive interpreter for any |
||||
frame in the stack. |
||||
- A full-featured request object with objects to interact with |
||||
headers, query args, form data, files, and cookies. |
||||
- A response object that can wrap other WSGI applications and handle |
||||
streaming data. |
||||
- A routing system for matching URLs to endpoints and generating URLs |
||||
for endpoints, with an extensible system for capturing variables |
||||
from URLs. |
||||
- HTTP utilities to handle entity tags, cache control, dates, user |
||||
agents, cookies, files, and more. |
||||
- A threaded WSGI server for use while developing applications |
||||
locally. |
||||
- A test client for simulating HTTP requests during testing without |
||||
requiring running a server. |
||||
|
||||
Werkzeug doesn't enforce any dependencies. It is up to the developer to |
||||
choose a template engine, database adapter, and even how to handle |
||||
requests. It can be used to build all sorts of end user applications |
||||
such as blogs, wikis, or bulletin boards. |
||||
|
||||
`Flask`_ wraps Werkzeug, using it to handle the details of WSGI while |
||||
providing more structure and patterns for defining powerful |
||||
applications. |
||||
|
||||
.. _WSGI: https://wsgi.readthedocs.io/en/latest/ |
||||
.. _Flask: https://www.palletsprojects.com/p/flask/ |
||||
|
||||
|
||||
Installing |
||||
---------- |
||||
|
||||
Install and update using `pip`_: |
||||
|
||||
.. code-block:: text |
||||
|
||||
pip install -U Werkzeug |
||||
|
||||
.. _pip: https://pip.pypa.io/en/stable/getting-started/ |
||||
|
||||
|
||||
A Simple Example |
||||
---------------- |
||||
|
||||
.. code-block:: python |
||||
|
||||
from werkzeug.wrappers import Request, Response |
||||
|
||||
@Request.application |
||||
def application(request): |
||||
return Response('Hello, World!') |
||||
|
||||
if __name__ == '__main__': |
||||
from werkzeug.serving import run_simple |
||||
run_simple('localhost', 4000, application) |
||||
|
||||
|
||||
Donate |
||||
------ |
||||
|
||||
The Pallets organization develops and supports Werkzeug and other |
||||
popular packages. In order to grow the community of contributors and |
||||
users, and allow the maintainers to devote more time to the projects, |
||||
`please donate today`_. |
||||
|
||||
.. _please donate today: https://palletsprojects.com/donate |
||||
|
||||
|
||||
Links |
||||
----- |
||||
|
||||
- Documentation: https://werkzeug.palletsprojects.com/ |
||||
- Changes: https://werkzeug.palletsprojects.com/changes/ |
||||
- PyPI Releases: https://pypi.org/project/Werkzeug/ |
||||
- Source Code: https://github.com/pallets/werkzeug/ |
||||
- Issue Tracker: https://github.com/pallets/werkzeug/issues/ |
||||
- Website: https://palletsprojects.com/p/werkzeug/ |
||||
- Twitter: https://twitter.com/PalletsTeam |
||||
- Chat: https://discord.gg/pallets |
||||
|
||||
|
@ -0,0 +1,111 @@
|
||||
Werkzeug-2.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 |
||||
Werkzeug-2.0.3.dist-info/LICENSE.rst,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 |
||||
Werkzeug-2.0.3.dist-info/METADATA,sha256=Rxzda7JFgpyr7oqR42Z57bNxRp-pjna_KYhcivqvXY4,4452 |
||||
Werkzeug-2.0.3.dist-info/RECORD,, |
||||
Werkzeug-2.0.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92 |
||||
Werkzeug-2.0.3.dist-info/top_level.txt,sha256=QRyj2VjwJoQkrwjwFIOlB8Xg3r9un0NtqVHQF-15xaw,9 |
||||
werkzeug/__init__.py,sha256=2frslFsD2EbmZUTfzZ5njDmic66S5f6XMdT24AOGYhk,188 |
||||
werkzeug/__pycache__/__init__.cpython-38.pyc,, |
||||
werkzeug/__pycache__/_internal.cpython-38.pyc,, |
||||
werkzeug/__pycache__/_reloader.cpython-38.pyc,, |
||||
werkzeug/__pycache__/datastructures.cpython-38.pyc,, |
||||
werkzeug/__pycache__/exceptions.cpython-38.pyc,, |
||||
werkzeug/__pycache__/filesystem.cpython-38.pyc,, |
||||
werkzeug/__pycache__/formparser.cpython-38.pyc,, |
||||
werkzeug/__pycache__/http.cpython-38.pyc,, |
||||
werkzeug/__pycache__/local.cpython-38.pyc,, |
||||
werkzeug/__pycache__/routing.cpython-38.pyc,, |
||||
werkzeug/__pycache__/security.cpython-38.pyc,, |
||||
werkzeug/__pycache__/serving.cpython-38.pyc,, |
||||
werkzeug/__pycache__/test.cpython-38.pyc,, |
||||
werkzeug/__pycache__/testapp.cpython-38.pyc,, |
||||
werkzeug/__pycache__/urls.cpython-38.pyc,, |
||||
werkzeug/__pycache__/user_agent.cpython-38.pyc,, |
||||
werkzeug/__pycache__/useragents.cpython-38.pyc,, |
||||
werkzeug/__pycache__/utils.cpython-38.pyc,, |
||||
werkzeug/__pycache__/wsgi.cpython-38.pyc,, |
||||
werkzeug/_internal.py,sha256=_0GZM3B6gE4eoRTp9K6T7spvY5qJQ9Od9GRIp4lZpzU,18572 |
||||
werkzeug/_reloader.py,sha256=B1hEfgsUOz2IginBQM5Zak_eaIF7gr3GS5-0x2OHvAE,13950 |
||||
werkzeug/datastructures.py,sha256=m79A8rHQEt5B7qVqyrjARXzHL66Katn8S92urGscTw4,97929 |
||||
werkzeug/datastructures.pyi,sha256=uFOqffFoaOEa-43IPlK9otu1X4lDOoqIgG4ULS0ObiE,34119 |
||||
werkzeug/debug/__init__.py,sha256=Vn0WQfD9w6DGg1j_2gWpSKKTaFlwxhbCBwi7QQMz1s8,17917 |
||||
werkzeug/debug/__pycache__/__init__.cpython-38.pyc,, |
||||
werkzeug/debug/__pycache__/console.cpython-38.pyc,, |
||||
werkzeug/debug/__pycache__/repr.cpython-38.pyc,, |
||||
werkzeug/debug/__pycache__/tbtools.cpython-38.pyc,, |
||||
werkzeug/debug/console.py,sha256=jJjid1dIlCNWbDHXTtjJW5XqNfPjSOKbtUmEX5weNdY,5976 |
||||
werkzeug/debug/repr.py,sha256=QCSHENKsChEZDCIApkVi_UNjhJ77v8BMXK1OfxO189M,9483 |
||||
werkzeug/debug/shared/FONT_LICENSE,sha256=LwAVEI1oYnvXiNMT9SnCH_TaLCxCpeHziDrMg0gPkAI,4673 |
||||
werkzeug/debug/shared/ICON_LICENSE.md,sha256=DhA6Y1gUl5Jwfg0NFN9Rj4VWITt8tUx0IvdGf0ux9-s,222 |
||||
werkzeug/debug/shared/console.png,sha256=bxax6RXXlvOij_KeqvSNX0ojJf83YbnZ7my-3Gx9w2A,507 |
||||
werkzeug/debug/shared/debugger.js,sha256=tg42SZs1SVmYWZ-_Fj5ELK5-FLHnGNQrei0K2By8Bw8,10521 |
||||
werkzeug/debug/shared/less.png,sha256=-4-kNRaXJSONVLahrQKUxMwXGm9R4OnZ9SxDGpHlIR4,191 |
||||
werkzeug/debug/shared/more.png,sha256=GngN7CioHQoV58rH6ojnkYi8c_qED2Aka5FO5UXrReY,200 |
||||
werkzeug/debug/shared/source.png,sha256=RoGcBTE4CyCB85GBuDGTFlAnUqxwTBiIfDqW15EpnUQ,818 |
||||
werkzeug/debug/shared/style.css,sha256=h1ZSUVaKNpfbfcYzRb513WAhPySGDQom1uih3uEDxPw,6704 |
||||
werkzeug/debug/shared/ubuntu.ttf,sha256=1eaHFyepmy4FyDvjLVzpITrGEBu_CZYY94jE0nED1c0,70220 |
||||
werkzeug/debug/tbtools.py,sha256=khUCWQcpbxzeOs5NlT-E9n99BI-ELH9K9RY5exc-X_o,19362 |
||||
werkzeug/exceptions.py,sha256=WLCqXBEHm5Xj2d2sfON9XIneeRS3MlNXKH85k1AQIJU,28776 |
||||
werkzeug/filesystem.py,sha256=JS2Dv2QF98WILxY4_thHl-WMcUcwluF_4igkDPaP1l4,1956 |
||||
werkzeug/formparser.py,sha256=X-p3Ek4ji8XrKrbmaWxr8StLSc6iuksbpIeweaabs4s,17400 |
||||
werkzeug/http.py,sha256=Xm3WhYKRQKh_J12514F8y8prILldXceOceeO8EiQEZI,45222 |
||||
werkzeug/local.py,sha256=5HbGdD0vVNJgXH3SXfkMjdxIpzy7iqkHJMGCNjljFNo,23664 |
||||
werkzeug/middleware/__init__.py,sha256=qfqgdT5npwG9ses3-FXQJf3aB95JYP1zchetH_T3PUw,500 |
||||
werkzeug/middleware/__pycache__/__init__.cpython-38.pyc,, |
||||
werkzeug/middleware/__pycache__/dispatcher.cpython-38.pyc,, |
||||
werkzeug/middleware/__pycache__/http_proxy.cpython-38.pyc,, |
||||
werkzeug/middleware/__pycache__/lint.cpython-38.pyc,, |
||||
werkzeug/middleware/__pycache__/profiler.cpython-38.pyc,, |
||||
werkzeug/middleware/__pycache__/proxy_fix.cpython-38.pyc,, |
||||
werkzeug/middleware/__pycache__/shared_data.cpython-38.pyc,, |
||||
werkzeug/middleware/dispatcher.py,sha256=Fh_w-KyWnTSYF-Lfv5dimQ7THSS7afPAZMmvc4zF1gg,2580 |
||||
werkzeug/middleware/http_proxy.py,sha256=HE8VyhS7CR-E1O6_9b68huv8FLgGGR1DLYqkS3Xcp3Q,7558 |
||||
werkzeug/middleware/lint.py,sha256=sAg3GcOhICIkwYX5bJGG8n8iebX0Yipq_UH0HvrBvoU,13964 |
||||
werkzeug/middleware/profiler.py,sha256=QkXk7cqnaPnF8wQu-5SyPCIOT3_kdABUBorQOghVNOA,4899 |
||||
werkzeug/middleware/proxy_fix.py,sha256=l7LC_LDu0Yd4SvUxS5SFigAJMzcIOGm6LNKl9IXJBSU,6974 |
||||
werkzeug/middleware/shared_data.py,sha256=xydEqOhAGg0aQJEllPDVfz2-8jHwWvJpAxfPsfPCu7k,10960 |
||||
werkzeug/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
||||
werkzeug/routing.py,sha256=rATL0ZkbTBgvdgJp6WgihuwKyivCF8K4a8kQ4hFgY6A,84581 |
||||
werkzeug/sansio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 |
||||
werkzeug/sansio/__pycache__/__init__.cpython-38.pyc,, |
||||
werkzeug/sansio/__pycache__/multipart.cpython-38.pyc,, |
||||
werkzeug/sansio/__pycache__/request.cpython-38.pyc,, |
||||
werkzeug/sansio/__pycache__/response.cpython-38.pyc,, |
||||
werkzeug/sansio/__pycache__/utils.cpython-38.pyc,, |
||||
werkzeug/sansio/multipart.py,sha256=BRjBk_mCPjSJzwNVvBgmrJGk3QxA9pYfsgzFki28bxc,8751 |
||||
werkzeug/sansio/request.py,sha256=kt7fizz15HPuYKYU1_3TTEkNSuXeeaM4aLcjW84qvv4,20247 |
||||
werkzeug/sansio/response.py,sha256=zvCq9HSBBZGBd5Gg412BY9RZIwnKsJl5Kzfd3Kl9sSo,26098 |
||||
werkzeug/sansio/utils.py,sha256=V5v-UUnX8pm4RehP9Tt_NiUSOJGJGUvKjlW0eOIQldM,4164 |
||||
werkzeug/security.py,sha256=gPDRuCjkjWrcqj99tBMq8_nHFZLFQjgoW5Ga5XIw9jo,8158 |
||||
werkzeug/serving.py,sha256=6aV-RKbZm4rUHveQGuh4SY0wFZTmXyR43yD_kCQm8Wo,38287 |
||||
werkzeug/test.py,sha256=eUORFaeIDXcmncLdYxgFqYiVdolZkYRY67QV1_ATk20,48235 |
||||
werkzeug/testapp.py,sha256=f48prWSGJhbSrvYb8e1fnAah4BkrLb0enHSdChgsjBY,9471 |
||||
werkzeug/urls.py,sha256=Du2lreBHvgBh5c2_bcx72g3hzV2ZabXYZsp-picUIJs,41023 |
||||
werkzeug/user_agent.py,sha256=WclZhpvgLurMF45hsioSbS75H1Zb4iMQGKN3_yZ2oKo,1420 |
||||
werkzeug/useragents.py,sha256=G8tmv_6vxJaPrLQH3eODNgIYe0_V6KETROQlJI-WxDE,7264 |
||||
werkzeug/utils.py,sha256=D_dnCLUfodQ4k0GRSpnI6qDoVoaX7-Dza57bx7sabG0,37101 |
||||
werkzeug/wrappers/__init__.py,sha256=-s75nPbyXHzU_rwmLPDhoMuGbEUk0jZT_n0ZQAOFGf8,654 |
||||
werkzeug/wrappers/__pycache__/__init__.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/accept.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/auth.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/base_request.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/base_response.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/common_descriptors.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/cors.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/etag.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/json.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/request.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/response.cpython-38.pyc,, |
||||
werkzeug/wrappers/__pycache__/user_agent.cpython-38.pyc,, |
||||
werkzeug/wrappers/accept.py,sha256=NzyLfKH3qC5cSbkEc5azw5-lp_kU8JIrtc8AdGQ0HBs,413 |
||||
|