Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def run(self):
self.started.emit(self.name) # notify the caller
try:
result = self.func(*self.args)
except Exception:
if self.logger is not None:
stm32pio.util.log_current_exception(self.logger)
result = -1
if result is None or (type(result) == int and result == 0):
success = True
else:
success = False
self.finished.emit(self.name, success) # notify the caller
if not success:
# Pause the thread and, therefore, the parent QThreadPool queue so the caller can decide whether we should
# proceed or stop. This should not cause any problems as we've already perform all necessary tasks and this
# just delaying the QRunnable removal from the pool
time.sleep(1.0)
def init_project(self, *args, **kwargs) -> None:
"""
Initialize the underlying Stm32pio project.
Args:
*args: positional arguments of the Stm32pio constructor
**kwargs: keyword arguments of the Stm32pio constructor
"""
try:
self.project = stm32pio.lib.Stm32pio(*args, **kwargs)
except Exception:
stm32pio.util.log_current_exception(self.logger)
if len(args):
self._name = args[0] # use a project path string (as it should be a first argument) as a name
else:
self._name = 'Undefined'
self._state = { 'INIT_ERROR': True } # pseudo-stage
self._current_stage = 'Initializing error'
else:
# Successful initialization. These values should not be used anymore but we "reset" them anyway
self._name = 'Project'
self._state = {}
self._current_stage = 'Initialized'
finally:
# Register some kind of the deconstruction handler
self._finalizer = weakref.finalize(self, self.at_exit, self.workers_pool, self.logging_worker,
self.name if self.project is None else str(self.project))
self.qml_ready.wait() # wait for the GUI to initialize (which one is earlier, actually, back or front)
'parent': projects_model
})
# At the end, append (or jump to) a CLI-provided project, if there is one
if args is not None:
list_item_kwargs = {
'from_startup': True,
'parent': projects_model
}
if args.board:
list_item_kwargs['project_kwargs'] = { 'parameters': { 'project': { 'board': args.board } } } # pizdec konechno...
projects_model.addListItem(str(pathlib.Path(args.path)), go_to_this=True,
list_item_kwargs=list_item_kwargs)
projects_model.saveInSettings()
except Exception:
stm32pio.util.log_current_exception(module_logger)
success = False
main_window.backendLoaded.emit(success) # inform the GUI
if args.quiet:
project.clean()
else:
while True:
reply = input(f'WARNING: this operation will delete ALL content of the directory "{project.path}" '
f'except the "{pathlib.Path(project.config.get("project", "ioc_file")).name}" file. '
'Are you sure? (y/n) ')
if reply.lower() in ['y', 'yes', 'true', '1']:
project.clean()
break
elif reply.lower() in ['n', 'no', 'false', '0']:
break
# Library is designed to throw the exception in bad cases so we catch here globally
except Exception:
stm32pio.util.log_current_exception(logger)
return -1
return 0