Issue 1:
Over in nipy/nibabel, we're encountering an intermittent bug in AppVeyor tests, specifically for Python 3.4 and 3.5. All of the failures seem to involve numpy objects, so there's some chance that it is a numpy problem.

The issue seems to be that an object is not recognized as itself, which leads me to think that it's a failing is check. I will walk through the exceptions below.

This has been happening with low frequency since June 8, with markedly greater frequency in the last month or two. (We have four jobs that hit this issue: C:\Python3{4,5}{,-x64}. Any given one may pass or fail in any given build, but the odds of all four passing seem to have dropped significantly.)

Here is the first known failure: https://ci.appveyor.com/project/nipy/nibabel/build/1.0.379/job/7ftediiuui4ofvep

And a recent failure: https://ci.appveyor.com/project/nipy/nibabel/build/1.0.506/job/wnxtbgrvcr7lr2y7

cc @matthew-brett @yarikoptic @chrispycheng

Reproducing code example:

We've been unable to reproduce in any other environment, so a minimal example is impossible.

Error message:

======================================================================
ERROR: autogenerated test from validate_data_deprecated
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_api_validators.py", line 23, in meth
validator(self, imaker, params)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_image_api.py", line 380, in validate_data_deprecated
assert_data_similar(img._data, params)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_helpers.py", line 80, in assert_data_similar
real_arr = np.asarray(arr)
File "c:\python34-x64\lib\site-packages\numpy\core\numeric.py", line 501, in asarray
return array(a, dtype, copy=False, order=order)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 261, in __array__
return self.minc_file.get_scaled_data()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 139, in get_scaled_data
return self._normalize(raw_data, sliceobj)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 189, in _normalize
dmin, dmax = self._get_valid_range()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 98, in _get_valid_range
info = np.iinfo(ddt.type)
File "c:\python34-x64\lib\site-packages\numpy\core\getlimits.py", line 516, in __init__
raise ValueError("Invalid integer data type.")
ValueError: Invalid integer data type.
======================================================================
ERROR: nibabel.tests.test_minc2.TestMinc2File.test_array_proxy_slicing
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_minc1.py", line 200, in test_array_proxy_slicing
arr = img.get_data()
File "c:\python34-x64\lib\site-packages\nibabel\dataobj_images.py", line 202, in get_data
data = np.asanyarray(self._dataobj)
File "c:\python34-x64\lib\site-packages\numpy\core\numeric.py", line 553, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 261, in __array__
return self.minc_file.get_scaled_data()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 139, in get_scaled_data
return self._normalize(raw_data, sliceobj)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 189, in _normalize
dmin, dmax = self._get_valid_range()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 98, in _get_valid_range
info = np.iinfo(ddt.type)
File "c:\python34-x64\lib\site-packages\numpy\core\getlimits.py", line 516, in __init__
raise ValueError("Invalid integer data type.")
ValueError: Invalid integer data type.
======================================================================
ERROR: nibabel.tests.test_minc2.TestMinc2File.test_load
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_minc1.py", line 187, in test_load
data = img.get_data()
File "c:\python34-x64\lib\site-packages\nibabel\dataobj_images.py", line 202, in get_data
data = np.asanyarray(self._dataobj)
File "c:\python34-x64\lib\site-packages\numpy\core\numeric.py", line 553, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 261, in __array__
return self.minc_file.get_scaled_data()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 139, in get_scaled_data
return self._normalize(raw_data, sliceobj)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 189, in _normalize
dmin, dmax = self._get_valid_range()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 98, in _get_valid_range
info = np.iinfo(ddt.type)
File "c:\python34-x64\lib\site-packages\numpy\core\getlimits.py", line 516, in __init__
raise ValueError("Invalid integer data type.")
ValueError: Invalid integer data type.
======================================================================
ERROR: nibabel.tests.test_minc2.TestMinc2File.test_mincfile_slicing
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_minc1.py", line 171, in test_mincfile_slicing
data = mnc.get_scaled_data()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 139, in get_scaled_data
return self._normalize(raw_data, sliceobj)
File "c:\python34-x64\lib\site-packages\nibabel\minc1.py", line 189, in _normalize
dmin, dmax = self._get_valid_range()
File "c:\python34-x64\lib\site-packages\nibabel\minc2.py", line 98, in _get_valid_range
info = np.iinfo(ddt.type)
File "c:\python34-x64\lib\site-packages\numpy\core\getlimits.py", line 516, in __init__
raise ValueError("Invalid integer data type.")
ValueError: Invalid integer data type.

These first few are related to #12093. If we can get that data, it will be easier to debug, but we will also be trying to catch the error on our end. I'm including these because when they always co-occur with other failures.

======================================================================
ERROR: nibabel.tests.test_processing.test_spatial_axes_check
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\numpy\testing\_private\decorators.py", line 155, in skipper_func
return f(*args, **kwargs)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_processing.py", line 366, in test_spatial_axes_check
out = resample_from_to(img, img, mode='nearest')
File "c:\python34-x64\lib\site-packages\nibabel\processing.py", line 180, in resample_from_to
cval=cval)
File "c:\python34-x64\lib\site-packages\scipy\ndimage\interpolation.py", line 416, in affine_transform
filtered = spline_filter(input, order, output=numpy.float64)
File "c:\python34-x64\lib\site-packages\scipy\ndimage\interpolation.py", line 113, in spline_filter
spline_filter1d(input, order, axis, output=output)
File "c:\python34-x64\lib\site-packages\scipy\ndimage\interpolation.py", line 82, in spline_filter1d
_nd_image.spline_filter1d(input, order, axis, output)
RuntimeError: array type dtype('float64') not supported
======================================================================
FAIL: autogenerated test from validate_data_interface
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_api_validators.py", line 23, in meth
validator(self, imaker, params)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_image_api.py", line 208, in validate_data_interface
self._check_proxy_interface(imaker, meth_name)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_image_api.py", line 253, in _check_proxy_interface
assert_true(data is data_again)
AssertionError: False is not true

Although a caching object failing to return the identical object seems a reasonable bug, this is what led me to start thinking that it might be a bug in the is check. The cached object is an ndarray.

======================================================================
FAIL: autogenerated test from validate_dtype
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_api_validators.py", line 23, in meth
validator(self, imaker, params)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_image_api.py", line 178, in validate_dtype
assert_equal(img.get_data_dtype().type, params['dtype'])
AssertionError: <class 'numpy.float64'> != <class 'numpy.float64'>
======================================================================
FAIL: nibabel.tests.test_minc2.TestMinc2File.test_mincfile
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\python34-x64\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "c:\python34-x64\lib\site-packages\nibabel\tests\test_minc1.py", line 159, in test_mincfile
assert_equal(mnc.get_data_dtype().type, tp['dtype'])
AssertionError: <class 'numpy.float64'> != <class 'numpy.float64'>
----------------------------------------------------------------------

And these two amount to numpy.float64 is numpy.float64 failing.

Numpy/Python version information:

One example:

1.15.2 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:07:06) ...

Issue 2:
On windows 7:

>>> np.cint, np.cint is np.int32
(numpy.int32, False)
>>> np.int_, np.int_ is np.int32
(numpy.int32, True)

On 64-bit linux:

>>> np.int_, np.int_ is np.int64
(numpy.int64, True)
>>> np.longlong, np.longlong is np.int64
(numpy.int64, False)

(original title: intc displays wrong class name)

The string representation of numpy.intc is <class 'numpy.int32'>. This would fine if this were true--just a name pointing to the same object. But at least on Windows 7, numpy.intc is not the same object as numpy.int32; it's not even a subclass. This is very confusing for debugging objects of this type, as objects inexplicably fail an isinstance test.

Could one of these two small changes be made:

Either make intc just be another name pointing to the object behind int32

Or make intc print out <class 'numpy.intc'>