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.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.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d64f7dfd4e326d9b0d11b07fcd5ebf78844ba3c8f7699f38b50b0e0db0ae68f |
|
MD5 | 27c9b23a4a04093e9d66cab7c2dc5ba9 |
|
BLAKE2b-256 | de30e4cc492eb451f5f65f10e44e5da0668fc2a0696b407ccd8848988f99d5b8 |
Hashes for aiohttp-3.7.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cefbd7ce7d1f1db43749a077e4970e29e2b631f367c9eff3862c3c886b4218dd |
|
MD5 | d2788c36cdde6e8c2c75d218da4f2f37 |
|
BLAKE2b-256 | 5f9449015b2e656f33d1b10a8412461e2e3c2f51c2f1024aa8c57abfb32d4bf6 |
Hashes for aiohttp-3.7.0-cp39-cp39-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b19ded3f6957693b97ba8372aacb5b0021639bbd5e77b1e960796bcef5431969 |
|
MD5 | eb8d290428dbc49f2a91e61f9e6c9d2f |
|
BLAKE2b-256 | f587fb31606ad1342ea2e48bc249fc0566657c19f6a72f09ec71ecb218e7d705 |
Hashes for aiohttp-3.7.0-cp39-cp39-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8a42f05491d9c04a77806875a68f84fea9af7a59d47b7897cb166632f74606c |
|
MD5 | d0d25f6f6d8dc433c2e79586a6e4b4db |
|
BLAKE2b-256 | 968c2479682adb32dad7e8e287bfdaf01632588a2389f9b6a4f113a31f9d7b5b |
Hashes for aiohttp-3.7.0-cp39-cp39-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eaa8ae734639d5a0a3b5e33a154b8bfef384cdc090706f95c387cae8b21af764 |
|
MD5 | 51e13321ada5a7266962c946ac10e09a |
|
BLAKE2b-256 | 1f3dfe46ce423f06b199b828bdfcf53dff59bd4119e97d45ee9cab09862a50c2 |
Hashes for aiohttp-3.7.0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a2edf27865e66a33f64fa793cd14d0aae8127ce20a858539e97c25b600556dc |
|
MD5 | e0f8b09aa0557b72564ee5c8b87d3a4b |
|
BLAKE2b-256 | 96a83e43cadc30ece4c497ab15b8240b8035a77b81baf5f59298c3ff423746ce |
Hashes for aiohttp-3.7.0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 064d5f0738bcbab3e0c0ecf85c93b5ee1e07e124f994eaa03bf73687f3ecd9da |
|
MD5 | 7232d79df2fcd41d616b4c71c2445819 |
|
BLAKE2b-256 | 3b71eaade3fb7db21c0d7e5427621fa0a8c7e285d4140dab524043904f921fd3 |
Hashes for aiohttp-3.7.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 900012c5f12ff72b1453229afe288ddc9135176df8b3b3cc5b8f6cfde912aaa4 |
|
MD5 | c6f305d7239d2d8f90c85a22b33db284 |
|
BLAKE2b-256 | 62b601db442957375c7940a3f05b900a0f0fcb16ba0b6e63297be960134e2332 |
Hashes for aiohttp-3.7.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a586e476a251483d222c73dfb2f27df90bc4ea1b8c7da9396236510e0d4046c8 |
|
MD5 | 9aca75097e986e4515204bb8221cd42b |
|
BLAKE2b-256 | 07e9f2cc3feee344b470b12fea27b5e5f1f5446fe9b94c79b963085f7fa5c7da |
Hashes for aiohttp-3.7.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9210532e6e95b40d22a33415bb84423eef3f633b2d2339b97f3b26438eebc466 |
|
MD5 | 8f07e7be8f0ec933b2a589c827ac5f0b |
|
BLAKE2b-256 | 74d47180dbbec4c287f1db3788c4089877efe38c2b304a32cd5246c4bda535b0 |
Hashes for aiohttp-3.7.0-cp38-cp38-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe44c96bc380588d36729392b602470d88a7c18e646e95dd4348cafe3900d91d |
|
MD5 | 788be546478383420e4a255c399b8ac9 |
|
BLAKE2b-256 | 0893c28e6d1a004ead6226fc459b131ae2b7e0382e75e4d718f34e03bd0b0957 |
Hashes for aiohttp-3.7.0-cp38-cp38-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | deef02e2a9f5095463098c7c22d5566f20a6e4e14fc0996c0c2efc74d461b680 |
|
MD5 | 1700d16cc42359aefd207493770451f1 |
|
BLAKE2b-256 | efa386ade7b590a43f275eae8a7361f1d73e41ac94b18e9bd5d8f6b5feab0d4c |
Hashes for aiohttp-3.7.0-cp38-cp38-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f548d7976d168f0f45ac5909ca5f606ae3f6f7aa1725b22504004a053b29a7d0 |
|
MD5 | 3e354a92657ccf9f42ac081c23bd8be6 |
|
BLAKE2b-256 | 9f85cbfdd9a2a6355dd786e647aa30ce206872c0b969266f251ca7df43ab5421 |
Hashes for aiohttp-3.7.0-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a04ba359dc5f2e21b96bfc90c4a7665441441ba61b52e992b7799493889a3419 |
|
MD5 | 89e6315bc77e3b4e2354d96fb5612011 |
|
BLAKE2b-256 | d089a7b840369dde1657ccc92a5ce92d53ddcba4cc79bdcc2b0d85e6893a6270 |
Hashes for aiohttp-3.7.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df1274b7620c32d3b15bfb0a8fb3165dd6cdc9c39f4db74d162f051c80826542 |
|
MD5 | 1d522e809d1a7184f1c41d06a56977a7 |
|
BLAKE2b-256 | 1508cc8d428ecb455e6bbcc93938c60b1e033f9686a378ae37fa6736bf865453 |
Hashes for aiohttp-3.7.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f56892f57310415cf6a179eec3ea6c7a82a9d37fbc00894943ea3154011a6d2a |
|
MD5 | e4890088a6061bc3926ed3bcc71ff070 |
|
BLAKE2b-256 | 464fff7ea122edfe6cabd9388a2a342594841cf377489b9316bd6151c060dc66 |
Hashes for aiohttp-3.7.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a49ef7b691babc83db126db874fbf26ba2f781899b91399f9ff8b235f059245 |
|
MD5 | bcfc80937f2dd90485166ac8c7fb60b4 |
|
BLAKE2b-256 | bfcf07d7173838a2e20c46ba8a7d85267ed2187bf6774312c8bbb48820fbcb52 |
Hashes for aiohttp-3.7.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbcaae9a6f14f762348d19b2dce8162772c0b0a1739314e18492a308a22caf96 |
|
MD5 | a16b13e95728b28d4a3f66d1cc3f7855 |
|
BLAKE2b-256 | 84443722592d693a037a0ebb4106c7645c77dd06b062ed8ab2e2bf150580967a |
Hashes for aiohttp-3.7.0-cp37-cp37m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | beda23f292716887532661dc19abb9db2302ccfbd671a080cd8f4be7463d0841 |
|
MD5 | b96bd33b99e6dfd78090e60c04a13483 |
|
BLAKE2b-256 | a39c48a8ab1d84687b3e7f187aa9006db0fd24a3adf1c5325d7dd12d28dceaee |
Hashes for aiohttp-3.7.0-cp37-cp37m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97d2341d1360dbe2c5b1d94922f7d68f9ce2ded1daab88b9bdeb49ce419cdc1b |
|
MD5 | 5bdc91ce25572910fe6a7721d6fd8183 |
|
BLAKE2b-256 | 42005c33e0eb146ff0070b9bfb49ab95c8f11ccf3a09713f550972918cfdbe53 |
Hashes for aiohttp-3.7.0-cp37-cp37m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b5c320621a171aa85f96909af28fbb5286bd6842066db3062b083ba92261256 |
|
MD5 | 1e1113e72484aa0f07dd9036c30e5765 |
|
BLAKE2b-256 | 268855e67c13739883c45cc350c819350f1a6d6886059348919c59034875a36e |
Hashes for aiohttp-3.7.0-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b392e5c3e122586c49cd8b9426f577bf4d51958933b839d158d28b69515af74e |
|
MD5 | 429d0d727d6bb285df3d4388566e5221 |
|
BLAKE2b-256 | 667afaebf41784e479ecac44c8a721cf7a964b71630637b05078ff1bd15566e2 |
Hashes for aiohttp-3.7.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 245b58e30bc889d18b783db2f09ef1d814f466e15c84325410827451297003a0 |
|
MD5 | 88a405f99c911da542e32eaadaad5afd |
|
BLAKE2b-256 | 98d37fcfaa99552b1597a97c2af9d299070ec4473da3bcb586c0e80841c23f20 |
Hashes for aiohttp-3.7.0-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07bacf6721db51a4c6160ed3031a2a97910647969dafd7c653f600f3b542f463 |
|
MD5 | 348e8bcb7907d8c6bda1ccd2fe15f1ef |
|
BLAKE2b-256 | 1aeb93d1e50349e7552caaf66a00953e249f90477ab007f347b8f65540a5b844 |
Hashes for aiohttp-3.7.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf08462cddd10ddd8ffe5cb5c1638bfa051290909ebedb31c06e46578b9b7529 |
|
MD5 | a5ce867a9762b094c2f5174c787b9685 |
|
BLAKE2b-256 | c7e1b46fbd28b4eb995e8866c0cbc35197ae1020a3a5900a30b91c0dcf3b3fb8 |
Hashes for aiohttp-3.7.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e26d6003eb6df304608d9fd9c9437065a8532d869a3ffcbd8113a3d710f8239 |
|
MD5 | 2d6be0d4e367e503f1af0069234cf1cf |
|
BLAKE2b-256 | 2a362b16b750de61cf54da3d64d0c8631e13b9934100c6ac73c478d1620c86f4 |
Hashes for aiohttp-3.7.0-cp36-cp36m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d31c43f7c4948ce01957f9a1ceee0784e067778477557ebccdf805398331c1a1 |
|
MD5 | f36cff86adb098f4dad7a45b707b0b2e |
|
BLAKE2b-256 | 0fc8b303db94dd1c6db2f001a1f210082db8fb825a4ac8178ca9090f25df1c56 |
Hashes for aiohttp-3.7.0-cp36-cp36m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 713dd7fd70ddda9dc8d014c49dd0e55b58afe4e0cddb8722c7501f53edf30c3f |
|
MD5 | 95b9b16fc1d930cdf6c3aa4816aef220 |
|
BLAKE2b-256 | 535adb743a639f593590bacb74e01c3862d385079d556dcd40f70d750759e111 |
Hashes for aiohttp-3.7.0-cp36-cp36m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd64634713be409202058f2ea267dfbcdd74b387b8793425f21ef0266d45d0e9 |
|
MD5 | 81e0b29f80330eb0aaa1c1073ecd6611 |
|
BLAKE2b-256 | a0a960c0109974ac383383acf3d10cc53be9e7ebe7942877677fddc5e90caa98 |
Hashes for aiohttp-3.7.0-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fee7b5e68939ffc09f9b29f167ed49c8b50de3eee0a1d8108b439ddd9963af46 |
|
MD5 | 0fc93a3857e853b12683f8ff3ffad8fa |
|
BLAKE2b-256 | 2ce6b7af1c2f8b8140c34496adcd91f699400bddbe451c9ccf9439f45a413a38 |
Hashes for aiohttp-3.7.0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fdf778d4c4bf976e69a37213fe8083613d0851976ddcf485bd7c0650a43d3852 |
|
MD5 | 680b73843418b2d90b74b3fab26b54dd |
|
BLAKE2b-256 | 62d52b6ff2583f75c36475d113abfd7c141e66a2676be165b20d37d78749493b |
Hashes for aiohttp-3.7.0-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72fe89f7e14939e896d984c4b592580f8cdfa7497feb1c0c24639a9c60be3eb9 |
|
MD5 | 7b0f10a42c8481203ac9a261cf4c6f2d |
|
BLAKE2b-256 | 3aee0e7b7a2a6abb1c3a7b957cf21b9a2106f4a955ab8e08b9103f09306dc74f |