sklearn-stubs/utils/validation.pyi/ "ensure_finite" needs updates in check_X_y and check_array for sklearn >= 1.8

Open
#392 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
58/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
python
Domain
tooling

Research direction

Open sklearn-stubs/utils/validation.pyi and inspect the check_X_y and check_array signatures. Compare their parameter names with the scikit-learn 1.8 API, then update the affected annotations so the newer keyword is represented in both functions. Done means the stubs match scikit-learn 1.8 and later for these arguments.

Written by the indexing model from the issue text.

Description

In sklearn 1.8, the "enforce" arguments of check_X_y and check_array have been changed to "ensure" in order to reach a more coherent notation

"enforce" was deprecated as of 1.7, and has been dropped in 1.8.

As of now, the stub is :

def check_X_y(
    X: MatrixLike | ArrayLike,
    y: MatrixLike | ArrayLike,
    accept_sparse: Sequence[str] | tuple[str, str] | list[str] | str | bool = False,
    *,
    accept_large_sparse: bool = True,
    dtype: None | Sequence[type] | Literal["numeric"] | type = "numeric",
    order: Literal["F", "C"] | None = None,
    copy: bool = False,
    force_all_finite: str | bool = True, ### This is the offending line
    ensure_2d: bool = True,
    allow_nd: bool = False,
    multi_output: bool = False,
    ensure_min_samples: Int = 1,
    ensure_min_features: Int = 1,
    y_numeric: bool = False,
    estimator: None | str | BaseEstimator = None,
) -> tuple[Any, Any]: ...

When it should really be (for sklearn >=1.8) :

def check_X_y(
    X: MatrixLike | ArrayLike,
    y: MatrixLike | ArrayLike,
    accept_sparse: Sequence[str] | tuple[str, str] | list[str] | str | bool = False,
    *,
    accept_large_sparse: bool = True,
    dtype: None | Sequence[type] | Literal["numeric"] | type = "numeric",
    order: Literal["F", "C"] | None = None,
    copy: bool = False,
    ensure_all_finite: str | bool = True, ### This is the corrected line
    ensure_2d: bool = True,
    allow_nd: bool = False,
    multi_output: bool = False,
    ensure_min_samples: Int = 1,
    ensure_min_features: Int = 1,
    y_numeric: bool = False,
    estimator: None | str | BaseEstimator = None,
) -> tuple[Any, Any]: ...

Note : Same applies for check_array

This only applies from 1.8 and onwards

Dominant language
Python
Stars
304
Forks
104
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/python-type-stubs

All issues in microsoft/python-type-stubs

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.