Bug#906207: skimage FTBFS on 32bit: ValueError: Unexpected warning: overflow encountered in long_scalars
Adrian Bunk
bunk at debian.org
Wed Aug 15 15:13:09 BST 2018
Source: skimage
Version: 0.14.0-1
Severity: serious
https://buildd.debian.org/status/package.php?p=skimage
...
=================================== FAILURES ===================================
________________________________ test_spacing_1 ________________________________
def test_spacing_1():
n = 30
lx, ly, lz = n, n, n
data, _ = make_3d_syntheticdata(lx, ly, lz)
# Rescale `data` along Y axis
# `resize` is not yet 3D capable, so this must be done by looping in 2D.
data_aniso = np.zeros((n, n * 2, n))
for i, yz in enumerate(data):
data_aniso[i, :, :] = resize(yz, (n * 2, n),
mode='constant',
anti_aliasing=False)
# Generate new labels
small_l = int(lx // 5)
labels_aniso = np.zeros_like(data_aniso)
labels_aniso[lx // 5, ly // 5, lz // 5] = 1
labels_aniso[lx // 2 + small_l // 4,
ly - small_l // 2,
lz // 2 - small_l // 4] = 2
# Test with `spacing` kwarg
# First, anisotropic along Y
with expected_warnings(['"cg" mode' + '|' + SCIPY_EXPECTED]):
labels_aniso = random_walker(data_aniso, labels_aniso, mode='cg',
> spacing=(1., 2., 1.))
../debian/tmp/usr/lib/python2.7/dist-packages/skimage/segmentation/tests/test_random_walker.py:263:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python2.7/contextlib.py:24: in __exit__
self.gen.next()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z']
@contextmanager
def expected_warnings(matching):
"""Context for use in testing to catch known warnings matching regexes
Parameters
----------
matching : list of strings or compiled regexes
Regexes for the desired warning to catch
Examples
--------
>>> from skimage import data, img_as_ubyte, img_as_float
>>> with expected_warnings(['precision loss']):
... d = img_as_ubyte(img_as_float(data.coins()))
Notes
-----
Uses `all_warnings` to ensure all warnings are raised.
Upon exiting, it checks the recorded warnings for the desired matching
pattern(s).
Raises a ValueError if any match was not found or an unexpected
warning was raised.
Allows for three types of behaviors: `and`, `or`, and `optional` matches.
This is done to accomodate different build enviroments or loop conditions
that may produce different warnings. The behaviors can be combined.
If you pass multiple patterns, you get an orderless `and`, where all of the
warnings must be raised.
If you use the `|` operator in a pattern, you can catch one of several
warnings.
Finally, you can use `|\A\Z` in a pattern to signify it as optional.
"""
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
remaining = [m for m in matching if '\A\Z' not in m.split('|')]
for warn in w:
found = False
for match in matching:
if re.search(match, str(warn.message)) is not None:
found = True
if match in remaining:
remaining.remove(match)
if not found:
> raise ValueError('Unexpected warning: %s' % str(warn.message))
E ValueError: Unexpected warning: overflow encountered in long_scalars
../debian/tmp/usr/lib/python2.7/dist-packages/skimage/_shared/_warnings.py:121: ValueError
=============================== warnings summary ===============================
restoration/tests/test_denoise.py::test_cycle_spinning_multichannel
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/python2.7/dist-packages/skimage/restoration/_cycle_spin.py:154: UserWarning: dask is required for parallel computation, but it is not available. Computation will be performed serially.
"dask is required for parallel computation, but it is "
-- Docs: http://doc.pytest.org/en/latest/warnings.html
======= 1 failed, 1545 passed, 52 skipped, 1 warnings in 125.25 seconds ========
debian/rules:61: recipe for target 'python-test2' failed
make[1]: *** [python-test2] Error 1
More information about the debian-science-maintainers
mailing list