From 40b4a4effd9eb990617a1fe03889cf7b90d7c5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Wed, 8 Nov 2023 11:58:16 +0100 Subject: [PATCH 1/7] More flexible pinning of Jupyter optional dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See #2276. Signed-off-by: Juan Luis Cano Rodríguez --- .../{{ cookiecutter.repo_name }}/requirements.txt | 6 +----- .../project/{{ cookiecutter.repo_name }}/requirements.txt | 7 +------ 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt b/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt index baa2f190d4..4dea110aaf 100644 --- a/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt +++ b/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt @@ -1,9 +1,5 @@ black~=22.0 -ipython>=7.31.1, <8.0; python_version < '3.8' -ipython~=8.10; python_version >= '3.8' -jupyter~=1.0 -jupyterlab_server>=2.11.1, <2.16.0 -jupyterlab~=3.0, <3.6.0 +jupyterlab>=3.0 kedro~={{ cookiecutter.kedro_version}} kedro-datasets[pandas.CSVDataset] kedro-telemetry>=0.3.1 diff --git a/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt b/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt index 842ebd8abd..a1e806354a 100644 --- a/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt +++ b/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt @@ -1,13 +1,8 @@ black~=22.0 -ipython~=8.10; python_version >= '3.8' -jupyter~=1.0 -jupyterlab_server>=2.11.1, <2.16.0 -jupyterlab~=3.0, <3.6.0 +jupyterlab>=3.0 kedro~={{ cookiecutter.kedro_version }} kedro-telemetry>=0.3.1 pytest-cov~=3.0 pytest-mock>=1.7.1, <2.0 pytest~=7.2 ruff~=0.0.290 -# Pin problematic traitlets release - https://github.com/jupyter/notebook/issues/7048 -traitlets<5.10.0 From 22cdedb2823a0b85d63404f61278c3bcd73315b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Wed, 8 Nov 2023 12:01:17 +0100 Subject: [PATCH 2/7] Add Jupyter changes to release notes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- RELEASE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE.md b/RELEASE.md index bbcbd98836..901100e061 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -4,6 +4,7 @@ ## Bug fixes and other changes * Removed example pipeline requirements when examples are not selected in `tools`. +* Allowed modern versions of JupyterLab and Jupyter Notebooks. ## Breaking changes to the API * Added logging about not using async mode in `SequentiallRunner` and `ParallelRunner`. From 8fbeb3279c712cf100300b167394bfe60c514c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Wed, 8 Nov 2023 15:07:00 +0100 Subject: [PATCH 3/7] Add future note about problematic test code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- features/steps/cli_steps.py | 1 + 1 file changed, 1 insertion(+) diff --git a/features/steps/cli_steps.py b/features/steps/cli_steps.py index 123f52def6..bfab633914 100644 --- a/features/steps/cli_steps.py +++ b/features/steps/cli_steps.py @@ -391,6 +391,7 @@ def exec_notebook(context, command): @then('I wait for the jupyter webserver to run for up to "{timeout:d}" seconds') def wait_for_notebook_to_run(context, timeout): timeout_start = time() + # FIXME: Will continue iterating after the process has returned while time() < timeout_start + timeout: stdout = context.result.stdout.readline() if "http://127.0.0.1:" in stdout: From 0ea2f9dc0087f393d383843589489dbc6c8396c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Wed, 8 Nov 2023 15:07:16 +0100 Subject: [PATCH 4/7] Restore notebook dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- .../test_starter/{{ cookiecutter.repo_name }}/requirements.txt | 1 + .../project/{{ cookiecutter.repo_name }}/requirements.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt b/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt index 4dea110aaf..8457208fff 100644 --- a/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt +++ b/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt @@ -1,5 +1,6 @@ black~=22.0 jupyterlab>=3.0 +notebook kedro~={{ cookiecutter.kedro_version}} kedro-datasets[pandas.CSVDataset] kedro-telemetry>=0.3.1 diff --git a/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt b/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt index a1e806354a..b032894b81 100644 --- a/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt +++ b/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt @@ -1,5 +1,6 @@ black~=22.0 jupyterlab>=3.0 +notebook kedro~={{ cookiecutter.kedro_version }} kedro-telemetry>=0.3.1 pytest-cov~=3.0 From e2353abd39106dc2972cfd7024944cf93f195ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Thu, 9 Nov 2023 23:43:21 +0100 Subject: [PATCH 5/7] Restore ipython lower bound MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- .../test_starter/{{ cookiecutter.repo_name }}/requirements.txt | 1 + .../project/{{ cookiecutter.repo_name }}/requirements.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt b/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt index 8457208fff..7904db0fe8 100644 --- a/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt +++ b/features/steps/test_starter/{{ cookiecutter.repo_name }}/requirements.txt @@ -1,4 +1,5 @@ black~=22.0 +ipython>=8.10 jupyterlab>=3.0 notebook kedro~={{ cookiecutter.kedro_version}} diff --git a/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt b/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt index b032894b81..ce407f7b6d 100644 --- a/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt +++ b/kedro/templates/project/{{ cookiecutter.repo_name }}/requirements.txt @@ -1,4 +1,5 @@ black~=22.0 +ipython>=8.10 jupyterlab>=3.0 notebook kedro~={{ cookiecutter.kedro_version }} From 0fdb81cb7e3df68bc0af908555c38158e621bf46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Mon, 11 Dec 2023 15:13:52 +0100 Subject: [PATCH 6/7] Update Jupyter liveness test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- features/steps/cli_steps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/steps/cli_steps.py b/features/steps/cli_steps.py index bfab633914..362da9be2c 100644 --- a/features/steps/cli_steps.py +++ b/features/steps/cli_steps.py @@ -662,7 +662,7 @@ def check_jupyter_nb_proc_on_port(context: behave.runner.Context, port: int): """ url = f"http://localhost:{port}" try: - _check_service_up(context, url, "Jupyter Notebook") + _check_service_up(context, url, "Jupyter Server") finally: context.result.terminate() From 300c27bc09cb99938e62e2fa7f83957effebc910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Luis=20Cano=20Rodr=C3=ADguez?= Date: Mon, 11 Dec 2023 15:44:41 +0100 Subject: [PATCH 7/7] Add small pause after server aliveness check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Luis Cano Rodríguez --- features/steps/cli_steps.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/features/steps/cli_steps.py b/features/steps/cli_steps.py index 362da9be2c..d3d4f9afd1 100644 --- a/features/steps/cli_steps.py +++ b/features/steps/cli_steps.py @@ -4,7 +4,7 @@ import shutil import textwrap from pathlib import Path -from time import time +from time import sleep, time import behave import requests @@ -395,6 +395,8 @@ def wait_for_notebook_to_run(context, timeout): while time() < timeout_start + timeout: stdout = context.result.stdout.readline() if "http://127.0.0.1:" in stdout: + # Take a breath, and declare success + sleep(1) break if time() >= timeout_start + timeout: