Hello community,

here is the log from the commit of package python-tenacity for openSUSE:Factory 
checked in at 2020-06-30 21:58:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-tenacity (Old)
 and      /work/SRC/openSUSE:Factory/.python-tenacity.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-tenacity"

Tue Jun 30 21:58:06 2020 rev:13 rq:817787 version:6.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-tenacity/python-tenacity.changes  
2020-04-21 13:07:14.844403040 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-tenacity.new.3060/python-tenacity.changes    
    2020-06-30 21:59:03.443240236 +0200
@@ -1,0 +2,10 @@
+Tue Jun 30 00:36:12 UTC 2020 - Steve Kowalik <steven.kowa...@suse.com>
+
+- Update to 6.2.0:
+  * before_sleep_log: Add an exc_info option to include exception tracebacks
+  * docs: fix duplicate function names (#226)
+  * AsyncRetrying can use an async iterator (#222)
+  * Add minimal type definitions for @retry decorator (#221)
+- Add typguard to BuildRequires
+
+-------------------------------------------------------------------

Old:
----
  tenacity-6.1.0.tar.gz

New:
----
  tenacity-6.2.0.tar.gz

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

Other differences:
------------------
++++++ python-tenacity.spec ++++++
--- /var/tmp/diff_new_pack.pgEl2g/_old  2020-06-30 21:59:04.583243764 +0200
+++ /var/tmp/diff_new_pack.pgEl2g/_new  2020-06-30 21:59:04.583243764 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %bcond_without  python2
 Name:           python-tenacity
-Version:        6.1.0
+Version:        6.2.0
 Release:        0
 Summary:        Python module for retrying code until it succeeeds
 License:        Apache-2.0
@@ -31,6 +31,7 @@
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module six >= 1.9.0}
 BuildRequires:  %{python_module tornado}
+BuildRequires:  %{python_module typeguard}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-six >= 1.9.0

++++++ tenacity-6.1.0.tar.gz -> tenacity-6.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/.mergify.yml 
new/tenacity-6.2.0/.mergify.yml
--- old/tenacity-6.1.0/.mergify.yml     2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/.mergify.yml     2020-04-30 12:01:22.000000000 +0200
@@ -12,7 +12,21 @@
     actions:
       merge:
         strict: "smart"
-        method: merge
+        method: squash
+  - name: automatic merge for jd
+    conditions:
+      - author=jd
+      - "status-success=ci/circleci: pep8"
+      - "status-success=ci/circleci: py27"
+      - "status-success=ci/circleci: py35"
+      - "status-success=ci/circleci: py36"
+      - "status-success=ci/circleci: py37"
+      - "status-success=ci/circleci: py38"
+      - label!=work-in-progress
+    actions:
+      merge:
+        strict: "smart"
+        method: squash
   - name: dismiss reviews
     conditions: []
     actions:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/PKG-INFO new/tenacity-6.2.0/PKG-INFO
--- old/tenacity-6.1.0/PKG-INFO 2020-02-26 11:39:48.327270300 +0100
+++ new/tenacity-6.2.0/PKG-INFO 2020-04-30 12:01:33.701704300 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: tenacity
-Version: 6.1.0
+Version: 6.2.0
 Summary: Retry code until it succeeds
 Home-page: https://github.com/jd/tenacity
 Author: Julien Danjou
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/README.rst 
new/tenacity-6.2.0/README.rst
--- old/tenacity-6.1.0/README.rst       2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/README.rst       2020-04-30 12:01:22.000000000 +0200
@@ -484,7 +484,7 @@
    varying parameter sets and none of those provided full state. The old way is
    deprecated, but kept for backward compatibility.
 
-   .. function:: my_stop(previous_attempt_number, delay_since_first_attempt)
+   .. function:: my_deprecated_stop(previous_attempt_number, 
delay_since_first_attempt)
 
       *deprecated*
 
@@ -495,7 +495,7 @@
       :type delay_since_first_attempt: float
       :rtype: bool
 
-   .. function:: my_wait(previous_attempt_number, delay_since_first_attempt [, 
last_result])
+   .. function:: my_deprecated_wait(previous_attempt_number, 
delay_since_first_attempt [, last_result])
 
       *deprecated*
 
@@ -509,7 +509,7 @@
       :return: number of seconds to wait before next retry
       :rtype: float
 
-   .. function:: my_retry(attempt)
+   .. function:: my_deprecated_retry(attempt)
 
       *deprecated*
 
@@ -517,14 +517,14 @@
       :return: whether or not retrying should continue
       :rtype: bool
 
-   .. function:: my_before(func, trial_number)
+   .. function:: my_deprecated_before(func, trial_number)
 
       *deprecated*
 
       :param callable func: function whose outcome is to be retried
       :param int trial_number: the number of current attempt
 
-   .. function:: my_after(func, trial_number, trial_time_taken)
+   .. function:: my_deprecated_after(func, trial_number, trial_time_taken)
 
       *deprecated*
 
@@ -533,7 +533,7 @@
       :param float trial_time_taken: interval in seconds between the beginning
          of first attempt and current time
 
-   .. function:: my_before_sleep(func, sleep, last_result)
+   .. function:: my_deprecated_before_sleep(func, sleep, last_result)
 
       *deprecated*
 
@@ -620,6 +620,20 @@
 You can configure every details of retry policy by configuring the Retrying
 object.
 
+With async code you can use AsyncRetrying.
+
+.. testcode::
+
+   from tenacity import AsyncRetrying, RetryError, stop_after_attempt
+
+   async def function():
+      try:
+          async for attempt in AsyncRetrying(stop=stop_after_attempt(3)):
+              with attempt:
+                  raise Exception('My code is failing!')
+      except RetryError:
+          pass
+
 Async and retry
 ~~~~~~~~~~~~~~~
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/doc/source/index.rst 
new/tenacity-6.2.0/doc/source/index.rst
--- old/tenacity-6.1.0/doc/source/index.rst     2020-02-26 11:39:39.000000000 
+0100
+++ new/tenacity-6.2.0/doc/source/index.rst     2020-04-30 12:01:22.000000000 
+0200
@@ -484,7 +484,7 @@
    varying parameter sets and none of those provided full state. The old way is
    deprecated, but kept for backward compatibility.
 
-   .. function:: my_stop(previous_attempt_number, delay_since_first_attempt)
+   .. function:: my_deprecated_stop(previous_attempt_number, 
delay_since_first_attempt)
 
       *deprecated*
 
@@ -495,7 +495,7 @@
       :type delay_since_first_attempt: float
       :rtype: bool
 
-   .. function:: my_wait(previous_attempt_number, delay_since_first_attempt [, 
last_result])
+   .. function:: my_deprecated_wait(previous_attempt_number, 
delay_since_first_attempt [, last_result])
 
       *deprecated*
 
@@ -509,7 +509,7 @@
       :return: number of seconds to wait before next retry
       :rtype: float
 
-   .. function:: my_retry(attempt)
+   .. function:: my_deprecated_retry(attempt)
 
       *deprecated*
 
@@ -517,14 +517,14 @@
       :return: whether or not retrying should continue
       :rtype: bool
 
-   .. function:: my_before(func, trial_number)
+   .. function:: my_deprecated_before(func, trial_number)
 
       *deprecated*
 
       :param callable func: function whose outcome is to be retried
       :param int trial_number: the number of current attempt
 
-   .. function:: my_after(func, trial_number, trial_time_taken)
+   .. function:: my_deprecated_after(func, trial_number, trial_time_taken)
 
       *deprecated*
 
@@ -533,7 +533,7 @@
       :param float trial_time_taken: interval in seconds between the beginning
          of first attempt and current time
 
-   .. function:: my_before_sleep(func, sleep, last_result)
+   .. function:: my_deprecated_before_sleep(func, sleep, last_result)
 
       *deprecated*
 
@@ -620,6 +620,20 @@
 You can configure every details of retry policy by configuring the Retrying
 object.
 
+With async code you can use AsyncRetrying.
+
+.. testcode::
+
+   from tenacity import AsyncRetrying, RetryError, stop_after_attempt
+
+   async def function():
+      try:
+          async for attempt in AsyncRetrying(stop=stop_after_attempt(3)):
+              with attempt:
+                  raise Exception('My code is failing!')
+      except RetryError:
+          pass
+
 Async and retry
 ~~~~~~~~~~~~~~~
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/tenacity-6.1.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
 
new/tenacity-6.2.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
--- 
old/tenacity-6.1.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/tenacity-6.2.0/releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
   2020-04-30 12:01:22.000000000 +0200
@@ -0,0 +1,3 @@
+---
+features:
+  - Add an ``exc_info`` option to the ``before_sleep_log()`` strategy.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/setup.cfg new/tenacity-6.2.0/setup.cfg
--- old/tenacity-6.1.0/setup.cfg        2020-02-26 11:39:48.327270300 +0100
+++ new/tenacity-6.2.0/setup.cfg        2020-04-30 12:01:33.701704300 +0200
@@ -25,8 +25,12 @@
        six>=1.9.0
        futures>=3.0;python_version=='2.7'
        monotonic>=0.6;python_version=='2.7'
+       typing>=3.7.4.1;python_version=='2.7'
 packages = tenacity
 
+[options.package_data]
+tenacity = py.typed
+
 [options.extras_require]
 doc = 
        reno
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity/__init__.py 
new/tenacity-6.2.0/tenacity/__init__.py
--- old/tenacity-6.1.0/tenacity/__init__.py     2020-02-26 11:39:39.000000000 
+0100
+++ new/tenacity-6.2.0/tenacity/__init__.py     2020-04-30 12:01:22.000000000 
+0200
@@ -29,6 +29,7 @@
 
 import sys
 import threading
+import typing as t
 from concurrent import futures
 
 import six
@@ -85,7 +86,24 @@
 from .before_sleep import before_sleep_nothing  # noqa
 
 
-def retry(*dargs, **dkw):
+WrappedFn = t.TypeVar("WrappedFn", bound=t.Callable)
+
+
+@t.overload
+def retry(fn):
+    # type: (WrappedFn) -> WrappedFn
+    """Type signature for @retry as a raw decorator."""
+    pass
+
+
+@t.overload
+def retry(*dargs, **dkw):  # noqa
+    # type: (...) -> t.Callable[[WrappedFn], WrappedFn]
+    """Type signature for the @retry() decorator constructor."""
+    pass
+
+
+def retry(*dargs, **dkw):  # noqa
     """Wrap a function with a new `Retrying` object.
 
     :param dargs: positional arguments passed to Retrying object
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity/_asyncio.py 
new/tenacity-6.2.0/tenacity/_asyncio.py
--- old/tenacity-6.1.0/tenacity/_asyncio.py     2020-02-26 11:39:39.000000000 
+0100
+++ new/tenacity-6.2.0/tenacity/_asyncio.py     2020-04-30 12:01:22.000000000 
+0200
@@ -19,6 +19,7 @@
 import sys
 from asyncio import sleep
 
+from tenacity import AttemptManager
 from tenacity import BaseRetrying
 from tenacity import DoAttempt
 from tenacity import DoSleep
@@ -52,3 +53,21 @@
                 await self.sleep(do)
             else:
                 return do
+
+    def __aiter__(self):
+        self.begin(None)
+        self._retry_state = RetryCallState(self, fn=None, args=(), kwargs={})
+        return self
+
+    async def __anext__(self):
+        while True:
+            do = self.iter(retry_state=self._retry_state)
+            if do is None:
+                raise StopAsyncIteration
+            elif isinstance(do, DoAttempt):
+                return AttemptManager(retry_state=self._retry_state)
+            elif isinstance(do, DoSleep):
+                self._retry_state.prepare_for_next_attempt()
+                await self.sleep(do)
+            else:
+                return do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity/before_sleep.py 
new/tenacity-6.2.0/tenacity/before_sleep.py
--- old/tenacity-6.1.0/tenacity/before_sleep.py 2020-02-26 11:39:39.000000000 
+0100
+++ new/tenacity-6.2.0/tenacity/before_sleep.py 2020-04-30 12:01:22.000000000 
+0200
@@ -15,23 +15,32 @@
 # limitations under the License.
 
 from tenacity import _utils
+from tenacity.compat import get_exc_info_from_future
 
 
 def before_sleep_nothing(retry_state):
     """Before call strategy that does nothing."""
 
 
-def before_sleep_log(logger, log_level):
+def before_sleep_log(logger, log_level, exc_info=False):
     """Before call strategy that logs to some logger the attempt."""
     def log_it(retry_state):
         if retry_state.outcome.failed:
-            verb, value = 'raised', retry_state.outcome.exception()
+            ex = retry_state.outcome.exception()
+            verb, value = 'raised', '%s: %s' % (type(ex).__name__, ex)
+
+            if exc_info:
+                local_exc_info = get_exc_info_from_future(retry_state.outcome)
+            else:
+                local_exc_info = False
         else:
             verb, value = 'returned', retry_state.outcome.result()
+            local_exc_info = False  # exc_info does not apply when no exception
 
         logger.log(log_level,
                    "Retrying %s in %s seconds as it %s %s.",
                    _utils.get_callback_name(retry_state.fn),
                    getattr(retry_state.next_action, 'sleep'),
-                   verb, value)
+                   verb, value,
+                   exc_info=local_exc_info)
     return log_it
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity/compat.py 
new/tenacity-6.2.0/tenacity/compat.py
--- old/tenacity-6.1.0/tenacity/compat.py       2020-02-26 11:39:39.000000000 
+0100
+++ new/tenacity-6.2.0/tenacity/compat.py       2020-04-30 12:01:22.000000000 
+0200
@@ -299,3 +299,24 @@
             'retry_error_callback', fn, stacklevel=4)
         return fn(retry_state.outcome)
     return wrapped_retry_error_callback
+
+
+def get_exc_info_from_future(future):
+    """
+    Get an exc_info value from a Future.
+
+    Given a a Future instance, retrieve an exc_info value suitable for passing
+    in as the exc_info parameter to logging.Logger.log() and related methods.
+
+    On Python 2, this will be a (type, value, traceback) triple.
+    On Python 3, this will be an exception instance (with embedded traceback).
+
+    If there was no exception, None is returned on both versions of Python.
+    """
+    if six.PY3:
+        return future.exception()
+    else:
+        ex, tb = future.exception_info()
+        if ex is None:
+            return None
+        return type(ex), ex, tb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity/tests/test_asyncio.py 
new/tenacity-6.2.0/tenacity/tests/test_asyncio.py
--- old/tenacity-6.1.0/tenacity/tests/test_asyncio.py   2020-02-26 
11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/tests/test_asyncio.py   2020-04-30 
12:01:22.000000000 +0200
@@ -21,7 +21,8 @@
 from tenacity import RetryError
 from tenacity import _asyncio as tasyncio
 from tenacity import retry, stop_after_attempt
-from tenacity.tests.test_tenacity import NoIOErrorAfterCount
+from tenacity.tests.test_tenacity import NoIOErrorAfterCount, current_time_ms
+from tenacity.wait import wait_fixed
 
 
 def asynctest(callable_):
@@ -91,5 +92,51 @@
         assert list(attempt_nos2) == [1, 2, 3]
 
 
-if __name__ == '__main__':
+class TestContextManager(unittest.TestCase):
+    @asynctest
+    async def test_do_max_attempts(self):
+        attempts = 0
+        retrying = tasyncio.AsyncRetrying(stop=stop_after_attempt(3))
+        try:
+            async for attempt in retrying:
+                with attempt:
+                    attempts += 1
+                    raise Exception
+        except RetryError:
+            pass
+
+        assert attempts == 3
+
+    @asynctest
+    async def test_reraise(self):
+        class CustomError(Exception):
+            pass
+
+        try:
+            async for attempt in tasyncio.AsyncRetrying(
+                stop=stop_after_attempt(1), reraise=True
+            ):
+                with attempt:
+                    raise CustomError()
+        except CustomError:
+            pass
+        else:
+            raise Exception
+
+    @asynctest
+    async def test_sleeps(self):
+        start = current_time_ms()
+        try:
+            async for attempt in tasyncio.AsyncRetrying(
+                stop=stop_after_attempt(1), wait=wait_fixed(1)
+            ):
+                with attempt:
+                    raise Exception()
+        except RetryError:
+            pass
+        t = current_time_ms() - start
+        self.assertLess(t, 1.1)
+
+
+if __name__ == "__main__":
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity/tests/test_tenacity.py 
new/tenacity-6.2.0/tenacity/tests/test_tenacity.py
--- old/tenacity-6.1.0/tenacity/tests/test_tenacity.py  2020-02-26 
11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tenacity/tests/test_tenacity.py  2020-04-30 
12:01:22.000000000 +0200
@@ -14,7 +14,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import logging
+import os
+import re
+import sys
 import time
+import typing
 import unittest
 import warnings
 from contextlib import contextmanager
@@ -1155,12 +1159,42 @@
         finally:
             logger.removeHandler(handler)
 
-        etalon_re = r'Retrying .* in 0\.01 seconds as it raised .*\.'
+        etalon_re = (r"^Retrying .* in 0\.01 seconds as it raised "
+                     r"(IO|OS)Error: Hi there, I'm an IOError\.$")
         self.assertEqual(len(handler.records), 2)
-        self.assertRegexpMatches(handler.records[0].getMessage(), etalon_re)
-        self.assertRegexpMatches(handler.records[1].getMessage(), etalon_re)
+        fmt = logging.Formatter().format
+        self.assertRegexpMatches(fmt(handler.records[0]), etalon_re)
+        self.assertRegexpMatches(fmt(handler.records[1]), etalon_re)
 
-    def test_before_sleep_log_returns(self):
+    def test_before_sleep_log_raises_with_exc_info(self):
+        thing = NoIOErrorAfterCount(2)
+        logger = logging.getLogger(self.id())
+        logger.propagate = False
+        logger.setLevel(logging.INFO)
+        handler = CapturingHandler()
+        logger.addHandler(handler)
+        try:
+            _before_sleep = tenacity.before_sleep_log(logger,
+                                                      logging.INFO,
+                                                      exc_info=True)
+            retrying = Retrying(wait=tenacity.wait_fixed(0.01),
+                                stop=tenacity.stop_after_attempt(3),
+                                before_sleep=_before_sleep)
+            retrying.call(thing.go)
+        finally:
+            logger.removeHandler(handler)
+
+        etalon_re = re.compile(r"^Retrying .* in 0\.01 seconds as it raised "
+                               r"(IO|OS)Error: Hi there, I'm an IOError\.{0}"
+                               r"Traceback \(most recent call last\):{0}"
+                               r".*$".format(os.linesep),
+                               flags=re.MULTILINE)
+        self.assertEqual(len(handler.records), 2)
+        fmt = logging.Formatter().format
+        self.assertRegexpMatches(fmt(handler.records[0]), etalon_re)
+        self.assertRegexpMatches(fmt(handler.records[1]), etalon_re)
+
+    def test_before_sleep_log_returns(self, exc_info=False):
         thing = NoneReturnUntilAfterCount(2)
         logger = logging.getLogger(self.id())
         logger.propagate = False
@@ -1168,7 +1202,9 @@
         handler = CapturingHandler()
         logger.addHandler(handler)
         try:
-            _before_sleep = tenacity.before_sleep_log(logger, logging.INFO)
+            _before_sleep = tenacity.before_sleep_log(logger,
+                                                      logging.INFO,
+                                                      exc_info=exc_info)
             _retry = tenacity.retry_if_result(lambda result: result is None)
             retrying = Retrying(wait=tenacity.wait_fixed(0.01),
                                 stop=tenacity.stop_after_attempt(3),
@@ -1177,10 +1213,14 @@
         finally:
             logger.removeHandler(handler)
 
+        etalon_re = r'^Retrying .* in 0\.01 seconds as it returned None\.$'
         self.assertEqual(len(handler.records), 2)
-        etalon_re = r'Retrying .* in 0\.01 seconds as it returned None'
-        self.assertRegexpMatches(handler.records[0].getMessage(), etalon_re)
-        self.assertRegexpMatches(handler.records[1].getMessage(), etalon_re)
+        fmt = logging.Formatter().format
+        self.assertRegexpMatches(fmt(handler.records[0]), etalon_re)
+        self.assertRegexpMatches(fmt(handler.records[1]), etalon_re)
+
+    def test_before_sleep_log_returns_with_exc_info(self):
+        self.test_before_sleep_log_returns(exc_info=True)
 
 
 class TestReraiseExceptions(unittest.TestCase):
@@ -1391,6 +1431,42 @@
         self.assertEqual(expected.last_attempt, actual.last_attempt)
 
 
+class TestRetryTyping(unittest.TestCase):
+
+    @pytest.mark.skipif(
+        sys.version_info < (3, 0),
+        reason="typeguard not supported for python 2"
+    )
+    def test_retry_type_annotations(self):
+        """The decorator should maintain types of decorated functions."""
+        # Just in case this is run with unit-test, return early for py2
+        if sys.version_info < (3, 0):
+            return
+
+        # Function-level import because we can't install this for python 2.
+        from typeguard import check_type
+
+        def num_to_str(number):
+            # type: (int) -> str
+            return str(number)
+
+        # equivalent to a raw @retry decoration
+        with_raw = retry(num_to_str)
+        with_raw_result = with_raw(1)
+
+        # equivalent to a @retry(...) decoration
+        with_constructor = retry()(num_to_str)
+        with_constructor_result = with_raw(1)
+
+        # These raise TypeError exceptions if they fail
+        check_type("with_raw", with_raw, typing.Callable[[int], str])
+        check_type("with_raw_result", with_raw_result, str)
+        check_type(
+            "with_constructor", with_constructor, typing.Callable[[int], str]
+        )
+        check_type("with_constructor_result", with_constructor_result, str)
+
+
 @contextmanager
 def reports_deprecation_warning():
     __tracebackhide__ = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity.egg-info/PKG-INFO 
new/tenacity-6.2.0/tenacity.egg-info/PKG-INFO
--- old/tenacity-6.1.0/tenacity.egg-info/PKG-INFO       2020-02-26 
11:39:48.000000000 +0100
+++ new/tenacity-6.2.0/tenacity.egg-info/PKG-INFO       2020-04-30 
12:01:33.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: tenacity
-Version: 6.1.0
+Version: 6.2.0
 Summary: Retry code until it succeeds
 Home-page: https://github.com/jd/tenacity
 Author: Julien Danjou
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity.egg-info/SOURCES.txt 
new/tenacity-6.2.0/tenacity.egg-info/SOURCES.txt
--- old/tenacity-6.1.0/tenacity.egg-info/SOURCES.txt    2020-02-26 
11:39:48.000000000 +0100
+++ new/tenacity-6.2.0/tenacity.egg-info/SOURCES.txt    2020-04-30 
12:01:33.000000000 +0200
@@ -13,6 +13,7 @@
 doc/source/conf.py
 doc/source/index.rst
 releasenotes/notes/add-reno-d1ab5710f272650a.yaml
+releasenotes/notes/before_sleep_log-improvements-d8149274dfb37d7c.yaml
 tenacity/__init__.py
 tenacity/_asyncio.py
 tenacity/_utils.py
@@ -21,6 +22,7 @@
 tenacity/before_sleep.py
 tenacity/compat.py
 tenacity/nap.py
+tenacity/py.typed
 tenacity/retry.py
 tenacity/stop.py
 tenacity/tornadoweb.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tenacity.egg-info/requires.txt 
new/tenacity-6.2.0/tenacity.egg-info/requires.txt
--- old/tenacity-6.1.0/tenacity.egg-info/requires.txt   2020-02-26 
11:39:48.000000000 +0100
+++ new/tenacity-6.2.0/tenacity.egg-info/requires.txt   2020-04-30 
12:01:33.000000000 +0200
@@ -3,6 +3,7 @@
 [:python_version == "2.7"]
 futures>=3.0
 monotonic>=0.6
+typing>=3.7.4.1
 
 [doc]
 reno
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tenacity-6.1.0/tox.ini new/tenacity-6.2.0/tox.ini
--- old/tenacity-6.1.0/tox.ini  2020-02-26 11:39:39.000000000 +0100
+++ new/tenacity-6.2.0/tox.ini  2020-04-30 12:01:22.000000000 +0200
@@ -7,6 +7,7 @@
 deps =
     .[doc]
     pytest
+    typeguard;python_version>='3.0'
 commands =
     py{27,py}: pytest --ignore='tenacity/tests/test_asyncio.py' {posargs}
     py3{5,6,7,8}: pytest {posargs}


Reply via email to