pluggy 1.0.0

1.0.0
Added 3
  • Raise PluginValidationError when registering a hookimpl declared as hookwrapper=True whose function is not a generator function
  • Add official support for Python 3.9
  • Add specname option to @hookimpl to match hook implementations to specifications using a different name
Removed 8
  • Remove deprecated implprefix support; use HookimplMarker instead
  • Remove the deprecated proc argument to call_historic; use result_callback instead
  • Remove the _Result.result property; use _Result.get_result() instead
  • Remove official support for Python 3.4
  • Drop support for Python 2
  • Remove official support for Python 3.5
  • Mark internal pluggy.callers, pluggy.manager, and pluggy.hooks as private with _ prefix
  • Remove legacy __multicall__ recursive hook calling system
Deprecations and Removals
  • #116 <https://github.com/pytest-dev/pluggy/issues/116>_: Remove deprecated implprefix support. Decorate hook implementations using an instance of HookimplMarker instead. The deprecation was announced in release 0.7.0.

  • #120 <https://github.com/pytest-dev/pluggy/issues/120>_: Remove the deprecated proc argument to call_historic. Use result_callback instead, which has the same behavior. The deprecation was announced in release 0.7.0.

  • #265 <https://github.com/pytest-dev/pluggy/issues/265>_: Remove the _Result.result property. Use _Result.get_result() instead. Note that unlike result, get_result() raises the exception if the hook raised. The deprecation was announced in release 0.6.0.

  • #267 <https://github.com/pytest-dev/pluggy/issues/267>_: Remove official support for Python 3.4.

  • #272 <https://github.com/pytest-dev/pluggy/issues/272>_: Dropped support for Python 2. Continue to use pluggy 0.13.x for Python 2 support.

  • #308 <https://github.com/pytest-dev/pluggy/issues/308>_: Remove official support for Python 3.5.

  • #313 <https://github.com/pytest-dev/pluggy/issues/313>_: The internal pluggy.callers, pluggy.manager and pluggy.hooks are now explicitly marked private by a _ prefix (e.g. pluggy._callers). Only API exported by the top-level pluggy module is considered public.

  • #59 <https://github.com/pytest-dev/pluggy/issues/59>_: Remove legacy __multicall__ recursive hook calling system. The deprecation was announced in release 0.5.0.

Features
  • #282 <https://github.com/pytest-dev/pluggy/issues/282>_: When registering a hookimpl which is declared as hookwrapper=True but whose function is not a generator function, a :class:~pluggy.PluginValidationError 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:

    .. code-block:: python

    def my_hook_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:

    .. code-block:: python

    @hookimpl(hookwrapper=True)
    def my_hook(arg):
        yield from my_hook_implementation(arg)
    
  • #309 <https://github.com/pytest-dev/pluggy/issues/309>_: Add official support for Python 3.9.

  • #251 <https://github.com/pytest-dev/pluggy/issues/251>_: Add specname option to @hookimpl. If specname is provided, it will be used instead of the function name when matching this hook implementation to a hook specification during registration (allowing a plugin to register a hook implementation that was not named the same thing as the corresponding @hookspec).

View original

Upgraded? How did it go?

Discussion