From cd2c5891826e0646a386a3740458c9878cd16df4 Mon Sep 17 00:00:00 2001 From: Marie Date: Thu, 2 Oct 2025 17:58:10 +0200 Subject: [PATCH 01/10] chore: alleviate datasets downloads in test --- skrub/tests/test_config.py | 68 ++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 04018006f..7606499ad 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -1,16 +1,31 @@ +import pandas as pd import pytest import skrub from skrub import TableReport, config_context, get_config, set_config from skrub._config import _parse_env_bool from skrub._data_ops._evaluation import evaluate -from skrub.datasets import fetch_employee_salaries def _use_table_report(obj): return "SkrubTableReport" in obj._repr_html_() +@pytest.fixture +def simple_df(): + return pd.DataFrame( + { + "A": [1, 2, 3, 4, 5], + "B": ["a", "b", "a", "b", "c"], + } + ) + + +@pytest.fixture +def simple_series(): + return pd.Series([1, 2, 3, 4, 5], name="A") + + def test_config_context(): assert get_config() == { "use_table_report": False, @@ -28,38 +43,36 @@ def test_config_context(): assert get_config()["use_table_report"] is False -def test_use_table_report_data_ops(): - X = skrub.X(fetch_employee_salaries().X) - +def test_use_table_report_data_ops(simple_df): with config_context(use_table_report_data_ops=True): - assert _use_table_report(X) + assert _use_table_report(simple_df) with config_context(use_table_report_data_ops=False): - assert not _use_table_report(X) + assert not _use_table_report(simple_df) -def test_use_table_report(): - X = fetch_employee_salaries().X - assert not _use_table_report(X) +def test_use_table_report(simple_df): + assert not _use_table_report(simple_df) with config_context(use_table_report=True): - assert _use_table_report(X) + assert _use_table_report(simple_df) with config_context(use_table_report=False): - assert not _use_table_report(X) + assert not _use_table_report(simple_df) -def test_max_plot_columns(): - X = fetch_employee_salaries().X - report = TableReport(X) +def test_max_plot_columns(simple_df): + report = TableReport(simple_df) assert report.max_association_columns == 30 assert report.max_plot_columns == 30 # Set default to 1 with config_context(max_plot_columns=1): - report = TableReport(X) + report = TableReport(simple_df) assert report.max_association_columns == 30 assert report.max_plot_columns == 1 # Argument takes precedence over default configuration - report = TableReport(X, max_association_columns="all", max_plot_columns="all") + report = TableReport( + simple_df, max_association_columns="all", max_plot_columns="all" + ) assert report.max_association_columns == "all" assert report.max_plot_columns == "all" @@ -67,15 +80,14 @@ def test_max_plot_columns(): # repr_html. with config_context(use_table_report=True): with config_context(max_plot_columns=3): - "Plotting was skipped" in X._repr_html_() + "Plotting was skipped" in simple_df._repr_html_() -def test_enable_subsampling(): - X = fetch_employee_salaries().X - dataop = skrub.X(X) +def test_enable_subsampling(simple_df): + dataop = skrub.X(simple_df) # No subsampling by default with fit_transform mode - assert dataop.skb.subsample(n=3).skb.eval().shape[0] == X.shape[0] + assert dataop.skb.subsample(n=3).skb.eval().shape[0] == simple_df.shape[0] assert dataop.skb.subsample(n=3).skb.eval(keep_subsampling=True).shape[0] == 3 # Force subsampling during fit_transform @@ -87,24 +99,23 @@ def test_enable_subsampling(): with config_context(enable_subsampling="disable"): assert ( - evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0] == X.shape[0] + evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0] + == simple_df.shape[0] ) with config_context(enable_subsampling="default"): assert evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0] == 3 -def test_float_precision(): - y = fetch_employee_salaries().y - +def test_float_precision(simple_series): # Default config: float_precision set to 3 - report = TableReport(y) + report = TableReport(simple_series) mean = f"{report._summary['columns'][0]['mean']:#.3g}" html = report._repr_html_() assert mean in html # Float precision set to 2 with config_context(float_precision=2): - report_2 = TableReport(y) + report_2 = TableReport(simple_series) mean_2 = f"{report_2._summary['columns'][0]['mean']:#.2g}" html_2 = report_2._repr_html_() assert mean_2 in html_2 @@ -132,8 +143,7 @@ def test_error(params): def test_subsampling_seed(): - X = fetch_employee_salaries().X - data_op = skrub.X(X) + data_op = skrub.X(simple_df) with config_context(subsampling_seed=0): index = evaluate( From 4ab6023783cf763d44a36ce0fd829ab3d7fb7088 Mon Sep 17 00:00:00 2001 From: Marie Date: Thu, 2 Oct 2025 18:02:33 +0200 Subject: [PATCH 02/10] revert too quick --- skrub/tests/test_config.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 7606499ad..65d5b69ad 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -44,10 +44,11 @@ def test_config_context(): def test_use_table_report_data_ops(simple_df): + X = skrub.X(simple_df) with config_context(use_table_report_data_ops=True): - assert _use_table_report(simple_df) + assert _use_table_report(X) with config_context(use_table_report_data_ops=False): - assert not _use_table_report(simple_df) + assert not _use_table_report(X) def test_use_table_report(simple_df): From 2851c9d93c9beb0ca983bc4575b198aebeeb4b8b Mon Sep 17 00:00:00 2001 From: Marie Date: Thu, 2 Oct 2025 18:04:03 +0200 Subject: [PATCH 03/10] revert too quick --- skrub/tests/test_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 65d5b69ad..2176b22db 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -143,7 +143,7 @@ def test_error(params): set_config(**params) -def test_subsampling_seed(): +def test_subsampling_seed(simple_df): data_op = skrub.X(simple_df) with config_context(subsampling_seed=0): From 4256eb89f5218caca622910299a3583f0d3dd79f Mon Sep 17 00:00:00 2001 From: Marie Date: Thu, 2 Oct 2025 19:29:14 +0200 Subject: [PATCH 04/10] alleviate input test_error_input_type --- skrub/_reporting/tests/test_table_report.py | 23 ++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/skrub/_reporting/tests/test_table_report.py b/skrub/_reporting/tests/test_table_report.py index f57b9335a..e542e178c 100644 --- a/skrub/_reporting/tests/test_table_report.py +++ b/skrub/_reporting/tests/test_table_report.py @@ -6,14 +6,31 @@ from pathlib import Path import numpy as np +import pandas as pd import pytest +from sklearn.utils import Bunch -from skrub import TableReport, ToDatetime, datasets +from skrub import TableReport, ToDatetime from skrub import _dataframe as sbd from skrub._reporting._sample_table import make_table from skrub.conftest import polars_installed_without_pyarrow +@pytest.fixture +def simple_df(): + return pd.DataFrame( + { + "A": [1, 2, 3, 4, 5], + "B": ["a", "b", "a", "b", "c"], + } + ) + + +@pytest.fixture +def simple_series(): + return pd.Series([1, 2, 3, 4, 5], name="A") + + def get_report_id(html): return re.search(r' Date: Tue, 7 Oct 2025 10:59:50 +0200 Subject: [PATCH 05/10] Update skrub/tests/test_config.py Co-authored-by: Riccardo Cappuzzo <7548232+rcap107@users.noreply.github.com> --- skrub/tests/test_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 2176b22db..c29bc4460 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -12,8 +12,8 @@ def _use_table_report(obj): @pytest.fixture -def simple_df(): - return pd.DataFrame( +def simple_df(df_module): + return df_module.make_dataframe( { "A": [1, 2, 3, 4, 5], "B": ["a", "b", "a", "b", "c"], From e8b23149c76f749597796dfe203d472406058716 Mon Sep 17 00:00:00 2001 From: Marie Sacksick <79304610+MarieSacksick@users.noreply.github.com> Date: Tue, 7 Oct 2025 10:59:58 +0200 Subject: [PATCH 06/10] Update skrub/tests/test_config.py Co-authored-by: Riccardo Cappuzzo <7548232+rcap107@users.noreply.github.com> --- skrub/tests/test_config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index c29bc4460..5c62103ab 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -22,8 +22,8 @@ def simple_df(df_module): @pytest.fixture -def simple_series(): - return pd.Series([1, 2, 3, 4, 5], name="A") +def simple_series(df_module): + return df_module.make_column(name="A", values=[1, 2, 3, 4, 5]) def test_config_context(): From a2b4506fac0b2b50e73b5bce3b4cc9c4787e9472 Mon Sep 17 00:00:00 2001 From: Marie Date: Tue, 7 Oct 2025 14:17:21 +0200 Subject: [PATCH 07/10] from pandas to df module in test table report --- skrub/_reporting/tests/test_table_report.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/skrub/_reporting/tests/test_table_report.py b/skrub/_reporting/tests/test_table_report.py index e542e178c..6268c7e71 100644 --- a/skrub/_reporting/tests/test_table_report.py +++ b/skrub/_reporting/tests/test_table_report.py @@ -6,7 +6,6 @@ from pathlib import Path import numpy as np -import pandas as pd import pytest from sklearn.utils import Bunch @@ -17,8 +16,8 @@ @pytest.fixture -def simple_df(): - return pd.DataFrame( +def simple_df(df_module): + return df_module.make_dataframe( { "A": [1, 2, 3, 4, 5], "B": ["a", "b", "a", "b", "c"], @@ -27,8 +26,8 @@ def simple_df(): @pytest.fixture -def simple_series(): - return pd.Series([1, 2, 3, 4, 5], name="A") +def simple_series(df_module): + return df_module.make_column(name="A", values=[1, 2, 3, 4, 5]) def get_report_id(html): From 47e902277e6d8ad93cbe9b296334c6a5ddc77c11 Mon Sep 17 00:00:00 2001 From: Marie Date: Tue, 7 Oct 2025 14:21:09 +0200 Subject: [PATCH 08/10] linting --- skrub/tests/test_config.py | 1 - 1 file changed, 1 deletion(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 5c62103ab..016986ed1 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -1,4 +1,3 @@ -import pandas as pd import pytest import skrub From 085be77dc67fa9dace769a8e757895c28a0ff3fb Mon Sep 17 00:00:00 2001 From: Marie Date: Tue, 7 Oct 2025 15:13:22 +0200 Subject: [PATCH 09/10] change test to be both pandas and polars compliant --- skrub/tests/test_config.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 016986ed1..68d719b5d 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -146,20 +146,20 @@ def test_subsampling_seed(simple_df): data_op = skrub.X(simple_df) with config_context(subsampling_seed=0): - index = evaluate( + col_a = evaluate(data_op.skb.subsample(n=3, how="random"), mode="preview")[ + "A" + ].to_list() + col_a_identical = evaluate( data_op.skb.subsample(n=3, how="random"), mode="preview" - ).index.tolist() - index_identical = evaluate( - data_op.skb.subsample(n=3, how="random"), mode="preview" - ).index.tolist() + )["A"].to_list() with config_context(subsampling_seed=1): - index_different = evaluate( + col_a_different = evaluate( data_op.skb.subsample(n=3, how="random"), mode="preview" - ).index.tolist() + )["A"].to_list() - assert index == index_identical - assert index != index_different + assert col_a == col_a_identical + assert col_a != col_a_different def test_parsing(monkeypatch): From bd4cf74a03a62bec5db5ceb054b8625fd7051037 Mon Sep 17 00:00:00 2001 From: Marie Date: Tue, 7 Oct 2025 15:21:53 +0200 Subject: [PATCH 10/10] skip tests failing due to missing pyarrow --- skrub/tests/test_config.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/skrub/tests/test_config.py b/skrub/tests/test_config.py index 68d719b5d..d263ffcf3 100644 --- a/skrub/tests/test_config.py +++ b/skrub/tests/test_config.py @@ -4,6 +4,7 @@ from skrub import TableReport, config_context, get_config, set_config from skrub._config import _parse_env_bool from skrub._data_ops._evaluation import evaluate +from skrub.conftest import polars_installed_without_pyarrow def _use_table_report(obj): @@ -50,6 +51,7 @@ def test_use_table_report_data_ops(simple_df): assert not _use_table_report(X) +@polars_installed_without_pyarrow def test_use_table_report(simple_df): assert not _use_table_report(simple_df) with config_context(use_table_report=True): @@ -58,6 +60,7 @@ def test_use_table_report(simple_df): assert not _use_table_report(simple_df) +@polars_installed_without_pyarrow def test_max_plot_columns(simple_df): report = TableReport(simple_df) assert report.max_association_columns == 30 @@ -106,6 +109,7 @@ def test_enable_subsampling(simple_df): assert evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0] == 3 +@polars_installed_without_pyarrow def test_float_precision(simple_series): # Default config: float_precision set to 3 report = TableReport(simple_series)