Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python38 for openSUSE:Factory checked in at 2023-06-04 00:13:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python38 (Old) and /work/SRC/openSUSE:Factory/.python38.new.15902 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python38" Sun Jun 4 00:13:23 2023 rev:37 rq:1090625 version:3.8.16 Changes: -------- --- /work/SRC/openSUSE:Factory/python38/python38.changes 2023-04-18 15:53:12.161527212 +0200 +++ /work/SRC/openSUSE:Factory/.python38.new.15902/python38.changes 2023-06-04 00:13:27.809842830 +0200 @@ -1,0 +2,14 @@ +Sat May 6 17:31:35 UTC 2023 - Matej Cepl <[email protected]> + +- Add 99366-patch.dict-can-decorate-async.patch fixing + gh#python/cpython#98086 (backport from Python 3.10 patch in + gh#python/cpython!99366), fixing bsc#1211158. + +------------------------------------------------------------------- +Wed May 3 14:09:37 UTC 2023 - Matej Cepl <[email protected]> + +- Add CVE-2007-4559-filter-tarfile_extractall.patch to fix + CVE-2007-4559 (bsc#1203750) by adding the filter for + tarfile.extractall (PEP 706). + +------------------------------------------------------------------- New: ---- 99366-patch.dict-can-decorate-async.patch CVE-2007-4559-filter-tarfile_extractall.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python38.spec ++++++ --- /var/tmp/diff_new_pack.PzGXZU/_old 2023-06-04 00:13:29.441852587 +0200 +++ /var/tmp/diff_new_pack.PzGXZU/_new 2023-06-04 00:13:29.445852611 +0200 @@ -97,8 +97,8 @@ Summary: Python 3 Interpreter License: Python-2.0 URL: https://www.python.org/ -Source0: http://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz -Source1: http://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz.asc +Source0: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz +Source1: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz.asc Source2: baselibs.conf Source3: README.SUSE Source7: macros.python3 @@ -180,6 +180,12 @@ # blocklist bypass via the urllib.parse component when supplying # a URL that starts with blank characters Patch39: CVE-2023-24329-blank-URL-bypass.patch +# PATCH-FIX-UPSTREAM CVE-2007-4559-filter-tarfile_extractall.patch bsc#1203750 [email protected] +# Implement PEP-706 to filter outcome of the tarball extracing +Patch40: CVE-2007-4559-filter-tarfile_extractall.patch +# PATCH-FIX-UPSTREAM 99366-patch.dict-can-decorate-async.patch bsc#[0-9]+ [email protected] +# Patch for gh#python/cpython#98086 +Patch41: 99366-patch.dict-can-decorate-async.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes @@ -453,6 +459,8 @@ %patch37 -p1 %patch38 -p1 %patch39 -p1 +%patch40 -p1 +%patch41 -p1 # drop Autoconf version requirement sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac @@ -752,7 +760,7 @@ install -m 755 -D Tools/gdb/libpython.py %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir}/libpython%{python_abi}.so.%{so_major}.%{so_minor}-gdb.py # install devel files to /config -#cp Makefile Makefile.pre.in Makefile.pre $RPM_BUILD_ROOT%{sitedir}/config-%{python_abi}/ +#cp Makefile Makefile.pre.in Makefile.pre $RPM_BUILD_ROOT%%{sitedir}/config-%%{python_abi}/ # RPM macros mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/ @@ -762,7 +770,7 @@ %endif # flavor specific macros, only to be supplied "if we are in the buildset", e.g. installed. echo ' -# macros for the %{python_pkg_name} flavor +# macros for the %%{python_pkg_name} flavor %%have_%{python_pkg_name} 1 ' > %{buildroot}%{_rpmconfigdir}/macros.d/macros.%{python_pkg_name} ++++++ 99366-patch.dict-can-decorate-async.patch ++++++ >From c0dea0309b9a0a7cbc87727c9957f0a388fb9b0f Mon Sep 17 00:00:00 2001 From: Nikita Sobolev <[email protected]> Date: Fri, 11 Nov 2022 11:04:30 +0300 Subject: [PATCH] gh-98086: Now ``patch.dict`` can decorate async functions (GH-98095) (cherry picked from commit 67b4d2772c5124b908f8ed9b13166a79bbeb88d2) Co-authored-by: Nikita Sobolev <[email protected]> --- Lib/unittest/mock.py | 18 ++++++++++ Lib/unittest/test/testmock/testasync.py | 17 +++++++++ Misc/NEWS.d/next/Library/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst | 1 3 files changed, 36 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -1749,6 +1749,12 @@ class _patch_dict(object): def __call__(self, f): if isinstance(f, type): return self.decorate_class(f) + if inspect.iscoroutinefunction(f): + return self.decorate_async_callable(f) + return self.decorate_callable(f) + + + def decorate_callable(self, f): @wraps(f) def _inner(*args, **kw): self._patch_dict() @@ -1757,6 +1763,18 @@ class _patch_dict(object): finally: self._unpatch_dict() + return _inner + + + def decorate_async_callable(self, f): + @wraps(f) + async def _inner(*args, **kw): + self._patch_dict() + try: + return await f(*args, **kw) + finally: + self._unpatch_dict() + return _inner --- a/Lib/unittest/test/testmock/testasync.py +++ b/Lib/unittest/test/testmock/testasync.py @@ -143,6 +143,23 @@ class AsyncPatchCMTest(unittest.TestCase asyncio.run(test_async()) + def test_patch_dict_async_def(self): + foo = {'a': 'a'} + @patch.dict(foo, {'a': 'b'}) + async def test_async(): + self.assertEqual(foo['a'], 'b') + + self.assertTrue(inspect.iscoroutinefunction(test_async)) + asyncio.run(test_async()) + + def test_patch_dict_async_def_context(self): + foo = {'a': 'a'} + async def test_async(): + with patch.dict(foo, {'a': 'b'}): + self.assertEqual(foo['a'], 'b') + + asyncio.run(test_async()) + class AsyncMockTest(unittest.TestCase): def test_iscoroutinefunction_default(self): --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst @@ -0,0 +1 @@ +Make sure ``patch.dict()`` can be applied on async functions. ++++++ CVE-2007-4559-filter-tarfile_extractall.patch ++++++ ++++ 2612 lines (skipped)
