Bug#924606: skimage: autopkgtest needs update for new version of python-scipy: ValueError: No warning raised matching: matrix subclass
Paul Gevers
elbrus at debian.org
Thu Mar 14 21:08:13 GMT 2019
Source: skimage
Version: 0.14.2-1
Severity: important
User: debian-ci at lists.debian.org
Usertags: needs-update
Control: affects -1 src:python-scipy
[X-Debbugs-CC: debian-ci at lists.debian.org,
python-scipy at packages.debian.org, debian-release at lists.debian.org]
Dear maintainers,
With a recent upload of python-scipy the autopkgtest of skimage fails in
testing when that autopkgtest is run with the binary packages of
python-scipy from unstable. It passes when run with only packages from
testing. In tabular form:
pass fail
python-scipy from testing 1.1.0-4
skimage from testing 0.14.2-1
all others from testing from testing
The latest upload of python-scipy was an effort to fix the autopkgtest
of python-scipy (see bug 919929 for background info), which was blurred
by loads of deprecation warnings from python-numpy. As part of the
solution, python-scipy was patched to prevent specific deprecation
warnings, but apparently the autopkgtest of skimage relies on these
warnings. I copied some of the output at the bottom of this report.
If I read the text in your error log correctly, you can mark the check
for these warnings as optional. Can you please do that? Or discuss with
the python-scipy maintainers how to resolve this issue.
Paul
https://ci.debian.net/data/autopkgtest/testing/amd64/s/skimage/2107462/log.gz
=================================== FAILURES
===================================
__________________________________ test_2d_bf
__________________________________
def test_2d_bf():
lx = 70
ly = 100
data, labels = make_2d_syntheticdata(lx, ly)
with expected_warnings([NUMPY_MATRIX_WARNING]):
> labels_bf = random_walker(data, labels, beta=90, mode='bf')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:74:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
__________________________________ test_2d_cg
__________________________________
def test_2d_cg():
lx = 70
ly = 100
data, labels = make_2d_syntheticdata(lx, ly)
with expected_warnings(['"cg" mode' + '|' + SCIPY_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
> labels_cg = random_walker(data, labels, beta=90, mode='cg')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:100:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z', 'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
________________________________ test_2d_cg_mg
_________________________________
def test_2d_cg_mg():
lx = 70
ly = 100
data, labels = make_2d_syntheticdata(lx, ly)
anticipated_warnings = [
'scipy.sparse.sparsetools|%s' % PYAMG_OR_SCIPY_WARNING,
NUMPY_MATRIX_WARNING]
with expected_warnings(anticipated_warnings):
> labels_cg_mg = random_walker(data, labels, beta=90,
mode='cg_mg')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:121:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching =
['scipy.sparse.sparsetools|numpy.linalg.matrix_rank|\\A\\Z|pyamg|\\A\\Z',
'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
__________________________________ test_types
__________________________________
def test_types():
lx = 70
ly = 100
data, labels = make_2d_syntheticdata(lx, ly)
data = 255 * (data - data.min()) // (data.max() - data.min())
data = data.astype(np.uint8)
with expected_warnings([PYAMG_OR_SCIPY_WARNING,
NUMPY_MATRIX_WARNING]):
> labels_cg_mg = random_walker(data, labels, beta=90,
mode='cg_mg')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:140:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['numpy.linalg.matrix_rank|\\A\\Z|pyamg|\\A\\Z', 'matrix
subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
_____________________________ test_reorder_labels
______________________________
def test_reorder_labels():
lx = 70
ly = 100
data, labels = make_2d_syntheticdata(lx, ly)
labels[labels == 2] = 4
with expected_warnings([NUMPY_MATRIX_WARNING]):
> labels_bf = random_walker(data, labels, beta=90, mode='bf')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:152:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
_______________________________ test_2d_inactive
_______________________________
def test_2d_inactive():
lx = 70
ly = 100
data, labels = make_2d_syntheticdata(lx, ly)
labels[10:20, 10:20] = -1
labels[46:50, 33:38] = -2
with expected_warnings([NUMPY_MATRIX_WARNING]):
> labels = random_walker(data, labels, beta=90)
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:165:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
___________________________________ test_3d
____________________________________
def test_3d():
n = 30
lx, ly, lz = n, n, n
data, labels = make_3d_syntheticdata(lx, ly, lz)
with expected_warnings(['"cg" mode' + '|' + SCIPY_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
> labels = random_walker(data, labels, mode='cg')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:177:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z', 'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
_______________________________ test_3d_inactive
_______________________________
def test_3d_inactive():
n = 30
lx, ly, lz = n, n, n
data, labels = make_3d_syntheticdata(lx, ly, lz)
old_labels = np.copy(labels)
labels[5:25, 26:29, 26:29] = -1
after_labels = np.copy(labels)
with expected_warnings(['"cg" mode|CObject type' + '|'
+ SCIPY_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
> labels = random_walker(data, labels, mode='cg')
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:192:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|CObject type|numpy.linalg.matrix_rank|\\A\\Z',
'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
____________________________ test_multispectral_2d
_____________________________
def test_multispectral_2d():
lx, ly = 70, 100
data, labels = make_2d_syntheticdata(lx, ly)
data = data[..., np.newaxis].repeat(2, axis=-1) # Expect
identical output
with expected_warnings(['"cg" mode' + '|' + SCIPY_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
multi_labels = random_walker(data, labels, mode='cg',
> multichannel=True)
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:205:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z', 'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
____________________________ test_multispectral_3d
_____________________________
def test_multispectral_3d():
n = 30
lx, ly, lz = n, n, n
data, labels = make_3d_syntheticdata(lx, ly, lz)
data = data[..., np.newaxis].repeat(2, axis=-1) # Expect
identical output
with expected_warnings(['"cg" mode' + '|' + SCIPY_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
multi_labels = random_walker(data, labels, mode='cg',
> multichannel=True)
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:223:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z', 'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
________________________________ test_spacing_0
________________________________
def test_spacing_0():
n = 30
lx, ly, lz = n, n, n
data, _ = make_3d_syntheticdata(lx, ly, lz)
# Rescale `data` along Z axis
data_aniso = np.zeros((n, n, n // 2))
for i, yz in enumerate(data):
data_aniso[i, :, :] = resize(yz, (n, n // 2),
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 // 2 - small_l // 4,
lz // 4 - small_l // 8] = 2
# Test with `spacing` kwarg
with expected_warnings(['"cg" mode' + '|' + SCIPY_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
labels_aniso = random_walker(data_aniso, labels_aniso,
mode='cg',
> spacing=(1., 1., 0.5))
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:258:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z', 'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
________________________________ test_spacing_1
________________________________
@xfail(condition=arch32,
reason=('Known test failure on 32-bit platforms. See links for '
'details: '
'https://github.com/scikit-image/scikit-image/issues/3091 '
'https://github.com/scikit-image/scikit-image/issues/3092'))
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_RANK_WARNING,
NUMPY_MATRIX_WARNING]):
labels_aniso = random_walker(data_aniso, labels_aniso,
mode='cg',
> spacing=(1., 2., 1.))
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:294:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['"cg" mode|numpy.linalg.matrix_rank|\\A\\Z', 'matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
_____________________________ test_length2_spacing
_____________________________
def test_length2_spacing():
# If this passes without raising an exception (warnings OK), the new
# spacing code is working properly.
np.random.seed(42)
img = np.ones((10, 10)) + 0.2 * np.random.normal(size=(10, 10))
labels = np.zeros((10, 10), dtype=np.uint8)
labels[2, 4] = 1
labels[6, 8] = 4
with expected_warnings([NUMPY_MATRIX_WARNING]):
> random_walker(img, labels, spacing=(1., 2.))
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:349:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
_____________________________ test_isolated_seeds
______________________________
def test_isolated_seeds():
np.random.seed(0)
a = np.random.random((7, 7))
mask = - np.ones(a.shape)
# This pixel is an isolated seed
mask[1, 1] = 1
# Unlabeled pixels
mask[3:, 3:] = 0
# Seeds connected to unlabeled pixels
mask[4, 4] = 2
mask[6, 6] = 1
# Test that no error is raised, and that labels of isolated
seeds are OK
with expected_warnings([NUMPY_MATRIX_WARNING]):
> res = random_walker(a, mask)
/usr/lib/python3/dist-packages/skimage/segmentation/tests/test_random_walker.py:399:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
matching = ['matrix subclass']
@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.
"""
if isinstance(matching, str):
raise ValueError('``matching`` should be a list of strings
and not '
'a string itself.')
with all_warnings() as w:
# enter context
yield w
# exited user context, check the recorded warnings
# Allow users to provide None
while None in matching:
matching.remove(None)
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))
if len(remaining) > 0:
msg = 'No warning raised matching:\n%s' %
'\n'.join(remaining)
> raise ValueError(msg)
E ValueError: No warning raised matching:
E matrix subclass
/usr/lib/python3/dist-packages/skimage/_shared/_warnings.py:130: ValueError
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/debian-science-maintainers/attachments/20190314/297bab5c/attachment-0001.sig>
More information about the debian-science-maintainers
mailing list