When the C extension for wrapt was being used, and a property was used on an
object proxy wrapping another object to intercept access to an attribute of
the same name on the wrapped object, if the function implementing the property
raised an exception, then the exception was ignored and not propagated back to
the caller. What happened instead was that the original value of the attribute
from the wrapped object was returned, thus silently suppressing that an
exception had occurred in the wrapper. This behaviour was not happening when
the pure Python version of wrapt was being used, with it raising the
exception. The pure Python and C extension implementations thus did not behave
the same.
Note that in the specific case that the exception raised is AttributeError it
still wouldn't be raised. This is the case for both Python and C extension
implementations. If a wrapper for an attribute internally raises an
AttributeError for some reason, the wrapper should if necessary catch the
exception and deal with it, or propagate it as a different exception type if
it is important that an exception still be passed back.
Address issue where the post import hook mechanism of wrapt wasn't transparent
and left the __loader__ and __spec__.loader attributes of a module as
the wrapt import hook loader and not the original loader. That the original
loader wasn't preserved could interfere with code which needed access to the
original loader.
Address issues where a thread deadlock could occur within the wrapt module
import handler, when code executed from a post import hook created a new
thread and code executed in the context of the new thread itself tried to
register a post import hook, or imported a new module.
When using CallableObjectProxy as a wrapper for a type or function and
calling the wrapped object, it was not possible to pass a keyword argument
named self. This only occurred when using the pure Python version of wrapt
and did not occur when using the C extension based implementation.
When using PartialCallableObjectProxy as a wrapper for a type or function,
when constructing the partial object and when calling the partial object, it
was not possible to pass a keyword argument named self. This only occurred
when using the pure Python version of wrapt and did not occur when using the C
extension based implementation.
When using FunctionWrapper as a wrapper for a type or function and calling
the wrapped object, it was not possible to pass a keyword argument named
self. Because FunctionWrapper is also used by decorators, this also
affected decorators on functions and class types. A similar issue also arose
when these were applied to class and instance methods where binding occurred
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps wrapt from 1.14.0 to 1.15.0.
Changelog
Sourced from wrapt's changelog.
... (truncated)
Commits
0634a79
Merge branch 'release/1.15.0'ba845c6
Update version to 1.15.0 for release.d446a4f
Remove egg info directory.c11181d
Set version to 1.15.0rc1 for release.3a6a771
Need to install wheel package for bdist_wheel.bb8d37a
Attempt to build a pure Python source wheel.511a8ce
Remove .tox directory when doing clean.32a0720
Fix issues when using keyword argument named self with weak function proxy.4e09f7a
Fix issues when using keyword argument named self with function wrappers and ...ee6bab6
On Python 2 the format of exception differs to Python 3.Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)