Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-async_timeout for
openSUSE:Factory checked in at 2023-09-07 21:12:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-async_timeout (Old)
and /work/SRC/openSUSE:Factory/.python-async_timeout.new.1766 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-async_timeout"
Thu Sep 7 21:12:22 2023 rev:9 rq:1109504 version:4.0.3
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-async_timeout/python-async_timeout.changes
2023-04-22 22:03:02.406141821 +0200
+++
/work/SRC/openSUSE:Factory/.python-async_timeout.new.1766/python-async_timeout.changes
2023-09-07 21:12:45.457340932 +0200
@@ -1,0 +2,8 @@
+Thu Sep 7 10:48:29 UTC 2023 - Dirk Müller <[email protected]>
+
+- update to 4.0.3:
+ * Fixed compatibility with asyncio.timeout() on Python 3.11+.
+ * Added support for Python 3.11.
+ * Dropped support for Python 3.6.
+
+-------------------------------------------------------------------
Old:
----
async-timeout-4.0.2.tar.gz
New:
----
async-timeout-4.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-async_timeout.spec ++++++
--- /var/tmp/diff_new_pack.1aU02q/_old 2023-09-07 21:12:46.577380971 +0200
+++ /var/tmp/diff_new_pack.1aU02q/_new 2023-09-07 21:12:46.581381114 +0200
@@ -16,10 +16,9 @@
#
-%define skip_python2 1
%{?sle15_python_module_pythons}
Name: python-async_timeout
-Version: 4.0.2
+Version: 4.0.3
Release: 0
Summary: Timeout context manager for asyncio programs
License: Apache-2.0
++++++ async-timeout-4.0.2.tar.gz -> async-timeout-4.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/CHANGES.rst
new/async-timeout-4.0.3/CHANGES.rst
--- old/async-timeout-4.0.2/CHANGES.rst 2021-12-20 10:14:17.000000000 +0100
+++ new/async-timeout-4.0.3/CHANGES.rst 2023-08-10 18:35:18.000000000 +0200
@@ -4,6 +4,13 @@
.. towncrier release notes start
+4.0.3 (2023-08-10)
+==================
+
+* Fixed compatibility with asyncio.timeout() on Python 3.11+.
+* Added support for Python 3.11.
+* Dropped support for Python 3.6.
+
4.0.2 (2021-12-20)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/PKG-INFO
new/async-timeout-4.0.3/PKG-INFO
--- old/async-timeout-4.0.2/PKG-INFO 2021-12-20 10:14:46.639183500 +0100
+++ new/async-timeout-4.0.3/PKG-INFO 2023-08-10 18:35:46.422943000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: async-timeout
-Version: 4.0.2
+Version: 4.0.3
Summary: Timeout context manager for asyncio programs
Home-page: https://github.com/aio-libs/async-timeout
Author: Andrew Svetlov <[email protected]>
@@ -11,7 +11,6 @@
Project-URL: Coverage: codecov,
https://codecov.io/github/aio-libs/async-timeout
Project-URL: GitHub: issues, https://github.com/aio-libs/async-timeout/issues
Project-URL: GitHub: repo, https://github.com/aio-libs/async-timeout
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Topic :: Software Development :: Libraries
Classifier: Framework :: AsyncIO
@@ -20,12 +19,12 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
-Requires-Python: >=3.6
+Classifier: Programming Language :: Python :: 3.11
+Requires-Python: >=3.7
Description-Content-Type: text/x-rst
License-File: LICENSE
@@ -56,6 +55,7 @@
The ``timeout(delay, *, loop=None)`` call returns a context manager
that cancels a block on *timeout* expiring::
+ from async_timeout import timeout
async with timeout(1.5):
await inner()
@@ -128,5 +128,3 @@
The module is written by Andrew Svetlov.
It's *Apache 2* licensed and freely available.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/README.rst
new/async-timeout-4.0.3/README.rst
--- old/async-timeout-4.0.2/README.rst 2021-12-20 10:14:17.000000000 +0100
+++ new/async-timeout-4.0.3/README.rst 2023-08-10 18:35:18.000000000 +0200
@@ -25,6 +25,7 @@
The ``timeout(delay, *, loop=None)`` call returns a context manager
that cancels a block on *timeout* expiring::
+ from async_timeout import timeout
async with timeout(1.5):
await inner()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/async_timeout/__init__.py
new/async-timeout-4.0.3/async_timeout/__init__.py
--- old/async-timeout-4.0.2/async_timeout/__init__.py 2021-12-20
10:14:17.000000000 +0100
+++ new/async-timeout-4.0.3/async_timeout/__init__.py 2023-08-10
18:35:18.000000000 +0200
@@ -3,7 +3,7 @@
import sys
import warnings
from types import TracebackType
-from typing import Any, Optional, Type
+from typing import Optional, Type
if sys.version_info >= (3, 8):
@@ -12,7 +12,18 @@
from typing_extensions import final
-__version__ = "4.0.2"
+if sys.version_info >= (3, 11):
+
+ def _uncancel_task(task: "asyncio.Task[object]") -> None:
+ task.uncancel()
+
+else:
+
+ def _uncancel_task(task: "asyncio.Task[object]") -> None:
+ pass
+
+
+__version__ = "4.0.3"
__all__ = ("timeout", "timeout_at", "Timeout")
@@ -31,7 +42,7 @@
delay - value in seconds or None to disable timeout logic
"""
- loop = _get_running_loop()
+ loop = asyncio.get_running_loop()
if delay is not None:
deadline = loop.time() + delay # type: Optional[float]
else:
@@ -54,7 +65,7 @@
"""
- loop = _get_running_loop()
+ loop = asyncio.get_running_loop()
return Timeout(deadline, loop)
@@ -79,12 +90,12 @@
#
# This design allows to avoid many silly misusages.
#
- # TimeoutError is raised immadiatelly when scheduled
+ # TimeoutError is raised immediately when scheduled
# if the deadline is passed.
- # The purpose is to time out as sson as possible
+ # The purpose is to time out as soon as possible
# without waiting for the next await expression.
- __slots__ = ("_deadline", "_loop", "_state", "_timeout_handler")
+ __slots__ = ("_deadline", "_loop", "_state", "_timeout_handler", "_task")
def __init__(
self, deadline: Optional[float], loop: asyncio.AbstractEventLoop
@@ -92,6 +103,7 @@
self._loop = loop
self._state = _State.INIT
+ self._task: Optional["asyncio.Task[object]"] = None
self._timeout_handler = None # type: Optional[asyncio.Handle]
if deadline is None:
self._deadline = None # type: Optional[float]
@@ -147,6 +159,7 @@
self._reject()
def _reject(self) -> None:
+ self._task = None
if self._timeout_handler is not None:
self._timeout_handler.cancel()
self._timeout_handler = None
@@ -169,7 +182,7 @@
deadline argument points on the time in the same clock system
as loop.time().
- If new deadline is in the past the timeout is raised immediatelly.
+ If new deadline is in the past the timeout is raised immediately.
Please note: it is not POSIX time but a time with
undefined starting base, e.g. the time of the system power on.
@@ -194,11 +207,11 @@
if self._timeout_handler is not None:
self._timeout_handler.cancel()
- task = _current_task(self._loop)
+ self._task = asyncio.current_task()
if deadline <= now:
- self._timeout_handler = self._loop.call_soon(self._on_timeout,
task)
+ self._timeout_handler = self._loop.call_soon(self._on_timeout)
else:
- self._timeout_handler = self._loop.call_at(deadline,
self._on_timeout, task)
+ self._timeout_handler = self._loop.call_at(deadline,
self._on_timeout)
def _do_enter(self) -> None:
if self._state != _State.INIT:
@@ -208,40 +221,19 @@
def _do_exit(self, exc_type: Optional[Type[BaseException]]) -> None:
if exc_type is asyncio.CancelledError and self._state ==
_State.TIMEOUT:
+ assert self._task is not None
+ _uncancel_task(self._task)
self._timeout_handler = None
+ self._task = None
raise asyncio.TimeoutError
# timeout has not expired
self._state = _State.EXIT
self._reject()
return None
- def _on_timeout(self, task: "asyncio.Task[None]") -> None:
- task.cancel()
+ def _on_timeout(self) -> None:
+ assert self._task is not None
+ self._task.cancel()
self._state = _State.TIMEOUT
# drop the reference early
self._timeout_handler = None
-
-
-if sys.version_info >= (3, 7):
-
- def _current_task(loop: asyncio.AbstractEventLoop) ->
"Optional[asyncio.Task[Any]]":
- return asyncio.current_task(loop=loop)
-
-else:
-
- def _current_task(loop: asyncio.AbstractEventLoop) ->
"Optional[asyncio.Task[Any]]":
- return asyncio.Task.current_task(loop=loop)
-
-
-if sys.version_info >= (3, 7):
-
- def _get_running_loop() -> asyncio.AbstractEventLoop:
- return asyncio.get_running_loop()
-
-else:
-
- def _get_running_loop() -> asyncio.AbstractEventLoop:
- loop = asyncio.get_event_loop()
- if not loop.is_running():
- raise RuntimeError("no running event loop")
- return loop
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/async_timeout.egg-info/PKG-INFO
new/async-timeout-4.0.3/async_timeout.egg-info/PKG-INFO
--- old/async-timeout-4.0.2/async_timeout.egg-info/PKG-INFO 2021-12-20
10:14:46.000000000 +0100
+++ new/async-timeout-4.0.3/async_timeout.egg-info/PKG-INFO 2023-08-10
18:35:46.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: async-timeout
-Version: 4.0.2
+Version: 4.0.3
Summary: Timeout context manager for asyncio programs
Home-page: https://github.com/aio-libs/async-timeout
Author: Andrew Svetlov <[email protected]>
@@ -11,7 +11,6 @@
Project-URL: Coverage: codecov,
https://codecov.io/github/aio-libs/async-timeout
Project-URL: GitHub: issues, https://github.com/aio-libs/async-timeout/issues
Project-URL: GitHub: repo, https://github.com/aio-libs/async-timeout
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Topic :: Software Development :: Libraries
Classifier: Framework :: AsyncIO
@@ -20,12 +19,12 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
-Requires-Python: >=3.6
+Classifier: Programming Language :: Python :: 3.11
+Requires-Python: >=3.7
Description-Content-Type: text/x-rst
License-File: LICENSE
@@ -56,6 +55,7 @@
The ``timeout(delay, *, loop=None)`` call returns a context manager
that cancels a block on *timeout* expiring::
+ from async_timeout import timeout
async with timeout(1.5):
await inner()
@@ -128,5 +128,3 @@
The module is written by Andrew Svetlov.
It's *Apache 2* licensed and freely available.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/setup.cfg
new/async-timeout-4.0.3/setup.cfg
--- old/async-timeout-4.0.2/setup.cfg 2021-12-20 10:14:46.643183700 +0100
+++ new/async-timeout-4.0.3/setup.cfg 2023-08-10 18:35:46.422943000 +0200
@@ -28,14 +28,14 @@
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3 :: Only
- Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
[options]
-python_requires = >=3.6
+python_requires = >=3.7
packages =
async_timeout
zip_safe = True
@@ -58,6 +58,7 @@
[tool:pytest]
addopts = --cov=async_timeout --cov-report=term --cov-report=html --cov-branch
+asyncio_mode = strict
[mypy-pytest]
ignore_missing_imports = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/async-timeout-4.0.2/tests/test_timeout.py
new/async-timeout-4.0.3/tests/test_timeout.py
--- old/async-timeout-4.0.2/tests/test_timeout.py 2021-12-20
10:14:17.000000000 +0100
+++ new/async-timeout-4.0.3/tests/test_timeout.py 2023-08-10
18:35:18.000000000 +0200
@@ -1,4 +1,5 @@
import asyncio
+import sys
import time
from functools import wraps
from typing import Any, Callable, List, TypeVar
@@ -39,6 +40,10 @@
await long_running_task()
assert t._loop is asyncio.get_event_loop()
assert canceled_raised, "CancelledError was not raised"
+ if sys.version_info >= (3, 11):
+ task = asyncio.current_task()
+ assert task is not None
+ assert not task.cancelling()
@pytest.mark.asyncio
@@ -47,7 +52,8 @@
await asyncio.sleep(0.01)
return "done"
- async with timeout(0.1):
+ # timeout should be long enough to work even on slow bisy test boxes
+ async with timeout(0.5):
resp = await long_running_task()
assert resp == "done"
@@ -143,7 +149,6 @@
@pytest.mark.asyncio
async def test_outer_coro_is_not_cancelled() -> None:
-
has_timeout = False
async def outer() -> None:
@@ -158,6 +163,8 @@
await task
assert has_timeout
assert not task.cancelled()
+ if sys.version_info >= (3, 11):
+ assert not task.cancelling()
assert task.done()