Plugin System Tools
- Dominant language
- No language data
- Stars
- 13
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
## Context and Problem Statement
The new project requires a plugin system to keep the core minimal.
What tools should we use to build a plugin system?
## Decision Drivers
Open
## Considered Options
* pluggy
* from scratch
## Pros and Cons of the Options
### Pluggy
Pluggy is the plugin library used by pytest, which is maybe the most well known plugin system in the python ecosystem.
[about pluggy](https://pluggy.readthedocs.io/en/stable/) | [pytest hooks examples](https://docs.pytest.org/en/7.1.x/how-to/writing_hook_functions.html)
```
[Good]
- mature framework used by really big project in python ecosystem
- lighweight dependecy (it has a small codebase, no more than 1500 lines)
- seems easy and flexible to setup and use
[Bad]
- maybe it can limit some decisions?
```
### From Scratch
Python entrypoints system can be used to build a plugin system alongside `importlib`.
[entrypoints specifications](https://packaging.python.org/en/latest/specifications/entry-points/) | [setuptools userguide on entrypoints](https://setuptools.pypa.io/en/latest/userguide/entry_point.html#entry-points-for-plugins)
```
[Good]
- the system will be tailored to the library needs
[Bad]
- more error and bug prone
- more work to get it up and running
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.