Hello community,

here is the log from the commit of package python-aiobotocore for 
openSUSE:Factory checked in at 2020-08-10 15:06:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-aiobotocore (Old)
 and      /work/SRC/openSUSE:Factory/.python-aiobotocore.new.3399 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-aiobotocore"

Mon Aug 10 15:06:54 2020 rev:3 rq:825340 version:0.12.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-aiobotocore/python-aiobotocore.changes    
2020-01-28 10:57:16.909125220 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-aiobotocore.new.3399/python-aiobotocore.changes
  2020-08-10 15:07:58.172283748 +0200
@@ -1,0 +2,11 @@
+Tue Mar 24 11:26:42 UTC 2020 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- Update to 0.12.0
+  + 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
+- Update BuildRequires and Requires from setup.py
+
+-------------------------------------------------------------------

Old:
----
  aiobotocore-0.11.1.tar.gz

New:
----
  aiobotocore-0.12.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-aiobotocore.spec ++++++
--- /var/tmp/diff_new_pack.UmTUUA/_old  2020-08-10 15:07:59.692283692 +0200
+++ /var/tmp/diff_new_pack.UmTUUA/_new  2020-08-10 15:07:59.696283691 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
 Name:           python-aiobotocore
-Version:        0.11.1
+Version:        0.12.0
 Release:        0
 Summary:        Async client for aws services
 License:        Apache-2.0
@@ -32,7 +32,8 @@
 BuildRequires:  python-rpm-macros
 # SECTION test requirements
 BuildRequires:  %{python_module aiohttp >= 3.3.1}
-BuildRequires:  %{python_module botocore >= 1.13.14}
+BuildRequires:  %{python_module aioitertools >= 0.5.1}
+BuildRequires:  %{python_module botocore >= 1.15.3}
 BuildRequires:  %{python_module wrapt >= 1.10.10}
 # /SECTION
 Requires:       python-aiohttp >= 3.3.1

++++++ aiobotocore-0.11.1.tar.gz -> aiobotocore-0.12.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/CHANGES.rst 
new/aiobotocore-0.12.0/CHANGES.rst
--- old/aiobotocore-0.11.1/CHANGES.rst  2020-01-04 07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/CHANGES.rst  2020-02-23 12:32:32.000000000 +0100
@@ -1,6 +1,14 @@
 Changes
 -------
 
+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.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/PKG-INFO 
new/aiobotocore-0.12.0/PKG-INFO
--- old/aiobotocore-0.11.1/PKG-INFO     2020-01-04 07:56:59.000000000 +0100
+++ new/aiobotocore-0.12.0/PKG-INFO     2020-02-23 12:33:11.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: aiobotocore
-Version: 0.11.1
+Version: 0.12.0
 Summary: Async client for aws services using botocore and aiohttp
 Home-page: https://github.com/aio-libs/aiobotocore
 Author: Nikolay Novik
@@ -51,13 +51,13 @@
             AWS_SECRET_ACCESS_KEY = "xxx"
         
         
-            async def go(loop):
+            async def go():
                 bucket = 'dataintake'
                 filename = 'dummy.bin'
                 folder = 'aiobotocore'
                 key = '{}/{}'.format(folder, filename)
         
-                session = aiobotocore.get_session(loop=loop)
+                session = aiobotocore.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:
@@ -89,7 +89,7 @@
                     print(resp)
         
             loop = asyncio.get_event_loop()
-            loop.run_until_complete(go(loop))
+            loop.run_until_complete(go())
         
         
         Supported AWS Services
@@ -130,7 +130,7 @@
             $ cd aiobotocore
             $ export AWS_ACCESS_KEY_ID=xxx
             $ export AWS_SECRET_ACCESS_KEY=xxx
-            $ pip install -Ur requirements-dev.txt
+            $ pipenv sync --dev
         
         Execute tests suite:
         
@@ -147,12 +147,12 @@
         
         Requirements
         ------------
-        * Python_ 3.5+
+        * Python_ 3.6+
         * aiohttp_
         * botocore_
         
         .. _Python: https://www.python.org
-        .. _asyncio: http://docs.python.org/3.5/library/asyncio.html
+        .. _asyncio: https://docs.python.org/3/library/asyncio.html
         .. _botocore: https://github.com/boto/botocore
         .. _aiohttp: https://github.com/KeepSafe/aiohttp
         
@@ -169,6 +169,14 @@
         Changes
         -------
         
+        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.
@@ -362,12 +370,12 @@
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: System Administrators
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Environment :: Web Environment
 Classifier: Development Status :: 3 - Alpha
 Classifier: Framework :: AsyncIO
+Requires-Python: >=3.6
 Provides-Extra: awscli
 Provides-Extra: boto3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/README.rst 
new/aiobotocore-0.12.0/README.rst
--- old/aiobotocore-0.11.1/README.rst   2020-01-04 07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/README.rst   2020-02-23 12:32:32.000000000 +0100
@@ -42,13 +42,13 @@
     AWS_SECRET_ACCESS_KEY = "xxx"
 
 
-    async def go(loop):
+    async def go():
         bucket = 'dataintake'
         filename = 'dummy.bin'
         folder = 'aiobotocore'
         key = '{}/{}'.format(folder, filename)
 
-        session = aiobotocore.get_session(loop=loop)
+        session = aiobotocore.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:
@@ -80,7 +80,7 @@
             print(resp)
 
     loop = asyncio.get_event_loop()
-    loop.run_until_complete(go(loop))
+    loop.run_until_complete(go())
 
 
 Supported AWS Services
@@ -121,7 +121,7 @@
     $ cd aiobotocore
     $ export AWS_ACCESS_KEY_ID=xxx
     $ export AWS_SECRET_ACCESS_KEY=xxx
-    $ pip install -Ur requirements-dev.txt
+    $ pipenv sync --dev
 
 Execute tests suite:
 
@@ -138,12 +138,12 @@
 
 Requirements
 ------------
-* Python_ 3.5+
+* Python_ 3.6+
 * aiohttp_
 * botocore_
 
 .. _Python: https://www.python.org
-.. _asyncio: http://docs.python.org/3.5/library/asyncio.html
+.. _asyncio: https://docs.python.org/3/library/asyncio.html
 .. _botocore: https://github.com/boto/botocore
 .. _aiohttp: https://github.com/KeepSafe/aiohttp
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/__init__.py 
new/aiobotocore-0.12.0/aiobotocore/__init__.py
--- old/aiobotocore-0.11.1/aiobotocore/__init__.py      2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/__init__.py      2020-02-23 
12:32:32.000000000 +0100
@@ -1,4 +1,4 @@
 from .session import get_session, AioSession
 
 __all__ = ['get_session', 'AioSession']
-__version__ = '0.11.1'
+__version__ = '0.12.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/args.py 
new/aiobotocore-0.12.0/aiobotocore/args.py
--- old/aiobotocore-0.11.1/aiobotocore/args.py  2020-01-04 07:55:36.000000000 
+0100
+++ new/aiobotocore-0.12.0/aiobotocore/args.py  2020-02-23 12:32:32.000000000 
+0100
@@ -1,6 +1,6 @@
-import asyncio
 import copy
-import botocore.args
+
+from botocore.args import ClientArgsCreator
 import botocore.serialize
 import botocore.parsers
 from botocore.signers import RequestSigner
@@ -9,11 +9,7 @@
 from .endpoint import AioEndpointCreator
 
 
-class AioClientArgsCreator(botocore.args.ClientArgsCreator):
-    def __init__(self, *args, loop=None, **kwargs):
-        super().__init__(*args, **kwargs)
-        self._loop = loop or asyncio.get_event_loop()
-
+class AioClientArgsCreator(ClientArgsCreator):
     # NOTE: we override this so we can pull out the custom AioConfig params and
     #       use an AioEndpointCreator
     def get_client_args(self, service_model, region_name, is_secure,
@@ -23,7 +19,7 @@
             service_model, client_config, endpoint_bridge, region_name,
             endpoint_url, is_secure, scoped_config)
 
-        service_name = final_args['service_name']
+        # service_name = final_args['service_name']
         parameter_validation = final_args['parameter_validation']
         endpoint_config = final_args['endpoint_config']
         protocol = final_args['protocol']
@@ -34,10 +30,6 @@
 
         signing_region = endpoint_config['signing_region']
         endpoint_region_name = endpoint_config['region_name']
-        if signing_region is None and endpoint_region_name is None:
-            signing_region, endpoint_region_name = \
-                self._get_default_s3_region(service_name, endpoint_bridge)
-            config_kwargs['region_name'] = endpoint_region_name
 
         event_emitter = copy.copy(self._event_emitter)
         signer = RequestSigner(
@@ -49,13 +41,14 @@
 
         config_kwargs['s3'] = s3_config
 
+        # aiobotocore addition
         if isinstance(client_config, AioConfig):
             connector_args = client_config.connector_args
         else:
             connector_args = None
 
         new_config = AioConfig(connector_args, **config_kwargs)
-        endpoint_creator = AioEndpointCreator(event_emitter, loop=self._loop)
+        endpoint_creator = AioEndpointCreator(event_emitter)
 
         endpoint = endpoint_creator.create_endpoint(
             service_model, region_name=endpoint_region_name,
@@ -81,6 +74,5 @@
             'loader': self._loader,
             'client_config': new_config,
             'partition': partition,
-            'exceptions_factory': self._exceptions_factory,
-            'loop': self._loop
+            'exceptions_factory': self._exceptions_factory
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/client.py 
new/aiobotocore-0.12.0/aiobotocore/client.py
--- old/aiobotocore-0.11.1/aiobotocore/client.py        2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/client.py        2020-02-23 
12:32:32.000000000 +0100
@@ -1,5 +1,3 @@
-import asyncio
-
 from botocore.client import logger, PaginatorDocstring, ClientCreator, 
BaseClient
 from botocore.exceptions import OperationNotPageableError
 from botocore.history import get_global_history_recorder
@@ -15,11 +13,6 @@
 
 
 class AioClientCreator(ClientCreator):
-
-    def __init__(self, *args, loop=None, **kwargs):
-        super().__init__(*args, **kwargs)
-        self._loop = loop or asyncio.get_event_loop()
-
     def _create_client_class(self, service_name, service_model):
         class_attributes = self._create_methods(service_model)
         py_name_to_operation_name = self._create_name_mapping(service_model)
@@ -42,18 +35,13 @@
         args_creator = AioClientArgsCreator(
             self._event_emitter, self._user_agent,
             self._response_parser_factory, self._loader,
-            self._exceptions_factory, loop=self._loop,
-            config_store=self._config_store)
+            self._exceptions_factory, config_store=self._config_store)
         return args_creator.get_client_args(
             service_model, region_name, is_secure, endpoint_url,
             verify, credentials, scoped_config, client_config, endpoint_bridge)
 
 
 class AioBaseClient(BaseClient):
-    def __init__(self, *args, **kwargs):
-        self._loop = kwargs.pop('loop', None) or asyncio.get_event_loop()
-        super().__init__(*args, **kwargs)
-
     async def _make_api_call(self, operation_name, api_params):
         operation_model = self._service_model.operation_model(operation_name)
         service_name = self._service_model.service_name
@@ -103,11 +91,9 @@
         else:
             return parsed_response
 
-    async def _make_request(self, operation_model, request_dict,
-                            request_context):
+    async def _make_request(self, operation_model, request_dict, 
request_context):
         try:
-            return await self._endpoint.make_request(operation_model,
-                                                     request_dict)
+            return await self._endpoint.make_request(operation_model, 
request_dict)
         except Exception as e:
             self.meta.events.emit(
                 'after-call-error.{service_id}.{operation_name}'.format(
@@ -167,14 +153,15 @@
             documented_paginator_cls = type(
                 paginator_class_name, (AioPaginator,), {'paginate': paginate})
 
-            operation_model = self._service_model.operation_model(
-                actual_operation_name)
+            operation_model = 
self._service_model.operation_model(actual_operation_name)
             paginator = documented_paginator_cls(
                 getattr(self, operation_name),
                 paginator_config,
                 operation_model)
             return paginator
 
+    # NOTE: this method does not differ from botocore, however it's important 
to keep
+    #   as the "waiter" value points to our own asyncio waiter module
     def get_waiter(self, waiter_name):
         """Returns an object that can wait for some condition.
 
@@ -196,7 +183,7 @@
             raise ValueError("Waiter does not exist: %s" % waiter_name)
 
         return waiter.create_waiter_with_client(
-            mapping[waiter_name], model, self, loop=self._loop)
+            mapping[waiter_name], model, self)
 
     async def __aenter__(self):
         await self._endpoint.http_session.__aenter__()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/endpoint.py 
new/aiobotocore-0.12.0/aiobotocore/endpoint.py
--- old/aiobotocore-0.11.1/aiobotocore/endpoint.py      2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/endpoint.py      2020-02-23 
12:32:32.000000000 +0100
@@ -59,10 +59,8 @@
 
 
 class AioEndpoint(Endpoint):
-    def __init__(self, *args, loop=None, proxies=None, **kwargs):
+    def __init__(self, *args, proxies=None, **kwargs):
         super().__init__(*args, **kwargs)
-
-        self._loop = loop or asyncio.get_event_loop()
         self.proxies = proxies or {}
 
     async def _send_request(self, request_dict, operation_model):
@@ -184,7 +182,7 @@
             # for the specified number of times.
             logger.debug("Response received to retry, sleeping for "
                          "%s seconds", handler_response)
-            await asyncio.sleep(handler_response, loop=self._loop)
+            await asyncio.sleep(handler_response)
             return True
 
     async def _send(self, request):
@@ -229,10 +227,6 @@
 
 
 class AioEndpointCreator(EndpointCreator):
-    def __init__(self, *args, loop=None, **kwargs):
-        super().__init__(*args, **kwargs)
-        self._loop = loop
-
     # TODO: handle socket_options
     def create_endpoint(self, service_model, region_name, endpoint_url,
                         verify=None, response_parser_factory=None,
@@ -282,7 +276,6 @@
             ssl_context.load_cert_chain(cert_file, key_file)
 
         connector = aiohttp.TCPConnector(
-            loop=self._loop,
             limit=max_pool_connections,
             verify_ssl=self._get_verify_value(verify),
             ssl_context=ssl_context,
@@ -293,7 +286,6 @@
             timeout=timeout,
             skip_auto_headers={'CONTENT-TYPE'},
             response_class=ClientResponseProxy,
-            loop=self._loop,
             auto_decompress=False)
 
         return AioEndpoint(
@@ -302,4 +294,4 @@
             event_emitter=self._event_emitter,
             response_parser_factory=response_parser_factory,
             http_session=aio_session,
-            loop=self._loop, proxies=proxies)
+            proxies=proxies)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/eventstream.py 
new/aiobotocore-0.12.0/aiobotocore/eventstream.py
--- old/aiobotocore-0.11.1/aiobotocore/eventstream.py   2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/eventstream.py   2020-02-23 
12:32:32.000000000 +0100
@@ -1,15 +1,13 @@
 from botocore.eventstream import EventStream, EventStreamBuffer
-from async_generator import async_generator, yield_
 
 
 class AioEventStream(EventStream):
-    @async_generator
     async def _create_raw_event_generator(self):
         event_stream_buffer = EventStreamBuffer()
         async for chunk, _ in self._raw_stream.iter_chunks():
             event_stream_buffer.add_data(chunk)
             for event in event_stream_buffer:
-                await yield_(event)
+                yield event
 
     def __iter__(self):
         raise NotImplementedError('Use async-for instead')
@@ -17,9 +15,8 @@
     def __aiter__(self):
         return self.__anext__()
 
-    @async_generator
     async def __anext__(self):
         async for event in self._event_generator:
             parsed_event = self._parse_event(event)
             if parsed_event:
-                await yield_(parsed_event)
+                yield parsed_event
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/paginate.py 
new/aiobotocore-0.12.0/aiobotocore/paginate.py
--- old/aiobotocore-0.11.1/aiobotocore/paginate.py      2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/paginate.py      2020-02-23 
12:32:32.000000000 +0100
@@ -1,64 +1,15 @@
-import asyncio
-import warnings
-
 from botocore.exceptions import PaginationError
 from botocore.paginate import Paginator, PageIterator
 from botocore.utils import set_value_from_jmespath, merge_dicts
 from botocore.compat import six
 
-from async_generator import async_generator, yield_
-
-
-# switch to aioitertools.tee after we're 3.6+
-def aio_tee(itr, n: int = 2):
-    assert n > 0
-    sentinel = object()
-    queues = [asyncio.Queue() for _ in range(n)]
-
-    @async_generator
-    async def gen(k: int, q: asyncio.Queue):
-        if k == 0:
-            async for value in itr:
-                await asyncio.gather(*[queue.put(value)
-                                       for queue in queues[1:]])
-                await yield_(value)
-
-            await asyncio.gather(*[queue.put(sentinel)
-                                   for queue in queues[1:]])
-            return
-
-        while True:
-            value = await q.get()
-            if value is sentinel:
-                break
-
-            await yield_(value)
-
-    return tuple(gen(k, q) for k, q in enumerate(queues))
+import aioitertools
 
 
 class AioPageIterator(PageIterator):
-    async def next_page(self):
-        itr = getattr(self, '_iter', None)
-        if itr is None:
-            warnings.warn("next_page is deprecated, use async for instead",
-                          DeprecationWarning)
-
-            self._iter = self.__anext__()
-
-        try:
-            return await self._iter.__anext__()
-        except StopAsyncIteration:
-            self._iter = None
-            return None
-        except:  # noqa: E722
-            self._iter = None
-            raise
-
     def __aiter__(self):
         return self.__anext__()
 
-    @async_generator
     async def __anext__(self):
         current_kwargs = self._op_kwargs
         previous_next_token = None
@@ -106,10 +57,10 @@
                 self._truncate_response(parsed, primary_result_key,
                                         truncate_amount, starting_truncation,
                                         next_token)
-                await yield_(response)
+                yield response
                 break
             else:
-                await yield_(response)
+                yield response
                 total_items += num_current_response
                 next_token = self._get_next_token(parsed)
                 if all(t is None for t in next_token.values()):
@@ -129,7 +80,7 @@
                 previous_next_token = next_token
 
     def result_key_iters(self):
-        teed_results = aio_tee(self, len(self.result_keys))
+        teed_results = aioitertools.tee(self, len(self.result_keys))
         return [ResultKeyIterator(i, result_key) for i, result_key
                 in zip(teed_results, self.result_keys)]
 
@@ -204,11 +155,10 @@
     def __aiter__(self):
         return self.__anext__()
 
-    @async_generator
     async def __anext__(self):
         async for page in self._pages_iterator:
             results = self.result_key.search(page)
             if results is None:
                 results = []
             for result in results:
-                await yield_(result)
+                yield result
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/response.py 
new/aiobotocore-0.12.0/aiobotocore/response.py
--- old/aiobotocore-0.11.1/aiobotocore/response.py      2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/response.py      2020-02-23 
12:32:32.000000000 +0100
@@ -3,9 +3,6 @@
 import wrapt
 from botocore.exceptions import IncompleteReadError, ReadTimeoutError
 
-# can remove if we move to py3.6+
-from async_generator import async_generator, yield_
-
 
 class AioReadTimeoutError(ReadTimeoutError, asyncio.TimeoutError):
     pass
@@ -75,7 +72,6 @@
 
     anext = __anext__
 
-    @async_generator
     async def iter_lines(self, chunk_size=1024):
         """Return an iterator to yield lines from the raw stream.
 
@@ -86,12 +82,11 @@
         async for chunk in self.iter_chunks(chunk_size):
             lines = (pending + chunk).splitlines(True)
             for line in lines[:-1]:
-                await yield_(line.splitlines()[0])
+                yield line.splitlines()[0]
             pending = lines[-1]
         if pending:
-            await yield_(pending.splitlines()[0])
+            yield pending.splitlines()[0]
 
-    @async_generator
     async def iter_chunks(self, chunk_size=_DEFAULT_CHUNK_SIZE):
         """Return an iterator to yield chunks of chunk_size bytes from the raw
         stream.
@@ -100,7 +95,7 @@
             current_chunk = await self.read(chunk_size)
             if current_chunk == b"":
                 break
-            await yield_(current_chunk)
+            yield current_chunk
 
     def _verify_content_length(self):
         # See: https://github.com/kennethreitz/requests/issues/1855
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/session.py 
new/aiobotocore-0.12.0/aiobotocore/session.py
--- old/aiobotocore-0.11.1/aiobotocore/session.py       2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/session.py       2020-02-23 
12:32:32.000000000 +0100
@@ -1,4 +1,3 @@
-import asyncio
 import botocore.credentials
 import botocore.session
 
@@ -11,9 +10,7 @@
 
 class AioSession(botocore.session.Session):
 
-    def __init__(self, *args, loop=None, **kwargs):
-        self._loop = loop
-
+    def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
 
         # Register the AioResponseParserFactory so event streams will be 
async'd
@@ -71,7 +68,7 @@
         client_creator = AioClientCreator(
             loader, endpoint_resolver, self.user_agent(), event_emitter,
             retryhandler, translate, response_parser_factory,
-            exceptions_factory, config_store, loop=self._loop)
+            exceptions_factory, config_store)
         client = client_creator.create_client(
             service_name=service_name, region_name=region_name,
             is_secure=use_ssl, endpoint_url=endpoint_url, verify=verify,
@@ -83,9 +80,8 @@
         return client
 
 
-def get_session(*, env_vars=None, loop=None):
+def get_session(env_vars=None):
     """
     Return a new session object.
     """
-    loop = loop or asyncio.get_event_loop()
-    return AioSession(env_vars, loop=loop)
+    return AioSession(env_vars)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore/waiter.py 
new/aiobotocore-0.12.0/aiobotocore/waiter.py
--- old/aiobotocore-0.11.1/aiobotocore/waiter.py        2020-01-04 
07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore/waiter.py        2020-02-23 
12:32:32.000000000 +0100
@@ -3,15 +3,13 @@
 # WaiterModel is required for client.py import
 from botocore.exceptions import ClientError
 from botocore.waiter import WaiterModel  # noqa: F401
-from botocore.waiter import Waiter, xform_name, logger, WaiterError
+from botocore.waiter import Waiter, xform_name, logger, WaiterError, \
+    NormalizedOperationMethod as _NormalizedOperationMethod
 from botocore.docs.docstring import WaiterDocstring
 from botocore.utils import get_service_module_name
 
 
-class NormalizedOperationMethod:
-    def __init__(self, client_method):
-        self._client_method = client_method
-
+class NormalizedOperationMethod(_NormalizedOperationMethod):
     async def __call__(self, **kwargs):
         try:
             return await self._client_method(**kwargs)
@@ -20,10 +18,6 @@
 
 
 class AIOWaiter(Waiter):
-    def __init__(self, *args, **kwargs):
-        self._loop = kwargs.pop('loop', None) or asyncio.get_event_loop()
-        super().__init__(*args, **kwargs)
-
     async def wait(self, **kwargs):
         acceptors = list(self.config.acceptors)
         current_state = 'waiting'
@@ -68,10 +62,10 @@
                     reason='Max attempts exceeded',
                     last_response=response
                 )
-            await asyncio.sleep(sleep_amount, loop=self._loop)
+            await asyncio.sleep(sleep_amount)
 
 
-def create_waiter_with_client(waiter_name, waiter_model, client, loop):
+def create_waiter_with_client(waiter_name, waiter_model, client):
     """
 
     :type waiter_name: str
@@ -119,5 +113,5 @@
 
     # Return an instance of the new waiter class.
     return documented_waiter_cls(
-        waiter_name, single_waiter_config, operation_method, loop=loop
+        waiter_name, single_waiter_config, operation_method
     )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore.egg-info/PKG-INFO 
new/aiobotocore-0.12.0/aiobotocore.egg-info/PKG-INFO
--- old/aiobotocore-0.11.1/aiobotocore.egg-info/PKG-INFO        2020-01-04 
07:56:59.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore.egg-info/PKG-INFO        2020-02-23 
12:33:11.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: aiobotocore
-Version: 0.11.1
+Version: 0.12.0
 Summary: Async client for aws services using botocore and aiohttp
 Home-page: https://github.com/aio-libs/aiobotocore
 Author: Nikolay Novik
@@ -51,13 +51,13 @@
             AWS_SECRET_ACCESS_KEY = "xxx"
         
         
-            async def go(loop):
+            async def go():
                 bucket = 'dataintake'
                 filename = 'dummy.bin'
                 folder = 'aiobotocore'
                 key = '{}/{}'.format(folder, filename)
         
-                session = aiobotocore.get_session(loop=loop)
+                session = aiobotocore.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:
@@ -89,7 +89,7 @@
                     print(resp)
         
             loop = asyncio.get_event_loop()
-            loop.run_until_complete(go(loop))
+            loop.run_until_complete(go())
         
         
         Supported AWS Services
@@ -130,7 +130,7 @@
             $ cd aiobotocore
             $ export AWS_ACCESS_KEY_ID=xxx
             $ export AWS_SECRET_ACCESS_KEY=xxx
-            $ pip install -Ur requirements-dev.txt
+            $ pipenv sync --dev
         
         Execute tests suite:
         
@@ -147,12 +147,12 @@
         
         Requirements
         ------------
-        * Python_ 3.5+
+        * Python_ 3.6+
         * aiohttp_
         * botocore_
         
         .. _Python: https://www.python.org
-        .. _asyncio: http://docs.python.org/3.5/library/asyncio.html
+        .. _asyncio: https://docs.python.org/3/library/asyncio.html
         .. _botocore: https://github.com/boto/botocore
         .. _aiohttp: https://github.com/KeepSafe/aiohttp
         
@@ -169,6 +169,14 @@
         Changes
         -------
         
+        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.
@@ -362,12 +370,12 @@
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: System Administrators
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Environment :: Web Environment
 Classifier: Development Status :: 3 - Alpha
 Classifier: Framework :: AsyncIO
+Requires-Python: >=3.6
 Provides-Extra: awscli
 Provides-Extra: boto3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/aiobotocore.egg-info/requires.txt 
new/aiobotocore-0.12.0/aiobotocore.egg-info/requires.txt
--- old/aiobotocore-0.11.1/aiobotocore.egg-info/requires.txt    2020-01-04 
07:56:59.000000000 +0100
+++ new/aiobotocore-0.12.0/aiobotocore.egg-info/requires.txt    2020-02-23 
12:33:11.000000000 +0100
@@ -1,10 +1,10 @@
-botocore<1.13.15,>=1.13.14
+botocore<1.15.16,>=1.15.3
 aiohttp>=3.3.1
 wrapt>=1.10.10
-async_generator>=1.10
+aioitertools>=0.5.1
 
 [awscli]
-awscli==1.16.278
+awscli==1.18.3
 
 [boto3]
-boto3==1.10.14
+boto3==1.12.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiobotocore-0.11.1/setup.py 
new/aiobotocore-0.12.0/setup.py
--- old/aiobotocore-0.11.1/setup.py     2020-01-04 07:55:36.000000000 +0100
+++ new/aiobotocore-0.12.0/setup.py     2020-02-23 12:32:32.000000000 +0100
@@ -1,32 +1,26 @@
 import os
 import re
-import sys
 from setuptools import setup, find_packages
 
 
-# NOTE: If adding requirements make sure to also add to requirements-dev.txt
+# NOTE: If updating requirements make sure to also check Pipfile for any locks
 # NOTE: When updating botocore make sure to update awscli/boto3 versions below
 install_requires = [
     # pegged to also match items in `extras_require`
-    'botocore>=1.13.14,<1.13.15',
+    'botocore>=1.15.3,<1.15.16',
     'aiohttp>=3.3.1',
     'wrapt>=1.10.10',
-    'async_generator>=1.10',  # can remove if we move to py3.6+
+    'aioitertools>=0.5.1',
 ]
 
-PY_VER = sys.version_info
-
-if not PY_VER >= (3, 5, 3):
-    raise RuntimeError("aiobotocore doesn't support Python earlier than 3.5.3")
-
 
 def read(f):
     return open(os.path.join(os.path.dirname(__file__), f)).read().strip()
 
 
 extras_require = {
-    'awscli': ['awscli==1.16.278'],
-    'boto3': ['boto3==1.10.14'],
+    'awscli': ['awscli==1.18.3'],
+    'boto3': ['boto3==1.12.3'],
 }
 
 
@@ -48,12 +42,6 @@
     'Intended Audience :: Developers',
     'Intended Audience :: System Administrators',
     'Programming Language :: Python :: 3',
-
-    # switch tee in paginate.py + zip_longest in test_basic_s3.py to
-    # aioitertools after we're 3.6+
-    # We'll need: https://github.com/jreese/aioitertools/issues/11 and
-    # https://github.com/jreese/aioitertools/issues/13
-    'Programming Language :: Python :: 3.5',
     'Programming Language :: Python :: 3.6',
     'Programming Language :: Python :: 3.7',
     'Programming Language :: Python :: 3.8',
@@ -63,17 +51,20 @@
 ]
 
 
-setup(name='aiobotocore',
-      version=read_version(),
-      description='Async client for aws services using botocore and aiohttp',
-      long_description='\n\n'.join((read('README.rst'), read('CHANGES.rst'))),
-      classifiers=classifiers,
-      author="Nikolay Novik",
-      author_email="nickolaino...@gmail.com",
-      url='https://github.com/aio-libs/aiobotocore',
-      download_url='https://pypi.python.org/pypi/aiobotocore',
-      license='Apache 2',
-      packages=find_packages(),
-      install_requires=install_requires,
-      extras_require=extras_require,
-      include_package_data=True)
+setup(
+    name='aiobotocore',
+    version=read_version(),
+    description='Async client for aws services using botocore and aiohttp',
+    long_description='\n\n'.join((read('README.rst'), read('CHANGES.rst'))),
+    classifiers=classifiers,
+    author="Nikolay Novik",
+    author_email="nickolaino...@gmail.com",
+    url='https://github.com/aio-libs/aiobotocore',
+    download_url='https://pypi.python.org/pypi/aiobotocore',
+    license='Apache 2',
+    packages=find_packages(),
+    python_requires='>=3.6',
+    install_requires=install_requires,
+    extras_require=extras_require,
+    include_package_data=True
+)


Reply via email to