浏览代码

upgrade pyproject.toml, bug fix with registry

Steve Nyemba 5 天之前
父节点
当前提交
66d881fdda
共有 3 个文件被更改,包括 7 次插入191 次删除
  1. 1 1
      info/__init__.py
  2. 0 33
      setup.py
  3. 6 157
      transport/registry.py

+ 1 - 1
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"""

+ 0 - 33
setup.py

@@ -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)

+ 6 - 157
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)