Bug#1109955: scikit-learn: deprecated API fails with scipy 1.16

Drew Parsons dparsons at debian.org
Sun Jul 27 09:47:07 BST 2025


Source: scikit-learn
Version: 1.4.2+dfsg-8
Severity: normal
Control: tags -1 fixed-upstream

scikit-learn uses a deprecated scipy API which causes
test_linalg_warning_with_newton_solver (test_glm) to fail with
scipy 1.16 (from experimental)

test_logistic_regression_path_convergence_fail also fails

176s FAILED ../../../../usr/lib/python3/dist-packages/sklearn/linear_model/_glm/tests/test_glm.py::test_linalg_warning_with_newton_solver[42]
176s FAILED ../../../../usr/lib/python3/dist-packages/sklearn/linear_model/tests/test_logistic.py::test_logistic_regression_path_convergence_fail
176s = 2 failed, 29255 passed, 3388 skipped, 88 xfailed, 45 xpassed, 15607 warnings in 128.24s (0:02:08) =

In the case of the test_glm failure the problem is

176s E           DeprecationWarning: scipy.optimize: The `disp` and `iprint` options of the L-BFGS-B solver are deprecated and will be removed in SciPy 1.18.0.
176s 
176s /usr/lib/python3/dist-packages/scipy/optimize/_lbfgsb_py.py:387: DeprecationWarning

The problem is fixed upstream
https://github.com/scikit-learn/scikit-learn/pull/31642
in upstream release 1.7.1.

The second error is:
176s ________________ test_logistic_regression_path_convergence_fail ________________
176s [gw14] linux -- Python 3.13.5 /usr/bin/python3.13
176s 
176s     def test_logistic_regression_path_convergence_fail():
176s         rng = np.random.RandomState(0)
176s         X = np.concatenate((rng.randn(100, 2) + [1, 1], rng.randn(100, 2)))
176s         y = [1] * 100 + [-1] * 100
176s         Cs = [1e3]
176s     
176s         # Check that the convergence message points to both a model agnostic
176s         # advice (scaling the data) and to the logistic regression specific
176s         # documentation that includes hints on the solver configuration.
176s         with pytest.warns(ConvergenceWarning) as record:
176s             _logistic_regression_path(
176s                 X, y, Cs=Cs, tol=0.0, max_iter=1, random_state=0, verbose=0
176s             )
176s     
176s >       assert len(record) == 1
176s E       assert 2 == 1
176s E        +  where 2 = len(WarningsChecker(record=True))
176s 
176s /usr/lib/python3/dist-packages/sklearn/linear_model/tests/test_logistic.py:437: AssertionError

I can't say if it's fixed in the later upstream release, but likely so
since thay have been testing scipy 1.16.


Best way to fix the bug is to upload the new upstream release.

This bug will become RC serious later, once scipy 1.16 is uploaded to
unstable.


-- System Information:
Debian Release: 13.0
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.12.38+deb13-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_AU:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled



More information about the debian-science-maintainers mailing list