Source: scikit-learn Version: 1.0.2-1 Severity: serious Justification: FTBFS Tags: bookworm sid ftbfs User: lu...@debian.org Usertags: ftbfs-20220326 ftbfs-bookworm
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > =================================== FAILURES > =================================== > __________________________ test_docstring_parameters > ___________________________ > > @pytest.mark.filterwarnings("ignore::FutureWarning") > @pytest.mark.filterwarnings("ignore::DeprecationWarning") > @pytest.mark.skipif(IS_PYPY, reason="test segfaults on PyPy") > def test_docstring_parameters(): > # Test module docstring formatting > > # Skip test if numpydoc is not found > pytest.importorskip( > "numpydoc", reason="numpydoc is required to test the docstrings" > ) > > # XXX unreached code as of v0.22 > from numpydoc import docscrape > > incorrect = [] > for name in PUBLIC_MODULES: > if name.endswith(".conftest"): > # pytest tooling, not part of the scikit-learn API > continue > if name == "sklearn.utils.fixes": > # We cannot always control these docstrings > continue > with warnings.catch_warnings(record=True): > module = importlib.import_module(name) > classes = inspect.getmembers(module, inspect.isclass) > # Exclude non-scikit-learn classes > classes = [cls for cls in classes if > cls[1].__module__.startswith("sklearn")] > for cname, cls in classes: > this_incorrect = [] > if cname in _DOCSTRING_IGNORES or cname.startswith("_"): > continue > if inspect.isabstract(cls): > continue > with warnings.catch_warnings(record=True) as w: > cdoc = docscrape.ClassDoc(cls) > if len(w): > > raise RuntimeError( > "Error for __init__ of %s in %s:\n%s" % (cls, name, > w[0]) > ) > E RuntimeError: Error for __init__ of <class > 'sklearn.calibration.CalibrationDisplay'> in sklearn.calibration: > E {message : UserWarning('potentially wrong underline > length... \nParameters \n----------- in \nCalibration curve (also known as > reliability diagram) visualization.\n... in the docstring of > CalibrationDisplay in > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/sklearn/calibration.py.'), > category : 'UserWarning', filename : > '/usr/lib/python3/dist-packages/numpydoc/docscrape.py', lineno : 434, line : > None} > > sklearn/tests/test_docstring_parameters.py:103: RuntimeError > _________________ test_check_docstring_parameters[mock_meta0] > __________________ > > mock_meta = <sklearn.utils.tests.test_testing.MockMetaEstimator object at > 0x7fdc7943edc0> > > @pytest.mark.parametrize( > "mock_meta", > [ > MockMetaEstimator(delegate=MockEst()), > MockMetaEstimatorDeprecatedDelegation(delegate=MockEst()), > ], > ) > def test_check_docstring_parameters(mock_meta): > pytest.importorskip( > "numpydoc", reason="numpydoc is required to test the docstrings" > ) > > incorrect = check_docstring_parameters(f_ok) > assert incorrect == [] > incorrect = check_docstring_parameters(f_ok, ignore=["b"]) > assert incorrect == [] > incorrect = check_docstring_parameters(f_missing, ignore=["b"]) > assert incorrect == [] > with pytest.raises(RuntimeError, match="Unknown section Results"): > check_docstring_parameters(f_bad_sections) > with pytest.raises(RuntimeError, match="Unknown section Parameter"): > > check_docstring_parameters(Klass.f_bad_sections) > > sklearn/utils/tests/test_testing.py:540: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > func = <function Klass.f_bad_sections at 0x7fdc7966f670> > doc = <numpydoc.docscrape.FunctionDoc object at 0x7fdc6184dac0>, ignore = [] > > def check_docstring_parameters(func, doc=None, ignore=None): > """Helper to check docstring. > > Parameters > ---------- > func : callable > The function object to test. > doc : str, default=None > Docstring if it is passed manually to the test. > ignore : list, default=None > Parameters to ignore. > > Returns > ------- > incorrect : list > A list of string describing the incorrect results. > """ > from numpydoc import docscrape > > incorrect = [] > ignore = [] if ignore is None else ignore > > func_name = _get_func_name(func) > if not func_name.startswith("sklearn.") or func_name.startswith( > "sklearn.externals" > ): > return incorrect > # Don't check docstring for property-functions > if inspect.isdatadescriptor(func): > return incorrect > # Don't check docstring for setup / teardown pytest functions > if func_name.split(".")[-1] in ("setup_module", "teardown_module"): > return incorrect > # Dont check estimator_checks module > if func_name.split(".")[2] == "estimator_checks": > return incorrect > # Get the arguments from the function signature > param_signature = list(filter(lambda x: x not in ignore, > _get_args(func))) > # drop self > if len(param_signature) > 0 and param_signature[0] == "self": > param_signature.remove("self") > > # Analyze function's docstring > if doc is None: > with warnings.catch_warnings(record=True) as w: > try: > doc = docscrape.FunctionDoc(func) > except Exception as exp: > incorrect += [func_name + " parsing error: " + str(exp)] > return incorrect > if len(w): > > raise RuntimeError("Error for %s:\n%s" % (func_name, w[0])) > E RuntimeError: Error for > sklearn.utils.tests.test_testing.Klass.f_bad_sections: > E {message : UserWarning('potentially wrong underline length... > \nParameter \n---------- in \nFunction f\n... in the docstring of > f_bad_sections in > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/sklearn/utils/tests/test_testing.py.'), > category : 'UserWarning', filename : > '/usr/lib/python3/dist-packages/numpydoc/docscrape.py', lineno : 434, line : > None} > > sklearn/utils/_testing.py:665: RuntimeError > > During handling of the above exception, another exception occurred: > > mock_meta = <sklearn.utils.tests.test_testing.MockMetaEstimator object at > 0x7fdc7943edc0> > > @pytest.mark.parametrize( > "mock_meta", > [ > MockMetaEstimator(delegate=MockEst()), > MockMetaEstimatorDeprecatedDelegation(delegate=MockEst()), > ], > ) > def test_check_docstring_parameters(mock_meta): > pytest.importorskip( > "numpydoc", reason="numpydoc is required to test the docstrings" > ) > > incorrect = check_docstring_parameters(f_ok) > assert incorrect == [] > incorrect = check_docstring_parameters(f_ok, ignore=["b"]) > assert incorrect == [] > incorrect = check_docstring_parameters(f_missing, ignore=["b"]) > assert incorrect == [] > with pytest.raises(RuntimeError, match="Unknown section Results"): > check_docstring_parameters(f_bad_sections) > with pytest.raises(RuntimeError, match="Unknown section Parameter"): > > check_docstring_parameters(Klass.f_bad_sections) > E AssertionError: Regex pattern 'Unknown section Parameter' does > not match "Error for > sklearn.utils.tests.test_testing.Klass.f_bad_sections:\n{message : > UserWarning('potentially wrong underline length... \\nParameter \\n---------- > in \\nFunction f\\n... in the docstring of f_bad_sections in > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/sklearn/utils/tests/test_testing.py.'), > category : 'UserWarning', filename : > '/usr/lib/python3/dist-packages/numpydoc/docscrape.py', lineno : 434, line : > None}". > > sklearn/utils/tests/test_testing.py:540: AssertionError > _________________ test_check_docstring_parameters[mock_meta1] > __________________ > > mock_meta = > <sklearn.utils.tests.test_testing.MockMetaEstimatorDeprecatedDelegation > object at 0x7fdc7943ed30> > > @pytest.mark.parametrize( > "mock_meta", > [ > MockMetaEstimator(delegate=MockEst()), > MockMetaEstimatorDeprecatedDelegation(delegate=MockEst()), > ], > ) > def test_check_docstring_parameters(mock_meta): > pytest.importorskip( > "numpydoc", reason="numpydoc is required to test the docstrings" > ) > > incorrect = check_docstring_parameters(f_ok) > assert incorrect == [] > incorrect = check_docstring_parameters(f_ok, ignore=["b"]) > assert incorrect == [] > incorrect = check_docstring_parameters(f_missing, ignore=["b"]) > assert incorrect == [] > with pytest.raises(RuntimeError, match="Unknown section Results"): > check_docstring_parameters(f_bad_sections) > with pytest.raises(RuntimeError, match="Unknown section Parameter"): > > check_docstring_parameters(Klass.f_bad_sections) > > sklearn/utils/tests/test_testing.py:540: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > func = <function Klass.f_bad_sections at 0x7fdc7966f670> > doc = <numpydoc.docscrape.FunctionDoc object at 0x7fdc619a9760>, ignore = [] > > def check_docstring_parameters(func, doc=None, ignore=None): > """Helper to check docstring. > > Parameters > ---------- > func : callable > The function object to test. > doc : str, default=None > Docstring if it is passed manually to the test. > ignore : list, default=None > Parameters to ignore. > > Returns > ------- > incorrect : list > A list of string describing the incorrect results. > """ > from numpydoc import docscrape > > incorrect = [] > ignore = [] if ignore is None else ignore > > func_name = _get_func_name(func) > if not func_name.startswith("sklearn.") or func_name.startswith( > "sklearn.externals" > ): > return incorrect > # Don't check docstring for property-functions > if inspect.isdatadescriptor(func): > return incorrect > # Don't check docstring for setup / teardown pytest functions > if func_name.split(".")[-1] in ("setup_module", "teardown_module"): > return incorrect > # Dont check estimator_checks module > if func_name.split(".")[2] == "estimator_checks": > return incorrect > # Get the arguments from the function signature > param_signature = list(filter(lambda x: x not in ignore, > _get_args(func))) > # drop self > if len(param_signature) > 0 and param_signature[0] == "self": > param_signature.remove("self") > > # Analyze function's docstring > if doc is None: > with warnings.catch_warnings(record=True) as w: > try: > doc = docscrape.FunctionDoc(func) > except Exception as exp: > incorrect += [func_name + " parsing error: " + str(exp)] > return incorrect > if len(w): > > raise RuntimeError("Error for %s:\n%s" % (func_name, w[0])) > E RuntimeError: Error for > sklearn.utils.tests.test_testing.Klass.f_bad_sections: > E {message : UserWarning('potentially wrong underline length... > \nParameter \n---------- in \nFunction f\n... in the docstring of > f_bad_sections in > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/sklearn/utils/tests/test_testing.py.'), > category : 'UserWarning', filename : > '/usr/lib/python3/dist-packages/numpydoc/docscrape.py', lineno : 434, line : > None} > > sklearn/utils/_testing.py:665: RuntimeError > > During handling of the above exception, another exception occurred: > > mock_meta = > <sklearn.utils.tests.test_testing.MockMetaEstimatorDeprecatedDelegation > object at 0x7fdc7943ed30> > > @pytest.mark.parametrize( > "mock_meta", > [ > MockMetaEstimator(delegate=MockEst()), > MockMetaEstimatorDeprecatedDelegation(delegate=MockEst()), > ], > ) > def test_check_docstring_parameters(mock_meta): > pytest.importorskip( > "numpydoc", reason="numpydoc is required to test the docstrings" > ) > > incorrect = check_docstring_parameters(f_ok) > assert incorrect == [] > incorrect = check_docstring_parameters(f_ok, ignore=["b"]) > assert incorrect == [] > incorrect = check_docstring_parameters(f_missing, ignore=["b"]) > assert incorrect == [] > with pytest.raises(RuntimeError, match="Unknown section Results"): > check_docstring_parameters(f_bad_sections) > with pytest.raises(RuntimeError, match="Unknown section Parameter"): > > check_docstring_parameters(Klass.f_bad_sections) > E AssertionError: Regex pattern 'Unknown section Parameter' does > not match "Error for > sklearn.utils.tests.test_testing.Klass.f_bad_sections:\n{message : > UserWarning('potentially wrong underline length... \\nParameter \\n---------- > in \\nFunction f\\n... in the docstring of f_bad_sections in > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/sklearn/utils/tests/test_testing.py.'), > category : 'UserWarning', filename : > '/usr/lib/python3/dist-packages/numpydoc/docscrape.py', lineno : 434, line : > None}". > > sklearn/utils/tests/test_testing.py:540: AssertionError > = 3 failed, 24128 passed, 195 skipped, 1 deselected, 248 xfailed, 39 xpassed, > 2386 warnings in 10221.46s (2:50:21) = > E: pybuild pybuild:367: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest -m "not > network" -v --color=no -k "not test_load_boston_alternative" > dh_auto_test: error: pybuild --test -i python{version} -p "3.10 3.9" returned > exit code 13 The full build log is available from: http://qa-logs.debian.net/2022/03/26/scikit-learn_1.0.2-1_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please marking it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.