Bug#1026539: theano: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.10 returned exit code 13

Lucas Nussbaum lucas at debian.org
Tue Dec 20 17:03:20 GMT 2022


Source: theano
Version: 1.0.5+dfsg-8
Severity: serious
Justification: FTBFS
Tags: bookworm sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20221220 ftbfs-bookworm

Hi,

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


Relevant part (hopefully):
> =================================== FAILURES ===================================
> ____________ TestDownsampleFactorMax.test_DownsampleFactorMaxStride ____________
> 
> self = <theano.tensor.signal.tests.test_pool.TestDownsampleFactorMax object at 0x7f9a14696d10>
> 
>     def test_DownsampleFactorMaxStride(self):
>         rng = np.random.RandomState(utt.fetch_seed())
>         # maxpool, stride, ignore_border, input, output sizes
>         examples = (
>             ((1, 1), (1, 1), True, (4, 10, 16, 16), (4, 10, 16, 16)),
>             ((1, 1), (5, 7), True, (4, 10, 16, 16), (4, 10, 4, 3)),
>             ((1, 1), (1, 1), False, (4, 10, 16, 16), (4, 10, 16, 16)),
>             ((1, 1), (5, 7), False, (4, 10, 16, 16), (4, 10, 4, 3)),
>             ((3, 3), (1, 1), True, (4, 10, 16, 16), (4, 10, 14, 14)),
>             ((3, 3), (3, 3), True, (4, 10, 16, 16), (4, 10, 5, 5)),
>             ((3, 3), (5, 7), True, (4, 10, 16, 16), (4, 10, 3, 2)),
>             ((3, 3), (1, 1), False, (4, 10, 16, 16), (4, 10, 14, 14)),
>             ((3, 3), (3, 3), False, (4, 10, 16, 16), (4, 10, 6, 6)),
>             ((3, 3), (5, 7), False, (4, 10, 16, 16), (4, 10, 4, 3)),
>             ((5, 3), (1, 1), True, (4, 10, 16, 16), (4, 10, 12, 14)),
>             ((5, 3), (3, 3), True, (4, 10, 16, 16), (4, 10, 4, 5)),
>             ((5, 3), (5, 7), True, (4, 10, 16, 16), (4, 10, 3, 2)),
>             ((5, 3), (1, 1), False, (4, 10, 16, 16), (4, 10, 12, 14)),
>             ((5, 3), (3, 3), False, (4, 10, 16, 16), (4, 10, 5, 6)),
>             ((5, 3), (5, 7), False, (4, 10, 16, 16), (4, 10, 4, 3)),
>             ((16, 16), (1, 1), True, (4, 10, 16, 16), (4, 10, 1, 1)),
>             ((16, 16), (5, 7), True, (4, 10, 16, 16), (4, 10, 1, 1)),
>             ((16, 16), (1, 1), False, (4, 10, 16, 16), (4, 10, 1, 1)),
>             ((16, 16), (5, 7), False, (4, 10, 16, 16), (4, 10, 1, 1)),
>             ((3,), (5,), True, (16,), (3,)),
>             ((3,), (5,), True, (2, 16,), (2, 3,)),
>             ((5,), (3,), True, (2, 3, 16,), (2, 3, 4,)),
>             ((5, 1, 3), (3, 3, 3), True, (2, 16, 16, 16), (2, 4, 6, 5)),
>             ((5, 1, 3), (3, 3, 3), True, (4, 2, 16, 16, 16), (4, 2, 4, 6, 5)),
>         )
>     
>         for example, mode in product(examples, ['max',
>                                                 'sum',
>                                                 'average_inc_pad',
>                                                 'average_exc_pad']):
>             (maxpoolshp, stride, ignore_border, inputshp, outputshp) = example
>             # generate random images
>             imval = rng.rand(*inputshp)
>             images = theano.shared(imval)
>             # Pool op
>             numpy_output_val = \
> >               self.numpy_max_pool_nd_stride(imval, maxpoolshp,
>                                               ignore_border, stride,
>                                               mode)
> 
> theano/tensor/signal/tests/test_pool.py:406: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> input = array([[[[7.00437122e-01, 8.44186643e-01, 6.76514336e-01, ...,
>           7.00844752e-01, 2.93228106e-01, 7.74479454e-0...    [8.75885705e-01, 9.43403362e-01, 2.46839958e-01, ...,
>           6.39886889e-01, 3.33503280e-01, 3.56632048e-04]]]])
> ws = (1, 1), ignore_border = True, stride = (1, 1), mode = 'max'
> 
>     @staticmethod
>     def numpy_max_pool_nd_stride(input, ws, ignore_border=False, stride=None,
>                                  mode='max'):
>         '''Helper function, implementing pooling in pure numpy
>            this function provides stride input to indicate the stide size
>            for the pooling regions. if not indicated, stride == ws.'''
>         nd = len(ws)
>         if stride is None:
>             stride = ws
>         assert len(stride) == len(ws)
>     
>         out_shp = list(input.shape[:-nd])
>         for i in range(nd):
>             out = 0
>             if input.shape[-nd + i] - ws[i] >= 0:
>                 out = (input.shape[-nd + i] - ws[i]) // stride[i] + 1
>             if not ignore_border:
>                 if out > 0:
>                     if input.shape[-nd + i] - ((out - 1) * stride[i] + ws[i]) > 0:
>                         if input.shape[-nd + i] - out * stride[i] > 0:
>                             out += 1
>                 else:
>                     if input.shape[-nd + i] > 0:
>                         out += 1
>             out_shp.append(out)
>     
>         func = np.max
>         if mode == 'sum':
>             func = np.sum
>         elif mode != 'max':
>             func = np.average
>     
>         output_val = np.zeros(out_shp)
>         for l in np.ndindex(*input.shape[:-nd]):
>             for r in np.ndindex(*output_val.shape[-nd:]):
>                 region = []
>                 for i in range(nd):
>                     r_stride = r[i] * stride[i]
>                     r_end = builtins.min(r_stride + ws[i], input.shape[-nd + i])
>                     region.append(slice(r_stride, r_end))
> >               patch = input[l][region]
> E               IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
> 
> theano/tensor/signal/tests/test_pool.py:304: IndexError
> ________ TestDownsampleFactorMax.test_DownsampleFactorMaxPaddingStride _________
> 
> self = <theano.tensor.signal.tests.test_pool.TestDownsampleFactorMax object at 0x7f9a14696980>
> 
>     def test_DownsampleFactorMaxPaddingStride(self):
>         ignore_border = True  # padding does not support ignore_border=False
>         rng = np.random.RandomState(utt.fetch_seed())
>         # maxpool, stride, pad, input sizes
>         examples = (
>             ((3,), (2,), (2,), (5,)),
>             ((3,), (2,), (2,), (4, 5)),
>             ((3,), (2,), (2,), (4, 2, 5, 5)),
>             ((3, 3), (2, 2), (2, 2), (4, 2, 5, 5)),
>             ((4, 4), (2, 2), (1, 2), (4, 2, 5, 5)),
>             ((3, 4), (1, 1), (2, 1), (4, 2, 5, 6)),
>             ((4, 3), (1, 2), (0, 0), (4, 2, 6, 5)),
>             ((2, 2), (2, 2), (1, 1), (4, 2, 5, 5)),
>             ((4, 3, 2), (1, 2, 2), (0, 2, 1), (4, 6, 6, 5)),
>             ((4, 3, 2), (1, 2, 2), (0, 2, 1), (4, 2, 6, 5, 5)),
>         )
>         for example, mode in product(examples,
>                                      ['max', 'sum', 'average_inc_pad',
>                                       'average_exc_pad']):
>             (maxpoolshp, stridesize, padsize, inputsize) = example
>             imval = rng.rand(*inputsize) - 0.5
>             images = theano.shared(imval)
>     
> >           numpy_output_val = self.numpy_max_pool_nd_stride_pad(
>                 imval, maxpoolshp, ignore_border,
>                 stridesize, padsize, mode)
> 
> theano/tensor/signal/tests/test_pool.py:484: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> input = array([0.20043712, 0.34418664, 0.17651434, 0.22785806, 0.45145796])
> ws = (3,), ignore_border = True, stride = (2,), pad = (2,), mode = 'max'
> 
>     @staticmethod
>     def numpy_max_pool_nd_stride_pad(
>             input, ws, ignore_border=True, stride=None, pad=None, mode='max'):
>         assert ignore_border
>         nd = len(ws)
>         if pad is None:
>             pad = (0,) * nd
>         if stride is None:
>             stride = (0,) * nd
>         assert len(pad) == len(ws) == len(stride)
>         assert all(ws[i] > pad[i] for i in range(nd))
>     
>         def pad_img(x):
>             # initialize padded input
>             y = np.zeros(
>                 x.shape[0:-nd] +
>                 tuple(x.shape[-nd + i] + pad[i] * 2 for i in range(nd)),
>                 dtype=x.dtype)
>             # place the unpadded input in the center
>             block = ((slice(None),) * (len(x.shape) - nd) +
>                      tuple(slice(pad[i], x.shape[-nd + i] + pad[i])
>                            for i in range(nd)))
>             y[block] = x
>             return y
>     
>         pad_img_shp = list(input.shape[:-nd])
>         out_shp = list(input.shape[:-nd])
>         for i in range(nd):
>             padded_size = input.shape[-nd + i] + 2 * pad[i]
>             pad_img_shp.append(padded_size)
>             out_shp.append((padded_size - ws[i]) // stride[i] + 1)
>         output_val = np.zeros(out_shp)
>         padded_input = pad_img(input)
>         func = np.max
>         if mode == 'sum':
>             func = np.sum
>         elif mode != 'max':
>             func = np.average
>         inc_pad = mode == 'average_inc_pad'
>     
>         for l in np.ndindex(*input.shape[:-nd]):
>             for r in np.ndindex(*output_val.shape[-nd:]):
>                 region = []
>                 for i in range(nd):
>                     r_stride = r[i] * stride[i]
>                     r_end = builtins.min(r_stride + ws[i], pad_img_shp[-nd + i])
>                     if not inc_pad:
>                         r_stride = builtins.max(r_stride, pad[i])
>                         r_end = builtins.min(r_end, input.shape[-nd + i] + pad[i])
>                     region.append(slice(r_stride, r_end))
> >               patch = padded_input[l][region]
> E               IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
> 
> theano/tensor/signal/tests/test_pool.py:197: IndexError
> =============================== warnings summary ===============================
> theano/gof/cmodule.py:23
>   /<<PKGBUILDDIR>>/theano/gof/cmodule.py:23: DeprecationWarning: 
>   
>     `numpy.distutils` is deprecated since NumPy 1.23.0, as a result
>     of the deprecation of `distutils` itself. It will be removed for
>     Python >= 3.12. For older Python versions it will remain present.
>     It is recommended to use `setuptools < 60.0` for those Python versions.
>     For more details, see:
>       https://numpy.org/devdocs/reference/distutils_status_migration.html 
>   
>   
>     import numpy.distutils
> 
> theano/scalar/basic.py:2323
>   /<<PKGBUILDDIR>>/theano/scalar/basic.py:2323: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
>   Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     self.ctor = getattr(np, o_type.dtype)
> 
> theano/tensor/signal/tests/test_conv.py: 3081 warnings
> theano/tensor/signal/tests/test_pool.py: 11605 warnings
>   /<<PKGBUILDDIR>>/theano/tensor/basic.py:381: DeprecationWarning: `np.complex` is a deprecated alias for the builtin `complex`. To silence this warning, use `complex` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.complex128` here.
>   Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
>     np.complex(data)  # works for all numeric scalars
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_DownsampleFactorMax_hessian
>   /<<PKGBUILDDIR>>/theano/tests/breakpoint.py:3: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
>     import imp
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_max_pool_3d_3D_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:911: UserWarning: DEPRECATION: the 'ds' parameter is not going to exist anymore as it is going to be replaced by the parameter 'ws'.
>     output = pool_3d(input=images,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_max_pool_3d_3D_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:911: UserWarning: DEPRECATION: the 'st' parameter is not going to exist anymore as it is going to be replaced by the parameter 'stride'.
>     output = pool_3d(input=images,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_max_pool_3d_3D_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:911: UserWarning: DEPRECATION: the 'padding' parameter is not going to exist anymore as it is going to be replaced by the parameter 'pad'.
>     output = pool_3d(input=images,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_pooling_with_tensor_vars_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:1095: UserWarning: DEPRECATION: the 'ds' parameter is not going to exist anymore as it is going to be replaced by the parameter 'ws'.
>     y = pool_2d(input=x,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_pooling_with_tensor_vars_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:1095: UserWarning: DEPRECATION: the 'st' parameter is not going to exist anymore as it is going to be replaced by the parameter 'stride'.
>     y = pool_2d(input=x,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_pooling_with_tensor_vars_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:1095: UserWarning: DEPRECATION: the 'padding' parameter is not going to exist anymore as it is going to be replaced by the parameter 'pad'.
>     y = pool_2d(input=x,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_pooling_with_tensor_vars_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:1111: UserWarning: DEPRECATION: the 'ds' parameter is not going to exist anymore as it is going to be replaced by the parameter 'ws'.
>     y = pool_2d(input=x,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_pooling_with_tensor_vars_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:1111: UserWarning: DEPRECATION: the 'st' parameter is not going to exist anymore as it is going to be replaced by the parameter 'stride'.
>     y = pool_2d(input=x,
> 
> theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_pooling_with_tensor_vars_deprecated_interface
>   /<<PKGBUILDDIR>>/theano/tensor/signal/tests/test_pool.py:1111: UserWarning: DEPRECATION: the 'padding' parameter is not going to exist anymore as it is going to be replaced by the parameter 'pad'.
>     y = pool_2d(input=x,
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> FAILED theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_DownsampleFactorMaxStride
> FAILED theano/tensor/signal/tests/test_pool.py::TestDownsampleFactorMax::test_DownsampleFactorMaxPaddingStride
> ========== 2 failed, 424 passed, 14698 warnings in 259.23s (0:04:19) ===========


The full build log is available from:
http://qa-logs.debian.net/2022/12/20/theano_1.0.5+dfsg-8_unstable.log

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