Fix ImportError with sklearn 1.7.0+ by replacing tosequence #269
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes #267
This PR resolves the
ImportError: cannot import name 'tosequence' from 'sklearn.utils'
that occurs with scikit-learn >= 1.7.0.Root Cause
The
tosequence
utility function was deprecated in scikit-learn 1.5 and completely removed in version 1.7.0, breaking sklearn-pandas on import.Changes Made
In
sklearn_pandas/pipeline.py
:sklearn.utils.tosequence
steps = list(steps)
at the beginning ofTransformerPipeline.__init__
self.steps = tosequence(steps)
toself.steps = steps
In
tests/test_pipeline.py
:Why This Works
The
tosequence
utility simply converted various input types to a list. By callinglist(steps)
at the start of__init__
, we:tosequence
zip()
)Testing
Test Results
Compatibility
Checklist