• Bug#1103099: sklearn-pandas: FTBFS in testing/i386: dh_auto_test: error

    From Lucas Nussbaum@21:1/5 to All on Mon Apr 14 13:50:05 2025
    Source: sklearn-pandas
    Version: 2.2.0-4
    Severity: serious
    Justification: FTBFS
    Tags: trixie sid ftbfs
    User: lucas@debian.org
    Usertags: ftbfs-20250414 ftbfs-trixie

    Hi,

    During a rebuild of all packages in testing (trixie), your package failed
    to build on i386.


    Relevant part (hopefully):
    debian/rules binary
    dh binary --buildsystem=pybuild
    dh_update_autotools_config -O--buildsystem=pybuild
    dh_autoreconf -O--buildsystem=pybuild
    dh_auto_configure -O--buildsystem=pybuild
    pybuild --configure -i python{version} -p 3.13
    I: pybuild base:311: python3.13 setup.py config /build/reproducible-path/sklearn-pandas-2.2.0/setup.py:5: SetuptoolsDeprecationWarning: The test command is disabled and references to it are deprecated.
    !!

    ********************************************************************************
    Please remove any references to `setuptools.command.test` in all supported versions of the affected package.

    This deprecation is overdue, please update your project and remove deprecated
    calls to avoid build errors in the future.
    ********************************************************************************

    !!
    from setuptools.command.test import test as TestCommand /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:270: UserWarning: Unknown distribution option: 'tests_require'
    warnings.warn(msg)
    running config
    dh_auto_build -O--buildsystem=pybuild
    pybuild --build -i python{version} -p 3.13
    I: pybuild base:311: /usr/bin/python3 setup.py build /build/reproducible-path/sklearn-pandas-2.2.0/setup.py:5: SetuptoolsDeprecationWarning: The test command is disabled and references to it are deprecated.
    !!

    ********************************************************************************
    Please remove any references to `setuptools.command.test` in all supported versions of the affected package.

    This deprecation is overdue, please update your project and remove deprecated
    calls to avoid build errors in the future.
    ********************************************************************************

    !!
    from setuptools.command.test import test as TestCommand /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:270: UserWarning: Unknown distribution option: 'tests_require'
    warnings.warn(msg)
    running build
    running build_py
    creating /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    copying sklearn_pandas/pipeline.py -> /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    copying sklearn_pandas/dataframe_mapper.py -> /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    copying sklearn_pandas/cross_validation.py -> /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    copying sklearn_pandas/transformers.py -> /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    copying sklearn_pandas/features_generator.py -> /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    copying sklearn_pandas/__init__.py -> /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas
    dh_auto_test -O--buildsystem=pybuild
    pybuild --test --test-pytest -i python{version} -p 3.13
    I: pybuild base:311: cd /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build; python3.13 -m pytest ; cd /build/reproducible-path/sklearn-pandas-2.2.0; python3.13 -m doctest -v README.rst
    ============================= test session starts ==============================
    platform linux -- Python 3.13.2, pytest-8.3.5, pluggy-1.5.0
    rootdir: /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build
    configfile: pytest.ini
    plugins: typeguard-4.4.2
    collected 69 items

    tests/test_dataframe_mapper.py ......................................... [ 59%]
    .................. [ 85%]
    tests/test_features_generator.py .... [ 91%]
    tests/test_pipeline.py .... [ 97%]
    tests/test_transformers.py .. [100%]

    =============================== warnings summary ===============================
    tests/test_dataframe_mapper.py::test_sparse_features
    /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/tests/test_dataframe_mapper.py:820: DeprecationWarning: Please import `csr_matrix` from the `scipy.sparse` namespace; the `scipy.sparse.csr` namespace is
    deprecated and will be removed in SciPy 2.0.0.
    assert type(dmatrix) == sparse.csr.csr_matrix

    tests/test_dataframe_mapper.py::test_sparse_off
    /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/tests/test_dataframe_mapper.py:834: DeprecationWarning: Please import `csr_matrix` from the `scipy.sparse` namespace; the `scipy.sparse.csr` namespace is
    deprecated and will be removed in SciPy 2.0.0.
    assert type(dmatrix) != sparse.csr.csr_matrix

    tests/test_transformers.py::test_common_numerical_transformer tests/test_transformers.py::test_numerical_transformer_serialization
    /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build/sklearn_pandas/transformers.py:35: DeprecationWarning:
    NumericalTransformer will be deprecated in 3.0 version.
    Please use Sklearn.base.TransformerMixin to write
    customer transformers

    warnings.warn("""

    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ======================== 69 passed, 4 warnings in 8.10s ========================
    Trying:
    from sklearn_pandas import DataFrameMapper
    Expecting nothing
    ok
    Trying:
    import pandas as pd
    Expecting nothing
    ok
    Trying:
    import numpy as np
    Expecting nothing
    ok
    Trying:
    import sklearn.preprocessing, sklearn.decomposition, \
    sklearn.linear_model, sklearn.pipeline, sklearn.metrics, \
    sklearn.compose
    Expecting nothing
    ok
    Trying:
    from sklearn.feature_extraction.text import CountVectorizer
    Expecting nothing
    ok
    Trying:
    data = pd.DataFrame({'pet': ['cat', 'dog', 'dog', 'fish', 'cat', 'dog', 'cat', 'fish'],
    'children': [4., 6, 3, 3, 2, 3, 5, 4],
    'salary': [90., 24, 44, 27, 32, 59, 36, 27]}) Expecting nothing
    ok
    Trying:
    mapper = DataFrameMapper([
    ('pet', sklearn.preprocessing.LabelBinarizer()),
    (['children'], sklearn.preprocessing.StandardScaler())
    ])
    Expecting nothing
    ok
    Trying:
    data['children'].shape
    Expecting:
    (8,)
    ok
    Trying:
    data[['children']].shape
    Expecting:
    (8, 1)
    ok
    Trying:
    np.round(mapper.fit_transform(data.copy()), 2)
    Expecting:
    array([[ 1. , 0. , 0. , 0.21],
    [ 0. , 1. , 0. , 1.88],
    [ 0. , 1. , 0. , -0.63],
    [ 0. , 0. , 1. , -0.63],
    [ 1. , 0. , 0. , -1.46],
    [ 0. , 1. , 0. , -0.63],
    [ 1. , 0. , 0. , 1.04],
    [ 0. , 0. , 1. , 0.21]])
    ok
    Trying:
    sample = pd.DataFrame({'pet': ['cat'], 'children': [5.]})
    Expecting nothing
    ok
    Trying:
    np.round(mapper.transform(sample), 2)
    Expecting:
    array([[1. , 0. , 0. , 1.04]])
    ok
    Trying:
    mapper.transformed_names_
    Expecting:
    ['pet_cat', 'pet_dog', 'pet_fish', 'children']
    ok
    Trying:
    mapper_alias = DataFrameMapper([
    (['children'], sklearn.preprocessing.StandardScaler(),
    {'alias': 'children_scaled'})
    ])
    Expecting nothing
    ok
    Trying:
    _ = mapper_alias.fit_transform(data.copy())
    Expecting nothing
    ok
    Trying:
    mapper_alias.transformed_names_
    Expecting:
    ['children_scaled']
    ok
    Trying:
    mapper_alias = DataFrameMapper([
    (['children'], sklearn.preprocessing.StandardScaler(), {'prefix': 'standard_scaled_'}),
    (['children'], sklearn.preprocessing.StandardScaler(), {'suffix': '_raw'})
    ])
    Expecting nothing
    ok
    Trying:
    _ = mapper_alias.fit_transform(data.copy())
    Expecting nothing
    ok
    Trying:
    mapper_alias.transformed_names_
    Expecting:
    ['standard_scaled_children', 'children_raw']
    ok
    Trying:
    class GetColumnsStartingWith:
    def __init__(self, start_str):
    self.pattern = start_str

    def __call__(self, X:pd.DataFrame=None):
    return [c for c in X.columns if c.startswith(self.pattern)]
    Expecting nothing
    ok
    Trying:
    df = pd.DataFrame({
    'sepal length (cm)': [1.0, 2.0, 3.0],
    'sepal width (cm)': [1.0, 2.0, 3.0],
    'petal length (cm)': [1.0, 2.0, 3.0],
    'petal width (cm)': [1.0, 2.0, 3.0]
    })
    Expecting nothing
    ok
    Trying:
    t = DataFrameMapper([
    (
    sklearn.compose.make_column_selector(dtype_include=float),
    sklearn.preprocessing.StandardScaler(),
    {'alias': 'x'}
    ),
    (
    GetColumnsStartingWith('petal'),
    None,
    {'alias': 'petal'}
    )], df_out=True, default=False)
    Expecting nothing
    ok
    Trying:
    t.fit(df).transform(df).shape
    Expecting:
    (3, 6)
    ok
    Trying:
    t.transformed_names_
    Expecting:
    ['x_0', 'x_1', 'x_2', 'x_3', 'petal_0', 'petal_1']
    ok
    Trying:
    from sklearn.base import TransformerMixin
    Expecting nothing
    ok
    Trying:
    class DateEncoder(TransformerMixin):
    def fit(self, X, y=None):
    return self

    def transform(self, X):
    dt = X.dt
    return pd.concat([dt.year, dt.month, dt.day], axis=1)
    Expecting nothing
    ok
    Trying:
    dates_df = pd.DataFrame(
    {'dates': pd.date_range('2015-10-30', '2015-11-02')})
    Expecting nothing
    ok
    Trying:
    mapper_dates = DataFrameMapper([
    ('dates', DateEncoder())
    ], input_df=True)
    Expecting nothing
    ok
    Trying:
    mapper_dates.fit_transform(dates_df)
    Expecting:
    array([[2015, 10, 30],
    [2015, 10, 31],
    [2015, 11, 1],
    [2015, 11, 2]], dtype=int32) **********************************************************************
    File "README.rst", line 228, in README.rst
    Failed example:
    mapper_dates.fit_transform(dates_df)
    Expected:
    array([[2015, 10, 30],
    [2015, 10, 31],
    [2015, 11, 1],
    [2015, 11, 2]], dtype=int32)
    Got:
    array([[2015, 10, 30],
    [2015, 10, 31],
    [2015, 11, 1],
    [2015, 11, 2]])
    Trying:
    mapper_dates = DataFrameMapper([
    ('dates', DateEncoder(), {'input_df': True})
    ])
    Expecting nothing
    ok
    Trying:
    mapper_dates.fit_transform(dates_df)
    Expecting:
    array([[2015, 10, 30],
    [2015, 10, 31],
    [2015, 11, 1],
    [2015, 11, 2]], dtype=int32) **********************************************************************
    File "README.rst", line 240, in README.rst
    Failed example:
    mapper_dates.fit_transform(dates_df)
    Expected:
    array([[2015, 10, 30],
    [2015, 10, 31],
    [2015, 11, 1],
    [2015, 11, 2]], dtype=int32)
    Got:
    array([[2015, 10, 30],
    [2015, 10, 31],
    [2015, 11, 1],
    [2015, 11, 2]])
    Trying:
    mapper_df = DataFrameMapper([
    ('pet', sklearn.preprocessing.LabelBinarizer()),
    (['children'], sklearn.preprocessing.StandardScaler())
    ], df_out=True)
    Expecting nothing
    ok
    Trying:
    np.round(mapper_df.fit_transform(data.copy()), 2)
    Expecting:
    pet_cat pet_dog pet_fish children
    0 1 0 0 0.21
    1 0 1 0 1.88
    2 0 1 0 -0.63
    3 0 0 1 -0.63
    4 1 0 0 -1.46
    5 0 1 0 -0.63
    6 1 0 0 1.04
    7 0 0 1 0.21
    ok
    Trying:
    mapper_df = DataFrameMapper([
    ('pet', sklearn.preprocessing.LabelBinarizer()),
    (['children'], sklearn.preprocessing.StandardScaler())
    ], drop_cols=['salary'])
    Expecting nothing
    ok
    Trying:
    np.round(mapper_df.fit_transform(data.copy()), 1)
    Expecting:
    array([[ 1. , 0. , 0. , 0.2],
    [ 0. , 1. , 0. , 1.9],
    [ 0. , 1. , 0. , -0.6],
    [ 0. , 0. , 1. , -0.6],
    [ 1. , 0. , 0. , -1.5],
    [ 0. , 1. , 0. , -0.6],
    [ 1. , 0. , 0. , 1. ],
    [ 0. , 0. , 1. , 0.2]])
    ok
    Trying:
    mapper2 = DataFrameMapper([
    (['children', 'salary'], sklearn.decomposition.PCA(1))
    ])
    Expecting nothing
    ok
    Trying:
    np.round(mapper2.fit_transform(data.copy()), 1)
    Expecting:
    array([[ 47.6],
    [-18.4],
    [ 1.6],
    [-15.4],
    [-10.4],
    [ 16.6],
    [ -6.4],
    [-15.4]])
    ok
    Trying:
    from sklearn.impute import SimpleImputer
    Expecting nothing
    ok
    Trying:
    mapper3 = DataFrameMapper([
    (['age'], [SimpleImputer(),
    sklearn.preprocessing.StandardScaler()])])
    Expecting nothing
    ok
    Trying:
    data_3 = pd.DataFrame({'age': [1, np.nan, 3]})
    Expecting nothing
    ok
    Trying:
    mapper3.fit_transform(data_3)
    Expecting:
    array([[-1.22474487],
    [ 0. ],
    [ 1.22474487]])
    ok
    Trying:
    mapper3 = DataFrameMapper([
    ('pet', sklearn.preprocessing.LabelBinarizer()),
    ('children', None)
    ])
    Expecting nothing
    ok
    Trying:
    np.round(mapper3.fit_transform(data.copy()))
    Expecting:
    array([[1., 0., 0., 4.],
    [0., 1., 0., 6.],
    [0., 1., 0., 3.],
    [0., 0., 1., 3.],
    [1., 0., 0., 2.],
    [0., 1., 0., 3.],
    [1., 0., 0., 5.],
    [0., 0., 1., 4.]])
    ok
    Trying:
    mapper4 = DataFrameMapper([
    ('pet', sklearn.preprocessing.LabelBinarizer()),
    ('children', None)
    ], default=sklearn.preprocessing.StandardScaler())
    Expecting nothing
    ok
    Trying:
    np.round(mapper4.fit_transform(data.copy()), 1)
    Expecting:
    array([[ 1. , 0. , 0. , 4. , 2.3],
    [ 0. , 1. , 0. , 6. , -0.9],
    [ 0. , 1. , 0. , 3. , 0.1],
    [ 0. , 0. , 1. , 3. , -0.7],
    [ 1. , 0. , 0. , 2. , -0.5],
    [ 0. , 1. , 0. , 3. , 0.8],
    [ 1. , 0. , 0. , 5. , -0.3],
    [ 0. , 0. , 1. , 4. , -0.7]])
    ok
    Trying:
    from sklearn_pandas import gen_features
    Expecting nothing
    ok
    Trying:
    feature_def = gen_features(
    columns=['col1', 'col2', 'col3'],
    classes=[sklearn.preprocessing.LabelEncoder]
    )
    Expecting nothing
    ok
    Trying:
    feature_def
    Expecting:
    [('col1', [LabelEncoder()], {}), ('col2', [LabelEncoder()], {}), ('col3', [LabelEncoder()], {})]
    ok
    Trying:
    mapper5 = DataFrameMapper(feature_def)
    Expecting nothing
    ok
    Trying:
    data5 = pd.DataFrame({
    'col1': ['yes', 'no', 'yes'],
    'col2': [True, False, False],
    'col3': ['one', 'two', 'three']
    })
    Expecting nothing
    ok
    Trying:
    mapper5.fit_transform(data5)
    Expecting:
    array([[1, 1, 0],
    [0, 0, 2],
    [1, 0, 1]])
    ok
    Trying:
    from sklearn.impute import SimpleImputer
    Expecting nothing
    ok
    Trying:
    import numpy as np
    Expecting nothing
    ok
    Trying:
    feature_def = gen_features(
    columns=[['col1'], ['col2'], ['col3']],
    classes=[{'class': SimpleImputer, 'strategy':'most_frequent'}]
    )
    Expecting nothing
    ok
    Trying:
    mapper6 = DataFrameMapper(feature_def)
    Expecting nothing
    ok
    Trying:
    data6 = pd.DataFrame({
    'col1': [np.nan, 1, 1, 2, 3],
    'col2': [True, False, np.nan, np.nan, True],
    'col3': [0, 0, 0, np.nan, np.nan]
    })
    Expecting nothing
    ok
    Trying:
    mapper6.fit_transform(data6)
    Expecting:
    array([[1.0, True, 0.0],
    [1.0, False, 0.0],
    [1.0, True, 0.0],
    [2.0, True, 0.0],
    [3.0, True, 0.0]], dtype=object)
    ok
    Trying:
    feature_def = gen_features(
    columns=['col1', 'col2', 'col3'],
    classes=[sklearn.preprocessing.LabelEncoder],
    prefix="lblencoder_"
    )
    Expecting nothing
    ok
    Trying:
    mapper5 = DataFrameMapper(feature_def)
    Expecting nothing
    ok
    Trying:
    data5 = pd.DataFrame({
    'col1': ['yes', 'no', 'yes'],
    'col2': [True, False, False],
    'col3': ['one', 'two', 'three']
    })
    Expecting nothing
    ok
    Trying:
    _ = mapper5.fit_transform(data5)
    Expecting nothing
    ok
    Trying:
    mapper5.transformed_names_
    Expecting:
    ['lblencoder_col1', 'lblencoder_col2', 'lblencoder_col3']
    ok
    Trying:
    from sklearn.feature_selection import SelectKBest, chi2
    Expecting nothing
    ok
    Trying:
    mapper_fs = DataFrameMapper([(['children','salary'], SelectKBest(chi2, k=1))])
    Expecting nothing
    ok
    Trying:
    mapper_fs.fit_transform(data[['children','salary']], data['pet']) Expecting:
    array([[90.],
    [24.],
    [44.],
    [27.],
    [32.],
    [59.],
    [36.],
    [27.]])
    ok
    Trying:
    mapper5 = DataFrameMapper([
    ('pet', CountVectorizer()),
    ], sparse=True)
    Expecting nothing
    ok
    Trying:
    type(mapper5.fit_transform(data))
    Expecting:
    <class 'scipy.sparse._csr.csr_matrix'>
    ok
    Trying:
    from sklearn_pandas import NumericalTransformer
    Expecting nothing
    ok
    Trying:
    mapper5 = DataFrameMapper([
    ('children', NumericalTransformer('log')),
    ])
    Expecting nothing
    ok
    Trying:
    mapper5.fit_transform(data)
    Expecting:
    array([[1.38629436],
    [1.79175947],
    [1.09861229],
    [1.09861229],
    [0.69314718],
    [1.09861229],
    [1.60943791],
    [1.38629436]])
    ok
    Trying:
    import logging
    Expecting nothing
    ok
    Trying:
    logging.getLogger('sklearn_pandas').setLevel(logging.INFO)
    Expecting nothing
    ok
    **********************************************************************
    1 item had failures:
    2 of 72 in README.rst
    72 tests in 1 item.
    70 passed and 2 failed.
    ***Test Failed*** 2 failures.
    E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /build/reproducible-path/sklearn-pandas-2.2.0/.pybuild/cpython3_3.13_sklearn-pandas/build; python3.13 -m pytest ; cd {dir}; python{version} -m doctest -v README.rst
    rm -fr -- /tmp/dh-xdg-rundir-pdmJDH4k
    dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13


    The full build log is available from: http://qa-logs.debian.net/2025/04/14/sklearn-pandas_2.2.0-4_testing-i386.log

    All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250414;users=lucas@debian.org
    or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250414&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

    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 mark 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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Fri May 16 13:00:01 2025
    This is a multi-part message in MIME format...

    Your message dated Fri, 16 May 2025 10:49:05 +0000
    with message-id <E1uFscj-006rPE-1Y@fasolo.debian.org>
    and subject line Bug#1103099: fixed in sklearn-pandas 2.2.0-5
    has caused the Debian Bug report #1103099,
    regarding sklearn-pandas: FTBFS in testing/i386: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
    to be marked as done.

    This means that you claim that the problem has been dealt with.
    If this is not the case it is now your responsibility to reopen the
    Bug report if necessary, and/or fix the problem forthwith.

    (NB: If you are a system administrator and have no idea what this
    message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org
    immediately.)


    --
    1103099: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103099
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    Received: (at submit) by bugs.debian.org; 14 Apr 2025 11:43:42 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.6-bugs.debian.org_2005_01_02
    (2021-04-09) on buxtehude.debian.org
    X-Spam-Level:
    X-Spam-Status: No, score=-105.1 required=4.0 tests=BAYES_00,DKIMWL_WL_HIGH,
    DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,
    FROMDEVELOPER,SPF_HELO_NONE,SPF_NONE,UNPARSEABLE_RELAY,
    USER_IN_DKIM_WELCOMELIST,USER_IN_DKIM_WHITELIST autolearn=ham
    autolearn_force=no version=3.4.6-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 204; hammy, 150; neutral, 433; spammy,
    0. spammytokens:
    hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
    0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
    0.000-+--H*RT:311, 0.000-+--H*RT:108
    Return-path: <lucas@debian.org>
    Received: from stravinsky.debian.org ([2001:41b8:202:deb::311:1