bug fixes: and support for plugins

v2.0
Steve Nyemba 8 months ago
parent e7838f5de1
commit 6feae101b0

@ -17,12 +17,14 @@ Source Code is available under MIT License:
https://hiplab.mc.vanderbilt.edu/git/hiplab/data-transport https://hiplab.mc.vanderbilt.edu/git/hiplab/data-transport
""" """
import numpy as np import numpy as np
from transport import sql, nosql, cloud, other from transport import sql, nosql, cloud, other
import pandas as pd import pandas as pd
import json import json
import os import os
from info import __version__,__author__ from info import __version__,__author__
from transport.iowrapper import IWriter, IReader
from transport.plugins import PluginLoader
PROVIDERS = {} PROVIDERS = {}
def init(): def init():
global PROVIDERS global PROVIDERS
@ -31,7 +33,6 @@ def init():
if _provider_name.startswith('__') : if _provider_name.startswith('__') :
continue continue
PROVIDERS[_provider_name] = {'module':getattr(_module,_provider_name),'type':_module.__name__} PROVIDERS[_provider_name] = {'module':getattr(_module,_provider_name),'type':_module.__name__}
# print ([ {name:getattr(sql,name)} for name in dir(sql) if not name.startswith('__')])
def instance (**_args): def instance (**_args):
""" """
@ -56,8 +57,22 @@ def instance (**_args):
else: else:
_context = 'read' _context = 'read'
_pointer = getattr(_module,'Reader') if _context == 'read' else getattr(_module,'Writer') _pointer = getattr(_module,'Reader') if _context == 'read' else getattr(_module,'Writer')
return _pointer (**_args) _agent = _pointer (**_args)
pass #
loader = None
if 'plugins' in _args :
_params = _args['plugins']
if 'path' in _params and 'names' in _params :
loader = PluginLoader(**_params)
elif type(_params) == list:
loader = PluginLoader()
for _delegate in _params :
loader.set(_delegate)
return IReader(_agent,loader) if _context == 'read' else IWriter(_agent,loader)
else: else:
raise Exception ("Missing or Unknown provider") raise Exception ("Missing or Unknown provider")
pass pass
@ -79,11 +94,3 @@ class factory :
pass pass
factory.instance = instance factory.instance = instance
init() init()
# if __name__ == '__main__' :
# # if not PROVIDERS :
# init()
# print (list(PROVIDERS.keys()))
# pgr = instance(provider='postgresql',database='io',table='foo',write=True)
# print (pgr.read())
# print ()
# print (supported())
Loading…
Cancel
Save