def process_script(self): locals().update(self.make_new_locals()) locals().update({'vectorize': vectorize}) try: if hasattr(self, 'inject_params'): if self.inject_params: parameters = eval("[" + ", ".join([i.name for i in self.inputs]) + "]") exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) socket_info = self.node_dict[hash(self)]['sockets'] __fnamex = socket_info.get('drawfunc_name') if __fnamex: socket_info['drawfunc'] = locals()[__fnamex] set_autocolor(self, True, READY_COLOR) except: print("Unexpected error:", sys.exc_info()[0]) exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] print('on line: ', lineno) show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=2, file=sys.stdout) set_autocolor(self, True, FAIL_COLOR) else: return
def process_script(self): locals().update(self.make_new_locals()) locals().update({'vectorize': vectorize}) try: if hasattr(self, 'inject_params'): if self.inject_params: parameters = eval("[" + ", ".join([i.name for i in self.inputs]) + "]") exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) socket_info = self.node_dict[hash(self)]['sockets'] __fnamex = socket_info.get('drawfunc_name') if __fnamex: socket_info['drawfunc'] = locals()[__fnamex] set_autocolor(self, True, READY_COLOR) except: print("Unexpected error:", sys.exc_info()[0]) exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] print('on line: ', lineno) show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=2, file=sys.stdout) set_autocolor(self, True, FAIL_COLOR) else: return
def process_script(self): __local__dict__ = self.make_new_locals() locals().update(__local__dict__) locals().update({ 'vectorize': vectorize, 'bpy': bpy, 'np': np, 'ddir': ddir, 'sv_njit': sv_njit, 'sv_njit_clear': sv_njit_clear, 'bmesh_from_pydata': bmesh_from_pydata, 'pydata_from_bmesh': pydata_from_bmesh }) for output in self.outputs: locals().update({output.name: []}) try: socket_info = self.node_dict[hash(self)]['sockets'] # inject once! if not self.injected_state: self.inject_state(locals()) self.inject_draw_buttons(locals()) else: locals().update(socket_info['setup_state']) if self.inject_params: locals().update({ 'parameters': [__local__dict__.get(s.name) for s in self.inputs] }) if socket_info['inputs_required']: # if not fully connected do not raise. # should inform the user that the execution was halted because not # enough input was provided for the script to do anything useful. if not self.socket_requirements_met(socket_info): return exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) set_autocolor(self, True, READY_COLOR) except Exception as err: self.info(f"Unexpected error: {sys.exc_info()[0]}") exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] self.info(f'on line: {lineno}') show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=6, file=sys.stdout) if self.snlite_raise_exception: raise
def process_script(self): __local__dict__ = self.make_new_locals() locals().update(__local__dict__) locals().update(self.snlite_aliases) for output in self.outputs: locals().update({output.name: []}) try: socket_info = self.current_node_dict['sockets'] # inject once! if not self.injected_state: self.inject_state(locals()) self.inject_function(locals(), func_name="ui", end="pass") self.inject_function(locals(), func_name="sv_internal_links") else: locals().update(socket_info['setup_state']) if self.inject_params: locals().update({ 'parameters': [__local__dict__.get(s.name) for s in self.inputs] }) if socket_info['inputs_required']: # if not fully connected do not raise. # should inform the user that the execution was halted because not # enough input was provided for the script to do anything useful. if not self.socket_requirements_met(socket_info): return exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) set_autocolor(self, True, READY_COLOR) except Exception as err: self.info(f"Unexpected error: {sys.exc_info()[0]}") exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] self.info(f'on line: {lineno}') show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=6, file=sys.stdout) if self.snlite_raise_exception: raise
def process_script(self): __local__dict__ = self.make_new_locals() locals().update(__local__dict__) locals().update({ 'vectorize': vectorize, 'bpy': bpy, 'np': np, 'ddir': ddir, 'bmesh_from_pydata': bmesh_from_pydata, 'pydata_from_bmesh': pydata_from_bmesh }) for output in self.outputs: locals().update({output.name: []}) try: socket_info = self.node_dict[hash(self)]['sockets'] # inject once! if not self.injected_state: self.inject_state(locals()) self.inject_draw_buttons(locals()) else: locals().update(socket_info['setup_state']) if self.inject_params: locals().update({ 'parameters': [__local__dict__.get(s.name) for s in self.inputs] }) exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) set_autocolor(self, True, READY_COLOR) except Exception as err: print("Unexpected error:", sys.exc_info()[0]) exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] print('on line: ', lineno) show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=4, file=sys.stdout) if hasattr( self, "snlite_raise_exception") and self.snlite_raise_exception: raise # SNLITE_EXCEPTION(sys.exc_info()[2]) from err
def process_script(self): __local__dict__ = self.make_new_locals() locals().update(__local__dict__) locals().update({ 'vectorize': vectorize, 'bpy': bpy, 'ddir': ddir, 'bmesh_from_pydata': bmesh_from_pydata, 'pydata_from_bmesh': pydata_from_bmesh }) for output in self.outputs: locals().update({output.name: []}) try: socket_info = self.node_dict[hash(self)]['sockets'] # inject once! if not self.injected_state: self.inject_state(locals()) self.inject_draw_buttons(locals()) else: locals().update(socket_info['setup_state']) if self.inject_params: locals().update({'parameters': [__local__dict__.get(s.name) for s in self.inputs]}) exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) set_autocolor(self, True, READY_COLOR) except: print("Unexpected error:", sys.exc_info()[0]) exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] print('on line: ', lineno) show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=2, file=sys.stdout) set_autocolor(self, True, FAIL_COLOR) else: return
def process_script(self): __local__dict__ = self.make_new_locals() locals().update(__local__dict__) locals().update({'vectorize': vectorize}) locals().update({'bpy': bpy}) for output in self.outputs: locals().update({output.name: []}) try: socket_info = self.node_dict[hash(self)]['sockets'] # inject once! if not self.injected_state: self.inject_state(locals()) self.inject_draw_buttons(locals()) else: locals().update(socket_info['setup_state']) if self.inject_params: locals().update({ 'parameters': [__local__dict__.get(s.name) for s in self.inputs] }) exec(self.script_str, locals(), locals()) for idx, _socket in enumerate(self.outputs): vals = locals()[_socket.name] self.outputs[idx].sv_set(vals) set_autocolor(self, True, READY_COLOR) except: print("Unexpected error:", sys.exc_info()[0]) exc_type, exc_value, exc_traceback = sys.exc_info() lineno = traceback.extract_tb(exc_traceback)[-1][1] print('on line: ', lineno) show = traceback.print_exception show(exc_type, exc_value, exc_traceback, limit=2, file=sys.stdout) set_autocolor(self, True, FAIL_COLOR) else: return