From 29adc5ee5fff6f90fb6ab9bdc22491201b6e7609 Mon Sep 17 00:00:00 2001 From: Konrad Sikorski Date: Fri, 16 Dec 2022 10:58:34 +0100 Subject: [PATCH] Kedro CLI startup time made shorter (#1196) - server.py: Moved `DEFAULT_HOST` and `DEFAULT_PORT` to `constants.py` - launchers/cli.py: Moved `from kedro_viz.server ...` statement to viz function - modified tests so they follow new code structure Signed-off-by: Konrad Sikorski Signed-off-by: Konrad Sikorski --- RELEASE.md | 1 + package/kedro_viz/constants.py | 3 +++ package/kedro_viz/launchers/cli.py | 5 ++++- package/kedro_viz/server.py | 3 +-- package/tests/test_launchers/test_cli.py | 11 ++++++----- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index 273e8db60d..408e98bd68 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -12,6 +12,7 @@ Please follow the established format: - Allow users to hide modular pipelines on the flowchart. (#1046) - Create URL parameters for each element/section in the flowchart. (#1138) +- Improve CLI loading time. (#1196) ## Bug fixes and other changes diff --git a/package/kedro_viz/constants.py b/package/kedro_viz/constants.py index 40832da3b8..b225702968 100644 --- a/package/kedro_viz/constants.py +++ b/package/kedro_viz/constants.py @@ -5,3 +5,6 @@ DEFAULT_REGISTERED_PIPELINE_ID = "__default__" KEDRO_VERSION = VersionInfo.parse(kedro.__version__) ROOT_MODULAR_PIPELINE_ID = "__root__" + +DEFAULT_HOST = "127.0.0.1" +DEFAULT_PORT = 4141 diff --git a/package/kedro_viz/launchers/cli.py b/package/kedro_viz/launchers/cli.py index de7594c0f9..d4aac428b3 100644 --- a/package/kedro_viz/launchers/cli.py +++ b/package/kedro_viz/launchers/cli.py @@ -11,8 +11,8 @@ from watchgod import RegExpWatcher, run_process from kedro_viz import __version__ +from kedro_viz.constants import DEFAULT_HOST, DEFAULT_PORT from kedro_viz.integrations.pypi import get_latest_version, is_running_outdated_version -from kedro_viz.server import DEFAULT_HOST, DEFAULT_PORT, is_localhost, run_server @click.group(name="Kedro-Viz") @@ -80,8 +80,11 @@ def commands(): # pylint: disable=missing-function-docstring help=PARAMS_ARG_HELP, callback=_split_params, ) +# pylint: disable=import-outside-toplevel, too-many-locals def viz(host, port, browser, load_file, save_file, pipeline, env, autoreload, params): """Visualise a Kedro pipeline using Kedro viz.""" + from kedro_viz.server import is_localhost, run_server + installed_version = VersionInfo.parse(__version__) latest_version = get_latest_version() diff --git a/package/kedro_viz/server.py b/package/kedro_viz/server.py index 4db1651f54..453027d3d6 100644 --- a/package/kedro_viz/server.py +++ b/package/kedro_viz/server.py @@ -11,13 +11,12 @@ from kedro_viz.api import apps from kedro_viz.api.rest.responses import EnhancedORJSONResponse, get_default_response +from kedro_viz.constants import DEFAULT_HOST, DEFAULT_PORT from kedro_viz.data_access import DataAccessManager, data_access_manager from kedro_viz.database import create_db_engine from kedro_viz.integrations.kedro import data_loader as kedro_data_loader from kedro_viz.models.experiment_tracking import Base -DEFAULT_HOST = "127.0.0.1" -DEFAULT_PORT = 4141 DEV_PORT = 4142 diff --git a/package/tests/test_launchers/test_cli.py b/package/tests/test_launchers/test_cli.py index 462898ad6a..acc3dd7adf 100644 --- a/package/tests/test_launchers/test_cli.py +++ b/package/tests/test_launchers/test_cli.py @@ -6,6 +6,7 @@ from kedro_viz import __version__ from kedro_viz.launchers import cli +from kedro_viz.server import run_server @pytest.mark.parametrize( @@ -57,7 +58,7 @@ ], ) def test_kedro_viz_command_run_server(command_options, run_server_args, mocker): - run_server = mocker.patch("kedro_viz.launchers.cli.run_server") + run_server = mocker.patch("kedro_viz.server.run_server") runner = CliRunner() with runner.isolated_filesystem(): runner.invoke(cli.commands, command_options) @@ -74,7 +75,7 @@ def test_kedro_viz_command_should_log_outdated_version(mocker, mock_http_respons ) mock_click_echo = mocker.patch("click.echo") - mocker.patch("kedro_viz.launchers.cli.run_server") + mocker.patch("kedro_viz.server.run_server") runner = CliRunner() with runner.isolated_filesystem(): runner.invoke(cli.commands, ["viz"]) @@ -96,7 +97,7 @@ def test_kedro_viz_command_should_not_log_latest_version(mocker, mock_http_respo ) mock_click_echo = mocker.patch("click.echo") - mocker.patch("kedro_viz.launchers.cli.run_server") + mocker.patch("kedro_viz.server.run_server") runner = CliRunner() with runner.isolated_filesystem(): runner.invoke(cli.commands, ["viz"]) @@ -109,7 +110,7 @@ def test_kedro_viz_command_should_not_log_if_pypi_is_down(mocker, mock_http_resp requests_get.side_effect = requests.exceptions.RequestException("PyPI is down") mock_click_echo = mocker.patch("click.echo") - mocker.patch("kedro_viz.launchers.cli.run_server") + mocker.patch("kedro_viz.server.run_server") runner = CliRunner() with runner.isolated_filesystem(): runner.invoke(cli.commands, ["viz"]) @@ -128,7 +129,7 @@ def test_kedro_viz_command_with_autoreload(mocker): run_process.assert_called_once_with( path=mock_project_path, - target=cli.run_server, + target=run_server, kwargs={ "host": "127.0.0.1", "port": 4141,