Bug#1028886: pyemd: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.10 3.11" returned exit code 13

Lucas Nussbaum lucas at debian.org
Sat Jan 14 13:01:29 GMT 2023


Source: pyemd
Version: 0.5.1-2
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20230113 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>>'
> for python in $(py3versions --supported) ; do \
> 	"$python" setup.py test ; \
> done
> running test
> WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.
> running egg_info
> creating pyemd.egg-info
> writing pyemd.egg-info/PKG-INFO
> writing dependency_links to pyemd.egg-info/dependency_links.txt
> writing requirements to pyemd.egg-info/requires.txt
> writing top-level names to pyemd.egg-info/top_level.txt
> writing manifest file 'pyemd.egg-info/SOURCES.txt'
> reading manifest file 'pyemd.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no previously-included files matching '__pycache__' found anywhere in distribution
> warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
> warning: no previously-included files matching '*.so' found anywhere in distribution
> warning: no previously-included files matching '*.dylib' found anywhere in distribution
> adding license file 'LICENSE'
> writing manifest file 'pyemd.egg-info/SOURCES.txt'
> running build_ext
> building 'pyemd.emd' extension
> x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Ipyemd -I/usr/include/python3.10 -I/usr/lib/python3/dist-packages/numpy/core/include -c pyemd/emd.cpp -o build/temp.linux-x86_64-cpython-310/pyemd/emd.o
> In file included from /usr/include/python3.10/numpy/ndarraytypes.h:1940,
>                  from /usr/include/python3.10/numpy/ndarrayobject.h:12,
>                  from /usr/include/python3.10/numpy/arrayobject.h:5,
>                  from pyemd/emd.cpp:797:
> /usr/include/python3.10/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
>    17 | #warning "Using deprecated NumPy API, disable it with " \
>       |  ^~~~~~~
> In file included from pyemd/lib/emd_hat.hpp:95,
>                  from pyemd/emd.cpp:805:
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’:
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/emd_hat_impl.hpp:41:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<double, std::allocator<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    41 |     {for (NODE_T i=0; i<P.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = NO_FLOW]’:
> pyemd/emd.cpp:2651:42:   required from here
> pyemd/lib/emd_hat_impl.hpp:41:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<double, std::allocator<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘void fillFWithZeros(std::vector<std::vector<NUM_T> >&) [with NUM_T = double]’:
> pyemd/lib/emd_hat_impl.hpp:33:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/emd_hat_impl.hpp:17:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    17 |     for (NODE_T i= 0; i<F.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:18:28: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<double, std::allocator<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    18 |         for (NODE_T j= 0; j<F[i].size(); ++j) {
>       |                           ~^~~~~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’:
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/emd_hat_impl.hpp:255:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   255 |     {for (NODE_T i=0; i<b.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:263:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > >, std::allocator<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   263 |     {for (NODE_T i=0; i<c.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:296:51: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::__cxx11::list<edge0<long long int>, std::allocator<edge0<long long int> > >, std::allocator<std::__cxx11::list<edge0<long long int>, std::allocator<edge0<long long int> > > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   296 |         for (NODE_T new_name_from=0; new_name_from<flows.size(); ++new_name_from) {
>       |                                      ~~~~~~~~~~~~~^~~~~~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = NO_FLOW]’:
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = NO_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = NO_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = NO_FLOW]’
> pyemd/emd.cpp:2651:42:   required from here
> pyemd/lib/emd_hat_impl.hpp:255:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   255 |     {for (NODE_T i=0; i<b.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:263:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > >, std::allocator<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   263 |     {for (NODE_T i=0; i<c.size(); ++i) {
>       |                       ~^~~~~~~~~
> In file included from pyemd/lib/emd_hat_impl.hpp:8:
> pyemd/lib/min_cost_flow.hpp: In instantiation of ‘void min_cost_flow<NUM_T>::compute_shortest_path(std::vector<NUM_T>&, std::vector<int>&, NODE_T, std::vector<std::__cxx11::list<edge1<NUM_T> > >&, std::vector<std::__cxx11::list<edge2<NUM_T> > >&, const std::vector<NUM_T>&, NODE_T&) [with NUM_T = long long int; NODE_T = int]’:
> pyemd/lib/min_cost_flow.hpp:155:17:   required from ‘NUM_T min_cost_flow<NUM_T>::operator()(std::vector<NUM_T>&, const std::vector<std::__cxx11::list<edge<NUM_T> > >&, std::vector<std::__cxx11::list<edge0<NUM_T> > >&) [with NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:291:24:   required from ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/min_cost_flow.hpp:321:37: warning: comparison of integer expressions of different signedness: ‘__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   321 |                 if ( (_nodes_to_Q[v]<Q.size()) && (alt<Q[_nodes_to_Q[v]]._dist) ) {
>       |                      ~~~~~~~~~~~~~~~^~~~~~~~~~
> pyemd/lib/min_cost_flow.hpp:332:41: warning: comparison of integer expressions of different signedness: ‘__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   332 |                     if ( (_nodes_to_Q[v]<Q.size()) && (alt<Q[_nodes_to_Q[v]]._dist) )  {
>       |                          ~~~~~~~~~~~~~~~^~~~~~~~~~
> In file included from pyemd/lib/emd_hat.hpp:7:
> pyemd/lib/flow_utils.hpp: In instantiation of ‘void return_flow_from_to_transhipment_vertex(const std::vector<std::vector<NUM_T> >&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, std::vector<NUM_T>&, std::vector<NUM_T>&) [with NUM_T = long long int]’:
> pyemd/lib/flow_utils.hpp:46:44:   required from ‘void transform_flow_to_regular(std::vector<std::vector<NUM_T> >&, const std::vector<NUM_T>&, const std::vector<NUM_T>&) [with NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:322:70:   required from ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/flow_utils.hpp:25:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    25 |     for (NODE_T i= 0; i<P.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/flow_utils.hpp:26:28: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    26 |         for (NODE_T j= 0; j<P.size(); ++j) {
>       |                           ~^~~~~~~~~
> pyemd/lib/min_cost_flow.hpp: In instantiation of ‘void min_cost_flow<NUM_T>::heapify(std::vector<edge3<NUM_T> >&, std::vector<int>&, NODE_T) [with NUM_T = long long int; NODE_T = int]’:
> pyemd/lib/min_cost_flow.hpp:392:9:   required from ‘void min_cost_flow<NUM_T>::heap_remove_first(std::vector<edge3<NUM_T> >&, std::vector<int>&) [with NUM_T = long long int]’
> pyemd/lib/min_cost_flow.hpp:313:13:   required from ‘void min_cost_flow<NUM_T>::compute_shortest_path(std::vector<NUM_T>&, std::vector<int>&, NODE_T, std::vector<std::__cxx11::list<edge1<NUM_T> > >&, std::vector<std::__cxx11::list<edge2<NUM_T> > >&, const std::vector<NUM_T>&, NODE_T&) [with NUM_T = long long int; NODE_T = int]’
> pyemd/lib/min_cost_flow.hpp:155:17:   required from ‘NUM_T min_cost_flow<NUM_T>::operator()(std::vector<NUM_T>&, const std::vector<std::__cxx11::list<edge<NUM_T> > >&, std::vector<std::__cxx11::list<edge0<NUM_T> > >&) [with NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:291:24:   required from ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/min_cost_flow.hpp:405:20: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   405 |             if ( (l<Q.size()) && (Q[l]._dist<Q[i]._dist) ) {
>       |                  ~~^~~~~~~~~~
> pyemd/lib/min_cost_flow.hpp:410:20: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   410 |             if ( (r<Q.size())&& (Q[r]._dist<Q[smallest]._dist) ) {
>       |                  ~~^~~~~~~~~~
> creating build/lib.linux-x86_64-cpython-310
> creating build/lib.linux-x86_64-cpython-310/pyemd
> x86_64-linux-gnu-g++ -shared -Wl,-O1 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-cpython-310/pyemd/emd.o -L/usr/lib/x86_64-linux-gnu -o build/lib.linux-x86_64-cpython-310/pyemd/emd.cpython-310-x86_64-linux-gnu.so
> copying build/lib.linux-x86_64-cpython-310/pyemd/emd.cpython-310-x86_64-linux-gnu.so -> pyemd
> 
> ----------------------------------------------------------------------
> Ran 0 tests in 0.000s
> 
> OK
> running test
> WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.
> running egg_info
> writing pyemd.egg-info/PKG-INFO
> writing dependency_links to pyemd.egg-info/dependency_links.txt
> writing requirements to pyemd.egg-info/requires.txt
> writing top-level names to pyemd.egg-info/top_level.txt
> reading manifest file 'pyemd.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no previously-included files matching '__pycache__' found anywhere in distribution
> warning: no previously-included files matching '*.dylib' found anywhere in distribution
> adding license file 'LICENSE'
> writing manifest file 'pyemd.egg-info/SOURCES.txt'
> running build_ext
> building 'pyemd.emd' extension
> x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Ipyemd -I/usr/include/python3.11 -I/usr/lib/python3/dist-packages/numpy/core/include -c pyemd/emd.cpp -o build/temp.linux-x86_64-cpython-311/pyemd/emd.o
> In file included from /usr/include/python3.11/numpy/ndarraytypes.h:1940,
>                  from /usr/include/python3.11/numpy/ndarrayobject.h:12,
>                  from /usr/include/python3.11/numpy/arrayobject.h:5,
>                  from pyemd/emd.cpp:797:
> /usr/include/python3.11/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
>    17 | #warning "Using deprecated NumPy API, disable it with " \
>       |  ^~~~~~~
> In file included from pyemd/lib/emd_hat.hpp:95,
>                  from pyemd/emd.cpp:805:
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’:
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/emd_hat_impl.hpp:41:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<double, std::allocator<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    41 |     {for (NODE_T i=0; i<P.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = NO_FLOW]’:
> pyemd/emd.cpp:2651:42:   required from here
> pyemd/lib/emd_hat_impl.hpp:41:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<double, std::allocator<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘void fillFWithZeros(std::vector<std::vector<NUM_T> >&) [with NUM_T = double]’:
> pyemd/lib/emd_hat_impl.hpp:33:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/emd_hat_impl.hpp:17:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    17 |     for (NODE_T i= 0; i<F.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:18:28: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<double, std::allocator<double> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    18 |         for (NODE_T j= 0; j<F[i].size(); ++j) {
>       |                           ~^~~~~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’:
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/emd_hat_impl.hpp:255:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   255 |     {for (NODE_T i=0; i<b.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:263:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > >, std::allocator<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   263 |     {for (NODE_T i=0; i<c.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:296:51: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::__cxx11::list<edge0<long long int>, std::allocator<edge0<long long int> > >, std::allocator<std::__cxx11::list<edge0<long long int>, std::allocator<edge0<long long int> > > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   296 |         for (NODE_T new_name_from=0; new_name_from<flows.size(); ++new_name_from) {
>       |                                      ~~~~~~~~~~~~~^~~~~~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp: In instantiation of ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = NO_FLOW]’:
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = NO_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = NO_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = NO_FLOW]’
> pyemd/emd.cpp:2651:42:   required from here
> pyemd/lib/emd_hat_impl.hpp:255:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   255 |     {for (NODE_T i=0; i<b.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/emd_hat_impl.hpp:263:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > >, std::allocator<std::__cxx11::list<edge<long long int>, std::allocator<edge<long long int> > > > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   263 |     {for (NODE_T i=0; i<c.size(); ++i) {
>       |                       ~^~~~~~~~~
> In file included from pyemd/lib/emd_hat_impl.hpp:8:
> pyemd/lib/min_cost_flow.hpp: In instantiation of ‘void min_cost_flow<NUM_T>::compute_shortest_path(std::vector<NUM_T>&, std::vector<int>&, NODE_T, std::vector<std::__cxx11::list<edge1<NUM_T> > >&, std::vector<std::__cxx11::list<edge2<NUM_T> > >&, const std::vector<NUM_T>&, NODE_T&) [with NUM_T = long long int; NODE_T = int]’:
> pyemd/lib/min_cost_flow.hpp:155:17:   required from ‘NUM_T min_cost_flow<NUM_T>::operator()(std::vector<NUM_T>&, const std::vector<std::__cxx11::list<edge<NUM_T> > >&, std::vector<std::__cxx11::list<edge0<NUM_T> > >&) [with NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:291:24:   required from ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/min_cost_flow.hpp:321:37: warning: comparison of integer expressions of different signedness: ‘__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   321 |                 if ( (_nodes_to_Q[v]<Q.size()) && (alt<Q[_nodes_to_Q[v]]._dist) ) {
>       |                      ~~~~~~~~~~~~~~~^~~~~~~~~~
> pyemd/lib/min_cost_flow.hpp:332:41: warning: comparison of integer expressions of different signedness: ‘__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   332 |                     if ( (_nodes_to_Q[v]<Q.size()) && (alt<Q[_nodes_to_Q[v]]._dist) )  {
>       |                          ~~~~~~~~~~~~~~~^~~~~~~~~~
> In file included from pyemd/lib/emd_hat.hpp:7:
> pyemd/lib/flow_utils.hpp: In instantiation of ‘void return_flow_from_to_transhipment_vertex(const std::vector<std::vector<NUM_T> >&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, std::vector<NUM_T>&, std::vector<NUM_T>&) [with NUM_T = long long int]’:
> pyemd/lib/flow_utils.hpp:46:44:   required from ‘void transform_flow_to_regular(std::vector<std::vector<NUM_T> >&, const std::vector<NUM_T>&, const std::vector<NUM_T>&) [with NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:322:70:   required from ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/flow_utils.hpp:25:24: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    25 |     for (NODE_T i= 0; i<P.size(); ++i) {
>       |                       ~^~~~~~~~~
> pyemd/lib/flow_utils.hpp:26:28: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>    26 |         for (NODE_T j= 0; j<P.size(); ++j) {
>       |                           ~^~~~~~~~~
> pyemd/lib/min_cost_flow.hpp: In instantiation of ‘void min_cost_flow<NUM_T>::heapify(std::vector<edge3<NUM_T> >&, std::vector<int>&, NODE_T) [with NUM_T = long long int; NODE_T = int]’:
> pyemd/lib/min_cost_flow.hpp:392:9:   required from ‘void min_cost_flow<NUM_T>::heap_remove_first(std::vector<edge3<NUM_T> >&, std::vector<int>&) [with NUM_T = long long int]’
> pyemd/lib/min_cost_flow.hpp:313:13:   required from ‘void min_cost_flow<NUM_T>::compute_shortest_path(std::vector<NUM_T>&, std::vector<int>&, NODE_T, std::vector<std::__cxx11::list<edge1<NUM_T> > >&, std::vector<std::__cxx11::list<edge2<NUM_T> > >&, const std::vector<NUM_T>&, NODE_T&) [with NUM_T = long long int; NODE_T = int]’
> pyemd/lib/min_cost_flow.hpp:155:17:   required from ‘NUM_T min_cost_flow<NUM_T>::operator()(std::vector<NUM_T>&, const std::vector<std::__cxx11::list<edge<NUM_T> > >&, std::vector<std::__cxx11::list<edge0<NUM_T> > >&) [with NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:291:24:   required from ‘NUM_T emd_hat_impl_integral_types<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = long long int; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat_impl.hpp:385:62:   required from ‘emd_hat_impl<long long int, FLOW_TYPE>::NUM_T emd_hat_impl<long long int, FLOW_TYPE>::operator()(const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<long long int>&, const std::vector<std::vector<long long int> >&, NUM_T, std::vector<std::vector<long long int> >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = long long int]’
> pyemd/lib/emd_hat_impl.hpp:456:56:   required from ‘emd_hat_impl<double, FLOW_TYPE>::NUM_T emd_hat_impl<double, FLOW_TYPE>::operator()(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, const std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >&, NUM_T, std::vector<std::vector<double, std::allocator<double> >, std::allocator<std::vector<double, std::allocator<double> > > >*) [with FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW; NUM_T = double]’
> pyemd/lib/emd_hat_impl.hpp:57:43:   required from ‘NUM_T emd_hat_gd_metric<NUM_T, FLOW_TYPE>::operator()(const std::vector<NUM_T>&, const std::vector<NUM_T>&, const std::vector<std::vector<NUM_T> >&, NUM_T, std::vector<std::vector<NUM_T> >*) [with NUM_T = double; FLOW_TYPE_T FLOW_TYPE = WITHOUT_EXTRA_MASS_FLOW]’
> pyemd/lib/emd_hat.hpp:87:52:   required from here
> pyemd/lib/min_cost_flow.hpp:405:20: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   405 |             if ( (l<Q.size()) && (Q[l]._dist<Q[i]._dist) ) {
>       |                  ~~^~~~~~~~~~
> pyemd/lib/min_cost_flow.hpp:410:20: warning: comparison of integer expressions of different signedness: ‘NODE_T’ {aka ‘int’} and ‘std::vector<edge3<long long int>, std::allocator<edge3<long long int> > >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
>   410 |             if ( (r<Q.size())&& (Q[r]._dist<Q[smallest]._dist) ) {
>       |                  ~~^~~~~~~~~~
> creating build/lib.linux-x86_64-cpython-311
> creating build/lib.linux-x86_64-cpython-311/pyemd
> x86_64-linux-gnu-g++ -shared -Wl,-O1 -Wl,-Bsymbolic-functions -g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-cpython-311/pyemd/emd.o -L/usr/lib/x86_64-linux-gnu -o build/lib.linux-x86_64-cpython-311/pyemd/emd.cpython-311-x86_64-linux-gnu.so
> copying build/lib.linux-x86_64-cpython-311/pyemd/emd.cpython-311-x86_64-linux-gnu.so -> pyemd
> 
> ----------------------------------------------------------------------
> Ran 0 tests in 0.000s
> 
> OK
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pyemd/build; python3.10 -m pytest test
> ============================= test session starts ==============================
> platform linux -- Python 3.10.9, pytest-7.2.0, pluggy-1.0.0+repack -- /usr/bin/python3.10
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collecting ... collected 35 items
> 
> test/test_pyemd.py::test_emd_1 PASSED                                    [  2%]
> test/test_pyemd.py::test_emd_2 PASSED                                    [  5%]
> test/test_pyemd.py::test_emd_3 PASSED                                    [  8%]
> test/test_pyemd.py::test_emd_4 PASSED                                    [ 11%]
> test/test_pyemd.py::test_emd_extra_mass_penalty PASSED                   [ 14%]
> test/test_pyemd.py::test_emd_validate_larger_signatures_1 PASSED         [ 17%]
> test/test_pyemd.py::test_emd_validate_larger_signatures_2 PASSED         [ 20%]
> test/test_pyemd.py::test_emd_validate_larger_signatures_3 PASSED         [ 22%]
> test/test_pyemd.py::test_emd_validate_different_signature_dims PASSED    [ 25%]
> test/test_pyemd.py::test_emd_validate_symmetric_distance_matrix FAILED   [ 28%]
> test/test_pyemd.py::test_emd_with_flow_1 PASSED                          [ 31%]
> test/test_pyemd.py::test_emd_with_flow_2 PASSED                          [ 34%]
> test/test_pyemd.py::test_emd_with_flow_3 PASSED                          [ 37%]
> test/test_pyemd.py::test_emd_with_flow_4 PASSED                          [ 40%]
> test/test_pyemd.py::test_emd_with_flow_5 PASSED                          [ 42%]
> test/test_pyemd.py::test_emd_with_flow_6 PASSED                          [ 45%]
> test/test_pyemd.py::test_emd_with_flow_extra_mass_penalty PASSED         [ 48%]
> test/test_pyemd.py::test_emd_with_flow_validate_larger_signatures_1 PASSED [ 51%]
> test/test_pyemd.py::test_emd_with_flow_validate_larger_signatures_2 PASSED [ 54%]
> test/test_pyemd.py::test_emd_with_flow_validate_larger_signatures_3 PASSED [ 57%]
> test/test_pyemd.py::test_emd_with_flow_validate_different_signature_dims PASSED [ 60%]
> test/test_pyemd.py::test_emd_with_flow_validate_square_distance_matrix FAILED [ 62%]
> test/test_pyemd.py::test_emd_samples_1 PASSED                            [ 65%]
> test/test_pyemd.py::test_emd_samples_1_binsize PASSED                    [ 68%]
> test/test_pyemd.py::test_emd_samples_1_manual_range PASSED               [ 71%]
> test/test_pyemd.py::test_emd_samples_1_not_normalized PASSED             [ 74%]
> test/test_pyemd.py::test_emd_samples_1_custom_distance PASSED            [ 77%]
> test/test_pyemd.py::test_emd_samples_all_kwargs PASSED                   [ 80%]
> test/test_pyemd.py::test_emd_samples_2 PASSED                            [ 82%]
> test/test_pyemd.py::test_emd_samples_3 PASSED                            [ 85%]
> test/test_pyemd.py::test_emd_samples_4 PASSED                            [ 88%]
> test/test_pyemd.py::test_emd_samples_5 PASSED                            [ 91%]
> test/test_pyemd.py::test_emd_samples_validate_empty PASSED               [ 94%]
> test/test_pyemd.py::test_emd_samples_validate_distance_matrix_square PASSED [ 97%]
> test/test_pyemd.py::test_emd_samples_validate_distance_matrix_size PASSED [100%]
> 
> =================================== FAILURES ===================================
> _________________ test_emd_validate_symmetric_distance_matrix __________________
> 
>     def test_emd_validate_symmetric_distance_matrix():
>         first_signature = np.array([0.0, 1.0])
>         second_signature = np.array([5.0, 3.0])
> >       distance_matrix = np.array([[0.0, 0.5, 3.0],
>                                     [0.5, 0.0]])
> E       ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
> 
> test/test_pyemd.py:132: ValueError
> ______________ test_emd_with_flow_validate_square_distance_matrix ______________
> 
>     def test_emd_with_flow_validate_square_distance_matrix():
>         first_signature = np.array([0.0, 1.0])
>         second_signature = np.array([5.0, 3.0])
> >       distance_matrix = np.array([[0.0, 0.5, 3.0],
>                                     [0.5, 0.0]])
> E       ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
> 
> test/test_pyemd.py:278: ValueError
> =========================== short test summary info ============================
> FAILED test/test_pyemd.py::test_emd_validate_symmetric_distance_matrix - ValueError: setting an array element with a sequence. The requested array h...
> FAILED test/test_pyemd.py::test_emd_with_flow_validate_square_distance_matrix - ValueError: setting an array element with a sequence. The requested array h...
> ========================= 2 failed, 33 passed in 0.21s =========================
> E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_pyemd/build; python3.10 -m pytest test
> I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pyemd/build; python3.11 -m pytest test
> ============================= test session starts ==============================
> platform linux -- Python 3.11.1, pytest-7.2.0, pluggy-1.0.0+repack -- /usr/bin/python3.11
> cachedir: .pytest_cache
> rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini
> collecting ... collected 35 items
> 
> test/test_pyemd.py::test_emd_1 PASSED                                    [  2%]
> test/test_pyemd.py::test_emd_2 PASSED                                    [  5%]
> test/test_pyemd.py::test_emd_3 PASSED                                    [  8%]
> test/test_pyemd.py::test_emd_4 PASSED                                    [ 11%]
> test/test_pyemd.py::test_emd_extra_mass_penalty PASSED                   [ 14%]
> test/test_pyemd.py::test_emd_validate_larger_signatures_1 PASSED         [ 17%]
> test/test_pyemd.py::test_emd_validate_larger_signatures_2 PASSED         [ 20%]
> test/test_pyemd.py::test_emd_validate_larger_signatures_3 PASSED         [ 22%]
> test/test_pyemd.py::test_emd_validate_different_signature_dims PASSED    [ 25%]
> test/test_pyemd.py::test_emd_validate_symmetric_distance_matrix FAILED   [ 28%]
> test/test_pyemd.py::test_emd_with_flow_1 PASSED                          [ 31%]
> test/test_pyemd.py::test_emd_with_flow_2 PASSED                          [ 34%]
> test/test_pyemd.py::test_emd_with_flow_3 PASSED                          [ 37%]
> test/test_pyemd.py::test_emd_with_flow_4 PASSED                          [ 40%]
> test/test_pyemd.py::test_emd_with_flow_5 PASSED                          [ 42%]
> test/test_pyemd.py::test_emd_with_flow_6 PASSED                          [ 45%]
> test/test_pyemd.py::test_emd_with_flow_extra_mass_penalty PASSED         [ 48%]
> test/test_pyemd.py::test_emd_with_flow_validate_larger_signatures_1 PASSED [ 51%]
> test/test_pyemd.py::test_emd_with_flow_validate_larger_signatures_2 PASSED [ 54%]
> test/test_pyemd.py::test_emd_with_flow_validate_larger_signatures_3 PASSED [ 57%]
> test/test_pyemd.py::test_emd_with_flow_validate_different_signature_dims PASSED [ 60%]
> test/test_pyemd.py::test_emd_with_flow_validate_square_distance_matrix FAILED [ 62%]
> test/test_pyemd.py::test_emd_samples_1 PASSED                            [ 65%]
> test/test_pyemd.py::test_emd_samples_1_binsize PASSED                    [ 68%]
> test/test_pyemd.py::test_emd_samples_1_manual_range PASSED               [ 71%]
> test/test_pyemd.py::test_emd_samples_1_not_normalized PASSED             [ 74%]
> test/test_pyemd.py::test_emd_samples_1_custom_distance PASSED            [ 77%]
> test/test_pyemd.py::test_emd_samples_all_kwargs PASSED                   [ 80%]
> test/test_pyemd.py::test_emd_samples_2 PASSED                            [ 82%]
> test/test_pyemd.py::test_emd_samples_3 PASSED                            [ 85%]
> test/test_pyemd.py::test_emd_samples_4 PASSED                            [ 88%]
> test/test_pyemd.py::test_emd_samples_5 PASSED                            [ 91%]
> test/test_pyemd.py::test_emd_samples_validate_empty PASSED               [ 94%]
> test/test_pyemd.py::test_emd_samples_validate_distance_matrix_square PASSED [ 97%]
> test/test_pyemd.py::test_emd_samples_validate_distance_matrix_size PASSED [100%]
> 
> =================================== FAILURES ===================================
> _________________ test_emd_validate_symmetric_distance_matrix __________________
> 
>     def test_emd_validate_symmetric_distance_matrix():
>         first_signature = np.array([0.0, 1.0])
>         second_signature = np.array([5.0, 3.0])
> >       distance_matrix = np.array([[0.0, 0.5, 3.0],
>                                     [0.5, 0.0]])
> E       ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
> 
> test/test_pyemd.py:132: ValueError
> ______________ test_emd_with_flow_validate_square_distance_matrix ______________
> 
>     def test_emd_with_flow_validate_square_distance_matrix():
>         first_signature = np.array([0.0, 1.0])
>         second_signature = np.array([5.0, 3.0])
> >       distance_matrix = np.array([[0.0, 0.5, 3.0],
>                                     [0.5, 0.0]])
> E       ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.
> 
> test/test_pyemd.py:278: ValueError
> =========================== short test summary info ============================
> FAILED test/test_pyemd.py::test_emd_validate_symmetric_distance_matrix - ValueError: setting an array element with a sequence. The requested array h...
> FAILED test/test_pyemd.py::test_emd_with_flow_validate_square_distance_matrix - ValueError: setting an array element with a sequence. The requested array h...
> ========================= 2 failed, 33 passed in 0.15s =========================
> E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_pyemd/build; python3.11 -m pytest test
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.10 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/01/13/pyemd_0.5.1-2_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20230113;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20230113&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.



More information about the debian-science-maintainers mailing list