def run_viz(port=None, line=None) -> None: """ Line magic function to start kedro viz. It calls a kedro viz in a process and display it in the Jupyter notebook environment. Args: port: TCP port that viz will listen to. Defaults to 4141. line: line required by line magic interface. """ if not port: # Default argument doesn't work in Jupyter line magic port = 4141 if port in _VIZ_PROCESSES: _VIZ_PROCESSES[port].terminate() viz_process = multiprocessing.Process(target=_call_viz, daemon=True, kwargs={"port": port}) viz_process.start() _VIZ_PROCESSES[port] = viz_process wait_for(func=_check_viz_up, port=port) wrapper = """ <html lang="en"><head></head><body style="width:100; height:100;"> <iframe src="http://127.0.0.1:{}/" height=500 width="100%"></iframe> </body></html>""".format(port) display(HTML(wrapper))
def check_kedroviz_up(context): """Check that kedro-viz is up and responding to requests""" wait_for( _check_kedroviz_running, expected_result=None, print_error=False, context=context, )
def run_viz(port=None, line=None, local_ns=None) -> None: """ Line magic function to start kedro viz. It calls a kedro viz in a process and display it in the Jupyter notebook environment. Args: port: TCP port that viz will listen to. Defaults to 4141. line: line required by line magic interface. local_ns: Local namespace with local variables of the scope where the line magic is invoked. For more details, please visit: https://ipython.readthedocs.io/en/stable/config/custommagics.html """ port = port or 4141 # Default argument doesn't work in Jupyter line magic. port = _allocate_port(start_at=port) if port in _VIZ_PROCESSES and _VIZ_PROCESSES[port].is_alive(): _VIZ_PROCESSES[port].terminate() if local_ns is not None and "project_path" in local_ns: target = partial(_call_viz, project_path=local_ns["project_path"]) else: target = _call_viz viz_process = multiprocessing.Process( target=target, daemon=True, kwargs={"port": port} ) viz_process.start() _VIZ_PROCESSES[port] = viz_process wait_for(func=_check_viz_up, port=port) wrapper = """ <html lang="en"><head></head><body style="width:100; height:100;"> <iframe src="http://127.0.0.1:{}/" height=500 width="100%"></iframe> </body></html>""".format( port ) display(HTML(wrapper))