- Added full type annotations and exported types (via
py.typed).
- Allow install multiple versions of the same plugin.
- Add a new
requirementsproperty which allows specifying any additional requirements for plugins. - Add support for packaging Linux libraries with version suffixes (e.g. libhookman.so.1.0.0).
- Dropped support for old Python versions, requiring Python 3.10+.
- Add CHANGELOG.rst to plugin generator
- Allow to add some extra text to created hmplugin file.
- When removing plugins they are first moved to a
.trashdir and not directly deleted. - Allow HookManager to call hooks of a specific plugin.
- Rename the parameter
dst_pathtodest_pathoninstall_pluginmethod. install_pluginnow returns the name of the plugin when the installation is successful.- Now the library path dir is added to
PATHenvironment variable before load the library (Only on Windows). - Added an optional "extras" entry to plugin definition yaml:
- "extras" is a dictionary for adding (key, value) customized options, accessible in
PluginInfo.extras; - Plugin generation accepts a dict of default (key, value) pairs to be added to
extras;
- "extras" is a dictionary for adding (key, value) customized options, accessible in
Moved load hook function code to
HookCaller.load_impls_from_libraryfunction implemented in C++. This enables using hook functionality in projects which don't use Python as their entry point.HookSpecsnow accepts anextra_includesargument, which can be used to add custom#includedirectives to the generatedHookCaller.hppfile.HookCallernow contains astd::vectorof functions bound to plugin implementations. This allows multiple plugins to implement the same hook; how the results of each call is to behave is responsibility of the caller.Because of this, the following classes/methods have been removed because they are no longer relevant:
ConflictBetweenPluginsErrorConflictStatusHookMan.ensure_is_validHookMan.get_status
Generated files now sport a "do not modify" comment header.
Generation of the bindings code for
HookCalleris skipped ifspecs.pyd_nameis not defined.Code generation is now available directly in the command-line through the commands:
python -m hookman generate-plugin-templatepython -m hookman generate-project-filespython -m hookman generate-hook-specs-hpython -m hookman package-plugin
Explicitly declare
extern "C"calling convention in thehook_specs.hfile.The
INIT_HOOKSmacro has been removed as it didn't have any useful function.
- First Release on PyPI.
- Never released, deployment error.
- Never released, deployment error.
- Never released, deployment error.
- Never released, deployment error.
- Never released, deployment error.
- Never released, deployment error.
- Dropping bumperversion and using setuptool_scm
- Never released, deployment error.