numpy 1.9.2__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.

Potentially problematic release.


This version of numpy might be problematic. Click here for more details.

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