PyPI / scikit-learn / 1.9.1
scikit-learn 1.9.1
- Source
- https://github.com/scikit-learn/scikit-learn
- Tag scanned
1.9.1- Compared with
1.9.0(8 signals introduced since)- Files
- 1300 scanned, 377 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 20 info
- Scan time
- 18.6 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 19 of 19 warn and critical signals; 19 demoted to info.
- Disclude version
- 4.1.0
- Scanned (UTC)
- 2026-10-22 04:03
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/cupy/__init__.py:12:1new in this release# See the comment in the numpy __init__.pylikely benign Imports own linalg and fft submodules dynamically in vendored compat layer.Reasoning
Vendored array_api_compat uses __import__ on its own package parent plus fixed suffixes to load linalg/fft submodules so it can be vendored; the argument is not external input.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/cupy/__init__.py:13:1new in this release: =likely benign Imports own linalg and fft submodules dynamically in vendored compat layer.Reasoning
Same vendored submodule import of linalg/fft relative to __spec__.parent; standard for vendored array_api_compat.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/dask/array/__init__.py:16:1new in this release# See the comment in the numpy __init__.pylikely benign Imports own linalg and fft submodules dynamically in vendored dask compat layer.Reasoning
Vendored array_api_compat submodule loading via __spec__.parent with fixed suffixes; benign.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/dask/array/__init__.py:17:1new in this release=likely benign Imports own linalg and fft submodules dynamically in vendored dask compat layer.Reasoning
Same vendored submodule loading pattern as the other compat modules; benign.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/numpy/__init__.py:22:1new in this release# dynamically so that the library can be vendored.likely benign Imports own linalg submodule dynamically in vendored numpy compat layer.Reasoning
Vendored array_api_compat numpy module imports its own linalg submodule relative to package parent; standard vendoring technique.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/numpy/__init__.py:24:1new in this release# type: ignore[no-redef] # noqa: F401likely benign Imports own fft submodule dynamically in vendored numpy compat layer.Reasoning
Imports own fft submodule relative to package parent in vendored compat code; benign.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/torch/__init__.py:13:1new in this release# See the comment in the numpy __init__.pylikely benign Imports own linalg and fft submodules dynamically in vendored torch compat layer.Reasoning
Vendored torch compat layer loads linalg/fft submodules relative to its own package; benign.
-
info
critical→ info by reviewdynamic-importsklearn/externals/array_api_compat/torch/__init__.py:14:1new in this release: =likely benign Imports own linalg and fft submodules dynamically in vendored torch compat layer.Reasoning
Same vendored submodule loading in torch compat layer; benign.
-
likely benign Sources conda activation script from a variable miniconda install path in CI.
Reasoning
Sourcing conda's profile script from a variable install path set earlier in the CI script is standard Miniforge/conda setup; the path is a local install directory, not attacker-controlled input.
-
likely benign Sources conda.sh after installing Miniforge into a home directory path.
Reasoning
Standard Miniforge installer followed by sourcing conda.sh from $HOME/conda; routine CI environment setup with no obfuscation.
-
-
likely benign Evaluates a test command string from CI environment variable with tracing.
Reasoning
eval of $TEST_CMD is a risky pattern but in a CI test script the command comes from the project's own CI configuration, not untrusted input; it is a common test-runner idiom with set -x for logging.
-
elif ; then filikely benign Sources virtualenv activate script from a configured path in CI helper.Reasoning
Sources a virtualenv activate script from a variable VIRTUALENV path inside a CI distro-specific branch; ordinary build helper behavior.
-
= = =likely benign Dynamically imports documented module to locate source for GitHub links.Reasoning
Sphinx extension importing the module named in its own object info to resolve source links; the module name comes from documentation introspection, a legitimate pattern.
-
= return Nonelikely benign Imports package by name to compute relative source path for docs.Reasoning
Imports the package by name to compute a relative file path for linking in docs; standard sphinx extension logic with no malicious indicators.
-
returnlikely benign Module-level __getattr__ performing lazy attribute lookup in globals.Reasoning
Module __getattr__ lazily resolving submodule names via globals() is a standard lazy-loading idiom; it raises AttributeError on miss and does nothing hidden.
-
return # This is turned into the appropriate ImportErrorlikely benign Lazy module attribute lookup via globals in datasets package.Reasoning
Same standard module __getattr__ lazy-loading pattern for datasets submodule attributes; benign.
-
] = # for callee, extract the innermost `function` (which is in METHODS) from the # stack; for caller, extract the *outermost* matching function so the expectedlikely benign Test helper that calls inspect.stack() to find the calling method names for metadata routing checks.Reasoning
inspect.stack() in a test helper walks the call stack to match the callee and caller method names for metadata routing assertions. The snippet comments describe that purpose, and nothing in it exfiltrates data, runs fetched code, or hides behavior. This is ordinary test introspection in a well-known project.
-
continue = assert ,likely benign Test loop that dynamically imports sklearn submodules to verify their __all__ exports.Reasoning
__import__ is called on modname while iterating over sklearn submodules and checking each package's __all__ attribute. The module names come from the package's own discovery, not from untrusted input. The critical severity reflects the pattern alone, not any malicious intent.
-
likely benign Test helper that tries to import an optional library and skips the test if it is not installed.
Reasoning
importlib.__import__(lib) is wrapped in try/except ImportError and raises SkipTest when an optional library is missing. This is a standard way to skip tests for optional dependencies. The lib name comes from the test's own hardcoded set of libraries, not from external input.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&