You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
4.5 KiB
Python
130 lines
4.5 KiB
Python
8 months ago
|
"""
|
||
|
The functions within are designed to load external files and apply functions against the data
|
||
|
The plugins are applied as
|
||
|
- post-processing if we are reading data
|
||
|
- and pre-processing if we are writing data
|
||
|
|
||
|
The plugin will use a decorator to identify meaningful functions
|
||
|
@TODO: This should work in tandem with loggin (otherwise we don't have visibility into what is going on)
|
||
|
"""
|
||
|
import importlib as IL
|
||
|
import importlib.util
|
||
|
import sys
|
||
|
import os
|
||
|
|
||
|
class plugin :
|
||
|
"""
|
||
|
Implementing function decorator for data-transport plugins (post-pre)-processing
|
||
|
"""
|
||
|
def __init__(self,**_args):
|
||
|
"""
|
||
|
:name name of the plugin
|
||
|
:mode restrict to reader/writer
|
||
|
:about tell what the function is about
|
||
|
"""
|
||
|
self._name = _args['name']
|
||
|
self._about = _args['about']
|
||
|
self._mode = _args['mode'] if 'mode' in _args else 'rw'
|
||
8 months ago
|
:name name of the functiion of interest
|
||
|
"""
|
||
|
|
||
|
p = type(getattr(module,name)).__name__ =='function'
|
||
|
q = hasattr(getattr(module,name),'transport')
|
||
|
#
|
||
|
# @TODO: add a generated key, and more indepth validation
|
||
|
return p and q
|
||
|
def has(self,_name):
|
||
|
"""
|
||
|
This will determine if the module name is loaded or not
|
||
|
"""
|
||
|
return _name in self._modules
|
||
|
def ratio (self):
|
||
|
"""
|