Hello community,

here is the log from the commit of package python-Bottleneck for 
openSUSE:Factory checked in at 2017-10-09 19:41:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Bottleneck (Old)
 and      /work/SRC/openSUSE:Factory/.python-Bottleneck.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Bottleneck"

Mon Oct  9 19:41:08 2017 rev:6 rq:530454 version:1.2.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Bottleneck/python-Bottleneck.changes      
2017-05-03 15:54:51.220016869 +0200
+++ /work/SRC/openSUSE:Factory/.python-Bottleneck.new/python-Bottleneck.changes 
2017-10-09 19:41:10.538163494 +0200
@@ -1,0 +2,13 @@
+Wed Sep 27 22:20:10 UTC 2017 - [email protected]
+
+- update to version 1.2.1:
+  * #156 Installing bottleneck when two versions of NumPy are present
+  * #157 Compiling on Ubuntu 14.04 inside a Windows 7 WMware
+  * #159 Occasional segmentation fault in nanargmin, nanargmax,
+    median, and nanmedian when all of the following conditions are
+    met: axis is None, input array is 2d or greater, and input array
+    is not C contiguous.
+  * #163 Reducing np.array([2**31], dtype=np.int64) overflows on
+    Windows
+
+-------------------------------------------------------------------

Old:
----
  Bottleneck-1.2.0.tar.gz

New:
----
  Bottleneck-1.2.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Bottleneck.spec ++++++
--- /var/tmp/diff_new_pack.2u3Zmv/_old  2017-10-09 19:41:11.106138531 +0200
+++ /var/tmp/diff_new_pack.2u3Zmv/_new  2017-10-09 19:41:11.106138531 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-Bottleneck
-Version:        1.2.0
+Version:        1.2.1
 Release:        0
 Summary:        A collection of fast NumPy array functions
 License:        BSD-2-Clause and BSD-3-Clause
@@ -26,11 +26,11 @@
 Url:            http://berkeleyanalytics.com/bottleneck/
 Source0:        
https://files.pythonhosted.org/packages/source/B/Bottleneck/Bottleneck-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildRequires:  fdupes
-BuildRequires:  python-rpm-macros
 BuildRequires:  %{python_module devel}
-BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module numpy-devel >= 1.9.1}
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  fdupes
+BuildRequires:  python-rpm-macros
 Requires:       python-numpy >= 1.9.1
 %python_subpackages
 

++++++ Bottleneck-1.2.0.tar.gz -> Bottleneck-1.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/Bottleneck.egg-info/PKG-INFO 
new/Bottleneck-1.2.1/Bottleneck.egg-info/PKG-INFO
--- old/Bottleneck-1.2.0/Bottleneck.egg-info/PKG-INFO   2016-10-20 
20:48:43.000000000 +0200
+++ new/Bottleneck-1.2.1/Bottleneck.egg-info/PKG-INFO   2017-05-15 
18:49:14.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: Bottleneck
-Version: 1.2.0
+Version: 1.2.1
 Summary: Fast NumPy array functions written in C
 Home-page: https://github.com/kwgoodman/bottleneck
 Author: Keith Goodman
@@ -32,41 +32,42 @@
         
             >>> bn.bench()
             Bottleneck performance benchmark
-                Bottleneck 1.2.0; Numpy 1.11.2
+                Bottleneck 1.3.0.dev0; Numpy 1.12.1
                 Speed is NumPy time divided by Bottleneck time
-                NaN means approx one-fifth NaNs; float64 and axis=-1 are used
+                NaN means approx one-fifth NaNs; float64 used
         
-                              no NaN      NaN       no NaN      NaN
-                               (100,)    (1000,)  (1000,1000)(1000,1000)
-                nansum         58.3       16.6        2.3        5.1
-                nanmean       258.7       46.1        3.5        5.1
-                nanstd        238.4       42.9        2.8        5.0
-                nanvar        229.9       41.4        2.7        5.0
-                nanmin         44.6       12.9        0.8        0.9
-                nanmax         41.8       12.9        0.8        1.8
-                median         99.6       51.4        1.1        5.7
-                nanmedian     102.1       26.5        5.0       31.2
-                ss             27.4        6.4        1.6        1.6
-                nanargmin      72.6       24.6        2.3        3.4
-                nanargmax      70.1       29.2        2.4        4.6
-                anynan         22.1       49.9        0.5      114.6
-                allnan         43.3       48.4      115.8       66.7
-                rankdata       50.3        8.0        2.6        6.5
-                nanrankdata    52.5        8.1        2.9        6.8
-                partition       4.1        3.6        1.0        2.0
-                argpartition    2.7        2.2        1.1        1.5
-                replace        13.7        4.9        1.5        1.5
-                push         3231.6     7437.4       20.1       19.6
-                move_sum     4173.5     8955.4      194.7      374.8
-                move_mean   10265.5    18540.0      222.8      372.2
-                move_std     8910.9    12158.5      128.7      234.5
-                move_var    11969.4    18323.8      202.7      378.7
-                move_min     2164.6     3676.3       23.9       57.2
-                move_max     1995.0     4206.0       23.8      108.8
-                move_argmin  3380.5     5559.1       40.5      180.5
-                move_argmax  3386.5     7278.1       43.0      227.2
-                move_median  1762.3     1134.9      157.9      118.5
-                move_rank    1203.6      223.2        2.7        7.8
+                          no NaN     no NaN      NaN       no NaN      NaN
+                           (100,)  (1000,1000)(1000,1000)(1000,1000)(1000,1000)
+                           axis=0     axis=0     axis=0     axis=1     axis=1
+            nansum         67.3        0.3        0.7        2.5        2.4
+            nanmean       194.8        1.9        2.1        3.4        3.1
+            nanstd        241.5        1.6        2.1        2.7        2.6
+            nanvar        229.7        1.7        2.1        2.7        2.5
+            nanmin         34.1        0.7        1.1        0.8        2.6
+            nanmax         45.6        0.7        2.7        1.0        3.7
+            median        111.0        1.3        5.6        1.0        4.8
+            nanmedian     108.8        5.9        6.7        5.6        6.7
+            ss             16.3        1.1        1.2        1.6        1.6
+            nanargmin      89.2        2.9        5.1        2.2        5.6
+            nanargmax     107.4        3.0        5.4        2.2        5.8
+            anynan         19.4        0.3       35.0        0.5       29.9
+            allnan         39.9      146.6      128.3      115.8       75.6
+            rankdata       55.0        2.6        2.3        2.9        2.8
+            nanrankdata    59.8        2.8        2.2        3.2        2.5
+            partition       4.4        1.2        1.6        1.0        1.4
+            argpartition    3.5        1.1        1.4        1.1        1.6
+            replace        17.7        1.4        1.4        1.3        1.4
+            push         3440.0        7.8        9.5       20.0       15.5
+            move_sum     4743.0       75.7      156.1      195.4      211.1
+            move_mean    8760.9      116.2      167.4      252.1      258.8
+            move_std     8979.9       96.1      196.3      144.0      256.3
+            move_var    11216.8      127.3      243.9      225.9      321.4
+            move_min     2245.3       20.6       36.7       23.2       42.1
+            move_max     2223.7       20.5       37.2       24.1       42.4
+            move_argmin  3664.0       48.2       73.3       40.2       83.9
+            move_argmax  3916.9       42.0       75.4       41.5       81.2
+            move_median  2023.3      166.8      173.7      153.8      154.3
+            move_rank    1208.5        1.9        1.9        2.5        2.8
         
         You can also run a detailed benchmark for a single function using, for
         example, the command::
@@ -101,7 +102,7 @@
         Requirements:
         
         ======================== 
====================================================
-        Bottleneck               Python 2.7, 3.4, 3.5; NumPy 1.11.2
+        Bottleneck               Python 2.7, 3.5, 3.6; NumPy 1.12.1
         Compile                  gcc, clang, MinGW or MSVC
         Unit tests               nose
         ======================== 
====================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/Bottleneck.egg-info/SOURCES.txt 
new/Bottleneck-1.2.1/Bottleneck.egg-info/SOURCES.txt
--- old/Bottleneck-1.2.0/Bottleneck.egg-info/SOURCES.txt        2016-10-20 
20:48:43.000000000 +0200
+++ new/Bottleneck-1.2.1/Bottleneck.egg-info/SOURCES.txt        2017-05-15 
18:49:14.000000000 +0200
@@ -61,8 +61,11 @@
 doc/sphinxext/comment_eater.py
 doc/sphinxext/compiler_unparse.py
 doc/sphinxext/docscrape.py
+doc/sphinxext/docscrape.pyc
 doc/sphinxext/docscrape_sphinx.py
+doc/sphinxext/docscrape_sphinx.pyc
 doc/sphinxext/numpydoc.py
+doc/sphinxext/numpydoc.pyc
 doc/sphinxext/phantom_import.py
 doc/sphinxext/plot_directive.py
 doc/sphinxext/setup.cfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/Bottleneck.egg-info/requires.txt 
new/Bottleneck-1.2.1/Bottleneck.egg-info/requires.txt
--- old/Bottleneck-1.2.0/Bottleneck.egg-info/requires.txt       2016-10-20 
20:48:43.000000000 +0200
+++ new/Bottleneck-1.2.1/Bottleneck.egg-info/requires.txt       2017-05-15 
18:49:14.000000000 +0200
@@ -1 +1 @@
-numpy
\ No newline at end of file
+numpy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/Makefile 
new/Bottleneck-1.2.1/Makefile
--- old/Bottleneck-1.2.0/Makefile       2016-10-17 18:27:09.000000000 +0200
+++ new/Bottleneck-1.2.1/Makefile       2017-05-05 23:24:40.000000000 +0200
@@ -27,7 +27,7 @@
        ${PYTHON} -c "import bottleneck;bottleneck.test()"
 
 flake8:
-       flake8 --exclude=doc .
+       flake8 --exclude=doc,.tox .
 
 readme:
        PYTHONPATH=`pwd`:PYTHONPATH ${PYTHON} tools/update_readme.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/PKG-INFO 
new/Bottleneck-1.2.1/PKG-INFO
--- old/Bottleneck-1.2.0/PKG-INFO       2016-10-20 20:48:43.000000000 +0200
+++ new/Bottleneck-1.2.1/PKG-INFO       2017-05-15 18:49:14.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: Bottleneck
-Version: 1.2.0
+Version: 1.2.1
 Summary: Fast NumPy array functions written in C
 Home-page: https://github.com/kwgoodman/bottleneck
 Author: Keith Goodman
@@ -32,41 +32,42 @@
         
             >>> bn.bench()
             Bottleneck performance benchmark
-                Bottleneck 1.2.0; Numpy 1.11.2
+                Bottleneck 1.3.0.dev0; Numpy 1.12.1
                 Speed is NumPy time divided by Bottleneck time
-                NaN means approx one-fifth NaNs; float64 and axis=-1 are used
+                NaN means approx one-fifth NaNs; float64 used
         
-                              no NaN      NaN       no NaN      NaN
-                               (100,)    (1000,)  (1000,1000)(1000,1000)
-                nansum         58.3       16.6        2.3        5.1
-                nanmean       258.7       46.1        3.5        5.1
-                nanstd        238.4       42.9        2.8        5.0
-                nanvar        229.9       41.4        2.7        5.0
-                nanmin         44.6       12.9        0.8        0.9
-                nanmax         41.8       12.9        0.8        1.8
-                median         99.6       51.4        1.1        5.7
-                nanmedian     102.1       26.5        5.0       31.2
-                ss             27.4        6.4        1.6        1.6
-                nanargmin      72.6       24.6        2.3        3.4
-                nanargmax      70.1       29.2        2.4        4.6
-                anynan         22.1       49.9        0.5      114.6
-                allnan         43.3       48.4      115.8       66.7
-                rankdata       50.3        8.0        2.6        6.5
-                nanrankdata    52.5        8.1        2.9        6.8
-                partition       4.1        3.6        1.0        2.0
-                argpartition    2.7        2.2        1.1        1.5
-                replace        13.7        4.9        1.5        1.5
-                push         3231.6     7437.4       20.1       19.6
-                move_sum     4173.5     8955.4      194.7      374.8
-                move_mean   10265.5    18540.0      222.8      372.2
-                move_std     8910.9    12158.5      128.7      234.5
-                move_var    11969.4    18323.8      202.7      378.7
-                move_min     2164.6     3676.3       23.9       57.2
-                move_max     1995.0     4206.0       23.8      108.8
-                move_argmin  3380.5     5559.1       40.5      180.5
-                move_argmax  3386.5     7278.1       43.0      227.2
-                move_median  1762.3     1134.9      157.9      118.5
-                move_rank    1203.6      223.2        2.7        7.8
+                          no NaN     no NaN      NaN       no NaN      NaN
+                           (100,)  (1000,1000)(1000,1000)(1000,1000)(1000,1000)
+                           axis=0     axis=0     axis=0     axis=1     axis=1
+            nansum         67.3        0.3        0.7        2.5        2.4
+            nanmean       194.8        1.9        2.1        3.4        3.1
+            nanstd        241.5        1.6        2.1        2.7        2.6
+            nanvar        229.7        1.7        2.1        2.7        2.5
+            nanmin         34.1        0.7        1.1        0.8        2.6
+            nanmax         45.6        0.7        2.7        1.0        3.7
+            median        111.0        1.3        5.6        1.0        4.8
+            nanmedian     108.8        5.9        6.7        5.6        6.7
+            ss             16.3        1.1        1.2        1.6        1.6
+            nanargmin      89.2        2.9        5.1        2.2        5.6
+            nanargmax     107.4        3.0        5.4        2.2        5.8
+            anynan         19.4        0.3       35.0        0.5       29.9
+            allnan         39.9      146.6      128.3      115.8       75.6
+            rankdata       55.0        2.6        2.3        2.9        2.8
+            nanrankdata    59.8        2.8        2.2        3.2        2.5
+            partition       4.4        1.2        1.6        1.0        1.4
+            argpartition    3.5        1.1        1.4        1.1        1.6
+            replace        17.7        1.4        1.4        1.3        1.4
+            push         3440.0        7.8        9.5       20.0       15.5
+            move_sum     4743.0       75.7      156.1      195.4      211.1
+            move_mean    8760.9      116.2      167.4      252.1      258.8
+            move_std     8979.9       96.1      196.3      144.0      256.3
+            move_var    11216.8      127.3      243.9      225.9      321.4
+            move_min     2245.3       20.6       36.7       23.2       42.1
+            move_max     2223.7       20.5       37.2       24.1       42.4
+            move_argmin  3664.0       48.2       73.3       40.2       83.9
+            move_argmax  3916.9       42.0       75.4       41.5       81.2
+            move_median  2023.3      166.8      173.7      153.8      154.3
+            move_rank    1208.5        1.9        1.9        2.5        2.8
         
         You can also run a detailed benchmark for a single function using, for
         example, the command::
@@ -101,7 +102,7 @@
         Requirements:
         
         ======================== 
====================================================
-        Bottleneck               Python 2.7, 3.4, 3.5; NumPy 1.11.2
+        Bottleneck               Python 2.7, 3.5, 3.6; NumPy 1.12.1
         Compile                  gcc, clang, MinGW or MSVC
         Unit tests               nose
         ======================== 
====================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/README.rst 
new/Bottleneck-1.2.1/README.rst
--- old/Bottleneck-1.2.0/README.rst     2016-10-20 18:08:38.000000000 +0200
+++ new/Bottleneck-1.2.1/README.rst     2017-05-05 23:24:40.000000000 +0200
@@ -31,41 +31,42 @@
 
     >>> bn.bench()
     Bottleneck performance benchmark
-        Bottleneck 1.2.0; Numpy 1.11.2
+        Bottleneck 1.3.0.dev0; Numpy 1.12.1
         Speed is NumPy time divided by Bottleneck time
-        NaN means approx one-fifth NaNs; float64 and axis=-1 are used
+        NaN means approx one-fifth NaNs; float64 used
 
-                      no NaN      NaN       no NaN      NaN
-                       (100,)    (1000,)  (1000,1000)(1000,1000)
-        nansum         58.3       16.6        2.3        5.1
-        nanmean       258.7       46.1        3.5        5.1
-        nanstd        238.4       42.9        2.8        5.0
-        nanvar        229.9       41.4        2.7        5.0
-        nanmin         44.6       12.9        0.8        0.9
-        nanmax         41.8       12.9        0.8        1.8
-        median         99.6       51.4        1.1        5.7
-        nanmedian     102.1       26.5        5.0       31.2
-        ss             27.4        6.4        1.6        1.6
-        nanargmin      72.6       24.6        2.3        3.4
-        nanargmax      70.1       29.2        2.4        4.6
-        anynan         22.1       49.9        0.5      114.6
-        allnan         43.3       48.4      115.8       66.7
-        rankdata       50.3        8.0        2.6        6.5
-        nanrankdata    52.5        8.1        2.9        6.8
-        partition       4.1        3.6        1.0        2.0
-        argpartition    2.7        2.2        1.1        1.5
-        replace        13.7        4.9        1.5        1.5
-        push         3231.6     7437.4       20.1       19.6
-        move_sum     4173.5     8955.4      194.7      374.8
-        move_mean   10265.5    18540.0      222.8      372.2
-        move_std     8910.9    12158.5      128.7      234.5
-        move_var    11969.4    18323.8      202.7      378.7
-        move_min     2164.6     3676.3       23.9       57.2
-        move_max     1995.0     4206.0       23.8      108.8
-        move_argmin  3380.5     5559.1       40.5      180.5
-        move_argmax  3386.5     7278.1       43.0      227.2
-        move_median  1762.3     1134.9      157.9      118.5
-        move_rank    1203.6      223.2        2.7        7.8
+                  no NaN     no NaN      NaN       no NaN      NaN
+                   (100,)  (1000,1000)(1000,1000)(1000,1000)(1000,1000)
+                   axis=0     axis=0     axis=0     axis=1     axis=1
+    nansum         67.3        0.3        0.7        2.5        2.4
+    nanmean       194.8        1.9        2.1        3.4        3.1
+    nanstd        241.5        1.6        2.1        2.7        2.6
+    nanvar        229.7        1.7        2.1        2.7        2.5
+    nanmin         34.1        0.7        1.1        0.8        2.6
+    nanmax         45.6        0.7        2.7        1.0        3.7
+    median        111.0        1.3        5.6        1.0        4.8
+    nanmedian     108.8        5.9        6.7        5.6        6.7
+    ss             16.3        1.1        1.2        1.6        1.6
+    nanargmin      89.2        2.9        5.1        2.2        5.6
+    nanargmax     107.4        3.0        5.4        2.2        5.8
+    anynan         19.4        0.3       35.0        0.5       29.9
+    allnan         39.9      146.6      128.3      115.8       75.6
+    rankdata       55.0        2.6        2.3        2.9        2.8
+    nanrankdata    59.8        2.8        2.2        3.2        2.5
+    partition       4.4        1.2        1.6        1.0        1.4
+    argpartition    3.5        1.1        1.4        1.1        1.6
+    replace        17.7        1.4        1.4        1.3        1.4
+    push         3440.0        7.8        9.5       20.0       15.5
+    move_sum     4743.0       75.7      156.1      195.4      211.1
+    move_mean    8760.9      116.2      167.4      252.1      258.8
+    move_std     8979.9       96.1      196.3      144.0      256.3
+    move_var    11216.8      127.3      243.9      225.9      321.4
+    move_min     2245.3       20.6       36.7       23.2       42.1
+    move_max     2223.7       20.5       37.2       24.1       42.4
+    move_argmin  3664.0       48.2       73.3       40.2       83.9
+    move_argmax  3916.9       42.0       75.4       41.5       81.2
+    move_median  2023.3      166.8      173.7      153.8      154.3
+    move_rank    1208.5        1.9        1.9        2.5        2.8
 
 You can also run a detailed benchmark for a single function using, for
 example, the command::
@@ -100,7 +101,7 @@
 Requirements:
 
 ======================== ====================================================
-Bottleneck               Python 2.7, 3.4, 3.5; NumPy 1.11.2
+Bottleneck               Python 2.7, 3.5, 3.6; NumPy 1.12.1
 Compile                  gcc, clang, MinGW or MSVC
 Unit tests               nose
 ======================== ====================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/RELEASE.rst 
new/Bottleneck-1.2.1/RELEASE.rst
--- old/Bottleneck-1.2.0/RELEASE.rst    2016-10-20 18:09:20.000000000 +0200
+++ new/Bottleneck-1.2.1/RELEASE.rst    2017-05-15 18:12:13.000000000 +0200
@@ -6,9 +6,32 @@
 These are the major changes made in each release. For details of the changes
 see the commit log at http://github.com/kwgoodman/bottleneck
 
-Bottleneck 1.2.0
+Bottleneck 1.2.1
 ================
 
+*Release date: 2017-05-15*
+
+This release adds support for NumPy's relaxed strides checking and
+fixes a few bugs.
+
+**Bug Fixes**
+
+- #156 Installing bottleneck when two versions of NumPy are present
+- #157 Compiling on Ubuntu 14.04 inside a Windows 7 WMware
+- #159 Occasional segmentation fault in nanargmin, nanargmax, median,
+  and nanmedian when all of the following conditions are met:
+  axis is None, input array is 2d or greater, and input array is not C
+  contiguous.
+- #163 Reducing np.array([2**31], dtype=np.int64) overflows on Windows
+
+Older versions
+==============
+
+Release notes from past releases.
+
+Bottleneck 1.2.0
+----------------
+
 *Release date: 2016-10-20*
 
 This release is a complete rewrite of Bottleneck.
@@ -51,11 +74,6 @@
 - A special thanks to the Cython developers. The quickest way to appreciate
   their work is to remove Cython from your project. It is not easy.
 
-Older versions
-==============
-
-Release notes from past releases.
-
 Bottleneck 1.1.0
 ----------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/LICENSE 
new/Bottleneck-1.2.1/bottleneck/LICENSE
--- old/Bottleneck-1.2.0/bottleneck/LICENSE     2016-10-13 18:52:06.000000000 
+0200
+++ new/Bottleneck-1.2.1/bottleneck/LICENSE     2017-05-05 23:24:40.000000000 
+0200
@@ -9,7 +9,7 @@
 Bottleneck license
 ==================
 
-Copyright (c) 2010-2016 Keith Goodman
+Copyright (c) 2010-2017 Keith Goodman
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/benchmark/bench.py 
new/Bottleneck-1.2.1/bottleneck/benchmark/bench.py
--- old/Bottleneck-1.2.0/bottleneck/benchmark/bench.py  2016-10-13 
18:52:06.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/benchmark/bench.py  2017-05-05 
23:24:40.000000000 +0200
@@ -6,9 +6,11 @@
 __all__ = ['bench']
 
 
-def bench(dtype='float64', axis=-1,
-          shapes=[(100,), (1000,), (1000, 1000), (1000, 1000)],
-          nans=[False, True, False, True],
+def bench(shapes=[(100,), (1000, 1000), (1000, 1000), (1000, 1000),
+                  (1000, 1000)],
+          axes=[0, 0, 0, 1, 1],
+          nans=[False, False, True, False, True],
+          dtype='float64',
           order='C',
           functions=None):
     """
@@ -16,17 +18,17 @@
 
     Parameters
     ----------
-    dtype : str, optional
-        Data type string such as 'float64', which is the default.
-    axis : int, optional
-        Axis along which to perform the calculations that are being
-        benchmarked. The default is the last axis (axis=-1).
     shapes : list, optional
         A list of tuple shapes of input arrays to use in the benchmark.
+    axes : list, optional
+        List of axes along which to perform the calculations that are being
+        benchmarked.
     nans : list, optional
         A list of the bools (True or False), one for each tuple in the
         `shapes` list, that tells whether the input arrays should be randomly
         filled with one-fifth NaNs.
+    dtype : str, optional
+        Data type string such as 'float64', which is the default.
     order : {'C', 'F'}, optional
         Whether to store multidimensional data in C- or Fortran-contiguous
         (row- or column-wise) order in memory.
@@ -43,21 +45,17 @@
 
     if len(shapes) != len(nans):
         raise ValueError("`shapes` and `nans` must have the same length")
-
-    dtype = str(dtype)
-    axis = str(axis)
-
-    tab = '    '
+    if len(shapes) != len(axes):
+        raise ValueError("`shapes` and `axes` must have the same length")
 
     # Header
     print('Bottleneck performance benchmark')
-    print("%sBottleneck %s; Numpy %s" % (tab, bn.__version__, np.__version__))
-    print("%sSpeed is NumPy time divided by Bottleneck time" % tab)
-    tup = (tab, dtype, axis)
-    print("%sNaN means approx one-fifth NaNs; %s and axis=%s are used" % tup)
+    print("    Bottleneck %s; Numpy %s" % (bn.__version__, np.__version__))
+    print("    Speed is NumPy time divided by Bottleneck time")
+    print("    NaN means approx one-fifth NaNs; %s used" % str(dtype))
 
     print('')
-    header = [" "*15]
+    header = [" "*11]
     for nan in nans:
         if nan:
             header.append("NaN".center(11))
@@ -65,13 +63,17 @@
             header.append("no NaN".center(11))
     print("".join(header))
     header = ["".join(str(shape).split(" ")).center(11) for shape in shapes]
-    header = [" "*16] + header
+    header = [" "*12] + header
+    print("".join(header))
+    header = ["".join(("axis=" + str(axis)).split(" ")).center(11)
+              for axis in axes]
+    header = [" "*12] + header
     print("".join(header))
 
-    suite = benchsuite(shapes, dtype, axis, nans, order, functions)
+    suite = benchsuite(shapes, dtype, nans, axes, order, functions)
     for test in suite:
         name = test["name"].ljust(12)
-        fmt = tab + name + "%7.1f" + "%11.1f"*(len(shapes) - 1)
+        fmt = name + "%7.1f" + "%11.1f"*(len(shapes) - 1)
         speed = timer(test['statements'], test['setups'])
         print(fmt % tuple(speed))
 
@@ -88,28 +90,31 @@
     return speed
 
 
-def getarray(shape, dtype, nans=False, order='C'):
+def getarray(shape, dtype, nans, order):
     a = np.arange(np.prod(shape), dtype=dtype)
     if nans and issubclass(a.dtype.type, np.inexact):
         a[::5] = np.nan
-    else:
-        rs = np.random.RandomState(shape)
-        rs.shuffle(a)
+    rs = np.random.RandomState(shape)
+    rs.shuffle(a)
     return np.array(a.reshape(*shape), order=order)
 
 
-def benchsuite(shapes, dtype, axis, nans, order, functions):
+def benchsuite(shapes, dtype, nans, axes, order, functions):
 
     suite = []
 
-    def getsetups(setup, shapes, nans, order):
+    def getsetups(setup, shapes, nans, axes, dtype, order):
         template = """
         from bottleneck.benchmark.bench import getarray
-        a = getarray(%s, 'DTYPE', %s, '%s')
+        a = getarray(%s, '%s', %s, '%s')
+        axis=%s
         %s"""
         setups = []
-        for shape, nan in zip(shapes, nans):
-            setups.append(template % (str(shape), str(nan), order, setup))
+        for shape, axis, nan in zip(shapes, axes, nans):
+            s = template % (str(shape), str(dtype), str(nan), str(order),
+                            str(axis), setup)
+            s = '\n'.join([line.strip() for line in s.split('\n')])
+            setups.append(s)
         return setups
 
     # non-moving window functions
@@ -120,14 +125,14 @@
             continue
         run = {}
         run['name'] = func
-        run['statements'] = ["bn_func(a, AXIS)", "sl_func(a, AXIS)"]
+        run['statements'] = ["bn_func(a, axis)", "sl_func(a, axis)"]
         setup = """
             from bottleneck import %s as bn_func
             try: from numpy import %s as sl_func
             except ImportError: from bottleneck.slow import %s as sl_func
             if "%s" == "median": from bottleneck.slow import median as sl_func
         """ % (func, func, func, func)
-        run['setups'] = getsetups(setup, shapes, nans, order)
+        run['setups'] = getsetups(setup, shapes, nans, axes, dtype, order)
         suite.append(run)
 
     # partition, argpartition
@@ -137,16 +142,16 @@
             continue
         run = {}
         run['name'] = func
-        run['statements'] = ["bn_func(a, n, AXIS)",
-                             "sl_func(a, n, AXIS)"]
+        run['statements'] = ["bn_func(a, n, axis)",
+                             "sl_func(a, n, axis)"]
         setup = """
             from bottleneck import %s as bn_func
             from bottleneck.slow import %s as sl_func
-            if AXIS is None: n = a.size
-            else: n = a.shape[AXIS] - 1
+            if axis is None: n = a.size
+            else: n = a.shape[axis] - 1
             n = max(n / 2, 0)
         """ % (func, func)
-        run['setups'] = getsetups(setup, shapes, nans, order)
+        run['setups'] = getsetups(setup, shapes, nans, axes, dtype, order)
         suite.append(run)
 
     # replace, push
@@ -160,8 +165,8 @@
             run['statements'] = ["bn_func(a, nan, 0)",
                                  "slow_func(a, nan, 0)"]
         elif func == 'push':
-            run['statements'] = ["bn_func(a, 5, AXIS)",
-                                 "slow_func(a, 5, AXIS)"]
+            run['statements'] = ["bn_func(a, 5, axis)",
+                                 "slow_func(a, 5, axis)"]
         else:
             raise ValueError('Unknow function name')
         setup = """
@@ -169,7 +174,7 @@
             from bottleneck import %s as bn_func
             from bottleneck.slow import %s as slow_func
         """ % (func, func)
-        run['setups'] = getsetups(setup, shapes, nans, order)
+        run['setups'] = getsetups(setup, shapes, nans, axes, dtype, order)
         suite.append(run)
 
     # moving window functions
@@ -179,38 +184,14 @@
             continue
         run = {}
         run['name'] = func
-        run['statements'] = ["bn_func(a, w, 1, AXIS)",
-                             "sw_func(a, w, 1, AXIS)"]
+        run['statements'] = ["bn_func(a, w, 1, axis)",
+                             "sw_func(a, w, 1, axis)"]
         setup = """
             from bottleneck.slow.move import %s as sw_func
             from bottleneck import %s as bn_func
-            w = a.shape[AXIS] // 5
+            w = a.shape[axis] // 5
         """ % (func, func)
-        run['setups'] = getsetups(setup, shapes, nans, order)
-        if axis != 'None':
-            suite.append(run)
-
-    # Strip leading spaces from setup code
-    for i, run in enumerate(suite):
-        for j in range(len(run['setups'])):
-            t = run['setups'][j]
-            t = '\n'.join([z.strip() for z in t.split('\n')])
-            suite[i]['setups'][j] = t
-
-    # Set dtype and axis in setups
-    for i, run in enumerate(suite):
-        for j in range(len(run['setups'])):
-            t = run['setups'][j]
-            t = t.replace('DTYPE', dtype)
-            t = t.replace('AXIS', axis)
-            suite[i]['setups'][j] = t
-
-    # Set dtype and axis in statements
-    for i, run in enumerate(suite):
-        for j in range(2):
-            t = run['statements'][j]
-            t = t.replace('DTYPE', dtype)
-            t = t.replace('AXIS', axis)
-            suite[i]['statements'][j] = t
+        run['setups'] = getsetups(setup, shapes, nans, axes, dtype, order)
+        suite.append(run)
 
     return suite
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/src/bottleneck.h 
new/Bottleneck-1.2.1/bottleneck/src/bottleneck.h
--- old/Bottleneck-1.2.0/bottleneck/src/bottleneck.h    2016-10-13 
18:52:06.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/src/bottleneck.h    2017-05-05 
23:24:40.000000000 +0200
@@ -31,7 +31,6 @@
 
 #if PY_MAJOR_VERSION >= 3
     #define PyString_FromString PyBytes_FromString
-    #define PyInt_FromLong PyLong_FromLong
     #define PyInt_AsLong PyLong_AsLong
     #define PyString_InternFromString PyUnicode_InternFromString
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/src/iterators.h 
new/Bottleneck-1.2.1/bottleneck/src/iterators.h
--- old/Bottleneck-1.2.0/bottleneck/src/iterators.h     2016-10-14 
23:16:01.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/src/iterators.h     2017-05-05 
23:24:40.000000000 +0200
@@ -21,6 +21,7 @@
     npy_intp   astrides[NPY_MAXDIMS]; /* a.strides, a.strides[axis] removed */
     npy_intp   shape[NPY_MAXDIMS];    /* a.shape, a.shape[axis] removed */
     char       *pa;     /* pointer to data corresponding to indices */
+    PyArrayObject *a_ravel; /* NULL or pointer to ravelled input array */
 };
 typedef struct _iter iter;
 
@@ -59,6 +60,11 @@
     }
 }
 
+/*
+ * If both ravel != 0 and it.a_ravel != NULL then you are responsible for
+ * calling Py_DECREF(it.a_ravel) after you are done with the iterator.
+ * See nanargmin for an example.
+ */
 static BN_INLINE void
 init_iter_all(iter *it, PyArrayObject *a, int ravel, int anyorder)
 {
@@ -70,6 +76,7 @@
     it->axis = 0;
     it->its = 0;
     it->nits = 1;
+    it->a_ravel = NULL;
 
     if (ndim == 1) {
         it->ndim_m2 = -1;
@@ -81,13 +88,15 @@
         it->length = 1;
         it->astride = 0;
     }
-    else if (C_CONTIGUOUS(a)) {
+    /* The &&! in the next two else ifs is to deal with relaxed
+     * stride checking introduced in numpy 1.12.0; see gh #161 */
+    else if (C_CONTIGUOUS(a) && !F_CONTIGUOUS(a)) {
         it->ndim_m2 = -1;
         it->axis = ndim - 1;
         it->length = PyArray_SIZE(a);
         it->astride = strides[ndim - 1];
     }
-    else if (F_CONTIGUOUS(a)) {
+    else if (F_CONTIGUOUS(a) && !C_CONTIGUOUS(a)) {
         if (anyorder || !ravel) {
             it->ndim_m2 = -1;
             it->length = PyArray_SIZE(a);
@@ -99,7 +108,7 @@
             } else {
                 a = (PyArrayObject *)PyArray_Ravel(a, NPY_CORDER);
             }
-            Py_DECREF(a);
+            it->a_ravel = a;
             it->length = PyArray_DIM(a, 0);
             it->astride = PyArray_STRIDE(a, 0);
         }
@@ -111,7 +120,7 @@
         } else {
             a = (PyArrayObject *)PyArray_Ravel(a, NPY_CORDER);
         }
-        Py_DECREF(a);
+        it->a_ravel = a;
         it->length = PyArray_DIM(a, 0);
         it->astride = PyArray_STRIDE(a, 0);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Bottleneck-1.2.0/bottleneck/src/move_median/move_median.c 
new/Bottleneck-1.2.1/bottleneck/src/move_median/move_median.c
--- old/Bottleneck-1.2.0/bottleneck/src/move_median/move_median.c       
2016-10-13 18:52:06.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/src/move_median/move_median.c       
2017-05-05 23:24:40.000000000 +0200
@@ -26,24 +26,26 @@
 */
 
 /* helper functions */
-static inline ai_t mm_get_median(mm_handle *mm);
-static inline void heapify_small_node(mm_handle *mm, idx_t idx);
-static inline void heapify_large_node(mm_handle *mm, idx_t idx);
-static inline idx_t mm_get_smallest_child(mm_node **heap, idx_t window,
-                                          idx_t idx, mm_node **child);
-static inline idx_t mm_get_largest_child(mm_node **heap, idx_t window,
-                                         idx_t idx, mm_node **child);
-static inline void mm_move_up_small(mm_node **heap, idx_t idx, mm_node *node,
-                                    idx_t p_idx, mm_node *parent);
-static inline void mm_move_down_small(mm_node **heap, idx_t window, idx_t idx,
-                                      mm_node *node);
-static inline void mm_move_down_large(mm_node **heap, idx_t idx, mm_node *node,
-                                      idx_t p_idx, mm_node *parent);
-static inline void mm_move_up_large(mm_node **heap, idx_t window, idx_t idx,
-                                    mm_node *node);
-static inline void mm_swap_heap_heads(mm_node **s_heap, idx_t n_s,
-                                      mm_node **l_heap, idx_t n_l,
-                                      mm_node *s_node, mm_node *l_node);
+static MM_INLINE ai_t mm_get_median(mm_handle *mm);
+static MM_INLINE void heapify_small_node(mm_handle *mm, idx_t idx);
+static MM_INLINE void heapify_large_node(mm_handle *mm, idx_t idx);
+static MM_INLINE idx_t mm_get_smallest_child(mm_node **heap, idx_t window,
+                                             idx_t idx, mm_node **child);
+static MM_INLINE idx_t mm_get_largest_child(mm_node **heap, idx_t window,
+                                            idx_t idx, mm_node **child);
+static MM_INLINE void mm_move_up_small(mm_node **heap, idx_t idx,
+                                       mm_node *node, idx_t p_idx,
+                                       mm_node *parent);
+static MM_INLINE void mm_move_down_small(mm_node **heap, idx_t window,
+                                         idx_t idx, mm_node *node);
+static MM_INLINE void mm_move_down_large(mm_node **heap, idx_t idx,
+                                         mm_node *node, idx_t p_idx,
+                                         mm_node *parent);
+static MM_INLINE void mm_move_up_large(mm_node **heap, idx_t window, idx_t idx,
+                                       mm_node *node);
+static MM_INLINE void mm_swap_heap_heads(mm_node **s_heap, idx_t n_s,
+                                         mm_node **l_heap, idx_t n_l,
+                                         mm_node *s_node, mm_node *l_node);
 
 
 /*
@@ -461,7 +463,7 @@
                 mm->s_first_leaf = FIRST_LEAF(mm->n_s);
                 heapify_small_node(mm, n_s);
 
-            }   
+            }
 
             /* plug nan array hole */
             if (idx != n_n - 1) {
@@ -514,19 +516,19 @@
 */
 
 /* Return the current median */
-static inline ai_t
+static MM_INLINE ai_t
 mm_get_median(mm_handle *mm)
 {
     idx_t n_total = mm->n_l + mm->n_s;
     if (n_total < mm->min_count)
-        return NAN;
+        return MM_NAN();
     if (min(mm->window, n_total) % 2 == 1)
         return mm->s_heap[0]->ai;
     return (mm->s_heap[0]->ai + mm->l_heap[0]->ai) / 2.0;
 }
 
 
-static inline void
+static MM_INLINE void
 heapify_small_node(mm_handle *mm, idx_t idx)
 {
     idx_t idx2;
@@ -578,7 +580,7 @@
 }
 
 
-static inline void
+static MM_INLINE void
 heapify_large_node(mm_handle *mm, idx_t idx)
 {
     idx_t idx2;
@@ -633,7 +635,7 @@
 
 /* Return the index of the smallest child of the node. The pointer
  * child will also be set. */
-static inline idx_t
+static MM_INLINE idx_t
 mm_get_smallest_child(mm_node **heap, idx_t window, idx_t idx, mm_node **child)
 {
     idx_t i0 = FC_IDX(idx);
@@ -658,7 +660,7 @@
 
 /* Return the index of the largest child of the node. The pointer
  * child will also be set. */
-static inline idx_t
+static MM_INLINE idx_t
 mm_get_largest_child(mm_node **heap, idx_t window, idx_t idx, mm_node **child)
 {
     idx_t i0 = FC_IDX(idx);
@@ -682,7 +684,7 @@
 
 
 /* Move the given node up through the heap to the appropriate position. */
-static inline void
+static MM_INLINE void
 mm_move_up_small(mm_node **heap, idx_t idx, mm_node *node, idx_t p_idx,
                  mm_node *parent)
 {
@@ -698,7 +700,7 @@
 
 
 /* Move the given node down through the heap to the appropriate position. */
-static inline void
+static MM_INLINE void
 mm_move_down_small(mm_node **heap, idx_t window, idx_t idx, mm_node *node)
 {
     mm_node *child;
@@ -713,7 +715,7 @@
 
 
 /* Move the given node down through the heap to the appropriate position. */
-static inline void
+static MM_INLINE void
 mm_move_down_large(mm_node **heap, idx_t idx, mm_node *node, idx_t p_idx,
                    mm_node *parent)
 {
@@ -729,7 +731,7 @@
 
 
 /* Move the given node up through the heap to the appropriate position. */
-static inline void
+static MM_INLINE void
 mm_move_up_large(mm_node **heap, idx_t window, idx_t idx, mm_node *node)
 {
     mm_node *child;
@@ -744,7 +746,7 @@
 
 
 /* Swap the heap heads. */
-static inline void
+static MM_INLINE void
 mm_swap_heap_heads(mm_node **s_heap, idx_t n_s, mm_node **l_heap, idx_t n_l,
                    mm_node *s_node, mm_node *l_node)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Bottleneck-1.2.0/bottleneck/src/move_median/move_median.h 
new/Bottleneck-1.2.1/bottleneck/src/move_median/move_median.h
--- old/Bottleneck-1.2.0/bottleneck/src/move_median/move_median.h       
2016-10-13 18:52:06.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/src/move_median/move_median.h       
2017-05-05 23:24:40.000000000 +0200
@@ -1,3 +1,4 @@
+#include <string.h>
 #include <stdio.h>
 #include <stddef.h>
 #include <stdlib.h>
@@ -14,16 +15,6 @@
     #define NUM_CHILDREN 8
 #endif
 
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
-    #define inline __inline
-    static __inline ai_t __NAN() {
-      ai_t value;
-      memset(&value, 0xFF, sizeof(value));
-      return value;
-    }
-    #define NAN __NAN()
-#endif
-
 /* Find indices of parent and first child */
 #define P_IDX(i) ((i) - 1) / NUM_CHILDREN
 #define FC_IDX(i) NUM_CHILDREN * (i) + 1
@@ -75,3 +66,29 @@
 /* functions common to non-nan and nan cases */
 void mm_reset(mm_handle *mm);
 void mm_free(mm_handle *mm);
+
+/* Copied from Cython ---------------------------------------------------- */
+
+/* inline attribute */
+#ifndef MM_INLINE
+    #if defined(__GNUC__)
+      #define MM_INLINE __inline__
+    #elif defined(_MSC_VER)
+      #define MM_INLINE __inline
+    #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+      #define MM_INLINE inline
+    #else
+      #define MM_INLINE
+    #endif
+#endif
+
+/* NaN */
+#ifdef NAN
+    #define MM_NAN() ((float) NAN)
+#else
+    static MM_INLINE float MM_NAN(void) {
+        float value;
+        memset(&value, 0xFF, sizeof(value));
+        return value;
+    }
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Bottleneck-1.2.0/bottleneck/src/nonreduce_axis_template.c 
new/Bottleneck-1.2.1/bottleneck/src/nonreduce_axis_template.c
--- old/Bottleneck-1.2.0/bottleneck/src/nonreduce_axis_template.c       
2016-10-17 18:26:25.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/src/nonreduce_axis_template.c       
2017-05-05 23:24:40.000000000 +0200
@@ -780,7 +780,7 @@
     Input array. If `a` is not an array, a conversion is attempted.
 kth : int
     The value of the element at index `kth` will be in its sorted
-    postion. Smaller (larger) or equal values will be to the left
+    position. Smaller (larger) or equal values will be to the left
     (right) of index `kth`.
 axis : {int, None}, optional
     Axis along which the partition is performed. The default
@@ -845,7 +845,7 @@
     Input array. If `a` is not an array, a conversion is attempted.
 kth : int
     The value of the element at index `kth` will be in its sorted
-    postion. Smaller (larger) or equal values will be to the left
+    position. Smaller (larger) or equal values will be to the left
     (right) of index `kth`.
 axis : {int, None}, optional
     Axis along which the partition is performed. The default (axis=-1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/src/reduce_template.c 
new/Bottleneck-1.2.1/bottleneck/src/reduce_template.c
--- old/Bottleneck-1.2.0/bottleneck/src/reduce_template.c       2016-10-17 
18:27:38.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/src/reduce_template.c       2017-05-05 
23:24:40.000000000 +0200
@@ -11,6 +11,12 @@
     iter it; \
     init_iter_all(&it, a, 1, 0);
 
+/* used with INIT_ALL_RAVEL */
+#define DECREF_INIT_ALL_RAVEL \
+    if (it.a_ravel != NULL) { \
+        Py_DECREF(it.a_ravel); \
+    }
+
 #define INIT_ONE(dtype0, dtype1) \
     iter it; \
     PyObject *y; \
@@ -123,7 +129,7 @@
         NEXT
     }
     BN_END_ALLOW_THREADS
-    return PyInt_FromLong(asum);
+    return PyLong_FromLongLong(asum);
 }
 
 REDUCE_ONE(nansum, DTYPE0)
@@ -500,7 +506,7 @@
         NEXT
     }
     BN_END_ALLOW_THREADS
-    return PyInt_FromLong(extreme);
+    return PyLong_FromLongLong(extreme);
 }
 
 REDUCE_ONE(NAME, DTYPE0)
@@ -545,6 +551,7 @@
     Py_ssize_t idx = 0;
     INIT_ALL_RAVEL
     if (SIZE == 0) {
+        DECREF_INIT_ALL_RAVEL
         VALUE_ERR("numpy.NAME raises on a.size==0 and axis=None; "
                   "So Bottleneck too.");
         return NULL;
@@ -559,11 +566,12 @@
         }
     }
     BN_END_ALLOW_THREADS
+    DECREF_INIT_ALL_RAVEL
     if (allnan) {
         VALUE_ERR("All-NaN slice encountered");
         return NULL;
     } else {
-        return PyInt_FromLong(idx);
+        return PyLong_FromLongLong(idx);
     }
 }
 
@@ -613,6 +621,7 @@
     npy_DTYPE0 ai, extreme = BIG_INT;
     INIT_ALL_RAVEL
     if (SIZE == 0) {
+        DECREF_INIT_ALL_RAVEL
         VALUE_ERR("numpy.NAME raises on a.size==0 and axis=None; "
                   "So Bottleneck too.");
         return NULL;
@@ -626,7 +635,8 @@
         }
     }
     BN_END_ALLOW_THREADS
-    return PyInt_FromLong(idx);
+    DECREF_INIT_ALL_RAVEL
+    return PyLong_FromLongLong(idx);
 }
 
 REDUCE_ONE(NAME, DTYPE0)
@@ -718,7 +728,7 @@
         NEXT
     }
     BN_END_ALLOW_THREADS
-    return PyInt_FromLong(asum);
+    return PyLong_FromLongLong(asum);
 }
 
 REDUCE_ONE(ss, DTYPE0)
@@ -844,6 +854,7 @@
     done:
     BUFFER_DELETE
     BN_END_ALLOW_THREADS
+    DECREF_INIT_ALL_RAVEL
     return PyFloat_FromDouble(med);
 }
 
@@ -888,6 +899,7 @@
         BUFFER_DELETE
     }
     BN_END_ALLOW_THREADS
+    DECREF_INIT_ALL_RAVEL
     return PyFloat_FromDouble(med);
 }
 
@@ -1203,7 +1215,7 @@
 {
 
     int ndim;
-    int axis;
+    int axis = 0; /* initialize to avoid compiler error */
     int dtype;
     int ddof;
     int reduce_all = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/tests/util.py 
new/Bottleneck-1.2.1/bottleneck/tests/util.py
--- old/Bottleneck-1.2.0/bottleneck/tests/util.py       2016-10-18 
20:28:39.000000000 +0200
+++ new/Bottleneck-1.2.1/bottleneck/tests/util.py       2017-05-15 
18:14:03.000000000 +0200
@@ -109,6 +109,7 @@
     yield np.array([1, 2, 3]) + 1e9  # check that move_std is robust
     yield np.array([0, 0, 0])  # nanargmax/nanargmin
     yield np.array([1, nan, nan, 2])  # nanmedian
+    yield np.array([2**31], dtype=np.int64)  # overflows on windows
 
     # ties
     yield np.array([0, 0, 0])
@@ -155,6 +156,7 @@
                     yield a.reshape(shape)
 
     # non-contiguous arrays
+    yield np.array([[1, 2], [3, 4]])[:, [1]]  # gh 161
     for dtype in dtypes:
         # 1d
         a = np.arange(12).astype(dtype)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/bottleneck/version.py 
new/Bottleneck-1.2.1/bottleneck/version.py
--- old/Bottleneck-1.2.0/bottleneck/version.py  2016-10-20 18:10:09.000000000 
+0200
+++ new/Bottleneck-1.2.1/bottleneck/version.py  2017-05-15 18:28:36.000000000 
+0200
@@ -1,4 +1,3 @@
 "Bottleneck version"
 
-# Format expected by setup.py and doc/source/conf.py: string of form "X.Y.Z"
-__version__ = "1.2.0"
+__version__ = "1.2.1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/doc/source/conf.py 
new/Bottleneck-1.2.1/doc/source/conf.py
--- old/Bottleneck-1.2.0/doc/source/conf.py     2015-03-24 16:52:45.000000000 
+0100
+++ new/Bottleneck-1.2.1/doc/source/conf.py     2017-05-05 23:24:40.000000000 
+0200
@@ -39,7 +39,7 @@
 
 # General information about the project.
 project = u'Bottleneck'
-copyright = u'2010-2015 Keith Goodman'
+copyright = u'2010-2017 Keith Goodman'
 
 # Grab version from bottleneck/version.py
 ver_file = os.path.join('..', '..', 'bottleneck', 'version.py')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/doc/source/intro.rst 
new/Bottleneck-1.2.1/doc/source/intro.rst
--- old/Bottleneck-1.2.0/doc/source/intro.rst   2016-10-20 20:44:46.000000000 
+0200
+++ new/Bottleneck-1.2.1/doc/source/intro.rst   2017-05-15 18:31:47.000000000 
+0200
@@ -27,41 +27,42 @@
 
     >>> bn.bench()
     Bottleneck performance benchmark
-        Bottleneck 1.2.0; Numpy 1.11.2
+        Bottleneck 1.3.0.dev0; Numpy 1.12.1
         Speed is NumPy time divided by Bottleneck time
-        NaN means approx one-fifth NaNs; float64 and axis=-1 are used
+        NaN means approx one-fifth NaNs; float64 used
 
-                      no NaN      NaN       no NaN      NaN
-                       (100,)    (1000,)  (1000,1000)(1000,1000)
-        nansum         58.3       16.6        2.3        5.1
-        nanmean       258.7       46.1        3.5        5.1
-        nanstd        238.4       42.9        2.8        5.0
-        nanvar        229.9       41.4        2.7        5.0
-        nanmin         44.6       12.9        0.8        0.9
-        nanmax         41.8       12.9        0.8        1.8
-        median         99.6       51.4        1.1        5.7
-        nanmedian     102.1       26.5        5.0       31.2
-        ss             27.4        6.4        1.6        1.6
-        nanargmin      72.6       24.6        2.3        3.4
-        nanargmax      70.1       29.2        2.4        4.6
-        anynan         22.1       49.9        0.5      114.6
-        allnan         43.3       48.4      115.8       66.7
-        rankdata       50.3        8.0        2.6        6.5
-        nanrankdata    52.5        8.1        2.9        6.8
-        partition       4.1        3.6        1.0        2.0
-        argpartition    2.7        2.2        1.1        1.5
-        replace        13.7        4.9        1.5        1.5
-        push         3231.6     7437.4       20.1       19.6
-        move_sum     4173.5     8955.4      194.7      374.8
-        move_mean   10265.5    18540.0      222.8      372.2
-        move_std     8910.9    12158.5      128.7      234.5
-        move_var    11969.4    18323.8      202.7      378.7
-        move_min     2164.6     3676.3       23.9       57.2
-        move_max     1995.0     4206.0       23.8      108.8
-        move_argmin  3380.5     5559.1       40.5      180.5
-        move_argmax  3386.5     7278.1       43.0      227.2
-        move_median  1762.3     1134.9      157.9      118.5
-        move_rank    1203.6      223.2        2.7        7.8
+                  no NaN     no NaN      NaN       no NaN      NaN
+                   (100,)  (1000,1000)(1000,1000)(1000,1000)(1000,1000)
+                   axis=0     axis=0     axis=0     axis=1     axis=1
+    nansum         67.3        0.3        0.7        2.5        2.4
+    nanmean       194.8        1.9        2.1        3.4        3.1
+    nanstd        241.5        1.6        2.1        2.7        2.6
+    nanvar        229.7        1.7        2.1        2.7        2.5
+    nanmin         34.1        0.7        1.1        0.8        2.6
+    nanmax         45.6        0.7        2.7        1.0        3.7
+    median        111.0        1.3        5.6        1.0        4.8
+    nanmedian     108.8        5.9        6.7        5.6        6.7
+    ss             16.3        1.1        1.2        1.6        1.6
+    nanargmin      89.2        2.9        5.1        2.2        5.6
+    nanargmax     107.4        3.0        5.4        2.2        5.8
+    anynan         19.4        0.3       35.0        0.5       29.9
+    allnan         39.9      146.6      128.3      115.8       75.6
+    rankdata       55.0        2.6        2.3        2.9        2.8
+    nanrankdata    59.8        2.8        2.2        3.2        2.5
+    partition       4.4        1.2        1.6        1.0        1.4
+    argpartition    3.5        1.1        1.4        1.1        1.6
+    replace        17.7        1.4        1.4        1.3        1.4
+    push         3440.0        7.8        9.5       20.0       15.5
+    move_sum     4743.0       75.7      156.1      195.4      211.1
+    move_mean    8760.9      116.2      167.4      252.1      258.8
+    move_std     8979.9       96.1      196.3      144.0      256.3
+    move_var    11216.8      127.3      243.9      225.9      321.4
+    move_min     2245.3       20.6       36.7       23.2       42.1
+    move_max     2223.7       20.5       37.2       24.1       42.4
+    move_argmin  3664.0       48.2       73.3       40.2       83.9
+    move_argmax  3916.9       42.0       75.4       41.5       81.2
+    move_median  2023.3      166.8      173.7      153.8      154.3
+    move_rank    1208.5        1.9        1.9        2.5        2.8
 
 You can also run a detailed benchmark for a single function using, for
 example, the command::
@@ -96,7 +97,7 @@
 Requirements:
 
 ======================== ====================================================
-Bottleneck               Python 2.7, 3.4, 3.5; NumPy 1.11.2
+Bottleneck               Python 2.7, 3.5, 3.6; NumPy 1.12.1
 Compile                  gcc, clang, MinGW or MSVC
 Unit tests               nose
 ======================== ====================================================
Binary files old/Bottleneck-1.2.0/doc/sphinxext/docscrape.pyc and 
new/Bottleneck-1.2.1/doc/sphinxext/docscrape.pyc differ
Binary files old/Bottleneck-1.2.0/doc/sphinxext/docscrape_sphinx.pyc and 
new/Bottleneck-1.2.1/doc/sphinxext/docscrape_sphinx.pyc differ
Binary files old/Bottleneck-1.2.0/doc/sphinxext/numpydoc.pyc and 
new/Bottleneck-1.2.1/doc/sphinxext/numpydoc.pyc differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/setup.cfg 
new/Bottleneck-1.2.1/setup.cfg
--- old/Bottleneck-1.2.0/setup.cfg      2016-10-20 20:48:43.000000000 +0200
+++ new/Bottleneck-1.2.1/setup.cfg      2017-05-15 18:49:14.000000000 +0200
@@ -1,5 +1,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/setup.py 
new/Bottleneck-1.2.1/setup.py
--- old/Bottleneck-1.2.0/setup.py       2016-10-15 21:56:07.000000000 +0200
+++ new/Bottleneck-1.2.1/setup.py       2017-05-05 23:24:40.000000000 +0200
@@ -23,7 +23,8 @@
         # prevent numpy from thinking it is still in its setup process
         __builtins__.__NUMPY_SETUP__ = False
         import numpy
-        self.include_dirs.append(numpy.get_include())
+        # place numpy includes first, see gh #156
+        self.include_dirs.insert(0, numpy.get_include())
 
 
 def prepare_modules():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Bottleneck-1.2.0/tox.ini new/Bottleneck-1.2.1/tox.ini
--- old/Bottleneck-1.2.0/tox.ini        2016-10-15 18:18:14.000000000 +0200
+++ new/Bottleneck-1.2.1/tox.ini        2017-05-05 23:24:40.000000000 +0200
@@ -1,23 +1,23 @@
 # Tox (http://tox.testrun.org/) configuration
 
 [tox]
-envlist =  py27_np1112, py34_np1112
+envlist =  py27_np1121, py35_np1121
 
 [testenv]
 changedir={envdir}
 commands={envpython} {toxinidir}/tools/test-installed-bottleneck.py {posargs:}
 
-[testenv:py27_np1112]
+[testenv:py27_np1121]
 basepython = python2.7
 deps =
     nose
-    numpy==1.11.2
+    numpy==1.12.1
 
-[testenv:py34_np1112]
-basepython = python3.4
+[testenv:py35_np1121]
+basepython = python3.5
 deps =
     nose
-    numpy==1.11.2
+    numpy==1.12.1
 
 # Not run by default. Use 'tox -e py27_npmaster' to call it
 [testenv:py27_npmaster]


Reply via email to