<div class="container">
<h1>Recommended update for python-wrapt</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2026:22839-1</td>
</tr>
<tr>
<th>Release Date:</th>
<td>2026-07-22T07:23:21Z</td>
</tr>
<tr>
<th>Rating:</th>
<td>moderate</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
<li style="display: inline;">
<a href="https://jira.suse.com/browse/PED-16058">jsc#PED-16058</a>
</li>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">SUSE Linux Enterprise Server 16.0</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP applications 16.0</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that contains one feature can now be installed.</p>
<h2>Description:</h2>
<p>This update for python-wrapt fixes the following issues:</p>
<p>Changes in python-wrapt:</p>
<p>Update to 2.1.2:</p>
<ul>
<li>When a weak function proxy was created for a bound method and
the instance it was bound to was garbage collected, calling
the proxy would silently call the function as unbound instead
of raising a ReferenceError.</li>
<li>When deleting an attribute named <strong>annotations</strong> on an object
proxy, the attribute was only being deleted from the proxy
and not also from the wrapped object.</li>
</ul>
<p>Update to 2.1.1:</p>
<p>## Features Changed</p>
<ul>
<li>Drop support for Python 3.8. Python version 3.9 or later is now required.</li>
</ul>
<p>## Bugs Fixed</p>
<ul>
<li>Missing tox.ini from source distribution package has been added.</li>
<li>Improved type hints so that mypy and ty work better for methods of
classes when using wrapt.decorator and wrapt.function_wrapper. Note that
applying these to static methods still does not work correctly due to
possibly limitations in those type checkers. The pyrefly tool still does
not work correctly with wrapt.decorator and wrapt.function_wrapper
applied to any methods of classes</li>
</ul>
<p>Update to 2.0.1:</p>
<p>## New Features</p>
<ul>
<li>Added <strong>all</strong> attribute to wrapt module to expose the public API.</li>
<li>The wrapt.PartialCallableObjectProxy class can now be accessed via the
alias wrapt.partial, which is a convenience for users who are used to
using functools.partial and want to use the wrapt version of it.</li>
<li>Type hints have been added to the wrapt module.</li>
<li>Added wrapt.BaseObjectProxy class which is the base class for all object
proxy classes.</li>
<li>Added wrapt.AutoObjectProxy class which is a pure Python subclass of
BaseObjectProxy which overrides the <strong>new</strong>() method to dynamically
generate a custom subclass which includes methods for callable,
descriptor and iterator protocols, as well as other select special
methods.</li>
<li>Added wrapt.LazyObjectProxy class which is a variant of AutoObjectProxy
which takes a callable which returns the object to be wrapped. The
callable is only invoked the first time an attribute of the wrapped
object is accessed.</li>
<li>Added wrapt.lazy_import() function which takes a module name and returns
a LazyObjectProxy which will import the module when it is first needed.</li>
</ul>
<p>## Features Changed</p>
<ul>
<li>Code related to Python 2.X and workarounds for older Python 3.X versions
has been removed.</li>
<li>Dependency at runtime on setuptools for calculating package entry points
has been removed. Instead the importlib.metadata module is now used for
this purpose.</li>
<li>For reasons to do with backward/forward compatibility the wrapt module
included references to getcallargs() and formatargspec() functions which
were part of the inspect module at one time or another. These were
provided as convenience for users of the wrapt module, but were not
actually part of the public API. They have now been removed from the
wrapt module and are no longer available.</li>
<li>The enabled, adapter and proxy arguments to the @decorator decorator had
to be keyword parameters, and the initial wrapped argument had to be
positional only. Because though Python 2.X was still being supported it
was not possible to use appropriate syntax to mark them as such. These
arguments are now marked as positional and keyword only parameters in the
function signature as appropriate.</li>
<li>The object proxy classes now raise a WrapperNotInitializedError exception
rather than Python builtin ValueError exception when an attempt is made
to access an attribute of the wrapped object before the wrapper has been
initialized.</li>
</ul>
<p>## Bugs Fixed</p>
<ul>
<li>The wrapt.lazy_import() function wasn't included in the <strong>all</strong> attribute
of the wrapt module.</li>
<li>When using wrapt.lazy_import() to lazily import a function of a module,
the resulting proxy object wasn't marked as callable until something
triggered the import of the module via the proxy. This meant a callable()
check on the proxy would return False until the module was actually
imported.</li>
<li>Reference count was not being incremented on type object for C
implementation of the partial callable object proxy when module was
initialized. If wrapt was being used in Python sub interpreters which
were deleted it could lead to the process crashing.</li>
<li>Wasn't chaining <strong>mro_entries</strong>() calls when the wrapped object was not a
type (class) and itself had a <strong>mro_entries</strong>() method. This meant that
if using the object proxy as a base class for a generic class, the
generic parameters were being ignored.</li>
<li>When an object proxy wrapped an immutable type, such as an integer, and
the object proxy had been assigned to a second variable, the result of an
in-place operation on the second variable was also affecting the first
variable, when instead the lifetime of the two variables should have been
independent to reflect what occurs for normal immutable types.</li>
</ul>
<p>Update to 1.17.3:</p>
<ul>
<li>Added universal binary wheels for macOS. That is, contains
both x86_64 and arm64 architectures in the same wheel.</li>
</ul>
<h2>Patch Instructions:</h2>
<p>
To install this SUSE update use the SUSE recommended
installation methods like YaST online_update or "zypper patch".<br/>
Alternatively you can run the command listed for your product:
</p>
<ul class="list-group">
<li class="list-group-item">
SUSE Linux Enterprise Server 16.0
<br/>
<code>zypper in -t patch SUSE-SLES-16.0-1313=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server for SAP applications 16.0
<br/>
<code>zypper in -t patch SUSE-SLES-16.0-1313=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
SUSE Linux Enterprise Server for SAP applications 16.0 (ppc64le x86_64)
<ul>
<li>python313-wrapt-debuginfo-2.1.2-160000.1.1</li>
<li>python-wrapt-debugsource-2.1.2-160000.1.1</li>
<li>python313-wrapt-2.1.2-160000.1.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server 16.0 (aarch64 ppc64le s390x x86_64)
<ul>
<li>python313-wrapt-debuginfo-2.1.2-160000.1.1</li>
<li>python-wrapt-debugsource-2.1.2-160000.1.1</li>
<li>python313-wrapt-2.1.2-160000.1.1</li>
</ul>
</li>
</ul>
<h2>References:</h2>
<ul>
<li>
<a href="https://jira.suse.com/browse/PED-16058">https://jira.suse.com/browse/PED-16058</a>
</li>
</ul>
</div>