Metadata-Version: 2.1
Name: multiplug
Version: 1.1
Summary: Plugin system supporting multiple programming languages
Home-page: https://github.com/ggonnella/multiplug
Author: Giorgio Gonnella
Author-email: gonnella@zbh.uni-hamburg.de
License: ISC
Keywords: plugins,extensions,nim,rust,shell,bash
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries
Description-Content-Type: text/markdown
License-File: LICENSE.txt

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](https://github.com/ggonnella/multiplug/blob/main/docs/usage.md).


