Skip to content

Commit c4aa8ac

Browse files
chore: alleviate datasets downloads in test (#1656)
Co-authored-by: Riccardo Cappuzzo <7548232+rcap107@users.noreply.github.com>
1 parent b0a3c29 commit c4aa8ac

2 files changed

Lines changed: 70 additions & 40 deletions

File tree

skrub/_reporting/tests/test_table_report.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,29 @@
77

88
import numpy as np
99
import pytest
10+
from sklearn.utils import Bunch
1011

11-
from skrub import TableReport, ToDatetime, datasets
12+
from skrub import TableReport, ToDatetime
1213
from skrub import _dataframe as sbd
1314
from skrub._reporting._sample_table import make_table
1415
from skrub.conftest import polars_installed_without_pyarrow
1516

1617

18+
@pytest.fixture
19+
def simple_df(df_module):
20+
return df_module.make_dataframe(
21+
{
22+
"A": [1, 2, 3, 4, 5],
23+
"B": ["a", "b", "a", "b", "c"],
24+
}
25+
)
26+
27+
28+
@pytest.fixture
29+
def simple_series(df_module):
30+
return df_module.make_column(name="A", values=[1, 2, 3, 4, 5])
31+
32+
1733
def get_report_id(html):
1834
return re.search(r'<skrub-table-report.*?id="report_([a-z0-9]+)"', html).group(1)
1935

@@ -294,8 +310,8 @@ def test_minimal_mode(pd_module):
294310
assert 'id="column-associations-panel"' not in html
295311

296312

297-
def test_error_input_type():
298-
df = datasets.fetch_employee_salaries()
313+
def test_error_input_type(simple_df, simple_series):
314+
df = Bunch(X=simple_df, y=simple_series)
299315
with pytest.raises(TypeError):
300316
TableReport(df)
301317

skrub/tests/test_config.py

Lines changed: 51 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,28 @@
44
from skrub import TableReport, config_context, get_config, set_config
55
from skrub._config import _parse_env_bool
66
from skrub._data_ops._evaluation import evaluate
7-
from skrub.datasets import fetch_employee_salaries
7+
from skrub.conftest import polars_installed_without_pyarrow
88

99

1010
def _use_table_report(obj):
1111
return "SkrubTableReport" in obj._repr_html_()
1212

1313

14+
@pytest.fixture
15+
def simple_df(df_module):
16+
return df_module.make_dataframe(
17+
{
18+
"A": [1, 2, 3, 4, 5],
19+
"B": ["a", "b", "a", "b", "c"],
20+
}
21+
)
22+
23+
24+
@pytest.fixture
25+
def simple_series(df_module):
26+
return df_module.make_column(name="A", values=[1, 2, 3, 4, 5])
27+
28+
1429
def test_config_context():
1530
assert get_config() == {
1631
"use_table_report": False,
@@ -28,54 +43,54 @@ def test_config_context():
2843
assert get_config()["use_table_report"] is False
2944

3045

31-
def test_use_table_report_data_ops():
32-
X = skrub.X(fetch_employee_salaries().X)
33-
46+
def test_use_table_report_data_ops(simple_df):
47+
X = skrub.X(simple_df)
3448
with config_context(use_table_report_data_ops=True):
3549
assert _use_table_report(X)
3650
with config_context(use_table_report_data_ops=False):
3751
assert not _use_table_report(X)
3852

3953

40-
def test_use_table_report():
41-
X = fetch_employee_salaries().X
42-
assert not _use_table_report(X)
54+
@polars_installed_without_pyarrow
55+
def test_use_table_report(simple_df):
56+
assert not _use_table_report(simple_df)
4357
with config_context(use_table_report=True):
44-
assert _use_table_report(X)
58+
assert _use_table_report(simple_df)
4559
with config_context(use_table_report=False):
46-
assert not _use_table_report(X)
60+
assert not _use_table_report(simple_df)
4761

4862

49-
def test_max_plot_columns():
50-
X = fetch_employee_salaries().X
51-
report = TableReport(X)
63+
@polars_installed_without_pyarrow
64+
def test_max_plot_columns(simple_df):
65+
report = TableReport(simple_df)
5266
assert report.max_association_columns == 30
5367
assert report.max_plot_columns == 30
5468

5569
# Set default to 1
5670
with config_context(max_plot_columns=1):
57-
report = TableReport(X)
71+
report = TableReport(simple_df)
5872
assert report.max_association_columns == 30
5973
assert report.max_plot_columns == 1
6074

6175
# Argument takes precedence over default configuration
62-
report = TableReport(X, max_association_columns="all", max_plot_columns="all")
76+
report = TableReport(
77+
simple_df, max_association_columns="all", max_plot_columns="all"
78+
)
6379
assert report.max_association_columns == "all"
6480
assert report.max_plot_columns == "all"
6581

6682
# Check that max_plot_columns can be set after patching the TableReport
6783
# repr_html.
6884
with config_context(use_table_report=True):
6985
with config_context(max_plot_columns=3):
70-
"Plotting was skipped" in X._repr_html_()
86+
"Plotting was skipped" in simple_df._repr_html_()
7187

7288

73-
def test_enable_subsampling():
74-
X = fetch_employee_salaries().X
75-
dataop = skrub.X(X)
89+
def test_enable_subsampling(simple_df):
90+
dataop = skrub.X(simple_df)
7691

7792
# No subsampling by default with fit_transform mode
78-
assert dataop.skb.subsample(n=3).skb.eval().shape[0] == X.shape[0]
93+
assert dataop.skb.subsample(n=3).skb.eval().shape[0] == simple_df.shape[0]
7994
assert dataop.skb.subsample(n=3).skb.eval(keep_subsampling=True).shape[0] == 3
8095

8196
# Force subsampling during fit_transform
@@ -87,24 +102,24 @@ def test_enable_subsampling():
87102

88103
with config_context(enable_subsampling="disable"):
89104
assert (
90-
evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0] == X.shape[0]
105+
evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0]
106+
== simple_df.shape[0]
91107
)
92108
with config_context(enable_subsampling="default"):
93109
assert evaluate(dataop.skb.subsample(n=3), mode="preview").shape[0] == 3
94110

95111

96-
def test_float_precision():
97-
y = fetch_employee_salaries().y
98-
112+
@polars_installed_without_pyarrow
113+
def test_float_precision(simple_series):
99114
# Default config: float_precision set to 3
100-
report = TableReport(y)
115+
report = TableReport(simple_series)
101116
mean = f"{report._summary['columns'][0]['mean']:#.3g}"
102117
html = report._repr_html_()
103118
assert mean in html
104119

105120
# Float precision set to 2
106121
with config_context(float_precision=2):
107-
report_2 = TableReport(y)
122+
report_2 = TableReport(simple_series)
108123
mean_2 = f"{report_2._summary['columns'][0]['mean']:#.2g}"
109124
html_2 = report_2._repr_html_()
110125
assert mean_2 in html_2
@@ -131,25 +146,24 @@ def test_error(params):
131146
set_config(**params)
132147

133148

134-
def test_subsampling_seed():
135-
X = fetch_employee_salaries().X
136-
data_op = skrub.X(X)
149+
def test_subsampling_seed(simple_df):
150+
data_op = skrub.X(simple_df)
137151

138152
with config_context(subsampling_seed=0):
139-
index = evaluate(
140-
data_op.skb.subsample(n=3, how="random"), mode="preview"
141-
).index.tolist()
142-
index_identical = evaluate(
153+
col_a = evaluate(data_op.skb.subsample(n=3, how="random"), mode="preview")[
154+
"A"
155+
].to_list()
156+
col_a_identical = evaluate(
143157
data_op.skb.subsample(n=3, how="random"), mode="preview"
144-
).index.tolist()
158+
)["A"].to_list()
145159

146160
with config_context(subsampling_seed=1):
147-
index_different = evaluate(
161+
col_a_different = evaluate(
148162
data_op.skb.subsample(n=3, how="random"), mode="preview"
149-
).index.tolist()
163+
)["A"].to_list()
150164

151-
assert index == index_identical
152-
assert index != index_different
165+
assert col_a == col_a_identical
166+
assert col_a != col_a_different
153167

154168

155169
def test_parsing(monkeypatch):

0 commit comments

Comments
 (0)