Async http client/server framework (asyncio)
Project description
Async http client/server framework
Key Features
Supports both client and server side of HTTP protocol.
Supports both client and server Web-Sockets out-of-the-box and avoids Callback Hell.
Provides Web-server with middlewares and plugable routing.
Getting started
Client
To get something from the web:
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('http://python.org') as response:
print("Status:", response.status)
print("Content-type:", response.headers['content-type'])
html = await response.text()
print("Body:", html[:15], "...")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
This prints:
Status: 200
Content-type: text/html; charset=utf-8
Body: <!doctype html> ...
Coming from requests ? Read why we need so many lines.
Server
An example using a simple server:
# examples/server_simple.py
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(text=text)
async def wshandle(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == web.WSMsgType.text:
await ws.send_str("Hello, {}".format(msg.data))
elif msg.type == web.WSMsgType.binary:
await ws.send_bytes(msg.data)
elif msg.type == web.WSMsgType.close:
break
return ws
app = web.Application()
app.add_routes([web.get('/', handle),
web.get('/echo', wshandle),
web.get('/{name}', handle)])
if __name__ == '__main__':
web.run_app(app)
Documentation
Demos
External links
Feel free to make a Pull Request for adding your link to these pages!
Communication channels
aio-libs discourse group: https://aio-libs.discourse.group
gitter chat https://gitter.im/aio-libs/Lobby
We support Stack Overflow. Please add aiohttp tag to your question there.
Requirements
Python >= 3.6
Optionally you may install the cChardet and aiodns libraries (highly recommended for sake of speed).
License
aiohttp is offered under the Apache 2 license.
Keepsafe
The aiohttp community would like to thank Keepsafe (https://www.getkeepsafe.com) for its support in the early days of the project.
Source code
The latest developer version is available in a GitHub repository: https://github.com/aio-libs/aiohttp
Benchmarks
If you are interested in efficiency, the AsyncIO community maintains a list of benchmarks on the official wiki: https://github.com/python/asyncio/wiki/Benchmarks
Changelog
3.7.2 (2020-10-27)
Bugfixes
Fixed static files handling for loops without .sendfile() support #5149
3.7.1 (2020-10-25)
Bugfixes
Fixed a type error caused by the conditional import of Protocol. #5111
Server doesn’t send Content-Length for 1xx or 204 #4901
Fix run_app typing #4957
Always require typing_extensions library. #5107
Fix a variable-shadowing bug causing ThreadedResolver.resolve to return the resolved IP as the hostname in each record, which prevented validation of HTTPS connections. #5110
Added annotations to all public attributes. #5115
Fix flaky test_when_timeout_smaller_second #5116
Ensure sending a zero byte file does not throw an exception #5124
Fix a bug in web.run_app() about Python version checking on Windows #5127
3.7.0 (2020-10-24)
Features
Response headers are now prepared prior to running on_response_prepare hooks, directly before headers are sent to the client. #1958
Add a quote_cookie option to CookieJar, a way to skip quotation wrapping of cookies containing special characters. #2571
Call AccessLogger.log with the current exception available from sys.exc_info(). #3557
web.UrlDispatcher.add_routes and web.Application.add_routes return a list of registered AbstractRoute instances. AbstractRouteDef.register (and all subclasses) return a list of registered resources registered resource. #3866
Added properties of default ClientSession params to ClientSession class so it is available for introspection #3882
Don’t cancel web handler on peer disconnection, raise OSError on reading/writing instead. #4080
Implement BaseRequest.get_extra_info() to access a protocol transports’ extra info. #4189
Added ClientSession.timeout property. #4191
allow use of SameSite in cookies. #4224
Use loop.sendfile() instead of custom implementation if available. #4269
Apply SO_REUSEADDR to test server’s socket. #4393
Use .raw_host instead of slower .host in client API #4402
Allow configuring the buffer size of input stream by passing read_bufsize argument. #4453
Pass tests on Python 3.8 for Windows. #4513
Add method and url attributes to TraceRequestChunkSentParams and TraceResponseChunkReceivedParams. #4674
Add ClientResponse.ok property for checking status code under 400. #4711
Don’t ceil timeouts that are smaller than 5 seconds. #4850
TCPSite now listens by default on all interfaces instead of just IPv4 when None is passed in as the host. #4894
Bump http_parser to 2.9.4 #5070
Bugfixes
Fix keepalive connections not being closed in time #3296
Fix failed websocket handshake leaving connection hanging. #3380
Fix tasks cancellation order on exit. The run_app task needs to be cancelled first for cleanup hooks to run with all tasks intact. #3805
Don’t start heartbeat until _writer is set #4062
Fix handling of multipart file uploads without a content type. #4089
Preserve view handler function attributes across middlewares #4174
Fix the string representation of ServerDisconnectedError. #4175
Raising RuntimeError when trying to get encoding from not read body #4214
Remove warning messages from noop. #4282
Raise ClientPayloadError if FormData re-processed. #4345
Fix a warning about unfinished task in web_protocol.py #4408
Fixed ‘deflate’ compression. According to RFC 2616 now. #4506
Fixed OverflowError on platforms with 32-bit time_t #4515
Fixed request.body_exists returns wrong value for methods without body. #4528
Fix connecting to link-local IPv6 addresses. #4554
Fix a problem with connection waiters that are never awaited. #4562
Always make sure transport is not closing before reuse a connection.
Reuse a protocol based on keepalive in headers is unreliable. For example, uWSGI will not support keepalive even it serves a HTTP 1.1 request, except explicitly configure uWSGI with a --http-keepalive option.
Servers designed like uWSGI could cause aiohttp intermittently raise a ConnectionResetException when the protocol poll runs out and some protocol is reused. #4587
Handle the last CRLF correctly even if it is received via separate TCP segment. #4630
Fix the register_resource function to validate route name before splitting it so that route name can include python keywords. #4691
Improve typing annotations for web.Request, aiohttp.ClientResponse and multipart module. #4736
Fix resolver task is not awaited when connector is cancelled #4795
Fix a bug “Aiohttp doesn’t return any error on invalid request methods” #4798
Fix HEAD requests for static content. #4809
Fix incorrect size calculation for memoryview #4890
Add HTTPMove to _all__. #4897
Fixed the type annotations in the tracing module. #4912
Fix typing for multipart __aiter__. #4931
Fix for race condition on connections in BaseConnector that leads to exceeding the connection limit. #4936
Add forced UTF-8 encoding for application/rdap+json responses. #4938
Fix inconsistency between Python and C http request parsers in parsing pct-encoded URL. #4972
Fix connection closing issue in HEAD request. #5012
Fix type hint on BaseRunner.addresses (from List[str] to List[Any]) #5086
Make web.run_app() more responsive to Ctrl+C on Windows for Python < 3.8. It slightly increases CPU load as a side effect. #5098
Improved Documentation
Fix example code in client quick-start #3376
Updated the docs so there is no contradiction in ttl_dns_cache default value #3512
Add ‘Deploy with SSL’ to docs. #4201
Change typing of the secure argument on StreamResponse.set_cookie from Optional[str] to Optional[bool] #4204
Changes ttl_dns_cache type from int to Optional[int]. #4270
Simplify README hello word example and add a documentation page for people coming from requests. #4272
Improve some code examples in the documentation involving websockets and starting a simple HTTP site with an AppRunner. #4285
Fix typo in code example in Multipart docs #4312
Fix code example in Multipart section. #4314
Update contributing guide so new contributors read the most recent version of that guide. Update command used to create test coverage reporting. #4810
Spelling: Change “canonize” to “canonicalize”. #4986
Add aiohttp-sse-client library to third party usage list. #5084
Misc
3.6.3 (2020-10-12)
Bugfixes
Pin yarl to <1.6.0 to avoid buggy behavior that will be fixed by the next aiohttp release.
3.6.2 (2019-10-09)
Features
Bugfixes
Reset the sock_read timeout each time data is received for a aiohttp.ClientResponse. #3808
Fix handling of expired cookies so they are not stored in CookieJar. #4063
Fix misleading message in the string representation of ClientConnectorError; self.ssl == None means default SSL context, not SSL disabled #4097
Don’t clobber HTTP status when using FileResponse. #4106
Improved Documentation
Misc
3.6.1 (2019-09-19)
Features
Compatibility with Python 3.8. #4056
Bugfixes
Improved Documentation
Provide pytest-aiohttp namespace for pytest fixtures in docs. #3723
3.6.0 (2019-09-06)
Features
Add support for Named Pipes (Site and Connector) under Windows. This feature requires Proactor event loop to work. #3629
Removed Transfer-Encoding: chunked header from websocket responses to be compatible with more http proxy servers. #3798
Accept non-GET request for starting websocket handshake on server side. #3980
Bugfixes
Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. #3532
Fix an issue where cookies would sometimes not be set during a redirect. #3576
Change normalize_path_middleware to use 308 redirect instead of 301.
This behavior should prevent clients from being unable to use PUT/POST methods on endpoints that are redirected because of a trailing slash. #3579
Drop the processed task from all_tasks() list early. It prevents logging about a task with unhandled exception when the server is used in conjunction with asyncio.run(). #3587
Signal type annotation changed from Signal[Callable[['TraceConfig'], Awaitable[None]]] to Signal[Callable[ClientSession, SimpleNamespace, ...]. #3595
Use sanitized URL as Location header in redirects #3614
Improve typing annotations for multipart.py along with changes required by mypy in files that references multipart.py. #3621
Close session created inside aiohttp.request when unhandled exception occurs #3628
Cleanup per-chunk data in generic data read. Memory leak fixed. #3631
Use correct type for add_view and family #3633
Fix _keepalive field in __slots__ of RequestHandler. #3644
Properly handle ConnectionResetError, to silence the “Cannot write to closing transport” exception when clients disconnect uncleanly. #3648
Suppress pytest warnings due to test_utils classes #3660
Fix overshadowing of overlapped sub-application prefixes. #3701
Fixed return type annotation for WSMessage.json() #3720
Properly expose TooManyRedirects publicly as documented. #3818
Fix missing brackets for IPv6 in proxy CONNECT request #3841
Make the signature of aiohttp.test_utils.TestClient.request match asyncio.ClientSession.request according to the docs #3852
Use correct style for re-exported imports, makes mypy --strict mode happy. #3868
Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View #3880
Made cython HTTP parser set Reason-Phrase of the response to an empty string if it is missing. #3906
Add URL to the string representation of ClientResponseError. #3959
Accept istr keys in LooseHeaders type hints. #3976
Fixed race conditions in _resolve_host caching and throttling when tracing is enabled. #4013
For URLs like “unix://localhost/…” set Host HTTP header to “localhost” instead of “localhost:None”. #4039
Improved Documentation
Modify documentation for Background Tasks to remove deprecated usage of event loop. #3526
use if __name__ == '__main__': in server examples. #3775
Update documentation reference to the default access logger. #3783
Improve documentation for web.BaseRequest.path and web.BaseRequest.raw_path. #3791
Removed deprecation warning in tracing example docs #3964
3.5.4 (2019-01-12)
Bugfixes
Fix stream .read() / .readany() / .iter_any() which used to return a partial content only in case of compressed content #3525
3.5.3 (2019-01-10)
Bugfixes
Fix type stubs for aiohttp.web.run_app(access_log=True) and fix edge case of access_log=True and the event loop being in debug mode. #3504
Fix aiohttp.ClientTimeout type annotations to accept None for fields #3511
Send custom per-request cookies even if session jar is empty #3515
Restore Linux binary wheels publishing on PyPI
3.5.2 (2019-01-08)
Features
Bugfixes
Preserve MultipartWriter parts headers on write. Refactor the way how Payload.headers are handled. Payload instances now always have headers and Content-Type defined. Fix Payload Content-Disposition header reset after initial creation. #3035
Log suppressed exceptions in GunicornWebWorker. #3464
Remove wildcard imports. #3468
Use the same task for app initialization and web server handling in gunicorn workers. It allows to use Python3.7 context vars smoothly. #3471
Fix handling of chunked+gzipped response when first chunk does not give uncompressed data #3477
Replace collections.MutableMapping with collections.abc.MutableMapping to avoid a deprecation warning. #3480
Payload.size type annotation changed from Optional[float] to Optional[int]. #3484
Ignore done tasks when cancels pending activities on web.run_app finalization. #3497
Improved Documentation
Add documentation for aiohttp.web.HTTPException. #3490
Misc
3.5.1 (2018-12-24)
Fix a regression about ClientSession._requote_redirect_url modification in debug mode.
3.5.0 (2018-12-22)
Features
The library type annotations are checked in strict mode now.
Add support for setting cookies for individual request (#2387)
Application.add_domain implementation (#2809)
The default app in the request returned by test_utils.make_mocked_request can now have objects assigned to it and retrieved using the [] operator. (#3174)
Make request.url accessible when transport is closed. (#3177)
Add zlib_executor_size argument to Response constructor to allow compression to run in a background executor to avoid blocking the main thread and potentially triggering health check failures. (#3205)
Enable users to set ClientTimeout in aiohttp.request (#3213)
Don’t raise a warning if NETRC environment variable is not set and ~/.netrc file doesn’t exist. (#3267)
Add default logging handler to web.run_app If the Application.debug` flag is set and the default logger aiohttp.access is used, access logs will now be output using a stderr StreamHandler if no handlers are attached. Furthermore, if the default logger has no log level set, the log level will be set to DEBUG. (#3324)
Add method argument to session.ws_connect(). Sometimes server API requires a different HTTP method for WebSocket connection establishment. For example, Docker exec needs POST. (#3378)
Create a task per request handling. (#3406)
Bugfixes
Enable passing access_log_class via handler_args (#3158)
Return empty bytes with end-of-chunk marker in empty stream reader. (#3186)
Accept CIMultiDictProxy instances for headers argument in web.Response constructor. (#3207)
Don’t uppercase HTTP method in parser (#3233)
Make method match regexp RFC-7230 compliant (#3235)
Add app.pre_frozen state to properly handle startup signals in sub-applications. (#3237)
Enhanced parsing and validation of helpers.BasicAuth.decode. (#3239)
Change imports from collections module in preparation for 3.8. (#3258)
Ensure Host header is added first to ClientRequest to better replicate browser (#3265)
Fix forward compatibility with Python 3.8: importing ABCs directly from the collections module will not be supported anymore. (#3273)
Keep the query string by normalize_path_middleware. (#3278)
Fix missing parameter raise_for_status for aiohttp.request() (#3290)
Bracket IPv6 addresses in the HOST header (#3304)
Fix default message for server ping and pong frames. (#3308)
Fix tests/test_connector.py typo and tests/autobahn/server.py duplicate loop def. (#3337)
Fix false-negative indicator end_of_HTTP_chunk in StreamReader.readchunk function (#3361)
Release HTTP response before raising status exception (#3364)
Fix task cancellation when sendfile() syscall is used by static file handling. (#3383)
Fix stack trace for asyncio.TimeoutError which was not logged, when it is caught in the handler. (#3414)
Improved Documentation
Deprecations and Removals
Deprecate modification of session.requote_redirect_url (#2278)
Deprecate stream.unread_data() (#3260)
Deprecated use of boolean in resp.enable_compression() (#3318)
Encourage creation of aiohttp public objects inside a coroutine (#3331)
Drop dead Connection.detach() and Connection.writer. Both methods were broken for more than 2 years. (#3358)
Deprecate app.loop, request.loop, client.loop and connector.loop properties. (#3374)
Deprecate explicit debug argument. Use asyncio debug mode instead. (#3381)
Deprecate body parameter in HTTPException (and derived classes) constructor. (#3385)
Deprecate bare connector close, use async with connector: and await connector.close() instead. (#3417)
Deprecate obsolete read_timeout and conn_timeout in ClientSession constructor. (#3438)
Misc
#3341, #3351
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for aiohttp-3.7.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 547b196a7177511da4f475fc81d0bb88a51a8d535c7444bbf2338b6dc82cb996 |
|
MD5 | 7b941034e048dfe0c0df8f491973f2e2 |
|
BLAKE2b-256 | ff5de433c14a894723253dcbf5d86de780878a4053f1f7d0363aeff68e320bc7 |
Hashes for aiohttp-3.7.2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c588a0f824dc7158be9eec1ff465d1c868ad69a4dc518cd098cc11e4f7da09d9 |
|
MD5 | 50a56f2cb9b10f603cb52b725fe07b8e |
|
BLAKE2b-256 | 000a004a8d02beedb5e029a610c4e4bda7b62e800041434ff9e8f3817f73bdfb |
Hashes for aiohttp-3.7.2-cp39-cp39-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c36b7ef47cfbc150314c2204cd73613d96d6d0982d41c7679b7cdcf43c0e979 |
|
MD5 | 98873b5e619e1e0e04f5a8809fa14715 |
|
BLAKE2b-256 | 4fc12e055ccdfac743dcac7bca1aec47cf77fdc34659853c5096c85a46bde574 |
Hashes for aiohttp-3.7.2-cp39-cp39-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 027be45c4b37e21be81d07ae5242361d73eebad1562c033f80032f955f34df82 |
|
MD5 | 9b86e2bb628470fbb96695d8fa1e2b95 |
|
BLAKE2b-256 | cb6979468707c39349b5b04ae4d9ee737eea05d46d2d3095a12e562109bc211e |
Hashes for aiohttp-3.7.2-cp39-cp39-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06efdb01ab71ec20786b592d510d1d354fbe0b2e4449ee47067b9ca65d45a006 |
|
MD5 | d70b001feeb075ad85d700448e71a167 |
|
BLAKE2b-256 | e4e177a309e3cc7ef266c3015e8a8c4ad0414ff0efc6ad8b65212405a57cb163 |
Hashes for aiohttp-3.7.2-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c53f1d2bd48f5f407b534732f5b3c6b800a58e70b53808637848d8a9ee127fe7 |
|
MD5 | 94619e2641a2dcb5f4551b5dfe55c795 |
|
BLAKE2b-256 | 9e59545755cd47607b18ed07196cf92a52a49727ec61e0259fdecc8b6149952c |
Hashes for aiohttp-3.7.2-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89c1aa729953b5ac6ca3c82dcbd83e7cdecfa5cf9792c78c154a642e6e29303d |
|
MD5 | 471fb596675f7c89e70528ca49b1ce6a |
|
BLAKE2b-256 | fff0cd926aafb2b5833ba362544b25263e1a1aee82f4defa556a90125343789f |
Hashes for aiohttp-3.7.2-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 476b1f8216e59a3c2ffb71b8d7e1da60304da19f6000d422bacc371abb0fc43d |
|
MD5 | b7976c4caef6c6871dc986ba3075884b |
|
BLAKE2b-256 | de08e9d8332a8eebe69dd8f6e325c50dd49089612eb99705d09d2b295f39e96a |
Hashes for aiohttp-3.7.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e0d1231a626d07b23f6fe904caa44efb249da4222d8a16ab039fb2348722292 |
|
MD5 | 5dfae0c0d62869b837977ab8c7bde325 |
|
BLAKE2b-256 | 0cc05aad98cb90eb37ebf97577e78f33381e8596d6ce2ec3ce38e53b891ac766 |
Hashes for aiohttp-3.7.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 184ead67248274f0e20b0cd6bb5f25209b2fad56e5373101cc0137c32c825c87 |
|
MD5 | d86b93e9db9abdc497fd0d18ff581640 |
|
BLAKE2b-256 | 63c87c58c9ef4b7ac8f12c83b21e20e6566c48660ae49e403afa025d01df2550 |
Hashes for aiohttp-3.7.2-cp38-cp38-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67f8564c534d75c1d613186939cee45a124d7d37e7aece83b17d18af665b0d7a |
|
MD5 | 1aa5a3f0abc5609b6c98c6caa9116461 |
|
BLAKE2b-256 | 6edebbb5327cfea028f55b8e8885a24a0f3ade0d0313a51c571c64b5c324cf71 |
Hashes for aiohttp-3.7.2-cp38-cp38-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f1aeb72f14b9254296cdefa029c00d3c4550a26e1059084f2ee10d22086c2d0 |
|
MD5 | 7ca301f2dd4bb6e331b3b6a1500944f3 |
|
BLAKE2b-256 | 8e26b81a90853bf6fbdd14f370f31bf6f77ea731a31610ca7fce2b8db876f4c0 |
Hashes for aiohttp-3.7.2-cp38-cp38-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1f1cc11c9856bfa7f1ca55002c39070bde2a97ce48ef631468e99e2ac8e3fe6 |
|
MD5 | a507c43d8ac7785604558ededd2a636a |
|
BLAKE2b-256 | b4fafbec77f35d0fef0afd81f571b9cab0a2c4d613b921532f7e492a0a57dcc6 |
Hashes for aiohttp-3.7.2-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4afd8002d9238e5e93acf1a8baa38b3ddf1f7f0ebef174374131ff0c6c2d7973 |
|
MD5 | 805d98c9e0cf1007d08b89c8ddc956e1 |
|
BLAKE2b-256 | 6ce52f6ace3389cf836ad871e683c3fb05dc5496f6a4baa98c88534988d9394d |
Hashes for aiohttp-3.7.2-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b84cef790cb93cec82a468b7d2447bf16e3056d2237b652e80f57d653b61da88 |
|
MD5 | f639f6f26a4e2c99f86d8632b2531957 |
|
BLAKE2b-256 | 69cef07e6944d65ae7dbec96d5ded3c328d50bcc641c61aeb91005da4b36f2a9 |
Hashes for aiohttp-3.7.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8c583c31c6e790dc003d9d574e3ed2c5b337947722965096c4d684e4f183570 |
|
MD5 | 7745d6affe3bd5c4ee5118a41f86175d |
|
BLAKE2b-256 | 3b22e7a8005083b729590058177d05d95147dcdb180603041c1871843301366f |
Hashes for aiohttp-3.7.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11e087c316e933f1f52f3d4a09ce13f15ad966fc43df47f44ca4e8067b6a2e0d |
|
MD5 | 5da80a07a8ae9f05f7f6df33e0e93442 |
|
BLAKE2b-256 | e3391fb4b83c1f2c81afbba00e5fde72cc48f5c6495e5a6bc33847a9538e5ccb |
Hashes for aiohttp-3.7.2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 835bd35e14e4f36414e47c195e6645449a0a1c3fd5eeae4b7f22cb4c5e4f503a |
|
MD5 | 3c899afa07dbaf94bde08de6759c7567 |
|
BLAKE2b-256 | b3c40f6b40c30554557d81a6452d4527107f232f512cba6eb1a5f8adffbb6bb6 |
Hashes for aiohttp-3.7.2-cp37-cp37m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad5c3559e3cd64f746df43fa498038c91aa14f5d7615941ea5b106e435f3b892 |
|
MD5 | 986f2348501c6b038316667385bd3c37 |
|
BLAKE2b-256 | 49e47a058d579a5617e3ab1f5e38e6768d8a00ee1afb00a066e160ae5f3aad64 |
Hashes for aiohttp-3.7.2-cp37-cp37m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b822bf7b764283b5015e3c49b7bb93f37fc03545f4abe26383771c6b1c813436 |
|
MD5 | 3c6cd6ff5ff4997cedc2d80c57c914bc |
|
BLAKE2b-256 | 6916261515778d07cf8dd4c27fdb576c7d3b6f1d98486dc231d8d2d09a70840e |
Hashes for aiohttp-3.7.2-cp37-cp37m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a8addd41320637c1445fea0bae1fd9fe4888acc2cd79217ee33e5d1c83cfe01 |
|
MD5 | 20af02a2cd8612fcbfd48b4b83a069dc |
|
BLAKE2b-256 | 83ca47886b91f1be203c7e8c4904121ca3fe40621783e32d4c7f46beccc0e8c2 |
Hashes for aiohttp-3.7.2-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdbb65c361ff790c424365a83a496fc8dd1983689a5fb7c6852a9a3ff1710c61 |
|
MD5 | 14783042bcb0f09638d54475149dca8e |
|
BLAKE2b-256 | da04a11bead7039c35f23b07b7bd1d2f6b00a85a677578026735bd15f54591df |
Hashes for aiohttp-3.7.2-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e886611b100c8c93b753b457e645c5e4b8008ec443434d2a480e5a2bb3e6514 |
|
MD5 | bb9c0168920e8369b6428068349550b1 |
|
BLAKE2b-256 | e6851d55331e0308c815dfa8c74b2ea150e60ff933a4624aa4c7ccd0b8fee52f |
Hashes for aiohttp-3.7.2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f04dcbf6af1868048a9b4754b1684c669252aa2419aa67266efbcaaead42ced7 |
|
MD5 | ecdbf27ade642372fbe1f26638fec0ed |
|
BLAKE2b-256 | e7f188aefab0721d92f66277d02b61b1efcc2ad064ca53153dd3aafc08a8bf0a |
Hashes for aiohttp-3.7.2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be9fa3fe94fc95e9bf84e84117a577c892906dd3cb0a95a7ae21e12a84777567 |
|
MD5 | f8ed4d1fefe46eb4d690a421ab2a6c35 |
|
BLAKE2b-256 | bbd157d6955d30de09213b0c1ce66794bc57d1b9ab90452cee9146915417f4ae |
Hashes for aiohttp-3.7.2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2aea79734ac5ceeac1ec22b4af4efb4efd6a5ca3d73d77ec74ed782cf318f238 |
|
MD5 | 952f31067f6700a4b6601c8ca9e654fa |
|
BLAKE2b-256 | 9cc6c518b46d9bf1ae08c1936d82eae4190455ab073bddbb70ddf371211d3151 |
Hashes for aiohttp-3.7.2-cp36-cp36m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8319a55de469d5af3517dfe1f6a77f248f6668c5a552396635ef900f058882ef |
|
MD5 | c4d821e3aa84c1a8c71793ef43d220c4 |
|
BLAKE2b-256 | 599797bd0c16d50f1c74089ad1a29761483aef975efd8fd3fd02838066b72eb8 |
Hashes for aiohttp-3.7.2-cp36-cp36m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e26712871ebaf55497a60f55483dc5e74326d1fb0bfceab86ebaeaa3a266733 |
|
MD5 | ff6aac08c65742229d82871abbbb9738 |
|
BLAKE2b-256 | 19d8d537765e3742ebd5be76e9fe691cf1b93d97a617bfbc731c8eed4d2e2d07 |
Hashes for aiohttp-3.7.2-cp36-cp36m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9a415f4f2764ab6c7d63ee6b86f02a46b4df9bc11b0de7ffef206908b7bf0b4 |
|
MD5 | fd74f17cf9f2cf9e5da294fef71b32e7 |
|
BLAKE2b-256 | 295814d6f48ed7b8d329542d6d146b4b1dfaf236203d328ddbc46f80b574e743 |
Hashes for aiohttp-3.7.2-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48104c883099c0e614c5c38f98c1d174a2c68f52f58b2a6e5a07b59df78262ab |
|
MD5 | 780eb50251db989cdf8493a351953c0c |
|
BLAKE2b-256 | 24d4bb36a0e6e72507957281df20f82ae936dbc96198303a7bd1e9b7d045acf3 |
Hashes for aiohttp-3.7.2-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fbeeb2296bb9fe16071a674eadade7391be785ae0049610e64b60ead6abcdd7 |
|
MD5 | 15e1487448b5868c5c0165609bc6c26f |
|
BLAKE2b-256 | 1d4b2a6c0e4f72d694e8f6eb7a59dfbc298d53dcf183f0f7ed4e38c8cb7b8361 |
Hashes for aiohttp-3.7.2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0989ff15834a4503056d103077ec3652f9ea5699835e1ceaee46b91cf59830bf |
|
MD5 | cd34ac9b333f542973fc65206714acac |
|
BLAKE2b-256 | 10c8f85b12590a30210036599e061a7dcf5f83edf57e7487115f34e9c2acd779 |