dynaconf / dynaconf/configx

Plugin System Tools

Open
#3 1 comment 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.