Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP7:GA
python3
99366-patch.dict-can-decorate-async.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 99366-patch.dict-can-decorate-async.patch of Package python3
From 1c57ada66c9f0b74f2f8082d95a387639a5f9e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= <mcepl@cepl.eu> Date: Thu, 4 Apr 2024 01:05:40 +0200 Subject: [PATCH] make sure ``patch.dict()`` can be applied on async functions Code is from gh#python/cpython@88b101ff520, it was released upstream in 3.10.9. Fixes: gh#98086 Patch: 99366-patch.dict-can-decorate-async.patch --- Lib/unittest/mock.py | 18 ++++++++++++++++++ ...22-10-08-19-39-27.gh-issue-98086.y---WC.rst | 1 + 2 files changed, 19 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 645d100960e..8419397400a 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -1595,6 +1595,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() @@ -1606,6 +1612,18 @@ class _patch_dict(object): 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 + + def decorate_class(self, klass): for attr in dir(klass): attr_value = getattr(klass, attr) diff --git a/Misc/NEWS.d/next/Library/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst b/Misc/NEWS.d/next/Library/2022-10-08-19-39-27.gh-issue-98086.y---WC.rst new file mode 100644 index 00000000000..f4a1d272e13 --- /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. -- 2.45.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor