aiobotocore


Nameaiobotocore JSON
Version 2.12.1 PyPI version JSON
download
home_pagehttps://github.com/aio-libs/aiobotocore
SummaryAsync client for aws services using botocore and aiohttp
upload_time2024-03-04 19:10:54
maintainer
docs_urlNone
authorNikolay Novik
requires_python>=3.8
licenseApache License 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            aiobotocore
===========
.. image:: https://travis-ci.com/aio-libs/aiobotocore.svg?branch=master
    :target: https://travis-ci.com/aio-libs/aiobotocore
.. image:: https://codecov.io/gh/aio-libs/aiobotocore/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/aio-libs/aiobotocore
.. image:: https://readthedocs.org/projects/aiobotocore/badge/?version=latest
    :target: https://aiobotocore.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/aiobotocore.svg
    :target: https://pypi.python.org/pypi/aiobotocore
.. image:: https://badges.gitter.im/Join%20Chat.svg
    :target: https://gitter.im/aio-libs/aiobotocore
    :alt: Chat on Gitter



Async client for amazon services using botocore_ and aiohttp_/asyncio_.

This library is a mostly full featured asynchronous version of botocore.


Install
-------
::

    $ pip install aiobotocore


Basic Example
-------------

.. code:: python

    import asyncio
    from aiobotocore.session import get_session

    AWS_ACCESS_KEY_ID = "xxx"
    AWS_SECRET_ACCESS_KEY = "xxx"


    async def go():
        bucket = 'dataintake'
        filename = 'dummy.bin'
        folder = 'aiobotocore'
        key = '{}/{}'.format(folder, filename)

        session = get_session()
        async with session.create_client('s3', region_name='us-west-2',
                                       aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
                                       aws_access_key_id=AWS_ACCESS_KEY_ID) as client:
            # upload object to amazon s3
            data = b'\x01'*1024
            resp = await client.put_object(Bucket=bucket,
                                                Key=key,
                                                Body=data)
            print(resp)

            # getting s3 object properties of file we just uploaded
            resp = await client.get_object_acl(Bucket=bucket, Key=key)
            print(resp)

            # get object from s3
            response = await client.get_object(Bucket=bucket, Key=key)
            # this will ensure the connection is correctly re-used/closed
            async with response['Body'] as stream:
                assert await stream.read() == data

            # list s3 objects using paginator
            paginator = client.get_paginator('list_objects')
            async for result in paginator.paginate(Bucket=bucket, Prefix=folder):
                for c in result.get('Contents', []):
                    print(c)

            # delete object from s3
            resp = await client.delete_object(Bucket=bucket, Key=key)
            print(resp)

    loop = asyncio.get_event_loop()
    loop.run_until_complete(go())



Context Manager Examples
------------------------

.. code:: python

    from contextlib import AsyncExitStack

    from aiobotocore.session import AioSession


    # How to use in existing context manager
    class Manager:
        def __init__(self):
            self._exit_stack = AsyncExitStack()
            self._s3_client = None

        async def __aenter__(self):
            session = AioSession()
            self._s3_client = await self._exit_stack.enter_async_context(session.create_client('s3'))

        async def __aexit__(self, exc_type, exc_val, exc_tb):
            await self._exit_stack.__aexit__(exc_type, exc_val, exc_tb)

    # How to use with an external exit_stack
    async def create_s3_client(session: AioSession, exit_stack: AsyncExitStack):
        # Create client and add cleanup
        client = await exit_stack.enter_async_context(session.create_client('s3'))
        return client


    async def non_manager_example():
        session = AioSession()

        async with AsyncExitStack() as exit_stack:
            s3_client = await create_s3_client(session, exit_stack)

            # do work with s3_client



Supported AWS Services
----------------------

This is a non-exuastive list of what tests aiobotocore runs against AWS services. Not all methods are tested but we aim to test the majority of
commonly used methods.

+----------------+-----------------------+
| Service        | Status                |
+================+=======================+
| S3             | Working               |
+----------------+-----------------------+
| DynamoDB       | Basic methods tested  |
+----------------+-----------------------+
| SNS            | Basic methods tested  |
+----------------+-----------------------+
| SQS            | Basic methods tested  |
+----------------+-----------------------+
| CloudFormation | Stack creation tested |
+----------------+-----------------------+
| Kinesis        | Basic methods tested  |
+----------------+-----------------------+

Due to the way boto3 is implemented, its highly likely that even if services are not listed above that you can take any `boto3.client('service')` and
stick `await` infront of methods to make them async, e.g. `await client.list_named_queries()` would asynchronous list all of the named Athena queries.

If a service is not listed here and you could do with some tests or examples feel free to raise an issue.

Run Tests
---------

There are two set of tests, those that can be mocked through `moto <https://github.com/getmoto/moto>`_ running in docker, and those that require running against a personal amazon key. The CI only runs the moto tests.

To run the moto tests:

::

    $ make mototest

To run the non-moto tests:

Make sure you have development requirements installed and your amazon key and
secret accessible via environment variables:

::

    $ pip install pip-tools
    $ pip-compile requirements-dev.txt
    $ pip-sync requirements-dev.txt
    $ export AWS_ACCESS_KEY_ID=xxx
    $ export AWS_SECRET_ACCESS_KEY=xxx

Execute tests suite:

::

    $ make test



Enable type checking and code completion
----------------------------------------

Install types-aiobotocore_ that contains type annotations for `aiobotocore`
and all supported botocore_ services.

.. code:: bash

    # install aiobotocore type annotations
    # for ec2, s3, rds, lambda, sqs, dynamo and cloudformation
    python -m pip install 'types-aiobotocore[essential]'

    # or install annotations for services you use
    python -m pip install 'types-aiobotocore[acm,apigateway]'

    # Lite version does not provide session.create_client overloads
    # it is more RAM-friendly, but requires explicit type annotations
    python -m pip install 'types-aiobotocore-lite[essential]'

Now you should be able to run Pylance_, pyright_, or mypy_ for type checking
as well as code completion in your IDE.

For `types-aiobotocore-lite` package use explicit type annotations:

.. code:: python

    from aiobotocore.session import get_session
    from types_aiobotocore_s3.client import S3Client

    session = get_session()
    async with session.create_client("s3") as client:
        client: S3Client
        # type checking and code completion is now enabled for client


Full documentation for `types-aiobotocore` can be found here: https://youtype.github.io/types_aiobotocore_docs/


Mailing List
------------

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


Requirements
------------
* Python_ 3.8+
* aiohttp_
* botocore_

.. _Python: https://www.python.org
.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _botocore: https://github.com/boto/botocore
.. _aiohttp: https://github.com/aio-libs/aiohttp
.. _types-aiobotocore: https://youtype.github.io/types_aiobotocore_docs/
.. _Pylance: https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance
.. _pyright: https://github.com/microsoft/pyright
.. _mypy: http://mypy-lang.org/

awscli & boto3
--------------

awscli and boto3 depend on a single version, or a narrow range of versions, of botocore.
However, aiobotocore only supports a specific range of botocore versions. To ensure you
install the latest version of awscli and boto3 that your specific combination or
aiobotocore and botocore can support use::

    pip install -U 'aiobotocore[awscli,boto3]'

If you only need awscli and not boto3 (or vice versa) you can just install one extra or
the other.

Changes
-------

2.12.1 (2024-03-04)
^^^^^^^^^^^^^^^^^^^
* fix use of proxies #1070

2.12.0 (2024-02-28)
^^^^^^^^^^^^^^^^^^^
* bump botocore dependency specification

2.11.2 (2024-02-02)
^^^^^^^^^^^^^^^^^^^
* bump botocore dependency specification

2.11.1 (2024-01-25)
^^^^^^^^^^^^^^^^^^^
* bump botocore dependency specification

2.11.0 (2024-01-19)
^^^^^^^^^^^^^^^^^^^
* send project-specific `User-Agent` HTTP header #853

2.10.0 (2024-01-18)
^^^^^^^^^^^^^^^^^^^
* bump botocore dependency specification

2.9.1 (2024-01-17)
^^^^^^^^^^^^^^^^^^
* fix race condition in S3 Express identity cache #1072

2.9.0 (2023-12-12)
^^^^^^^^^^^^^^^^^^
* bump botocore dependency specification

2.8.0 (2023-11-28)
^^^^^^^^^^^^^^^^^^
* add AioStubber that returns AioAWSResponse()
* remove confusing `aiobotocore.session.Session` symbol
* bump botocore dependency specification

2.7.0 (2023-10-17)
^^^^^^^^^^^^^^^^^^
* add support for Python 3.12
* drop more Python 3.7 support (EOL)
* relax botocore dependency specification

2.6.0 (2023-08-11)
^^^^^^^^^^^^^^^^^^
* bump aiohttp minimum version to 3.7.4.post0
* drop python 3.7 support (EOL)

2.5.4 (2023-08-07)
^^^^^^^^^^^^^^^^^^
* fix __aenter__ attribute error introduced in refresh bugfix (#1031)

2.5.3 (2023-08-06)
^^^^^^^^^^^^^^^^^^
* add more support for Python 3.11
* bump botocore to 1.31.17
* add waiter.wait return
* fix SSO token refresh bug #1025

2.5.2 (2023-07-06)
^^^^^^^^^^^^^^^^^^
* fix issue #1020

2.5.1 (2023-06-27)
^^^^^^^^^^^^^^^^^^
* bump botocore to 1.29.161

2.5.0 (2023-03-06)
^^^^^^^^^^^^^^^^^^
* bump botocore to 1.29.76 (thanks @jakob-keller #999)

2.4.2 (2022-12-22)
^^^^^^^^^^^^^^^^^^
* fix retries (#988)

2.4.1 (2022-11-28)
^^^^^^^^^^^^^^^^^^
* Adds support for checksums in streamed request trailers (thanks @terrycain #962)

2.4.0 (2022-08-25)
^^^^^^^^^^^^^^^^^^
* bump botocore to 1.27.59

2.3.4 (2022-06-23)
^^^^^^^^^^^^^^^^^^
* fix select_object_content

2.3.3 (2022-06-07)
^^^^^^^^^^^^^^^^^^
* fix connect timeout while getting IAM creds
* fix test files appearing in distribution package

2.3.2 (2022-05-08)
^^^^^^^^^^^^^^^^^^
* fix 3.6 testing and and actually fix 3.6 support

2.3.1 (2022-05-06)
^^^^^^^^^^^^^^^^^^
* fix 3.6 support
* AioConfig: allow keepalive_timeout to be None (thanks @dnlserrano #933)

2.3.0 (2022-05-05)
^^^^^^^^^^^^^^^^^^
* fix encoding issue by swapping to AioAWSResponse and AioAWSRequest to behave more
  like botocore
* fix exceptions mappings

2.2.0 (2022-03-16)
^^^^^^^^^^^^^^^^^^
* remove deprecated APIs
* bump to botocore 1.24.21
* re-enable retry of aiohttp.ClientPayloadError

2.1.2 (2022-03-03)
^^^^^^^^^^^^^^^^^^
* fix httpsession close call

2.1.1 (2022-02-10)
^^^^^^^^^^^^^^^^^^
* implement asynchronous non-blocking adaptive retry strategy

2.1.0 (2021-12-14)
^^^^^^^^^^^^^^^^^^
* bump to botocore 1.23.24
* fix aiohttp resolver config param #906

2.0.1 (2021-11-25)
^^^^^^^^^^^^^^^^^^
* revert accidental dupe of _register_s3_events #867 (thanks @eoghanmurray)
* Support customizing the aiohttp connector resolver class #893 (thanks @orf)
* fix timestream query #902


2.0.0 (2021-11-02)
^^^^^^^^^^^^^^^^^^
* bump to botocore 1.22.8
* turn off default ``AIOBOTOCORE_DEPRECATED_1_4_0_APIS`` env var to match botocore module.  See notes in 1.4.0.

1.4.2 (2021-09-03)
^^^^^^^^^^^^^^^^^^
* Fix missing close() method on http session (thanks `@terrycain <https://github.com/terrycain>`_)
* Fix for verify=False

1.4.1 (2021-08-24)
^^^^^^^^^^^^^^^^^^
* put backwards incompatible changes behind ``AIOBOTOCORE_DEPRECATED_1_4_0_APIS`` env var.  This means that `#876 <https://github.com/aio-libs/aiobotocore/issues/876>`_ will not work unless this env var has been set to 0.

1.4.0 (2021-08-20)
^^^^^^^^^^^^^^^^^^
* fix retries via config `#877 <https://github.com/aio-libs/aiobotocore/pull/877>`_
* remove AioSession and get_session top level names to match botocore_
* change exceptions raised to match those of botocore_, see `mappings <https://github.com/aio-libs/aiobotocore/pull/877/files#diff-b1675e1eb4276bfae81107cda919ba446e4ce1b1e228a9e878d65dd1f474bf8cR162-R181>`_

1.3.3 (2021-07-12)
^^^^^^^^^^^^^^^^^^
* fix AioJSONParser `#872 <https://github.com/aio-libs/aiobotocore/issues/872>`_

1.3.2 (2021-07-07)
^^^^^^^^^^^^^^^^^^
* Bump to botocore_ to `1.20.106 <https://github.com/boto/botocore/tree/1.20.106>`_

1.3.1 (2021-06-11)
^^^^^^^^^^^^^^^^^^
* TCPConnector: change deprecated ssl_context to ssl
* fix non awaited generate presigned url calls `#868 <https://github.com/aio-libs/aiobotocore/issues/868>`_

1.3.0 (2021-04-09)
^^^^^^^^^^^^^^^^^^
* Bump to botocore_ to `1.20.49 <https://github.com/boto/botocore/tree/1.20.49>`_ `#856 <https://github.com/aio-libs/aiobotocore/pull/856>`_

1.2.2 (2021-03-11)
^^^^^^^^^^^^^^^^^^
* Await call to async method _load_creds_via_assume_role `#858 <https://github.com/aio-libs/aiobotocore/pull/858>`_ (thanks `@puzza007 <https://github.com/puzza007>`_)

1.2.1 (2021-02-10)
^^^^^^^^^^^^^^^^^^
* verify strings are now correctly passed to aiohttp.TCPConnector `#851 <https://github.com/aio-libs/aiobotocore/pull/851>`_ (thanks `@FHTMitchell <https://github.com/FHTMitchell>`_)

1.2.0 (2021-01-11)
^^^^^^^^^^^^^^^^^^
* bump botocore to `1.19.52 <https://github.com/boto/botocore/tree/1.19.52>`_
* use passed in http_session_cls param to create_client `#797 <https://github.com/aio-libs/aiobotocore/issues/797>`_

1.1.2 (2020-10-07)
^^^^^^^^^^^^^^^^^^
* fix AioPageIterator search method #831 (thanks `@joseph-jones <https://github.com/joseph-jones>`_)

1.1.1 (2020-08-31)
^^^^^^^^^^^^^^^^^^
* fix s3 region redirect bug #825

1.1.0 (2020-08-18)
^^^^^^^^^^^^^^^^^^
* bump botocore to 1.17.44

1.0.7 (2020-06-04)
^^^^^^^^^^^^^^^^^^
* fix generate_db_auth_token via #816

1.0.6 (2020-06-04)
^^^^^^^^^^^^^^^^^^
* revert __getattr__ fix as it breaks ddtrace

1.0.5 (2020-06-03)
^^^^^^^^^^^^^^^^^^
* Fixed AioSession.get_service_data emit call #811 via #812
* Fixed async __getattr__ #789 via #803

1.0.4 (2020-04-15)
^^^^^^^^^^^^^^^^^^
* Fixed S3 Presigned Post not being async

1.0.3 (2020-04-09)
^^^^^^^^^^^^^^^^^^
* Fixes typo when using credential process

1.0.2 (2020-04-05)
^^^^^^^^^^^^^^^^^^
* Disable Client.__getattr__ emit for now #789

1.0.1 (2020-04-01)
^^^^^^^^^^^^^^^^^^
* Fixed signing requests with explicit credentials

1.0.0 (2020-03-31)
^^^^^^^^^^^^^^^^^^
* API breaking: The result of create_client is now a required async context class
* Credential refresh should now work
* generate_presigned_url is now an async call along with other credential methods
* Credentials.[access_key/secret_key/token] now raise NotImplementedError because
  they won't call refresh like botocore. Instead should use get_frozen_credentials
  async method
* Bump botocore and extras

0.12.0 (2020-02-23)
^^^^^^^^^^^^^^^^^^^
* Bump botocore and extras
* Drop support for 3.5 given we are unable to test it with moto
  and it will soon be unsupported
* Remove loop parameters for Python 3.8 compliance
* Remove deprecated AioPageIterator.next_page

0.11.1 (2020-01-03)
^^^^^^^^^^^^^^^^^^^
* Fixed event streaming API calls like S3 Select.

0.11.0 (2019-11-12)
^^^^^^^^^^^^^^^^^^^
* replace CaseInsensitiveDict with urllib3 equivalent #744
  (thanks to inspiration from @craigmccarter and @kevchentw)
* bump botocore to 1.13.14
* fix for mismatched botocore method replacements

0.10.4 (2019-10-24)
^^^^^^^^^^^^^^^^^^^
* Make AioBaseClient.close method async #724 (thanks @bsitruk)
* Bump awscli, boto3, botocore #735 (thanks @bbrendon)
* switch paginator to async_generator, add result_key_iters
  (deprecate next_page method)

0.10.3 (2019-07-17)
^^^^^^^^^^^^^^^^^^^
* Bump botocore and extras

0.10.2 (2019-02-11)
^^^^^^^^^^^^^^^^^^^
* Fix response-received emitted event #682

0.10.1 (2019-02-08)
^^^^^^^^^^^^^^^^^^^
* Make tests pass with pytest 4.1 #669 (thanks @yan12125)
* Support Python 3.7 #671 (thanks to @yan12125)
* Update RTD build config #672 (thanks @willingc)
* Bump to botocore 1.12.91 #679

0.10.0 (2018-12-09)
^^^^^^^^^^^^^^^^^^^
* Update to botocore 1.12.49 #639 (thanks @terrycain)

0.9.4 (2018-08-08)
^^^^^^^^^^^^^^^^^^
* Add ClientPayloadError as retryable exception

0.9.3 (2018-07-16)
^^^^^^^^^^^^^^^^^^
* Bring botocore up to date

0.9.2 (2018-05-05)
^^^^^^^^^^^^^^^^^^
* bump aiohttp requirement to fix read timeouts

0.9.1 (2018-05-04)
^^^^^^^^^^^^^^^^^^
* fix timeout bug introduced in last release

0.9.0 (2018-06-01)
^^^^^^^^^^^^^^^^^^
* bump aiohttp to 3.3.x
* remove unneeded set_socket_timeout

0.8.0 (2018-05-07)
^^^^^^^^^^^^^^^^^^
* Fix pagination #573 (thanks @adamrothman)
* Enabled several s3 tests via moto
* Bring botocore up to date

0.7.0 (2018-05-01)
^^^^^^^^^^^^^^^^^^
* Just version bump

0.6.1a0 (2018-05-01)
^^^^^^^^^^^^^^^^^^^^
* bump to aiohttp 3.1.x
* switch tests to Python 3.5+
* switch to native coroutines
* fix non-streaming body timeout retries

0.6.0 (2018-03-04)
^^^^^^^^^^^^^^^^^^
* Upgrade to aiohttp>=3.0.0 #536 (thanks @Gr1N)

0.5.3 (2018-02-23)
^^^^^^^^^^^^^^^^^^
* Fixed waiters #523 (thanks @dalazx)
* fix conn_timeout #485

0.5.2 (2017-12-06)
^^^^^^^^^^^^^^^^^^
* Updated awscli dependency #461

0.5.1 (2017-11-10)
^^^^^^^^^^^^^^^^^^
* Disabled compressed response #430

0.5.0 (2017-11-10)
^^^^^^^^^^^^^^^^^^
* Fix error botocore error checking #190
* Update supported botocore requirement to: >=1.7.28, <=1.7.40
* Bump aiohttp requirement to support compressed responses correctly #298

0.4.5 (2017-09-05)
^^^^^^^^^^^^^^^^^^
* Added SQS examples and tests #336
* Changed requirements.txt structure #336
* bump to botocore 1.7.4
* Added DynamoDB examples and tests #340


0.4.4 (2017-08-16)
^^^^^^^^^^^^^^^^^^
* add the supported versions of boto3 to extras require #324

0.4.3 (2017-07-05)
^^^^^^^^^^^^^^^^^^
* add the supported versions of awscli to extras require #273 (thanks @graingert)

0.4.2 (2017-07-03)
^^^^^^^^^^^^^^^^^^
* update supported aiohttp requirement to: >=2.0.4, <=2.3.0
* update supported botocore requirement to: >=1.5.71, <=1.5.78

0.4.1 (2017-06-27)
^^^^^^^^^^^^^^^^^^
* fix redirects #268

0.4.0 (2017-06-19)
^^^^^^^^^^^^^^^^^^
* update botocore requirement to: botocore>=1.5.34, <=1.5.70
* fix read_timeout due to #245
* implement set_socket_timeout

0.3.3 (2017-05-22)
^^^^^^^^^^^^^^^^^^
* switch to PEP 440 version parser to support 'dev' versions

0.3.2 (2017-05-22)
^^^^^^^^^^^^^^^^^^
* Fix botocore integration
* Provisional fix for aiohttp 2.x stream support
* update botocore requirement to: botocore>=1.5.34, <=1.5.52

0.3.1 (2017-04-18)
^^^^^^^^^^^^^^^^^^
* Fixed Waiter support

0.3.0 (2017-04-01)
^^^^^^^^^^^^^^^^^^
* Added support for aiohttp>=2.0.4 (thanks @achimnol)
* update botocore requirement to: botocore>=1.5.0, <=1.5.33

0.2.3 (2017-03-22)
^^^^^^^^^^^^^^^^^^
* update botocore requirement to: botocore>=1.5.0, <1.5.29

0.2.2 (2017-03-07)
^^^^^^^^^^^^^^^^^^
* set aiobotocore.__all__ for * imports #121 (thanks @graingert)
* fix ETag in head_object response #132

0.2.1 (2017-02-01)
^^^^^^^^^^^^^^^^^^
* Normalize headers and handle redirection by botocore #115 (thanks @Fedorof)

0.2.0 (2017-01-30)
^^^^^^^^^^^^^^^^^^
* add support for proxies (thanks @jjonek)
* remove AioConfig verify_ssl connector_arg as this is handled by the
  create_client verify param
* remove AioConfig limit connector_arg as this is now handled by
  by the Config `max_pool_connections` property (note default is 10)

0.1.1 (2017-01-16)
^^^^^^^^^^^^^^^^^^
* botocore updated to version 1.5.0

0.1.0 (2017-01-12)
^^^^^^^^^^^^^^^^^^
* Pass timeout to aiohttp.request to enforce read_timeout #86 (thanks @vharitonsky)
  (bumped up to next semantic version due to read_timeout enabling change)

0.0.6 (2016-11-19)
^^^^^^^^^^^^^^^^^^

* Added enforcement of plain response #57 (thanks @rymir)
* botocore updated to version 1.4.73 #74 (thanks @vas3k)


0.0.5 (2016-06-01)
^^^^^^^^^^^^^^^^^^

* Initial alpha release

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/aio-libs/aiobotocore",
    "name": "aiobotocore",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "Nikolay Novik",
    "author_email": "nickolainovik@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/3b/d5/647d49dfade28b411d9bc8f01f00947b542ee10d47ca8b4a16f4e78bfc91/aiobotocore-2.12.1.tar.gz",
    "platform": null,
    "description": "aiobotocore\n===========\n.. image:: https://travis-ci.com/aio-libs/aiobotocore.svg?branch=master\n    :target: https://travis-ci.com/aio-libs/aiobotocore\n.. image:: https://codecov.io/gh/aio-libs/aiobotocore/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/aio-libs/aiobotocore\n.. image:: https://readthedocs.org/projects/aiobotocore/badge/?version=latest\n    :target: https://aiobotocore.readthedocs.io/en/latest/?badge=latest\n    :alt: Documentation Status\n.. image:: https://img.shields.io/pypi/v/aiobotocore.svg\n    :target: https://pypi.python.org/pypi/aiobotocore\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n    :target: https://gitter.im/aio-libs/aiobotocore\n    :alt: Chat on Gitter\n\n\n\nAsync client for amazon services using botocore_ and aiohttp_/asyncio_.\n\nThis library is a mostly full featured asynchronous version of botocore.\n\n\nInstall\n-------\n::\n\n    $ pip install aiobotocore\n\n\nBasic Example\n-------------\n\n.. code:: python\n\n    import asyncio\n    from aiobotocore.session import get_session\n\n    AWS_ACCESS_KEY_ID = \"xxx\"\n    AWS_SECRET_ACCESS_KEY = \"xxx\"\n\n\n    async def go():\n        bucket = 'dataintake'\n        filename = 'dummy.bin'\n        folder = 'aiobotocore'\n        key = '{}/{}'.format(folder, filename)\n\n        session = get_session()\n        async with session.create_client('s3', region_name='us-west-2',\n                                       aws_secret_access_key=AWS_SECRET_ACCESS_KEY,\n                                       aws_access_key_id=AWS_ACCESS_KEY_ID) as client:\n            # upload object to amazon s3\n            data = b'\\x01'*1024\n            resp = await client.put_object(Bucket=bucket,\n                                                Key=key,\n                                                Body=data)\n            print(resp)\n\n            # getting s3 object properties of file we just uploaded\n            resp = await client.get_object_acl(Bucket=bucket, Key=key)\n            print(resp)\n\n            # get object from s3\n            response = await client.get_object(Bucket=bucket, Key=key)\n            # this will ensure the connection is correctly re-used/closed\n            async with response['Body'] as stream:\n                assert await stream.read() == data\n\n            # list s3 objects using paginator\n            paginator = client.get_paginator('list_objects')\n            async for result in paginator.paginate(Bucket=bucket, Prefix=folder):\n                for c in result.get('Contents', []):\n                    print(c)\n\n            # delete object from s3\n            resp = await client.delete_object(Bucket=bucket, Key=key)\n            print(resp)\n\n    loop = asyncio.get_event_loop()\n    loop.run_until_complete(go())\n\n\n\nContext Manager Examples\n------------------------\n\n.. code:: python\n\n    from contextlib import AsyncExitStack\n\n    from aiobotocore.session import AioSession\n\n\n    # How to use in existing context manager\n    class Manager:\n        def __init__(self):\n            self._exit_stack = AsyncExitStack()\n            self._s3_client = None\n\n        async def __aenter__(self):\n            session = AioSession()\n            self._s3_client = await self._exit_stack.enter_async_context(session.create_client('s3'))\n\n        async def __aexit__(self, exc_type, exc_val, exc_tb):\n            await self._exit_stack.__aexit__(exc_type, exc_val, exc_tb)\n\n    # How to use with an external exit_stack\n    async def create_s3_client(session: AioSession, exit_stack: AsyncExitStack):\n        # Create client and add cleanup\n        client = await exit_stack.enter_async_context(session.create_client('s3'))\n        return client\n\n\n    async def non_manager_example():\n        session = AioSession()\n\n        async with AsyncExitStack() as exit_stack:\n            s3_client = await create_s3_client(session, exit_stack)\n\n            # do work with s3_client\n\n\n\nSupported AWS Services\n----------------------\n\nThis is a non-exuastive list of what tests aiobotocore runs against AWS services. Not all methods are tested but we aim to test the majority of\ncommonly used methods.\n\n+----------------+-----------------------+\n| Service        | Status                |\n+================+=======================+\n| S3             | Working               |\n+----------------+-----------------------+\n| DynamoDB       | Basic methods tested  |\n+----------------+-----------------------+\n| SNS            | Basic methods tested  |\n+----------------+-----------------------+\n| SQS            | Basic methods tested  |\n+----------------+-----------------------+\n| CloudFormation | Stack creation tested |\n+----------------+-----------------------+\n| Kinesis        | Basic methods tested  |\n+----------------+-----------------------+\n\nDue to the way boto3 is implemented, its highly likely that even if services are not listed above that you can take any `boto3.client('service')` and\nstick `await` infront of methods to make them async, e.g. `await client.list_named_queries()` would asynchronous list all of the named Athena queries.\n\nIf a service is not listed here and you could do with some tests or examples feel free to raise an issue.\n\nRun Tests\n---------\n\nThere are two set of tests, those that can be mocked through `moto <https://github.com/getmoto/moto>`_ running in docker, and those that require running against a personal amazon key. The CI only runs the moto tests.\n\nTo run the moto tests:\n\n::\n\n    $ make mototest\n\nTo run the non-moto tests:\n\nMake sure you have development requirements installed and your amazon key and\nsecret accessible via environment variables:\n\n::\n\n    $ pip install pip-tools\n    $ pip-compile requirements-dev.txt\n    $ pip-sync requirements-dev.txt\n    $ export AWS_ACCESS_KEY_ID=xxx\n    $ export AWS_SECRET_ACCESS_KEY=xxx\n\nExecute tests suite:\n\n::\n\n    $ make test\n\n\n\nEnable type checking and code completion\n----------------------------------------\n\nInstall types-aiobotocore_ that contains type annotations for `aiobotocore`\nand all supported botocore_ services.\n\n.. code:: bash\n\n    # install aiobotocore type annotations\n    # for ec2, s3, rds, lambda, sqs, dynamo and cloudformation\n    python -m pip install 'types-aiobotocore[essential]'\n\n    # or install annotations for services you use\n    python -m pip install 'types-aiobotocore[acm,apigateway]'\n\n    # Lite version does not provide session.create_client overloads\n    # it is more RAM-friendly, but requires explicit type annotations\n    python -m pip install 'types-aiobotocore-lite[essential]'\n\nNow you should be able to run Pylance_, pyright_, or mypy_ for type checking\nas well as code completion in your IDE.\n\nFor `types-aiobotocore-lite` package use explicit type annotations:\n\n.. code:: python\n\n    from aiobotocore.session import get_session\n    from types_aiobotocore_s3.client import S3Client\n\n    session = get_session()\n    async with session.create_client(\"s3\") as client:\n        client: S3Client\n        # type checking and code completion is now enabled for client\n\n\nFull documentation for `types-aiobotocore` can be found here: https://youtype.github.io/types_aiobotocore_docs/\n\n\nMailing List\n------------\n\nhttps://groups.google.com/forum/#!forum/aio-libs\n\n\nRequirements\n------------\n* Python_ 3.8+\n* aiohttp_\n* botocore_\n\n.. _Python: https://www.python.org\n.. _asyncio: https://docs.python.org/3/library/asyncio.html\n.. _botocore: https://github.com/boto/botocore\n.. _aiohttp: https://github.com/aio-libs/aiohttp\n.. _types-aiobotocore: https://youtype.github.io/types_aiobotocore_docs/\n.. _Pylance: https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance\n.. _pyright: https://github.com/microsoft/pyright\n.. _mypy: http://mypy-lang.org/\n\nawscli & boto3\n--------------\n\nawscli and boto3 depend on a single version, or a narrow range of versions, of botocore.\nHowever, aiobotocore only supports a specific range of botocore versions. To ensure you\ninstall the latest version of awscli and boto3 that your specific combination or\naiobotocore and botocore can support use::\n\n    pip install -U 'aiobotocore[awscli,boto3]'\n\nIf you only need awscli and not boto3 (or vice versa) you can just install one extra or\nthe other.\n\nChanges\n-------\n\n2.12.1 (2024-03-04)\n^^^^^^^^^^^^^^^^^^^\n* fix use of proxies #1070\n\n2.12.0 (2024-02-28)\n^^^^^^^^^^^^^^^^^^^\n* bump botocore dependency specification\n\n2.11.2 (2024-02-02)\n^^^^^^^^^^^^^^^^^^^\n* bump botocore dependency specification\n\n2.11.1 (2024-01-25)\n^^^^^^^^^^^^^^^^^^^\n* bump botocore dependency specification\n\n2.11.0 (2024-01-19)\n^^^^^^^^^^^^^^^^^^^\n* send project-specific `User-Agent` HTTP header #853\n\n2.10.0 (2024-01-18)\n^^^^^^^^^^^^^^^^^^^\n* bump botocore dependency specification\n\n2.9.1 (2024-01-17)\n^^^^^^^^^^^^^^^^^^\n* fix race condition in S3 Express identity cache #1072\n\n2.9.0 (2023-12-12)\n^^^^^^^^^^^^^^^^^^\n* bump botocore dependency specification\n\n2.8.0 (2023-11-28)\n^^^^^^^^^^^^^^^^^^\n* add AioStubber that returns AioAWSResponse()\n* remove confusing `aiobotocore.session.Session` symbol\n* bump botocore dependency specification\n\n2.7.0 (2023-10-17)\n^^^^^^^^^^^^^^^^^^\n* add support for Python 3.12\n* drop more Python 3.7 support (EOL)\n* relax botocore dependency specification\n\n2.6.0 (2023-08-11)\n^^^^^^^^^^^^^^^^^^\n* bump aiohttp minimum version to 3.7.4.post0\n* drop python 3.7 support (EOL)\n\n2.5.4 (2023-08-07)\n^^^^^^^^^^^^^^^^^^\n* fix __aenter__ attribute error introduced in refresh bugfix (#1031)\n\n2.5.3 (2023-08-06)\n^^^^^^^^^^^^^^^^^^\n* add more support for Python 3.11\n* bump botocore to 1.31.17\n* add waiter.wait return\n* fix SSO token refresh bug #1025\n\n2.5.2 (2023-07-06)\n^^^^^^^^^^^^^^^^^^\n* fix issue #1020\n\n2.5.1 (2023-06-27)\n^^^^^^^^^^^^^^^^^^\n* bump botocore to 1.29.161\n\n2.5.0 (2023-03-06)\n^^^^^^^^^^^^^^^^^^\n* bump botocore to 1.29.76 (thanks @jakob-keller #999)\n\n2.4.2 (2022-12-22)\n^^^^^^^^^^^^^^^^^^\n* fix retries (#988)\n\n2.4.1 (2022-11-28)\n^^^^^^^^^^^^^^^^^^\n* Adds support for checksums in streamed request trailers (thanks @terrycain #962)\n\n2.4.0 (2022-08-25)\n^^^^^^^^^^^^^^^^^^\n* bump botocore to 1.27.59\n\n2.3.4 (2022-06-23)\n^^^^^^^^^^^^^^^^^^\n* fix select_object_content\n\n2.3.3 (2022-06-07)\n^^^^^^^^^^^^^^^^^^\n* fix connect timeout while getting IAM creds\n* fix test files appearing in distribution package\n\n2.3.2 (2022-05-08)\n^^^^^^^^^^^^^^^^^^\n* fix 3.6 testing and and actually fix 3.6 support\n\n2.3.1 (2022-05-06)\n^^^^^^^^^^^^^^^^^^\n* fix 3.6 support\n* AioConfig: allow keepalive_timeout to be None (thanks @dnlserrano #933)\n\n2.3.0 (2022-05-05)\n^^^^^^^^^^^^^^^^^^\n* fix encoding issue by swapping to AioAWSResponse and AioAWSRequest to behave more\n  like botocore\n* fix exceptions mappings\n\n2.2.0 (2022-03-16)\n^^^^^^^^^^^^^^^^^^\n* remove deprecated APIs\n* bump to botocore 1.24.21\n* re-enable retry of aiohttp.ClientPayloadError\n\n2.1.2 (2022-03-03)\n^^^^^^^^^^^^^^^^^^\n* fix httpsession close call\n\n2.1.1 (2022-02-10)\n^^^^^^^^^^^^^^^^^^\n* implement asynchronous non-blocking adaptive retry strategy\n\n2.1.0 (2021-12-14)\n^^^^^^^^^^^^^^^^^^\n* bump to botocore 1.23.24\n* fix aiohttp resolver config param #906\n\n2.0.1 (2021-11-25)\n^^^^^^^^^^^^^^^^^^\n* revert accidental dupe of _register_s3_events #867 (thanks @eoghanmurray)\n* Support customizing the aiohttp connector resolver class #893 (thanks @orf)\n* fix timestream query #902\n\n\n2.0.0 (2021-11-02)\n^^^^^^^^^^^^^^^^^^\n* bump to botocore 1.22.8\n* turn off default ``AIOBOTOCORE_DEPRECATED_1_4_0_APIS`` env var to match botocore module.  See notes in 1.4.0.\n\n1.4.2 (2021-09-03)\n^^^^^^^^^^^^^^^^^^\n* Fix missing close() method on http session (thanks `@terrycain <https://github.com/terrycain>`_)\n* Fix for verify=False\n\n1.4.1 (2021-08-24)\n^^^^^^^^^^^^^^^^^^\n* put backwards incompatible changes behind ``AIOBOTOCORE_DEPRECATED_1_4_0_APIS`` env var.  This means that `#876 <https://github.com/aio-libs/aiobotocore/issues/876>`_ will not work unless this env var has been set to 0.\n\n1.4.0 (2021-08-20)\n^^^^^^^^^^^^^^^^^^\n* fix retries via config `#877 <https://github.com/aio-libs/aiobotocore/pull/877>`_\n* remove AioSession and get_session top level names to match botocore_\n* change exceptions raised to match those of botocore_, see `mappings <https://github.com/aio-libs/aiobotocore/pull/877/files#diff-b1675e1eb4276bfae81107cda919ba446e4ce1b1e228a9e878d65dd1f474bf8cR162-R181>`_\n\n1.3.3 (2021-07-12)\n^^^^^^^^^^^^^^^^^^\n* fix AioJSONParser `#872 <https://github.com/aio-libs/aiobotocore/issues/872>`_\n\n1.3.2 (2021-07-07)\n^^^^^^^^^^^^^^^^^^\n* Bump to botocore_ to `1.20.106 <https://github.com/boto/botocore/tree/1.20.106>`_\n\n1.3.1 (2021-06-11)\n^^^^^^^^^^^^^^^^^^\n* TCPConnector: change deprecated ssl_context to ssl\n* fix non awaited generate presigned url calls `#868 <https://github.com/aio-libs/aiobotocore/issues/868>`_\n\n1.3.0 (2021-04-09)\n^^^^^^^^^^^^^^^^^^\n* Bump to botocore_ to `1.20.49 <https://github.com/boto/botocore/tree/1.20.49>`_ `#856 <https://github.com/aio-libs/aiobotocore/pull/856>`_\n\n1.2.2 (2021-03-11)\n^^^^^^^^^^^^^^^^^^\n* Await call to async method _load_creds_via_assume_role `#858 <https://github.com/aio-libs/aiobotocore/pull/858>`_ (thanks `@puzza007 <https://github.com/puzza007>`_)\n\n1.2.1 (2021-02-10)\n^^^^^^^^^^^^^^^^^^\n* verify strings are now correctly passed to aiohttp.TCPConnector `#851 <https://github.com/aio-libs/aiobotocore/pull/851>`_ (thanks `@FHTMitchell <https://github.com/FHTMitchell>`_)\n\n1.2.0 (2021-01-11)\n^^^^^^^^^^^^^^^^^^\n* bump botocore to `1.19.52 <https://github.com/boto/botocore/tree/1.19.52>`_\n* use passed in http_session_cls param to create_client `#797 <https://github.com/aio-libs/aiobotocore/issues/797>`_\n\n1.1.2 (2020-10-07)\n^^^^^^^^^^^^^^^^^^\n* fix AioPageIterator search method #831 (thanks `@joseph-jones <https://github.com/joseph-jones>`_)\n\n1.1.1 (2020-08-31)\n^^^^^^^^^^^^^^^^^^\n* fix s3 region redirect bug #825\n\n1.1.0 (2020-08-18)\n^^^^^^^^^^^^^^^^^^\n* bump botocore to 1.17.44\n\n1.0.7 (2020-06-04)\n^^^^^^^^^^^^^^^^^^\n* fix generate_db_auth_token via #816\n\n1.0.6 (2020-06-04)\n^^^^^^^^^^^^^^^^^^\n* revert __getattr__ fix as it breaks ddtrace\n\n1.0.5 (2020-06-03)\n^^^^^^^^^^^^^^^^^^\n* Fixed AioSession.get_service_data emit call #811 via #812\n* Fixed async __getattr__ #789 via #803\n\n1.0.4 (2020-04-15)\n^^^^^^^^^^^^^^^^^^\n* Fixed S3 Presigned Post not being async\n\n1.0.3 (2020-04-09)\n^^^^^^^^^^^^^^^^^^\n* Fixes typo when using credential process\n\n1.0.2 (2020-04-05)\n^^^^^^^^^^^^^^^^^^\n* Disable Client.__getattr__ emit for now #789\n\n1.0.1 (2020-04-01)\n^^^^^^^^^^^^^^^^^^\n* Fixed signing requests with explicit credentials\n\n1.0.0 (2020-03-31)\n^^^^^^^^^^^^^^^^^^\n* API breaking: The result of create_client is now a required async context class\n* Credential refresh should now work\n* generate_presigned_url is now an async call along with other credential methods\n* Credentials.[access_key/secret_key/token] now raise NotImplementedError because\n  they won't call refresh like botocore. Instead should use get_frozen_credentials\n  async method\n* Bump botocore and extras\n\n0.12.0 (2020-02-23)\n^^^^^^^^^^^^^^^^^^^\n* Bump botocore and extras\n* Drop support for 3.5 given we are unable to test it with moto\n  and it will soon be unsupported\n* Remove loop parameters for Python 3.8 compliance\n* Remove deprecated AioPageIterator.next_page\n\n0.11.1 (2020-01-03)\n^^^^^^^^^^^^^^^^^^^\n* Fixed event streaming API calls like S3 Select.\n\n0.11.0 (2019-11-12)\n^^^^^^^^^^^^^^^^^^^\n* replace CaseInsensitiveDict with urllib3 equivalent #744\n  (thanks to inspiration from @craigmccarter and @kevchentw)\n* bump botocore to 1.13.14\n* fix for mismatched botocore method replacements\n\n0.10.4 (2019-10-24)\n^^^^^^^^^^^^^^^^^^^\n* Make AioBaseClient.close method async #724 (thanks @bsitruk)\n* Bump awscli, boto3, botocore #735 (thanks @bbrendon)\n* switch paginator to async_generator, add result_key_iters\n  (deprecate next_page method)\n\n0.10.3 (2019-07-17)\n^^^^^^^^^^^^^^^^^^^\n* Bump botocore and extras\n\n0.10.2 (2019-02-11)\n^^^^^^^^^^^^^^^^^^^\n* Fix response-received emitted event #682\n\n0.10.1 (2019-02-08)\n^^^^^^^^^^^^^^^^^^^\n* Make tests pass with pytest 4.1 #669 (thanks @yan12125)\n* Support Python 3.7 #671 (thanks to @yan12125)\n* Update RTD build config #672 (thanks @willingc)\n* Bump to botocore 1.12.91 #679\n\n0.10.0 (2018-12-09)\n^^^^^^^^^^^^^^^^^^^\n* Update to botocore 1.12.49 #639 (thanks @terrycain)\n\n0.9.4 (2018-08-08)\n^^^^^^^^^^^^^^^^^^\n* Add ClientPayloadError as retryable exception\n\n0.9.3 (2018-07-16)\n^^^^^^^^^^^^^^^^^^\n* Bring botocore up to date\n\n0.9.2 (2018-05-05)\n^^^^^^^^^^^^^^^^^^\n* bump aiohttp requirement to fix read timeouts\n\n0.9.1 (2018-05-04)\n^^^^^^^^^^^^^^^^^^\n* fix timeout bug introduced in last release\n\n0.9.0 (2018-06-01)\n^^^^^^^^^^^^^^^^^^\n* bump aiohttp to 3.3.x\n* remove unneeded set_socket_timeout\n\n0.8.0 (2018-05-07)\n^^^^^^^^^^^^^^^^^^\n* Fix pagination #573 (thanks @adamrothman)\n* Enabled several s3 tests via moto\n* Bring botocore up to date\n\n0.7.0 (2018-05-01)\n^^^^^^^^^^^^^^^^^^\n* Just version bump\n\n0.6.1a0 (2018-05-01)\n^^^^^^^^^^^^^^^^^^^^\n* bump to aiohttp 3.1.x\n* switch tests to Python 3.5+\n* switch to native coroutines\n* fix non-streaming body timeout retries\n\n0.6.0 (2018-03-04)\n^^^^^^^^^^^^^^^^^^\n* Upgrade to aiohttp>=3.0.0 #536 (thanks @Gr1N)\n\n0.5.3 (2018-02-23)\n^^^^^^^^^^^^^^^^^^\n* Fixed waiters #523 (thanks @dalazx)\n* fix conn_timeout #485\n\n0.5.2 (2017-12-06)\n^^^^^^^^^^^^^^^^^^\n* Updated awscli dependency #461\n\n0.5.1 (2017-11-10)\n^^^^^^^^^^^^^^^^^^\n* Disabled compressed response #430\n\n0.5.0 (2017-11-10)\n^^^^^^^^^^^^^^^^^^\n* Fix error botocore error checking #190\n* Update supported botocore requirement to: >=1.7.28, <=1.7.40\n* Bump aiohttp requirement to support compressed responses correctly #298\n\n0.4.5 (2017-09-05)\n^^^^^^^^^^^^^^^^^^\n* Added SQS examples and tests #336\n* Changed requirements.txt structure #336\n* bump to botocore 1.7.4\n* Added DynamoDB examples and tests #340\n\n\n0.4.4 (2017-08-16)\n^^^^^^^^^^^^^^^^^^\n* add the supported versions of boto3 to extras require #324\n\n0.4.3 (2017-07-05)\n^^^^^^^^^^^^^^^^^^\n* add the supported versions of awscli to extras require #273 (thanks @graingert)\n\n0.4.2 (2017-07-03)\n^^^^^^^^^^^^^^^^^^\n* update supported aiohttp requirement to: >=2.0.4, <=2.3.0\n* update supported botocore requirement to: >=1.5.71, <=1.5.78\n\n0.4.1 (2017-06-27)\n^^^^^^^^^^^^^^^^^^\n* fix redirects #268\n\n0.4.0 (2017-06-19)\n^^^^^^^^^^^^^^^^^^\n* update botocore requirement to: botocore>=1.5.34, <=1.5.70\n* fix read_timeout due to #245\n* implement set_socket_timeout\n\n0.3.3 (2017-05-22)\n^^^^^^^^^^^^^^^^^^\n* switch to PEP 440 version parser to support 'dev' versions\n\n0.3.2 (2017-05-22)\n^^^^^^^^^^^^^^^^^^\n* Fix botocore integration\n* Provisional fix for aiohttp 2.x stream support\n* update botocore requirement to: botocore>=1.5.34, <=1.5.52\n\n0.3.1 (2017-04-18)\n^^^^^^^^^^^^^^^^^^\n* Fixed Waiter support\n\n0.3.0 (2017-04-01)\n^^^^^^^^^^^^^^^^^^\n* Added support for aiohttp>=2.0.4 (thanks @achimnol)\n* update botocore requirement to: botocore>=1.5.0, <=1.5.33\n\n0.2.3 (2017-03-22)\n^^^^^^^^^^^^^^^^^^\n* update botocore requirement to: botocore>=1.5.0, <1.5.29\n\n0.2.2 (2017-03-07)\n^^^^^^^^^^^^^^^^^^\n* set aiobotocore.__all__ for * imports #121 (thanks @graingert)\n* fix ETag in head_object response #132\n\n0.2.1 (2017-02-01)\n^^^^^^^^^^^^^^^^^^\n* Normalize headers and handle redirection by botocore #115 (thanks @Fedorof)\n\n0.2.0 (2017-01-30)\n^^^^^^^^^^^^^^^^^^\n* add support for proxies (thanks @jjonek)\n* remove AioConfig verify_ssl connector_arg as this is handled by the\n  create_client verify param\n* remove AioConfig limit connector_arg as this is now handled by\n  by the Config `max_pool_connections` property (note default is 10)\n\n0.1.1 (2017-01-16)\n^^^^^^^^^^^^^^^^^^\n* botocore updated to version 1.5.0\n\n0.1.0 (2017-01-12)\n^^^^^^^^^^^^^^^^^^\n* Pass timeout to aiohttp.request to enforce read_timeout #86 (thanks @vharitonsky)\n  (bumped up to next semantic version due to read_timeout enabling change)\n\n0.0.6 (2016-11-19)\n^^^^^^^^^^^^^^^^^^\n\n* Added enforcement of plain response #57 (thanks @rymir)\n* botocore updated to version 1.4.73 #74 (thanks @vas3k)\n\n\n0.0.5 (2016-06-01)\n^^^^^^^^^^^^^^^^^^\n\n* Initial alpha release\n",
    "bugtrack_url": null,
    "license": "Apache License 2.0",
    "summary": "Async client for aws services using botocore and aiohttp",
    "version": "2.12.1",
    "project_urls": {
        "Download": "https://pypi.python.org/pypi/aiobotocore",
        "Homepage": "https://github.com/aio-libs/aiobotocore"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4dbe52c4181235cad3e462ac163ae714de37d36bed291efdb4e6591fde119219",
                "md5": "3efcf426e159c61d8890bca50730fa4b",
                "sha256": "6a9a3d646cf422f45fdc1e4256e78563ebffba64733bc9b8ca9123614e8ba9af"
            },
            "downloads": -1,
            "filename": "aiobotocore-2.12.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3efcf426e159c61d8890bca50730fa4b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 76298,
            "upload_time": "2024-03-04T19:10:51",
            "upload_time_iso_8601": "2024-03-04T19:10:51.112299Z",
            "url": "https://files.pythonhosted.org/packages/4d/be/52c4181235cad3e462ac163ae714de37d36bed291efdb4e6591fde119219/aiobotocore-2.12.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3bd5647d49dfade28b411d9bc8f01f00947b542ee10d47ca8b4a16f4e78bfc91",
                "md5": "f21472109a86e7d490af67984e8dd297",
                "sha256": "8706b28f16f93c541f6ed50352115a79d8f3499539f8d0bb70aa0f7a5379c1fe"
            },
            "downloads": -1,
            "filename": "aiobotocore-2.12.1.tar.gz",
            "has_sig": false,
            "md5_digest": "f21472109a86e7d490af67984e8dd297",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 103243,
            "upload_time": "2024-03-04T19:10:54",
            "upload_time_iso_8601": "2024-03-04T19:10:54.341374Z",
            "url": "https://files.pythonhosted.org/packages/3b/d5/647d49dfade28b411d9bc8f01f00947b542ee10d47ca8b4a16f4e78bfc91/aiobotocore-2.12.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-04 19:10:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aio-libs",
    "github_project": "aiobotocore",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "aiobotocore"
}
        
Elapsed time: 0.20587s