def handle_exception(type, value, tb): # Print stack trace. info = traceback.format_exception(type, value, tb) logging.error(''.join(info)) # Get local variables. while True: if not tb.tb_next: break next_frame = traceback.extract_tb(tb)[1] if next_frame.filename.startswith('/'): # not our code break tb = tb.tb_next local_vars = tb.tb_frame.f_locals # Start kernel. import os pid = os.fork() if pid == 0: open(f"{os.environ['HOME']}/.pynt", 'a').close() import IPython IPython.start_kernel(user_ns=local_vars) os.waitpid(pid, 0)
"""Return the object referred to by `obj_id`.""" return _managed_objects[obj_id] def remove_object(obj_id): """Return the object referred to by `obj_id` from the registry.""" del _managed_objects[obj_id] ################################################################################ if __name__ == '__main__': assert HAVE_MPI if rank0: if len(sys.argv) >= 2: filename = sys.argv[1] sys.argv = sys.argv[:1] + sys.argv[2:] exec(compile(open(filename, 'rt').read(), filename, 'exec')) import pymor.tools.mpi # this is different from __main__ pymor.tools.mpi.quit() # change global state in the right module else: try: import IPython IPython.start_kernel() # only start a kernel since mpirun messes up the terminal except ImportError: import code code.interact() else: event_loop()
def console(self, local_vars): import IPython if self.kernel: IPython.start_kernel(argv=[], user_ns=local_vars) else: IPython.start_ipython(argv=[], user_ns=local_vars)
import os import IPython EXISTING_KERNEL = True open(f'{os.environ["HOME"]}/.pynt', 'a').close() IPython.start_kernel(user_ns={**locals(), **globals(), **vars()})
def run(self): self.embed = IPython.start_kernel()
"""Return the object referred to by `obj_id`.""" return _managed_objects[obj_id] def remove_object(obj_id): """Remove the object referred to by `obj_id` from the registry.""" del _managed_objects[obj_id] ################################################################################ if __name__ == '__main__': assert config.HAVE_MPI if rank0: if len(sys.argv) >= 2: filename = sys.argv[1] sys.argv = sys.argv[:1] + sys.argv[2:] exec(compile(open(filename, 'rt').read(), filename, 'exec')) import pymor.tools.mpi # this is different from __main__ pymor.tools.mpi.quit() # change global state in the right module else: try: import IPython IPython.start_kernel( ) # only start a kernel since mpirun messes up the terminal except ImportError: import code code.interact() else: event_loop()
def run(self): self.embed = IPython.start_kernel()