Plugin system framework for automating development and integration of package extensions.
- Overview
- Features
- Installation
- Usage
- Configuration
- Documentation
- Support
- Contributing
- Acknowledgments
- License
Designing a plugin system involves two tightly coupled challenges:
- On the host application side: implementing a structured and extensible architecture.
- On the plugin side: conforming to a standardized interface and integration protocol.
In the absence of a formalized framework, host developers must manually implement plugin discovery, validation, registration, and integration. Plugin developers, in turn, must reverse-engineer the host’s expectations. This fragmented process increases complexity and hinders maintainability.
Furthermore, seamless plugin usage by end users requires reliable loading and execution mechanisms at runtime, with limited visibility into internal plugin logic.
This framework provides a unified infrastructure to automate plugin management and decouple architectural design from application-specific functionality.
It defines standardized procedures for all three actors in the plugin ecosystem:
- Host applications: Define and expose plugin interfaces, manage discovery and registration, and coordinate runtime execution.
- Plugin developers: Implement compliant modules with minimal boilerplate, following validated integration specifications.
- End users: Install and activate plugins transparently within the host application environment, without manual configuration.
- Plugin Specification: Defines a common interface for plugins to ensure compatibility with the host application.
- Plugin Discovery: Offers various strategies to locate plugins from multiple sources, that can be automatically or manually triggered either by the host application or by the user.
- Plugin Validation: Ensures that plugins conform to the expected schema and are compatible with the host application.
- Plugin Registration: Enable/disable plugins and organizes their resources to make them available to the host application flexibly.
- Extensible CLI Framework: Provides a modular command-line interface (CLI) that can be extended with new commands provided by plugins. Commands and nested groups can be composed to assemble the main application.
To install the package and its dependencies, use one of the following methods:
Install the package from the GitHub repository URL via pip
:
pip install git+https://github.com/esther-poniatowski/khimera.git
Install the package from the private channel eresthanaconda:
conda install khimera -c eresthanaconda
-
Clone the repository:
git clone https://github.com/esther-poniatowski/khimera.git
-
Create a dedicated virtual environment:
cd khimera conda env create -f environment.yml
To display the list of available commands and options:
khimera --help
To use the package programmatically in Python:
import khimera
Variable | Description | Default | Required |
---|---|---|---|
VAR_1 |
Description 1 | None | Yes |
VAR_2 |
Description 2 | false |
No |
Configuration options are specified in YAML files located in the config/
directory.
The canonical configuration schema is provided in config/default.yaml
.
var_1: value1
var_2: value2
Note
Documentation can also be browsed locally from the docs/
directory.
Issues: GitHub Issues
Email: {{ [email protected] }}
Please refer to the contribution guidelines.
Author: @esther-poniatowski
Contact: {{ [email protected] }}
For academic use, please cite using the GitHub "Cite this repository" feature to generate a citation in various formats.
Alternatively, refer to the citation metadata.
This project is licensed under the terms of the GNU General Public License v3.0.