mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
Проверка 09.02.2025
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
__version__ = "3.11.11"
|
||||
__version__ = "3.11.12"
|
||||
|
||||
from typing import TYPE_CHECKING, Tuple
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1471,106 +1471,80 @@ class _SessionRequestContextManager:
|
||||
await self._session.close()
|
||||
|
||||
|
||||
def request(
|
||||
method: str,
|
||||
url: StrOrURL,
|
||||
*,
|
||||
params: Query = None,
|
||||
data: Any = None,
|
||||
json: Any = None,
|
||||
headers: Optional[LooseHeaders] = None,
|
||||
skip_auto_headers: Optional[Iterable[str]] = None,
|
||||
auth: Optional[BasicAuth] = None,
|
||||
allow_redirects: bool = True,
|
||||
max_redirects: int = 10,
|
||||
compress: Optional[str] = None,
|
||||
chunked: Optional[bool] = None,
|
||||
expect100: bool = False,
|
||||
raise_for_status: Optional[bool] = None,
|
||||
read_until_eof: bool = True,
|
||||
proxy: Optional[StrOrURL] = None,
|
||||
proxy_auth: Optional[BasicAuth] = None,
|
||||
timeout: Union[ClientTimeout, object] = sentinel,
|
||||
cookies: Optional[LooseCookies] = None,
|
||||
version: HttpVersion = http.HttpVersion11,
|
||||
connector: Optional[BaseConnector] = None,
|
||||
read_bufsize: Optional[int] = None,
|
||||
loop: Optional[asyncio.AbstractEventLoop] = None,
|
||||
max_line_size: int = 8190,
|
||||
max_field_size: int = 8190,
|
||||
) -> _SessionRequestContextManager:
|
||||
"""Constructs and sends a request.
|
||||
if sys.version_info >= (3, 11) and TYPE_CHECKING:
|
||||
|
||||
Returns response object.
|
||||
method - HTTP method
|
||||
url - request url
|
||||
params - (optional) Dictionary or bytes to be sent in the query
|
||||
string of the new request
|
||||
data - (optional) Dictionary, bytes, or file-like object to
|
||||
send in the body of the request
|
||||
json - (optional) Any json compatible python object
|
||||
headers - (optional) Dictionary of HTTP Headers to send with
|
||||
the request
|
||||
cookies - (optional) Dict object to send with the request
|
||||
auth - (optional) BasicAuth named tuple represent HTTP Basic Auth
|
||||
auth - aiohttp.helpers.BasicAuth
|
||||
allow_redirects - (optional) If set to False, do not follow
|
||||
redirects
|
||||
version - Request HTTP version.
|
||||
compress - Set to True if request has to be compressed
|
||||
with deflate encoding.
|
||||
chunked - Set to chunk size for chunked transfer encoding.
|
||||
expect100 - Expect 100-continue response from server.
|
||||
connector - BaseConnector sub-class instance to support
|
||||
connection pooling.
|
||||
read_until_eof - Read response until eof if response
|
||||
does not have Content-Length header.
|
||||
loop - Optional event loop.
|
||||
timeout - Optional ClientTimeout settings structure, 5min
|
||||
total timeout by default.
|
||||
Usage::
|
||||
>>> import aiohttp
|
||||
>>> resp = await aiohttp.request('GET', 'http://python.org/')
|
||||
>>> resp
|
||||
<ClientResponse(python.org/) [200]>
|
||||
>>> data = await resp.read()
|
||||
"""
|
||||
connector_owner = False
|
||||
if connector is None:
|
||||
connector_owner = True
|
||||
connector = TCPConnector(loop=loop, force_close=True)
|
||||
def request(
|
||||
method: str,
|
||||
url: StrOrURL,
|
||||
*,
|
||||
version: HttpVersion = http.HttpVersion11,
|
||||
connector: Optional[BaseConnector] = None,
|
||||
loop: Optional[asyncio.AbstractEventLoop] = None,
|
||||
**kwargs: Unpack[_RequestOptions],
|
||||
) -> _SessionRequestContextManager: ...
|
||||
|
||||
session = ClientSession(
|
||||
loop=loop,
|
||||
cookies=cookies,
|
||||
version=version,
|
||||
timeout=timeout,
|
||||
connector=connector,
|
||||
connector_owner=connector_owner,
|
||||
)
|
||||
else:
|
||||
|
||||
return _SessionRequestContextManager(
|
||||
session._request(
|
||||
method,
|
||||
url,
|
||||
params=params,
|
||||
data=data,
|
||||
json=json,
|
||||
headers=headers,
|
||||
skip_auto_headers=skip_auto_headers,
|
||||
auth=auth,
|
||||
allow_redirects=allow_redirects,
|
||||
max_redirects=max_redirects,
|
||||
compress=compress,
|
||||
chunked=chunked,
|
||||
expect100=expect100,
|
||||
raise_for_status=raise_for_status,
|
||||
read_until_eof=read_until_eof,
|
||||
proxy=proxy,
|
||||
proxy_auth=proxy_auth,
|
||||
read_bufsize=read_bufsize,
|
||||
max_line_size=max_line_size,
|
||||
max_field_size=max_field_size,
|
||||
),
|
||||
session,
|
||||
)
|
||||
def request(
|
||||
method: str,
|
||||
url: StrOrURL,
|
||||
*,
|
||||
version: HttpVersion = http.HttpVersion11,
|
||||
connector: Optional[BaseConnector] = None,
|
||||
loop: Optional[asyncio.AbstractEventLoop] = None,
|
||||
**kwargs: Any,
|
||||
) -> _SessionRequestContextManager:
|
||||
"""Constructs and sends a request.
|
||||
|
||||
Returns response object.
|
||||
method - HTTP method
|
||||
url - request url
|
||||
params - (optional) Dictionary or bytes to be sent in the query
|
||||
string of the new request
|
||||
data - (optional) Dictionary, bytes, or file-like object to
|
||||
send in the body of the request
|
||||
json - (optional) Any json compatible python object
|
||||
headers - (optional) Dictionary of HTTP Headers to send with
|
||||
the request
|
||||
cookies - (optional) Dict object to send with the request
|
||||
auth - (optional) BasicAuth named tuple represent HTTP Basic Auth
|
||||
auth - aiohttp.helpers.BasicAuth
|
||||
allow_redirects - (optional) If set to False, do not follow
|
||||
redirects
|
||||
version - Request HTTP version.
|
||||
compress - Set to True if request has to be compressed
|
||||
with deflate encoding.
|
||||
chunked - Set to chunk size for chunked transfer encoding.
|
||||
expect100 - Expect 100-continue response from server.
|
||||
connector - BaseConnector sub-class instance to support
|
||||
connection pooling.
|
||||
read_until_eof - Read response until eof if response
|
||||
does not have Content-Length header.
|
||||
loop - Optional event loop.
|
||||
timeout - Optional ClientTimeout settings structure, 5min
|
||||
total timeout by default.
|
||||
Usage::
|
||||
>>> import aiohttp
|
||||
>>> async with aiohttp.request('GET', 'http://python.org/') as resp:
|
||||
... print(resp)
|
||||
... data = await resp.read()
|
||||
<ClientResponse(https://www.python.org/) [200 OK]>
|
||||
"""
|
||||
connector_owner = False
|
||||
if connector is None:
|
||||
connector_owner = True
|
||||
connector = TCPConnector(loop=loop, force_close=True)
|
||||
|
||||
session = ClientSession(
|
||||
loop=loop,
|
||||
cookies=kwargs.pop("cookies", None),
|
||||
version=version,
|
||||
timeout=kwargs.pop("timeout", sentinel),
|
||||
connector=connector,
|
||||
connector_owner=connector_owner,
|
||||
)
|
||||
|
||||
return _SessionRequestContextManager(
|
||||
session._request(method, url, **kwargs),
|
||||
session,
|
||||
)
|
||||
|
@@ -1,6 +1,7 @@
|
||||
"""Http related parsers and protocol."""
|
||||
|
||||
import asyncio
|
||||
import sys
|
||||
import zlib
|
||||
from typing import ( # noqa
|
||||
Any,
|
||||
@@ -24,6 +25,17 @@ from .helpers import NO_EXTENSIONS
|
||||
__all__ = ("StreamWriter", "HttpVersion", "HttpVersion10", "HttpVersion11")
|
||||
|
||||
|
||||
MIN_PAYLOAD_FOR_WRITELINES = 2048
|
||||
IS_PY313_BEFORE_313_2 = (3, 13, 0) <= sys.version_info < (3, 13, 2)
|
||||
IS_PY_BEFORE_312_9 = sys.version_info < (3, 12, 9)
|
||||
SKIP_WRITELINES = IS_PY313_BEFORE_313_2 or IS_PY_BEFORE_312_9
|
||||
# writelines is not safe for use
|
||||
# on Python 3.12+ until 3.12.9
|
||||
# on Python 3.13+ until 3.13.2
|
||||
# and on older versions it not any faster than write
|
||||
# CVE-2024-12254: https://github.com/python/cpython/pull/127656
|
||||
|
||||
|
||||
class HttpVersion(NamedTuple):
|
||||
major: int
|
||||
minor: int
|
||||
@@ -90,7 +102,10 @@ class StreamWriter(AbstractStreamWriter):
|
||||
transport = self._protocol.transport
|
||||
if transport is None or transport.is_closing():
|
||||
raise ClientConnectionResetError("Cannot write to closing transport")
|
||||
transport.write(b"".join(chunks))
|
||||
if SKIP_WRITELINES or size < MIN_PAYLOAD_FOR_WRITELINES:
|
||||
transport.write(b"".join(chunks))
|
||||
else:
|
||||
transport.writelines(chunks)
|
||||
|
||||
async def write(
|
||||
self,
|
||||
|
@@ -979,7 +979,7 @@ class MultipartWriter(Payload):
|
||||
return "".join(
|
||||
"--"
|
||||
+ self.boundary
|
||||
+ "\n"
|
||||
+ "\r\n"
|
||||
+ part._binary_headers.decode(encoding, errors)
|
||||
+ part.decode()
|
||||
for part, _e, _te in self._parts
|
||||
|
@@ -555,6 +555,7 @@ class EmptyStreamReader(StreamReader): # lgtm [py/missing-call-to-init]
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._read_eof_chunk = False
|
||||
self.total_bytes = 0
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<%s>" % self.__class__.__name__
|
||||
|
@@ -694,9 +694,13 @@ class RequestHandler(BaseProtocol):
|
||||
# or encrypted traffic to an HTTP port. This is expected
|
||||
# to happen when connected to the public internet so we log
|
||||
# it at the debug level as to not fill logs with noise.
|
||||
self.logger.debug("Error handling request", exc_info=exc)
|
||||
self.logger.debug(
|
||||
"Error handling request from %s", request.remote, exc_info=exc
|
||||
)
|
||||
else:
|
||||
self.log_exception("Error handling request", exc_info=exc)
|
||||
self.log_exception(
|
||||
"Error handling request from %s", request.remote, exc_info=exc
|
||||
)
|
||||
|
||||
# some data already got sent, connection is broken
|
||||
if request.writer.output_size > 0:
|
||||
|
Reference in New Issue
Block a user