| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import os
- import importlib
- import sys
- class modInfo(object):
- def __init__(self, path):
- self._loaded = False
- self._size = 0
- self._path = ""
- self._mod = None
- self.Path = path
- def __del__(self):
- self.Unload()
- del self._loaded
- del self._mod
- del self._path
- del self._size
- def Unload(self):
- if self._loaded == False:
- return
- self._loaded = False
- def Execute(self, methode, arg1 = None, arg2 = None,arg3 = None):
- if self._loaded == False:
- return
- methode = getattr(self._mod, methode)
- if methode:
- if arg1 == None and arg2==None and arg3 == None:
- methode()
- elif arg2 == None and arg3 == None:
- methode(arg1)
- elif arg3 == None:
- methode(arg1, arg2)
- else:
- methode(arg1, arg2, arg3)
- def _loadModule(self, moduleName):
- module = None
- moduleName = moduleName.replace("/",".")
- try:
- del sys.modules[moduleName]
- except BaseException as err:
- pass
- try:
- module = importlib.import_module(moduleName)
- except BaseException as err:
- serr = str(err)
- print("Error loading module '" + moduleName + "': " + serr)
- return module
- def _reloadModule(self, moduleName):
- module = loadModule(moduleName)
- moduleName = moduleName.replace("/",".")
- moduleName, modulePath = str(module).replace("' from '", "||").replace("<module '", '').replace("'>", '').split("||")
- if (modulePath.endswith(".pyc")):
- import os
- os.remove(modulePath)
- module = loadModule(moduleName)
- return module
- def _getInstance(self, moduleName, param1, param2, param3):
- module = reloadModule(moduleName)
- instance = eval("module." + moduleName + "(param1, param2, param3)")
- return instance
- @property
- def Path(self):
- return self._path
- @Path.setter
- def Path(self,value):
- if self._path == value:
- return
- print("Set Path to "+value)
- self.Unload()
- if value == "":
- return
- self._path = value
- if os.path.isfile(value):
- self._size = os.path.getsize(self._path)
- try:
- #self._mod = __import__(self._path)
- self._mod = self._loadModule(self._path)
- self._loaded = True
- except ImportError:
- self._mod = None
- self._loaded = False
- else:
- self._mod = None
- self._loaded = False
- self._size = 0
- @property
- def Size(self):
- return self._size
- @property
- def Module(self):
- return self._mod
- @property
- def Loaded(self):
- return self._loaded
|