Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
vig
Sublinear Algorithms for VA
pseudo
Commits
1fee93d4
Commit
1fee93d4
authored
Sep 05, 2020
by
Kruyff,D.L.W. (Dylan)
Browse files
Add progress view (incomplete) + store windows server side (faster)
parent
b41c932e
Changes
288
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 288+
files are displayed.
Plain diff
Email patch
Flaskserver/venv/Lib/site-packages/aiohttp/formdata.py
deleted
100644 → 0
View file @
b41c932e
import
io
from
typing
import
Any
,
Iterable
,
List
,
Optional
# noqa
from
urllib.parse
import
urlencode
from
multidict
import
MultiDict
,
MultiDictProxy
from
.
import
hdrs
,
multipart
,
payload
from
.helpers
import
guess_filename
from
.payload
import
Payload
__all__
=
(
'FormData'
,)
class
FormData
:
"""Helper class for multipart/form-data and
application/x-www-form-urlencoded body generation."""
def
__init__
(
self
,
fields
:
Iterable
[
Any
]
=
(),
quote_fields
:
bool
=
True
,
charset
:
Optional
[
str
]
=
None
)
->
None
:
self
.
_writer
=
multipart
.
MultipartWriter
(
'form-data'
)
self
.
_fields
=
[]
# type: List[Any]
self
.
_is_multipart
=
False
self
.
_quote_fields
=
quote_fields
self
.
_charset
=
charset
if
isinstance
(
fields
,
dict
):
fields
=
list
(
fields
.
items
())
elif
not
isinstance
(
fields
,
(
list
,
tuple
)):
fields
=
(
fields
,)
self
.
add_fields
(
*
fields
)
@
property
def
is_multipart
(
self
)
->
bool
:
return
self
.
_is_multipart
def
add_field
(
self
,
name
:
str
,
value
:
Any
,
*
,
content_type
:
Optional
[
str
]
=
None
,
filename
:
Optional
[
str
]
=
None
,
content_transfer_encoding
:
Optional
[
str
]
=
None
)
->
None
:
if
isinstance
(
value
,
io
.
IOBase
):
self
.
_is_multipart
=
True
elif
isinstance
(
value
,
(
bytes
,
bytearray
,
memoryview
)):
if
filename
is
None
and
content_transfer_encoding
is
None
:
filename
=
name
type_options
=
MultiDict
({
'name'
:
name
})
if
filename
is
not
None
and
not
isinstance
(
filename
,
str
):
raise
TypeError
(
'filename must be an instance of str. '
'Got: %s'
%
filename
)
if
filename
is
None
and
isinstance
(
value
,
io
.
IOBase
):
filename
=
guess_filename
(
value
,
name
)
if
filename
is
not
None
:
type_options
[
'filename'
]
=
filename
self
.
_is_multipart
=
True
headers
=
{}
if
content_type
is
not
None
:
if
not
isinstance
(
content_type
,
str
):
raise
TypeError
(
'content_type must be an instance of str. '
'Got: %s'
%
content_type
)
headers
[
hdrs
.
CONTENT_TYPE
]
=
content_type
self
.
_is_multipart
=
True
if
content_transfer_encoding
is
not
None
:
if
not
isinstance
(
content_transfer_encoding
,
str
):
raise
TypeError
(
'content_transfer_encoding must be an instance'
' of str. Got: %s'
%
content_transfer_encoding
)
headers
[
hdrs
.
CONTENT_TRANSFER_ENCODING
]
=
content_transfer_encoding
self
.
_is_multipart
=
True
self
.
_fields
.
append
((
type_options
,
headers
,
value
))
def
add_fields
(
self
,
*
fields
:
Any
)
->
None
:
to_add
=
list
(
fields
)
while
to_add
:
rec
=
to_add
.
pop
(
0
)
if
isinstance
(
rec
,
io
.
IOBase
):
k
=
guess_filename
(
rec
,
'unknown'
)
self
.
add_field
(
k
,
rec
)
# type: ignore
elif
isinstance
(
rec
,
(
MultiDictProxy
,
MultiDict
)):
to_add
.
extend
(
rec
.
items
())
elif
isinstance
(
rec
,
(
list
,
tuple
))
and
len
(
rec
)
==
2
:
k
,
fp
=
rec
self
.
add_field
(
k
,
fp
)
# type: ignore
else
:
raise
TypeError
(
'Only io.IOBase, multidict and (name, file) '
'pairs allowed, use .add_field() for passing '
'more complex parameters, got {!r}'
.
format
(
rec
))
def
_gen_form_urlencoded
(
self
)
->
payload
.
BytesPayload
:
# form data (x-www-form-urlencoded)
data
=
[]
for
type_options
,
_
,
value
in
self
.
_fields
:
data
.
append
((
type_options
[
'name'
],
value
))
charset
=
self
.
_charset
if
self
.
_charset
is
not
None
else
'utf-8'
if
charset
==
'utf-8'
:
content_type
=
'application/x-www-form-urlencoded'
else
:
content_type
=
(
'application/x-www-form-urlencoded; '
'charset=%s'
%
charset
)
return
payload
.
BytesPayload
(
urlencode
(
data
,
doseq
=
True
,
encoding
=
charset
).
encode
(),
content_type
=
content_type
)
def
_gen_form_data
(
self
)
->
multipart
.
MultipartWriter
:
"""Encode a list of fields using the multipart/form-data MIME format"""
for
dispparams
,
headers
,
value
in
self
.
_fields
:
try
:
if
hdrs
.
CONTENT_TYPE
in
headers
:
part
=
payload
.
get_payload
(
value
,
content_type
=
headers
[
hdrs
.
CONTENT_TYPE
],
headers
=
headers
,
encoding
=
self
.
_charset
)
else
:
part
=
payload
.
get_payload
(
value
,
headers
=
headers
,
encoding
=
self
.
_charset
)
except
Exception
as
exc
:
raise
TypeError
(
'Can not serialize value type: %r
\n
'
'headers: %r
\n
value: %r'
%
(
type
(
value
),
headers
,
value
))
from
exc
if
dispparams
:
part
.
set_content_disposition
(
'form-data'
,
quote_fields
=
self
.
_quote_fields
,
**
dispparams
)
# FIXME cgi.FieldStorage doesn't likes body parts with
# Content-Length which were sent via chunked transfer encoding
assert
part
.
headers
is
not
None
part
.
headers
.
popall
(
hdrs
.
CONTENT_LENGTH
,
None
)
self
.
_writer
.
append_payload
(
part
)
return
self
.
_writer
def
__call__
(
self
)
->
Payload
:
if
self
.
_is_multipart
:
return
self
.
_gen_form_data
()
else
:
return
self
.
_gen_form_urlencoded
()
Flaskserver/venv/Lib/site-packages/aiohttp/frozenlist.py
deleted
100644 → 0
View file @
b41c932e
from
collections.abc
import
MutableSequence
from
functools
import
total_ordering
from
.helpers
import
NO_EXTENSIONS
@
total_ordering
class
FrozenList
(
MutableSequence
):
__slots__
=
(
'_frozen'
,
'_items'
)
def
__init__
(
self
,
items
=
None
):
self
.
_frozen
=
False
if
items
is
not
None
:
items
=
list
(
items
)
else
:
items
=
[]
self
.
_items
=
items
@
property
def
frozen
(
self
):
return
self
.
_frozen
def
freeze
(
self
):
self
.
_frozen
=
True
def
__getitem__
(
self
,
index
):
return
self
.
_items
[
index
]
def
__setitem__
(
self
,
index
,
value
):
if
self
.
_frozen
:
raise
RuntimeError
(
"Cannot modify frozen list."
)
self
.
_items
[
index
]
=
value
def
__delitem__
(
self
,
index
):
if
self
.
_frozen
:
raise
RuntimeError
(
"Cannot modify frozen list."
)
del
self
.
_items
[
index
]
def
__len__
(
self
):
return
self
.
_items
.
__len__
()
def
__iter__
(
self
):
return
self
.
_items
.
__iter__
()
def
__reversed__
(
self
):
return
self
.
_items
.
__reversed__
()
def
__eq__
(
self
,
other
):
return
list
(
self
)
==
other
def
__le__
(
self
,
other
):
return
list
(
self
)
<=
other
def
insert
(
self
,
pos
,
item
):
if
self
.
_frozen
:
raise
RuntimeError
(
"Cannot modify frozen list."
)
self
.
_items
.
insert
(
pos
,
item
)
def
__repr__
(
self
):
return
'<FrozenList(frozen={}, {!r})>'
.
format
(
self
.
_frozen
,
self
.
_items
)
PyFrozenList
=
FrozenList
try
:
from
aiohttp._frozenlist
import
FrozenList
as
CFrozenList
# type: ignore
if
not
NO_EXTENSIONS
:
FrozenList
=
CFrozenList
# type: ignore
except
ImportError
:
# pragma: no cover
pass
Flaskserver/venv/Lib/site-packages/aiohttp/frozenlist.pyi
deleted
100644 → 0
View file @
b41c932e
from typing import (
Generic,
Iterable,
Iterator,
List,
MutableSequence,
Optional,
TypeVar,
Union,
overload,
)
_T = TypeVar('_T')
_Arg = Union[List[_T], Iterable[_T]]
class FrozenList(MutableSequence[_T], Generic[_T]):
def __init__(self, items: Optional[_Arg[_T]]=...) -> None: ...
@property
def frozen(self) -> bool: ...
def freeze(self) -> None: ...
@overload
def __getitem__(self, i: int) -> _T: ...
@overload
def __getitem__(self, s: slice) -> FrozenList[_T]: ...
@overload
def __setitem__(self, i: int, o: _T) -> None: ...
@overload
def __setitem__(self, s: slice, o: Iterable[_T]) -> None: ...
@overload
def __delitem__(self, i: int) -> None: ...
@overload
def __delitem__(self, i: slice) -> None: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[_T]: ...
def __reversed__(self) -> Iterator[_T]: ...
def __eq__(self, other: object) -> bool: ...
def __le__(self, other: FrozenList[_T]) -> bool: ...
def __ne__(self, other: object) -> bool: ...
def __lt__(self, other: FrozenList[_T]) -> bool: ...
def __ge__(self, other: FrozenList[_T]) -> bool: ...
def __gt__(self, other: FrozenList[_T]) -> bool: ...
def insert(self, pos: int, item: _T) -> None: ...
def __repr__(self) -> str: ...
# types for C accelerators are the same
CFrozenList = PyFrozenList = FrozenList
Flaskserver/venv/Lib/site-packages/aiohttp/hdrs.py
deleted
100644 → 0
View file @
b41c932e
"""HTTP Headers constants."""
# After changing the file content call ./tools/gen.py
# to regenerate the headers parser
from
multidict
import
istr
METH_ANY
=
'*'
METH_CONNECT
=
'CONNECT'
METH_HEAD
=
'HEAD'
METH_GET
=
'GET'
METH_DELETE
=
'DELETE'
METH_OPTIONS
=
'OPTIONS'
METH_PATCH
=
'PATCH'
METH_POST
=
'POST'
METH_PUT
=
'PUT'
METH_TRACE
=
'TRACE'
METH_ALL
=
{
METH_CONNECT
,
METH_HEAD
,
METH_GET
,
METH_DELETE
,
METH_OPTIONS
,
METH_PATCH
,
METH_POST
,
METH_PUT
,
METH_TRACE
}
ACCEPT
=
istr
(
'Accept'
)
ACCEPT_CHARSET
=
istr
(
'Accept-Charset'
)
ACCEPT_ENCODING
=
istr
(
'Accept-Encoding'
)
ACCEPT_LANGUAGE
=
istr
(
'Accept-Language'
)
ACCEPT_RANGES
=
istr
(
'Accept-Ranges'
)
ACCESS_CONTROL_MAX_AGE
=
istr
(
'Access-Control-Max-Age'
)
ACCESS_CONTROL_ALLOW_CREDENTIALS
=
istr
(
'Access-Control-Allow-Credentials'
)
ACCESS_CONTROL_ALLOW_HEADERS
=
istr
(
'Access-Control-Allow-Headers'
)
ACCESS_CONTROL_ALLOW_METHODS
=
istr
(
'Access-Control-Allow-Methods'
)
ACCESS_CONTROL_ALLOW_ORIGIN
=
istr
(
'Access-Control-Allow-Origin'
)
ACCESS_CONTROL_EXPOSE_HEADERS
=
istr
(
'Access-Control-Expose-Headers'
)
ACCESS_CONTROL_REQUEST_HEADERS
=
istr
(
'Access-Control-Request-Headers'
)
ACCESS_CONTROL_REQUEST_METHOD
=
istr
(
'Access-Control-Request-Method'
)
AGE
=
istr
(
'Age'
)
ALLOW
=
istr
(
'Allow'
)
AUTHORIZATION
=
istr
(
'Authorization'
)
CACHE_CONTROL
=
istr
(
'Cache-Control'
)
CONNECTION
=
istr
(
'Connection'
)
CONTENT_DISPOSITION
=
istr
(
'Content-Disposition'
)
CONTENT_ENCODING
=
istr
(
'Content-Encoding'
)
CONTENT_LANGUAGE
=
istr
(
'Content-Language'
)
CONTENT_LENGTH
=
istr
(
'Content-Length'
)
CONTENT_LOCATION
=
istr
(
'Content-Location'
)
CONTENT_MD5
=
istr
(
'Content-MD5'
)
CONTENT_RANGE
=
istr
(
'Content-Range'
)
CONTENT_TRANSFER_ENCODING
=
istr
(
'Content-Transfer-Encoding'
)
CONTENT_TYPE
=
istr
(
'Content-Type'
)
COOKIE
=
istr
(
'Cookie'
)
DATE
=
istr
(
'Date'
)
DESTINATION
=
istr
(
'Destination'
)
DIGEST
=
istr
(
'Digest'
)
ETAG
=
istr
(
'Etag'
)
EXPECT
=
istr
(
'Expect'
)
EXPIRES
=
istr
(
'Expires'
)
FORWARDED
=
istr
(
'Forwarded'
)
FROM
=
istr
(
'From'
)
HOST
=
istr
(
'Host'
)
IF_MATCH
=
istr
(
'If-Match'
)
IF_MODIFIED_SINCE
=
istr
(
'If-Modified-Since'
)
IF_NONE_MATCH
=
istr
(
'If-None-Match'
)
IF_RANGE
=
istr
(
'If-Range'
)
IF_UNMODIFIED_SINCE
=
istr
(
'If-Unmodified-Since'
)
KEEP_ALIVE
=
istr
(
'Keep-Alive'
)
LAST_EVENT_ID
=
istr
(
'Last-Event-ID'
)
LAST_MODIFIED
=
istr
(
'Last-Modified'
)
LINK
=
istr
(
'Link'
)
LOCATION
=
istr
(
'Location'
)
MAX_FORWARDS
=
istr
(
'Max-Forwards'
)
ORIGIN
=
istr
(
'Origin'
)
PRAGMA
=
istr
(
'Pragma'
)
PROXY_AUTHENTICATE
=
istr
(
'Proxy-Authenticate'
)
PROXY_AUTHORIZATION
=
istr
(
'Proxy-Authorization'
)
RANGE
=
istr
(
'Range'
)
REFERER
=
istr
(
'Referer'
)
RETRY_AFTER
=
istr
(
'Retry-After'
)
SEC_WEBSOCKET_ACCEPT
=
istr
(
'Sec-WebSocket-Accept'
)
SEC_WEBSOCKET_VERSION
=
istr
(
'Sec-WebSocket-Version'
)
SEC_WEBSOCKET_PROTOCOL
=
istr
(
'Sec-WebSocket-Protocol'
)
SEC_WEBSOCKET_EXTENSIONS
=
istr
(
'Sec-WebSocket-Extensions'
)
SEC_WEBSOCKET_KEY
=
istr
(
'Sec-WebSocket-Key'
)
SEC_WEBSOCKET_KEY1
=
istr
(
'Sec-WebSocket-Key1'
)
SERVER
=
istr
(
'Server'
)
SET_COOKIE
=
istr
(
'Set-Cookie'
)
TE
=
istr
(
'TE'
)
TRAILER
=
istr
(
'Trailer'
)
TRANSFER_ENCODING
=
istr
(
'Transfer-Encoding'
)
UPGRADE
=
istr
(
'Upgrade'
)
WEBSOCKET
=
istr
(
'WebSocket'
)
URI
=
istr
(
'URI'
)
USER_AGENT
=
istr
(
'User-Agent'
)
VARY
=
istr
(
'Vary'
)
VIA
=
istr
(
'Via'
)
WANT_DIGEST
=
istr
(
'Want-Digest'
)
WARNING
=
istr
(
'Warning'
)
WWW_AUTHENTICATE
=
istr
(
'WWW-Authenticate'
)
X_FORWARDED_FOR
=
istr
(
'X-Forwarded-For'
)
X_FORWARDED_HOST
=
istr
(
'X-Forwarded-Host'
)
X_FORWARDED_PROTO
=
istr
(
'X-Forwarded-Proto'
)
Flaskserver/venv/Lib/site-packages/aiohttp/helpers.py
deleted
100644 → 0
View file @
b41c932e
"""Various helper functions"""
import
asyncio
import
base64
import
binascii
import
cgi
import
datetime
import
functools
import
inspect
import
netrc
import
os
import
platform
import
re
import
sys
import
time
import
warnings
import
weakref
from
collections
import
namedtuple
from
contextlib
import
suppress
from
math
import
ceil
from
pathlib
import
Path
from
types
import
TracebackType
from
typing
import
(
# noqa
Any
,
Callable
,
Dict
,
Iterable
,
Iterator
,
List
,
Mapping
,
Optional
,
Pattern
,
Set
,
Tuple
,
Type
,
TypeVar
,
Union
,
cast
,
)
from
urllib.parse
import
quote
from
urllib.request
import
getproxies
import
async_timeout
import
attr
from
multidict
import
MultiDict
,
MultiDictProxy
from
yarl
import
URL
from
.
import
hdrs
from
.log
import
client_logger
,
internal_logger
from
.typedefs
import
PathLike
# noqa
__all__
=
(
'BasicAuth'
,
'ChainMapProxy'
)
PY_36
=
sys
.
version_info
>=
(
3
,
6
)
PY_37
=
sys
.
version_info
>=
(
3
,
7
)
PY_38
=
sys
.
version_info
>=
(
3
,
8
)
if
not
PY_37
:
import
idna_ssl
idna_ssl
.
patch_match_hostname
()
try
:
from
typing
import
ContextManager
except
ImportError
:
from
typing_extensions
import
ContextManager
def
all_tasks
(
loop
:
Optional
[
asyncio
.
AbstractEventLoop
]
=
None
)
->
Set
[
'asyncio.Task[Any]'
]:
tasks
=
list
(
asyncio
.
Task
.
all_tasks
(
loop
))
return
{
t
for
t
in
tasks
if
not
t
.
done
()}
if
PY_37
:
all_tasks
=
getattr
(
asyncio
,
'all_tasks'
)
# noqa
_T
=
TypeVar
(
'_T'
)
sentinel
=
object
()
# type: Any
NO_EXTENSIONS
=
bool
(
os
.
environ
.
get
(
'AIOHTTP_NO_EXTENSIONS'
))
# type: bool
# N.B. sys.flags.dev_mode is available on Python 3.7+, use getattr
# for compatibility with older versions
DEBUG
=
(
getattr
(
sys
.
flags
,
'dev_mode'
,
False
)
or
(
not
sys
.
flags
.
ignore_environment
and
bool
(
os
.
environ
.
get
(
'PYTHONASYNCIODEBUG'
))))
# type: bool
CHAR
=
set
(
chr
(
i
)
for
i
in
range
(
0
,
128
))
CTL
=
set
(
chr
(
i
)
for
i
in
range
(
0
,
32
))
|
{
chr
(
127
),
}
SEPARATORS
=
{
'('
,
')'
,
'<'
,
'>'
,
'@'
,
','
,
';'
,
':'
,
'
\\
'
,
'"'
,
'/'
,
'['
,
']'
,
'?'
,
'='
,
'{'
,
'}'
,
' '
,
chr
(
9
)}
TOKEN
=
CHAR
^
CTL
^
SEPARATORS
coroutines
=
asyncio
.
coroutines
old_debug
=
coroutines
.
_DEBUG
# type: ignore
# prevent "coroutine noop was never awaited" warning.
coroutines
.
_DEBUG
=
False
# type: ignore
@
asyncio
.
coroutine
def
noop
(
*
args
,
**
kwargs
):
# type: ignore
return
# type: ignore
async
def
noop2
(
*
args
:
Any
,
**
kwargs
:
Any
)
->
None
:
return
coroutines
.
_DEBUG
=
old_debug
# type: ignore
class
BasicAuth
(
namedtuple
(
'BasicAuth'
,
[
'login'
,
'password'
,
'encoding'
])):
"""Http basic authentication helper."""
def
__new__
(
cls
,
login
:
str
,
password
:
str
=
''
,
encoding
:
str
=
'latin1'
)
->
'BasicAuth'
:
if
login
is
None
:
raise
ValueError
(
'None is not allowed as login value'
)
if
password
is
None
:
raise
ValueError
(
'None is not allowed as password value'
)
if
':'
in
login
:
raise
ValueError
(
'A ":" is not allowed in login (RFC 1945#section-11.1)'
)
return
super
().
__new__
(
cls
,
login
,
password
,
encoding
)
@
classmethod
def
decode
(
cls
,
auth_header
:
str
,
encoding
:
str
=
'latin1'
)
->
'BasicAuth'
:
"""Create a BasicAuth object from an Authorization HTTP header."""
try
:
auth_type
,
encoded_credentials
=
auth_header
.
split
(
' '
,
1
)
except
ValueError
:
raise
ValueError
(
'Could not parse authorization header.'
)
if
auth_type
.
lower
()
!=
'basic'
:
raise
ValueError
(
'Unknown authorization method %s'
%
auth_type
)
try
:
decoded
=
base64
.
b64decode
(
encoded_credentials
.
encode
(
'ascii'
),
validate
=
True
).
decode
(
encoding
)
except
binascii
.
Error
:
raise
ValueError
(
'Invalid base64 encoding.'
)
try
:
# RFC 2617 HTTP Authentication
# https://www.ietf.org/rfc/rfc2617.txt
# the colon must be present, but the username and password may be
# otherwise blank.
username
,
password
=
decoded
.
split
(
':'
,
1
)
except
ValueError
:
raise
ValueError
(
'Invalid credentials.'
)
return
cls
(
username
,
password
,
encoding
=
encoding
)
@
classmethod
def
from_url
(
cls
,
url
:
URL
,
*
,
encoding
:
str
=
'latin1'
)
->
Optional
[
'BasicAuth'
]:
"""Create BasicAuth from url."""
if
not
isinstance
(
url
,
URL
):
raise
TypeError
(
"url should be yarl.URL instance"
)
if
url
.
user
is
None
:
return
None
return
cls
(
url
.
user
,
url
.
password
or
''
,
encoding
=
encoding
)
def
encode
(
self
)
->
str
:
"""Encode credentials."""
creds
=
(
'%s:%s'
%
(
self
.
login
,
self
.
password
)).
encode
(
self
.
encoding
)
return
'Basic %s'
%
base64
.
b64encode
(
creds
).
decode
(
self
.
encoding
)
def
strip_auth_from_url
(
url
:
URL
)
->
Tuple
[
URL
,
Optional
[
BasicAuth
]]:
auth
=
BasicAuth
.
from_url
(
url
)
if
auth
is
None
:
return
url
,
None
else
:
return
url
.
with_user
(
None
),
auth
def
netrc_from_env
()
->
Optional
[
netrc
.
netrc
]:
"""Attempt to load the netrc file from the path specified by the env-var
NETRC or in the default location in the user's home directory.
Returns None if it couldn't be found or fails to parse.
"""
netrc_env
=
os
.
environ
.
get
(
'NETRC'
)