Skip to main content

Dynamically load other python modules to your project.

Project description

Simple Python Plugin Loader

PyPI package PyPI version

This module provides a simple way to dynamically load other Python modules as Plugins to your current project.

Install

You can install this python module via pip:

pip install simple-plugin-loader

Otherwise the module can be downloaded from PyPI: https://pypi.org/project/simple-plugin-loader/

Usage

  1. Import the module:
    from simple_plugin_loader import Loader
    
  2. Load your plugins/modules:
    # initialize the loader
    loader = Loader()
    
    # load your plugins
    plugins = loader.load_plugins(<plugin_path>, <plugin_base_class>, <specific_plugins>, <recursive>)
    
  3. (Optional) The already loaded plugins/modules can be accessed via the plugins property of the loader instance:
    plugins = loader.plugins
    

load_plugins(...) Method

This method does the actual plugin loading.

It loads only Python modules that can be executed in the current environment. For every successfully loaded module a message is populated through the Python logging library (log level: INFO).

If a module e.g. contains syntax errors or depends on other not installed Python modules, it will be skipped. So the main program does not fail completely. An error message is populated through the Python logging library (log level: ERROR).

Arguments
  • <plugin_path>: str
    This string represents the path (relative or absolute) to the directory from where the plugins/modules should be loaded.
  • <plugin_base_class>: class (Default: SamplePlugin)
    The Loader does not load all found modules that are in the above directory. It only loads classes that are sub-classes of the here specified class.
    The default value of this argument is the SamplePlugin class. You can use this class as the base class for your plugins:
    from simple_plugin_loader.sample_plugin import SamplePlugin
    
    class YourPlugin(SamplePlugin):
        pass
    
  • <specific_plugins>: List[str] (Default: [])
    This list can contain case sensitive class names, that should be loaded. Then no other plugins will be loaded. The argument <plugin_base_class> will also be ignored, so any class can be loaded.
  • <recursive>: bool (Default: False)
    Set this flag to True if you wish to load plugins/modules recursively to the above directory.
Return value

The method returns a dictionary that has the following structure:

  • Key: The name of the plugin/module. This name is the module name of the module that contains the plugin class.
  • Value: The plugin class. Not an instance!

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

simple_plugin_loader-3.0.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

simple_plugin_loader-3.0.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file simple_plugin_loader-3.0.0.tar.gz.

File metadata

  • Download URL: simple_plugin_loader-3.0.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.7.17 Linux/6.2.0-1012-azure

File hashes

Hashes for simple_plugin_loader-3.0.0.tar.gz
Algorithm Hash digest
SHA256 effbdd6320cda1914ab10eca7fb10c2a458db20be704b26ed0be1c0c6d2042dd
MD5 2bacca3f7763a464de3e0c7b4ef4d7ff
BLAKE2b-256 f8df9f0fc0b6e5901f15194fb948b6cd98d2f7bd6c5eedf316e350d38ba06358

See more details on using hashes here.

File details

Details for the file simple_plugin_loader-3.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for simple_plugin_loader-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9cb94e6c0fe4c2862796f5abd43296c3b1978b7a42c01b65b3ab22f79a9a72df
MD5 651daf6a931a66840bafccf348a38b56
BLAKE2b-256 1b0620c63aac1bddd53cd260b6cf09cef33a127d116c40481e65409dc68052bd

See more details on using hashes here.

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