summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2018-07-15 23:38:56 +0200
committerMichał Górny <mgorny@gentoo.org>2018-07-16 00:22:01 +0200
commit557f548a624556a208aef66a58b7b3cd3760558b (patch)
treeb59c857e81b9ea7a0d48d5b9a503c2fa8d3e608e /dev-python/numpy
parentdev-python/pytest: Block pytest-capturelog since it breaks tests (diff)
downloadgentoo-557f548a624556a208aef66a58b7b3cd3760558b.tar.gz
gentoo-557f548a624556a208aef66a58b7b3cd3760558b.tar.bz2
gentoo-557f548a624556a208aef66a58b7b3cd3760558b.zip
dev-python/numpy: Backport a fix for py3.7 test failures
Diffstat (limited to 'dev-python/numpy')
-rw-r--r--dev-python/numpy/files/numpy-1.14.5-py37.patch135
-rw-r--r--dev-python/numpy/numpy-1.14.5.ebuild2
2 files changed, 137 insertions, 0 deletions
diff --git a/dev-python/numpy/files/numpy-1.14.5-py37.patch b/dev-python/numpy/files/numpy-1.14.5-py37.patch
new file mode 100644
index 000000000000..c53b3acf6966
--- /dev/null
+++ b/dev-python/numpy/files/numpy-1.14.5-py37.patch
@@ -0,0 +1,135 @@
+From dce7f20e95e6bd3fc07517c0b2daf3942a34ddf7 Mon Sep 17 00:00:00 2001
+From: Charles Harris <charlesr.harris@gmail.com>
+Date: Wed, 14 Mar 2018 12:52:26 -0600
+Subject: [PATCH] MAINT: Fix test_utils.py for Python 3.7.
+
+The contents of the module warnings registries was made more module
+specific in Python 3.7 and consequently the tests of the context
+managers clear_and_catch_warnings and suppress_warnings need updating.
+---
+ numpy/testing/tests/test_utils.py | 43 +++++++++++++++++++++----------
+ 1 file changed, 29 insertions(+), 14 deletions(-)
+
+diff --git a/numpy/testing/tests/test_utils.py b/numpy/testing/tests/test_utils.py
+index a97b627f9..33b3555b0 100644
+--- a/numpy/testing/tests/test_utils.py
++++ b/numpy/testing/tests/test_utils.py
+@@ -1114,18 +1114,28 @@ class TestStringEqual(unittest.TestCase):
+ lambda: assert_string_equal("foo", "hello"))
+
+
+-def assert_warn_len_equal(mod, n_in_context, py3_n_in_context=None):
++def assert_warn_len_equal(mod, n_in_context, py34=None, py37=None):
+ mod_warns = mod.__warningregistry__
++ num_warns = len(mod_warns)
+ # Python 3.4 appears to clear any pre-existing warnings of the same type,
+ # when raising warnings inside a catch_warnings block. So, there is a
+ # warning generated by the tests within the context manager, but no
+ # previous warnings.
+ if 'version' in mod_warns:
+- if py3_n_in_context is None:
+- py3_n_in_context = n_in_context
+- assert_equal(len(mod_warns) - 1, py3_n_in_context)
+- else:
+- assert_equal(len(mod_warns), n_in_context)
++ # Python 3 adds a 'version' entry to the registry,
++ # do not count it.
++ num_warns -= 1
++
++ # Behavior of warnings is Python version dependent. Adjust the
++ # expected result to compensate. In particular, Python 3.7 does
++ # not make an entry for ignored warnings.
++ if sys.version_info[:2] >= (3, 7):
++ if py37 is not None:
++ n_in_context = py37
++ elif sys.version_info[:2] >= (3, 4):
++ if py34 is not None:
++ n_in_context = py34
++ assert_equal(num_warns, n_in_context)
+
+
+ def _get_fresh_mod():
+@@ -1134,6 +1144,8 @@ def _get_fresh_mod():
+ try:
+ my_mod.__warningregistry__.clear()
+ except AttributeError:
++ # will not have a __warningregistry__ unless warning has been
++ # raised in the module at some point
+ pass
+ return my_mod
+
+@@ -1147,21 +1159,23 @@ def test_clear_and_catch_warnings():
+ warnings.warn('Some warning')
+ assert_equal(my_mod.__warningregistry__, {})
+ # Without specified modules, don't clear warnings during context
++ # Python 3.7 catch_warnings doesn't make an entry for 'ignore'.
+ with clear_and_catch_warnings():
+ warnings.simplefilter('ignore')
+ warnings.warn('Some warning')
+- assert_warn_len_equal(my_mod, 1)
++ assert_warn_len_equal(my_mod, 1, py37=0)
+ # Confirm that specifying module keeps old warning, does not add new
+ with clear_and_catch_warnings(modules=[my_mod]):
+ warnings.simplefilter('ignore')
+ warnings.warn('Another warning')
+- assert_warn_len_equal(my_mod, 1)
++ assert_warn_len_equal(my_mod, 1, py37=0)
+ # Another warning, no module spec does add to warnings dict, except on
+ # Python 3.4 (see comments in `assert_warn_len_equal`)
++ # Python 3.7 catch_warnings doesn't make an entry for 'ignore'.
+ with clear_and_catch_warnings():
+ warnings.simplefilter('ignore')
+ warnings.warn('Another warning')
+- assert_warn_len_equal(my_mod, 2, 1)
++ assert_warn_len_equal(my_mod, 2, py34=1, py37=0)
+
+
+ def test_suppress_warnings_module():
+@@ -1178,6 +1192,7 @@ def test_suppress_warnings_module():
+ np.apply_along_axis(warn, 0, [0])
+
+ # Test module based warning suppression:
++ assert_warn_len_equal(my_mod, 0)
+ with suppress_warnings() as sup:
+ sup.record(UserWarning)
+ # suppress warning from other module (may have .pyc ending),
+@@ -1189,8 +1204,7 @@ def test_suppress_warnings_module():
+ # got filtered)
+ assert_(len(sup.log) == 1)
+ assert_(sup.log[0].message.args[0] == "Some warning")
+-
+- assert_warn_len_equal(my_mod, 0)
++ assert_warn_len_equal(my_mod, 0, py37=0)
+ sup = suppress_warnings()
+ # Will have to be changed if apply_along_axis is moved:
+ sup.filter(module=my_mod)
+@@ -1204,11 +1218,11 @@ def test_suppress_warnings_module():
+ assert_warn_len_equal(my_mod, 0)
+
+ # Without specified modules, don't clear warnings during context
++ # Python 3.7 does not add ignored warnings.
+ with suppress_warnings():
+ warnings.simplefilter('ignore')
+ warnings.warn('Some warning')
+- assert_warn_len_equal(my_mod, 1)
+-
++ assert_warn_len_equal(my_mod, 1, py37=0)
+
+ def test_suppress_warnings_type():
+ # Initial state of module, no warnings
+@@ -1232,10 +1246,11 @@ def test_suppress_warnings_type():
+ assert_warn_len_equal(my_mod, 0)
+
+ # Without specified modules, don't clear warnings during context
++ # Python 3.7 does not add ignored warnings.
+ with suppress_warnings():
+ warnings.simplefilter('ignore')
+ warnings.warn('Some warning')
+- assert_warn_len_equal(my_mod, 1)
++ assert_warn_len_equal(my_mod, 1, py37=0)
+
+
+ def test_suppress_warnings_decorate_no_record():
+--
+2.18.0
+
diff --git a/dev-python/numpy/numpy-1.14.5.ebuild b/dev-python/numpy/numpy-1.14.5.ebuild
index 507ae3a8210e..33db9fa991fd 100644
--- a/dev-python/numpy/numpy-1.14.5.ebuild
+++ b/dev-python/numpy/numpy-1.14.5.ebuild
@@ -36,6 +36,8 @@ DEPEND="${RDEPEND}
PATCHES=(
"${FILESDIR}"/${PN}-1.14.5-no-hardcode-blas.patch
+ # backport a fix for py3.7 test failures
+ "${FILESDIR}"/numpy-1.14.5-py37.patch
)
src_unpack() {