Skip to main content

Plugin system supporting multiple programming languages

Project description

MultiPlug

The MultiPlug library is used for creating flexible plugin systems for Python programs, supporting multiple programming languages.

For example, a CLI script based on this library can take the name of a module as one of its command line arguments and import and use the module. The user of the script will then select a plugin e.g. from a plugin collection or writing it according to a given API specification.

Features

Main features of the library:

  • the library allows the dynamic import of a plugin module, given its filename
  • plugins can be written in Python, Nim, Rust and Bash
  • the calling code is (in most cases) independent of the plugin implementation language
  • plugin modules are automatically (re-)compiled, when necessary (thanks to the nimporter and maturin libraries)
  • a wrapper mechanism allows to support Bash plugins
  • systems are provided for defining module-level constants when importing Nim and Rust modules
  • basic aspects of the plugin interface (names of the required and optional module-level public functions and constants) can be specified and automatically checked

Installation

The Python libraries listed in requirements.txt are installed automatically, if MultiPlug is installed using pip, and can otherwise be installed using pip install -r requirements.txt.

For supporting plugins written in Nim, the Nim compiler must be installed in the system and the nimpy library installed, e.g. using nimble install nimpy. Furthermore, for using the exportpy_consts macro in Nim plugins, run nimble install in the multiplug_nim directory.

For supporting plugins written in Rust, the Rust compiler must be installed in the system and the PyO3 library installed, e.g. using cargo install PyO3.

Usage

The usage of the library is explained in the user manual.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multiplug-1.2.tar.gz (22.6 kB view hashes)

Uploaded Source

Built Distribution

multiplug-1.2-py3-none-any.whl (11.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page