diff --git a/info/__init__.py b/info/__init__.py index ef03a5b..501211f 100644 --- a/info/__init__.py +++ b/info/__init__.py @@ -1,6 +1,6 @@ __app_name__ = 'data-transport' __author__ = 'The Phi Technology' -__version__= '2.2.18' +__version__= '2.2.22' __email__ = "info@the-phi.com" __edition__= 'community' __license__=f""" diff --git a/setup.py b/setup.py deleted file mode 100644 index 119baab..0000000 --- a/setup.py +++ /dev/null @@ -1,33 +0,0 @@ -""" -This is a build file for the -""" -from setuptools import setup, find_packages -import os -import sys -# from version import __version__,__author__ -from info import __version__, __author__,__app_name__,__license__,__edition__ - - -def read(fname): - return open(os.path.join(os.path.dirname(__file__), fname)).read() -args = { - "name":__app_name__, - "version":__version__, - "author":__author__,"author_email":"info@the-phi.com", - "license":__license__, - # "packages":["transport","info","transport/sql"]}, - - "packages": find_packages(include=['info','transport', 'transport.*'])} -args["keywords"]=['mongodb','duckdb','couchdb','rabbitmq','file','read','write','s3','sqlite'] -args["install_requires"] = ['pyncclient','duckdb-engine','pymongo','sqlalchemy','pandas','typer','pandas-gbq','numpy','cloudant','pika','nzpy','termcolor','boto3','boto','pyarrow','google-cloud-bigquery','google-cloud-bigquery-storage','flask-session','smart_open','botocore','psycopg2-binary','mysql-connector-python','numpy','pymssql','pyspark','pydrill','sqlalchemy_drill','plugin-ix@git+https://github.com/lnyemba/plugins-ix'] -args["url"] = "https://healthcareio.the-phi.com/git/code/transport.git" -args['scripts'] = ['bin/transport'] -args['classifiers'] = ['Programming Language :: Python :: 3', - 'License :: OSI Approved :: MIT License', - "Topic :: Utilities", - 'Operating System :: OS Independent' - ] -# if sys.version_info[0] == 2 : -# args['use_2to3'] = True -# args['use_2to3_exclude_fixers']=['lib2to3.fixes.fix_import'] -setup(**args) diff --git a/transport/registry.py b/transport/registry.py index 8853069..1c9443e 100644 --- a/transport/registry.py +++ b/transport/registry.py @@ -6,7 +6,7 @@ import transport import importlib import importlib.util import shutil - +from io import StringIO """ This class manages data from the registry and allows (read only) @@ -21,161 +21,7 @@ if 'DATA_TRANSPORT_REGISTRY_PATH' in os.environ : REGISTRY_PATH = os.environ['DATA_TRANSPORT_REGISTRY_PATH'] REGISTRY_FILE= 'transport-registry.json' DATA = {} -# class plugins: -# # -# # This is a utility function that should enable management of plugins-registry -# # The class allows to add/remove elements -# # -# # @TODO: add read/write properties to the class (better design practice) -# # -# _data = {} -# FOLDER = os.sep.join([REGISTRY_PATH,'plugins']) -# CODE = os.sep.join([REGISTRY_PATH,'plugins','code']) -# FILE = os.sep.join([REGISTRY_PATH,'plugin-registry.json']) -# @staticmethod -# def init(): - -# if not os.path.exists(plugins.FOLDER) : -# os.makedirs(plugins.FOLDER) -# if not os.path.exists(plugins.CODE): -# os.makedirs(plugins.CODE) -# if not os.path.exists(plugins.FILE): -# f = open(plugins.FILE,'w') -# f.write("{}") -# f.close() -# plugins._read() #-- will load data as a side effect -# @staticmethod -# def copy (path) : - -# shutil.copy2(path,plugins.CODE) -# @staticmethod -# def _read (): -# f = open(plugins.FILE) -# try: -# _data = json.loads(f.read()) -# f.close() -# except Exception as e: -# print (f"Corrupted registry, resetting ...") -# _data = {} -# plugins._write(_data) - -# plugins._data = _data -# @staticmethod -# def _write (_data): -# f = open(plugins.FILE,'w') -# f.write(json.dumps(_data)) -# f.close() -# plugins._data = _data - -# @staticmethod -# def inspect (_path): -# _names = [] - -# if os.path.exists(_path) : -# _filename = _path.split(os.sep)[-1] -# spec = importlib.util.spec_from_file_location(_filename, _path) -# module = importlib.util.module_from_spec(spec) -# spec.loader.exec_module(module) - -# # _names = [{'name':getattr(getattr(module,_name),'name'),'pointer':getattr(module,_name)} for _name in dir(module) if type( getattr(module,_name)).__name__ == 'function'] -# for _name in dir(module) : -# _pointer = getattr(module,_name) -# if hasattr(_pointer,'transport') : -# _item = {'real_name':_name,'name':getattr(_pointer,'name'),'pointer':_pointer,'version':getattr(_pointer,'version')} -# _names.append(_item) - - -# return _names -# @staticmethod -# def add (alias,path): -# """ -# Add overwrite the registry entries -# """ -# _names = plugins.inspect (path) -# _log = [] - -# if _names : -# # -# # We should make sure we have all the plugins with the attributes (transport,name) set -# _names = [_item for _item in _names if hasattr(_item['pointer'],'transport') ] -# if _names : -# plugins.copy(path) -# _content = [] - -# for _item in _names : -# _key = '@'.join([alias,_item['name']]) -# _log.append(_item['name']) -# # -# # Let us update the registry -# # -# plugins.update(alias,path,_log) -# return _log - -# @staticmethod -# def update (alias,path,_log) : -# """ -# updating the registry entries of the plugins (management data) -# """ -# # f = open(plugins.FILE) -# # _data = json.loads(f.read()) -# # f.close() -# _data = plugins._data -# # _log = plugins.add(alias,path) - -# if _log : -# _data[alias] = {'content':_log,'name':path.split(os.sep)[-1]} -# plugins._write(_data) #-- will update data as a side effect - -# return _log -# @staticmethod -# def get(**_args) : -# # f = open(plugins.FILE) -# # _data = json.loads(f.read()) -# # f.close() -# # if 'key' in _args : -# # alias,name = _args['key'].split('.') if '.' in _args['key'] else _args['key'].split('@') -# # else : -# # alias = _args['alias'] -# # name = _args['name'] - -# # if alias in _data : - -# # _path = os.sep.join([plugins.CODE,_data[alias]['name']]) -# # _item = [_item for _item in plugins.inspect(_path) if name == _item['name']] - -# # _item = _item[0] if _item else None -# # if _item : - -# # return _item['pointer'] -# # return None -# _item = plugins.has(**_args) -# return _item['pointer'] if _item else None - -# @staticmethod -# def has (**_args): -# f = open(plugins.FILE) -# _data = json.loads(f.read()) -# f.close() -# if 'key' in _args : -# alias,name = _args['key'].split('.') if '.' in _args['key'] else _args['key'].split('@') -# else : -# alias = _args['alias'] -# name = _args['name'] - -# if alias in _data : - -# _path = os.sep.join([plugins.CODE,_data[alias]['name']]) -# _item = [_item for _item in plugins.inspect(_path) if name == _item['name']] - -# _item = _item[0] if _item else None -# if _item : - -# return copy.copy(_item) -# return None -# @staticmethod -# def synch(): -# pass def isloaded (): return DATA not in [{},None] @@ -233,8 +79,11 @@ def set (label, auth_file, default=False,path=REGISTRY_PATH) : if label == 'default' : raise Exception ("""Invalid label name provided, please change the label name and use the switch""") reg_file = os.sep.join([path,REGISTRY_FILE]) - if os.path.exists (auth_file) and os.path.exists(path) and os.path.exists(reg_file): - f = open(auth_file) + if os.path.exists(path) and os.path.exists(reg_file): + if type(auth_file) == str and os.path.exists (auth_file) : + f = open(auth_file) + elif type(auth_file) == StringIO: + f = auth_file _info = json.loads(f.read()) f.close() f = open(reg_file)