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.3 (2020-11-18)
Features
Bugfixes
Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. #3532
Fix web_middlewares.normalize_path_middleware behavior for patch without slash. #3669
Fix overshadowing of overlapped sub-applications prefixes. #3701
Make BaseConnector.close() a coroutine and wait until the client closes all connections. Drop deprecated “with Connector():” syntax. #3736
Reset the sock_read timeout each time data is received for a aiohttp.client response. #3808
Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View #3880
Fixed querying the address families from DNS that the current host supports. #5156
Change return type of MultipartReader.__aiter__() and BodyPartReader.__aiter__() to AsyncIterator. #5163
Provide x86 Windows wheels. #5230
Improved Documentation
Misc
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.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1b95972a0ae3f248a899cdbac92ba2e01d731225f566569311043ce2226f5e7 |
|
MD5 | 72f40c3f537db283d10e91109b849262 |
|
BLAKE2b-256 | 9c6e17da70ac3a5fa17fec39c877376461066d2914d9a71167c7655c0fde24c9 |
Hashes for aiohttp-3.7.3-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b0036c978cbcc4a4512278e98e3e6d9e6b834dc973206162eddf98b586ef1c6 |
|
MD5 | 258441b118bf9b2bbc4cb5080d0642c9 |
|
BLAKE2b-256 | 726a8c0de9f76dd601cca9336e450598831dd2c45dccd945579d8938f7cfda9b |
Hashes for aiohttp-3.7.3-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 756ae7efddd68d4ea7d89c636b703e14a0c686688d42f588b90778a3c2fc0564 |
|
MD5 | cd116a396431a53b40866c6154930dae |
|
BLAKE2b-256 | 07d885c6b0be6e10c4219931498936edc22b11185c260a4af408c55885b8d7bb |
Hashes for aiohttp-3.7.3-cp39-cp39-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77149002d9386fae303a4a162e6bce75cc2161347ad2ba06c2f0182561875d45 |
|
MD5 | cd1fa5459c325783531d9d7002f91059 |
|
BLAKE2b-256 | 8efc2dd6f17be8d7bdd3be7150cf57193e0c4e6c0d8cef1e99c225b9cfc69f5e |
Hashes for aiohttp-3.7.3-cp39-cp39-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1edfd82a98c5161497bbb111b2b70c0813102ad7e0aa81cbeb34e64c93863005 |
|
MD5 | c51df51d9fc455c4a55d41064640963e |
|
BLAKE2b-256 | b12b5edfd86b33fb463feae70433b5f8a75965300145e014c91fd99042dd6a5b |
Hashes for aiohttp-3.7.3-cp39-cp39-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 684850fb1e3e55c9220aad007f8386d8e3e477c4ec9211ae54d968ecdca8c6f9 |
|
MD5 | 7cc223898ea7c398f2c304a7528804c9 |
|
BLAKE2b-256 | 4cb90781b8cf678896f98976a18c2fcfcb13f5fde82d80c244ba7983805647f0 |
Hashes for aiohttp-3.7.3-cp39-cp39-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a7b7640167ab536c3cb90cfc3977c7094f1c5890d7eeede8b273c175c3910fd |
|
MD5 | 5a38ae41f6ccb30d93f0a9e475a7d6c6 |
|
BLAKE2b-256 | 2fd644a59928513245d73582efbed3a07224049d1febfe408dca6cf464e861d1 |
Hashes for aiohttp-3.7.3-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2406dc1dda01c7f6060ab586e4601f18affb7a6b965c50a8c90ff07569cf782a |
|
MD5 | 19722b040310d24677b32ec4310043cb |
|
BLAKE2b-256 | d0edc3a52c2d44271016a8c2b6549bf2f29f37eff5a4e5ba5160698b1b3a3d2c |
Hashes for aiohttp-3.7.3-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 710376bf67d8ff4500a31d0c207b8941ff4fba5de6890a701d71680474fe2a60 |
|
MD5 | eaa5beff926f5082b8411c55d2f92d33 |
|
BLAKE2b-256 | 1add2fb82c1aa9e020175d129ed3b887c3ada5f9bf8f5af042a9888857b590df |
Hashes for aiohttp-3.7.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c68fdf21c6f3573ae19c7ee65f9ff185649a060c9a06535e9c3a0ee0bbac9235 |
|
MD5 | efbc1e94443b211af89831ee8483df96 |
|
BLAKE2b-256 | 32cd2294c0b1624d79764c2bfce2c0feb7c65a5613b671924f7635664bec65fd |
Hashes for aiohttp-3.7.3-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39f4b0a6ae22a1c567cb0630c30dd082481f95c13ca528dc501a7766b9c718c0 |
|
MD5 | e07ea7ac05e85045c9d78b0cc81cf0f2 |
|
BLAKE2b-256 | 47f9dead51fd5eca85ebff3d359ede2ec2b547d8cfdfe12e54be8ce9446fd38b |
Hashes for aiohttp-3.7.3-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d03abec50df423b026a5aa09656bd9d37f1e6a49271f123f31f9b8aed5dc3ea3 |
|
MD5 | d7295247f41292869fb608a759e878b7 |
|
BLAKE2b-256 | 75a24dd57056be3f166e32b6faf43483607cb049fa59580c7741a4dce73f0a85 |
Hashes for aiohttp-3.7.3-cp38-cp38-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ccc43d68b81c424e46192a778f97da94ee0630337c9bbe5b2ecc9b0c1c59001 |
|
MD5 | 8396dc8ab3722b21f4389775579fbb7b |
|
BLAKE2b-256 | 3c4f629aee11c005408bc85a2cb997e82e13220cd177a533df52618ed68a7ea3 |
Hashes for aiohttp-3.7.3-cp38-cp38-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16a3cb5df5c56f696234ea9e65e227d1ebe9c18aa774d36ff42f532139066a5f |
|
MD5 | e40327c1b5909f30c4f57371da495f97 |
|
BLAKE2b-256 | f0cc10158afa323de163dbd6ead1474ceab6c8922825fa108ef80b64dd8f03ea |
Hashes for aiohttp-3.7.3-cp38-cp38-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41608c0acbe0899c852281978492f9ce2c6fbfaf60aff0cefc54a7c4516b822c |
|
MD5 | 54398ed4848f5e2048eb72d78eb14a2b |
|
BLAKE2b-256 | eff4b9fa633fa9eed64f2cd6ee6527681c5b1f076029748d0ec27ab93af13977 |
Hashes for aiohttp-3.7.3-cp38-cp38-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59d11674964b74a81b149d4ceaff2b674b3b0e4d0f10f0be1533e49c4a28408b |
|
MD5 | 739acb08ff375a9d172862dd72e00d6f |
|
BLAKE2b-256 | 78f1ece62e40d2a78e50e293b598b44014efea97afa2dc51d674368bcc331817 |
Hashes for aiohttp-3.7.3-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1e0920909d916d3375c7a1fdb0b1c78e46170e8bb42792312b6eb6676b2f87f |
|
MD5 | ba224fd111d9ccbf6c3f99ca3ec15b23 |
|
BLAKE2b-256 | 25dc3e1de32d3222a0b678d162e7f801e94c6bf9cc9aab80f2b0898d90c949b9 |
Hashes for aiohttp-3.7.3-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f411cb22115cb15452d099fec0ee636b06cf81bfb40ed9c02d30c8dc2bc2e3d1 |
|
MD5 | d9b9f72b97d1a2c95e56d5820111da80 |
|
BLAKE2b-256 | 6878dde17bd86ccbe698e3a1a76697eb9b52fbf0e5b13b703912addee4788c2f |
Hashes for aiohttp-3.7.3-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9c58b0b84055d8bc27b7df5a9d141df4ee6ff59821f922dd73155861282f6a3 |
|
MD5 | 643829926e9a65c9fb20eaaaca3fb928 |
|
BLAKE2b-256 | 684a221ace4d2283cc3d3b15e9621bb040d239dfea1b3da798ca33a88f8acfc8 |
Hashes for aiohttp-3.7.3-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d42debaf55450643146fabe4b6817bb2a55b23698b0434107e892a43117285e |
|
MD5 | 93917165cc4c260b027774bd520228e7 |
|
BLAKE2b-256 | 7cdbe4c2290c7d77b88bac2cd84e642fecae3ebf906dcff46cd23d9031274c6f |
Hashes for aiohttp-3.7.3-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e479df4b2d0f8f02133b7e4430098699450e1b2a826438af6bec9a400530957 |
|
MD5 | 047759a270cd6f834fe66cff9aa9bf72 |
|
BLAKE2b-256 | 1aa24eea05bac4b04be79d23159c25ddd13b5fd48c1f844fb3a6427cfadbfffd |
Hashes for aiohttp-3.7.3-cp37-cp37m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f326b3c1bbfda5b9308252ee0dcb30b612ee92b0e105d4abec70335fab5b1245 |
|
MD5 | d5085238dd0ff04d1fc97d61c1b9e0dd |
|
BLAKE2b-256 | 8d6cd0c51e18cfc7bfac959105ef6d54380904a46c5e8460fdd8f00f28dfac27 |
Hashes for aiohttp-3.7.3-cp37-cp37m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df3a7b258cc230a65245167a202dd07320a5af05f3d41da1488ba0fa05bc9347 |
|
MD5 | 4b6338b47b85bbbdaa7ec009ff8f2b47 |
|
BLAKE2b-256 | b4b2d0285038956e9b4c50ad326a06cfc22ea8a73b14d48abbc2b359486ed2a8 |
Hashes for aiohttp-3.7.3-cp37-cp37m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78e2f18a82b88cbc37d22365cf8d2b879a492faedb3f2975adb4ed8dfe994d3a |
|
MD5 | 697828efa41e091ab821b4bc16d8c4a6 |
|
BLAKE2b-256 | d9446385884e390f6caf229934bfd4ceb10d983e78453314a699da151e06bf30 |
Hashes for aiohttp-3.7.3-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ea8c252d8df5e9166bcf3d9edced2af132f4ead8ac422eac723c5781063709a |
|
MD5 | 906895a7162b270418cd37f920fae40a |
|
BLAKE2b-256 | ed28782642f2d194a9ca55668fd67c1e6f66356c7e72530026ce379c1e2c9c38 |
Hashes for aiohttp-3.7.3-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8389d6044ee4e2037dca83e3f6994738550f6ee8cfb746762283fad9b932868f |
|
MD5 | 3ff991eab31d94d080f4daa86da6916f |
|
BLAKE2b-256 | 50989e327c15495887510319a49d311503c41aeb9b38557fac1f5af38207ce67 |
Hashes for aiohttp-3.7.3-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d438c8ca703b1b714e82ed5b7a4412c82577040dadff479c08405e2a715564f |
|
MD5 | 10015bfb62f6b26c4287b91f52ff9e24 |
|
BLAKE2b-256 | 881ce218f60640e3eaad172f5e728713752401ee345c516f8b783b9e4d20ef44 |
Hashes for aiohttp-3.7.3-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b795072bb1bf87b8620120a6373a3c61bfcb8da7e5c2377f4bb23ff4f0b62c9 |
|
MD5 | f1a27ab3a4cd81562430a6b2b5ed3ab8 |
|
BLAKE2b-256 | ef02fb63e71c77391a7e4afa37c3c3df1e9b9537bdefb558b4ebb54d654f8b72 |
Hashes for aiohttp-3.7.3-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df48a623c58180874d7407b4d9ec06a19b84ed47f60a3884345b1a5099c1818b |
|
MD5 | 8d0452ec357d5538a148b51dcde637bd |
|
BLAKE2b-256 | 5818ed8a1aca97f6d4153649a00c66cbe2c5c0dcb60dca0f68bd9d2ce665ae05 |
Hashes for aiohttp-3.7.3-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d9b42127a6c0bdcc25c3dcf252bb3ddc70454fac593b1b6933ae091396deb13 |
|
MD5 | 575e45d3be21c1a2f90c898146f7509f |
|
BLAKE2b-256 | ade6d4b6235d776c9b33f853e603efede5aac5a34f71ca9d3877adb30492eb4e |
Hashes for aiohttp-3.7.3-cp36-cp36m-manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcc119db14757b0c7bce64042158307b9b1c76471e655751a61b57f5a0e4d78e |
|
MD5 | c68ba8ddcd1c92d0201e264743546b00 |
|
BLAKE2b-256 | 6cc4bea6cd4b2e1bd9de7b0b7abefd170b3f28539093d25ed3384d39e0cc988e |
Hashes for aiohttp-3.7.3-cp36-cp36m-manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3228b7a51e3ed533f5472f54f70fd0b0a64c48dc1649a0f0e809bec312934d7a |
|
MD5 | 37d690603770f38e20cc77169bde0184 |
|
BLAKE2b-256 | c4e7430f8153142d783bcac8e2ff77082f6087c3d960e3e761b17caed7005359 |
Hashes for aiohttp-3.7.3-cp36-cp36m-manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2cfac21e31e841d60dc28c0ec7d4ec47a35c608cb8906435d47ef83ffb22150 |
|
MD5 | be5c9db65acc904b5dd185ea6c882055 |
|
BLAKE2b-256 | c439f6207edac8c31bd797a89e9b4a33f714385f09e65b05cab5e32d916805e7 |
Hashes for aiohttp-3.7.3-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2858b2504c8697beb9357be01dc47ef86438cc1cb36ecb6991796d19475faa3e |
|
MD5 | 5151d1c394b858770dff13a4eb27aa93 |
|
BLAKE2b-256 | 50471fe5cb941c11b68f809451250ad52a60aac1f601677f70a5c1af7666e5dc |
Hashes for aiohttp-3.7.3-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c733ef3bdcfe52a1a75564389bad4064352274036e7e234730526d155f04d914 |
|
MD5 | 8ccf061ba9ed8fb4b06bbe2daa56b563 |
|
BLAKE2b-256 | ceb91ad0f51406e5d5143dcc1200de15b3bafde85d10d499324d5e03237835cc |
Hashes for aiohttp-3.7.3-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 328b552513d4f95b0a2eea4c8573e112866107227661834652a8984766aa7656 |
|
MD5 | 2e45c123b5bb2b7acb8f16e1aab684d4 |
|
BLAKE2b-256 | d088d74771dc1f5bfa03c8b61921a2723a30681b165c09d8ddb8e65c55d51377 |