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)

Reply via email to