Changelog¶
pluggy 1.0.0 (2021-08-25)¶
Deprecations and Removals¶
#116: Remove deprecated
implprefix
support. Decorate hook implementations using an instance of HookimplMarker instead. The deprecation was announced in release0.7.0
.#120: Remove the deprecated
proc
argument tocall_historic
. Useresult_callback
instead, which has the same behavior. The deprecation was announced in release0.7.0
.#265: Remove the
_Result.result
property. Use_Result.get_result()
instead. Note that unlikeresult
,get_result()
raises the exception if the hook raised. The deprecation was announced in release0.6.0
.#267: Remove official support for Python 3.4.
#272: Dropped support for Python 2. Continue to use pluggy 0.13.x for Python 2 support.
#308: Remove official support for Python 3.5.
#313: The internal
pluggy.callers
,pluggy.manager
andpluggy.hooks
are now explicitly marked private by a_
prefix (e.g.pluggy._callers
). Only API exported by the top-levelpluggy
module is considered public.#59: Remove legacy
__multicall__
recursive hook calling system. The deprecation was announced in release0.5.0
.
Features¶
#282: When registering a hookimpl which is declared as
hookwrapper=True
but whose function is not a generator function, aPluggyValidationError
exception is now raised.Previously this problem would cause an error only later, when calling the hook.
In the unlikely case that you have a hookwrapper that returns a generator instead of yielding directly, for example:
def my_hook_real_implementation(arg): print("before") yield print("after") @hookimpl(hookwrapper=True) def my_hook(arg): return my_hook_implementation(arg)
change it to use
yield from
instead:@hookimpl(hookwrapper=True) def my_hook(arg): yield from my_hook_implementation(arg)
#309: Add official support for Python 3.9.
pluggy 0.13.1 (2019-11-21)¶
Trivial/Internal Changes¶
#236: Improved documentation, especially with regard to references.
pluggy 0.13.0 (2019-09-10)¶
Trivial/Internal Changes¶
#222: Replace
importlib_metadata
backport withimportlib.metadata
from the standard library on Python 3.8+.
pluggy 0.12.0 (2019-05-27)¶
Features¶
#215: Switch from
pkg_resources
toimportlib-metadata
for entrypoint detection for improved performance and import time. This time with.egg
support.
pluggy 0.11.0 (2019-05-07)¶
Bug Fixes¶
#205: Revert changes made in 0.10.0 release breaking
.egg
installs.
pluggy 0.10.0 (2019-05-07)¶
Features¶
#199: Switch from
pkg_resources
toimportlib-metadata
for entrypoint detection for improved performance and import time.
pluggy 0.9.0 (2019-02-21)¶
Features¶
#189:
PluginManager.load_setuptools_entrypoints
now accepts aname
parameter that when given will load only entry points with that name.PluginManager.load_setuptools_entrypoints
also now returns the number of plugins loaded by the call, as opposed to the number of all plugins loaded by all calls to this method.
Bug Fixes¶
#187: Fix internal
varnames
function for PyPy3.
pluggy 0.8.1 (2018-11-09)¶
Trivial/Internal Changes¶
#166: Add
stacklevel=2
to implprefix warning so that the reported location of warning is the caller of PluginManager.
pluggy 0.8.0 (2018-10-15)¶
Features¶
#177: Add
get_hookimpls()
method to hook callers.
Trivial/Internal Changes¶
pluggy 0.7.1 (2018-07-28)¶
Deprecations and Removals¶
#116: Deprecate the
implprefix
kwarg toPluginManager
and instead expect users to start using explicitHookimplMarker
everywhere.
Features¶
Bug Fixes¶
Improved Documentation¶
#123: Document how exceptions are handled and how the hook call loop terminates immediately on the first error which is then delivered to any surrounding wrappers.
#136: Docs rework including a much better introduction and comprehensive example set for new users. A big thanks goes out to @obestwalter for the great work!
Trivial/Internal Changes¶
#117: Break up the main monolithic package modules into separate modules by concern
#131: Automate
setuptools
wheels building and PyPi upload using TravisCI.#153: Reorganize tests more appropriately by modules relating to each internal component/feature. This is in an effort to avoid (future) duplication and better separation of concerns in the test set.
#156: Add
HookImpl.__repr__()
for better debugging.#66: Start using
towncrier
and a customtox
environment to prepare releases!
pluggy 0.7.0 (Unreleased)¶
#160: We discovered a deployment issue so this version was never released to PyPI, only the tag exists.
pluggy 0.6.0 (2017-11-24)¶
Add CI testing for the features, release, and master branches of
pytest
(PR #79).Document public API for
_Result
objects passed to wrappers (PR #85).Document and test hook LIFO ordering (PR #85).
Turn warnings into errors in test suite (PR #89).
Deprecate
_Result.result
(PR #88).Convert
_Multicall
to a simple function distinguishing it from the legacy version (PR #90).Resolve E741 errors (PR #96).
Test and bug fix for unmarked hook collection (PRs #97 and #102).
Drop support for EOL Python 2.6 and 3.3 (PR #103).
Fix
inspect
based arg introspection on py3.6 (PR #94).
pluggy 0.5.2 (2017-09-06)¶
fix bug where
firstresult
wrappers were being sent an incorrectly configured_Result
(a list was set instead of a single value). Add tests to check for this as well as_Result.force_result()
behaviour. Thanks to @tgoodlet for the PR #72.fix incorrect
getattr
ofDeprecationWarning
from thewarnings
module. Thanks to @nicoddemus for the PR #77.hide
pytest
tracebacks in certain core routines. Thanks to @nicoddemus for the PR #80.
pluggy 0.5.1 (2017-08-29)¶
fix a bug and add tests for case where
firstresult
hooks returnNone
results. Thanks to @RonnyPfannschmidt and @tgoodlet for the issue (#68) and PR (#69) respectively.
pluggy 0.5.0 (2017-08-28)¶
fix bug where callbacks for historic hooks would not be called for already registered plugins. Thanks @vodik for the PR and @hpk42 for further fixes.
fix #17 by considering only actual functions for hooks this removes the ability to register arbitrary callable objects which at first glance is a reasonable simplification, thanks @RonnyPfannschmidt for report and pr.
fix #19: allow registering hookspecs from instances. The PR from @tgoodlet also modernized the varnames implementation.
resolve #32: split up the test set into multiple modules. Thanks to @RonnyPfannschmidt for the PR and @tgoodlet for the initial request.
resolve #14: add full sphinx docs. Thanks to @tgoodlet for PR #39.
add hook call mismatch warnings. Thanks to @tgoodlet for the PR #42.
resolve #44: move to new-style classes. Thanks to @MichalTHEDUDE for PR #46.
add baseline benchmarking/speed tests using
pytest-benchmark
in PR #54. Thanks to @tgoodlet.update the README to showcase the API. Thanks to @tgoodlet for the issue and PR #55.
deprecate
__multicall__
and add a faster call loop implementation. Thanks to @tgoodlet for PR #58.raise a comprehensible error when a
hookimpl
is called with positional args. Thanks to @RonnyPfannschmidt for the issue and @tgoodlet for PR #60.fix the
firstresult
test making it more complete and remove a duplicate of that test. Thanks to @tgoodlet for PR #62.
pluggy 0.4.0 (2016-09-25)¶
add
has_plugin(name)
method to pluginmanager. thanks @nicoddemus.fix #11: make plugin parsing more resilient against exceptions from
__getattr__
functions. Thanks @nicoddemus.fix issue #4: specific
HookCallError
exception for when a hook call provides not enough arguments.better error message when loading setuptools entrypoints fails due to a
VersionConflict
. Thanks @blueyed.
pluggy 0.3.1 (2015-09-17)¶
avoid using deprecated-in-python3.5 getargspec method. Thanks @mdboom.
pluggy 0.3.0 (2015-05-07)¶
initial release