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)¶
pluggy 0.13.0 (2019-09-10)¶
pluggy 0.12.0 (2019-05-27)¶
pluggy 0.11.0 (2019-05-07)¶
pluggy 0.10.0 (2019-05-07)¶
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.
pluggy 0.8.1 (2018-11-09)¶
pluggy 0.8.0 (2018-10-15)¶
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.0 (2015-05-07)¶
initial release