numpy 1.9.3__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1590) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  12. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  13. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  16. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  17. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  23. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  31. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  32. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  33. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  39. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  41. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  42. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  43. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  45. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  49. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  50. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  51. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  52. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  56. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  57. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  58. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  59. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  60. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  61. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  62. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  63. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  64. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  65. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  66. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  70. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  71. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  72. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  73. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  74. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  75. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  82. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  83. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  84. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  85. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  86. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  87. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  88. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  89. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  90. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  91. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  138. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  139. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  142. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  143. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  147. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  148. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  154. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  155. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  165. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  166. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  197. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  198. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  199. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  200. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  204. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  205. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  206. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  210. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  211. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  212. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  213. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  214. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  215. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  216. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  217. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  218. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  219. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  230. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  231. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  232. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  233. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  234. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  235. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  236. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  237. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  238. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  239. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  240. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  241. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  242. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  243. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  244. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  245. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  246. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  247. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  248. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  249. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  250. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  251. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  252. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  253. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  254. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  267. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  268. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  269. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  272. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  273. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  274. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  275. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  276. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  277. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  278. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  279. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  280. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  281. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  282. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  283. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  284. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  285. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  286. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  287. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  288. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  289. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  290. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  291. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  292. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  293. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  313. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  314. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  315. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  316. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  317. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  318. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  319. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  320. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  322. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  323. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  324. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  325. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  326. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  327. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  328. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  329. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  330. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  335. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  336. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  337. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  338. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  339. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  343. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  344. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  345. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  346. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  347. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  348. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  349. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  350. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  351. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  353. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  354. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  355. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  356. numpy-1.10.0.post2/numpy/setup.py +29 -0
  357. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  358. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  359. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  360. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  361. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  362. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  363. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  364. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  365. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  366. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  367. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  368. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  369. numpy-1.10.0.post2/numpy/version.py +10 -0
  370. numpy-1.10.0.post2/setup.py +260 -0
  371. numpy-1.10.0.post2/site.cfg.example +193 -0
  372. numpy-1.10.0.post2/tmp.txt +789 -0
  373. numpy-1.10.0.post2/tools/swig/README +145 -0
  374. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  375. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  376. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  377. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  378. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  379. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  382. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  383. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  384. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  385. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  387. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  388. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  389. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  390. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  391. numpy-1.9.3/INSTALL.txt +0 -138
  392. numpy-1.9.3/LICENSE.txt +0 -30
  393. numpy-1.9.3/MANIFEST.in +0 -26
  394. numpy-1.9.3/PKG-INFO +0 -39
  395. numpy-1.9.3/doc/release/1.9.3-notes.rst +0 -23
  396. numpy-1.9.3/doc/source/conf.py +0 -331
  397. numpy-1.9.3/doc/source/dev/gitwash/branch_list.png +0 -0
  398. numpy-1.9.3/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  399. numpy-1.9.3/doc/source/dev/gitwash/development_workflow.rst +0 -568
  400. numpy-1.9.3/doc/source/dev/gitwash/git_links.inc +0 -88
  401. numpy-1.9.3/doc/source/dev/gitwash/index.rst +0 -14
  402. numpy-1.9.3/doc/source/dev/index.rst +0 -10
  403. numpy-1.9.3/doc/source/reference/arrays.classes.rst +0 -427
  404. numpy-1.9.3/doc/source/reference/arrays.dtypes.rst +0 -534
  405. numpy-1.9.3/doc/source/reference/arrays.indexing.rst +0 -550
  406. numpy-1.9.3/doc/source/reference/arrays.interface.rst +0 -336
  407. numpy-1.9.3/doc/source/reference/arrays.ndarray.rst +0 -609
  408. numpy-1.9.3/doc/source/reference/arrays.scalars.rst +0 -291
  409. numpy-1.9.3/doc/source/reference/c-api.array.rst +0 -3362
  410. numpy-1.9.3/doc/source/reference/c-api.config.rst +0 -103
  411. numpy-1.9.3/doc/source/reference/c-api.coremath.rst +0 -420
  412. numpy-1.9.3/doc/source/reference/c-api.dtype.rst +0 -376
  413. numpy-1.9.3/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  414. numpy-1.9.3/doc/source/reference/c-api.iterator.rst +0 -1298
  415. numpy-1.9.3/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  416. numpy-1.9.3/doc/source/reference/c-api.ufunc.rst +0 -399
  417. numpy-1.9.3/doc/source/reference/index.rst +0 -44
  418. numpy-1.9.3/doc/source/reference/internals.code-explanations.rst +0 -666
  419. numpy-1.9.3/doc/source/reference/routines.array-manipulation.rst +0 -113
  420. numpy-1.9.3/doc/source/reference/routines.io.rst +0 -74
  421. numpy-1.9.3/doc/source/reference/routines.linalg.rst +0 -88
  422. numpy-1.9.3/doc/source/reference/routines.ma.rst +0 -405
  423. numpy-1.9.3/doc/source/reference/routines.sort.rst +0 -42
  424. numpy-1.9.3/doc/source/reference/routines.statistics.rst +0 -55
  425. numpy-1.9.3/doc/source/reference/swig.interface-file.rst +0 -1055
  426. numpy-1.9.3/doc/source/reference/swig.testing.rst +0 -166
  427. numpy-1.9.3/doc/source/reference/ufuncs.rst +0 -651
  428. numpy-1.9.3/doc/source/release.rst +0 -19
  429. numpy-1.9.3/doc/source/user/basics.io.genfromtxt.rst +0 -531
  430. numpy-1.9.3/doc/source/user/basics.rec.rst +0 -7
  431. numpy-1.9.3/doc/source/user/c-info.beyond-basics.rst +0 -560
  432. numpy-1.9.3/doc/source/user/c-info.how-to-extend.rst +0 -642
  433. numpy-1.9.3/doc/source/user/c-info.python-as-glue.rst +0 -1528
  434. numpy-1.9.3/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  435. numpy-1.9.3/doc/source/user/install.rst +0 -180
  436. numpy-1.9.3/numpy/__init__.py +0 -216
  437. numpy-1.9.3/numpy/_import_tools.py +0 -348
  438. numpy-1.9.3/numpy/add_newdocs.py +0 -7518
  439. numpy-1.9.3/numpy/compat/_inspect.py +0 -221
  440. numpy-1.9.3/numpy/compat/py3k.py +0 -89
  441. numpy-1.9.3/numpy/compat/setup.py +0 -12
  442. numpy-1.9.3/numpy/core/__init__.py +0 -78
  443. numpy-1.9.3/numpy/core/_internal.py +0 -570
  444. numpy-1.9.3/numpy/core/_methods.py +0 -134
  445. numpy-1.9.3/numpy/core/arrayprint.py +0 -752
  446. numpy-1.9.3/numpy/core/blasdot/_dotblas.c +0 -1255
  447. numpy-1.9.3/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  448. numpy-1.9.3/numpy/core/blasdot/cblas.h +0 -578
  449. numpy-1.9.3/numpy/core/code_generators/cversions.txt +0 -31
  450. numpy-1.9.3/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  451. numpy-1.9.3/numpy/core/code_generators/generate_umath.py +0 -972
  452. numpy-1.9.3/numpy/core/code_generators/numpy_api.py +0 -412
  453. numpy-1.9.3/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  454. numpy-1.9.3/numpy/core/defchararray.py +0 -2687
  455. numpy-1.9.3/numpy/core/fromnumeric.py +0 -2938
  456. numpy-1.9.3/numpy/core/function_base.py +0 -190
  457. numpy-1.9.3/numpy/core/getlimits.py +0 -306
  458. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.c +0 -38
  459. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.h +0 -224
  460. numpy-1.9.3/numpy/core/include/numpy/ndarrayobject.h +0 -237
  461. numpy-1.9.3/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  462. numpy-1.9.3/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  463. numpy-1.9.3/numpy/core/include/numpy/npy_common.h +0 -1038
  464. numpy-1.9.3/numpy/core/include/numpy/npy_cpu.h +0 -122
  465. numpy-1.9.3/numpy/core/include/numpy/npy_endian.h +0 -49
  466. numpy-1.9.3/numpy/core/include/numpy/npy_math.h +0 -479
  467. numpy-1.9.3/numpy/core/include/numpy/numpyconfig.h +0 -35
  468. numpy-1.9.3/numpy/core/machar.py +0 -338
  469. numpy-1.9.3/numpy/core/memmap.py +0 -308
  470. numpy-1.9.3/numpy/core/numeric.py +0 -2842
  471. numpy-1.9.3/numpy/core/numerictypes.py +0 -1042
  472. numpy-1.9.3/numpy/core/records.py +0 -804
  473. numpy-1.9.3/numpy/core/setup.py +0 -1016
  474. numpy-1.9.3/numpy/core/setup_common.py +0 -330
  475. numpy-1.9.3/numpy/core/shape_base.py +0 -277
  476. numpy-1.9.3/numpy/core/src/multiarray/alloc.c +0 -241
  477. numpy-1.9.3/numpy/core/src/multiarray/arrayobject.c +0 -1791
  478. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  479. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.h +0 -13
  480. numpy-1.9.3/numpy/core/src/multiarray/buffer.c +0 -954
  481. numpy-1.9.3/numpy/core/src/multiarray/calculation.c +0 -1229
  482. numpy-1.9.3/numpy/core/src/multiarray/common.c +0 -798
  483. numpy-1.9.3/numpy/core/src/multiarray/common.h +0 -328
  484. numpy-1.9.3/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  485. numpy-1.9.3/numpy/core/src/multiarray/convert.c +0 -589
  486. numpy-1.9.3/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  487. numpy-1.9.3/numpy/core/src/multiarray/ctors.c +0 -3785
  488. numpy-1.9.3/numpy/core/src/multiarray/datetime.c +0 -3823
  489. numpy-1.9.3/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  490. numpy-1.9.3/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  491. numpy-1.9.3/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  492. numpy-1.9.3/numpy/core/src/multiarray/descriptor.c +0 -3658
  493. numpy-1.9.3/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  494. numpy-1.9.3/numpy/core/src/multiarray/einsum.c.src +0 -3013
  495. numpy-1.9.3/numpy/core/src/multiarray/getset.c +0 -984
  496. numpy-1.9.3/numpy/core/src/multiarray/hashdescr.c +0 -319
  497. numpy-1.9.3/numpy/core/src/multiarray/item_selection.c +0 -2711
  498. numpy-1.9.3/numpy/core/src/multiarray/iterators.c +0 -2160
  499. numpy-1.9.3/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  500. numpy-1.9.3/numpy/core/src/multiarray/mapping.c +0 -3316
  501. numpy-1.9.3/numpy/core/src/multiarray/mapping.h +0 -73
  502. numpy-1.9.3/numpy/core/src/multiarray/methods.c +0 -2497
  503. numpy-1.9.3/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  504. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.c +0 -4200
  505. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  506. numpy-1.9.3/numpy/core/src/multiarray/nditer_api.c +0 -2809
  507. numpy-1.9.3/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  508. numpy-1.9.3/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  509. numpy-1.9.3/numpy/core/src/multiarray/number.c +0 -1057
  510. numpy-1.9.3/numpy/core/src/multiarray/number.h +0 -76
  511. numpy-1.9.3/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  512. numpy-1.9.3/numpy/core/src/multiarray/numpyos.c +0 -683
  513. numpy-1.9.3/numpy/core/src/multiarray/scalarapi.c +0 -861
  514. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  515. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.h +0 -52
  516. numpy-1.9.3/numpy/core/src/multiarray/shape.c +0 -1141
  517. numpy-1.9.3/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  518. numpy-1.9.3/numpy/core/src/npymath/ieee754.c.src +0 -814
  519. numpy-1.9.3/numpy/core/src/npymath/npy_math.c.src +0 -527
  520. numpy-1.9.3/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  521. numpy-1.9.3/numpy/core/src/npymath/npy_math_private.h +0 -539
  522. numpy-1.9.3/numpy/core/src/npysort/heapsort.c.src +0 -341
  523. numpy-1.9.3/numpy/core/src/npysort/mergesort.c.src +0 -428
  524. numpy-1.9.3/numpy/core/src/npysort/npysort_common.h +0 -367
  525. numpy-1.9.3/numpy/core/src/npysort/quicksort.c.src +0 -363
  526. numpy-1.9.3/numpy/core/src/npysort/selection.c.src +0 -474
  527. numpy-1.9.3/numpy/core/src/private/npy_config.h +0 -68
  528. numpy-1.9.3/numpy/core/src/private/npy_partition.h.src +0 -138
  529. numpy-1.9.3/numpy/core/src/private/npy_sort.h +0 -194
  530. numpy-1.9.3/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  531. numpy-1.9.3/numpy/core/src/private/ufunc_override.h +0 -384
  532. numpy-1.9.3/numpy/core/src/scalarmathmodule.c.src +0 -1980
  533. numpy-1.9.3/numpy/core/src/umath/funcs.inc.src +0 -715
  534. numpy-1.9.3/numpy/core/src/umath/loops.c.src +0 -2654
  535. numpy-1.9.3/numpy/core/src/umath/loops.h.src +0 -501
  536. numpy-1.9.3/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  537. numpy-1.9.3/numpy/core/src/umath/simd.inc.src +0 -881
  538. numpy-1.9.3/numpy/core/src/umath/test_rational.c.src +0 -1404
  539. numpy-1.9.3/numpy/core/src/umath/ufunc_object.c +0 -5520
  540. numpy-1.9.3/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  541. numpy-1.9.3/numpy/core/src/umath/umath_tests.c.src +0 -341
  542. numpy-1.9.3/numpy/core/src/umath/umathmodule.c +0 -561
  543. numpy-1.9.3/numpy/core/tests/test_abc.py +0 -45
  544. numpy-1.9.3/numpy/core/tests/test_api.py +0 -514
  545. numpy-1.9.3/numpy/core/tests/test_arrayprint.py +0 -167
  546. numpy-1.9.3/numpy/core/tests/test_blasdot.py +0 -249
  547. numpy-1.9.3/numpy/core/tests/test_datetime.py +0 -1781
  548. numpy-1.9.3/numpy/core/tests/test_defchararray.py +0 -642
  549. numpy-1.9.3/numpy/core/tests/test_deprecations.py +0 -512
  550. numpy-1.9.3/numpy/core/tests/test_dtype.py +0 -542
  551. numpy-1.9.3/numpy/core/tests/test_einsum.py +0 -583
  552. numpy-1.9.3/numpy/core/tests/test_errstate.py +0 -51
  553. numpy-1.9.3/numpy/core/tests/test_function_base.py +0 -111
  554. numpy-1.9.3/numpy/core/tests/test_getlimits.py +0 -86
  555. numpy-1.9.3/numpy/core/tests/test_half.py +0 -439
  556. numpy-1.9.3/numpy/core/tests/test_indexerrors.py +0 -127
  557. numpy-1.9.3/numpy/core/tests/test_indexing.py +0 -1014
  558. numpy-1.9.3/numpy/core/tests/test_item_selection.py +0 -70
  559. numpy-1.9.3/numpy/core/tests/test_machar.py +0 -30
  560. numpy-1.9.3/numpy/core/tests/test_memmap.py +0 -127
  561. numpy-1.9.3/numpy/core/tests/test_multiarray.py +0 -4645
  562. numpy-1.9.3/numpy/core/tests/test_multiarray_assignment.py +0 -80
  563. numpy-1.9.3/numpy/core/tests/test_nditer.py +0 -2630
  564. numpy-1.9.3/numpy/core/tests/test_numeric.py +0 -2117
  565. numpy-1.9.3/numpy/core/tests/test_numerictypes.py +0 -377
  566. numpy-1.9.3/numpy/core/tests/test_print.py +0 -245
  567. numpy-1.9.3/numpy/core/tests/test_records.py +0 -185
  568. numpy-1.9.3/numpy/core/tests/test_regression.py +0 -2115
  569. numpy-1.9.3/numpy/core/tests/test_scalarinherit.py +0 -34
  570. numpy-1.9.3/numpy/core/tests/test_scalarmath.py +0 -275
  571. numpy-1.9.3/numpy/core/tests/test_shape_base.py +0 -250
  572. numpy-1.9.3/numpy/core/tests/test_ufunc.py +0 -1153
  573. numpy-1.9.3/numpy/core/tests/test_umath.py +0 -1695
  574. numpy-1.9.3/numpy/core/tests/test_umath_complex.py +0 -537
  575. numpy-1.9.3/numpy/core/tests/test_unicode.py +0 -357
  576. numpy-1.9.3/numpy/distutils/__init__.py +0 -39
  577. numpy-1.9.3/numpy/distutils/ccompiler.py +0 -656
  578. numpy-1.9.3/numpy/distutils/command/autodist.py +0 -43
  579. numpy-1.9.3/numpy/distutils/command/build.py +0 -39
  580. numpy-1.9.3/numpy/distutils/command/build_clib.py +0 -284
  581. numpy-1.9.3/numpy/distutils/command/build_ext.py +0 -515
  582. numpy-1.9.3/numpy/distutils/command/config.py +0 -476
  583. numpy-1.9.3/numpy/distutils/exec_command.py +0 -618
  584. numpy-1.9.3/numpy/distutils/fcompiler/compaq.py +0 -128
  585. numpy-1.9.3/numpy/distutils/fcompiler/gnu.py +0 -390
  586. numpy-1.9.3/numpy/distutils/fcompiler/intel.py +0 -205
  587. numpy-1.9.3/numpy/distutils/fcompiler/pg.py +0 -60
  588. numpy-1.9.3/numpy/distutils/fcompiler/sun.py +0 -52
  589. numpy-1.9.3/numpy/distutils/intelccompiler.py +0 -45
  590. numpy-1.9.3/numpy/distutils/lib2def.py +0 -116
  591. numpy-1.9.3/numpy/distutils/mingw32ccompiler.py +0 -582
  592. numpy-1.9.3/numpy/distutils/misc_util.py +0 -2271
  593. numpy-1.9.3/numpy/distutils/npy_pkg_config.py +0 -464
  594. numpy-1.9.3/numpy/distutils/system_info.py +0 -2319
  595. numpy-1.9.3/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  596. numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  597. numpy-1.9.3/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  598. numpy-1.9.3/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  599. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  600. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  601. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  602. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  603. numpy-1.9.3/numpy/distutils/tests/test_misc_util.py +0 -75
  604. numpy-1.9.3/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  605. numpy-1.9.3/numpy/distutils/unixccompiler.py +0 -113
  606. numpy-1.9.3/numpy/doc/byteswapping.py +0 -147
  607. numpy-1.9.3/numpy/doc/creation.py +0 -144
  608. numpy-1.9.3/numpy/doc/glossary.py +0 -418
  609. numpy-1.9.3/numpy/doc/indexing.py +0 -437
  610. numpy-1.9.3/numpy/doc/structured_arrays.py +0 -223
  611. numpy-1.9.3/numpy/f2py/__init__.py +0 -49
  612. numpy-1.9.3/numpy/f2py/auxfuncs.py +0 -711
  613. numpy-1.9.3/numpy/f2py/capi_maps.py +0 -773
  614. numpy-1.9.3/numpy/f2py/cb_rules.py +0 -539
  615. numpy-1.9.3/numpy/f2py/cfuncs.py +0 -1224
  616. numpy-1.9.3/numpy/f2py/common_rules.py +0 -132
  617. numpy-1.9.3/numpy/f2py/crackfortran.py +0 -2870
  618. numpy-1.9.3/numpy/f2py/diagnose.py +0 -149
  619. numpy-1.9.3/numpy/f2py/f2py2e.py +0 -598
  620. numpy-1.9.3/numpy/f2py/f2py_testing.py +0 -46
  621. numpy-1.9.3/numpy/f2py/f90mod_rules.py +0 -246
  622. numpy-1.9.3/numpy/f2py/func2subr.py +0 -291
  623. numpy-1.9.3/numpy/f2py/rules.py +0 -1448
  624. numpy-1.9.3/numpy/f2py/setup.py +0 -129
  625. numpy-1.9.3/numpy/f2py/src/fortranobject.c +0 -972
  626. numpy-1.9.3/numpy/f2py/src/fortranobject.h +0 -162
  627. numpy-1.9.3/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  628. numpy-1.9.3/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  629. numpy-1.9.3/numpy/f2py/tests/test_assumed_shape.py +0 -37
  630. numpy-1.9.3/numpy/f2py/tests/test_callback.py +0 -132
  631. numpy-1.9.3/numpy/f2py/tests/test_kind.py +0 -36
  632. numpy-1.9.3/numpy/f2py/tests/test_mixed.py +0 -41
  633. numpy-1.9.3/numpy/f2py/tests/test_regression.py +0 -32
  634. numpy-1.9.3/numpy/f2py/tests/test_return_character.py +0 -142
  635. numpy-1.9.3/numpy/f2py/tests/test_return_complex.py +0 -169
  636. numpy-1.9.3/numpy/f2py/tests/test_return_integer.py +0 -178
  637. numpy-1.9.3/numpy/f2py/tests/test_return_logical.py +0 -187
  638. numpy-1.9.3/numpy/f2py/tests/test_return_real.py +0 -203
  639. numpy-1.9.3/numpy/f2py/tests/test_size.py +0 -47
  640. numpy-1.9.3/numpy/f2py/tests/util.py +0 -353
  641. numpy-1.9.3/numpy/f2py/use_rules.py +0 -109
  642. numpy-1.9.3/numpy/fft/fftpack.c +0 -1501
  643. numpy-1.9.3/numpy/fft/fftpack.h +0 -28
  644. numpy-1.9.3/numpy/fft/fftpack.py +0 -1169
  645. numpy-1.9.3/numpy/fft/fftpack_litemodule.c +0 -371
  646. numpy-1.9.3/numpy/fft/info.py +0 -179
  647. numpy-1.9.3/numpy/fft/setup.py +0 -20
  648. numpy-1.9.3/numpy/fft/tests/test_fftpack.py +0 -75
  649. numpy-1.9.3/numpy/fft/tests/test_helper.py +0 -78
  650. numpy-1.9.3/numpy/lib/_iotools.py +0 -891
  651. numpy-1.9.3/numpy/lib/arraypad.py +0 -1475
  652. numpy-1.9.3/numpy/lib/arraysetops.py +0 -464
  653. numpy-1.9.3/numpy/lib/arrayterator.py +0 -226
  654. numpy-1.9.3/numpy/lib/financial.py +0 -737
  655. numpy-1.9.3/numpy/lib/format.py +0 -771
  656. numpy-1.9.3/numpy/lib/function_base.py +0 -3884
  657. numpy-1.9.3/numpy/lib/index_tricks.py +0 -869
  658. numpy-1.9.3/numpy/lib/info.py +0 -151
  659. numpy-1.9.3/numpy/lib/nanfunctions.py +0 -1158
  660. numpy-1.9.3/numpy/lib/npyio.py +0 -1871
  661. numpy-1.9.3/numpy/lib/polynomial.py +0 -1271
  662. numpy-1.9.3/numpy/lib/recfunctions.py +0 -1003
  663. numpy-1.9.3/numpy/lib/setup.py +0 -23
  664. numpy-1.9.3/numpy/lib/shape_base.py +0 -865
  665. numpy-1.9.3/numpy/lib/src/_compiled_base.c +0 -1761
  666. numpy-1.9.3/numpy/lib/stride_tricks.py +0 -123
  667. numpy-1.9.3/numpy/lib/tests/test__iotools.py +0 -326
  668. numpy-1.9.3/numpy/lib/tests/test__version.py +0 -57
  669. numpy-1.9.3/numpy/lib/tests/test_arraypad.py +0 -560
  670. numpy-1.9.3/numpy/lib/tests/test_arraysetops.py +0 -301
  671. numpy-1.9.3/numpy/lib/tests/test_financial.py +0 -160
  672. numpy-1.9.3/numpy/lib/tests/test_format.py +0 -716
  673. numpy-1.9.3/numpy/lib/tests/test_function_base.py +0 -2145
  674. numpy-1.9.3/numpy/lib/tests/test_index_tricks.py +0 -289
  675. numpy-1.9.3/numpy/lib/tests/test_io.py +0 -1754
  676. numpy-1.9.3/numpy/lib/tests/test_nanfunctions.py +0 -774
  677. numpy-1.9.3/numpy/lib/tests/test_polynomial.py +0 -177
  678. numpy-1.9.3/numpy/lib/tests/test_recfunctions.py +0 -705
  679. numpy-1.9.3/numpy/lib/tests/test_shape_base.py +0 -368
  680. numpy-1.9.3/numpy/lib/tests/test_stride_tricks.py +0 -238
  681. numpy-1.9.3/numpy/lib/tests/test_twodim_base.py +0 -504
  682. numpy-1.9.3/numpy/lib/tests/test_type_check.py +0 -328
  683. numpy-1.9.3/numpy/lib/twodim_base.py +0 -1003
  684. numpy-1.9.3/numpy/lib/type_check.py +0 -605
  685. numpy-1.9.3/numpy/lib/utils.py +0 -1176
  686. numpy-1.9.3/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  687. numpy-1.9.3/numpy/linalg/lapack_litemodule.c +0 -362
  688. numpy-1.9.3/numpy/linalg/linalg.py +0 -2136
  689. numpy-1.9.3/numpy/linalg/tests/test_build.py +0 -53
  690. numpy-1.9.3/numpy/linalg/tests/test_linalg.py +0 -1156
  691. numpy-1.9.3/numpy/linalg/tests/test_regression.py +0 -90
  692. numpy-1.9.3/numpy/linalg/umath_linalg.c.src +0 -3210
  693. numpy-1.9.3/numpy/ma/__init__.py +0 -58
  694. numpy-1.9.3/numpy/ma/bench.py +0 -166
  695. numpy-1.9.3/numpy/ma/core.py +0 -7374
  696. numpy-1.9.3/numpy/ma/extras.py +0 -1932
  697. numpy-1.9.3/numpy/ma/mrecords.py +0 -734
  698. numpy-1.9.3/numpy/ma/setup.py +0 -20
  699. numpy-1.9.3/numpy/ma/tests/test_core.py +0 -3706
  700. numpy-1.9.3/numpy/ma/tests/test_extras.py +0 -954
  701. numpy-1.9.3/numpy/ma/tests/test_mrecords.py +0 -521
  702. numpy-1.9.3/numpy/ma/tests/test_old_ma.py +0 -869
  703. numpy-1.9.3/numpy/ma/tests/test_regression.py +0 -75
  704. numpy-1.9.3/numpy/ma/tests/test_subclassing.py +0 -236
  705. numpy-1.9.3/numpy/ma/testutils.py +0 -240
  706. numpy-1.9.3/numpy/ma/timer_comparison.py +0 -459
  707. numpy-1.9.3/numpy/matlib.py +0 -358
  708. numpy-1.9.3/numpy/matrixlib/defmatrix.py +0 -1094
  709. numpy-1.9.3/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  710. numpy-1.9.3/numpy/matrixlib/tests/test_multiarray.py +0 -18
  711. numpy-1.9.3/numpy/matrixlib/tests/test_numeric.py +0 -10
  712. numpy-1.9.3/numpy/matrixlib/tests/test_regression.py +0 -34
  713. numpy-1.9.3/numpy/polynomial/_polybase.py +0 -962
  714. numpy-1.9.3/numpy/polynomial/chebyshev.py +0 -2056
  715. numpy-1.9.3/numpy/polynomial/hermite.py +0 -1789
  716. numpy-1.9.3/numpy/polynomial/hermite_e.py +0 -1786
  717. numpy-1.9.3/numpy/polynomial/laguerre.py +0 -1781
  718. numpy-1.9.3/numpy/polynomial/legendre.py +0 -1809
  719. numpy-1.9.3/numpy/polynomial/polytemplate.py +0 -927
  720. numpy-1.9.3/numpy/polynomial/polyutils.py +0 -403
  721. numpy-1.9.3/numpy/random/mtrand/distributions.c +0 -892
  722. numpy-1.9.3/numpy/random/mtrand/mtrand.c +0 -36656
  723. numpy-1.9.3/numpy/random/mtrand/mtrand.pyx +0 -4706
  724. numpy-1.9.3/numpy/random/setup.py +0 -74
  725. numpy-1.9.3/numpy/random/tests/test_random.py +0 -707
  726. numpy-1.9.3/numpy/random/tests/test_regression.py +0 -86
  727. numpy-1.9.3/numpy/setup.py +0 -27
  728. numpy-1.9.3/numpy/testing/__init__.py +0 -16
  729. numpy-1.9.3/numpy/testing/decorators.py +0 -271
  730. numpy-1.9.3/numpy/testing/noseclasses.py +0 -353
  731. numpy-1.9.3/numpy/testing/nosetester.py +0 -504
  732. numpy-1.9.3/numpy/testing/print_coercion_tables.py +0 -89
  733. numpy-1.9.3/numpy/testing/setup.py +0 -20
  734. numpy-1.9.3/numpy/testing/tests/test_decorators.py +0 -185
  735. numpy-1.9.3/numpy/testing/tests/test_utils.py +0 -558
  736. numpy-1.9.3/numpy/testing/utils.py +0 -1715
  737. numpy-1.9.3/numpy/tests/test_ctypeslib.py +0 -102
  738. numpy-1.9.3/numpy/tests/test_matlib.py +0 -55
  739. numpy-1.9.3/numpy/version.py +0 -10
  740. numpy-1.9.3/setup.py +0 -251
  741. numpy-1.9.3/site.cfg.example +0 -157
  742. numpy-1.9.3/tools/swig/README +0 -135
  743. numpy-1.9.3/tools/swig/numpy.i +0 -3085
  744. numpy-1.9.3/tools/swig/test/Array.i +0 -102
  745. numpy-1.9.3/tools/swig/test/Makefile +0 -34
  746. numpy-1.9.3/tools/swig/test/setup.py +0 -64
  747. numpy-1.9.3/tools/swig/test/testArray.py +0 -284
  748. numpy-1.9.3/tools/swig/test/testFarray.py +0 -159
  749. numpy-1.9.3/tools/swig/test/testFortran.py +0 -173
  750. numpy-1.9.3/tools/swig/test/testMatrix.py +0 -362
  751. numpy-1.9.3/tools/swig/test/testSuperTensor.py +0 -388
  752. numpy-1.9.3/tools/swig/test/testTensor.py +0 -402
  753. numpy-1.9.3/tools/swig/test/testVector.py +0 -381
  754. {numpy-1.9.3 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  755. {numpy-1.9.3 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  756. {numpy-1.9.3 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  757. {numpy-1.9.3 → numpy-1.10.0.post2}/README.txt +0 -0
  758. {numpy-1.9.3 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  759. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  760. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  761. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  762. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  763. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  764. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  765. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  766. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  767. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  768. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  769. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  770. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  771. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  772. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  773. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  774. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  775. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  776. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  777. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  778. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  779. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  780. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  781. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  782. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  783. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  784. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  785. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  786. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  787. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  788. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  789. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  790. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  791. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  792. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  793. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  794. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  795. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  796. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  797. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  798. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  799. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  800. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  801. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  802. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  803. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  804. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  805. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  806. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  807. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  808. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  809. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  810. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  811. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  812. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  813. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  814. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  815. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  816. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  817. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  818. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  819. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  820. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  821. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  822. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  823. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  824. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  825. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  826. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  827. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  828. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  829. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  830. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  831. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  832. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  833. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  834. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  835. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  836. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  837. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  838. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  839. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  840. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.git +0 -0
  841. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  842. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  843. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  844. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  845. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  846. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  847. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  848. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  849. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  850. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  851. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  852. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  853. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  854. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  855. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  856. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  857. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  858. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  859. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  860. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  861. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  862. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  863. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  864. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  865. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  866. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  867. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  868. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  869. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  870. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  871. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  872. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  873. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  874. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  875. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  876. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  877. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  878. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  879. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  880. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  881. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  882. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  883. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  884. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  885. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  886. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  887. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  888. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  889. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  890. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  891. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  892. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  893. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  894. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  895. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  896. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  897. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  898. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  899. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  900. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  901. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  902. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  903. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  904. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  905. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  906. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  907. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  908. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  909. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  910. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  911. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  912. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  913. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  914. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  915. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  916. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  917. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  918. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  919. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  920. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  921. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  922. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  923. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  924. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  925. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  926. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  927. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  928. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  929. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  930. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  931. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  932. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  933. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  934. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  935. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  936. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  937. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  938. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  939. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  940. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  941. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  942. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  943. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  944. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  945. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  946. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  947. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  948. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  949. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  950. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  951. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  952. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  953. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  954. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  955. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  956. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  957. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  958. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  959. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  960. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  961. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  962. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  963. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  964. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  965. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  966. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  967. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  968. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  969. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  970. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  971. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  972. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  973. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  974. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  975. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  976. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  977. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  978. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  979. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  980. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  981. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  982. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  983. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  984. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  985. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  986. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  987. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  988. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  989. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  990. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  991. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  992. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  993. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  994. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  995. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  996. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  997. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  998. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  999. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1000. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1001. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1002. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1003. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1004. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1005. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1006. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1007. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1008. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1009. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1010. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1011. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1012. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1013. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1014. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1015. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1016. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1017. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1018. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1019. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1020. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1021. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1022. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1023. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1024. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1025. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1026. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1027. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1028. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1029. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1030. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1031. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1032. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1033. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1034. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1035. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1036. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1037. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1038. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1039. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1040. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1041. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1042. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1043. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1044. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1045. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1046. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1047. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1048. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1049. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1050. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1051. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1052. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1053. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1054. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1055. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1056. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1057. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1058. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1059. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1060. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1061. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1062. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1063. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1064. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1065. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1066. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1067. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1068. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1069. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1070. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1071. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1072. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1073. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1074. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1075. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1076. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1077. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1078. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1079. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1080. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1081. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1082. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1083. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1084. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1085. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1086. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1087. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1088. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1089. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1090. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1091. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1092. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1093. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1094. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1095. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1096. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1097. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1098. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1099. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1100. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1101. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1102. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1103. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1104. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1105. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1106. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1107. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1108. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1109. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1110. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1111. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1112. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1113. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1114. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1115. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1116. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1117. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1118. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1119. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1120. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1121. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1122. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1123. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1124. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1125. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1126. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1127. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1128. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1129. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1130. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1131. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1132. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1133. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1134. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1135. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1136. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1137. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1138. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1139. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1140. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1141. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1142. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1143. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1144. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1145. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1146. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1147. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1148. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1149. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1150. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1151. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1152. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1153. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1154. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1155. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1156. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1157. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1158. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1159. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1160. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1161. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1162. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1163. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1164. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1165. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1166. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1167. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1168. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1169. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1170. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1171. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1172. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1173. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1174. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1175. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1176. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1177. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1178. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1179. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1180. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1181. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1182. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1183. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1184. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1185. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1186. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1187. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1188. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1189. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1190. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1191. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1192. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1193. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1194. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1195. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1196. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1197. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1198. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1199. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1200. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1201. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1202. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1203. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1204. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1205. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1206. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1207. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1208. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1209. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1210. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1211. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1212. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1213. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1214. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1215. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1216. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1217. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1218. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1219. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1220. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1221. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1222. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1223. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1224. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1225. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1226. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1227. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1228. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1229. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1230. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1231. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1232. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1233. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1234. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1235. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1236. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1237. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1238. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1239. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1240. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1241. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1242. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1243. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1244. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1245. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1246. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1247. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1248. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1249. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1250. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1251. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1252. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1253. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1254. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1255. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1256. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1257. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1258. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1259. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1260. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1261. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1262. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1263. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1264. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1265. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1266. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1267. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1268. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1269. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1270. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1271. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1272. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1273. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1274. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1275. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1276. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1277. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1278. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1279. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1280. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1281. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1282. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1283. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1284. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1285. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1286. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1287. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1288. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1289. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1290. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1291. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1292. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1293. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1294. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1295. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1296. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1297. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1298. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1299. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1300. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1301. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1302. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1303. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1304. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1305. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1306. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1307. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1308. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1309. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1310. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1311. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1312. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1313. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1314. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1315. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1316. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1317. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1318. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1319. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1320. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1321. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1322. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1323. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1324. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1325. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1326. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1327. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.git +0 -0
  1328. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1329. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1330. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1331. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1332. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1333. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1334. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1335. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1336. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1337. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1338. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1339. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1340. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1341. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1342. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1343. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1344. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1345. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1346. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1347. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1348. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1349. {numpy-1.9.3/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1350. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1351. {numpy-1.9.3/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1352. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1353. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1354. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1355. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1356. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1357. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1358. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1359. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1360. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1361. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1362. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1363. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1364. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1365. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1366. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1367. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1368. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1369. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1370. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1371. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1372. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1373. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1374. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1375. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1376. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1377. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1378. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1379. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1380. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1381. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1382. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1383. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1384. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1385. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1386. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1387. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1388. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1389. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1390. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1391. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1392. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1393. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1394. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1395. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1396. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1397. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1398. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1399. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1400. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1401. {numpy-1.9.3/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1402. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1403. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1404. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1405. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1406. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1407. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1408. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1409. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1410. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1411. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1412. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1413. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1414. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1415. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1416. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1417. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1418. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1419. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1420. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1421. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1422. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1423. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1424. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1425. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1426. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1427. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1428. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1429. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1430. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1431. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1432. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1433. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1434. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1435. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1436. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1437. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1438. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1439. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1440. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1441. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1442. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1443. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1444. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1445. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1446. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1447. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1448. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1449. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1450. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1451. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1452. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1453. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1454. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1455. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1456. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1457. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1458. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1459. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1460. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1461. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1462. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1463. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1464. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1465. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1466. {numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1467. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1468. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1469. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1470. {numpy-1.9.3/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1471. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1472. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1473. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1474. {numpy-1.9.3/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1475. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1476. {numpy-1.9.3/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1477. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1478. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1479. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1480. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1481. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1482. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1483. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1484. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1485. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1486. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1487. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1488. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1489. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1490. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1491. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1492. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1493. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1494. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1495. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1496. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1497. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1498. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1499. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1500. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1501. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1502. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1503. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1504. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1505. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1506. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1507. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1508. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1509. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1510. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1511. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1512. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1513. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1514. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1515. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1516. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1517. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1518. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1519. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1520. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1521. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1522. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1523. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1524. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1525. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1526. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1527. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1528. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1529. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1530. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1531. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1532. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1533. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1534. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1535. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1536. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1537. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1538. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1539. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1540. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1541. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1542. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1543. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1544. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1545. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1546. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1547. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1548. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1549. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1550. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1551. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1552. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1553. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1554. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1555. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1556. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1557. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1558. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1559. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1560. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1561. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1562. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1563. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1564. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1565. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1566. {numpy-1.9.3 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1567. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1568. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1569. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1570. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1571. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1572. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1573. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1574. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1575. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1576. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1577. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1578. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1579. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1580. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1581. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1582. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1583. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1584. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1585. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1586. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1587. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1588. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1589. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1590. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -0,0 +1,2638 @@
1
+ from __future__ import division, absolute_import, print_function
2
+
3
+ import sys
4
+ import warnings
5
+
6
+ import numpy as np
7
+ from numpy import array, arange, nditer, all
8
+ from numpy.compat import asbytes, sixu
9
+ from numpy.core.multiarray_tests import test_nditer_too_large
10
+ from numpy.testing import (
11
+ run_module_suite, assert_, assert_equal, assert_array_equal,
12
+ assert_raises, dec
13
+ )
14
+
15
+
16
+ def iter_multi_index(i):
17
+ ret = []
18
+ while not i.finished:
19
+ ret.append(i.multi_index)
20
+ i.iternext()
21
+ return ret
22
+
23
+ def iter_indices(i):
24
+ ret = []
25
+ while not i.finished:
26
+ ret.append(i.index)
27
+ i.iternext()
28
+ return ret
29
+
30
+ def iter_iterindices(i):
31
+ ret = []
32
+ while not i.finished:
33
+ ret.append(i.iterindex)
34
+ i.iternext()
35
+ return ret
36
+
37
+ def test_iter_refcount():
38
+ # Make sure the iterator doesn't leak
39
+
40
+ # Basic
41
+ a = arange(6)
42
+ dt = np.dtype('f4').newbyteorder()
43
+ rc_a = sys.getrefcount(a)
44
+ rc_dt = sys.getrefcount(dt)
45
+ it = nditer(a, [],
46
+ [['readwrite', 'updateifcopy']],
47
+ casting='unsafe',
48
+ op_dtypes=[dt])
49
+ assert_(not it.iterationneedsapi)
50
+ assert_(sys.getrefcount(a) > rc_a)
51
+ assert_(sys.getrefcount(dt) > rc_dt)
52
+ it = None
53
+ assert_equal(sys.getrefcount(a), rc_a)
54
+ assert_equal(sys.getrefcount(dt), rc_dt)
55
+
56
+ # With a copy
57
+ a = arange(6, dtype='f4')
58
+ dt = np.dtype('f4')
59
+ rc_a = sys.getrefcount(a)
60
+ rc_dt = sys.getrefcount(dt)
61
+ it = nditer(a, [],
62
+ [['readwrite']],
63
+ op_dtypes=[dt])
64
+ rc2_a = sys.getrefcount(a)
65
+ rc2_dt = sys.getrefcount(dt)
66
+ it2 = it.copy()
67
+ assert_(sys.getrefcount(a) > rc2_a)
68
+ assert_(sys.getrefcount(dt) > rc2_dt)
69
+ it = None
70
+ assert_equal(sys.getrefcount(a), rc2_a)
71
+ assert_equal(sys.getrefcount(dt), rc2_dt)
72
+ it2 = None
73
+ assert_equal(sys.getrefcount(a), rc_a)
74
+ assert_equal(sys.getrefcount(dt), rc_dt)
75
+
76
+ del it2 # avoid pyflakes unused variable warning
77
+
78
+ def test_iter_best_order():
79
+ # The iterator should always find the iteration order
80
+ # with increasing memory addresses
81
+
82
+ # Test the ordering for 1-D to 5-D shapes
83
+ for shape in [(5,), (3, 4), (2, 3, 4), (2, 3, 4, 3), (2, 3, 2, 2, 3)]:
84
+ a = arange(np.prod(shape))
85
+ # Test each combination of positive and negative strides
86
+ for dirs in range(2**len(shape)):
87
+ dirs_index = [slice(None)]*len(shape)
88
+ for bit in range(len(shape)):
89
+ if ((2**bit) & dirs):
90
+ dirs_index[bit] = slice(None, None, -1)
91
+ dirs_index = tuple(dirs_index)
92
+
93
+ aview = a.reshape(shape)[dirs_index]
94
+ # C-order
95
+ i = nditer(aview, [], [['readonly']])
96
+ assert_equal([x for x in i], a)
97
+ # Fortran-order
98
+ i = nditer(aview.T, [], [['readonly']])
99
+ assert_equal([x for x in i], a)
100
+ # Other order
101
+ if len(shape) > 2:
102
+ i = nditer(aview.swapaxes(0, 1), [], [['readonly']])
103
+ assert_equal([x for x in i], a)
104
+
105
+ def test_iter_c_order():
106
+ # Test forcing C order
107
+
108
+ # Test the ordering for 1-D to 5-D shapes
109
+ for shape in [(5,), (3, 4), (2, 3, 4), (2, 3, 4, 3), (2, 3, 2, 2, 3)]:
110
+ a = arange(np.prod(shape))
111
+ # Test each combination of positive and negative strides
112
+ for dirs in range(2**len(shape)):
113
+ dirs_index = [slice(None)]*len(shape)
114
+ for bit in range(len(shape)):
115
+ if ((2**bit) & dirs):
116
+ dirs_index[bit] = slice(None, None, -1)
117
+ dirs_index = tuple(dirs_index)
118
+
119
+ aview = a.reshape(shape)[dirs_index]
120
+ # C-order
121
+ i = nditer(aview, order='C')
122
+ assert_equal([x for x in i], aview.ravel(order='C'))
123
+ # Fortran-order
124
+ i = nditer(aview.T, order='C')
125
+ assert_equal([x for x in i], aview.T.ravel(order='C'))
126
+ # Other order
127
+ if len(shape) > 2:
128
+ i = nditer(aview.swapaxes(0, 1), order='C')
129
+ assert_equal([x for x in i],
130
+ aview.swapaxes(0, 1).ravel(order='C'))
131
+
132
+ def test_iter_f_order():
133
+ # Test forcing F order
134
+
135
+ # Test the ordering for 1-D to 5-D shapes
136
+ for shape in [(5,), (3, 4), (2, 3, 4), (2, 3, 4, 3), (2, 3, 2, 2, 3)]:
137
+ a = arange(np.prod(shape))
138
+ # Test each combination of positive and negative strides
139
+ for dirs in range(2**len(shape)):
140
+ dirs_index = [slice(None)]*len(shape)
141
+ for bit in range(len(shape)):
142
+ if ((2**bit) & dirs):
143
+ dirs_index[bit] = slice(None, None, -1)
144
+ dirs_index = tuple(dirs_index)
145
+
146
+ aview = a.reshape(shape)[dirs_index]
147
+ # C-order
148
+ i = nditer(aview, order='F')
149
+ assert_equal([x for x in i], aview.ravel(order='F'))
150
+ # Fortran-order
151
+ i = nditer(aview.T, order='F')
152
+ assert_equal([x for x in i], aview.T.ravel(order='F'))
153
+ # Other order
154
+ if len(shape) > 2:
155
+ i = nditer(aview.swapaxes(0, 1), order='F')
156
+ assert_equal([x for x in i],
157
+ aview.swapaxes(0, 1).ravel(order='F'))
158
+
159
+ def test_iter_c_or_f_order():
160
+ # Test forcing any contiguous (C or F) order
161
+
162
+ # Test the ordering for 1-D to 5-D shapes
163
+ for shape in [(5,), (3, 4), (2, 3, 4), (2, 3, 4, 3), (2, 3, 2, 2, 3)]:
164
+ a = arange(np.prod(shape))
165
+ # Test each combination of positive and negative strides
166
+ for dirs in range(2**len(shape)):
167
+ dirs_index = [slice(None)]*len(shape)
168
+ for bit in range(len(shape)):
169
+ if ((2**bit) & dirs):
170
+ dirs_index[bit] = slice(None, None, -1)
171
+ dirs_index = tuple(dirs_index)
172
+
173
+ aview = a.reshape(shape)[dirs_index]
174
+ # C-order
175
+ i = nditer(aview, order='A')
176
+ assert_equal([x for x in i], aview.ravel(order='A'))
177
+ # Fortran-order
178
+ i = nditer(aview.T, order='A')
179
+ assert_equal([x for x in i], aview.T.ravel(order='A'))
180
+ # Other order
181
+ if len(shape) > 2:
182
+ i = nditer(aview.swapaxes(0, 1), order='A')
183
+ assert_equal([x for x in i],
184
+ aview.swapaxes(0, 1).ravel(order='A'))
185
+
186
+ def test_iter_best_order_multi_index_1d():
187
+ # The multi-indices should be correct with any reordering
188
+
189
+ a = arange(4)
190
+ # 1D order
191
+ i = nditer(a, ['multi_index'], [['readonly']])
192
+ assert_equal(iter_multi_index(i), [(0,), (1,), (2,), (3,)])
193
+ # 1D reversed order
194
+ i = nditer(a[::-1], ['multi_index'], [['readonly']])
195
+ assert_equal(iter_multi_index(i), [(3,), (2,), (1,), (0,)])
196
+
197
+ def test_iter_best_order_multi_index_2d():
198
+ # The multi-indices should be correct with any reordering
199
+
200
+ a = arange(6)
201
+ # 2D C-order
202
+ i = nditer(a.reshape(2, 3), ['multi_index'], [['readonly']])
203
+ assert_equal(iter_multi_index(i), [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)])
204
+ # 2D Fortran-order
205
+ i = nditer(a.reshape(2, 3).copy(order='F'), ['multi_index'], [['readonly']])
206
+ assert_equal(iter_multi_index(i), [(0, 0), (1, 0), (0, 1), (1, 1), (0, 2), (1, 2)])
207
+ # 2D reversed C-order
208
+ i = nditer(a.reshape(2, 3)[::-1], ['multi_index'], [['readonly']])
209
+ assert_equal(iter_multi_index(i), [(1, 0), (1, 1), (1, 2), (0, 0), (0, 1), (0, 2)])
210
+ i = nditer(a.reshape(2, 3)[:, ::-1], ['multi_index'], [['readonly']])
211
+ assert_equal(iter_multi_index(i), [(0, 2), (0, 1), (0, 0), (1, 2), (1, 1), (1, 0)])
212
+ i = nditer(a.reshape(2, 3)[::-1, ::-1], ['multi_index'], [['readonly']])
213
+ assert_equal(iter_multi_index(i), [(1, 2), (1, 1), (1, 0), (0, 2), (0, 1), (0, 0)])
214
+ # 2D reversed Fortran-order
215
+ i = nditer(a.reshape(2, 3).copy(order='F')[::-1], ['multi_index'], [['readonly']])
216
+ assert_equal(iter_multi_index(i), [(1, 0), (0, 0), (1, 1), (0, 1), (1, 2), (0, 2)])
217
+ i = nditer(a.reshape(2, 3).copy(order='F')[:, ::-1],
218
+ ['multi_index'], [['readonly']])
219
+ assert_equal(iter_multi_index(i), [(0, 2), (1, 2), (0, 1), (1, 1), (0, 0), (1, 0)])
220
+ i = nditer(a.reshape(2, 3).copy(order='F')[::-1, ::-1],
221
+ ['multi_index'], [['readonly']])
222
+ assert_equal(iter_multi_index(i), [(1, 2), (0, 2), (1, 1), (0, 1), (1, 0), (0, 0)])
223
+
224
+ def test_iter_best_order_multi_index_3d():
225
+ # The multi-indices should be correct with any reordering
226
+
227
+ a = arange(12)
228
+ # 3D C-order
229
+ i = nditer(a.reshape(2, 3, 2), ['multi_index'], [['readonly']])
230
+ assert_equal(iter_multi_index(i),
231
+ [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (0, 2, 0), (0, 2, 1),
232
+ (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1), (1, 2, 0), (1, 2, 1)])
233
+ # 3D Fortran-order
234
+ i = nditer(a.reshape(2, 3, 2).copy(order='F'), ['multi_index'], [['readonly']])
235
+ assert_equal(iter_multi_index(i),
236
+ [(0, 0, 0), (1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 2, 0), (1, 2, 0),
237
+ (0, 0, 1), (1, 0, 1), (0, 1, 1), (1, 1, 1), (0, 2, 1), (1, 2, 1)])
238
+ # 3D reversed C-order
239
+ i = nditer(a.reshape(2, 3, 2)[::-1], ['multi_index'], [['readonly']])
240
+ assert_equal(iter_multi_index(i),
241
+ [(1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1), (1, 2, 0), (1, 2, 1),
242
+ (0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (0, 2, 0), (0, 2, 1)])
243
+ i = nditer(a.reshape(2, 3, 2)[:, ::-1], ['multi_index'], [['readonly']])
244
+ assert_equal(iter_multi_index(i),
245
+ [(0, 2, 0), (0, 2, 1), (0, 1, 0), (0, 1, 1), (0, 0, 0), (0, 0, 1),
246
+ (1, 2, 0), (1, 2, 1), (1, 1, 0), (1, 1, 1), (1, 0, 0), (1, 0, 1)])
247
+ i = nditer(a.reshape(2, 3, 2)[:,:, ::-1], ['multi_index'], [['readonly']])
248
+ assert_equal(iter_multi_index(i),
249
+ [(0, 0, 1), (0, 0, 0), (0, 1, 1), (0, 1, 0), (0, 2, 1), (0, 2, 0),
250
+ (1, 0, 1), (1, 0, 0), (1, 1, 1), (1, 1, 0), (1, 2, 1), (1, 2, 0)])
251
+ # 3D reversed Fortran-order
252
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[::-1],
253
+ ['multi_index'], [['readonly']])
254
+ assert_equal(iter_multi_index(i),
255
+ [(1, 0, 0), (0, 0, 0), (1, 1, 0), (0, 1, 0), (1, 2, 0), (0, 2, 0),
256
+ (1, 0, 1), (0, 0, 1), (1, 1, 1), (0, 1, 1), (1, 2, 1), (0, 2, 1)])
257
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[:, ::-1],
258
+ ['multi_index'], [['readonly']])
259
+ assert_equal(iter_multi_index(i),
260
+ [(0, 2, 0), (1, 2, 0), (0, 1, 0), (1, 1, 0), (0, 0, 0), (1, 0, 0),
261
+ (0, 2, 1), (1, 2, 1), (0, 1, 1), (1, 1, 1), (0, 0, 1), (1, 0, 1)])
262
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[:,:, ::-1],
263
+ ['multi_index'], [['readonly']])
264
+ assert_equal(iter_multi_index(i),
265
+ [(0, 0, 1), (1, 0, 1), (0, 1, 1), (1, 1, 1), (0, 2, 1), (1, 2, 1),
266
+ (0, 0, 0), (1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 2, 0), (1, 2, 0)])
267
+
268
+ def test_iter_best_order_c_index_1d():
269
+ # The C index should be correct with any reordering
270
+
271
+ a = arange(4)
272
+ # 1D order
273
+ i = nditer(a, ['c_index'], [['readonly']])
274
+ assert_equal(iter_indices(i), [0, 1, 2, 3])
275
+ # 1D reversed order
276
+ i = nditer(a[::-1], ['c_index'], [['readonly']])
277
+ assert_equal(iter_indices(i), [3, 2, 1, 0])
278
+
279
+ def test_iter_best_order_c_index_2d():
280
+ # The C index should be correct with any reordering
281
+
282
+ a = arange(6)
283
+ # 2D C-order
284
+ i = nditer(a.reshape(2, 3), ['c_index'], [['readonly']])
285
+ assert_equal(iter_indices(i), [0, 1, 2, 3, 4, 5])
286
+ # 2D Fortran-order
287
+ i = nditer(a.reshape(2, 3).copy(order='F'),
288
+ ['c_index'], [['readonly']])
289
+ assert_equal(iter_indices(i), [0, 3, 1, 4, 2, 5])
290
+ # 2D reversed C-order
291
+ i = nditer(a.reshape(2, 3)[::-1], ['c_index'], [['readonly']])
292
+ assert_equal(iter_indices(i), [3, 4, 5, 0, 1, 2])
293
+ i = nditer(a.reshape(2, 3)[:, ::-1], ['c_index'], [['readonly']])
294
+ assert_equal(iter_indices(i), [2, 1, 0, 5, 4, 3])
295
+ i = nditer(a.reshape(2, 3)[::-1, ::-1], ['c_index'], [['readonly']])
296
+ assert_equal(iter_indices(i), [5, 4, 3, 2, 1, 0])
297
+ # 2D reversed Fortran-order
298
+ i = nditer(a.reshape(2, 3).copy(order='F')[::-1],
299
+ ['c_index'], [['readonly']])
300
+ assert_equal(iter_indices(i), [3, 0, 4, 1, 5, 2])
301
+ i = nditer(a.reshape(2, 3).copy(order='F')[:, ::-1],
302
+ ['c_index'], [['readonly']])
303
+ assert_equal(iter_indices(i), [2, 5, 1, 4, 0, 3])
304
+ i = nditer(a.reshape(2, 3).copy(order='F')[::-1, ::-1],
305
+ ['c_index'], [['readonly']])
306
+ assert_equal(iter_indices(i), [5, 2, 4, 1, 3, 0])
307
+
308
+ def test_iter_best_order_c_index_3d():
309
+ # The C index should be correct with any reordering
310
+
311
+ a = arange(12)
312
+ # 3D C-order
313
+ i = nditer(a.reshape(2, 3, 2), ['c_index'], [['readonly']])
314
+ assert_equal(iter_indices(i),
315
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
316
+ # 3D Fortran-order
317
+ i = nditer(a.reshape(2, 3, 2).copy(order='F'),
318
+ ['c_index'], [['readonly']])
319
+ assert_equal(iter_indices(i),
320
+ [0, 6, 2, 8, 4, 10, 1, 7, 3, 9, 5, 11])
321
+ # 3D reversed C-order
322
+ i = nditer(a.reshape(2, 3, 2)[::-1], ['c_index'], [['readonly']])
323
+ assert_equal(iter_indices(i),
324
+ [6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5])
325
+ i = nditer(a.reshape(2, 3, 2)[:, ::-1], ['c_index'], [['readonly']])
326
+ assert_equal(iter_indices(i),
327
+ [4, 5, 2, 3, 0, 1, 10, 11, 8, 9, 6, 7])
328
+ i = nditer(a.reshape(2, 3, 2)[:,:, ::-1], ['c_index'], [['readonly']])
329
+ assert_equal(iter_indices(i),
330
+ [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10])
331
+ # 3D reversed Fortran-order
332
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[::-1],
333
+ ['c_index'], [['readonly']])
334
+ assert_equal(iter_indices(i),
335
+ [6, 0, 8, 2, 10, 4, 7, 1, 9, 3, 11, 5])
336
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[:, ::-1],
337
+ ['c_index'], [['readonly']])
338
+ assert_equal(iter_indices(i),
339
+ [4, 10, 2, 8, 0, 6, 5, 11, 3, 9, 1, 7])
340
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[:,:, ::-1],
341
+ ['c_index'], [['readonly']])
342
+ assert_equal(iter_indices(i),
343
+ [1, 7, 3, 9, 5, 11, 0, 6, 2, 8, 4, 10])
344
+
345
+ def test_iter_best_order_f_index_1d():
346
+ # The Fortran index should be correct with any reordering
347
+
348
+ a = arange(4)
349
+ # 1D order
350
+ i = nditer(a, ['f_index'], [['readonly']])
351
+ assert_equal(iter_indices(i), [0, 1, 2, 3])
352
+ # 1D reversed order
353
+ i = nditer(a[::-1], ['f_index'], [['readonly']])
354
+ assert_equal(iter_indices(i), [3, 2, 1, 0])
355
+
356
+ def test_iter_best_order_f_index_2d():
357
+ # The Fortran index should be correct with any reordering
358
+
359
+ a = arange(6)
360
+ # 2D C-order
361
+ i = nditer(a.reshape(2, 3), ['f_index'], [['readonly']])
362
+ assert_equal(iter_indices(i), [0, 2, 4, 1, 3, 5])
363
+ # 2D Fortran-order
364
+ i = nditer(a.reshape(2, 3).copy(order='F'),
365
+ ['f_index'], [['readonly']])
366
+ assert_equal(iter_indices(i), [0, 1, 2, 3, 4, 5])
367
+ # 2D reversed C-order
368
+ i = nditer(a.reshape(2, 3)[::-1], ['f_index'], [['readonly']])
369
+ assert_equal(iter_indices(i), [1, 3, 5, 0, 2, 4])
370
+ i = nditer(a.reshape(2, 3)[:, ::-1], ['f_index'], [['readonly']])
371
+ assert_equal(iter_indices(i), [4, 2, 0, 5, 3, 1])
372
+ i = nditer(a.reshape(2, 3)[::-1, ::-1], ['f_index'], [['readonly']])
373
+ assert_equal(iter_indices(i), [5, 3, 1, 4, 2, 0])
374
+ # 2D reversed Fortran-order
375
+ i = nditer(a.reshape(2, 3).copy(order='F')[::-1],
376
+ ['f_index'], [['readonly']])
377
+ assert_equal(iter_indices(i), [1, 0, 3, 2, 5, 4])
378
+ i = nditer(a.reshape(2, 3).copy(order='F')[:, ::-1],
379
+ ['f_index'], [['readonly']])
380
+ assert_equal(iter_indices(i), [4, 5, 2, 3, 0, 1])
381
+ i = nditer(a.reshape(2, 3).copy(order='F')[::-1, ::-1],
382
+ ['f_index'], [['readonly']])
383
+ assert_equal(iter_indices(i), [5, 4, 3, 2, 1, 0])
384
+
385
+ def test_iter_best_order_f_index_3d():
386
+ # The Fortran index should be correct with any reordering
387
+
388
+ a = arange(12)
389
+ # 3D C-order
390
+ i = nditer(a.reshape(2, 3, 2), ['f_index'], [['readonly']])
391
+ assert_equal(iter_indices(i),
392
+ [0, 6, 2, 8, 4, 10, 1, 7, 3, 9, 5, 11])
393
+ # 3D Fortran-order
394
+ i = nditer(a.reshape(2, 3, 2).copy(order='F'),
395
+ ['f_index'], [['readonly']])
396
+ assert_equal(iter_indices(i),
397
+ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
398
+ # 3D reversed C-order
399
+ i = nditer(a.reshape(2, 3, 2)[::-1], ['f_index'], [['readonly']])
400
+ assert_equal(iter_indices(i),
401
+ [1, 7, 3, 9, 5, 11, 0, 6, 2, 8, 4, 10])
402
+ i = nditer(a.reshape(2, 3, 2)[:, ::-1], ['f_index'], [['readonly']])
403
+ assert_equal(iter_indices(i),
404
+ [4, 10, 2, 8, 0, 6, 5, 11, 3, 9, 1, 7])
405
+ i = nditer(a.reshape(2, 3, 2)[:,:, ::-1], ['f_index'], [['readonly']])
406
+ assert_equal(iter_indices(i),
407
+ [6, 0, 8, 2, 10, 4, 7, 1, 9, 3, 11, 5])
408
+ # 3D reversed Fortran-order
409
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[::-1],
410
+ ['f_index'], [['readonly']])
411
+ assert_equal(iter_indices(i),
412
+ [1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10])
413
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[:, ::-1],
414
+ ['f_index'], [['readonly']])
415
+ assert_equal(iter_indices(i),
416
+ [4, 5, 2, 3, 0, 1, 10, 11, 8, 9, 6, 7])
417
+ i = nditer(a.reshape(2, 3, 2).copy(order='F')[:,:, ::-1],
418
+ ['f_index'], [['readonly']])
419
+ assert_equal(iter_indices(i),
420
+ [6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5])
421
+
422
+ def test_iter_no_inner_full_coalesce():
423
+ # Check no_inner iterators which coalesce into a single inner loop
424
+
425
+ for shape in [(5,), (3, 4), (2, 3, 4), (2, 3, 4, 3), (2, 3, 2, 2, 3)]:
426
+ size = np.prod(shape)
427
+ a = arange(size)
428
+ # Test each combination of forward and backwards indexing
429
+ for dirs in range(2**len(shape)):
430
+ dirs_index = [slice(None)]*len(shape)
431
+ for bit in range(len(shape)):
432
+ if ((2**bit) & dirs):
433
+ dirs_index[bit] = slice(None, None, -1)
434
+ dirs_index = tuple(dirs_index)
435
+
436
+ aview = a.reshape(shape)[dirs_index]
437
+ # C-order
438
+ i = nditer(aview, ['external_loop'], [['readonly']])
439
+ assert_equal(i.ndim, 1)
440
+ assert_equal(i[0].shape, (size,))
441
+ # Fortran-order
442
+ i = nditer(aview.T, ['external_loop'], [['readonly']])
443
+ assert_equal(i.ndim, 1)
444
+ assert_equal(i[0].shape, (size,))
445
+ # Other order
446
+ if len(shape) > 2:
447
+ i = nditer(aview.swapaxes(0, 1),
448
+ ['external_loop'], [['readonly']])
449
+ assert_equal(i.ndim, 1)
450
+ assert_equal(i[0].shape, (size,))
451
+
452
+ def test_iter_no_inner_dim_coalescing():
453
+ # Check no_inner iterators whose dimensions may not coalesce completely
454
+
455
+ # Skipping the last element in a dimension prevents coalescing
456
+ # with the next-bigger dimension
457
+ a = arange(24).reshape(2, 3, 4)[:,:, :-1]
458
+ i = nditer(a, ['external_loop'], [['readonly']])
459
+ assert_equal(i.ndim, 2)
460
+ assert_equal(i[0].shape, (3,))
461
+ a = arange(24).reshape(2, 3, 4)[:, :-1,:]
462
+ i = nditer(a, ['external_loop'], [['readonly']])
463
+ assert_equal(i.ndim, 2)
464
+ assert_equal(i[0].shape, (8,))
465
+ a = arange(24).reshape(2, 3, 4)[:-1,:,:]
466
+ i = nditer(a, ['external_loop'], [['readonly']])
467
+ assert_equal(i.ndim, 1)
468
+ assert_equal(i[0].shape, (12,))
469
+
470
+ # Even with lots of 1-sized dimensions, should still coalesce
471
+ a = arange(24).reshape(1, 1, 2, 1, 1, 3, 1, 1, 4, 1, 1)
472
+ i = nditer(a, ['external_loop'], [['readonly']])
473
+ assert_equal(i.ndim, 1)
474
+ assert_equal(i[0].shape, (24,))
475
+
476
+ def test_iter_dim_coalescing():
477
+ # Check that the correct number of dimensions are coalesced
478
+
479
+ # Tracking a multi-index disables coalescing
480
+ a = arange(24).reshape(2, 3, 4)
481
+ i = nditer(a, ['multi_index'], [['readonly']])
482
+ assert_equal(i.ndim, 3)
483
+
484
+ # A tracked index can allow coalescing if it's compatible with the array
485
+ a3d = arange(24).reshape(2, 3, 4)
486
+ i = nditer(a3d, ['c_index'], [['readonly']])
487
+ assert_equal(i.ndim, 1)
488
+ i = nditer(a3d.swapaxes(0, 1), ['c_index'], [['readonly']])
489
+ assert_equal(i.ndim, 3)
490
+ i = nditer(a3d.T, ['c_index'], [['readonly']])
491
+ assert_equal(i.ndim, 3)
492
+ i = nditer(a3d.T, ['f_index'], [['readonly']])
493
+ assert_equal(i.ndim, 1)
494
+ i = nditer(a3d.T.swapaxes(0, 1), ['f_index'], [['readonly']])
495
+ assert_equal(i.ndim, 3)
496
+
497
+ # When C or F order is forced, coalescing may still occur
498
+ a3d = arange(24).reshape(2, 3, 4)
499
+ i = nditer(a3d, order='C')
500
+ assert_equal(i.ndim, 1)
501
+ i = nditer(a3d.T, order='C')
502
+ assert_equal(i.ndim, 3)
503
+ i = nditer(a3d, order='F')
504
+ assert_equal(i.ndim, 3)
505
+ i = nditer(a3d.T, order='F')
506
+ assert_equal(i.ndim, 1)
507
+ i = nditer(a3d, order='A')
508
+ assert_equal(i.ndim, 1)
509
+ i = nditer(a3d.T, order='A')
510
+ assert_equal(i.ndim, 1)
511
+
512
+ def test_iter_broadcasting():
513
+ # Standard NumPy broadcasting rules
514
+
515
+ # 1D with scalar
516
+ i = nditer([arange(6), np.int32(2)], ['multi_index'], [['readonly']]*2)
517
+ assert_equal(i.itersize, 6)
518
+ assert_equal(i.shape, (6,))
519
+
520
+ # 2D with scalar
521
+ i = nditer([arange(6).reshape(2, 3), np.int32(2)],
522
+ ['multi_index'], [['readonly']]*2)
523
+ assert_equal(i.itersize, 6)
524
+ assert_equal(i.shape, (2, 3))
525
+ # 2D with 1D
526
+ i = nditer([arange(6).reshape(2, 3), arange(3)],
527
+ ['multi_index'], [['readonly']]*2)
528
+ assert_equal(i.itersize, 6)
529
+ assert_equal(i.shape, (2, 3))
530
+ i = nditer([arange(2).reshape(2, 1), arange(3)],
531
+ ['multi_index'], [['readonly']]*2)
532
+ assert_equal(i.itersize, 6)
533
+ assert_equal(i.shape, (2, 3))
534
+ # 2D with 2D
535
+ i = nditer([arange(2).reshape(2, 1), arange(3).reshape(1, 3)],
536
+ ['multi_index'], [['readonly']]*2)
537
+ assert_equal(i.itersize, 6)
538
+ assert_equal(i.shape, (2, 3))
539
+
540
+ # 3D with scalar
541
+ i = nditer([np.int32(2), arange(24).reshape(4, 2, 3)],
542
+ ['multi_index'], [['readonly']]*2)
543
+ assert_equal(i.itersize, 24)
544
+ assert_equal(i.shape, (4, 2, 3))
545
+ # 3D with 1D
546
+ i = nditer([arange(3), arange(24).reshape(4, 2, 3)],
547
+ ['multi_index'], [['readonly']]*2)
548
+ assert_equal(i.itersize, 24)
549
+ assert_equal(i.shape, (4, 2, 3))
550
+ i = nditer([arange(3), arange(8).reshape(4, 2, 1)],
551
+ ['multi_index'], [['readonly']]*2)
552
+ assert_equal(i.itersize, 24)
553
+ assert_equal(i.shape, (4, 2, 3))
554
+ # 3D with 2D
555
+ i = nditer([arange(6).reshape(2, 3), arange(24).reshape(4, 2, 3)],
556
+ ['multi_index'], [['readonly']]*2)
557
+ assert_equal(i.itersize, 24)
558
+ assert_equal(i.shape, (4, 2, 3))
559
+ i = nditer([arange(2).reshape(2, 1), arange(24).reshape(4, 2, 3)],
560
+ ['multi_index'], [['readonly']]*2)
561
+ assert_equal(i.itersize, 24)
562
+ assert_equal(i.shape, (4, 2, 3))
563
+ i = nditer([arange(3).reshape(1, 3), arange(8).reshape(4, 2, 1)],
564
+ ['multi_index'], [['readonly']]*2)
565
+ assert_equal(i.itersize, 24)
566
+ assert_equal(i.shape, (4, 2, 3))
567
+ # 3D with 3D
568
+ i = nditer([arange(2).reshape(1, 2, 1), arange(3).reshape(1, 1, 3),
569
+ arange(4).reshape(4, 1, 1)],
570
+ ['multi_index'], [['readonly']]*3)
571
+ assert_equal(i.itersize, 24)
572
+ assert_equal(i.shape, (4, 2, 3))
573
+ i = nditer([arange(6).reshape(1, 2, 3), arange(4).reshape(4, 1, 1)],
574
+ ['multi_index'], [['readonly']]*2)
575
+ assert_equal(i.itersize, 24)
576
+ assert_equal(i.shape, (4, 2, 3))
577
+ i = nditer([arange(24).reshape(4, 2, 3), arange(12).reshape(4, 1, 3)],
578
+ ['multi_index'], [['readonly']]*2)
579
+ assert_equal(i.itersize, 24)
580
+ assert_equal(i.shape, (4, 2, 3))
581
+
582
+ def test_iter_itershape():
583
+ # Check that allocated outputs work with a specified shape
584
+ a = np.arange(6, dtype='i2').reshape(2, 3)
585
+ i = nditer([a, None], [], [['readonly'], ['writeonly', 'allocate']],
586
+ op_axes=[[0, 1, None], None],
587
+ itershape=(-1, -1, 4))
588
+ assert_equal(i.operands[1].shape, (2, 3, 4))
589
+ assert_equal(i.operands[1].strides, (24, 8, 2))
590
+
591
+ i = nditer([a.T, None], [], [['readonly'], ['writeonly', 'allocate']],
592
+ op_axes=[[0, 1, None], None],
593
+ itershape=(-1, -1, 4))
594
+ assert_equal(i.operands[1].shape, (3, 2, 4))
595
+ assert_equal(i.operands[1].strides, (8, 24, 2))
596
+
597
+ i = nditer([a.T, None], [], [['readonly'], ['writeonly', 'allocate']],
598
+ order='F',
599
+ op_axes=[[0, 1, None], None],
600
+ itershape=(-1, -1, 4))
601
+ assert_equal(i.operands[1].shape, (3, 2, 4))
602
+ assert_equal(i.operands[1].strides, (2, 6, 12))
603
+
604
+ # If we specify 1 in the itershape, it shouldn't allow broadcasting
605
+ # of that dimension to a bigger value
606
+ assert_raises(ValueError, nditer, [a, None], [],
607
+ [['readonly'], ['writeonly', 'allocate']],
608
+ op_axes=[[0, 1, None], None],
609
+ itershape=(-1, 1, 4))
610
+ # Test bug that for no op_axes but itershape, they are NULLed correctly
611
+ i = np.nditer([np.ones(2), None, None], itershape=(2,))
612
+
613
+ def test_iter_broadcasting_errors():
614
+ # Check that errors are thrown for bad broadcasting shapes
615
+
616
+ # 1D with 1D
617
+ assert_raises(ValueError, nditer, [arange(2), arange(3)],
618
+ [], [['readonly']]*2)
619
+ # 2D with 1D
620
+ assert_raises(ValueError, nditer,
621
+ [arange(6).reshape(2, 3), arange(2)],
622
+ [], [['readonly']]*2)
623
+ # 2D with 2D
624
+ assert_raises(ValueError, nditer,
625
+ [arange(6).reshape(2, 3), arange(9).reshape(3, 3)],
626
+ [], [['readonly']]*2)
627
+ assert_raises(ValueError, nditer,
628
+ [arange(6).reshape(2, 3), arange(4).reshape(2, 2)],
629
+ [], [['readonly']]*2)
630
+ # 3D with 3D
631
+ assert_raises(ValueError, nditer,
632
+ [arange(36).reshape(3, 3, 4), arange(24).reshape(2, 3, 4)],
633
+ [], [['readonly']]*2)
634
+ assert_raises(ValueError, nditer,
635
+ [arange(8).reshape(2, 4, 1), arange(24).reshape(2, 3, 4)],
636
+ [], [['readonly']]*2)
637
+
638
+ # Verify that the error message mentions the right shapes
639
+ try:
640
+ nditer([arange(2).reshape(1, 2, 1),
641
+ arange(3).reshape(1, 3),
642
+ arange(6).reshape(2, 3)],
643
+ [],
644
+ [['readonly'], ['readonly'], ['writeonly', 'no_broadcast']])
645
+ raise AssertionError('Should have raised a broadcast error')
646
+ except ValueError as e:
647
+ msg = str(e)
648
+ # The message should contain the shape of the 3rd operand
649
+ assert_(msg.find('(2,3)') >= 0,
650
+ 'Message "%s" doesn\'t contain operand shape (2,3)' % msg)
651
+ # The message should contain the broadcast shape
652
+ assert_(msg.find('(1,2,3)') >= 0,
653
+ 'Message "%s" doesn\'t contain broadcast shape (1,2,3)' % msg)
654
+
655
+ try:
656
+ nditer([arange(6).reshape(2, 3), arange(2)],
657
+ [],
658
+ [['readonly'], ['readonly']],
659
+ op_axes=[[0, 1], [0, np.newaxis]],
660
+ itershape=(4, 3))
661
+ raise AssertionError('Should have raised a broadcast error')
662
+ except ValueError as e:
663
+ msg = str(e)
664
+ # The message should contain "shape->remappedshape" for each operand
665
+ assert_(msg.find('(2,3)->(2,3)') >= 0,
666
+ 'Message "%s" doesn\'t contain operand shape (2,3)->(2,3)' % msg)
667
+ assert_(msg.find('(2,)->(2,newaxis)') >= 0,
668
+ ('Message "%s" doesn\'t contain remapped operand shape' +
669
+ '(2,)->(2,newaxis)') % msg)
670
+ # The message should contain the itershape parameter
671
+ assert_(msg.find('(4,3)') >= 0,
672
+ 'Message "%s" doesn\'t contain itershape parameter (4,3)' % msg)
673
+
674
+ try:
675
+ nditer([np.zeros((2, 1, 1)), np.zeros((2,))],
676
+ [],
677
+ [['writeonly', 'no_broadcast'], ['readonly']])
678
+ raise AssertionError('Should have raised a broadcast error')
679
+ except ValueError as e:
680
+ msg = str(e)
681
+ # The message should contain the shape of the bad operand
682
+ assert_(msg.find('(2,1,1)') >= 0,
683
+ 'Message "%s" doesn\'t contain operand shape (2,1,1)' % msg)
684
+ # The message should contain the broadcast shape
685
+ assert_(msg.find('(2,1,2)') >= 0,
686
+ 'Message "%s" doesn\'t contain the broadcast shape (2,1,2)' % msg)
687
+
688
+ def test_iter_flags_errors():
689
+ # Check that bad combinations of flags produce errors
690
+
691
+ a = arange(6)
692
+
693
+ # Not enough operands
694
+ assert_raises(ValueError, nditer, [], [], [])
695
+ # Too many operands
696
+ assert_raises(ValueError, nditer, [a]*100, [], [['readonly']]*100)
697
+ # Bad global flag
698
+ assert_raises(ValueError, nditer, [a], ['bad flag'], [['readonly']])
699
+ # Bad op flag
700
+ assert_raises(ValueError, nditer, [a], [], [['readonly', 'bad flag']])
701
+ # Bad order parameter
702
+ assert_raises(ValueError, nditer, [a], [], [['readonly']], order='G')
703
+ # Bad casting parameter
704
+ assert_raises(ValueError, nditer, [a], [], [['readonly']], casting='noon')
705
+ # op_flags must match ops
706
+ assert_raises(ValueError, nditer, [a]*3, [], [['readonly']]*2)
707
+ # Cannot track both a C and an F index
708
+ assert_raises(ValueError, nditer, a,
709
+ ['c_index', 'f_index'], [['readonly']])
710
+ # Inner iteration and multi-indices/indices are incompatible
711
+ assert_raises(ValueError, nditer, a,
712
+ ['external_loop', 'multi_index'], [['readonly']])
713
+ assert_raises(ValueError, nditer, a,
714
+ ['external_loop', 'c_index'], [['readonly']])
715
+ assert_raises(ValueError, nditer, a,
716
+ ['external_loop', 'f_index'], [['readonly']])
717
+ # Must specify exactly one of readwrite/readonly/writeonly per operand
718
+ assert_raises(ValueError, nditer, a, [], [[]])
719
+ assert_raises(ValueError, nditer, a, [], [['readonly', 'writeonly']])
720
+ assert_raises(ValueError, nditer, a, [], [['readonly', 'readwrite']])
721
+ assert_raises(ValueError, nditer, a, [], [['writeonly', 'readwrite']])
722
+ assert_raises(ValueError, nditer, a,
723
+ [], [['readonly', 'writeonly', 'readwrite']])
724
+ # Python scalars are always readonly
725
+ assert_raises(TypeError, nditer, 1.5, [], [['writeonly']])
726
+ assert_raises(TypeError, nditer, 1.5, [], [['readwrite']])
727
+ # Array scalars are always readonly
728
+ assert_raises(TypeError, nditer, np.int32(1), [], [['writeonly']])
729
+ assert_raises(TypeError, nditer, np.int32(1), [], [['readwrite']])
730
+ # Check readonly array
731
+ a.flags.writeable = False
732
+ assert_raises(ValueError, nditer, a, [], [['writeonly']])
733
+ assert_raises(ValueError, nditer, a, [], [['readwrite']])
734
+ a.flags.writeable = True
735
+ # Multi-indices available only with the multi_index flag
736
+ i = nditer(arange(6), [], [['readonly']])
737
+ assert_raises(ValueError, lambda i:i.multi_index, i)
738
+ # Index available only with an index flag
739
+ assert_raises(ValueError, lambda i:i.index, i)
740
+ # GotoCoords and GotoIndex incompatible with buffering or no_inner
741
+
742
+ def assign_multi_index(i):
743
+ i.multi_index = (0,)
744
+
745
+ def assign_index(i):
746
+ i.index = 0
747
+
748
+ def assign_iterindex(i):
749
+ i.iterindex = 0
750
+
751
+ def assign_iterrange(i):
752
+ i.iterrange = (0, 1)
753
+ i = nditer(arange(6), ['external_loop'])
754
+ assert_raises(ValueError, assign_multi_index, i)
755
+ assert_raises(ValueError, assign_index, i)
756
+ assert_raises(ValueError, assign_iterindex, i)
757
+ assert_raises(ValueError, assign_iterrange, i)
758
+ i = nditer(arange(6), ['buffered'])
759
+ assert_raises(ValueError, assign_multi_index, i)
760
+ assert_raises(ValueError, assign_index, i)
761
+ assert_raises(ValueError, assign_iterrange, i)
762
+ # Can't iterate if size is zero
763
+ assert_raises(ValueError, nditer, np.array([]))
764
+
765
+ def test_iter_slice():
766
+ a, b, c = np.arange(3), np.arange(3), np.arange(3.)
767
+ i = nditer([a, b, c], [], ['readwrite'])
768
+ i[0:2] = (3, 3)
769
+ assert_equal(a, [3, 1, 2])
770
+ assert_equal(b, [3, 1, 2])
771
+ assert_equal(c, [0, 1, 2])
772
+ i[1] = 12
773
+ assert_equal(i[0:2], [3, 12])
774
+
775
+ def test_iter_nbo_align_contig():
776
+ # Check that byte order, alignment, and contig changes work
777
+
778
+ # Byte order change by requesting a specific dtype
779
+ a = np.arange(6, dtype='f4')
780
+ au = a.byteswap().newbyteorder()
781
+ assert_(a.dtype.byteorder != au.dtype.byteorder)
782
+ i = nditer(au, [], [['readwrite', 'updateifcopy']],
783
+ casting='equiv',
784
+ op_dtypes=[np.dtype('f4')])
785
+ assert_equal(i.dtypes[0].byteorder, a.dtype.byteorder)
786
+ assert_equal(i.operands[0].dtype.byteorder, a.dtype.byteorder)
787
+ assert_equal(i.operands[0], a)
788
+ i.operands[0][:] = 2
789
+ i = None
790
+ assert_equal(au, [2]*6)
791
+
792
+ # Byte order change by requesting NBO
793
+ a = np.arange(6, dtype='f4')
794
+ au = a.byteswap().newbyteorder()
795
+ assert_(a.dtype.byteorder != au.dtype.byteorder)
796
+ i = nditer(au, [], [['readwrite', 'updateifcopy', 'nbo']], casting='equiv')
797
+ assert_equal(i.dtypes[0].byteorder, a.dtype.byteorder)
798
+ assert_equal(i.operands[0].dtype.byteorder, a.dtype.byteorder)
799
+ assert_equal(i.operands[0], a)
800
+ i.operands[0][:] = 2
801
+ i = None
802
+ assert_equal(au, [2]*6)
803
+
804
+ # Unaligned input
805
+ a = np.zeros((6*4+1,), dtype='i1')[1:]
806
+ a.dtype = 'f4'
807
+ a[:] = np.arange(6, dtype='f4')
808
+ assert_(not a.flags.aligned)
809
+ # Without 'aligned', shouldn't copy
810
+ i = nditer(a, [], [['readonly']])
811
+ assert_(not i.operands[0].flags.aligned)
812
+ assert_equal(i.operands[0], a)
813
+ # With 'aligned', should make a copy
814
+ i = nditer(a, [], [['readwrite', 'updateifcopy', 'aligned']])
815
+ assert_(i.operands[0].flags.aligned)
816
+ assert_equal(i.operands[0], a)
817
+ i.operands[0][:] = 3
818
+ i = None
819
+ assert_equal(a, [3]*6)
820
+
821
+ # Discontiguous input
822
+ a = arange(12)
823
+ # If it is contiguous, shouldn't copy
824
+ i = nditer(a[:6], [], [['readonly']])
825
+ assert_(i.operands[0].flags.contiguous)
826
+ assert_equal(i.operands[0], a[:6])
827
+ # If it isn't contiguous, should buffer
828
+ i = nditer(a[::2], ['buffered', 'external_loop'],
829
+ [['readonly', 'contig']],
830
+ buffersize=10)
831
+ assert_(i[0].flags.contiguous)
832
+ assert_equal(i[0], a[::2])
833
+
834
+ def test_iter_array_cast():
835
+ # Check that arrays are cast as requested
836
+
837
+ # No cast 'f4' -> 'f4'
838
+ a = np.arange(6, dtype='f4').reshape(2, 3)
839
+ i = nditer(a, [], [['readwrite']], op_dtypes=[np.dtype('f4')])
840
+ assert_equal(i.operands[0], a)
841
+ assert_equal(i.operands[0].dtype, np.dtype('f4'))
842
+
843
+ # Byte-order cast '<f4' -> '>f4'
844
+ a = np.arange(6, dtype='<f4').reshape(2, 3)
845
+ i = nditer(a, [], [['readwrite', 'updateifcopy']],
846
+ casting='equiv',
847
+ op_dtypes=[np.dtype('>f4')])
848
+ assert_equal(i.operands[0], a)
849
+ assert_equal(i.operands[0].dtype, np.dtype('>f4'))
850
+
851
+ # Safe case 'f4' -> 'f8'
852
+ a = np.arange(24, dtype='f4').reshape(2, 3, 4).swapaxes(1, 2)
853
+ i = nditer(a, [], [['readonly', 'copy']],
854
+ casting='safe',
855
+ op_dtypes=[np.dtype('f8')])
856
+ assert_equal(i.operands[0], a)
857
+ assert_equal(i.operands[0].dtype, np.dtype('f8'))
858
+ # The memory layout of the temporary should match a (a is (48,4,16))
859
+ # except negative strides get flipped to positive strides.
860
+ assert_equal(i.operands[0].strides, (96, 8, 32))
861
+ a = a[::-1,:, ::-1]
862
+ i = nditer(a, [], [['readonly', 'copy']],
863
+ casting='safe',
864
+ op_dtypes=[np.dtype('f8')])
865
+ assert_equal(i.operands[0], a)
866
+ assert_equal(i.operands[0].dtype, np.dtype('f8'))
867
+ assert_equal(i.operands[0].strides, (96, 8, 32))
868
+
869
+ # Same-kind cast 'f8' -> 'f4' -> 'f8'
870
+ a = np.arange(24, dtype='f8').reshape(2, 3, 4).T
871
+ i = nditer(a, [],
872
+ [['readwrite', 'updateifcopy']],
873
+ casting='same_kind',
874
+ op_dtypes=[np.dtype('f4')])
875
+ assert_equal(i.operands[0], a)
876
+ assert_equal(i.operands[0].dtype, np.dtype('f4'))
877
+ assert_equal(i.operands[0].strides, (4, 16, 48))
878
+ # Check that UPDATEIFCOPY is activated
879
+ i.operands[0][2, 1, 1] = -12.5
880
+ assert_(a[2, 1, 1] != -12.5)
881
+ i = None
882
+ assert_equal(a[2, 1, 1], -12.5)
883
+
884
+ a = np.arange(6, dtype='i4')[::-2]
885
+ i = nditer(a, [],
886
+ [['writeonly', 'updateifcopy']],
887
+ casting='unsafe',
888
+ op_dtypes=[np.dtype('f4')])
889
+ assert_equal(i.operands[0].dtype, np.dtype('f4'))
890
+ # Even though the stride was negative in 'a', it
891
+ # becomes positive in the temporary
892
+ assert_equal(i.operands[0].strides, (4,))
893
+ i.operands[0][:] = [1, 2, 3]
894
+ i = None
895
+ assert_equal(a, [1, 2, 3])
896
+
897
+ def test_iter_array_cast_errors():
898
+ # Check that invalid casts are caught
899
+
900
+ # Need to enable copying for casts to occur
901
+ assert_raises(TypeError, nditer, arange(2, dtype='f4'), [],
902
+ [['readonly']], op_dtypes=[np.dtype('f8')])
903
+ # Also need to allow casting for casts to occur
904
+ assert_raises(TypeError, nditer, arange(2, dtype='f4'), [],
905
+ [['readonly', 'copy']], casting='no',
906
+ op_dtypes=[np.dtype('f8')])
907
+ assert_raises(TypeError, nditer, arange(2, dtype='f4'), [],
908
+ [['readonly', 'copy']], casting='equiv',
909
+ op_dtypes=[np.dtype('f8')])
910
+ assert_raises(TypeError, nditer, arange(2, dtype='f8'), [],
911
+ [['writeonly', 'updateifcopy']],
912
+ casting='no',
913
+ op_dtypes=[np.dtype('f4')])
914
+ assert_raises(TypeError, nditer, arange(2, dtype='f8'), [],
915
+ [['writeonly', 'updateifcopy']],
916
+ casting='equiv',
917
+ op_dtypes=[np.dtype('f4')])
918
+ # '<f4' -> '>f4' should not work with casting='no'
919
+ assert_raises(TypeError, nditer, arange(2, dtype='<f4'), [],
920
+ [['readonly', 'copy']], casting='no',
921
+ op_dtypes=[np.dtype('>f4')])
922
+ # 'f4' -> 'f8' is a safe cast, but 'f8' -> 'f4' isn't
923
+ assert_raises(TypeError, nditer, arange(2, dtype='f4'), [],
924
+ [['readwrite', 'updateifcopy']],
925
+ casting='safe',
926
+ op_dtypes=[np.dtype('f8')])
927
+ assert_raises(TypeError, nditer, arange(2, dtype='f8'), [],
928
+ [['readwrite', 'updateifcopy']],
929
+ casting='safe',
930
+ op_dtypes=[np.dtype('f4')])
931
+ # 'f4' -> 'i4' is neither a safe nor a same-kind cast
932
+ assert_raises(TypeError, nditer, arange(2, dtype='f4'), [],
933
+ [['readonly', 'copy']],
934
+ casting='same_kind',
935
+ op_dtypes=[np.dtype('i4')])
936
+ assert_raises(TypeError, nditer, arange(2, dtype='i4'), [],
937
+ [['writeonly', 'updateifcopy']],
938
+ casting='same_kind',
939
+ op_dtypes=[np.dtype('f4')])
940
+
941
+ def test_iter_scalar_cast():
942
+ # Check that scalars are cast as requested
943
+
944
+ # No cast 'f4' -> 'f4'
945
+ i = nditer(np.float32(2.5), [], [['readonly']],
946
+ op_dtypes=[np.dtype('f4')])
947
+ assert_equal(i.dtypes[0], np.dtype('f4'))
948
+ assert_equal(i.value.dtype, np.dtype('f4'))
949
+ assert_equal(i.value, 2.5)
950
+ # Safe cast 'f4' -> 'f8'
951
+ i = nditer(np.float32(2.5), [],
952
+ [['readonly', 'copy']],
953
+ casting='safe',
954
+ op_dtypes=[np.dtype('f8')])
955
+ assert_equal(i.dtypes[0], np.dtype('f8'))
956
+ assert_equal(i.value.dtype, np.dtype('f8'))
957
+ assert_equal(i.value, 2.5)
958
+ # Same-kind cast 'f8' -> 'f4'
959
+ i = nditer(np.float64(2.5), [],
960
+ [['readonly', 'copy']],
961
+ casting='same_kind',
962
+ op_dtypes=[np.dtype('f4')])
963
+ assert_equal(i.dtypes[0], np.dtype('f4'))
964
+ assert_equal(i.value.dtype, np.dtype('f4'))
965
+ assert_equal(i.value, 2.5)
966
+ # Unsafe cast 'f8' -> 'i4'
967
+ i = nditer(np.float64(3.0), [],
968
+ [['readonly', 'copy']],
969
+ casting='unsafe',
970
+ op_dtypes=[np.dtype('i4')])
971
+ assert_equal(i.dtypes[0], np.dtype('i4'))
972
+ assert_equal(i.value.dtype, np.dtype('i4'))
973
+ assert_equal(i.value, 3)
974
+ # Readonly scalars may be cast even without setting COPY or BUFFERED
975
+ i = nditer(3, [], [['readonly']], op_dtypes=[np.dtype('f8')])
976
+ assert_equal(i[0].dtype, np.dtype('f8'))
977
+ assert_equal(i[0], 3.)
978
+
979
+ def test_iter_scalar_cast_errors():
980
+ # Check that invalid casts are caught
981
+
982
+ # Need to allow copying/buffering for write casts of scalars to occur
983
+ assert_raises(TypeError, nditer, np.float32(2), [],
984
+ [['readwrite']], op_dtypes=[np.dtype('f8')])
985
+ assert_raises(TypeError, nditer, 2.5, [],
986
+ [['readwrite']], op_dtypes=[np.dtype('f4')])
987
+ # 'f8' -> 'f4' isn't a safe cast if the value would overflow
988
+ assert_raises(TypeError, nditer, np.float64(1e60), [],
989
+ [['readonly']],
990
+ casting='safe',
991
+ op_dtypes=[np.dtype('f4')])
992
+ # 'f4' -> 'i4' is neither a safe nor a same-kind cast
993
+ assert_raises(TypeError, nditer, np.float32(2), [],
994
+ [['readonly']],
995
+ casting='same_kind',
996
+ op_dtypes=[np.dtype('i4')])
997
+
998
+ def test_iter_object_arrays_basic():
999
+ # Check that object arrays work
1000
+
1001
+ obj = {'a':3,'b':'d'}
1002
+ a = np.array([[1, 2, 3], None, obj, None], dtype='O')
1003
+ rc = sys.getrefcount(obj)
1004
+
1005
+ # Need to allow references for object arrays
1006
+ assert_raises(TypeError, nditer, a)
1007
+ assert_equal(sys.getrefcount(obj), rc)
1008
+
1009
+ i = nditer(a, ['refs_ok'], ['readonly'])
1010
+ vals = [x_[()] for x_ in i]
1011
+ assert_equal(np.array(vals, dtype='O'), a)
1012
+ vals, i, x = [None]*3
1013
+ assert_equal(sys.getrefcount(obj), rc)
1014
+
1015
+ i = nditer(a.reshape(2, 2).T, ['refs_ok', 'buffered'],
1016
+ ['readonly'], order='C')
1017
+ assert_(i.iterationneedsapi)
1018
+ vals = [x_[()] for x_ in i]
1019
+ assert_equal(np.array(vals, dtype='O'), a.reshape(2, 2).ravel(order='F'))
1020
+ vals, i, x = [None]*3
1021
+ assert_equal(sys.getrefcount(obj), rc)
1022
+
1023
+ i = nditer(a.reshape(2, 2).T, ['refs_ok', 'buffered'],
1024
+ ['readwrite'], order='C')
1025
+ for x in i:
1026
+ x[...] = None
1027
+ vals, i, x = [None]*3
1028
+ assert_equal(sys.getrefcount(obj), rc-1)
1029
+ assert_equal(a, np.array([None]*4, dtype='O'))
1030
+
1031
+ def test_iter_object_arrays_conversions():
1032
+ # Conversions to/from objects
1033
+ a = np.arange(6, dtype='O')
1034
+ i = nditer(a, ['refs_ok', 'buffered'], ['readwrite'],
1035
+ casting='unsafe', op_dtypes='i4')
1036
+ for x in i:
1037
+ x[...] += 1
1038
+ assert_equal(a, np.arange(6)+1)
1039
+
1040
+ a = np.arange(6, dtype='i4')
1041
+ i = nditer(a, ['refs_ok', 'buffered'], ['readwrite'],
1042
+ casting='unsafe', op_dtypes='O')
1043
+ for x in i:
1044
+ x[...] += 1
1045
+ assert_equal(a, np.arange(6)+1)
1046
+
1047
+ # Non-contiguous object array
1048
+ a = np.zeros((6,), dtype=[('p', 'i1'), ('a', 'O')])
1049
+ a = a['a']
1050
+ a[:] = np.arange(6)
1051
+ i = nditer(a, ['refs_ok', 'buffered'], ['readwrite'],
1052
+ casting='unsafe', op_dtypes='i4')
1053
+ for x in i:
1054
+ x[...] += 1
1055
+ assert_equal(a, np.arange(6)+1)
1056
+
1057
+ #Non-contiguous value array
1058
+ a = np.zeros((6,), dtype=[('p', 'i1'), ('a', 'i4')])
1059
+ a = a['a']
1060
+ a[:] = np.arange(6) + 98172488
1061
+ i = nditer(a, ['refs_ok', 'buffered'], ['readwrite'],
1062
+ casting='unsafe', op_dtypes='O')
1063
+ ob = i[0][()]
1064
+ rc = sys.getrefcount(ob)
1065
+ for x in i:
1066
+ x[...] += 1
1067
+ assert_equal(sys.getrefcount(ob), rc-1)
1068
+ assert_equal(a, np.arange(6)+98172489)
1069
+
1070
+ def test_iter_common_dtype():
1071
+ # Check that the iterator finds a common data type correctly
1072
+
1073
+ i = nditer([array([3], dtype='f4'), array([0], dtype='f8')],
1074
+ ['common_dtype'],
1075
+ [['readonly', 'copy']]*2,
1076
+ casting='safe')
1077
+ assert_equal(i.dtypes[0], np.dtype('f8'))
1078
+ assert_equal(i.dtypes[1], np.dtype('f8'))
1079
+ i = nditer([array([3], dtype='i4'), array([0], dtype='f4')],
1080
+ ['common_dtype'],
1081
+ [['readonly', 'copy']]*2,
1082
+ casting='safe')
1083
+ assert_equal(i.dtypes[0], np.dtype('f8'))
1084
+ assert_equal(i.dtypes[1], np.dtype('f8'))
1085
+ i = nditer([array([3], dtype='f4'), array(0, dtype='f8')],
1086
+ ['common_dtype'],
1087
+ [['readonly', 'copy']]*2,
1088
+ casting='same_kind')
1089
+ assert_equal(i.dtypes[0], np.dtype('f4'))
1090
+ assert_equal(i.dtypes[1], np.dtype('f4'))
1091
+ i = nditer([array([3], dtype='u4'), array(0, dtype='i4')],
1092
+ ['common_dtype'],
1093
+ [['readonly', 'copy']]*2,
1094
+ casting='safe')
1095
+ assert_equal(i.dtypes[0], np.dtype('u4'))
1096
+ assert_equal(i.dtypes[1], np.dtype('u4'))
1097
+ i = nditer([array([3], dtype='u4'), array(-12, dtype='i4')],
1098
+ ['common_dtype'],
1099
+ [['readonly', 'copy']]*2,
1100
+ casting='safe')
1101
+ assert_equal(i.dtypes[0], np.dtype('i8'))
1102
+ assert_equal(i.dtypes[1], np.dtype('i8'))
1103
+ i = nditer([array([3], dtype='u4'), array(-12, dtype='i4'),
1104
+ array([2j], dtype='c8'), array([9], dtype='f8')],
1105
+ ['common_dtype'],
1106
+ [['readonly', 'copy']]*4,
1107
+ casting='safe')
1108
+ assert_equal(i.dtypes[0], np.dtype('c16'))
1109
+ assert_equal(i.dtypes[1], np.dtype('c16'))
1110
+ assert_equal(i.dtypes[2], np.dtype('c16'))
1111
+ assert_equal(i.dtypes[3], np.dtype('c16'))
1112
+ assert_equal(i.value, (3, -12, 2j, 9))
1113
+
1114
+ # When allocating outputs, other outputs aren't factored in
1115
+ i = nditer([array([3], dtype='i4'), None, array([2j], dtype='c16')], [],
1116
+ [['readonly', 'copy'],
1117
+ ['writeonly', 'allocate'],
1118
+ ['writeonly']],
1119
+ casting='safe')
1120
+ assert_equal(i.dtypes[0], np.dtype('i4'))
1121
+ assert_equal(i.dtypes[1], np.dtype('i4'))
1122
+ assert_equal(i.dtypes[2], np.dtype('c16'))
1123
+ # But, if common data types are requested, they are
1124
+ i = nditer([array([3], dtype='i4'), None, array([2j], dtype='c16')],
1125
+ ['common_dtype'],
1126
+ [['readonly', 'copy'],
1127
+ ['writeonly', 'allocate'],
1128
+ ['writeonly']],
1129
+ casting='safe')
1130
+ assert_equal(i.dtypes[0], np.dtype('c16'))
1131
+ assert_equal(i.dtypes[1], np.dtype('c16'))
1132
+ assert_equal(i.dtypes[2], np.dtype('c16'))
1133
+
1134
+ def test_iter_op_axes():
1135
+ # Check that custom axes work
1136
+
1137
+ # Reverse the axes
1138
+ a = arange(6).reshape(2, 3)
1139
+ i = nditer([a, a.T], [], [['readonly']]*2, op_axes=[[0, 1], [1, 0]])
1140
+ assert_(all([x == y for (x, y) in i]))
1141
+ a = arange(24).reshape(2, 3, 4)
1142
+ i = nditer([a.T, a], [], [['readonly']]*2, op_axes=[[2, 1, 0], None])
1143
+ assert_(all([x == y for (x, y) in i]))
1144
+
1145
+ # Broadcast 1D to any dimension
1146
+ a = arange(1, 31).reshape(2, 3, 5)
1147
+ b = arange(1, 3)
1148
+ i = nditer([a, b], [], [['readonly']]*2, op_axes=[None, [0, -1, -1]])
1149
+ assert_equal([x*y for (x, y) in i], (a*b.reshape(2, 1, 1)).ravel())
1150
+ b = arange(1, 4)
1151
+ i = nditer([a, b], [], [['readonly']]*2, op_axes=[None, [-1, 0, -1]])
1152
+ assert_equal([x*y for (x, y) in i], (a*b.reshape(1, 3, 1)).ravel())
1153
+ b = arange(1, 6)
1154
+ i = nditer([a, b], [], [['readonly']]*2,
1155
+ op_axes=[None, [np.newaxis, np.newaxis, 0]])
1156
+ assert_equal([x*y for (x, y) in i], (a*b.reshape(1, 1, 5)).ravel())
1157
+
1158
+ # Inner product-style broadcasting
1159
+ a = arange(24).reshape(2, 3, 4)
1160
+ b = arange(40).reshape(5, 2, 4)
1161
+ i = nditer([a, b], ['multi_index'], [['readonly']]*2,
1162
+ op_axes=[[0, 1, -1, -1], [-1, -1, 0, 1]])
1163
+ assert_equal(i.shape, (2, 3, 5, 2))
1164
+
1165
+ # Matrix product-style broadcasting
1166
+ a = arange(12).reshape(3, 4)
1167
+ b = arange(20).reshape(4, 5)
1168
+ i = nditer([a, b], ['multi_index'], [['readonly']]*2,
1169
+ op_axes=[[0, -1], [-1, 1]])
1170
+ assert_equal(i.shape, (3, 5))
1171
+
1172
+ def test_iter_op_axes_errors():
1173
+ # Check that custom axes throws errors for bad inputs
1174
+
1175
+ # Wrong number of items in op_axes
1176
+ a = arange(6).reshape(2, 3)
1177
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1178
+ op_axes=[[0], [1], [0]])
1179
+ # Out of bounds items in op_axes
1180
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1181
+ op_axes=[[2, 1], [0, 1]])
1182
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1183
+ op_axes=[[0, 1], [2, -1]])
1184
+ # Duplicate items in op_axes
1185
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1186
+ op_axes=[[0, 0], [0, 1]])
1187
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1188
+ op_axes=[[0, 1], [1, 1]])
1189
+
1190
+ # Different sized arrays in op_axes
1191
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1192
+ op_axes=[[0, 1], [0, 1, 0]])
1193
+
1194
+ # Non-broadcastable dimensions in the result
1195
+ assert_raises(ValueError, nditer, [a, a], [], [['readonly']]*2,
1196
+ op_axes=[[0, 1], [1, 0]])
1197
+
1198
+ def test_iter_copy():
1199
+ # Check that copying the iterator works correctly
1200
+ a = arange(24).reshape(2, 3, 4)
1201
+
1202
+ # Simple iterator
1203
+ i = nditer(a)
1204
+ j = i.copy()
1205
+ assert_equal([x[()] for x in i], [x[()] for x in j])
1206
+
1207
+ i.iterindex = 3
1208
+ j = i.copy()
1209
+ assert_equal([x[()] for x in i], [x[()] for x in j])
1210
+
1211
+ # Buffered iterator
1212
+ i = nditer(a, ['buffered', 'ranged'], order='F', buffersize=3)
1213
+ j = i.copy()
1214
+ assert_equal([x[()] for x in i], [x[()] for x in j])
1215
+
1216
+ i.iterindex = 3
1217
+ j = i.copy()
1218
+ assert_equal([x[()] for x in i], [x[()] for x in j])
1219
+
1220
+ i.iterrange = (3, 9)
1221
+ j = i.copy()
1222
+ assert_equal([x[()] for x in i], [x[()] for x in j])
1223
+
1224
+ i.iterrange = (2, 18)
1225
+ next(i)
1226
+ next(i)
1227
+ j = i.copy()
1228
+ assert_equal([x[()] for x in i], [x[()] for x in j])
1229
+
1230
+ # Casting iterator
1231
+ i = nditer(a, ['buffered'], order='F', casting='unsafe',
1232
+ op_dtypes='f8', buffersize=5)
1233
+ j = i.copy()
1234
+ i = None
1235
+ assert_equal([x[()] for x in j], a.ravel(order='F'))
1236
+
1237
+ a = arange(24, dtype='<i4').reshape(2, 3, 4)
1238
+ i = nditer(a, ['buffered'], order='F', casting='unsafe',
1239
+ op_dtypes='>f8', buffersize=5)
1240
+ j = i.copy()
1241
+ i = None
1242
+ assert_equal([x[()] for x in j], a.ravel(order='F'))
1243
+
1244
+ def test_iter_allocate_output_simple():
1245
+ # Check that the iterator will properly allocate outputs
1246
+
1247
+ # Simple case
1248
+ a = arange(6)
1249
+ i = nditer([a, None], [], [['readonly'], ['writeonly', 'allocate']],
1250
+ op_dtypes=[None, np.dtype('f4')])
1251
+ assert_equal(i.operands[1].shape, a.shape)
1252
+ assert_equal(i.operands[1].dtype, np.dtype('f4'))
1253
+
1254
+ def test_iter_allocate_output_buffered_readwrite():
1255
+ # Allocated output with buffering + delay_bufalloc
1256
+
1257
+ a = arange(6)
1258
+ i = nditer([a, None], ['buffered', 'delay_bufalloc'],
1259
+ [['readonly'], ['allocate', 'readwrite']])
1260
+ i.operands[1][:] = 1
1261
+ i.reset()
1262
+ for x in i:
1263
+ x[1][...] += x[0][...]
1264
+ assert_equal(i.operands[1], a+1)
1265
+
1266
+ def test_iter_allocate_output_itorder():
1267
+ # The allocated output should match the iteration order
1268
+
1269
+ # C-order input, best iteration order
1270
+ a = arange(6, dtype='i4').reshape(2, 3)
1271
+ i = nditer([a, None], [], [['readonly'], ['writeonly', 'allocate']],
1272
+ op_dtypes=[None, np.dtype('f4')])
1273
+ assert_equal(i.operands[1].shape, a.shape)
1274
+ assert_equal(i.operands[1].strides, a.strides)
1275
+ assert_equal(i.operands[1].dtype, np.dtype('f4'))
1276
+ # F-order input, best iteration order
1277
+ a = arange(24, dtype='i4').reshape(2, 3, 4).T
1278
+ i = nditer([a, None], [], [['readonly'], ['writeonly', 'allocate']],
1279
+ op_dtypes=[None, np.dtype('f4')])
1280
+ assert_equal(i.operands[1].shape, a.shape)
1281
+ assert_equal(i.operands[1].strides, a.strides)
1282
+ assert_equal(i.operands[1].dtype, np.dtype('f4'))
1283
+ # Non-contiguous input, C iteration order
1284
+ a = arange(24, dtype='i4').reshape(2, 3, 4).swapaxes(0, 1)
1285
+ i = nditer([a, None], [],
1286
+ [['readonly'], ['writeonly', 'allocate']],
1287
+ order='C',
1288
+ op_dtypes=[None, np.dtype('f4')])
1289
+ assert_equal(i.operands[1].shape, a.shape)
1290
+ assert_equal(i.operands[1].strides, (32, 16, 4))
1291
+ assert_equal(i.operands[1].dtype, np.dtype('f4'))
1292
+
1293
+ def test_iter_allocate_output_opaxes():
1294
+ # Specifing op_axes should work
1295
+
1296
+ a = arange(24, dtype='i4').reshape(2, 3, 4)
1297
+ i = nditer([None, a], [], [['writeonly', 'allocate'], ['readonly']],
1298
+ op_dtypes=[np.dtype('u4'), None],
1299
+ op_axes=[[1, 2, 0], None])
1300
+ assert_equal(i.operands[0].shape, (4, 2, 3))
1301
+ assert_equal(i.operands[0].strides, (4, 48, 16))
1302
+ assert_equal(i.operands[0].dtype, np.dtype('u4'))
1303
+
1304
+ def test_iter_allocate_output_types_promotion():
1305
+ # Check type promotion of automatic outputs
1306
+
1307
+ i = nditer([array([3], dtype='f4'), array([0], dtype='f8'), None], [],
1308
+ [['readonly']]*2+[['writeonly', 'allocate']])
1309
+ assert_equal(i.dtypes[2], np.dtype('f8'))
1310
+ i = nditer([array([3], dtype='i4'), array([0], dtype='f4'), None], [],
1311
+ [['readonly']]*2+[['writeonly', 'allocate']])
1312
+ assert_equal(i.dtypes[2], np.dtype('f8'))
1313
+ i = nditer([array([3], dtype='f4'), array(0, dtype='f8'), None], [],
1314
+ [['readonly']]*2+[['writeonly', 'allocate']])
1315
+ assert_equal(i.dtypes[2], np.dtype('f4'))
1316
+ i = nditer([array([3], dtype='u4'), array(0, dtype='i4'), None], [],
1317
+ [['readonly']]*2+[['writeonly', 'allocate']])
1318
+ assert_equal(i.dtypes[2], np.dtype('u4'))
1319
+ i = nditer([array([3], dtype='u4'), array(-12, dtype='i4'), None], [],
1320
+ [['readonly']]*2+[['writeonly', 'allocate']])
1321
+ assert_equal(i.dtypes[2], np.dtype('i8'))
1322
+
1323
+ def test_iter_allocate_output_types_byte_order():
1324
+ # Verify the rules for byte order changes
1325
+
1326
+ # When there's just one input, the output type exactly matches
1327
+ a = array([3], dtype='u4').newbyteorder()
1328
+ i = nditer([a, None], [],
1329
+ [['readonly'], ['writeonly', 'allocate']])
1330
+ assert_equal(i.dtypes[0], i.dtypes[1])
1331
+ # With two or more inputs, the output type is in native byte order
1332
+ i = nditer([a, a, None], [],
1333
+ [['readonly'], ['readonly'], ['writeonly', 'allocate']])
1334
+ assert_(i.dtypes[0] != i.dtypes[2])
1335
+ assert_equal(i.dtypes[0].newbyteorder('='), i.dtypes[2])
1336
+
1337
+ def test_iter_allocate_output_types_scalar():
1338
+ # If the inputs are all scalars, the output should be a scalar
1339
+
1340
+ i = nditer([None, 1, 2.3, np.float32(12), np.complex128(3)], [],
1341
+ [['writeonly', 'allocate']] + [['readonly']]*4)
1342
+ assert_equal(i.operands[0].dtype, np.dtype('complex128'))
1343
+ assert_equal(i.operands[0].ndim, 0)
1344
+
1345
+ def test_iter_allocate_output_subtype():
1346
+ # Make sure that the subtype with priority wins
1347
+
1348
+ # matrix vs ndarray
1349
+ a = np.matrix([[1, 2], [3, 4]])
1350
+ b = np.arange(4).reshape(2, 2).T
1351
+ i = nditer([a, b, None], [],
1352
+ [['readonly'], ['readonly'], ['writeonly', 'allocate']])
1353
+ assert_equal(type(a), type(i.operands[2]))
1354
+ assert_(type(b) != type(i.operands[2]))
1355
+ assert_equal(i.operands[2].shape, (2, 2))
1356
+
1357
+ # matrix always wants things to be 2D
1358
+ b = np.arange(4).reshape(1, 2, 2)
1359
+ assert_raises(RuntimeError, nditer, [a, b, None], [],
1360
+ [['readonly'], ['readonly'], ['writeonly', 'allocate']])
1361
+ # but if subtypes are disabled, the result can still work
1362
+ i = nditer([a, b, None], [],
1363
+ [['readonly'], ['readonly'], ['writeonly', 'allocate', 'no_subtype']])
1364
+ assert_equal(type(b), type(i.operands[2]))
1365
+ assert_(type(a) != type(i.operands[2]))
1366
+ assert_equal(i.operands[2].shape, (1, 2, 2))
1367
+
1368
+ def test_iter_allocate_output_errors():
1369
+ # Check that the iterator will throw errors for bad output allocations
1370
+
1371
+ # Need an input if no output data type is specified
1372
+ a = arange(6)
1373
+ assert_raises(TypeError, nditer, [a, None], [],
1374
+ [['writeonly'], ['writeonly', 'allocate']])
1375
+ # Allocated output should be flagged for writing
1376
+ assert_raises(ValueError, nditer, [a, None], [],
1377
+ [['readonly'], ['allocate', 'readonly']])
1378
+ # Allocated output can't have buffering without delayed bufalloc
1379
+ assert_raises(ValueError, nditer, [a, None], ['buffered'],
1380
+ ['allocate', 'readwrite'])
1381
+ # Must specify at least one input
1382
+ assert_raises(ValueError, nditer, [None, None], [],
1383
+ [['writeonly', 'allocate'],
1384
+ ['writeonly', 'allocate']],
1385
+ op_dtypes=[np.dtype('f4'), np.dtype('f4')])
1386
+ # If using op_axes, must specify all the axes
1387
+ a = arange(24, dtype='i4').reshape(2, 3, 4)
1388
+ assert_raises(ValueError, nditer, [a, None], [],
1389
+ [['readonly'], ['writeonly', 'allocate']],
1390
+ op_dtypes=[None, np.dtype('f4')],
1391
+ op_axes=[None, [0, np.newaxis, 1]])
1392
+ # If using op_axes, the axes must be within bounds
1393
+ assert_raises(ValueError, nditer, [a, None], [],
1394
+ [['readonly'], ['writeonly', 'allocate']],
1395
+ op_dtypes=[None, np.dtype('f4')],
1396
+ op_axes=[None, [0, 3, 1]])
1397
+ # If using op_axes, there can't be duplicates
1398
+ assert_raises(ValueError, nditer, [a, None], [],
1399
+ [['readonly'], ['writeonly', 'allocate']],
1400
+ op_dtypes=[None, np.dtype('f4')],
1401
+ op_axes=[None, [0, 2, 1, 0]])
1402
+
1403
+ def test_iter_remove_axis():
1404
+ a = arange(24).reshape(2, 3, 4)
1405
+
1406
+ i = nditer(a, ['multi_index'])
1407
+ i.remove_axis(1)
1408
+ assert_equal([x for x in i], a[:, 0,:].ravel())
1409
+
1410
+ a = a[::-1,:,:]
1411
+ i = nditer(a, ['multi_index'])
1412
+ i.remove_axis(0)
1413
+ assert_equal([x for x in i], a[0,:,:].ravel())
1414
+
1415
+ def test_iter_remove_multi_index_inner_loop():
1416
+ # Check that removing multi-index support works
1417
+
1418
+ a = arange(24).reshape(2, 3, 4)
1419
+
1420
+ i = nditer(a, ['multi_index'])
1421
+ assert_equal(i.ndim, 3)
1422
+ assert_equal(i.shape, (2, 3, 4))
1423
+ assert_equal(i.itviews[0].shape, (2, 3, 4))
1424
+
1425
+ # Removing the multi-index tracking causes all dimensions to coalesce
1426
+ before = [x for x in i]
1427
+ i.remove_multi_index()
1428
+ after = [x for x in i]
1429
+
1430
+ assert_equal(before, after)
1431
+ assert_equal(i.ndim, 1)
1432
+ assert_raises(ValueError, lambda i:i.shape, i)
1433
+ assert_equal(i.itviews[0].shape, (24,))
1434
+
1435
+ # Removing the inner loop means there's just one iteration
1436
+ i.reset()
1437
+ assert_equal(i.itersize, 24)
1438
+ assert_equal(i[0].shape, tuple())
1439
+ i.enable_external_loop()
1440
+ assert_equal(i.itersize, 24)
1441
+ assert_equal(i[0].shape, (24,))
1442
+ assert_equal(i.value, arange(24))
1443
+
1444
+ def test_iter_iterindex():
1445
+ # Make sure iterindex works
1446
+
1447
+ buffersize = 5
1448
+ a = arange(24).reshape(4, 3, 2)
1449
+ for flags in ([], ['buffered']):
1450
+ i = nditer(a, flags, buffersize=buffersize)
1451
+ assert_equal(iter_iterindices(i), list(range(24)))
1452
+ i.iterindex = 2
1453
+ assert_equal(iter_iterindices(i), list(range(2, 24)))
1454
+
1455
+ i = nditer(a, flags, order='F', buffersize=buffersize)
1456
+ assert_equal(iter_iterindices(i), list(range(24)))
1457
+ i.iterindex = 5
1458
+ assert_equal(iter_iterindices(i), list(range(5, 24)))
1459
+
1460
+ i = nditer(a[::-1], flags, order='F', buffersize=buffersize)
1461
+ assert_equal(iter_iterindices(i), list(range(24)))
1462
+ i.iterindex = 9
1463
+ assert_equal(iter_iterindices(i), list(range(9, 24)))
1464
+
1465
+ i = nditer(a[::-1, ::-1], flags, order='C', buffersize=buffersize)
1466
+ assert_equal(iter_iterindices(i), list(range(24)))
1467
+ i.iterindex = 13
1468
+ assert_equal(iter_iterindices(i), list(range(13, 24)))
1469
+
1470
+ i = nditer(a[::1, ::-1], flags, buffersize=buffersize)
1471
+ assert_equal(iter_iterindices(i), list(range(24)))
1472
+ i.iterindex = 23
1473
+ assert_equal(iter_iterindices(i), list(range(23, 24)))
1474
+ i.reset()
1475
+ i.iterindex = 2
1476
+ assert_equal(iter_iterindices(i), list(range(2, 24)))
1477
+
1478
+ def test_iter_iterrange():
1479
+ # Make sure getting and resetting the iterrange works
1480
+
1481
+ buffersize = 5
1482
+ a = arange(24, dtype='i4').reshape(4, 3, 2)
1483
+ a_fort = a.ravel(order='F')
1484
+
1485
+ i = nditer(a, ['ranged'], ['readonly'], order='F',
1486
+ buffersize=buffersize)
1487
+ assert_equal(i.iterrange, (0, 24))
1488
+ assert_equal([x[()] for x in i], a_fort)
1489
+ for r in [(0, 24), (1, 2), (3, 24), (5, 5), (0, 20), (23, 24)]:
1490
+ i.iterrange = r
1491
+ assert_equal(i.iterrange, r)
1492
+ assert_equal([x[()] for x in i], a_fort[r[0]:r[1]])
1493
+
1494
+ i = nditer(a, ['ranged', 'buffered'], ['readonly'], order='F',
1495
+ op_dtypes='f8', buffersize=buffersize)
1496
+ assert_equal(i.iterrange, (0, 24))
1497
+ assert_equal([x[()] for x in i], a_fort)
1498
+ for r in [(0, 24), (1, 2), (3, 24), (5, 5), (0, 20), (23, 24)]:
1499
+ i.iterrange = r
1500
+ assert_equal(i.iterrange, r)
1501
+ assert_equal([x[()] for x in i], a_fort[r[0]:r[1]])
1502
+
1503
+ def get_array(i):
1504
+ val = np.array([], dtype='f8')
1505
+ for x in i:
1506
+ val = np.concatenate((val, x))
1507
+ return val
1508
+
1509
+ i = nditer(a, ['ranged', 'buffered', 'external_loop'],
1510
+ ['readonly'], order='F',
1511
+ op_dtypes='f8', buffersize=buffersize)
1512
+ assert_equal(i.iterrange, (0, 24))
1513
+ assert_equal(get_array(i), a_fort)
1514
+ for r in [(0, 24), (1, 2), (3, 24), (5, 5), (0, 20), (23, 24)]:
1515
+ i.iterrange = r
1516
+ assert_equal(i.iterrange, r)
1517
+ assert_equal(get_array(i), a_fort[r[0]:r[1]])
1518
+
1519
+ def test_iter_buffering():
1520
+ # Test buffering with several buffer sizes and types
1521
+ arrays = []
1522
+ # F-order swapped array
1523
+ arrays.append(np.arange(24,
1524
+ dtype='c16').reshape(2, 3, 4).T.newbyteorder().byteswap())
1525
+ # Contiguous 1-dimensional array
1526
+ arrays.append(np.arange(10, dtype='f4'))
1527
+ # Unaligned array
1528
+ a = np.zeros((4*16+1,), dtype='i1')[1:]
1529
+ a.dtype = 'i4'
1530
+ a[:] = np.arange(16, dtype='i4')
1531
+ arrays.append(a)
1532
+ # 4-D F-order array
1533
+ arrays.append(np.arange(120, dtype='i4').reshape(5, 3, 2, 4).T)
1534
+ for a in arrays:
1535
+ for buffersize in (1, 2, 3, 5, 8, 11, 16, 1024):
1536
+ vals = []
1537
+ i = nditer(a, ['buffered', 'external_loop'],
1538
+ [['readonly', 'nbo', 'aligned']],
1539
+ order='C',
1540
+ casting='equiv',
1541
+ buffersize=buffersize)
1542
+ while not i.finished:
1543
+ assert_(i[0].size <= buffersize)
1544
+ vals.append(i[0].copy())
1545
+ i.iternext()
1546
+ assert_equal(np.concatenate(vals), a.ravel(order='C'))
1547
+
1548
+ def test_iter_write_buffering():
1549
+ # Test that buffering of writes is working
1550
+
1551
+ # F-order swapped array
1552
+ a = np.arange(24).reshape(2, 3, 4).T.newbyteorder().byteswap()
1553
+ i = nditer(a, ['buffered'],
1554
+ [['readwrite', 'nbo', 'aligned']],
1555
+ casting='equiv',
1556
+ order='C',
1557
+ buffersize=16)
1558
+ x = 0
1559
+ while not i.finished:
1560
+ i[0] = x
1561
+ x += 1
1562
+ i.iternext()
1563
+ assert_equal(a.ravel(order='C'), np.arange(24))
1564
+
1565
+ def test_iter_buffering_delayed_alloc():
1566
+ # Test that delaying buffer allocation works
1567
+
1568
+ a = np.arange(6)
1569
+ b = np.arange(1, dtype='f4')
1570
+ i = nditer([a, b], ['buffered', 'delay_bufalloc', 'multi_index', 'reduce_ok'],
1571
+ ['readwrite'],
1572
+ casting='unsafe',
1573
+ op_dtypes='f4')
1574
+ assert_(i.has_delayed_bufalloc)
1575
+ assert_raises(ValueError, lambda i:i.multi_index, i)
1576
+ assert_raises(ValueError, lambda i:i[0], i)
1577
+ assert_raises(ValueError, lambda i:i[0:2], i)
1578
+
1579
+ def assign_iter(i):
1580
+ i[0] = 0
1581
+ assert_raises(ValueError, assign_iter, i)
1582
+
1583
+ i.reset()
1584
+ assert_(not i.has_delayed_bufalloc)
1585
+ assert_equal(i.multi_index, (0,))
1586
+ assert_equal(i[0], 0)
1587
+ i[1] = 1
1588
+ assert_equal(i[0:2], [0, 1])
1589
+ assert_equal([[x[0][()], x[1][()]] for x in i], list(zip(range(6), [1]*6)))
1590
+
1591
+ def test_iter_buffered_cast_simple():
1592
+ # Test that buffering can handle a simple cast
1593
+
1594
+ a = np.arange(10, dtype='f4')
1595
+ i = nditer(a, ['buffered', 'external_loop'],
1596
+ [['readwrite', 'nbo', 'aligned']],
1597
+ casting='same_kind',
1598
+ op_dtypes=[np.dtype('f8')],
1599
+ buffersize=3)
1600
+ for v in i:
1601
+ v[...] *= 2
1602
+
1603
+ assert_equal(a, 2*np.arange(10, dtype='f4'))
1604
+
1605
+ def test_iter_buffered_cast_byteswapped():
1606
+ # Test that buffering can handle a cast which requires swap->cast->swap
1607
+
1608
+ a = np.arange(10, dtype='f4').newbyteorder().byteswap()
1609
+ i = nditer(a, ['buffered', 'external_loop'],
1610
+ [['readwrite', 'nbo', 'aligned']],
1611
+ casting='same_kind',
1612
+ op_dtypes=[np.dtype('f8').newbyteorder()],
1613
+ buffersize=3)
1614
+ for v in i:
1615
+ v[...] *= 2
1616
+
1617
+ assert_equal(a, 2*np.arange(10, dtype='f4'))
1618
+
1619
+ try:
1620
+ warnings.simplefilter("ignore", np.ComplexWarning)
1621
+
1622
+ a = np.arange(10, dtype='f8').newbyteorder().byteswap()
1623
+ i = nditer(a, ['buffered', 'external_loop'],
1624
+ [['readwrite', 'nbo', 'aligned']],
1625
+ casting='unsafe',
1626
+ op_dtypes=[np.dtype('c8').newbyteorder()],
1627
+ buffersize=3)
1628
+ for v in i:
1629
+ v[...] *= 2
1630
+
1631
+ assert_equal(a, 2*np.arange(10, dtype='f8'))
1632
+ finally:
1633
+ warnings.simplefilter("default", np.ComplexWarning)
1634
+
1635
+ def test_iter_buffered_cast_byteswapped_complex():
1636
+ # Test that buffering can handle a cast which requires swap->cast->copy
1637
+
1638
+ a = np.arange(10, dtype='c8').newbyteorder().byteswap()
1639
+ a += 2j
1640
+ i = nditer(a, ['buffered', 'external_loop'],
1641
+ [['readwrite', 'nbo', 'aligned']],
1642
+ casting='same_kind',
1643
+ op_dtypes=[np.dtype('c16')],
1644
+ buffersize=3)
1645
+ for v in i:
1646
+ v[...] *= 2
1647
+ assert_equal(a, 2*np.arange(10, dtype='c8') + 4j)
1648
+
1649
+ a = np.arange(10, dtype='c8')
1650
+ a += 2j
1651
+ i = nditer(a, ['buffered', 'external_loop'],
1652
+ [['readwrite', 'nbo', 'aligned']],
1653
+ casting='same_kind',
1654
+ op_dtypes=[np.dtype('c16').newbyteorder()],
1655
+ buffersize=3)
1656
+ for v in i:
1657
+ v[...] *= 2
1658
+ assert_equal(a, 2*np.arange(10, dtype='c8') + 4j)
1659
+
1660
+ a = np.arange(10, dtype=np.clongdouble).newbyteorder().byteswap()
1661
+ a += 2j
1662
+ i = nditer(a, ['buffered', 'external_loop'],
1663
+ [['readwrite', 'nbo', 'aligned']],
1664
+ casting='same_kind',
1665
+ op_dtypes=[np.dtype('c16')],
1666
+ buffersize=3)
1667
+ for v in i:
1668
+ v[...] *= 2
1669
+ assert_equal(a, 2*np.arange(10, dtype=np.clongdouble) + 4j)
1670
+
1671
+ a = np.arange(10, dtype=np.longdouble).newbyteorder().byteswap()
1672
+ i = nditer(a, ['buffered', 'external_loop'],
1673
+ [['readwrite', 'nbo', 'aligned']],
1674
+ casting='same_kind',
1675
+ op_dtypes=[np.dtype('f4')],
1676
+ buffersize=7)
1677
+ for v in i:
1678
+ v[...] *= 2
1679
+ assert_equal(a, 2*np.arange(10, dtype=np.longdouble))
1680
+
1681
+ def test_iter_buffered_cast_structured_type():
1682
+ # Tests buffering of structured types
1683
+
1684
+ # simple -> struct type (duplicates the value)
1685
+ sdt = [('a', 'f4'), ('b', 'i8'), ('c', 'c8', (2, 3)), ('d', 'O')]
1686
+ a = np.arange(3, dtype='f4') + 0.5
1687
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1688
+ casting='unsafe',
1689
+ op_dtypes=sdt)
1690
+ vals = [np.array(x) for x in i]
1691
+ assert_equal(vals[0]['a'], 0.5)
1692
+ assert_equal(vals[0]['b'], 0)
1693
+ assert_equal(vals[0]['c'], [[(0.5)]*3]*2)
1694
+ assert_equal(vals[0]['d'], 0.5)
1695
+ assert_equal(vals[1]['a'], 1.5)
1696
+ assert_equal(vals[1]['b'], 1)
1697
+ assert_equal(vals[1]['c'], [[(1.5)]*3]*2)
1698
+ assert_equal(vals[1]['d'], 1.5)
1699
+ assert_equal(vals[0].dtype, np.dtype(sdt))
1700
+
1701
+ # object -> struct type
1702
+ sdt = [('a', 'f4'), ('b', 'i8'), ('c', 'c8', (2, 3)), ('d', 'O')]
1703
+ a = np.zeros((3,), dtype='O')
1704
+ a[0] = (0.5, 0.5, [[0.5, 0.5, 0.5], [0.5, 0.5, 0.5]], 0.5)
1705
+ a[1] = (1.5, 1.5, [[1.5, 1.5, 1.5], [1.5, 1.5, 1.5]], 1.5)
1706
+ a[2] = (2.5, 2.5, [[2.5, 2.5, 2.5], [2.5, 2.5, 2.5]], 2.5)
1707
+ rc = sys.getrefcount(a[0])
1708
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1709
+ casting='unsafe',
1710
+ op_dtypes=sdt)
1711
+ vals = [x.copy() for x in i]
1712
+ assert_equal(vals[0]['a'], 0.5)
1713
+ assert_equal(vals[0]['b'], 0)
1714
+ assert_equal(vals[0]['c'], [[(0.5)]*3]*2)
1715
+ assert_equal(vals[0]['d'], 0.5)
1716
+ assert_equal(vals[1]['a'], 1.5)
1717
+ assert_equal(vals[1]['b'], 1)
1718
+ assert_equal(vals[1]['c'], [[(1.5)]*3]*2)
1719
+ assert_equal(vals[1]['d'], 1.5)
1720
+ assert_equal(vals[0].dtype, np.dtype(sdt))
1721
+ vals, i, x = [None]*3
1722
+ assert_equal(sys.getrefcount(a[0]), rc)
1723
+
1724
+ # struct type -> simple (takes the first value)
1725
+ sdt = [('a', 'f4'), ('b', 'i8'), ('d', 'O')]
1726
+ a = np.array([(5.5, 7, 'test'), (8, 10, 11)], dtype=sdt)
1727
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1728
+ casting='unsafe',
1729
+ op_dtypes='i4')
1730
+ assert_equal([x_[()] for x_ in i], [5, 8])
1731
+
1732
+ # struct type -> struct type (field-wise copy)
1733
+ sdt1 = [('a', 'f4'), ('b', 'i8'), ('d', 'O')]
1734
+ sdt2 = [('d', 'u2'), ('a', 'O'), ('b', 'f8')]
1735
+ a = np.array([(1, 2, 3), (4, 5, 6)], dtype=sdt1)
1736
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1737
+ casting='unsafe',
1738
+ op_dtypes=sdt2)
1739
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1740
+ assert_equal([np.array(x_) for x_ in i],
1741
+ [np.array((3, 1, 2), dtype=sdt2),
1742
+ np.array((6, 4, 5), dtype=sdt2)])
1743
+
1744
+ # struct type -> struct type (field gets discarded)
1745
+ sdt1 = [('a', 'f4'), ('b', 'i8'), ('d', 'O')]
1746
+ sdt2 = [('b', 'O'), ('a', 'f8')]
1747
+ a = np.array([(1, 2, 3), (4, 5, 6)], dtype=sdt1)
1748
+ i = nditer(a, ['buffered', 'refs_ok'], ['readwrite'],
1749
+ casting='unsafe',
1750
+ op_dtypes=sdt2)
1751
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1752
+ vals = []
1753
+ for x in i:
1754
+ vals.append(np.array(x))
1755
+ x['a'] = x['b']+3
1756
+ assert_equal(vals, [np.array((2, 1), dtype=sdt2),
1757
+ np.array((5, 4), dtype=sdt2)])
1758
+ assert_equal(a, np.array([(5, 2, None), (8, 5, None)], dtype=sdt1))
1759
+
1760
+ # struct type -> struct type (structured field gets discarded)
1761
+ sdt1 = [('a', 'f4'), ('b', 'i8'), ('d', [('a', 'i2'), ('b', 'i4')])]
1762
+ sdt2 = [('b', 'O'), ('a', 'f8')]
1763
+ a = np.array([(1, 2, (0, 9)), (4, 5, (20, 21))], dtype=sdt1)
1764
+ i = nditer(a, ['buffered', 'refs_ok'], ['readwrite'],
1765
+ casting='unsafe',
1766
+ op_dtypes=sdt2)
1767
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1768
+ vals = []
1769
+ for x in i:
1770
+ vals.append(np.array(x))
1771
+ x['a'] = x['b']+3
1772
+ assert_equal(vals, [np.array((2, 1), dtype=sdt2),
1773
+ np.array((5, 4), dtype=sdt2)])
1774
+ assert_equal(a, np.array([(5, 2, (0, 0)), (8, 5, (0, 0))], dtype=sdt1))
1775
+
1776
+ # struct type -> struct type (structured field w/ ref gets discarded)
1777
+ sdt1 = [('a', 'f4'), ('b', 'i8'), ('d', [('a', 'i2'), ('b', 'O')])]
1778
+ sdt2 = [('b', 'O'), ('a', 'f8')]
1779
+ a = np.array([(1, 2, (0, 9)), (4, 5, (20, 21))], dtype=sdt1)
1780
+ i = nditer(a, ['buffered', 'refs_ok'], ['readwrite'],
1781
+ casting='unsafe',
1782
+ op_dtypes=sdt2)
1783
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1784
+ vals = []
1785
+ for x in i:
1786
+ vals.append(np.array(x))
1787
+ x['a'] = x['b']+3
1788
+ assert_equal(vals, [np.array((2, 1), dtype=sdt2),
1789
+ np.array((5, 4), dtype=sdt2)])
1790
+ assert_equal(a, np.array([(5, 2, (0, None)), (8, 5, (0, None))], dtype=sdt1))
1791
+
1792
+ # struct type -> struct type back (structured field w/ ref gets discarded)
1793
+ sdt1 = [('b', 'O'), ('a', 'f8')]
1794
+ sdt2 = [('a', 'f4'), ('b', 'i8'), ('d', [('a', 'i2'), ('b', 'O')])]
1795
+ a = np.array([(1, 2), (4, 5)], dtype=sdt1)
1796
+ i = nditer(a, ['buffered', 'refs_ok'], ['readwrite'],
1797
+ casting='unsafe',
1798
+ op_dtypes=sdt2)
1799
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1800
+ vals = []
1801
+ for x in i:
1802
+ vals.append(np.array(x))
1803
+ assert_equal(x['d'], np.array((0, None), dtype=[('a', 'i2'), ('b', 'O')]))
1804
+ x['a'] = x['b']+3
1805
+ assert_equal(vals, [np.array((2, 1, (0, None)), dtype=sdt2),
1806
+ np.array((5, 4, (0, None)), dtype=sdt2)])
1807
+ assert_equal(a, np.array([(1, 4), (4, 7)], dtype=sdt1))
1808
+
1809
+ def test_iter_buffered_cast_subarray():
1810
+ # Tests buffering of subarrays
1811
+
1812
+ # one element -> many (copies it to all)
1813
+ sdt1 = [('a', 'f4')]
1814
+ sdt2 = [('a', 'f8', (3, 2, 2))]
1815
+ a = np.zeros((6,), dtype=sdt1)
1816
+ a['a'] = np.arange(6)
1817
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1818
+ casting='unsafe',
1819
+ op_dtypes=sdt2)
1820
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1821
+ for x, count in zip(i, list(range(6))):
1822
+ assert_(np.all(x['a'] == count))
1823
+
1824
+ # one element -> many -> back (copies it to all)
1825
+ sdt1 = [('a', 'O', (1, 1))]
1826
+ sdt2 = [('a', 'O', (3, 2, 2))]
1827
+ a = np.zeros((6,), dtype=sdt1)
1828
+ a['a'][:, 0, 0] = np.arange(6)
1829
+ i = nditer(a, ['buffered', 'refs_ok'], ['readwrite'],
1830
+ casting='unsafe',
1831
+ op_dtypes=sdt2)
1832
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1833
+ count = 0
1834
+ for x in i:
1835
+ assert_(np.all(x['a'] == count))
1836
+ x['a'][0] += 2
1837
+ count += 1
1838
+ assert_equal(a['a'], np.arange(6).reshape(6, 1, 1)+2)
1839
+
1840
+ # many -> one element -> back (copies just element 0)
1841
+ sdt1 = [('a', 'O', (3, 2, 2))]
1842
+ sdt2 = [('a', 'O', (1,))]
1843
+ a = np.zeros((6,), dtype=sdt1)
1844
+ a['a'][:, 0, 0, 0] = np.arange(6)
1845
+ i = nditer(a, ['buffered', 'refs_ok'], ['readwrite'],
1846
+ casting='unsafe',
1847
+ op_dtypes=sdt2)
1848
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1849
+ count = 0
1850
+ for x in i:
1851
+ assert_equal(x['a'], count)
1852
+ x['a'] += 2
1853
+ count += 1
1854
+ assert_equal(a['a'], np.arange(6).reshape(6, 1, 1, 1)*np.ones((1, 3, 2, 2))+2)
1855
+
1856
+ # many -> one element -> back (copies just element 0)
1857
+ sdt1 = [('a', 'f8', (3, 2, 2))]
1858
+ sdt2 = [('a', 'O', (1,))]
1859
+ a = np.zeros((6,), dtype=sdt1)
1860
+ a['a'][:, 0, 0, 0] = np.arange(6)
1861
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1862
+ casting='unsafe',
1863
+ op_dtypes=sdt2)
1864
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1865
+ count = 0
1866
+ for x in i:
1867
+ assert_equal(x['a'], count)
1868
+ count += 1
1869
+
1870
+ # many -> one element (copies just element 0)
1871
+ sdt1 = [('a', 'O', (3, 2, 2))]
1872
+ sdt2 = [('a', 'f4', (1,))]
1873
+ a = np.zeros((6,), dtype=sdt1)
1874
+ a['a'][:, 0, 0, 0] = np.arange(6)
1875
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1876
+ casting='unsafe',
1877
+ op_dtypes=sdt2)
1878
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1879
+ count = 0
1880
+ for x in i:
1881
+ assert_equal(x['a'], count)
1882
+ count += 1
1883
+
1884
+ # many -> matching shape (straightforward copy)
1885
+ sdt1 = [('a', 'O', (3, 2, 2))]
1886
+ sdt2 = [('a', 'f4', (3, 2, 2))]
1887
+ a = np.zeros((6,), dtype=sdt1)
1888
+ a['a'] = np.arange(6*3*2*2).reshape(6, 3, 2, 2)
1889
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1890
+ casting='unsafe',
1891
+ op_dtypes=sdt2)
1892
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1893
+ count = 0
1894
+ for x in i:
1895
+ assert_equal(x['a'], a[count]['a'])
1896
+ count += 1
1897
+
1898
+ # vector -> smaller vector (truncates)
1899
+ sdt1 = [('a', 'f8', (6,))]
1900
+ sdt2 = [('a', 'f4', (2,))]
1901
+ a = np.zeros((6,), dtype=sdt1)
1902
+ a['a'] = np.arange(6*6).reshape(6, 6)
1903
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1904
+ casting='unsafe',
1905
+ op_dtypes=sdt2)
1906
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1907
+ count = 0
1908
+ for x in i:
1909
+ assert_equal(x['a'], a[count]['a'][:2])
1910
+ count += 1
1911
+
1912
+ # vector -> bigger vector (pads with zeros)
1913
+ sdt1 = [('a', 'f8', (2,))]
1914
+ sdt2 = [('a', 'f4', (6,))]
1915
+ a = np.zeros((6,), dtype=sdt1)
1916
+ a['a'] = np.arange(6*2).reshape(6, 2)
1917
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1918
+ casting='unsafe',
1919
+ op_dtypes=sdt2)
1920
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1921
+ count = 0
1922
+ for x in i:
1923
+ assert_equal(x['a'][:2], a[count]['a'])
1924
+ assert_equal(x['a'][2:], [0, 0, 0, 0])
1925
+ count += 1
1926
+
1927
+ # vector -> matrix (broadcasts)
1928
+ sdt1 = [('a', 'f8', (2,))]
1929
+ sdt2 = [('a', 'f4', (2, 2))]
1930
+ a = np.zeros((6,), dtype=sdt1)
1931
+ a['a'] = np.arange(6*2).reshape(6, 2)
1932
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1933
+ casting='unsafe',
1934
+ op_dtypes=sdt2)
1935
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1936
+ count = 0
1937
+ for x in i:
1938
+ assert_equal(x['a'][0], a[count]['a'])
1939
+ assert_equal(x['a'][1], a[count]['a'])
1940
+ count += 1
1941
+
1942
+ # vector -> matrix (broadcasts and zero-pads)
1943
+ sdt1 = [('a', 'f8', (2, 1))]
1944
+ sdt2 = [('a', 'f4', (3, 2))]
1945
+ a = np.zeros((6,), dtype=sdt1)
1946
+ a['a'] = np.arange(6*2).reshape(6, 2, 1)
1947
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1948
+ casting='unsafe',
1949
+ op_dtypes=sdt2)
1950
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1951
+ count = 0
1952
+ for x in i:
1953
+ assert_equal(x['a'][:2, 0], a[count]['a'][:, 0])
1954
+ assert_equal(x['a'][:2, 1], a[count]['a'][:, 0])
1955
+ assert_equal(x['a'][2,:], [0, 0])
1956
+ count += 1
1957
+
1958
+ # matrix -> matrix (truncates and zero-pads)
1959
+ sdt1 = [('a', 'f8', (2, 3))]
1960
+ sdt2 = [('a', 'f4', (3, 2))]
1961
+ a = np.zeros((6,), dtype=sdt1)
1962
+ a['a'] = np.arange(6*2*3).reshape(6, 2, 3)
1963
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
1964
+ casting='unsafe',
1965
+ op_dtypes=sdt2)
1966
+ assert_equal(i[0].dtype, np.dtype(sdt2))
1967
+ count = 0
1968
+ for x in i:
1969
+ assert_equal(x['a'][:2, 0], a[count]['a'][:, 0])
1970
+ assert_equal(x['a'][:2, 1], a[count]['a'][:, 1])
1971
+ assert_equal(x['a'][2,:], [0, 0])
1972
+ count += 1
1973
+
1974
+ def test_iter_buffering_badwriteback():
1975
+ # Writing back from a buffer cannot combine elements
1976
+
1977
+ # a needs write buffering, but had a broadcast dimension
1978
+ a = np.arange(6).reshape(2, 3, 1)
1979
+ b = np.arange(12).reshape(2, 3, 2)
1980
+ assert_raises(ValueError, nditer, [a, b],
1981
+ ['buffered', 'external_loop'],
1982
+ [['readwrite'], ['writeonly']],
1983
+ order='C')
1984
+
1985
+ # But if a is readonly, it's fine
1986
+ nditer([a, b], ['buffered', 'external_loop'],
1987
+ [['readonly'], ['writeonly']],
1988
+ order='C')
1989
+
1990
+ # If a has just one element, it's fine too (constant 0 stride, a reduction)
1991
+ a = np.arange(1).reshape(1, 1, 1)
1992
+ nditer([a, b], ['buffered', 'external_loop', 'reduce_ok'],
1993
+ [['readwrite'], ['writeonly']],
1994
+ order='C')
1995
+
1996
+ # check that it fails on other dimensions too
1997
+ a = np.arange(6).reshape(1, 3, 2)
1998
+ assert_raises(ValueError, nditer, [a, b],
1999
+ ['buffered', 'external_loop'],
2000
+ [['readwrite'], ['writeonly']],
2001
+ order='C')
2002
+ a = np.arange(4).reshape(2, 1, 2)
2003
+ assert_raises(ValueError, nditer, [a, b],
2004
+ ['buffered', 'external_loop'],
2005
+ [['readwrite'], ['writeonly']],
2006
+ order='C')
2007
+
2008
+ def test_iter_buffering_string():
2009
+ # Safe casting disallows shrinking strings
2010
+ a = np.array(['abc', 'a', 'abcd'], dtype=np.bytes_)
2011
+ assert_equal(a.dtype, np.dtype('S4'))
2012
+ assert_raises(TypeError, nditer, a, ['buffered'], ['readonly'],
2013
+ op_dtypes='S2')
2014
+ i = nditer(a, ['buffered'], ['readonly'], op_dtypes='S6')
2015
+ assert_equal(i[0], asbytes('abc'))
2016
+ assert_equal(i[0].dtype, np.dtype('S6'))
2017
+
2018
+ a = np.array(['abc', 'a', 'abcd'], dtype=np.unicode)
2019
+ assert_equal(a.dtype, np.dtype('U4'))
2020
+ assert_raises(TypeError, nditer, a, ['buffered'], ['readonly'],
2021
+ op_dtypes='U2')
2022
+ i = nditer(a, ['buffered'], ['readonly'], op_dtypes='U6')
2023
+ assert_equal(i[0], sixu('abc'))
2024
+ assert_equal(i[0].dtype, np.dtype('U6'))
2025
+
2026
+ def test_iter_buffering_growinner():
2027
+ # Test that the inner loop grows when no buffering is needed
2028
+ a = np.arange(30)
2029
+ i = nditer(a, ['buffered', 'growinner', 'external_loop'],
2030
+ buffersize=5)
2031
+ # Should end up with just one inner loop here
2032
+ assert_equal(i[0].size, a.size)
2033
+
2034
+
2035
+ @dec.slow
2036
+ def test_iter_buffered_reduce_reuse():
2037
+ # large enough array for all views, including negative strides.
2038
+ a = np.arange(2*3**5)[3**5:3**5+1]
2039
+ flags = ['buffered', 'delay_bufalloc', 'multi_index', 'reduce_ok', 'refs_ok']
2040
+ op_flags = [('readonly',), ('readwrite', 'allocate')]
2041
+ op_axes_list = [[(0, 1, 2), (0, 1, -1)], [(0, 1, 2), (0, -1, -1)]]
2042
+ # wrong dtype to force buffering
2043
+ op_dtypes = [np.float, a.dtype]
2044
+
2045
+ def get_params():
2046
+ for xs in range(-3**2, 3**2 + 1):
2047
+ for ys in range(xs, 3**2 + 1):
2048
+ for op_axes in op_axes_list:
2049
+ # last stride is reduced and because of that not
2050
+ # important for this test, as it is the inner stride.
2051
+ strides = (xs * a.itemsize, ys * a.itemsize, a.itemsize)
2052
+ arr = np.lib.stride_tricks.as_strided(a, (3, 3, 3), strides)
2053
+
2054
+ for skip in [0, 1]:
2055
+ yield arr, op_axes, skip
2056
+
2057
+ for arr, op_axes, skip in get_params():
2058
+ nditer2 = np.nditer([arr.copy(), None],
2059
+ op_axes=op_axes, flags=flags, op_flags=op_flags,
2060
+ op_dtypes=op_dtypes)
2061
+ nditer2.operands[-1][...] = 0
2062
+ nditer2.reset()
2063
+ nditer2.iterindex = skip
2064
+
2065
+ for (a2_in, b2_in) in nditer2:
2066
+ b2_in += a2_in.astype(np.int_)
2067
+
2068
+ comp_res = nditer2.operands[-1]
2069
+
2070
+ for bufsize in range(0, 3**3):
2071
+ nditer1 = np.nditer([arr, None],
2072
+ op_axes=op_axes, flags=flags, op_flags=op_flags,
2073
+ buffersize=bufsize, op_dtypes=op_dtypes)
2074
+ nditer1.operands[-1][...] = 0
2075
+ nditer1.reset()
2076
+ nditer1.iterindex = skip
2077
+
2078
+ for (a1_in, b1_in) in nditer1:
2079
+ b1_in += a1_in.astype(np.int_)
2080
+
2081
+ res = nditer1.operands[-1]
2082
+ assert_array_equal(res, comp_res)
2083
+
2084
+
2085
+ def test_iter_no_broadcast():
2086
+ # Test that the no_broadcast flag works
2087
+ a = np.arange(24).reshape(2, 3, 4)
2088
+ b = np.arange(6).reshape(2, 3, 1)
2089
+ c = np.arange(12).reshape(3, 4)
2090
+
2091
+ nditer([a, b, c], [],
2092
+ [['readonly', 'no_broadcast'],
2093
+ ['readonly'], ['readonly']])
2094
+ assert_raises(ValueError, nditer, [a, b, c], [],
2095
+ [['readonly'], ['readonly', 'no_broadcast'], ['readonly']])
2096
+ assert_raises(ValueError, nditer, [a, b, c], [],
2097
+ [['readonly'], ['readonly'], ['readonly', 'no_broadcast']])
2098
+
2099
+ def test_iter_nested_iters_basic():
2100
+ # Test nested iteration basic usage
2101
+ a = arange(12).reshape(2, 3, 2)
2102
+
2103
+ i, j = np.nested_iters(a, [[0], [1, 2]])
2104
+ vals = []
2105
+ for x in i:
2106
+ vals.append([y for y in j])
2107
+ assert_equal(vals, [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]])
2108
+
2109
+ i, j = np.nested_iters(a, [[0, 1], [2]])
2110
+ vals = []
2111
+ for x in i:
2112
+ vals.append([y for y in j])
2113
+ assert_equal(vals, [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10, 11]])
2114
+
2115
+ i, j = np.nested_iters(a, [[0, 2], [1]])
2116
+ vals = []
2117
+ for x in i:
2118
+ vals.append([y for y in j])
2119
+ assert_equal(vals, [[0, 2, 4], [1, 3, 5], [6, 8, 10], [7, 9, 11]])
2120
+
2121
+ def test_iter_nested_iters_reorder():
2122
+ # Test nested iteration basic usage
2123
+ a = arange(12).reshape(2, 3, 2)
2124
+
2125
+ # In 'K' order (default), it gets reordered
2126
+ i, j = np.nested_iters(a, [[0], [2, 1]])
2127
+ vals = []
2128
+ for x in i:
2129
+ vals.append([y for y in j])
2130
+ assert_equal(vals, [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]])
2131
+
2132
+ i, j = np.nested_iters(a, [[1, 0], [2]])
2133
+ vals = []
2134
+ for x in i:
2135
+ vals.append([y for y in j])
2136
+ assert_equal(vals, [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10, 11]])
2137
+
2138
+ i, j = np.nested_iters(a, [[2, 0], [1]])
2139
+ vals = []
2140
+ for x in i:
2141
+ vals.append([y for y in j])
2142
+ assert_equal(vals, [[0, 2, 4], [1, 3, 5], [6, 8, 10], [7, 9, 11]])
2143
+
2144
+ # In 'C' order, it doesn't
2145
+ i, j = np.nested_iters(a, [[0], [2, 1]], order='C')
2146
+ vals = []
2147
+ for x in i:
2148
+ vals.append([y for y in j])
2149
+ assert_equal(vals, [[0, 2, 4, 1, 3, 5], [6, 8, 10, 7, 9, 11]])
2150
+
2151
+ i, j = np.nested_iters(a, [[1, 0], [2]], order='C')
2152
+ vals = []
2153
+ for x in i:
2154
+ vals.append([y for y in j])
2155
+ assert_equal(vals, [[0, 1], [6, 7], [2, 3], [8, 9], [4, 5], [10, 11]])
2156
+
2157
+ i, j = np.nested_iters(a, [[2, 0], [1]], order='C')
2158
+ vals = []
2159
+ for x in i:
2160
+ vals.append([y for y in j])
2161
+ assert_equal(vals, [[0, 2, 4], [6, 8, 10], [1, 3, 5], [7, 9, 11]])
2162
+
2163
+ def test_iter_nested_iters_flip_axes():
2164
+ # Test nested iteration with negative axes
2165
+ a = arange(12).reshape(2, 3, 2)[::-1, ::-1, ::-1]
2166
+
2167
+ # In 'K' order (default), the axes all get flipped
2168
+ i, j = np.nested_iters(a, [[0], [1, 2]])
2169
+ vals = []
2170
+ for x in i:
2171
+ vals.append([y for y in j])
2172
+ assert_equal(vals, [[0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11]])
2173
+
2174
+ i, j = np.nested_iters(a, [[0, 1], [2]])
2175
+ vals = []
2176
+ for x in i:
2177
+ vals.append([y for y in j])
2178
+ assert_equal(vals, [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10, 11]])
2179
+
2180
+ i, j = np.nested_iters(a, [[0, 2], [1]])
2181
+ vals = []
2182
+ for x in i:
2183
+ vals.append([y for y in j])
2184
+ assert_equal(vals, [[0, 2, 4], [1, 3, 5], [6, 8, 10], [7, 9, 11]])
2185
+
2186
+ # In 'C' order, flipping axes is disabled
2187
+ i, j = np.nested_iters(a, [[0], [1, 2]], order='C')
2188
+ vals = []
2189
+ for x in i:
2190
+ vals.append([y for y in j])
2191
+ assert_equal(vals, [[11, 10, 9, 8, 7, 6], [5, 4, 3, 2, 1, 0]])
2192
+
2193
+ i, j = np.nested_iters(a, [[0, 1], [2]], order='C')
2194
+ vals = []
2195
+ for x in i:
2196
+ vals.append([y for y in j])
2197
+ assert_equal(vals, [[11, 10], [9, 8], [7, 6], [5, 4], [3, 2], [1, 0]])
2198
+
2199
+ i, j = np.nested_iters(a, [[0, 2], [1]], order='C')
2200
+ vals = []
2201
+ for x in i:
2202
+ vals.append([y for y in j])
2203
+ assert_equal(vals, [[11, 9, 7], [10, 8, 6], [5, 3, 1], [4, 2, 0]])
2204
+
2205
+ def test_iter_nested_iters_broadcast():
2206
+ # Test nested iteration with broadcasting
2207
+ a = arange(2).reshape(2, 1)
2208
+ b = arange(3).reshape(1, 3)
2209
+
2210
+ i, j = np.nested_iters([a, b], [[0], [1]])
2211
+ vals = []
2212
+ for x in i:
2213
+ vals.append([y for y in j])
2214
+ assert_equal(vals, [[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]]])
2215
+
2216
+ i, j = np.nested_iters([a, b], [[1], [0]])
2217
+ vals = []
2218
+ for x in i:
2219
+ vals.append([y for y in j])
2220
+ assert_equal(vals, [[[0, 0], [1, 0]], [[0, 1], [1, 1]], [[0, 2], [1, 2]]])
2221
+
2222
+ def test_iter_nested_iters_dtype_copy():
2223
+ # Test nested iteration with a copy to change dtype
2224
+
2225
+ # copy
2226
+ a = arange(6, dtype='i4').reshape(2, 3)
2227
+ i, j = np.nested_iters(a, [[0], [1]],
2228
+ op_flags=['readonly', 'copy'],
2229
+ op_dtypes='f8')
2230
+ assert_equal(j[0].dtype, np.dtype('f8'))
2231
+ vals = []
2232
+ for x in i:
2233
+ vals.append([y for y in j])
2234
+ assert_equal(vals, [[0, 1, 2], [3, 4, 5]])
2235
+ vals = None
2236
+
2237
+ # updateifcopy
2238
+ a = arange(6, dtype='f4').reshape(2, 3)
2239
+ i, j = np.nested_iters(a, [[0], [1]],
2240
+ op_flags=['readwrite', 'updateifcopy'],
2241
+ casting='same_kind',
2242
+ op_dtypes='f8')
2243
+ assert_equal(j[0].dtype, np.dtype('f8'))
2244
+ for x in i:
2245
+ for y in j:
2246
+ y[...] += 1
2247
+ assert_equal(a, [[0, 1, 2], [3, 4, 5]])
2248
+ i, j, x, y = (None,)*4 # force the updateifcopy
2249
+ assert_equal(a, [[1, 2, 3], [4, 5, 6]])
2250
+
2251
+ def test_iter_nested_iters_dtype_buffered():
2252
+ # Test nested iteration with buffering to change dtype
2253
+
2254
+ a = arange(6, dtype='f4').reshape(2, 3)
2255
+ i, j = np.nested_iters(a, [[0], [1]],
2256
+ flags=['buffered'],
2257
+ op_flags=['readwrite'],
2258
+ casting='same_kind',
2259
+ op_dtypes='f8')
2260
+ assert_equal(j[0].dtype, np.dtype('f8'))
2261
+ for x in i:
2262
+ for y in j:
2263
+ y[...] += 1
2264
+ assert_equal(a, [[1, 2, 3], [4, 5, 6]])
2265
+
2266
+ def test_iter_reduction_error():
2267
+
2268
+ a = np.arange(6)
2269
+ assert_raises(ValueError, nditer, [a, None], [],
2270
+ [['readonly'], ['readwrite', 'allocate']],
2271
+ op_axes=[[0], [-1]])
2272
+
2273
+ a = np.arange(6).reshape(2, 3)
2274
+ assert_raises(ValueError, nditer, [a, None], ['external_loop'],
2275
+ [['readonly'], ['readwrite', 'allocate']],
2276
+ op_axes=[[0, 1], [-1, -1]])
2277
+
2278
+ def test_iter_reduction():
2279
+ # Test doing reductions with the iterator
2280
+
2281
+ a = np.arange(6)
2282
+ i = nditer([a, None], ['reduce_ok'],
2283
+ [['readonly'], ['readwrite', 'allocate']],
2284
+ op_axes=[[0], [-1]])
2285
+ # Need to initialize the output operand to the addition unit
2286
+ i.operands[1][...] = 0
2287
+ # Do the reduction
2288
+ for x, y in i:
2289
+ y[...] += x
2290
+ # Since no axes were specified, should have allocated a scalar
2291
+ assert_equal(i.operands[1].ndim, 0)
2292
+ assert_equal(i.operands[1], np.sum(a))
2293
+
2294
+ a = np.arange(6).reshape(2, 3)
2295
+ i = nditer([a, None], ['reduce_ok', 'external_loop'],
2296
+ [['readonly'], ['readwrite', 'allocate']],
2297
+ op_axes=[[0, 1], [-1, -1]])
2298
+ # Need to initialize the output operand to the addition unit
2299
+ i.operands[1][...] = 0
2300
+ # Reduction shape/strides for the output
2301
+ assert_equal(i[1].shape, (6,))
2302
+ assert_equal(i[1].strides, (0,))
2303
+ # Do the reduction
2304
+ for x, y in i:
2305
+ y[...] += x
2306
+ # Since no axes were specified, should have allocated a scalar
2307
+ assert_equal(i.operands[1].ndim, 0)
2308
+ assert_equal(i.operands[1], np.sum(a))
2309
+
2310
+ # This is a tricky reduction case for the buffering double loop
2311
+ # to handle
2312
+ a = np.ones((2, 3, 5))
2313
+ it1 = nditer([a, None], ['reduce_ok', 'external_loop'],
2314
+ [['readonly'], ['readwrite', 'allocate']],
2315
+ op_axes=[None, [0, -1, 1]])
2316
+ it2 = nditer([a, None], ['reduce_ok', 'external_loop',
2317
+ 'buffered', 'delay_bufalloc'],
2318
+ [['readonly'], ['readwrite', 'allocate']],
2319
+ op_axes=[None, [0, -1, 1]], buffersize=10)
2320
+ it1.operands[1].fill(0)
2321
+ it2.operands[1].fill(0)
2322
+ it2.reset()
2323
+ for x in it1:
2324
+ x[1][...] += x[0]
2325
+ for x in it2:
2326
+ x[1][...] += x[0]
2327
+ assert_equal(it1.operands[1], it2.operands[1])
2328
+ assert_equal(it2.operands[1].sum(), a.size)
2329
+
2330
+ def test_iter_buffering_reduction():
2331
+ # Test doing buffered reductions with the iterator
2332
+
2333
+ a = np.arange(6)
2334
+ b = np.array(0., dtype='f8').byteswap().newbyteorder()
2335
+ i = nditer([a, b], ['reduce_ok', 'buffered'],
2336
+ [['readonly'], ['readwrite', 'nbo']],
2337
+ op_axes=[[0], [-1]])
2338
+ assert_equal(i[1].dtype, np.dtype('f8'))
2339
+ assert_(i[1].dtype != b.dtype)
2340
+ # Do the reduction
2341
+ for x, y in i:
2342
+ y[...] += x
2343
+ # Since no axes were specified, should have allocated a scalar
2344
+ assert_equal(b, np.sum(a))
2345
+
2346
+ a = np.arange(6).reshape(2, 3)
2347
+ b = np.array([0, 0], dtype='f8').byteswap().newbyteorder()
2348
+ i = nditer([a, b], ['reduce_ok', 'external_loop', 'buffered'],
2349
+ [['readonly'], ['readwrite', 'nbo']],
2350
+ op_axes=[[0, 1], [0, -1]])
2351
+ # Reduction shape/strides for the output
2352
+ assert_equal(i[1].shape, (3,))
2353
+ assert_equal(i[1].strides, (0,))
2354
+ # Do the reduction
2355
+ for x, y in i:
2356
+ y[...] += x
2357
+ assert_equal(b, np.sum(a, axis=1))
2358
+
2359
+ # Iterator inner double loop was wrong on this one
2360
+ p = np.arange(2) + 1
2361
+ it = np.nditer([p, None],
2362
+ ['delay_bufalloc', 'reduce_ok', 'buffered', 'external_loop'],
2363
+ [['readonly'], ['readwrite', 'allocate']],
2364
+ op_axes=[[-1, 0], [-1, -1]],
2365
+ itershape=(2, 2))
2366
+ it.operands[1].fill(0)
2367
+ it.reset()
2368
+ assert_equal(it[0], [1, 2, 1, 2])
2369
+
2370
+ def test_iter_buffering_reduction_reuse_reduce_loops():
2371
+ # There was a bug triggering reuse of the reduce loop inappropriately,
2372
+ # which caused processing to happen in unnecessarily small chunks
2373
+ # and overran the buffer.
2374
+
2375
+ a = np.zeros((2, 7))
2376
+ b = np.zeros((1, 7))
2377
+ it = np.nditer([a, b], flags=['reduce_ok', 'external_loop', 'buffered'],
2378
+ op_flags=[['readonly'], ['readwrite']],
2379
+ buffersize=5)
2380
+
2381
+ bufsizes = []
2382
+ for x, y in it:
2383
+ bufsizes.append(x.shape[0])
2384
+ assert_equal(bufsizes, [5, 2, 5, 2])
2385
+ assert_equal(sum(bufsizes), a.size)
2386
+
2387
+ def test_iter_writemasked_badinput():
2388
+ a = np.zeros((2, 3))
2389
+ b = np.zeros((3,))
2390
+ m = np.array([[True, True, False], [False, True, False]])
2391
+ m2 = np.array([True, True, False])
2392
+ m3 = np.array([0, 1, 1], dtype='u1')
2393
+ mbad1 = np.array([0, 1, 1], dtype='i1')
2394
+ mbad2 = np.array([0, 1, 1], dtype='f4')
2395
+
2396
+ # Need an 'arraymask' if any operand is 'writemasked'
2397
+ assert_raises(ValueError, nditer, [a, m], [],
2398
+ [['readwrite', 'writemasked'], ['readonly']])
2399
+
2400
+ # A 'writemasked' operand must not be readonly
2401
+ assert_raises(ValueError, nditer, [a, m], [],
2402
+ [['readonly', 'writemasked'], ['readonly', 'arraymask']])
2403
+
2404
+ # 'writemasked' and 'arraymask' may not be used together
2405
+ assert_raises(ValueError, nditer, [a, m], [],
2406
+ [['readonly'], ['readwrite', 'arraymask', 'writemasked']])
2407
+
2408
+ # 'arraymask' may only be specified once
2409
+ assert_raises(ValueError, nditer, [a, m, m2], [],
2410
+ [['readwrite', 'writemasked'],
2411
+ ['readonly', 'arraymask'],
2412
+ ['readonly', 'arraymask']])
2413
+
2414
+ # An 'arraymask' with nothing 'writemasked' also doesn't make sense
2415
+ assert_raises(ValueError, nditer, [a, m], [],
2416
+ [['readwrite'], ['readonly', 'arraymask']])
2417
+
2418
+ # A writemasked reduction requires a similarly smaller mask
2419
+ assert_raises(ValueError, nditer, [a, b, m], ['reduce_ok'],
2420
+ [['readonly'],
2421
+ ['readwrite', 'writemasked'],
2422
+ ['readonly', 'arraymask']])
2423
+ # But this should work with a smaller/equal mask to the reduction operand
2424
+ np.nditer([a, b, m2], ['reduce_ok'],
2425
+ [['readonly'],
2426
+ ['readwrite', 'writemasked'],
2427
+ ['readonly', 'arraymask']])
2428
+ # The arraymask itself cannot be a reduction
2429
+ assert_raises(ValueError, nditer, [a, b, m2], ['reduce_ok'],
2430
+ [['readonly'],
2431
+ ['readwrite', 'writemasked'],
2432
+ ['readwrite', 'arraymask']])
2433
+
2434
+ # A uint8 mask is ok too
2435
+ np.nditer([a, m3], ['buffered'],
2436
+ [['readwrite', 'writemasked'],
2437
+ ['readonly', 'arraymask']],
2438
+ op_dtypes=['f4', None],
2439
+ casting='same_kind')
2440
+ # An int8 mask isn't ok
2441
+ assert_raises(TypeError, np.nditer, [a, mbad1], ['buffered'],
2442
+ [['readwrite', 'writemasked'],
2443
+ ['readonly', 'arraymask']],
2444
+ op_dtypes=['f4', None],
2445
+ casting='same_kind')
2446
+ # A float32 mask isn't ok
2447
+ assert_raises(TypeError, np.nditer, [a, mbad2], ['buffered'],
2448
+ [['readwrite', 'writemasked'],
2449
+ ['readonly', 'arraymask']],
2450
+ op_dtypes=['f4', None],
2451
+ casting='same_kind')
2452
+
2453
+ def test_iter_writemasked():
2454
+ a = np.zeros((3,), dtype='f8')
2455
+ msk = np.array([True, True, False])
2456
+
2457
+ # When buffering is unused, 'writemasked' effectively does nothing.
2458
+ # It's up to the user of the iterator to obey the requested semantics.
2459
+ it = np.nditer([a, msk], [],
2460
+ [['readwrite', 'writemasked'],
2461
+ ['readonly', 'arraymask']])
2462
+ for x, m in it:
2463
+ x[...] = 1
2464
+ # Because we violated the semantics, all the values became 1
2465
+ assert_equal(a, [1, 1, 1])
2466
+
2467
+ # Even if buffering is enabled, we still may be accessing the array
2468
+ # directly.
2469
+ it = np.nditer([a, msk], ['buffered'],
2470
+ [['readwrite', 'writemasked'],
2471
+ ['readonly', 'arraymask']])
2472
+ for x, m in it:
2473
+ x[...] = 2.5
2474
+ # Because we violated the semantics, all the values became 2.5
2475
+ assert_equal(a, [2.5, 2.5, 2.5])
2476
+
2477
+ # If buffering will definitely happening, for instance because of
2478
+ # a cast, only the items selected by the mask will be copied back from
2479
+ # the buffer.
2480
+ it = np.nditer([a, msk], ['buffered'],
2481
+ [['readwrite', 'writemasked'],
2482
+ ['readonly', 'arraymask']],
2483
+ op_dtypes=['i8', None],
2484
+ casting='unsafe')
2485
+ for x, m in it:
2486
+ x[...] = 3
2487
+ # Even though we violated the semantics, only the selected values
2488
+ # were copied back
2489
+ assert_equal(a, [3, 3, 2.5])
2490
+
2491
+ def test_iter_non_writable_attribute_deletion():
2492
+ it = np.nditer(np.ones(2))
2493
+ attr = ["value", "shape", "operands", "itviews", "has_delayed_bufalloc",
2494
+ "iterationneedsapi", "has_multi_index", "has_index", "dtypes",
2495
+ "ndim", "nop", "itersize", "finished"]
2496
+
2497
+ for s in attr:
2498
+ assert_raises(AttributeError, delattr, it, s)
2499
+
2500
+
2501
+ def test_iter_writable_attribute_deletion():
2502
+ it = np.nditer(np.ones(2))
2503
+ attr = [ "multi_index", "index", "iterrange", "iterindex"]
2504
+ for s in attr:
2505
+ assert_raises(AttributeError, delattr, it, s)
2506
+
2507
+
2508
+ def test_iter_element_deletion():
2509
+ it = np.nditer(np.ones(3))
2510
+ try:
2511
+ del it[1]
2512
+ del it[1:2]
2513
+ except TypeError:
2514
+ pass
2515
+ except:
2516
+ raise AssertionError
2517
+
2518
+ def test_iter_allocated_array_dtypes():
2519
+ # If the dtype of an allocated output has a shape, the shape gets
2520
+ # tacked onto the end of the result.
2521
+ it = np.nditer(([1, 3, 20], None), op_dtypes=[None, ('i4', (2,))])
2522
+ for a, b in it:
2523
+ b[0] = a - 1
2524
+ b[1] = a + 1
2525
+ assert_equal(it.operands[1], [[0, 2], [2, 4], [19, 21]])
2526
+
2527
+ # Make sure this works for scalars too
2528
+ it = np.nditer((10, 2, None), op_dtypes=[None, None, ('i4', (2, 2))])
2529
+ for a, b, c in it:
2530
+ c[0, 0] = a - b
2531
+ c[0, 1] = a + b
2532
+ c[1, 0] = a * b
2533
+ c[1, 1] = a / b
2534
+ assert_equal(it.operands[2], [[8, 12], [20, 5]])
2535
+
2536
+
2537
+ def test_0d_iter():
2538
+ # Basic test for iteration of 0-d arrays:
2539
+ i = nditer([2, 3], ['multi_index'], [['readonly']]*2)
2540
+ assert_equal(i.ndim, 0)
2541
+ assert_equal(next(i), (2, 3))
2542
+ assert_equal(i.multi_index, ())
2543
+ assert_equal(i.iterindex, 0)
2544
+ assert_raises(StopIteration, next, i)
2545
+ # test reset:
2546
+ i.reset()
2547
+ assert_equal(next(i), (2, 3))
2548
+ assert_raises(StopIteration, next, i)
2549
+
2550
+ # test forcing to 0-d
2551
+ i = nditer(np.arange(5), ['multi_index'], [['readonly']], op_axes=[()])
2552
+ assert_equal(i.ndim, 0)
2553
+ assert_equal(len(i), 1)
2554
+ # note that itershape=(), still behaves like None due to the conversions
2555
+
2556
+ # Test a more complex buffered casting case (same as another test above)
2557
+ sdt = [('a', 'f4'), ('b', 'i8'), ('c', 'c8', (2, 3)), ('d', 'O')]
2558
+ a = np.array(0.5, dtype='f4')
2559
+ i = nditer(a, ['buffered', 'refs_ok'], ['readonly'],
2560
+ casting='unsafe', op_dtypes=sdt)
2561
+ vals = next(i)
2562
+ assert_equal(vals['a'], 0.5)
2563
+ assert_equal(vals['b'], 0)
2564
+ assert_equal(vals['c'], [[(0.5)]*3]*2)
2565
+ assert_equal(vals['d'], 0.5)
2566
+
2567
+
2568
+ def test_0d_nested_iter():
2569
+ a = np.arange(12).reshape(2, 3, 2)
2570
+ i, j = np.nested_iters(a, [[], [1, 0, 2]])
2571
+ vals = []
2572
+ for x in i:
2573
+ vals.append([y for y in j])
2574
+ assert_equal(vals, [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
2575
+
2576
+ i, j = np.nested_iters(a, [[1, 0, 2], []])
2577
+ vals = []
2578
+ for x in i:
2579
+ vals.append([y for y in j])
2580
+ assert_equal(vals, [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11]])
2581
+
2582
+ i, j, k = np.nested_iters(a, [[2, 0], [], [1]])
2583
+ vals = []
2584
+ for x in i:
2585
+ for y in j:
2586
+ vals.append([z for z in k])
2587
+ assert_equal(vals, [[0, 2, 4], [1, 3, 5], [6, 8, 10], [7, 9, 11]])
2588
+
2589
+
2590
+ def test_iter_too_large():
2591
+ # The total size of the iterator must not exceed the maximum intp due
2592
+ # to broadcasting. Dividing by 1024 will keep it small enough to
2593
+ # give a legal array.
2594
+ size = np.iinfo(np.intp).max // 1024
2595
+ arr = np.lib.stride_tricks.as_strided(np.zeros(1), (size,), (0,))
2596
+ assert_raises(ValueError, nditer, (arr, arr[:, None]))
2597
+ # test the same for multiindex. That may get more interesting when
2598
+ # removing 0 dimensional axis is allowed (since an iterator can grow then)
2599
+ assert_raises(ValueError, nditer,
2600
+ (arr, arr[:, None]), flags=['multi_index'])
2601
+
2602
+
2603
+ def test_iter_too_large_with_multiindex():
2604
+ # When a multi index is being tracked, the error is delayed this
2605
+ # checks the delayed error messages and getting below that by
2606
+ # removing an axis.
2607
+ base_size = 2**10
2608
+ num = 1
2609
+ while base_size**num < np.iinfo(np.intp).max:
2610
+ num += 1
2611
+
2612
+ shape_template = [1, 1] * num
2613
+ arrays = []
2614
+ for i in range(num):
2615
+ shape = shape_template[:]
2616
+ shape[i * 2] = 2**10
2617
+ arrays.append(np.empty(shape))
2618
+ arrays = tuple(arrays)
2619
+
2620
+ # arrays are now too large to be broadcast. The different modes test
2621
+ # different nditer functionality with or without GIL.
2622
+ for mode in range(6):
2623
+ assert_raises(ValueError, test_nditer_too_large, arrays, -1, mode)
2624
+ # but if we do nothing with the nditer, it can be constructed:
2625
+ test_nditer_too_large(arrays, -1, 7)
2626
+
2627
+ # When an axis is removed, things should work again (half the time):
2628
+ for i in range(num):
2629
+ for mode in range(6):
2630
+ # an axis with size 1024 is removed:
2631
+ test_nditer_too_large(arrays, i*2, mode)
2632
+ # an axis with size 1 is removed:
2633
+ assert_raises(ValueError, test_nditer_too_large,
2634
+ arrays, i*2 + 1, mode)
2635
+
2636
+
2637
+ if __name__ == "__main__":
2638
+ run_module_suite()