Your message dated Mon, 22 Aug 2022 08:49:46 +0000
with message-id <[email protected]>
and subject line Bug#1002400: fixed in umap-learn 0.4.5+dfsg-3
has caused the Debian Bug report #1002400,
regarding umap-learn: FTBFS: dh_auto_test: error: pybuild --test --test-pytest 
-i python{version} -p 3.9 --system=custom "--test-args=PYTHONPATH={build_dir} 
{interpreter} -m pytest" 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 [email protected]
immediately.)


-- 
1002400: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002400
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Source: umap-learn
Version: 0.4.5+dfsg-2
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: [email protected]
Usertags: ftbfs-20211220 ftbfs-bookworm

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_auto_test -- --system=custom --test-args="PYTHONPATH={build_dir} 
> {interpreter} -m pytest"
> I: pybuild base:237: PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build 
> python3.9 -m pytest
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.9.9, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>
> collected 128 items
> 
> umap/tests/test_plot.py .xx                                              [  
> 2%]
> umap/tests/test_umap_df_validation_params.py ...................         [ 
> 17%]
> umap/tests/test_umap_metrics.py ........................................ [ 
> 48%]
> .                                                                        [ 
> 49%]
> umap/tests/test_umap_nn.py ............                                  [ 
> 58%]
> umap/tests/test_umap_on_iris.py FFFFFF..                                 [ 
> 64%]
> umap/tests/test_umap_ops.py ....                                         [ 
> 67%]
> umap/tests/test_umap_repeated_data.py .........                          [ 
> 75%]
> umap/tests/test_umap_trustworthiness.py FFFFFFFFF                        [ 
> 82%]
> umap/tests/test_umap_validation_params.py .......................        
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ______________________ test_umap_trustworthiness_on_iris 
> _______________________
> 
> iris = {'data': array([[5.1, 3.5, 1.4, 0.2],
>        [4.9, 3. , 1.4, 0.2],
>        [4.7, 3.2, 1.3, 0.2],
>        [4.6, 3.1, 1.5,... width (cm)', 'petal length (cm)', 'petal width 
> (cm)'], 'filename': 'iris.csv', 'data_module': 'sklearn.datasets.data'}
> iris_model = UMAP(min_dist=0.01, n_neighbors=10, random_state=42)
> 
>     def test_umap_trustworthiness_on_iris(iris, iris_model):
>         embedding = iris_model.embedding_
> >       trust = trustworthiness(iris.data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_on_iris.py:27: TypeError
> ________________ test_initialized_umap_trustworthiness_on_iris 
> _________________
> 
> iris = {'data': array([[5.1, 3.5, 1.4, 0.2],
>        [4.9, 3. , 1.4, 0.2],
>        [4.7, 3.2, 1.3, 0.2],
>        [4.6, 3.1, 1.5,... width (cm)', 'petal length (cm)', 'petal width 
> (cm)'], 'filename': 'iris.csv', 'data_module': 'sklearn.datasets.data'}
> 
>     def test_initialized_umap_trustworthiness_on_iris(iris):
>         data = iris.data
>         embedding = UMAP(
>             n_neighbors=10, min_dist=0.01, init=data[:, 2:], n_epochs=200, 
> random_state=42
>         ).fit_transform(data)
> >       trust = trustworthiness(iris.data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_on_iris.py:40: TypeError
> ___________________ test_umap_trustworthiness_on_sphere_iris 
> ___________________
> 
> iris = {'data': array([[5.1, 3.5, 1.4, 0.2],
>        [4.9, 3. , 1.4, 0.2],
>        [4.7, 3.2, 1.3, 0.2],
>        [4.6, 3.1, 1.5,... width (cm)', 'petal length (cm)', 'petal width 
> (cm)'], 'filename': 'iris.csv', 'data_module': 'sklearn.datasets.data'}
> 
>     def test_umap_trustworthiness_on_sphere_iris(iris,):
>         data = iris.data
>         embedding = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             n_epochs=200,
>             random_state=42,
>             output_metric="haversine",
>         ).fit_transform(data)
>         # Since trustworthiness doesn't support haversine, project onto
>         # a 3D embedding of the sphere and use cosine distance
>         r = 3
>         projected_embedding = np.vstack(
>             [
>                 r * np.sin(embedding[:, 0]) * np.cos(embedding[:, 1]),
>                 r * np.sin(embedding[:, 0]) * np.sin(embedding[:, 1]),
>                 r * np.cos(embedding[:, 0]),
>             ]
>         ).T
> >       trust = trustworthiness(iris.data, projected_embedding, 10, 
> > metric="cosine")
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 
> positional arguments (and 1 keyword-only argument) were given
> 
> umap/tests/test_umap_on_iris.py:67: TypeError
> _________________________ test_umap_transform_on_iris 
> __________________________
> 
> iris = {'data': array([[5.1, 3.5, 1.4, 0.2],
>        [4.9, 3. , 1.4, 0.2],
>        [4.7, 3.2, 1.3, 0.2],
>        [4.6, 3.1, 1.5,... width (cm)', 'petal length (cm)', 'petal width 
> (cm)'], 'filename': 'iris.csv', 'data_module': 'sklearn.datasets.data'}
> iris_selection = array([ True,  True,  True,  True, False,  True,  True, 
> False,  True,
>         True,  True,  True,  True,  True,  True,...        True,  True,  
> True,  True,  True,  True,  True, False, False,
>         True,  True, False,  True, False, False])
> 
>     def test_umap_transform_on_iris(iris, iris_selection):
>         data = iris.data[iris_selection]
>         fitter = UMAP(n_neighbors=10, min_dist=0.01, n_epochs=200, 
> random_state=42).fit(
>             data
>         )
>     
>         new_data = iris.data[~iris_selection]
>         embedding = fitter.transform(new_data)
>     
> >       trust = trustworthiness(new_data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_on_iris.py:88: TypeError
> __________________ test_umap_transform_on_iris_modified_dtype 
> __________________
> 
> iris = {'data': array([[5.1, 3.5, 1.4, 0.2],
>        [4.9, 3. , 1.4, 0.2],
>        [4.7, 3.2, 1.3, 0.2],
>        [4.6, 3.1, 1.5,... width (cm)', 'petal length (cm)', 'petal width 
> (cm)'], 'filename': 'iris.csv', 'data_module': 'sklearn.datasets.data'}
> iris_selection = array([ True,  True,  True,  True, False,  True,  True, 
> False,  True,
>         True,  True,  True,  True,  True,  True,...        True,  True,  
> True,  True,  True,  True,  True, False, False,
>         True,  True, False,  True, False, False])
> 
>     def test_umap_transform_on_iris_modified_dtype(iris, iris_selection):
>         data = iris.data[iris_selection]
>         fitter = UMAP(n_neighbors=10, min_dist=0.01, 
> random_state=42).fit(data)
>         fitter.embedding_ = fitter.embedding_.astype(np.float64)
>     
>         new_data = iris.data[~iris_selection]
>         embedding = fitter.transform(new_data)
>     
> >       trust = trustworthiness(new_data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_on_iris.py:104: TypeError
> ______________________ test_umap_sparse_transform_on_iris 
> ______________________
> 
> iris = {'data': array([[5.1, 3.5, 1.4, 0.2],
>        [4.9, 3. , 1.4, 0.2],
>        [4.7, 3.2, 1.3, 0.2],
>        [4.6, 3.1, 1.5,... width (cm)', 'petal length (cm)', 'petal width 
> (cm)'], 'filename': 'iris.csv', 'data_module': 'sklearn.datasets.data'}
> iris_selection = array([ True,  True,  True,  True, False,  True,  True, 
> False,  True,
>         True,  True,  True,  True,  True,  True,...        True,  True,  
> True,  True,  True,  True,  True, False, False,
>         True,  True, False,  True, False, False])
> 
>     def test_umap_sparse_transform_on_iris(iris, iris_selection):
>         data = sparse.csr_matrix(iris.data[iris_selection])
>         assert sparse.issparse(data)
>         fitter = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             random_state=42,
>             n_epochs=100,
>             force_approximation_algorithm=True,
>         ).fit(data)
>     
>         new_data = sparse.csr_matrix(iris.data[~iris_selection])
>         assert sparse.issparse(new_data)
>         embedding = fitter.transform(new_data)
>     
> >       trust = trustworthiness(new_data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_on_iris.py:127: TypeError
> _______________________ test_umap_sparse_trustworthiness 
> _______________________
> 
> sparse_test_data = <1002x5 sparse matrix of type '<class 'numpy.float64'>'
>       with 1672 stored elements in Compressed Sparse Row format>
> 
>     def test_umap_sparse_trustworthiness(sparse_test_data):
>         embedding = UMAP(n_neighbors=10).fit_transform(sparse_test_data[:100])
> >       trust = trustworthiness(sparse_test_data[:100].toarray(), embedding, 
> > 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:23: TypeError
> ____________________ test_umap_trustworthiness_fast_approx 
> _____________________
> 
> nn_data = array([[0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864],
>        [0.15599452, 0.05808361, 0.86617615, 0.601... 0.        , 0.        , 
> 0.        , 0.        ],
>        [0.        , 0.        , 0.        , 0.        , 0.        ]])
> 
>     def test_umap_trustworthiness_fast_approx(nn_data):
>         data = nn_data[:50]
>         embedding = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             random_state=42,
>             n_epochs=100,
>             force_approximation_algorithm=True,
>         ).fit_transform(data)
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:41: TypeError
> ____________________ test_umap_trustworthiness_random_init 
> _____________________
> 
> nn_data = array([[0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864],
>        [0.15599452, 0.05808361, 0.86617615, 0.601... 0.        , 0.        , 
> 0.        , 0.        ],
>        [0.        , 0.        , 0.        , 0.        , 0.        ]])
> 
>     def test_umap_trustworthiness_random_init(nn_data):
>         data = nn_data[:50]
>         embedding = UMAP(
>             n_neighbors=10, min_dist=0.01, random_state=42, init="random"
>         ).fit_transform(data)
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:54: TypeError
> _____________________ test_supervised_umap_trustworthiness 
> _____________________
> 
>     def test_supervised_umap_trustworthiness():
>         data, labels = make_blobs(50, cluster_std=0.5, random_state=42)
>         embedding = UMAP(n_neighbors=10, min_dist=0.01, 
> random_state=42).fit_transform(
>             data, labels
>         )
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:67: TypeError
> ___________________ test_semisupervised_umap_trustworthiness 
> ___________________
> 
>     def test_semisupervised_umap_trustworthiness():
>         data, labels = make_blobs(50, cluster_std=0.5, random_state=42)
>         labels[10:30] = -1
>         embedding = UMAP(n_neighbors=10, min_dist=0.01, 
> random_state=42).fit_transform(
>             data, labels
>         )
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:81: TypeError
> _________________ test_metric_supervised_umap_trustworthiness 
> __________________
> 
>     def test_metric_supervised_umap_trustworthiness():
>         data, labels = make_blobs(50, cluster_std=0.5, random_state=42)
>         embedding = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             target_metric="l1",
>             target_weight=0.8,
>             n_epochs=100,
>             random_state=42,
>         ).fit_transform(data, labels)
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:99: TypeError
> ______________ test_string_metric_supervised_umap_trustworthiness 
> ______________
> 
> array = array(['this', 'this', 'that', 'other', 'this', 'this', 'this', 
> 'this',
>        'that', 'other', 'that', 'that', 'that'...other',
>        'other', 'this', 'other', 'this', 'this', 'other', 'this', 'other',
>        'that', 'that'], dtype='<U5')
> accept_sparse = False
> 
>     def check_array(
>         array,
>         accept_sparse=False,
>         *,
>         accept_large_sparse=True,
>         dtype="numeric",
>         order=None,
>         copy=False,
>         force_all_finite=True,
>         ensure_2d=True,
>         allow_nd=False,
>         ensure_min_samples=1,
>         ensure_min_features=1,
>         estimator=None,
>     ):
>     
>         """Input validation on an array, list, sparse matrix or similar.
>     
>         By default, the input is checked to be a non-empty 2D array containing
>         only finite values. If the dtype of the array is object, attempt
>         converting to float, raising on failure.
>     
>         Parameters
>         ----------
>         array : object
>             Input object to check / convert.
>     
>         accept_sparse : str, bool or list/tuple of str, default=False
>             String[s] representing allowed sparse matrix formats, such as 
> 'csc',
>             'csr', etc. If the input is sparse but not in the allowed format,
>             it will be converted to the first listed format. True allows the 
> input
>             to be any format. False means that a sparse matrix input will
>             raise an error.
>     
>         accept_large_sparse : bool, default=True
>             If a CSR, CSC, COO or BSR sparse matrix is supplied and accepted 
> by
>             accept_sparse, accept_large_sparse=False will cause it to be 
> accepted
>             only if its indices are stored with a 32-bit dtype.
>     
>             .. versionadded:: 0.20
>     
>         dtype : 'numeric', type, list of type or None, default='numeric'
>             Data type of result. If None, the dtype of the input is preserved.
>             If "numeric", dtype is preserved unless array.dtype is object.
>             If dtype is a list of types, conversion on the first type is only
>             performed if the dtype of the input is not in the list.
>     
>         order : {'F', 'C'} or None, default=None
>             Whether an array will be forced to be fortran or c-style.
>             When order is None (default), then if copy=False, nothing is 
> ensured
>             about the memory layout of the output array; otherwise (copy=True)
>             the memory layout of the returned array is kept as close as 
> possible
>             to the original array.
>     
>         copy : bool, default=False
>             Whether a forced copy will be triggered. If copy=False, a copy 
> might
>             be triggered by a conversion.
>     
>         force_all_finite : bool or 'allow-nan', default=True
>             Whether to raise an error on np.inf, np.nan, pd.NA in array. The
>             possibilities are:
>     
>             - True: Force all values of array to be finite.
>             - False: accepts np.inf, np.nan, pd.NA in array.
>             - 'allow-nan': accepts only np.nan and pd.NA values in array. 
> Values
>               cannot be infinite.
>     
>             .. versionadded:: 0.20
>                ``force_all_finite`` accepts the string ``'allow-nan'``.
>     
>             .. versionchanged:: 0.23
>                Accepts `pd.NA` and converts it into `np.nan`
>     
>         ensure_2d : bool, default=True
>             Whether to raise a value error if array is not 2D.
>     
>         allow_nd : bool, default=False
>             Whether to allow array.ndim > 2.
>     
>         ensure_min_samples : int, default=1
>             Make sure that the array has a minimum number of samples in its 
> first
>             axis (rows for a 2D array). Setting to 0 disables this check.
>     
>         ensure_min_features : int, default=1
>             Make sure that the 2D array has some minimum number of features
>             (columns). The default value of 1 rejects empty datasets.
>             This check is only enforced when the input data has effectively 2
>             dimensions or is originally 1D and ``ensure_2d`` is True. Setting 
> to 0
>             disables this check.
>     
>         estimator : str or estimator instance, default=None
>             If passed, include the name of the estimator in warning messages.
>     
>         Returns
>         -------
>         array_converted : object
>             The converted and validated array.
>         """
>         if isinstance(array, np.matrix):
>             warnings.warn(
>                 "np.matrix usage is deprecated in 1.0 and will raise a 
> TypeError "
>                 "in 1.2. Please convert to a numpy array with np.asarray. For 
> "
>                 "more information see: "
>                 
> "https://numpy.org/doc/stable/reference/generated/numpy.matrix.html";,  # noqa
>                 FutureWarning,
>             )
>     
>         # store reference to original array to check if copy is needed when
>         # function returns
>         array_orig = array
>     
>         # store whether originally we wanted numeric dtype
>         dtype_numeric = isinstance(dtype, str) and dtype == "numeric"
>     
>         dtype_orig = getattr(array, "dtype", None)
>         if not hasattr(dtype_orig, "kind"):
>             # not a data type (e.g. a column named dtype in a pandas 
> DataFrame)
>             dtype_orig = None
>     
>         # check if the object contains several dtypes (typically a pandas
>         # DataFrame), and store them. If not, store None.
>         dtypes_orig = None
>         has_pd_integer_array = False
>         if hasattr(array, "dtypes") and hasattr(array.dtypes, "__array__"):
>             # throw warning if columns are sparse. If all columns are sparse, 
> then
>             # array.sparse exists and sparsity will be preserved (later).
>             with suppress(ImportError):
>                 from pandas.api.types import is_sparse
>     
>                 if not hasattr(array, "sparse") and 
> array.dtypes.apply(is_sparse).any():
>                     warnings.warn(
>                         "pandas.DataFrame with sparse columns found."
>                         "It will be converted to a dense numpy array."
>                     )
>     
>             dtypes_orig = list(array.dtypes)
>             # pandas boolean dtype __array__ interface coerces bools to 
> objects
>             for i, dtype_iter in enumerate(dtypes_orig):
>                 if dtype_iter.kind == "b":
>                     dtypes_orig[i] = np.dtype(object)
>                 elif dtype_iter.name.startswith(("Int", "UInt")):
>                     # name looks like an Integer Extension Array, now check 
> for
>                     # the dtype
>                     with suppress(ImportError):
>                         from pandas import (
>                             Int8Dtype,
>                             Int16Dtype,
>                             Int32Dtype,
>                             Int64Dtype,
>                             UInt8Dtype,
>                             UInt16Dtype,
>                             UInt32Dtype,
>                             UInt64Dtype,
>                         )
>     
>                         if isinstance(
>                             dtype_iter,
>                             (
>                                 Int8Dtype,
>                                 Int16Dtype,
>                                 Int32Dtype,
>                                 Int64Dtype,
>                                 UInt8Dtype,
>                                 UInt16Dtype,
>                                 UInt32Dtype,
>                                 UInt64Dtype,
>                             ),
>                         ):
>                             has_pd_integer_array = True
>     
>             if all(isinstance(dtype, np.dtype) for dtype in dtypes_orig):
>                 dtype_orig = np.result_type(*dtypes_orig)
>     
>         if dtype_numeric:
>             if dtype_orig is not None and dtype_orig.kind == "O":
>                 # if input is object, convert to float.
>                 dtype = np.float64
>             else:
>                 dtype = None
>     
>         if isinstance(dtype, (list, tuple)):
>             if dtype_orig is not None and dtype_orig in dtype:
>                 # no dtype conversion required
>                 dtype = None
>             else:
>                 # dtype conversion required. Let's select the first element 
> of the
>                 # list of accepted types.
>                 dtype = dtype[0]
>     
>         if has_pd_integer_array:
>             # If there are any pandas integer extension arrays,
>             array = array.astype(dtype)
>     
>         if force_all_finite not in (True, False, "allow-nan"):
>             raise ValueError(
>                 'force_all_finite should be a bool or "allow-nan". Got {!r} 
> instead'.format(
>                     force_all_finite
>                 )
>             )
>     
>         if estimator is not None:
>             if isinstance(estimator, str):
>                 estimator_name = estimator
>             else:
>                 estimator_name = estimator.__class__.__name__
>         else:
>             estimator_name = "Estimator"
>         context = " by %s" % estimator_name if estimator is not None else ""
>     
>         # When all dataframe columns are sparse, convert to a sparse array
>         if hasattr(array, "sparse") and array.ndim > 1:
>             # DataFrame.sparse only supports `to_coo`
>             array = array.sparse.to_coo()
>             if array.dtype == np.dtype("object"):
>                 unique_dtypes = set([dt.subtype.name for dt in 
> array_orig.dtypes])
>                 if len(unique_dtypes) > 1:
>                     raise ValueError(
>                         "Pandas DataFrame with mixed sparse extension arrays "
>                         "generated a sparse matrix with object dtype which "
>                         "can not be converted to a scipy sparse matrix."
>                         "Sparse extension arrays should all have the same "
>                         "numeric type."
>                     )
>     
>         if sp.issparse(array):
>             _ensure_no_complex_data(array)
>             array = _ensure_sparse_format(
>                 array,
>                 accept_sparse=accept_sparse,
>                 dtype=dtype,
>                 copy=copy,
>                 force_all_finite=force_all_finite,
>                 accept_large_sparse=accept_large_sparse,
>             )
>         else:
>             # If np.array(..) gives ComplexWarning, then we convert the 
> warning
>             # to an error. This is needed because specifying a non complex
>             # dtype to the function converts complex to real dtype,
>             # thereby passing the test made in the lines following the scope
>             # of warnings context manager.
>             with warnings.catch_warnings():
>                 try:
>                     warnings.simplefilter("error", ComplexWarning)
>                     if dtype is not None and np.dtype(dtype).kind in "iu":
>                         # Conversion float -> int should not contain NaN or
>                         # inf (numpy#14412). We cannot use casting='safe' 
> because
>                         # then conversion float -> int would be disallowed.
>                         array = np.asarray(array, order=order)
>                         if array.dtype.kind == "f":
>                             _assert_all_finite(array, allow_nan=False, 
> msg_dtype=dtype)
>                         array = array.astype(dtype, casting="unsafe", 
> copy=False)
>                     else:
>                         array = np.asarray(array, order=order, dtype=dtype)
>                 except ComplexWarning as complex_warning:
>                     raise ValueError(
>                         "Complex data not supported\n{}\n".format(array)
>                     ) from complex_warning
>     
>             # It is possible that the np.array(..) gave no warning. This 
> happens
>             # when no dtype conversion happened, for example dtype = None. The
>             # result is that np.array(..) produces an array of complex dtype
>             # and we need to catch and raise exception for such cases.
>             _ensure_no_complex_data(array)
>     
>             if ensure_2d:
>                 # If input is scalar raise error
>                 if array.ndim == 0:
>                     raise ValueError(
>                         "Expected 2D array, got scalar array 
> instead:\narray={}.\n"
>                         "Reshape your data either using array.reshape(-1, 1) 
> if "
>                         "your data has a single feature or array.reshape(1, 
> -1) "
>                         "if it contains a single sample.".format(array)
>                     )
>                 # If input is 1D raise error
>                 if array.ndim == 1:
>                     raise ValueError(
>                         "Expected 2D array, got 1D array 
> instead:\narray={}.\n"
>                         "Reshape your data either using array.reshape(-1, 1) 
> if "
>                         "your data has a single feature or array.reshape(1, 
> -1) "
>                         "if it contains a single sample.".format(array)
>                     )
>     
>             # make sure we actually converted to numeric:
>             if dtype_numeric and array.dtype.kind in "OUSV":
>                 warnings.warn(
>                     "Arrays of bytes/strings is being converted to decimal "
>                     "numbers if dtype='numeric'. This behavior is deprecated 
> in "
>                     "0.24 and will be removed in 1.1 (renaming of 0.26). 
> Please "
>                     "convert your data to numeric values explicitly instead.",
>                     FutureWarning,
>                     stacklevel=2,
>                 )
>                 try:
> >                   array = array.astype(np.float64)
> E                   ValueError: could not convert string to float: 'this'
> 
> /usr/lib/python3/dist-packages/sklearn/utils/validation.py:779: ValueError
> 
> The above exception was the direct cause of the following exception:
> 
>     def test_string_metric_supervised_umap_trustworthiness():
>         data, labels = make_blobs(50, cluster_std=0.5, random_state=42)
>         labels = np.array(["this", "that", "other"])[labels]
> >       embedding = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             target_metric="string",
>             target_weight=0.8,
>             n_epochs=100,
>             random_state=42,
>         ).fit_transform(data, labels)
> 
> umap/tests/test_umap_trustworthiness.py:110: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> umap/umap_.py:2014: in fit_transform
>     self.fit(X, y)
> umap/umap_.py:1867: in fit
>     y_ = check_array(y, ensure_2d=False)[index]
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> array = array(['this', 'this', 'that', 'other', 'this', 'this', 'this', 
> 'this',
>        'that', 'other', 'that', 'that', 'that'...other',
>        'other', 'this', 'other', 'this', 'this', 'other', 'this', 'other',
>        'that', 'that'], dtype='<U5')
> accept_sparse = False
> 
>     def check_array(
>         array,
>         accept_sparse=False,
>         *,
>         accept_large_sparse=True,
>         dtype="numeric",
>         order=None,
>         copy=False,
>         force_all_finite=True,
>         ensure_2d=True,
>         allow_nd=False,
>         ensure_min_samples=1,
>         ensure_min_features=1,
>         estimator=None,
>     ):
>     
>         """Input validation on an array, list, sparse matrix or similar.
>     
>         By default, the input is checked to be a non-empty 2D array containing
>         only finite values. If the dtype of the array is object, attempt
>         converting to float, raising on failure.
>     
>         Parameters
>         ----------
>         array : object
>             Input object to check / convert.
>     
>         accept_sparse : str, bool or list/tuple of str, default=False
>             String[s] representing allowed sparse matrix formats, such as 
> 'csc',
>             'csr', etc. If the input is sparse but not in the allowed format,
>             it will be converted to the first listed format. True allows the 
> input
>             to be any format. False means that a sparse matrix input will
>             raise an error.
>     
>         accept_large_sparse : bool, default=True
>             If a CSR, CSC, COO or BSR sparse matrix is supplied and accepted 
> by
>             accept_sparse, accept_large_sparse=False will cause it to be 
> accepted
>             only if its indices are stored with a 32-bit dtype.
>     
>             .. versionadded:: 0.20
>     
>         dtype : 'numeric', type, list of type or None, default='numeric'
>             Data type of result. If None, the dtype of the input is preserved.
>             If "numeric", dtype is preserved unless array.dtype is object.
>             If dtype is a list of types, conversion on the first type is only
>             performed if the dtype of the input is not in the list.
>     
>         order : {'F', 'C'} or None, default=None
>             Whether an array will be forced to be fortran or c-style.
>             When order is None (default), then if copy=False, nothing is 
> ensured
>             about the memory layout of the output array; otherwise (copy=True)
>             the memory layout of the returned array is kept as close as 
> possible
>             to the original array.
>     
>         copy : bool, default=False
>             Whether a forced copy will be triggered. If copy=False, a copy 
> might
>             be triggered by a conversion.
>     
>         force_all_finite : bool or 'allow-nan', default=True
>             Whether to raise an error on np.inf, np.nan, pd.NA in array. The
>             possibilities are:
>     
>             - True: Force all values of array to be finite.
>             - False: accepts np.inf, np.nan, pd.NA in array.
>             - 'allow-nan': accepts only np.nan and pd.NA values in array. 
> Values
>               cannot be infinite.
>     
>             .. versionadded:: 0.20
>                ``force_all_finite`` accepts the string ``'allow-nan'``.
>     
>             .. versionchanged:: 0.23
>                Accepts `pd.NA` and converts it into `np.nan`
>     
>         ensure_2d : bool, default=True
>             Whether to raise a value error if array is not 2D.
>     
>         allow_nd : bool, default=False
>             Whether to allow array.ndim > 2.
>     
>         ensure_min_samples : int, default=1
>             Make sure that the array has a minimum number of samples in its 
> first
>             axis (rows for a 2D array). Setting to 0 disables this check.
>     
>         ensure_min_features : int, default=1
>             Make sure that the 2D array has some minimum number of features
>             (columns). The default value of 1 rejects empty datasets.
>             This check is only enforced when the input data has effectively 2
>             dimensions or is originally 1D and ``ensure_2d`` is True. Setting 
> to 0
>             disables this check.
>     
>         estimator : str or estimator instance, default=None
>             If passed, include the name of the estimator in warning messages.
>     
>         Returns
>         -------
>         array_converted : object
>             The converted and validated array.
>         """
>         if isinstance(array, np.matrix):
>             warnings.warn(
>                 "np.matrix usage is deprecated in 1.0 and will raise a 
> TypeError "
>                 "in 1.2. Please convert to a numpy array with np.asarray. For 
> "
>                 "more information see: "
>                 
> "https://numpy.org/doc/stable/reference/generated/numpy.matrix.html";,  # noqa
>                 FutureWarning,
>             )
>     
>         # store reference to original array to check if copy is needed when
>         # function returns
>         array_orig = array
>     
>         # store whether originally we wanted numeric dtype
>         dtype_numeric = isinstance(dtype, str) and dtype == "numeric"
>     
>         dtype_orig = getattr(array, "dtype", None)
>         if not hasattr(dtype_orig, "kind"):
>             # not a data type (e.g. a column named dtype in a pandas 
> DataFrame)
>             dtype_orig = None
>     
>         # check if the object contains several dtypes (typically a pandas
>         # DataFrame), and store them. If not, store None.
>         dtypes_orig = None
>         has_pd_integer_array = False
>         if hasattr(array, "dtypes") and hasattr(array.dtypes, "__array__"):
>             # throw warning if columns are sparse. If all columns are sparse, 
> then
>             # array.sparse exists and sparsity will be preserved (later).
>             with suppress(ImportError):
>                 from pandas.api.types import is_sparse
>     
>                 if not hasattr(array, "sparse") and 
> array.dtypes.apply(is_sparse).any():
>                     warnings.warn(
>                         "pandas.DataFrame with sparse columns found."
>                         "It will be converted to a dense numpy array."
>                     )
>     
>             dtypes_orig = list(array.dtypes)
>             # pandas boolean dtype __array__ interface coerces bools to 
> objects
>             for i, dtype_iter in enumerate(dtypes_orig):
>                 if dtype_iter.kind == "b":
>                     dtypes_orig[i] = np.dtype(object)
>                 elif dtype_iter.name.startswith(("Int", "UInt")):
>                     # name looks like an Integer Extension Array, now check 
> for
>                     # the dtype
>                     with suppress(ImportError):
>                         from pandas import (
>                             Int8Dtype,
>                             Int16Dtype,
>                             Int32Dtype,
>                             Int64Dtype,
>                             UInt8Dtype,
>                             UInt16Dtype,
>                             UInt32Dtype,
>                             UInt64Dtype,
>                         )
>     
>                         if isinstance(
>                             dtype_iter,
>                             (
>                                 Int8Dtype,
>                                 Int16Dtype,
>                                 Int32Dtype,
>                                 Int64Dtype,
>                                 UInt8Dtype,
>                                 UInt16Dtype,
>                                 UInt32Dtype,
>                                 UInt64Dtype,
>                             ),
>                         ):
>                             has_pd_integer_array = True
>     
>             if all(isinstance(dtype, np.dtype) for dtype in dtypes_orig):
>                 dtype_orig = np.result_type(*dtypes_orig)
>     
>         if dtype_numeric:
>             if dtype_orig is not None and dtype_orig.kind == "O":
>                 # if input is object, convert to float.
>                 dtype = np.float64
>             else:
>                 dtype = None
>     
>         if isinstance(dtype, (list, tuple)):
>             if dtype_orig is not None and dtype_orig in dtype:
>                 # no dtype conversion required
>                 dtype = None
>             else:
>                 # dtype conversion required. Let's select the first element 
> of the
>                 # list of accepted types.
>                 dtype = dtype[0]
>     
>         if has_pd_integer_array:
>             # If there are any pandas integer extension arrays,
>             array = array.astype(dtype)
>     
>         if force_all_finite not in (True, False, "allow-nan"):
>             raise ValueError(
>                 'force_all_finite should be a bool or "allow-nan". Got {!r} 
> instead'.format(
>                     force_all_finite
>                 )
>             )
>     
>         if estimator is not None:
>             if isinstance(estimator, str):
>                 estimator_name = estimator
>             else:
>                 estimator_name = estimator.__class__.__name__
>         else:
>             estimator_name = "Estimator"
>         context = " by %s" % estimator_name if estimator is not None else ""
>     
>         # When all dataframe columns are sparse, convert to a sparse array
>         if hasattr(array, "sparse") and array.ndim > 1:
>             # DataFrame.sparse only supports `to_coo`
>             array = array.sparse.to_coo()
>             if array.dtype == np.dtype("object"):
>                 unique_dtypes = set([dt.subtype.name for dt in 
> array_orig.dtypes])
>                 if len(unique_dtypes) > 1:
>                     raise ValueError(
>                         "Pandas DataFrame with mixed sparse extension arrays "
>                         "generated a sparse matrix with object dtype which "
>                         "can not be converted to a scipy sparse matrix."
>                         "Sparse extension arrays should all have the same "
>                         "numeric type."
>                     )
>     
>         if sp.issparse(array):
>             _ensure_no_complex_data(array)
>             array = _ensure_sparse_format(
>                 array,
>                 accept_sparse=accept_sparse,
>                 dtype=dtype,
>                 copy=copy,
>                 force_all_finite=force_all_finite,
>                 accept_large_sparse=accept_large_sparse,
>             )
>         else:
>             # If np.array(..) gives ComplexWarning, then we convert the 
> warning
>             # to an error. This is needed because specifying a non complex
>             # dtype to the function converts complex to real dtype,
>             # thereby passing the test made in the lines following the scope
>             # of warnings context manager.
>             with warnings.catch_warnings():
>                 try:
>                     warnings.simplefilter("error", ComplexWarning)
>                     if dtype is not None and np.dtype(dtype).kind in "iu":
>                         # Conversion float -> int should not contain NaN or
>                         # inf (numpy#14412). We cannot use casting='safe' 
> because
>                         # then conversion float -> int would be disallowed.
>                         array = np.asarray(array, order=order)
>                         if array.dtype.kind == "f":
>                             _assert_all_finite(array, allow_nan=False, 
> msg_dtype=dtype)
>                         array = array.astype(dtype, casting="unsafe", 
> copy=False)
>                     else:
>                         array = np.asarray(array, order=order, dtype=dtype)
>                 except ComplexWarning as complex_warning:
>                     raise ValueError(
>                         "Complex data not supported\n{}\n".format(array)
>                     ) from complex_warning
>     
>             # It is possible that the np.array(..) gave no warning. This 
> happens
>             # when no dtype conversion happened, for example dtype = None. The
>             # result is that np.array(..) produces an array of complex dtype
>             # and we need to catch and raise exception for such cases.
>             _ensure_no_complex_data(array)
>     
>             if ensure_2d:
>                 # If input is scalar raise error
>                 if array.ndim == 0:
>                     raise ValueError(
>                         "Expected 2D array, got scalar array 
> instead:\narray={}.\n"
>                         "Reshape your data either using array.reshape(-1, 1) 
> if "
>                         "your data has a single feature or array.reshape(1, 
> -1) "
>                         "if it contains a single sample.".format(array)
>                     )
>                 # If input is 1D raise error
>                 if array.ndim == 1:
>                     raise ValueError(
>                         "Expected 2D array, got 1D array 
> instead:\narray={}.\n"
>                         "Reshape your data either using array.reshape(-1, 1) 
> if "
>                         "your data has a single feature or array.reshape(1, 
> -1) "
>                         "if it contains a single sample.".format(array)
>                     )
>     
>             # make sure we actually converted to numeric:
>             if dtype_numeric and array.dtype.kind in "OUSV":
>                 warnings.warn(
>                     "Arrays of bytes/strings is being converted to decimal "
>                     "numbers if dtype='numeric'. This behavior is deprecated 
> in "
>                     "0.24 and will be removed in 1.1 (renaming of 0.26). 
> Please "
>                     "convert your data to numeric values explicitly instead.",
>                     FutureWarning,
>                     stacklevel=2,
>                 )
>                 try:
>                     array = array.astype(np.float64)
>                 except ValueError as e:
> >                   raise ValueError(
>                         "Unable to convert array of bytes/strings "
>                         "into decimal numbers with dtype='numeric'"
>                     ) from e
> E                   ValueError: Unable to convert array of bytes/strings into 
> decimal numbers with dtype='numeric'
> 
> /usr/lib/python3/dist-packages/sklearn/utils/validation.py:781: ValueError
> _____________ test_discrete_metric_supervised_umap_trustworthiness 
> _____________
> 
>     def test_discrete_metric_supervised_umap_trustworthiness():
>         data, labels = make_blobs(50, cluster_std=0.5, random_state=42)
>         embedding = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             target_metric="ordinal",
>             target_weight=0.8,
>             n_epochs=100,
>             random_state=42,
>         ).fit_transform(data, labels)
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:136: TypeError
> ______________ test_count_metric_supervised_umap_trustworthiness 
> _______________
> 
>     def test_count_metric_supervised_umap_trustworthiness():
>         data, labels = make_blobs(50, cluster_std=0.5, random_state=42)
>         labels = (labels ** 2) + 2 * labels
>         embedding = UMAP(
>             n_neighbors=10,
>             min_dist=0.01,
>             target_metric="count",
>             target_weight=0.8,
>             n_epochs=100,
>             random_state=42,
>         ).fit_transform(data, labels)
> >       trust = trustworthiness(data, embedding, 10)
> E       TypeError: trustworthiness() takes 2 positional arguments but 3 were 
> given
> 
> umap/tests/test_umap_trustworthiness.py:155: TypeError
> =============================== warnings summary 
> ===============================
> ../../../usr/lib/python3/dist-packages/numba/core/types/__init__.py:108
>   /usr/lib/python3/dist-packages/numba/core/types/__init__.py:108: 
> DeprecationWarning: `np.long` is a deprecated alias for `np.compat.long`. To 
> silence this warning, use `np.compat.long` by itself. In the likely event 
> your code does not need to work on Python 2 you can use the builtin `int` for 
> which `np.compat.long` is itself an alias. Doing this will not modify any 
> behaviour and is safe. When replacing `np.long`, you may wish to use e.g. 
> `np.int64` or `np.int32` to specify the precision. If you wish to review your 
> current use, check the release note link for additional information.
>   Deprecated in NumPy 1.20; for more details and guidance: 
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     long_ = _make_signed(np.long)
> 
> ../../../usr/lib/python3/dist-packages/numba/core/types/__init__.py:109
>   /usr/lib/python3/dist-packages/numba/core/types/__init__.py:109: 
> DeprecationWarning: `np.long` is a deprecated alias for `np.compat.long`. To 
> silence this warning, use `np.compat.long` by itself. In the likely event 
> your code does not need to work on Python 2 you can use the builtin `int` for 
> which `np.compat.long` is itself an alias. Doing this will not modify any 
> behaviour and is safe. When replacing `np.long`, you may wish to use e.g. 
> `np.int64` or `np.int32` to specify the precision. If you wish to review your 
> current use, check the release note link for additional information.
>   Deprecated in NumPy 1.20; for more details and guidance: 
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     ulong = _make_unsigned(np.long)
> 
> umap/distances.py:24
>   /<<PKGBUILDDIR>>/umap/distances.py:24: DeprecationWarning: invalid escape 
> sequence \s
>     """Standard euclidean distance.
> 
> umap/distances.py:37
>   /<<PKGBUILDDIR>>/umap/distances.py:37: DeprecationWarning: invalid escape 
> sequence \s
>     """Standard euclidean distance and its gradient.
> 
> umap/distances.py:53
>   /<<PKGBUILDDIR>>/umap/distances.py:53: DeprecationWarning: invalid escape 
> sequence \s
>     """Euclidean distance standardised against a vector of standard
> 
> umap/distances.py:68
>   /<<PKGBUILDDIR>>/umap/distances.py:68: DeprecationWarning: invalid escape 
> sequence \s
>     """Euclidean distance standardised against a vector of standard
> 
> umap/distances.py:84
>   /<<PKGBUILDDIR>>/umap/distances.py:84: DeprecationWarning: invalid escape 
> sequence \s
>     """Manhattan, taxicab, or l1 distance.
> 
> umap/distances.py:98
>   /<<PKGBUILDDIR>>/umap/distances.py:98: DeprecationWarning: invalid escape 
> sequence \s
>     """Manhattan, taxicab, or l1 distance with gradient.
> 
> umap/distances.py:113
>   /<<PKGBUILDDIR>>/umap/distances.py:113: DeprecationWarning: invalid escape 
> sequence \m
>     """Chebyshev or l-infinity distance.
> 
> umap/distances.py:127
>   /<<PKGBUILDDIR>>/umap/distances.py:127: DeprecationWarning: invalid escape 
> sequence \m
>     """Chebyshev or l-infinity distance with gradient.
> 
> umap/distances.py:147
>   /<<PKGBUILDDIR>>/umap/distances.py:147: DeprecationWarning: invalid escape 
> sequence \l
>     """Minkowski distance.
> 
> umap/distances.py:166
>   /<<PKGBUILDDIR>>/umap/distances.py:166: DeprecationWarning: invalid escape 
> sequence \l
>     """Minkowski distance with gradient.
> 
> umap/distances.py:193
>   /<<PKGBUILDDIR>>/umap/distances.py:193: DeprecationWarning: invalid escape 
> sequence \d
>     """Poincare distance.
> 
> umap/distances.py:230
>   /<<PKGBUILDDIR>>/umap/distances.py:230: DeprecationWarning: invalid escape 
> sequence \l
>     """A weighted version of Minkowski distance.
> 
> umap/distances.py:248
>   /<<PKGBUILDDIR>>/umap/distances.py:248: DeprecationWarning: invalid escape 
> sequence \l
>     """A weighted version of Minkowski distance with gradient.
> 
> umap/distances.py:752
>   /<<PKGBUILDDIR>>/umap/distances.py:752: DeprecationWarning: invalid escape 
> sequence \l
>     """
> 
> ../../../usr/lib/python3/dist-packages/nose/importer.py:12
>   /usr/lib/python3/dist-packages/nose/importer.py:12: DeprecationWarning: the 
> imp module is deprecated in favour of importlib; see the module's 
> documentation for alternative uses
>     from imp import find_module, load_module, acquire_lock, release_lock
> 
> umap/tests/test_plot.py::test_umap_plot_dependency
>   /<<PKGBUILDDIR>>/umap/plot.py:20: UserWarning: The umap.plot package 
> requires extra plotting libraries to be installed.
>       You can install these via pip using
>   
>       pip install umap-learn[plot]
>   
>       or via conda using
>   
>        conda install pandas matplotlib datashader bokeh holoviews colorcet
>       
>     warn(
> 
> umap/tests/test_umap_metrics.py: 16 warnings
> umap/tests/test_umap_nn.py: 4 warnings
>   /usr/lib/python3/dist-packages/sklearn/utils/validation.py:585: 
> FutureWarning: np.matrix usage is deprecated in 1.0 and will raise a 
> TypeError in 1.2. Please convert to a numpy array with np.asarray. For more 
> information see: 
> https://numpy.org/doc/stable/reference/generated/numpy.matrix.html
>     warnings.warn(
> 
> umap/tests/test_umap_metrics.py::test_weighted_minkowski
> umap/tests/test_umap_metrics.py::test_grad_metrics_match_metrics
>   /usr/lib/python3/dist-packages/scipy/spatial/distance.py:275: 
> DeprecationWarning: 'wminkowski' metric is deprecated and will be removed in 
> SciPy 1.8.0, use 'minkowski' instead.
>     kwargs = _validate_kwargs(X, m, n, **kwargs)
> 
> umap/tests/test_umap_metrics.py::test_hellinger
>   /<<PKGBUILDDIR>>/umap/tests/test_umap_metrics.py:396: RuntimeWarning: 
> invalid value encountered in sqrt
>     dist_matrix = np.sqrt(dist_matrix)
> 
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
>   /usr/lib/python3/dist-packages/numba/core/consts.py:114: 
> DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To 
> silence this warning, use `int` by itself. Doing this will not modify any 
> behavior and is safe. When replacing `np.int`, you may wish to use e.g. 
> `np.int64` or `np.int32` to specify the precision. If you wish to review your 
> current use, check the release note link for additional information.
>   Deprecated in NumPy 1.20; for more details and guidance: 
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     return getattr(value, expr.attr)
> 
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
>   /usr/lib/python3/dist-packages/numba/core/ir_utils.py:2097: 
> DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To 
> silence this warning, use `int` by itself. Doing this will not modify any 
> behavior and is safe. When replacing `np.int`, you may wish to use e.g. 
> `np.int64` or `np.int32` to specify the precision. If you wish to review your 
> current use, check the release note link for additional information.
>   Deprecated in NumPy 1.20; for more details and guidance: 
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     defn = getattr(defn, x, False)
> 
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_nn.py::test_smooth_knn_dist_l1norms
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
>   /usr/lib/python3/dist-packages/numba/core/typing/context.py:338: 
> DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To 
> silence this warning, use `int` by itself. Doing this will not modify any 
> behavior and is safe. When replacing `np.int`, you may wish to use e.g. 
> `np.int64` or `np.int32` to specify the precision. If you wish to review your 
> current use, check the release note link for additional information.
>   Deprecated in NumPy 1.20; for more details and guidance: 
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     attrval = getattr(typ.pymod, attr)
> 
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris
>   /usr/lib/python3/dist-packages/numba/np/arrayobj.py:3843: 
> DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To 
> silence this warning, use `int` by itself. Doing this will not modify any 
> behavior and is safe. When replacing `np.int`, you may wish to use e.g. 
> `np.int64` or `np.int32` to specify the precision. If you wish to review your 
> current use, check the release note link for additional information.
>   Deprecated in NumPy 1.20; for more details and guidance: 
> https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     NPY_TY = getattr(types, "int%s" % (8 * np.dtype(np.int).itemsize))
> 
> umap/tests/test_umap_ops.py::test_multi_component_layout
>   /usr/lib/python3/dist-packages/sklearn/manifold/_spectral_embedding.py:260: 
> UserWarning: Graph is not fully connected, spectral embedding may not work as 
> expected.
>     warnings.warn(
> 
> umap/tests/test_umap_repeated_data.py::test_repeated_points_large_sparse_spatial
> umap/tests/test_umap_repeated_data.py::test_repeated_points_small_sparse_spatial
> umap/tests/test_umap_repeated_data.py::test_repeated_points_large_sparse_binary
> umap/tests/test_umap_repeated_data.py::test_repeated_points_small_sparse_binary
>   /usr/lib/python3/dist-packages/numpy/lib/arraysetops.py:270: 
> VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences 
> (which is a list-or-tuple of lists-or-tuples-or ndarrays with different 
> lengths or shapes) is deprecated. If you meant to do this, you must specify 
> 'dtype=object' when creating the ndarray.
>     ar = np.asanyarray(ar)
> 
> umap/tests/test_umap_repeated_data.py::test_repeated_points_large_n
> umap/tests/test_umap_validation_params.py::test_umap_too_many_neighbors_warns
>   /<<PKGBUILDDIR>>/umap/umap_.py:1678: UserWarning: n_neighbors is larger 
> than the dataset size; truncating to X.shape[0] - 1
>     warn(
> 
> umap/tests/test_umap_trustworthiness.py::test_string_metric_supervised_umap_trustworthiness
>   /<<PKGBUILDDIR>>/umap/umap_.py:1867: FutureWarning: Arrays of bytes/strings 
> is being converted to decimal numbers if dtype='numeric'. This behavior is 
> deprecated in 0.24 and will be removed in 1.1 (renaming of 0.26). Please 
> convert your data to numeric values explicitly instead.
>     y_ = check_array(y, ensure_2d=False)[index]
> 
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
> =========================== short test summary info 
> ============================
> FAILED umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_iris - 
> T...
> FAILED 
> umap/tests/test_umap_on_iris.py::test_initialized_umap_trustworthiness_on_iris
> FAILED 
> umap/tests/test_umap_on_iris.py::test_umap_trustworthiness_on_sphere_iris
> FAILED umap/tests/test_umap_on_iris.py::test_umap_transform_on_iris - 
> TypeErr...
> FAILED 
> umap/tests/test_umap_on_iris.py::test_umap_transform_on_iris_modified_dtype
> FAILED umap/tests/test_umap_on_iris.py::test_umap_sparse_transform_on_iris - 
> ...
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_umap_sparse_trustworthiness
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_umap_trustworthiness_fast_approx
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_umap_trustworthiness_random_init
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_supervised_umap_trustworthiness
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_semisupervised_umap_trustworthiness
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_metric_supervised_umap_trustworthiness
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_string_metric_supervised_umap_trustworthiness
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_discrete_metric_supervised_umap_trustworthiness
> FAILED 
> umap/tests/test_umap_trustworthiness.py::test_count_metric_supervised_umap_trustworthiness
> ====== 15 failed, 111 passed, 2 xfailed, 64 warnings in 94.86s (0:01:34) 
> =======
> E: pybuild pybuild:355: test: plugin custom failed with: exit code=1: 
> PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build python3.9 -m pytest
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 
> --system=custom "--test-args=PYTHONPATH={build_dir} {interpreter} -m pytest" 
> returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2021/12/20/umap-learn_0.4.5+dfsg-2_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.

--- End Message ---
--- Begin Message ---
Source: umap-learn
Source-Version: 0.4.5+dfsg-3
Done: Nilesh Patra <[email protected]>

We believe that the bug you reported is fixed in the latest version of
umap-learn, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Nilesh Patra <[email protected]> (supplier of updated umap-learn package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Mon, 22 Aug 2022 13:26:56 +0530
Source: umap-learn
Architecture: source
Version: 0.4.5+dfsg-3
Distribution: unstable
Urgency: medium
Maintainer: Debian Med Packaging Team 
<[email protected]>
Changed-By: Nilesh Patra <[email protected]>
Closes: 1002400
Changes:
 umap-learn (0.4.5+dfsg-3) unstable; urgency=medium
 .
   * Team upload.
   * Drop myself from uploaders
   * Add patch to adapt to new trustworthiness API
     (Closes: #1002400)
   * Add patch to fix FTBFS with new numba
   * Fix scipy related changes
   * Bump Standards-Version to 4.6.1 (no changes needed)
Checksums-Sha1:
 25919b4f37d7cd48c46994fdf3bd42f92f34de4c 2256 umap-learn_0.4.5+dfsg-3.dsc
 22f6d736f36176e09aa4727d921787e15cb21854 6304 
umap-learn_0.4.5+dfsg-3.debian.tar.xz
 c09fbd27c3aa499da8fbdd70d6e2e69e1407b754 8895 
umap-learn_0.4.5+dfsg-3_amd64.buildinfo
Checksums-Sha256:
 319a69b63489de4f9ca936f127693eef656fdf7601cee26fb4b41deea0b39856 2256 
umap-learn_0.4.5+dfsg-3.dsc
 7ab94c565428ac0c1f887e29f63b0177bfcedc26fd12f74e6732f6262643eb7e 6304 
umap-learn_0.4.5+dfsg-3.debian.tar.xz
 fc44a203b99398cc78ab0da916c9f90bc28d99781f13d498d0034100788cb458 8895 
umap-learn_0.4.5+dfsg-3_amd64.buildinfo
Files:
 6838f24bf039ef78e6d765ce59ec28d5 2256 science optional 
umap-learn_0.4.5+dfsg-3.dsc
 cb989c7fa414473e21196e0eb3500d5e 6304 science optional 
umap-learn_0.4.5+dfsg-3.debian.tar.xz
 a43717f8ef65e6d09bf19083fef09e87 8895 science optional 
umap-learn_0.4.5+dfsg-3_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJGBAEBCgAwFiEEPpmlJvXcwMu/HO6mALrnSzQzafEFAmMDOGgSHG5pbGVzaEBk
ZWJpYW4ub3JnAAoJEAC650s0M2nx6UMQAI1KXUTdphdIqwnDUOiyE64Ynfg5Rdy6
CW7KyWDnqtupeB9gj56a9USPL1xXxhfpp5C9VIlJb9vFdBQsrfOG/anQcIQIHGo+
2+TXDSvaS13epI+EuwQAYQq+QvTCUODRyKgdA4EuOYPGenknrdJI4+tC4SylhSgq
im++hkpFI+NoSdxVPzmkKOGkxeoMD6vXhl1ubE6Ta0Lyrf3qM72EwOS3rgqzy6Wh
h4tGbEq/1cJ7Mo0qQ3cOZbELWav21OUSZ7prWW0Y9GN53cKYAY7YFcSchpBoamE0
+qVC8phArJbPYyPUgVRyKQgULVZ10t22BtndHnn7/P/W54f6Epn9xj8QlAAcLIql
ezQtvXceaUxYou//reT5ZGjO2dRlZGAa1GeHURunljSsmAHly8tqWqPY1XViPi/6
pjL9kJ2TbAfOR2mqo9xIN47iGvGyJ0wzccN/sbcOO5mvuDdzoHj3EzGx5F/bzHPO
ZOc/HU7JhHU3FxLMLmq8aWR4JOrO2uisMYwAoY2YUjmdaZuuqpkj33mTKpgFQb54
rqYo3w+wPkIl+RTzQ8ReihnZeVEl4hDLYpuEdPijABqUZulqU/IRcmcZRvf4kWpU
DQU5uD5Zppkt/ueI0tMHy8NVYwcktkDlcdYxul9vUU49sRZ0vnag25Vz1qWGWlzP
gTphdPa3KNsR
=hw3t
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to