Skip to main content

Async http client/server framework

aiohttp logo

Travis status for master branch AppVeyor status for master branch codecov.io status for master branch Latest PyPI package version Latest Read The Docs Chat on Gitter

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 pluggable routing.

Getting started

Client

To get something from the web:

import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        html = await fetch(session, 'http://python.org')
        print(html)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

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

https://aiohttp.readthedocs.io/

Demos

https://github.com/aio-libs/aiohttp-demos

Communication channels

aio-libs google group: https://groups.google.com/forum/#!forum/aio-libs

Feel free to post your questions and ideas here.

gitter chat https://gitter.im/aio-libs/Lobby

We support Stack Overflow. Please add aiohttp tag to your question there.

Requirements

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.6.2 (2019-10-09)

Features

  • Made exceptions pickleable. Also changed the repr of some exceptions. #4077

  • Use Iterable type hint instead of Sequence for Application middleware parameter. #4125

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

  • Added minimal required logging configuration to logging documentation. #2469

  • Update docs to reflect proxy support. #4100

  • Fix typo in code example in testing docs. #4108

Misc


3.6.1 (2019-09-19)

Features

  • Compatibility with Python 3.8. #4056

Bugfixes

  • correct some exception string format #4068

  • Emit a warning when ssl.OP_NO_COMPRESSION is unavailable because the runtime is built against an outdated OpenSSL. #4052

  • Update multidict requirement to >= 4.5 #4057

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

  • FileResponse from web_fileresponse.py uses a ThreadPoolExecutor to work with files asynchronously. I/O based payloads from payload.py uses a ThreadPoolExecutor to work with I/O objects asynchronously. #3313

  • Internal Server Errors in plain text if the browser does not support HTML. #3483

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

  • Improve documentation of Application.make_handler parameters. (#3152)

  • Fix BaseRequest.raw_headers doc. (#3215)

  • Fix typo in TypeError exception reason in web.Application._handle (#3229)

  • Make server access log format placeholder %b documentation reflect behavior and docstring. (#3307)

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

Metadata

Release files for aiohttp 3.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aiohttp 3.6.2
File Size Uploaded Provenance Actions
aiohttp-3.6.2.tar.gz 1.1 MB Without provenance Details for aiohttp-3.6.2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for aiohttp 3.6.2
File Actions
aiohttp-3.6.2-py3-none-any.whl Python 3 none any Details for aiohttp-3.6.2-py3-none-any.whl
aiohttp-3.6.2-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details for aiohttp-3.6.2-cp37-cp37m-win_amd64.whl
aiohttp-3.6.2-cp37-cp37m-win32.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-32 Details for aiohttp-3.6.2-cp37-cp37m-win32.whl
aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 Details for aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl
aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.13+ x86-64 Details for aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl
aiohttp-3.6.2-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details for aiohttp-3.6.2-cp36-cp36m-win_amd64.whl
aiohttp-3.6.2-cp36-cp36m-win32.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-32 Details for aiohttp-3.6.2-cp36-cp36m-win32.whl
aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details for aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl
aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.13+ x86-64 Details for aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl
aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 Details for aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl
aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl CPython 3.5 CPython 3.5 pymalloc macOS 10.13+ x86-64 Details for aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl

Total release size: 9.4 MB

Release files / aiohttp-3.6.2.tar.gz

Download URL aiohttp-3.6.2.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
259ab809ff0727d0e834ac5e8a283dc5e3e0ecc30c4d80b3cd17a4139ce1f326
BLAKE2b-256 checksum
How to use checksums
0094f9fa18e8d7124d7850a5715a0b9c0584f7b9375d331d35e157cee50f27cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-py3-none-any.whl

Download URL aiohttp-3.6.2-py3-none-any.whl
Size 441.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
460bd4237d2dbecc3b5ed57e122992f60188afe46e7319116da5eb8a9dfedba4
BLAKE2b-256 checksum
How to use checksums
c2f7f0ad3dbace4762fef5d80aa4124b41bf218e4c4dd6d387a86cede707d9a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp37-cp37m-win_amd64.whl

Download URL aiohttp-3.6.2-cp37-cp37m-win_amd64.whl
Size 649.2 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
32e5f3b7e511aa850829fbe5aa32eb455e5534eaa4b1ce93231d00e2f76e5654
BLAKE2b-256 checksum
How to use checksums
0bb3744a16bdaba2e4df90f6ff10b9ade9c2dce3f01d94848f3949aa4ce7868d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp37-cp37m-win32.whl

Download URL aiohttp-3.6.2-cp37-cp37m-win32.whl
Size 624.3 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
b778ce0c909a2653741cb4b1ac7015b5c130ab9c897611df43ae6a58523cb965
BLAKE2b-256 checksum
How to use checksums
f2ffe570c6f81fa1e23e64da06dbb2b30c61112f171304a142af5702b4e8034f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl

Download URL aiohttp-3.6.2-cp37-cp37m-manylinux1_x86_64.whl
Size 1.2 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
6206a135d072f88da3e71cc501c59d5abffa9d0bb43269a6dcd28d66bfafdbdd
BLAKE2b-256 checksum
How to use checksums
e3716000eacb8923d9fd07aa8784a8fab4f022ae697f3c2456d7dca75c743dd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl

Download URL aiohttp-3.6.2-cp37-cp37m-macosx_10_13_x86_64.whl
Size 642.4 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
2f4d1a4fdce595c947162333353d4a44952a724fba9ca3205a3df99a33d1307a
BLAKE2b-256 checksum
How to use checksums
40fd3a595d6467eb31f7b69eb980778567e764b5d93990b4ceb8ddf6079dd776
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp36-cp36m-win_amd64.whl

Download URL aiohttp-3.6.2-cp36-cp36m-win_amd64.whl
Size 649.1 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
4c6efd824d44ae697814a2a85604d8e992b875462c6655da161ff18fd4f29f17
BLAKE2b-256 checksum
How to use checksums
f1511985ad031e804ce75c00059aacb386703a332cc39683752d7608980cf5d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp36-cp36m-win32.whl

Download URL aiohttp-3.6.2-cp36-cp36m-win32.whl
Size 624.2 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
344c780466b73095a72c616fac5ea9c4665add7fc129f285fbdbca3cccf4612a
BLAKE2b-256 checksum
How to use checksums
eafb63a75dde55ec94ced184fe08083714789865c7f23cc471fc55dac5cc0c39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl

Download URL aiohttp-3.6.2-cp36-cp36m-manylinux1_x86_64.whl
Size 1.2 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
ae55bac364c405caa23a4f2d6cfecc6a0daada500274ffca4a9230e7129eac59
BLAKE2b-256 checksum
How to use checksums
7c397eb5f98d24904e0f6d3edb505d4aa60e3ef83c0a58d6fe18244a51757247
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl

Download URL aiohttp-3.6.2-cp36-cp36m-macosx_10_13_x86_64.whl
Size 646.1 kB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
65f31b622af739a802ca6fd1a3076fd0ae523f8485c52924a89561ba10c49b48
BLAKE2b-256 checksum
How to use checksums
6cf5d4e0798a6fbbd0c59d0ac2d24a1d29ece7279d9bb7403b01da2c2d2bd841
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl

Download URL aiohttp-3.6.2-cp35-cp35m-manylinux1_x86_64.whl
Size 1.1 MB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
50aaad128e6ac62e7bf7bd1f0c0a24bc968a0c0590a726d5a955af193544bcec
BLAKE2b-256 checksum
How to use checksums
609060bf09ad2e8c827e3a71f77c43ff7be17c9d397d33baeae7cdf0435139b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Release files / aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl

Download URL aiohttp-3.6.2-cp35-cp35m-macosx_10_13_x86_64.whl
Size 629.5 kB
Tags CPython 3.5 CPython 3.5 pymalloc macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
1e984191d1ec186881ffaed4581092ba04f7c61582a177b187d3a2f07ed9719e
BLAKE2b-256 checksum
How to use checksums
97d11cc7a1f84097d7abdc6c09ee8d2260366f081f8e82da36ebb22a25cdda9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

Security for aiohttp 3.6.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.6.2 This release

12 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page