def Load(filename, label): """ Load AMD from constructor. """ assert (filename.endswith('.amd')) python_path = os.path.join(filename, ZipManager.getPythonModelFileName(filename)) cls = GetClass(python_path) m = AMDComponent.BlockModelAdapter(cls, label) load_file_result = m.LoadFile(filename) if isinstance(load_file_result, Exception): wx.MessageBox( _('Error loading %s model : %s ' % (label, load_file_result)), _('Error'), wx.OK | wx.ICON_ERROR) return None else: ### mandatory due to the LoadFile call before m.label = label return m
def Load(filename, label): """ Load AMD from constructor. """ assert (filename.endswith('.amd')) python_path = os.path.join(filename, ZipManager.getPythonModelFileName(filename)) cls = GetClass(python_path) m = AMDComponent.BlockModelAdapter(cls, label) load_file_result = m.LoadFile(filename) if isinstance(load_file_result, Exception): wx.MessageBox(_('Error loading %s model : %s '%(label, load_file_result)), _('Error'), wx.OK | wx.ICON_ERROR) return None else: ### mandatory due to the LoadFile call before m.label = label return m
def OnItemEdit(self, evt): item = self.GetSelection() path = self.GetItemPyData(item) ### virtual DEVS component just for edition devscomp = Components.DEVSComponent() ### path depends on the nature of droped component ### if pure python path if path.endswith('.py'): devscomp.setDEVSPythonPath(path) ### if devsimpy model elif zipfile.is_zipfile(path): #zf = ZipManager.Zip(path) devscomp.setDEVSPythonPath( os.path.join(path, ZipManager.getPythonModelFileName(path))) devscomp.model_path = path else: sys.stdout.write( _('The code of this type of model is not editable')) return ### call frame editor Components.DEVSComponent.OnEditor(devscomp, evt)
def GetTempTests(self, global_env=None): if not global_env: global_env = False ### Useful vars definition----------------------------------------------------------------- model_path = os.path.dirname(self.python_path) basename = os.path.basename(self.python_path) name = os.path.splitext(basename)[0] tests_files = ZipManager.Zip.GetTests(model_path) ### --------------------------------------------------------------------------------------- ### Folder hierarchy construction---------------------------------------------------------- feat_dir = os.path.join(gettempdir(), "features") steps_dir = os.path.join(feat_dir, "steps") if not os.path.exists(feat_dir): os.mkdir(feat_dir) if not os.path.exists(steps_dir): os.mkdir(steps_dir) ### --------------------------------------------------------------------------------------- ### AMD unzip------------------------------------------------------------------------------ amd_dir = os.path.join(gettempdir(), "AtomicDEVS") if not os.path.exists(amd_dir): os.mkdir(amd_dir) ### --------------------------------------------------------------------------------------- ### Tests code retriever------------------------------------------------------------------- importer = zipfile.ZipFile(model_path) feat_name = filter(lambda t: t.endswith('.feature'), tests_files)[0] featInfo = importer.getinfo(feat_name) feat_code = importer.read(featInfo) steps_name = filter(lambda t: t.endswith('steps.py'), tests_files)[0] stepsInfo = importer.getinfo(steps_name) steps_code = importer.read(stepsInfo) if not global_env: environment_name = filter(lambda t: t.endswith('environment.py'), tests_files)[0] envInfo = importer.getinfo(environment_name) env_code = importer.read(envInfo) else: environment_name = os.path.join(gettempdir(), 'environment.py') with open(environment_name, 'r+') as global_env_code: env_code = global_env_code.read() importer.close() ### --------------------------------------------------------------------------------------- ### AMD code retriever--------------------------------------------------------------------- importer = zipfile.ZipFile(model_path) # amd_name = filter(lambda t: t.endswith('%s.py'%name), importer.namelist())[0] amd_name = ZipManager.getPythonModelFileName(model_path) amd_info = importer.getinfo(amd_name) amd_code = importer.read(amd_info) ### --------------------------------------------------------------------------------------- ### Tests files creation in temporary directory-------------------------------------------- tempFeature = os.path.join(feat_dir, "%s.feature" % name) tempEnv = os.path.join(feat_dir, "environment.py") tempSteps = os.path.join(steps_dir, "%s_steps.py"%name) tempAMD = os.path.join(amd_dir, amd_name) with open(tempFeature, 'w+') as feat: feat.write(feat_code) with open(tempSteps, 'w+') as steps: steps.write(steps_code) with open(tempEnv, 'w+') as env: env.write(env_code) with open(tempAMD, 'w+') as AMD: AMD.write(amd_code) ### --------------------------------------------------------------------------------------- return tempFeature, tempSteps, tempEnv
def GetTempTests(self, global_env=None): if not global_env: global_env = False ### Useful vars definition----------------------------------------------------------------- model_path = os.path.dirname(self.python_path) basename = os.path.basename(self.python_path) name = os.path.splitext(basename)[0] tests_files = ZipManager.Zip.GetTests(model_path) ### --------------------------------------------------------------------------------------- ### Folder hierarchy construction---------------------------------------------------------- feat_dir = os.path.join(gettempdir(), "features") steps_dir = os.path.join(feat_dir, "steps") if not os.path.exists(feat_dir): os.mkdir(feat_dir) if not os.path.exists(steps_dir): os.mkdir(steps_dir) ### --------------------------------------------------------------------------------------- ### AMD unzip------------------------------------------------------------------------------ amd_dir = os.path.join(gettempdir(), "AtomicDEVS") if not os.path.exists(amd_dir): os.mkdir(amd_dir) ### --------------------------------------------------------------------------------------- ### Tests code retriever------------------------------------------------------------------- importer = zipfile.ZipFile(model_path) feat_name = filter(lambda t: t.endswith('.feature'), tests_files)[0] featInfo = importer.getinfo(feat_name) feat_code = importer.read(featInfo) steps_name = filter(lambda t: t.endswith('steps.py'), tests_files)[0] stepsInfo = importer.getinfo(steps_name) steps_code = importer.read(stepsInfo) if not global_env: environment_name = filter(lambda t: t.endswith('environment.py'), tests_files)[0] envInfo = importer.getinfo(environment_name) env_code = importer.read(envInfo) else: environment_name = os.path.join(gettempdir(), 'environment.py') with open(environment_name, 'r+') as global_env_code: env_code = global_env_code.read() importer.close() ### --------------------------------------------------------------------------------------- ### AMD code retriever--------------------------------------------------------------------- importer = zipfile.ZipFile(model_path) # amd_name = filter(lambda t: t.endswith('%s.py'%name), importer.namelist())[0] amd_name = ZipManager.getPythonModelFileName(model_path) amd_info = importer.getinfo(amd_name) amd_code = importer.read(amd_info) ### --------------------------------------------------------------------------------------- ### Tests files creation in temporary directory-------------------------------------------- tempFeature = os.path.join(feat_dir, "%s.feature" % name) tempEnv = os.path.join(feat_dir, "environment.py") tempSteps = os.path.join(steps_dir, "%s_steps.py" % name) tempAMD = os.path.join(amd_dir, amd_name) with open(tempFeature, 'w+') as feat: feat.write(feat_code) with open(tempSteps, 'w+') as steps: steps.write(steps_code) with open(tempEnv, 'w+') as env: env.write(env_code) with open(tempAMD, 'w+') as AMD: AMD.write(amd_code) ### --------------------------------------------------------------------------------------- return tempFeature, tempSteps, tempEnv