Skip to content

Bump skrub 0.8.0 -> 0.11.0 - #241

Closed
e-strauss wants to merge 1 commit into
deem-data:mainfrom
e-strauss:skrub-bump-0.11
Closed

e-strauss wants to merge 1 commit into
deem-data:mainfrom
e-strauss:skrub-bump-0.11

Conversation

@e-strauss

Copy link
Copy Markdown
Collaborator

skrub changes that matter for stratum:

  • Perf: building DataOps and SkrubLearners over deep graphs is much faster; skrub's graph traversals now memoize node results (skrub#2296, 0.11)
  • .skb.apply(): how= replaced by no_wrap: bool plus new exclude_cols; Apply also gains no_cache (persistent caching, skrub#2017, 0.11)
  • Non-final estimators: an Apply whose output feeds another Apply now transform()s/predict()s in every response pass instead of answering the scorer (skrub#2052, 0.9)
  • TableVectorizer converts duration columns to float seconds via the new DurationToFloat step (skrub#2069, 0.10)
  • .skb.concat() accepts numpy arrays (skrub#2096, 0.10)
  • skrub.var(..., becomes_default=True): an env that does not bind the var falls back to its value (skrub#2082, 0.10)
  • .skb.with_scoring() declares scorers inside the DataOp, kwargs may be DataOps such as sample_weight (skrub#1995, 0.9)
  • .skb.train_test_split() with a declared cv returns the last split (skrub#2213, 0.10.1)
  • Regression: ApplyToCols.transform() no longer forwards transform kwargs

Stratum follow-ups:

  • Estimator ops carry exclude_cols/no_wrap instead of how
  • New feeds_estimator flag gives skrub's non-final-estimator semantics
  • Fused TableVectorizer adds DurationToFloat (pandas/polars parity)
  • ConcatOp concatenates numpy arrays at runtime
  • SelectCols -> ColumnSelectorOp only when the Apply gets every column
  • Unbound becomes_default vars resolve to their value
  • with_scoring metrics used by grid_search, kwargs evaluated per test fold
  • IRNode.detach()/detach_and_prune() replace hand-rolled unlinking; fixes a dangling-subgraph crash in the x*0 / x**0 folds

skrub changes that matter for stratum:
- Perf: building DataOps and SkrubLearners over deep graphs is much faster;
  skrub's graph traversals now memoize node results (skrub#2296, 0.11)
- .skb.apply(): `how=` replaced by `no_wrap: bool` plus new `exclude_cols`;
  Apply also gains `no_cache` (persistent caching, skrub#2017, 0.11)
- Non-final estimators: an Apply whose output feeds another Apply now
  transform()s/predict()s in every response pass instead of answering the
  scorer (skrub#2052, 0.9)
- TableVectorizer converts duration columns to float seconds via the new
  DurationToFloat step (skrub#2069, 0.10)
- .skb.concat() accepts numpy arrays (skrub#2096, 0.10)
- skrub.var(..., becomes_default=True): an env that does not bind the var
  falls back to its value (skrub#2082, 0.10)
- .skb.with_scoring() declares scorers inside the DataOp, kwargs may be
  DataOps such as sample_weight (skrub#1995, 0.9)
- .skb.train_test_split() with a declared cv returns the last split
  (skrub#2213, 0.10.1)
- Regression: ApplyToCols.transform() no longer forwards transform kwargs

Stratum follow-ups:
- Estimator ops carry exclude_cols/no_wrap instead of how
- New feeds_estimator flag gives skrub's non-final-estimator semantics
- Fused TableVectorizer adds DurationToFloat (pandas/polars parity)
- ConcatOp concatenates numpy arrays at runtime
- SelectCols -> ColumnSelectorOp only when the Apply gets every column
- Unbound becomes_default vars resolve to their value
- with_scoring metrics used by grid_search, kwargs evaluated per test fold
- IRNode.detach()/detach_and_prune() replace hand-rolled unlinking; fixes a
  dangling-subgraph crash in the x*0 / x**0 folds
@codecov

codecov Bot commented Oct 5, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 11 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
stratum/optimizer/_optimize.py 85.00% 3 Missing and 3 partials ⚠️
stratum/optimizer/logical/_scoring.py 80.95% 2 Missing and 2 partials ⚠️
stratum/optimizer/logical/_candidate_ops.py 91.66% 1 Missing ⚠️
Flag Coverage Δ
unittests 92.84% <92.85%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
stratum/_api.py 97.05% <100.00%> (+0.18%) ⬆️
stratum/adapters/table_vectorizer.py 89.54% <100.00%> (+0.02%) ⬆️
stratum/optimizer/logical/_aggregation_ops.py 88.59% <100.00%> (-0.13%) ⬇️
stratum/optimizer/logical/_base.py 100.00% <100.00%> (ø)
stratum/optimizer/logical/_dataframe_ops.py 96.83% <100.00%> (+0.02%) ⬆️
stratum/optimizer/logical/_map_ops.py 88.46% <100.00%> (-0.63%) ⬇️
stratum/optimizer/logical/_numeric_rewrites.py 98.61% <100.00%> (-0.03%) ⬇️
stratum/optimizer/logical/_op_cse.py 100.00% <100.00%> (ø)
stratum/optimizer/logical/_ops.py 97.56% <100.00%> (+0.06%) ⬆️
stratum/optimizer/logical/_projection_ops.py 99.13% <100.00%> (-0.01%) ⬇️
... and 9 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

e-strauss added a commit to e-strauss/stratum-fork that referenced this pull request Oct 6, 2026
skrub changes that matter for stratum:
- Perf: building DataOps and SkrubLearners over deep graphs is much faster;
  skrub's graph traversals now memoize node results (skrub#2296, 0.11)
- .skb.apply(): `how=` replaced by `no_wrap: bool` plus new `exclude_cols`;
  Apply also gains `no_cache` (persistent caching, skrub#2017, 0.11)
- Non-final estimators: an Apply whose output feeds another Apply now
  transform()s/predict()s in every response pass instead of answering the
  scorer (skrub#2052, 0.9)
- TableVectorizer converts duration columns to float seconds via the new
  DurationToFloat step (skrub#2069, 0.10)
- .skb.concat() accepts numpy arrays (skrub#2096, 0.10)
- skrub.var(..., becomes_default=True): an env that does not bind the var
  falls back to its value (skrub#2082, 0.10)
- .skb.with_scoring() declares scorers inside the DataOp, kwargs may be
  DataOps such as sample_weight (skrub#1995, 0.9)
- .skb.train_test_split() with a declared cv returns the last split
  (skrub#2213, 0.10.1)
- Regression: ApplyToCols.transform() no longer forwards transform kwargs

Stratum follow-ups:
- Estimator ops carry exclude_cols/no_wrap instead of how
- New feeds_estimator flag gives skrub's non-final-estimator semantics
- Fused TableVectorizer adds DurationToFloat (pandas/polars parity)
- ConcatOp concatenates numpy arrays at runtime
- SelectCols -> ColumnSelectorOp only when the Apply gets every column
- Unbound becomes_default vars resolve to their value
- with_scoring metrics used by grid_search, kwargs evaluated per test fold
- IRNode.detach()/detach_and_prune() replace hand-rolled unlinking; fixes a
  dangling-subgraph crash in the x*0 / x**0 folds

  Closes deem-data#241.
@e-strauss e-strauss closed this Oct 6, 2026
@e-strauss
e-strauss deleted the skrub-bump-0.11 branch October 6, 2026 13:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant