Skip to content

esther-poniatowski/khimera

Repository files navigation

Khimera

Conda Maintenance Last Commit Python License: GPL

Plugin system framework for automating development and integration of package extensions.


Table of Contents

Overview

Motivation

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.

Advantages

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.

Features

  • 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.

Installation

To install the package and its dependencies, use one of the following methods:

Using Pip Installs Packages

Install the package from the GitHub repository URL via pip:

pip install git+https://github.com/esther-poniatowski/khimera.git

Using Conda

Install the package from the private channel eresthanaconda:

conda install khimera -c eresthanaconda

From Source

  1. Clone the repository:

    git clone https://github.com/esther-poniatowski/khimera.git
  2. Create a dedicated virtual environment:

    cd khimera
    conda env create -f environment.yml

Usage

Command Line Interface (CLI)

To display the list of available commands and options:

khimera --help

Programmatic Usage

To use the package programmatically in Python:

import khimera

Configuration

Environment Variables

Variable Description Default Required
VAR_1 Description 1 None Yes
VAR_2 Description 2 false No

Configuration File

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

Documentation

Note

Documentation can also be browsed locally from the docs/ directory.

Support

Issues: GitHub Issues

Email: {{ [email protected] }}


Contributing

Please refer to the contribution guidelines.


Acknowledgments

Authors & Contributors

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.

Third-Party Dependencies


License

This project is licensed under the terms of the GNU General Public License v3.0.

About

Plugin system framework for automating development and integration of package extensions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages