factory
- update to 2.2.2:
* When @wrapt.lru_cache was applied to an instance method that
was overridden in a subclass, and the subclass method called
the base class method via super(), a RecursionError was
raised instead of the base class method being invoked. The
per-instance cache for each method was stored as an attribute
on the instance whose name was derived only from the method
__name__, so the base and derived methods shared a single
cache slot. The subclass cache was therefore found again when
the base method was reached through super(), re-entering the
subclass body and recursing without end. The cache attribute
name now incorporates a unique identifier for each decorated
method so that a base method and a method that overrides it
use distinct per-instance caches. With thanks to the reporter
of issue #342.
* When @wrapt.lru_cache was applied to a method of a class
deriving from wrapt.ObjectProxy, the per-instance cache was
stored on the wrapped object rather than on the proxy. This
is because the proxy __setattr__ forwards attribute
assignment to the wrapped object for any name that is not a
recognised proxy attribute, and the cache attribute name was
not one. Storing the cache on the wrapped object had several
consequences: the wrapped object was polluted with cache
attributes it never defined; the cache held a reference back
to the proxy through the bound method it wrapped, so a
wrapped object that outlived the proxy kept the proxy alive
and prevented its collection; wrapping an object that does
not accept arbitrary attributes, such as one using __slots__,
caused the first cached call to fail with an AttributeError;
and two proxies sharing a single wrapped object shared one
OBS-URL: https://build.opensuse.org/request/show/1362163
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-wrapt?expand=0&rev=27
Description
No description provided
Languages
RPM Spec
100%