update
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
31
.CondaPkg/env/Lib/http/client.py
vendored
31
.CondaPkg/env/Lib/http/client.py
vendored
@@ -172,6 +172,13 @@ def _encode(data, name='data'):
|
||||
"if you want to send it encoded in UTF-8." %
|
||||
(name.title(), data[err.start:err.end], name)) from None
|
||||
|
||||
def _strip_ipv6_iface(enc_name: bytes) -> bytes:
|
||||
"""Remove interface scope from IPv6 address."""
|
||||
enc_name, percent, _ = enc_name.partition(b"%")
|
||||
if percent:
|
||||
assert enc_name.startswith(b'['), enc_name
|
||||
enc_name += b']'
|
||||
return enc_name
|
||||
|
||||
class HTTPMessage(email.message.Message):
|
||||
# XXX The only usage of this method is in
|
||||
@@ -658,6 +665,8 @@ class HTTPResponse(io.BufferedIOBase):
|
||||
self._close_conn()
|
||||
elif self.length is not None:
|
||||
self.length -= len(result)
|
||||
if not self.length:
|
||||
self._close_conn()
|
||||
return result
|
||||
|
||||
def peek(self, n=-1):
|
||||
@@ -682,6 +691,8 @@ class HTTPResponse(io.BufferedIOBase):
|
||||
self._close_conn()
|
||||
elif self.length is not None:
|
||||
self.length -= len(result)
|
||||
if not self.length:
|
||||
self._close_conn()
|
||||
return result
|
||||
|
||||
def _read1_chunked(self, n):
|
||||
@@ -925,17 +936,23 @@ class HTTPConnection:
|
||||
host = host[:i]
|
||||
else:
|
||||
port = self.default_port
|
||||
if host and host[0] == '[' and host[-1] == ']':
|
||||
host = host[1:-1]
|
||||
if host and host[0] == '[' and host[-1] == ']':
|
||||
host = host[1:-1]
|
||||
|
||||
return (host, port)
|
||||
|
||||
def set_debuglevel(self, level):
|
||||
self.debuglevel = level
|
||||
|
||||
def _wrap_ipv6(self, ip):
|
||||
if b':' in ip and ip[0] != b'['[0]:
|
||||
return b"[" + ip + b"]"
|
||||
return ip
|
||||
|
||||
def _tunnel(self):
|
||||
connect = b"CONNECT %s:%d %s\r\n" % (
|
||||
self._tunnel_host.encode("idna"), self._tunnel_port,
|
||||
self._wrap_ipv6(self._tunnel_host.encode("idna")),
|
||||
self._tunnel_port,
|
||||
self._http_vsn_str.encode("ascii"))
|
||||
headers = [connect]
|
||||
for header, value in self._tunnel_headers.items():
|
||||
@@ -1194,7 +1211,7 @@ class HTTPConnection:
|
||||
netloc_enc = netloc.encode("ascii")
|
||||
except UnicodeEncodeError:
|
||||
netloc_enc = netloc.encode("idna")
|
||||
self.putheader('Host', netloc_enc)
|
||||
self.putheader('Host', _strip_ipv6_iface(netloc_enc))
|
||||
else:
|
||||
if self._tunnel_host:
|
||||
host = self._tunnel_host
|
||||
@@ -1210,9 +1227,9 @@ class HTTPConnection:
|
||||
|
||||
# As per RFC 273, IPv6 address should be wrapped with []
|
||||
# when used as Host header
|
||||
|
||||
if host.find(':') >= 0:
|
||||
host_enc = b'[' + host_enc + b']'
|
||||
host_enc = self._wrap_ipv6(host_enc)
|
||||
if ":" in host:
|
||||
host_enc = _strip_ipv6_iface(host_enc)
|
||||
|
||||
if port == self.default_port:
|
||||
self.putheader('Host', host_enc)
|
||||
|
||||
36
.CondaPkg/env/Lib/http/cookies.py
vendored
36
.CondaPkg/env/Lib/http/cookies.py
vendored
@@ -184,8 +184,13 @@ def _quote(str):
|
||||
return '"' + str.translate(_Translator) + '"'
|
||||
|
||||
|
||||
_OctalPatt = re.compile(r"\\[0-3][0-7][0-7]")
|
||||
_QuotePatt = re.compile(r"[\\].")
|
||||
_unquote_sub = re.compile(r'\\(?:([0-3][0-7][0-7])|(.))').sub
|
||||
|
||||
def _unquote_replace(m):
|
||||
if m[1]:
|
||||
return chr(int(m[1], 8))
|
||||
else:
|
||||
return m[2]
|
||||
|
||||
def _unquote(str):
|
||||
# If there aren't any doublequotes,
|
||||
@@ -205,36 +210,13 @@ def _unquote(str):
|
||||
# \012 --> \n
|
||||
# \" --> "
|
||||
#
|
||||
i = 0
|
||||
n = len(str)
|
||||
res = []
|
||||
while 0 <= i < n:
|
||||
o_match = _OctalPatt.search(str, i)
|
||||
q_match = _QuotePatt.search(str, i)
|
||||
if not o_match and not q_match: # Neither matched
|
||||
res.append(str[i:])
|
||||
break
|
||||
# else:
|
||||
j = k = -1
|
||||
if o_match:
|
||||
j = o_match.start(0)
|
||||
if q_match:
|
||||
k = q_match.start(0)
|
||||
if q_match and (not o_match or k < j): # QuotePatt matched
|
||||
res.append(str[i:k])
|
||||
res.append(str[k+1])
|
||||
i = k + 2
|
||||
else: # OctalPatt matched
|
||||
res.append(str[i:j])
|
||||
res.append(chr(int(str[j+1:j+4], 8)))
|
||||
i = j + 4
|
||||
return _nulljoin(res)
|
||||
return _unquote_sub(_unquote_replace, str)
|
||||
|
||||
# The _getdate() routine is used to set the expiration time in the cookie's HTTP
|
||||
# header. By default, _getdate() returns the current time in the appropriate
|
||||
# "expires" format for a Set-Cookie header. The one optional argument is an
|
||||
# offset from now, in seconds. For example, an offset of -3600 means "one hour
|
||||
# ago". The offset may be a floating point number.
|
||||
# ago". The offset may be a floating-point number.
|
||||
#
|
||||
|
||||
_weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||
|
||||
Reference in New Issue
Block a user