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.
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
@@ -0,0 +1,2499 @@
1
+ /*
2
+ * This file implements the CPython wrapper of the new NumPy iterator.
3
+ *
4
+ * Copyright (c) 2010 by Mark Wiebe (mwwiebe@gmail.com)
5
+ * The Univerity of British Columbia
6
+ *
7
+ * See LICENSE.txt for the license.
8
+ */
9
+ #define PY_SSIZE_T_CLEAN
10
+ #include "Python.h"
11
+ #include "structmember.h"
12
+
13
+ #define NPY_NO_DEPRECATED_API NPY_API_VERSION
14
+ #define _MULTIARRAYMODULE
15
+ #include <numpy/arrayobject.h>
16
+ #include "npy_config.h"
17
+ #include "npy_pycompat.h"
18
+
19
+ typedef struct NewNpyArrayIterObject_tag NewNpyArrayIterObject;
20
+
21
+ struct NewNpyArrayIterObject_tag {
22
+ PyObject_HEAD
23
+ /* The iterator */
24
+ NpyIter *iter;
25
+ /* Flag indicating iteration started/stopped */
26
+ char started, finished;
27
+ /* Child to update for nested iteration */
28
+ NewNpyArrayIterObject *nested_child;
29
+ /* Cached values from the iterator */
30
+ NpyIter_IterNextFunc *iternext;
31
+ NpyIter_GetMultiIndexFunc *get_multi_index;
32
+ char **dataptrs;
33
+ PyArray_Descr **dtypes;
34
+ PyArrayObject **operands;
35
+ npy_intp *innerstrides, *innerloopsizeptr;
36
+ char readflags[NPY_MAXARGS];
37
+ char writeflags[NPY_MAXARGS];
38
+ };
39
+
40
+ static int npyiter_cache_values(NewNpyArrayIterObject *self)
41
+ {
42
+ NpyIter *iter = self->iter;
43
+
44
+ /* iternext and get_multi_index functions */
45
+ self->iternext = NpyIter_GetIterNext(iter, NULL);
46
+ if (self->iternext == NULL) {
47
+ return -1;
48
+ }
49
+
50
+ if (NpyIter_HasMultiIndex(iter) && !NpyIter_HasDelayedBufAlloc(iter)) {
51
+ self->get_multi_index = NpyIter_GetGetMultiIndex(iter, NULL);
52
+ }
53
+ else {
54
+ self->get_multi_index = NULL;
55
+ }
56
+
57
+ /* Internal data pointers */
58
+ self->dataptrs = NpyIter_GetDataPtrArray(iter);
59
+ self->dtypes = NpyIter_GetDescrArray(iter);
60
+ self->operands = NpyIter_GetOperandArray(iter);
61
+
62
+ if (NpyIter_HasExternalLoop(iter)) {
63
+ self->innerstrides = NpyIter_GetInnerStrideArray(iter);
64
+ self->innerloopsizeptr = NpyIter_GetInnerLoopSizePtr(iter);
65
+ }
66
+ else {
67
+ self->innerstrides = NULL;
68
+ self->innerloopsizeptr = NULL;
69
+ }
70
+
71
+ /* The read/write settings */
72
+ NpyIter_GetReadFlags(iter, self->readflags);
73
+ NpyIter_GetWriteFlags(iter, self->writeflags);
74
+ return 0;
75
+ }
76
+
77
+ static PyObject *
78
+ npyiter_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
79
+ {
80
+ NewNpyArrayIterObject *self;
81
+
82
+ self = (NewNpyArrayIterObject *)subtype->tp_alloc(subtype, 0);
83
+ if (self != NULL) {
84
+ self->iter = NULL;
85
+ self->nested_child = NULL;
86
+ }
87
+
88
+ return (PyObject *)self;
89
+ }
90
+
91
+ static int
92
+ NpyIter_GlobalFlagsConverter(PyObject *flags_in, npy_uint32 *flags)
93
+ {
94
+ npy_uint32 tmpflags = 0;
95
+ int iflags, nflags;
96
+
97
+ PyObject *f;
98
+ char *str = NULL;
99
+ Py_ssize_t length = 0;
100
+ npy_uint32 flag;
101
+
102
+ if (flags_in == NULL || flags_in == Py_None) {
103
+ return 1;
104
+ }
105
+
106
+ if (!PyTuple_Check(flags_in) && !PyList_Check(flags_in)) {
107
+ PyErr_SetString(PyExc_ValueError,
108
+ "Iterator global flags must be a list or tuple of strings");
109
+ return 0;
110
+ }
111
+
112
+ nflags = PySequence_Size(flags_in);
113
+
114
+ for (iflags = 0; iflags < nflags; ++iflags) {
115
+ f = PySequence_GetItem(flags_in, iflags);
116
+ if (f == NULL) {
117
+ return 0;
118
+ }
119
+
120
+ if (PyUnicode_Check(f)) {
121
+ /* accept unicode input */
122
+ PyObject *f_str;
123
+ f_str = PyUnicode_AsASCIIString(f);
124
+ if (f_str == NULL) {
125
+ Py_DECREF(f);
126
+ return 0;
127
+ }
128
+ Py_DECREF(f);
129
+ f = f_str;
130
+ }
131
+
132
+ if (PyBytes_AsStringAndSize(f, &str, &length) < 0) {
133
+ Py_DECREF(f);
134
+ return 0;
135
+ }
136
+ /* Use switch statements to quickly isolate the right flag */
137
+ flag = 0;
138
+ switch (str[0]) {
139
+ case 'b':
140
+ if (strcmp(str, "buffered") == 0) {
141
+ flag = NPY_ITER_BUFFERED;
142
+ }
143
+ break;
144
+ case 'c':
145
+ if (length >= 6) switch (str[5]) {
146
+ case 'e':
147
+ if (strcmp(str, "c_index") == 0) {
148
+ flag = NPY_ITER_C_INDEX;
149
+ }
150
+ break;
151
+ case 'n':
152
+ if (strcmp(str, "common_dtype") == 0) {
153
+ flag = NPY_ITER_COMMON_DTYPE;
154
+ }
155
+ break;
156
+ }
157
+ break;
158
+ case 'd':
159
+ if (strcmp(str, "delay_bufalloc") == 0) {
160
+ flag = NPY_ITER_DELAY_BUFALLOC;
161
+ }
162
+ break;
163
+ case 'e':
164
+ if (strcmp(str, "external_loop") == 0) {
165
+ flag = NPY_ITER_EXTERNAL_LOOP;
166
+ }
167
+ break;
168
+ case 'f':
169
+ if (strcmp(str, "f_index") == 0) {
170
+ flag = NPY_ITER_F_INDEX;
171
+ }
172
+ break;
173
+ case 'g':
174
+ /*
175
+ * Documentation is grow_inner, but initial implementation
176
+ * was growinner, so allowing for either.
177
+ */
178
+ if (strcmp(str, "grow_inner") == 0 ||
179
+ strcmp(str, "growinner") == 0) {
180
+ flag = NPY_ITER_GROWINNER;
181
+ }
182
+ break;
183
+ case 'm':
184
+ if (strcmp(str, "multi_index") == 0) {
185
+ flag = NPY_ITER_MULTI_INDEX;
186
+ }
187
+ break;
188
+ case 'r':
189
+ if (strcmp(str, "ranged") == 0) {
190
+ flag = NPY_ITER_RANGED;
191
+ }
192
+ else if (strcmp(str, "refs_ok") == 0) {
193
+ flag = NPY_ITER_REFS_OK;
194
+ }
195
+ else if (strcmp(str, "reduce_ok") == 0) {
196
+ flag = NPY_ITER_REDUCE_OK;
197
+ }
198
+ break;
199
+ case 'z':
200
+ if (strcmp(str, "zerosize_ok") == 0) {
201
+ flag = NPY_ITER_ZEROSIZE_OK;
202
+ }
203
+ break;
204
+ }
205
+ if (flag == 0) {
206
+ PyErr_Format(PyExc_ValueError,
207
+ "Unexpected iterator global flag \"%s\"", str);
208
+ Py_DECREF(f);
209
+ return 0;
210
+ }
211
+ else {
212
+ tmpflags |= flag;
213
+ }
214
+ Py_DECREF(f);
215
+ }
216
+
217
+ *flags |= tmpflags;
218
+ return 1;
219
+ }
220
+
221
+ /* TODO: Use PyArray_OrderConverter once 'K' is added there */
222
+ static int
223
+ npyiter_order_converter(PyObject *order_in, NPY_ORDER *order)
224
+ {
225
+ char *str = NULL;
226
+ Py_ssize_t length = 0;
227
+
228
+ if (PyUnicode_Check(order_in)) {
229
+ /* accept unicode input */
230
+ PyObject *str_obj;
231
+ int ret;
232
+ str_obj = PyUnicode_AsASCIIString(order_in);
233
+ if (str_obj == NULL) {
234
+ return 0;
235
+ }
236
+ ret = npyiter_order_converter(str_obj, order);
237
+ Py_DECREF(str_obj);
238
+ return ret;
239
+ }
240
+
241
+ if (PyBytes_AsStringAndSize(order_in, &str, &length) < 0) {
242
+ return 0;
243
+ }
244
+
245
+ if (length == 1) switch (str[0]) {
246
+ case 'C':
247
+ *order = NPY_CORDER;
248
+ return 1;
249
+ case 'F':
250
+ *order = NPY_FORTRANORDER;
251
+ return 1;
252
+ case 'A':
253
+ *order = NPY_ANYORDER;
254
+ return 1;
255
+ case 'K':
256
+ *order = NPY_KEEPORDER;
257
+ return 1;
258
+ }
259
+
260
+ PyErr_SetString(PyExc_ValueError,
261
+ "order must be one of 'C', 'F', 'A', or 'K'");
262
+ return 0;
263
+ }
264
+
265
+ static int
266
+ NpyIter_OpFlagsConverter(PyObject *op_flags_in,
267
+ npy_uint32 *op_flags)
268
+ {
269
+ int iflags, nflags;
270
+ npy_uint32 flag;
271
+
272
+ if (!PyTuple_Check(op_flags_in) && !PyList_Check(op_flags_in)) {
273
+ PyErr_SetString(PyExc_ValueError,
274
+ "op_flags must be a tuple or array of per-op flag-tuples");
275
+ return 0;
276
+ }
277
+
278
+ nflags = PySequence_Size(op_flags_in);
279
+
280
+ *op_flags = 0;
281
+ for (iflags = 0; iflags < nflags; ++iflags) {
282
+ PyObject *f;
283
+ char *str = NULL;
284
+ Py_ssize_t length = 0;
285
+
286
+ f = PySequence_GetItem(op_flags_in, iflags);
287
+ if (f == NULL) {
288
+ return 0;
289
+ }
290
+
291
+ if (PyUnicode_Check(f)) {
292
+ /* accept unicode input */
293
+ PyObject *f_str;
294
+ f_str = PyUnicode_AsASCIIString(f);
295
+ if (f_str == NULL) {
296
+ Py_DECREF(f);
297
+ return 0;
298
+ }
299
+ Py_DECREF(f);
300
+ f = f_str;
301
+ }
302
+
303
+ if (PyBytes_AsStringAndSize(f, &str, &length) < 0) {
304
+ PyErr_Clear();
305
+ Py_DECREF(f);
306
+ PyErr_SetString(PyExc_ValueError,
307
+ "op_flags must be a tuple or array of per-op flag-tuples");
308
+ return 0;
309
+ }
310
+
311
+ /* Use switch statements to quickly isolate the right flag */
312
+ flag = 0;
313
+ switch (str[0]) {
314
+ case 'a':
315
+ if (length > 2) switch(str[2]) {
316
+ case 'i':
317
+ if (strcmp(str, "aligned") == 0) {
318
+ flag = NPY_ITER_ALIGNED;
319
+ }
320
+ break;
321
+ case 'l':
322
+ if (strcmp(str, "allocate") == 0) {
323
+ flag = NPY_ITER_ALLOCATE;
324
+ }
325
+ break;
326
+ case 'r':
327
+ if (strcmp(str, "arraymask") == 0) {
328
+ flag = NPY_ITER_ARRAYMASK;
329
+ }
330
+ break;
331
+ }
332
+ break;
333
+ case 'c':
334
+ if (strcmp(str, "copy") == 0) {
335
+ flag = NPY_ITER_COPY;
336
+ }
337
+ if (strcmp(str, "contig") == 0) {
338
+ flag = NPY_ITER_CONTIG;
339
+ }
340
+ break;
341
+ case 'n':
342
+ switch (str[1]) {
343
+ case 'b':
344
+ if (strcmp(str, "nbo") == 0) {
345
+ flag = NPY_ITER_NBO;
346
+ }
347
+ break;
348
+ case 'o':
349
+ if (strcmp(str, "no_subtype") == 0) {
350
+ flag = NPY_ITER_NO_SUBTYPE;
351
+ }
352
+ else if (strcmp(str, "no_broadcast") == 0) {
353
+ flag = NPY_ITER_NO_BROADCAST;
354
+ }
355
+ break;
356
+ }
357
+ break;
358
+ case 'r':
359
+ if (length > 4) switch (str[4]) {
360
+ case 'o':
361
+ if (strcmp(str, "readonly") == 0) {
362
+ flag = NPY_ITER_READONLY;
363
+ }
364
+ break;
365
+ case 'w':
366
+ if (strcmp(str, "readwrite") == 0) {
367
+ flag = NPY_ITER_READWRITE;
368
+ }
369
+ break;
370
+ }
371
+ break;
372
+ case 'u':
373
+ switch (str[1]) {
374
+ case 'p':
375
+ if (strcmp(str, "updateifcopy") == 0) {
376
+ flag = NPY_ITER_UPDATEIFCOPY;
377
+ }
378
+ break;
379
+ }
380
+ break;
381
+ case 'v':
382
+ if (strcmp(str, "virtual") == 0) {
383
+ flag = NPY_ITER_VIRTUAL;
384
+ }
385
+ break;
386
+ case 'w':
387
+ if (length > 5) switch (str[5]) {
388
+ case 'o':
389
+ if (strcmp(str, "writeonly") == 0) {
390
+ flag = NPY_ITER_WRITEONLY;
391
+ }
392
+ break;
393
+ case 'm':
394
+ if (strcmp(str, "writemasked") == 0) {
395
+ flag = NPY_ITER_WRITEMASKED;
396
+ }
397
+ break;
398
+ }
399
+ break;
400
+ }
401
+ if (flag == 0) {
402
+ PyErr_Format(PyExc_ValueError,
403
+ "Unexpected per-op iterator flag \"%s\"", str);
404
+ Py_DECREF(f);
405
+ return 0;
406
+ }
407
+ else {
408
+ *op_flags |= flag;
409
+ }
410
+ Py_DECREF(f);
411
+ }
412
+
413
+ return 1;
414
+ }
415
+
416
+ static int
417
+ npyiter_convert_op_flags_array(PyObject *op_flags_in,
418
+ npy_uint32 *op_flags_array, npy_intp nop)
419
+ {
420
+ npy_intp iop;
421
+
422
+ if (!PyTuple_Check(op_flags_in) && !PyList_Check(op_flags_in)) {
423
+ PyErr_SetString(PyExc_ValueError,
424
+ "op_flags must be a tuple or array of per-op flag-tuples");
425
+ return 0;
426
+ }
427
+
428
+ if (PySequence_Size(op_flags_in) != nop) {
429
+ goto try_single_flags;
430
+ }
431
+
432
+ for (iop = 0; iop < nop; ++iop) {
433
+ PyObject *f = PySequence_GetItem(op_flags_in, iop);
434
+ if (f == NULL) {
435
+ return 0;
436
+ }
437
+ /* If the first item is a string, try as one set of flags */
438
+ if (iop == 0 && (PyBytes_Check(f) || PyUnicode_Check(f))) {
439
+ Py_DECREF(f);
440
+ goto try_single_flags;
441
+ }
442
+ if (NpyIter_OpFlagsConverter(f,
443
+ &op_flags_array[iop]) != 1) {
444
+ Py_DECREF(f);
445
+ return 0;
446
+ }
447
+
448
+ Py_DECREF(f);
449
+ }
450
+
451
+ return 1;
452
+
453
+ try_single_flags:
454
+ if (NpyIter_OpFlagsConverter(op_flags_in,
455
+ &op_flags_array[0]) != 1) {
456
+ return 0;
457
+ }
458
+
459
+ for (iop = 1; iop < nop; ++iop) {
460
+ op_flags_array[iop] = op_flags_array[0];
461
+ }
462
+
463
+ return 1;
464
+ }
465
+
466
+ static int
467
+ npyiter_convert_dtypes(PyObject *op_dtypes_in,
468
+ PyArray_Descr **op_dtypes,
469
+ npy_intp nop)
470
+ {
471
+ npy_intp iop;
472
+
473
+ /*
474
+ * If the input isn't a tuple of dtypes, try converting it as-is
475
+ * to a dtype, and replicating to all operands.
476
+ */
477
+ if ((!PyTuple_Check(op_dtypes_in) && !PyList_Check(op_dtypes_in)) ||
478
+ PySequence_Size(op_dtypes_in) != nop) {
479
+ goto try_single_dtype;
480
+ }
481
+
482
+ for (iop = 0; iop < nop; ++iop) {
483
+ PyObject *dtype = PySequence_GetItem(op_dtypes_in, iop);
484
+ if (dtype == NULL) {
485
+ npy_intp i;
486
+ for (i = 0; i < iop; ++i ) {
487
+ Py_XDECREF(op_dtypes[i]);
488
+ }
489
+ return 0;
490
+ }
491
+
492
+ /* Try converting the object to a descr */
493
+ if (PyArray_DescrConverter2(dtype, &op_dtypes[iop]) != 1) {
494
+ npy_intp i;
495
+ for (i = 0; i < iop; ++i ) {
496
+ Py_XDECREF(op_dtypes[i]);
497
+ }
498
+ Py_DECREF(dtype);
499
+ PyErr_Clear();
500
+ goto try_single_dtype;
501
+ }
502
+
503
+ Py_DECREF(dtype);
504
+ }
505
+
506
+ return 1;
507
+
508
+ try_single_dtype:
509
+ if (PyArray_DescrConverter2(op_dtypes_in, &op_dtypes[0]) == 1) {
510
+ for (iop = 1; iop < nop; ++iop) {
511
+ op_dtypes[iop] = op_dtypes[0];
512
+ Py_XINCREF(op_dtypes[iop]);
513
+ }
514
+ return 1;
515
+ }
516
+
517
+ return 0;
518
+ }
519
+
520
+ static int
521
+ npyiter_convert_op_axes(PyObject *op_axes_in, npy_intp nop,
522
+ int **op_axes, int *oa_ndim)
523
+ {
524
+ PyObject *a;
525
+ int iop;
526
+
527
+ if ((!PyTuple_Check(op_axes_in) && !PyList_Check(op_axes_in)) ||
528
+ PySequence_Size(op_axes_in) != nop) {
529
+ PyErr_SetString(PyExc_ValueError,
530
+ "op_axes must be a tuple/list matching the number of ops");
531
+ return 0;
532
+ }
533
+
534
+ *oa_ndim = -1;
535
+
536
+ /* Copy the tuples into op_axes */
537
+ for (iop = 0; iop < nop; ++iop) {
538
+ int idim;
539
+ a = PySequence_GetItem(op_axes_in, iop);
540
+ if (a == NULL) {
541
+ return 0;
542
+ }
543
+ if (a == Py_None) {
544
+ op_axes[iop] = NULL;
545
+ } else {
546
+ if (!PyTuple_Check(a) && !PyList_Check(a)) {
547
+ PyErr_SetString(PyExc_ValueError,
548
+ "Each entry of op_axes must be None "
549
+ "or a tuple/list");
550
+ Py_DECREF(a);
551
+ return 0;
552
+ }
553
+ if (*oa_ndim == -1) {
554
+ *oa_ndim = PySequence_Size(a);
555
+ if (*oa_ndim > NPY_MAXDIMS) {
556
+ PyErr_SetString(PyExc_ValueError,
557
+ "Too many dimensions in op_axes");
558
+ return 0;
559
+ }
560
+ }
561
+ if (PySequence_Size(a) != *oa_ndim) {
562
+ PyErr_SetString(PyExc_ValueError,
563
+ "Each entry of op_axes must have the same size");
564
+ Py_DECREF(a);
565
+ return 0;
566
+ }
567
+ for (idim = 0; idim < *oa_ndim; ++idim) {
568
+ PyObject *v = PySequence_GetItem(a, idim);
569
+ if (v == NULL) {
570
+ Py_DECREF(a);
571
+ return 0;
572
+ }
573
+ /* numpy.newaxis is None */
574
+ if (v == Py_None) {
575
+ op_axes[iop][idim] = -1;
576
+ }
577
+ else {
578
+ op_axes[iop][idim] = PyArray_PyIntAsInt(v);
579
+ if (op_axes[iop][idim]==-1 &&
580
+ PyErr_Occurred()) {
581
+ Py_DECREF(a);
582
+ Py_DECREF(v);
583
+ return 0;
584
+ }
585
+ }
586
+ Py_DECREF(v);
587
+ }
588
+ Py_DECREF(a);
589
+ }
590
+ }
591
+
592
+ if (*oa_ndim == -1) {
593
+ PyErr_SetString(PyExc_ValueError,
594
+ "If op_axes is provided, at least one list of axes "
595
+ "must be contained within it");
596
+ return 0;
597
+ }
598
+
599
+ return 1;
600
+ }
601
+
602
+ /*
603
+ * Converts the operand array and op_flags array into the form
604
+ * NpyIter_AdvancedNew needs. Sets nop, and on success, each
605
+ * op[i] owns a reference to an array object.
606
+ */
607
+ static int
608
+ npyiter_convert_ops(PyObject *op_in, PyObject *op_flags_in,
609
+ PyArrayObject **op, npy_uint32 *op_flags,
610
+ int *nop_out)
611
+ {
612
+ int iop, nop;
613
+
614
+ /* nop and op */
615
+ if (PyTuple_Check(op_in) || PyList_Check(op_in)) {
616
+ nop = PySequence_Size(op_in);
617
+ if (nop == 0) {
618
+ PyErr_SetString(PyExc_ValueError,
619
+ "Must provide at least one operand");
620
+ return 0;
621
+ }
622
+ if (nop > NPY_MAXARGS) {
623
+ PyErr_SetString(PyExc_ValueError, "Too many operands");
624
+ return 0;
625
+ }
626
+
627
+ for (iop = 0; iop < nop; ++iop) {
628
+ PyObject *item = PySequence_GetItem(op_in, iop);
629
+ if (item == NULL) {
630
+ npy_intp i;
631
+ for (i = 0; i < iop; ++i) {
632
+ Py_XDECREF(op[i]);
633
+ }
634
+ return 0;
635
+ }
636
+ else if (item == Py_None) {
637
+ Py_DECREF(item);
638
+ item = NULL;
639
+ }
640
+ /* This is converted to an array after op flags are retrieved */
641
+ op[iop] = (PyArrayObject *)item;
642
+ }
643
+ }
644
+ else {
645
+ nop = 1;
646
+ /* Is converted to an array after op flags are retrieved */
647
+ Py_INCREF(op_in);
648
+ op[0] = (PyArrayObject *)op_in;
649
+ }
650
+
651
+ *nop_out = nop;
652
+
653
+ /* op_flags */
654
+ if (op_flags_in == NULL || op_flags_in == Py_None) {
655
+ for (iop = 0; iop < nop; ++iop) {
656
+ /*
657
+ * By default, make NULL operands writeonly and flagged for
658
+ * allocation, and everything else readonly. To write
659
+ * to a provided operand, you must specify the write flag manually.
660
+ */
661
+ if (op[iop] == NULL) {
662
+ op_flags[iop] = NPY_ITER_WRITEONLY | NPY_ITER_ALLOCATE;
663
+ }
664
+ else {
665
+ op_flags[iop] = NPY_ITER_READONLY;
666
+ }
667
+ }
668
+ }
669
+ else if (npyiter_convert_op_flags_array(op_flags_in,
670
+ op_flags, nop) != 1) {
671
+ for (iop = 0; iop < nop; ++iop) {
672
+ Py_XDECREF(op[iop]);
673
+ }
674
+ *nop_out = 0;
675
+ return 0;
676
+ }
677
+
678
+ /* Now that we have the flags - convert all the ops to arrays */
679
+ for (iop = 0; iop < nop; ++iop) {
680
+ if (op[iop] != NULL) {
681
+ PyArrayObject *ao;
682
+ int fromanyflags = 0;
683
+
684
+ if (op_flags[iop]&(NPY_ITER_READWRITE|NPY_ITER_WRITEONLY)) {
685
+ fromanyflags |= NPY_ARRAY_UPDATEIFCOPY;
686
+ }
687
+ ao = (PyArrayObject *)PyArray_FromAny((PyObject *)op[iop],
688
+ NULL, 0, 0, fromanyflags, NULL);
689
+ if (ao == NULL) {
690
+ if (PyErr_Occurred() &&
691
+ PyErr_ExceptionMatches(PyExc_TypeError)) {
692
+ PyErr_SetString(PyExc_TypeError,
693
+ "Iterator operand is flagged as writeable, "
694
+ "but is an object which cannot be written "
695
+ "back to via UPDATEIFCOPY");
696
+ }
697
+ for (iop = 0; iop < nop; ++iop) {
698
+ Py_DECREF(op[iop]);
699
+ }
700
+ *nop_out = 0;
701
+ return 0;
702
+ }
703
+ Py_DECREF(op[iop]);
704
+ op[iop] = ao;
705
+ }
706
+ }
707
+
708
+ return 1;
709
+ }
710
+
711
+ static int
712
+ npyiter_init(NewNpyArrayIterObject *self, PyObject *args, PyObject *kwds)
713
+ {
714
+ static char *kwlist[] = {"op", "flags", "op_flags", "op_dtypes",
715
+ "order", "casting", "op_axes", "itershape",
716
+ "buffersize",
717
+ NULL};
718
+
719
+ PyObject *op_in = NULL, *op_flags_in = NULL,
720
+ *op_dtypes_in = NULL, *op_axes_in = NULL;
721
+
722
+ int iop, nop = 0;
723
+ PyArrayObject *op[NPY_MAXARGS];
724
+ npy_uint32 flags = 0;
725
+ NPY_ORDER order = NPY_KEEPORDER;
726
+ NPY_CASTING casting = NPY_SAFE_CASTING;
727
+ npy_uint32 op_flags[NPY_MAXARGS];
728
+ PyArray_Descr *op_request_dtypes[NPY_MAXARGS];
729
+ int oa_ndim = -1;
730
+ int op_axes_arrays[NPY_MAXARGS][NPY_MAXDIMS];
731
+ int *op_axes[NPY_MAXARGS];
732
+ PyArray_Dims itershape = {NULL, 0};
733
+ int buffersize = 0;
734
+
735
+ if (self->iter != NULL) {
736
+ PyErr_SetString(PyExc_ValueError,
737
+ "Iterator was already initialized");
738
+ return -1;
739
+ }
740
+
741
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O&OOO&O&OO&i", kwlist,
742
+ &op_in,
743
+ NpyIter_GlobalFlagsConverter, &flags,
744
+ &op_flags_in,
745
+ &op_dtypes_in,
746
+ npyiter_order_converter, &order,
747
+ PyArray_CastingConverter, &casting,
748
+ &op_axes_in,
749
+ PyArray_IntpConverter, &itershape,
750
+ &buffersize)) {
751
+ PyDimMem_FREE(itershape.ptr);
752
+ return -1;
753
+ }
754
+
755
+ /* Set the dtypes and ops to all NULL to start */
756
+ memset(op_request_dtypes, 0, sizeof(op_request_dtypes));
757
+
758
+ /* op and op_flags */
759
+ if (npyiter_convert_ops(op_in, op_flags_in, op, op_flags, &nop)
760
+ != 1) {
761
+ goto fail;
762
+ }
763
+
764
+ /* op_request_dtypes */
765
+ if (op_dtypes_in != NULL && op_dtypes_in != Py_None &&
766
+ npyiter_convert_dtypes(op_dtypes_in,
767
+ op_request_dtypes, nop) != 1) {
768
+ goto fail;
769
+ }
770
+
771
+ /* op_axes */
772
+ if (op_axes_in != NULL && op_axes_in != Py_None) {
773
+ /* Initialize to point to the op_axes arrays */
774
+ for (iop = 0; iop < nop; ++iop) {
775
+ op_axes[iop] = op_axes_arrays[iop];
776
+ }
777
+
778
+ if (npyiter_convert_op_axes(op_axes_in, nop,
779
+ op_axes, &oa_ndim) != 1) {
780
+ goto fail;
781
+ }
782
+ }
783
+
784
+ if (itershape.len > 0) {
785
+ if (oa_ndim == -1) {
786
+ oa_ndim = itershape.len;
787
+ memset(op_axes, 0, sizeof(op_axes[0]) * nop);
788
+ }
789
+ else if (oa_ndim != itershape.len) {
790
+ PyErr_SetString(PyExc_ValueError,
791
+ "'op_axes' and 'itershape' must have the same number "
792
+ "of entries equal to the iterator ndim");
793
+ goto fail;
794
+ }
795
+ }
796
+ else if (itershape.ptr != NULL) {
797
+ PyDimMem_FREE(itershape.ptr);
798
+ itershape.ptr = NULL;
799
+ }
800
+
801
+ self->iter = NpyIter_AdvancedNew(nop, op, flags, order, casting, op_flags,
802
+ op_request_dtypes,
803
+ oa_ndim, oa_ndim >= 0 ? op_axes : NULL,
804
+ itershape.ptr,
805
+ buffersize);
806
+
807
+ if (self->iter == NULL) {
808
+ goto fail;
809
+ }
810
+
811
+ /* Cache some values for the member functions to use */
812
+ if (npyiter_cache_values(self) < 0) {
813
+ goto fail;
814
+ }
815
+
816
+ if (NpyIter_GetIterSize(self->iter) == 0) {
817
+ self->started = 1;
818
+ self->finished = 1;
819
+ }
820
+ else {
821
+ self->started = 0;
822
+ self->finished = 0;
823
+ }
824
+
825
+ PyDimMem_FREE(itershape.ptr);
826
+
827
+ /* Release the references we got to the ops and dtypes */
828
+ for (iop = 0; iop < nop; ++iop) {
829
+ Py_XDECREF(op[iop]);
830
+ Py_XDECREF(op_request_dtypes[iop]);
831
+ }
832
+
833
+ return 0;
834
+
835
+ fail:
836
+ PyDimMem_FREE(itershape.ptr);
837
+ for (iop = 0; iop < nop; ++iop) {
838
+ Py_XDECREF(op[iop]);
839
+ Py_XDECREF(op_request_dtypes[iop]);
840
+ }
841
+ return -1;
842
+ }
843
+
844
+ NPY_NO_EXPORT PyObject *
845
+ NpyIter_NestedIters(PyObject *NPY_UNUSED(self),
846
+ PyObject *args, PyObject *kwds)
847
+ {
848
+ static char *kwlist[] = {"op", "axes", "flags", "op_flags",
849
+ "op_dtypes", "order",
850
+ "casting", "buffersize",
851
+ NULL};
852
+
853
+ PyObject *op_in = NULL, *axes_in = NULL,
854
+ *op_flags_in = NULL, *op_dtypes_in = NULL;
855
+
856
+ int iop, nop = 0, inest, nnest = 0;
857
+ PyArrayObject *op[NPY_MAXARGS];
858
+ npy_uint32 flags = 0, flags_inner;
859
+ NPY_ORDER order = NPY_KEEPORDER;
860
+ NPY_CASTING casting = NPY_SAFE_CASTING;
861
+ npy_uint32 op_flags[NPY_MAXARGS], op_flags_inner[NPY_MAXARGS];
862
+ PyArray_Descr *op_request_dtypes[NPY_MAXARGS],
863
+ *op_request_dtypes_inner[NPY_MAXARGS];
864
+ int op_axes_data[NPY_MAXDIMS];
865
+ int *nested_op_axes[NPY_MAXDIMS];
866
+ int nested_naxes[NPY_MAXDIMS], iaxes, naxes;
867
+ int negones[NPY_MAXDIMS];
868
+ char used_axes[NPY_MAXDIMS];
869
+ int buffersize = 0;
870
+
871
+ PyObject *ret = NULL;
872
+
873
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O&OOO&O&i", kwlist,
874
+ &op_in,
875
+ &axes_in,
876
+ NpyIter_GlobalFlagsConverter, &flags,
877
+ &op_flags_in,
878
+ &op_dtypes_in,
879
+ npyiter_order_converter, &order,
880
+ PyArray_CastingConverter, &casting,
881
+ &buffersize)) {
882
+ return NULL;
883
+ }
884
+
885
+ /* axes */
886
+ if (!PyTuple_Check(axes_in) && !PyList_Check(axes_in)) {
887
+ PyErr_SetString(PyExc_ValueError,
888
+ "axes must be a tuple of axis arrays");
889
+ return NULL;
890
+ }
891
+ nnest = PySequence_Size(axes_in);
892
+ if (nnest < 2) {
893
+ PyErr_SetString(PyExc_ValueError,
894
+ "axes must have at least 2 entries for nested iteration");
895
+ return NULL;
896
+ }
897
+ naxes = 0;
898
+ memset(used_axes, 0, NPY_MAXDIMS);
899
+ for (inest = 0; inest < nnest; ++inest) {
900
+ PyObject *item = PySequence_GetItem(axes_in, inest);
901
+ npy_intp i;
902
+ if (item == NULL) {
903
+ return NULL;
904
+ }
905
+ if (!PyTuple_Check(item) && !PyList_Check(item)) {
906
+ PyErr_SetString(PyExc_ValueError,
907
+ "Each item in axes must be a an integer tuple");
908
+ Py_DECREF(item);
909
+ return NULL;
910
+ }
911
+ nested_naxes[inest] = PySequence_Size(item);
912
+ if (naxes + nested_naxes[inest] > NPY_MAXDIMS) {
913
+ PyErr_SetString(PyExc_ValueError,
914
+ "Too many axes given");
915
+ Py_DECREF(item);
916
+ return NULL;
917
+ }
918
+ for (i = 0; i < nested_naxes[inest]; ++i) {
919
+ PyObject *v = PySequence_GetItem(item, i);
920
+ npy_intp axis;
921
+ if (v == NULL) {
922
+ Py_DECREF(item);
923
+ return NULL;
924
+ }
925
+ axis = PyInt_AsLong(v);
926
+ Py_DECREF(v);
927
+ if (axis < 0 || axis >= NPY_MAXDIMS) {
928
+ PyErr_SetString(PyExc_ValueError,
929
+ "An axis is out of bounds");
930
+ Py_DECREF(item);
931
+ return NULL;
932
+ }
933
+ /*
934
+ * This check is very important, without it out of bounds
935
+ * data accesses are possible.
936
+ */
937
+ if (used_axes[axis] != 0) {
938
+ PyErr_SetString(PyExc_ValueError,
939
+ "An axis is used more than once");
940
+ Py_DECREF(item);
941
+ return NULL;
942
+ }
943
+ used_axes[axis] = 1;
944
+ op_axes_data[naxes+i] = axis;
945
+ }
946
+ nested_op_axes[inest] = &op_axes_data[naxes];
947
+ naxes += nested_naxes[inest];
948
+ Py_DECREF(item);
949
+ }
950
+
951
+ /* op and op_flags */
952
+ if (npyiter_convert_ops(op_in, op_flags_in, op, op_flags, &nop)
953
+ != 1) {
954
+ return NULL;
955
+ }
956
+
957
+ /* Set the dtypes to all NULL to start as well */
958
+ memset(op_request_dtypes, 0, sizeof(op_request_dtypes[0])*nop);
959
+ memset(op_request_dtypes_inner, 0,
960
+ sizeof(op_request_dtypes_inner[0])*nop);
961
+
962
+ /* op_request_dtypes */
963
+ if (op_dtypes_in != NULL && op_dtypes_in != Py_None &&
964
+ npyiter_convert_dtypes(op_dtypes_in,
965
+ op_request_dtypes, nop) != 1) {
966
+ goto fail;
967
+ }
968
+
969
+ ret = PyTuple_New(nnest);
970
+ if (ret == NULL) {
971
+ goto fail;
972
+ }
973
+
974
+ /* For broadcasting allocated arrays */
975
+ for (iaxes = 0; iaxes < naxes; ++iaxes) {
976
+ negones[iaxes] = -1;
977
+ }
978
+
979
+ /*
980
+ * Clear any unnecessary ALLOCATE flags, so we can use them
981
+ * to indicate exactly the allocated outputs. Also, separate
982
+ * the inner loop flags.
983
+ */
984
+ for (iop = 0; iop < nop; ++iop) {
985
+ if ((op_flags[iop]&NPY_ITER_ALLOCATE) && op[iop] != NULL) {
986
+ op_flags[iop] &= ~NPY_ITER_ALLOCATE;
987
+ }
988
+
989
+ /*
990
+ * Clear any flags allowing copies or output allocation for
991
+ * the inner loop.
992
+ */
993
+ op_flags_inner[iop] = op_flags[iop] & ~(NPY_ITER_COPY|
994
+ NPY_ITER_UPDATEIFCOPY|
995
+ NPY_ITER_ALLOCATE);
996
+ /*
997
+ * If buffering is enabled and copying is not,
998
+ * clear the nbo_aligned flag and strip the data type
999
+ * for the outer loops.
1000
+ */
1001
+ if ((flags&(NPY_ITER_BUFFERED)) &&
1002
+ !(op_flags[iop]&(NPY_ITER_COPY|
1003
+ NPY_ITER_UPDATEIFCOPY|
1004
+ NPY_ITER_ALLOCATE))) {
1005
+ op_flags[iop] &= ~(NPY_ITER_NBO|NPY_ITER_ALIGNED|NPY_ITER_CONTIG);
1006
+ op_request_dtypes_inner[iop] = op_request_dtypes[iop];
1007
+ op_request_dtypes[iop] = NULL;
1008
+ }
1009
+ }
1010
+
1011
+ /* Only the inner loop gets the buffering and no inner flags */
1012
+ flags_inner = flags&~NPY_ITER_COMMON_DTYPE;
1013
+ flags &= ~(NPY_ITER_EXTERNAL_LOOP|
1014
+ NPY_ITER_BUFFERED);
1015
+
1016
+ for (inest = 0; inest < nnest; ++inest) {
1017
+ NewNpyArrayIterObject *iter;
1018
+ int *op_axes_nop[NPY_MAXARGS];
1019
+
1020
+ /*
1021
+ * All the operands' op_axes are the same, except for
1022
+ * allocated outputs.
1023
+ */
1024
+ for (iop = 0; iop < nop; ++iop) {
1025
+ if (op_flags[iop]&NPY_ITER_ALLOCATE) {
1026
+ if (inest == 0) {
1027
+ op_axes_nop[iop] = NULL;
1028
+ }
1029
+ else {
1030
+ op_axes_nop[iop] = negones;
1031
+ }
1032
+ }
1033
+ else {
1034
+ op_axes_nop[iop] = nested_op_axes[inest];
1035
+ }
1036
+ }
1037
+
1038
+ /*
1039
+ printf("\n");
1040
+ for (iop = 0; iop < nop; ++iop) {
1041
+ npy_intp i;
1042
+
1043
+ for (i = 0; i < nested_naxes[inest]; ++i) {
1044
+ printf("%d ", (int)op_axes_nop[iop][i]);
1045
+ }
1046
+ printf("\n");
1047
+ }
1048
+ */
1049
+
1050
+ /* Allocate the iterator */
1051
+ iter = (NewNpyArrayIterObject *)npyiter_new(&NpyIter_Type, NULL, NULL);
1052
+ if (iter == NULL) {
1053
+ Py_DECREF(ret);
1054
+ goto fail;
1055
+ }
1056
+
1057
+ if (inest < nnest-1) {
1058
+ iter->iter = NpyIter_AdvancedNew(nop, op, flags, order,
1059
+ casting, op_flags, op_request_dtypes,
1060
+ nested_naxes[inest], op_axes_nop,
1061
+ NULL,
1062
+ 0);
1063
+ }
1064
+ else {
1065
+ iter->iter = NpyIter_AdvancedNew(nop, op, flags_inner, order,
1066
+ casting, op_flags_inner,
1067
+ op_request_dtypes_inner,
1068
+ nested_naxes[inest], op_axes_nop,
1069
+ NULL,
1070
+ buffersize);
1071
+ }
1072
+
1073
+ if (iter->iter == NULL) {
1074
+ Py_DECREF(ret);
1075
+ goto fail;
1076
+ }
1077
+
1078
+ /* Cache some values for the member functions to use */
1079
+ if (npyiter_cache_values(iter) < 0) {
1080
+ Py_DECREF(ret);
1081
+ goto fail;
1082
+ }
1083
+
1084
+ if (NpyIter_GetIterSize(iter->iter) == 0) {
1085
+ iter->started = 1;
1086
+ iter->finished = 1;
1087
+ }
1088
+ else {
1089
+ iter->started = 0;
1090
+ iter->finished = 0;
1091
+ }
1092
+
1093
+ /*
1094
+ * If there are any allocated outputs or any copies were made,
1095
+ * adjust op so that the other iterators use the same ones.
1096
+ */
1097
+ if (inest == 0) {
1098
+ PyArrayObject **operands = NpyIter_GetOperandArray(iter->iter);
1099
+ for (iop = 0; iop < nop; ++iop) {
1100
+ if (op[iop] != operands[iop]) {
1101
+ Py_XDECREF(op[iop]);
1102
+ op[iop] = operands[iop];
1103
+ Py_INCREF(op[iop]);
1104
+ }
1105
+
1106
+ /*
1107
+ * Clear any flags allowing copies for
1108
+ * the rest of the iterators
1109
+ */
1110
+ op_flags[iop] &= ~(NPY_ITER_COPY|
1111
+ NPY_ITER_UPDATEIFCOPY);
1112
+ }
1113
+ /* Clear the common dtype flag for the rest of the iterators */
1114
+ flags &= ~NPY_ITER_COMMON_DTYPE;
1115
+ }
1116
+
1117
+ PyTuple_SET_ITEM(ret, inest, (PyObject *)iter);
1118
+ }
1119
+
1120
+ /* Release our references to the ops and dtypes */
1121
+ for (iop = 0; iop < nop; ++iop) {
1122
+ Py_XDECREF(op[iop]);
1123
+ Py_XDECREF(op_request_dtypes[iop]);
1124
+ Py_XDECREF(op_request_dtypes_inner[iop]);
1125
+ }
1126
+
1127
+ /* Set up the nested child references */
1128
+ for (inest = 0; inest < nnest-1; ++inest) {
1129
+ NewNpyArrayIterObject *iter;
1130
+ iter = (NewNpyArrayIterObject *)PyTuple_GET_ITEM(ret, inest);
1131
+ /*
1132
+ * Indicates which iterator to reset with new base pointers
1133
+ * each iteration step.
1134
+ */
1135
+ iter->nested_child =
1136
+ (NewNpyArrayIterObject *)PyTuple_GET_ITEM(ret, inest+1);
1137
+ Py_INCREF(iter->nested_child);
1138
+ /*
1139
+ * Need to do a nested reset so all the iterators point
1140
+ * at the right data
1141
+ */
1142
+ if (NpyIter_ResetBasePointers(iter->nested_child->iter,
1143
+ iter->dataptrs, NULL) != NPY_SUCCEED) {
1144
+ Py_DECREF(ret);
1145
+ return NULL;
1146
+ }
1147
+ }
1148
+
1149
+ return ret;
1150
+
1151
+ fail:
1152
+ for (iop = 0; iop < nop; ++iop) {
1153
+ Py_XDECREF(op[iop]);
1154
+ Py_XDECREF(op_request_dtypes[iop]);
1155
+ Py_XDECREF(op_request_dtypes_inner[iop]);
1156
+ }
1157
+ return NULL;
1158
+ }
1159
+
1160
+ static void
1161
+ npyiter_dealloc(NewNpyArrayIterObject *self)
1162
+ {
1163
+ if (self->iter) {
1164
+ NpyIter_Deallocate(self->iter);
1165
+ self->iter = NULL;
1166
+ Py_XDECREF(self->nested_child);
1167
+ self->nested_child = NULL;
1168
+ }
1169
+ Py_TYPE(self)->tp_free((PyObject*)self);
1170
+ }
1171
+
1172
+ static int
1173
+ npyiter_resetbasepointers(NewNpyArrayIterObject *self)
1174
+ {
1175
+ while (self->nested_child) {
1176
+ if (NpyIter_ResetBasePointers(self->nested_child->iter,
1177
+ self->dataptrs, NULL) != NPY_SUCCEED) {
1178
+ return NPY_FAIL;
1179
+ }
1180
+ self = self->nested_child;
1181
+ if (NpyIter_GetIterSize(self->iter) == 0) {
1182
+ self->started = 1;
1183
+ self->finished = 1;
1184
+ }
1185
+ else {
1186
+ self->started = 0;
1187
+ self->finished = 0;
1188
+ }
1189
+ }
1190
+
1191
+ return NPY_SUCCEED;
1192
+ }
1193
+
1194
+ static PyObject *
1195
+ npyiter_reset(NewNpyArrayIterObject *self)
1196
+ {
1197
+ if (self->iter == NULL) {
1198
+ PyErr_SetString(PyExc_ValueError,
1199
+ "Iterator is invalid");
1200
+ return NULL;
1201
+ }
1202
+
1203
+ if (NpyIter_Reset(self->iter, NULL) != NPY_SUCCEED) {
1204
+ return NULL;
1205
+ }
1206
+ if (NpyIter_GetIterSize(self->iter) == 0) {
1207
+ self->started = 1;
1208
+ self->finished = 1;
1209
+ }
1210
+ else {
1211
+ self->started = 0;
1212
+ self->finished = 0;
1213
+ }
1214
+
1215
+ if (self->get_multi_index == NULL && NpyIter_HasMultiIndex(self->iter)) {
1216
+ self->get_multi_index = NpyIter_GetGetMultiIndex(self->iter, NULL);
1217
+ }
1218
+
1219
+ /* If there is nesting, the nested iterators should be reset */
1220
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1221
+ return NULL;
1222
+ }
1223
+
1224
+ Py_RETURN_NONE;
1225
+ }
1226
+
1227
+ /*
1228
+ * Makes a copy of the iterator. Note that the nesting is not
1229
+ * copied.
1230
+ */
1231
+ static PyObject *
1232
+ npyiter_copy(NewNpyArrayIterObject *self)
1233
+ {
1234
+ NewNpyArrayIterObject *iter;
1235
+
1236
+ if (self->iter == NULL) {
1237
+ PyErr_SetString(PyExc_ValueError,
1238
+ "Iterator is invalid");
1239
+ return NULL;
1240
+ }
1241
+
1242
+ /* Allocate the iterator */
1243
+ iter = (NewNpyArrayIterObject *)npyiter_new(&NpyIter_Type, NULL, NULL);
1244
+ if (iter == NULL) {
1245
+ return NULL;
1246
+ }
1247
+
1248
+ /* Copy the C iterator */
1249
+ iter->iter = NpyIter_Copy(self->iter);
1250
+ if (iter->iter == NULL) {
1251
+ Py_DECREF(iter);
1252
+ return NULL;
1253
+ }
1254
+
1255
+ /* Cache some values for the member functions to use */
1256
+ if (npyiter_cache_values(iter) < 0) {
1257
+ Py_DECREF(iter);
1258
+ return NULL;
1259
+ }
1260
+
1261
+ iter->started = self->started;
1262
+ iter->finished = self->finished;
1263
+
1264
+ return (PyObject *)iter;
1265
+ }
1266
+
1267
+ static PyObject *
1268
+ npyiter_iternext(NewNpyArrayIterObject *self)
1269
+ {
1270
+ if (self->iter != NULL && self->iternext != NULL &&
1271
+ !self->finished && self->iternext(self->iter)) {
1272
+ /* If there is nesting, the nested iterators should be reset */
1273
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1274
+ return NULL;
1275
+ }
1276
+
1277
+ Py_RETURN_TRUE;
1278
+ }
1279
+ else {
1280
+ self->finished = 1;
1281
+ Py_RETURN_FALSE;
1282
+ }
1283
+ }
1284
+
1285
+ static PyObject *
1286
+ npyiter_remove_axis(NewNpyArrayIterObject *self, PyObject *args)
1287
+ {
1288
+ int axis = 0;
1289
+
1290
+ if (self->iter == NULL) {
1291
+ PyErr_SetString(PyExc_ValueError,
1292
+ "Iterator is invalid");
1293
+ return NULL;
1294
+ }
1295
+
1296
+ if (!PyArg_ParseTuple(args, "i", &axis)) {
1297
+ return NULL;
1298
+ }
1299
+
1300
+ if (NpyIter_RemoveAxis(self->iter, axis) != NPY_SUCCEED) {
1301
+ return NULL;
1302
+ }
1303
+ /* RemoveAxis invalidates cached values */
1304
+ if (npyiter_cache_values(self) < 0) {
1305
+ return NULL;
1306
+ }
1307
+ /* RemoveAxis also resets the iterator */
1308
+ if (NpyIter_GetIterSize(self->iter) == 0) {
1309
+ self->started = 1;
1310
+ self->finished = 1;
1311
+ }
1312
+ else {
1313
+ self->started = 0;
1314
+ self->finished = 0;
1315
+ }
1316
+
1317
+ Py_RETURN_NONE;
1318
+ }
1319
+
1320
+ static PyObject *
1321
+ npyiter_remove_multi_index(NewNpyArrayIterObject *self)
1322
+ {
1323
+ if (self->iter == NULL) {
1324
+ PyErr_SetString(PyExc_ValueError,
1325
+ "Iterator is invalid");
1326
+ return NULL;
1327
+ }
1328
+
1329
+ NpyIter_RemoveMultiIndex(self->iter);
1330
+ /* RemoveMultiIndex invalidates cached values */
1331
+ npyiter_cache_values(self);
1332
+ /* RemoveMultiIndex also resets the iterator */
1333
+ if (NpyIter_GetIterSize(self->iter) == 0) {
1334
+ self->started = 1;
1335
+ self->finished = 1;
1336
+ }
1337
+ else {
1338
+ self->started = 0;
1339
+ self->finished = 0;
1340
+ }
1341
+
1342
+ Py_RETURN_NONE;
1343
+ }
1344
+
1345
+ static PyObject *
1346
+ npyiter_enable_external_loop(NewNpyArrayIterObject *self)
1347
+ {
1348
+ if (self->iter == NULL) {
1349
+ PyErr_SetString(PyExc_ValueError,
1350
+ "Iterator is invalid");
1351
+ return NULL;
1352
+ }
1353
+
1354
+ NpyIter_EnableExternalLoop(self->iter);
1355
+ /* EnableExternalLoop invalidates cached values */
1356
+ npyiter_cache_values(self);
1357
+ /* EnableExternalLoop also resets the iterator */
1358
+ if (NpyIter_GetIterSize(self->iter) == 0) {
1359
+ self->started = 1;
1360
+ self->finished = 1;
1361
+ }
1362
+ else {
1363
+ self->started = 0;
1364
+ self->finished = 0;
1365
+ }
1366
+
1367
+ Py_RETURN_NONE;
1368
+ }
1369
+
1370
+ static PyObject *
1371
+ npyiter_debug_print(NewNpyArrayIterObject *self)
1372
+ {
1373
+ if (self->iter != NULL) {
1374
+ NpyIter_DebugPrint(self->iter);
1375
+ }
1376
+ else {
1377
+ printf("Iterator: (nil)\n");
1378
+ }
1379
+
1380
+ Py_RETURN_NONE;
1381
+ }
1382
+
1383
+ NPY_NO_EXPORT PyObject *
1384
+ npyiter_seq_item(NewNpyArrayIterObject *self, Py_ssize_t i);
1385
+
1386
+ static PyObject *npyiter_value_get(NewNpyArrayIterObject *self)
1387
+ {
1388
+ PyObject *ret;
1389
+
1390
+ npy_intp iop, nop;
1391
+
1392
+ if (self->iter == NULL || self->finished) {
1393
+ PyErr_SetString(PyExc_ValueError,
1394
+ "Iterator is past the end");
1395
+ return NULL;
1396
+ }
1397
+
1398
+ nop = NpyIter_GetNOp(self->iter);
1399
+
1400
+ /* Return an array or tuple of arrays with the values */
1401
+ if (nop == 1) {
1402
+ ret = npyiter_seq_item(self, 0);
1403
+ }
1404
+ else {
1405
+ ret = PyTuple_New(nop);
1406
+ if (ret == NULL) {
1407
+ return NULL;
1408
+ }
1409
+ for (iop = 0; iop < nop; ++iop) {
1410
+ PyObject *a = npyiter_seq_item(self, iop);
1411
+ if (a == NULL) {
1412
+ Py_DECREF(ret);
1413
+ return NULL;
1414
+ }
1415
+ PyTuple_SET_ITEM(ret, iop, a);
1416
+ }
1417
+ }
1418
+
1419
+ return ret;
1420
+ }
1421
+
1422
+ static PyObject *npyiter_operands_get(NewNpyArrayIterObject *self)
1423
+ {
1424
+ PyObject *ret;
1425
+
1426
+ npy_intp iop, nop;
1427
+ PyArrayObject **operands;
1428
+
1429
+ if (self->iter == NULL) {
1430
+ PyErr_SetString(PyExc_ValueError,
1431
+ "Iterator is invalid");
1432
+ return NULL;
1433
+ }
1434
+
1435
+ nop = NpyIter_GetNOp(self->iter);
1436
+ operands = self->operands;
1437
+
1438
+ ret = PyTuple_New(nop);
1439
+ if (ret == NULL) {
1440
+ return NULL;
1441
+ }
1442
+ for (iop = 0; iop < nop; ++iop) {
1443
+ PyObject *operand = (PyObject *)operands[iop];
1444
+
1445
+ Py_INCREF(operand);
1446
+ PyTuple_SET_ITEM(ret, iop, operand);
1447
+ }
1448
+
1449
+ return ret;
1450
+ }
1451
+
1452
+ static PyObject *npyiter_itviews_get(NewNpyArrayIterObject *self)
1453
+ {
1454
+ PyObject *ret;
1455
+
1456
+ npy_intp iop, nop;
1457
+
1458
+ if (self->iter == NULL) {
1459
+ PyErr_SetString(PyExc_ValueError,
1460
+ "Iterator is invalid");
1461
+ return NULL;
1462
+ }
1463
+
1464
+ nop = NpyIter_GetNOp(self->iter);
1465
+
1466
+ ret = PyTuple_New(nop);
1467
+ if (ret == NULL) {
1468
+ return NULL;
1469
+ }
1470
+ for (iop = 0; iop < nop; ++iop) {
1471
+ PyArrayObject *view = NpyIter_GetIterView(self->iter, iop);
1472
+
1473
+ if (view == NULL) {
1474
+ Py_DECREF(ret);
1475
+ return NULL;
1476
+ }
1477
+ PyTuple_SET_ITEM(ret, iop, (PyObject *)view);
1478
+ }
1479
+
1480
+ return ret;
1481
+ }
1482
+
1483
+ static PyObject *
1484
+ npyiter_next(NewNpyArrayIterObject *self)
1485
+ {
1486
+ if (self->iter == NULL || self->iternext == NULL || self->finished) {
1487
+ return NULL;
1488
+ }
1489
+
1490
+ /*
1491
+ * Use the started flag for the Python iteration protocol to work
1492
+ * when buffering is enabled.
1493
+ */
1494
+ if (self->started) {
1495
+ if (!self->iternext(self->iter)) {
1496
+ self->finished = 1;
1497
+ return NULL;
1498
+ }
1499
+
1500
+ /* If there is nesting, the nested iterators should be reset */
1501
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1502
+ return NULL;
1503
+ }
1504
+ }
1505
+ self->started = 1;
1506
+
1507
+ return npyiter_value_get(self);
1508
+ };
1509
+
1510
+ static PyObject *npyiter_shape_get(NewNpyArrayIterObject *self)
1511
+ {
1512
+ PyObject *ret;
1513
+ npy_intp idim, ndim, shape[NPY_MAXDIMS];
1514
+
1515
+ if (self->iter == NULL || self->finished) {
1516
+ PyErr_SetString(PyExc_ValueError,
1517
+ "Iterator is past the end");
1518
+ return NULL;
1519
+ }
1520
+
1521
+ if (NpyIter_GetShape(self->iter, shape) == NPY_SUCCEED) {
1522
+ ndim = NpyIter_GetNDim(self->iter);
1523
+ ret = PyTuple_New(ndim);
1524
+ if (ret != NULL) {
1525
+ for (idim = 0; idim < ndim; ++idim) {
1526
+ PyTuple_SET_ITEM(ret, idim,
1527
+ PyInt_FromLong(shape[idim]));
1528
+ }
1529
+ return ret;
1530
+ }
1531
+ }
1532
+
1533
+ return NULL;
1534
+ }
1535
+
1536
+ static PyObject *npyiter_multi_index_get(NewNpyArrayIterObject *self)
1537
+ {
1538
+ PyObject *ret;
1539
+ npy_intp idim, ndim, multi_index[NPY_MAXDIMS];
1540
+
1541
+ if (self->iter == NULL || self->finished) {
1542
+ PyErr_SetString(PyExc_ValueError,
1543
+ "Iterator is past the end");
1544
+ return NULL;
1545
+ }
1546
+
1547
+ if (self->get_multi_index != NULL) {
1548
+ ndim = NpyIter_GetNDim(self->iter);
1549
+ self->get_multi_index(self->iter, multi_index);
1550
+ ret = PyTuple_New(ndim);
1551
+ if (ret == NULL) {
1552
+ return NULL;
1553
+ }
1554
+ for (idim = 0; idim < ndim; ++idim) {
1555
+ PyTuple_SET_ITEM(ret, idim,
1556
+ PyInt_FromLong(multi_index[idim]));
1557
+ }
1558
+ return ret;
1559
+ }
1560
+ else {
1561
+ if (!NpyIter_HasMultiIndex(self->iter)) {
1562
+ PyErr_SetString(PyExc_ValueError,
1563
+ "Iterator is not tracking a multi-index");
1564
+ return NULL;
1565
+ }
1566
+ else if (NpyIter_HasDelayedBufAlloc(self->iter)) {
1567
+ PyErr_SetString(PyExc_ValueError,
1568
+ "Iterator construction used delayed buffer allocation, "
1569
+ "and no reset has been done yet");
1570
+ return NULL;
1571
+ }
1572
+ else {
1573
+ PyErr_SetString(PyExc_ValueError,
1574
+ "Iterator is in an invalid state");
1575
+ return NULL;
1576
+ }
1577
+ }
1578
+ }
1579
+
1580
+ static int
1581
+ npyiter_multi_index_set(NewNpyArrayIterObject *self, PyObject *value)
1582
+ {
1583
+ npy_intp idim, ndim, multi_index[NPY_MAXDIMS];
1584
+
1585
+ if (value == NULL) {
1586
+ PyErr_SetString(PyExc_AttributeError,
1587
+ "Cannot delete nditer multi_index");
1588
+ return -1;
1589
+ }
1590
+ if (self->iter == NULL) {
1591
+ PyErr_SetString(PyExc_ValueError,
1592
+ "Iterator is invalid");
1593
+ return -1;
1594
+ }
1595
+
1596
+ if (NpyIter_HasMultiIndex(self->iter)) {
1597
+ ndim = NpyIter_GetNDim(self->iter);
1598
+ if (!PySequence_Check(value)) {
1599
+ PyErr_SetString(PyExc_ValueError,
1600
+ "multi_index must be set with a sequence");
1601
+ return -1;
1602
+ }
1603
+ if (PySequence_Size(value) != ndim) {
1604
+ PyErr_SetString(PyExc_ValueError,
1605
+ "Wrong number of indices");
1606
+ return -1;
1607
+ }
1608
+ for (idim = 0; idim < ndim; ++idim) {
1609
+ PyObject *v = PySequence_GetItem(value, idim);
1610
+ multi_index[idim] = PyInt_AsLong(v);
1611
+ if (multi_index[idim]==-1 && PyErr_Occurred()) {
1612
+ Py_XDECREF(v);
1613
+ return -1;
1614
+ }
1615
+ }
1616
+ if (NpyIter_GotoMultiIndex(self->iter, multi_index) != NPY_SUCCEED) {
1617
+ return -1;
1618
+ }
1619
+ self->started = 0;
1620
+ self->finished = 0;
1621
+
1622
+ /* If there is nesting, the nested iterators should be reset */
1623
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1624
+ return -1;
1625
+ }
1626
+
1627
+ return 0;
1628
+ }
1629
+ else {
1630
+ PyErr_SetString(PyExc_ValueError,
1631
+ "Iterator is not tracking a multi-index");
1632
+ return -1;
1633
+ }
1634
+ }
1635
+
1636
+ static PyObject *npyiter_index_get(NewNpyArrayIterObject *self)
1637
+ {
1638
+ if (self->iter == NULL || self->finished) {
1639
+ PyErr_SetString(PyExc_ValueError,
1640
+ "Iterator is past the end");
1641
+ return NULL;
1642
+ }
1643
+
1644
+ if (NpyIter_HasIndex(self->iter)) {
1645
+ npy_intp ind = *NpyIter_GetIndexPtr(self->iter);
1646
+ return PyInt_FromLong(ind);
1647
+ }
1648
+ else {
1649
+ PyErr_SetString(PyExc_ValueError,
1650
+ "Iterator does not have an index");
1651
+ return NULL;
1652
+ }
1653
+ }
1654
+
1655
+ static int npyiter_index_set(NewNpyArrayIterObject *self, PyObject *value)
1656
+ {
1657
+ if (value == NULL) {
1658
+ PyErr_SetString(PyExc_AttributeError,
1659
+ "Cannot delete nditer index");
1660
+ return -1;
1661
+ }
1662
+ if (self->iter == NULL) {
1663
+ PyErr_SetString(PyExc_ValueError,
1664
+ "Iterator is invalid");
1665
+ return -1;
1666
+ }
1667
+
1668
+ if (NpyIter_HasIndex(self->iter)) {
1669
+ npy_intp ind;
1670
+ ind = PyInt_AsLong(value);
1671
+ if (ind==-1 && PyErr_Occurred()) {
1672
+ return -1;
1673
+ }
1674
+ if (NpyIter_GotoIndex(self->iter, ind) != NPY_SUCCEED) {
1675
+ return -1;
1676
+ }
1677
+ self->started = 0;
1678
+ self->finished = 0;
1679
+
1680
+ /* If there is nesting, the nested iterators should be reset */
1681
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1682
+ return -1;
1683
+ }
1684
+
1685
+ return 0;
1686
+ }
1687
+ else {
1688
+ PyErr_SetString(PyExc_ValueError,
1689
+ "Iterator does not have an index");
1690
+ return -1;
1691
+ }
1692
+ }
1693
+
1694
+ static PyObject *npyiter_iterindex_get(NewNpyArrayIterObject *self)
1695
+ {
1696
+ if (self->iter == NULL || self->finished) {
1697
+ PyErr_SetString(PyExc_ValueError,
1698
+ "Iterator is past the end");
1699
+ return NULL;
1700
+ }
1701
+
1702
+ return PyInt_FromLong(NpyIter_GetIterIndex(self->iter));
1703
+ }
1704
+
1705
+ static int npyiter_iterindex_set(NewNpyArrayIterObject *self, PyObject *value)
1706
+ {
1707
+ npy_intp iterindex;
1708
+
1709
+ if (value == NULL) {
1710
+ PyErr_SetString(PyExc_AttributeError,
1711
+ "Cannot delete nditer iterindex");
1712
+ return -1;
1713
+ }
1714
+ if (self->iter == NULL) {
1715
+ PyErr_SetString(PyExc_ValueError,
1716
+ "Iterator is invalid");
1717
+ return -1;
1718
+ }
1719
+
1720
+ iterindex = PyInt_AsLong(value);
1721
+ if (iterindex==-1 && PyErr_Occurred()) {
1722
+ return -1;
1723
+ }
1724
+ if (NpyIter_GotoIterIndex(self->iter, iterindex) != NPY_SUCCEED) {
1725
+ return -1;
1726
+ }
1727
+ self->started = 0;
1728
+ self->finished = 0;
1729
+
1730
+ /* If there is nesting, the nested iterators should be reset */
1731
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1732
+ return -1;
1733
+ }
1734
+
1735
+ return 0;
1736
+ }
1737
+
1738
+ static PyObject *npyiter_iterrange_get(NewNpyArrayIterObject *self)
1739
+ {
1740
+ npy_intp istart = 0, iend = 0;
1741
+ PyObject *ret;
1742
+
1743
+ if (self->iter == NULL) {
1744
+ PyErr_SetString(PyExc_ValueError,
1745
+ "Iterator is invalid");
1746
+ return NULL;
1747
+ }
1748
+
1749
+ NpyIter_GetIterIndexRange(self->iter, &istart, &iend);
1750
+
1751
+ ret = PyTuple_New(2);
1752
+ if (ret == NULL) {
1753
+ return NULL;
1754
+ }
1755
+
1756
+ PyTuple_SET_ITEM(ret, 0, PyInt_FromLong(istart));
1757
+ PyTuple_SET_ITEM(ret, 1, PyInt_FromLong(iend));
1758
+
1759
+ return ret;
1760
+ }
1761
+
1762
+ static int npyiter_iterrange_set(NewNpyArrayIterObject *self, PyObject *value)
1763
+ {
1764
+ npy_intp istart = 0, iend = 0;
1765
+
1766
+ if (value == NULL) {
1767
+ PyErr_SetString(PyExc_AttributeError,
1768
+ "Cannot delete nditer iterrange");
1769
+ return -1;
1770
+ }
1771
+ if (self->iter == NULL) {
1772
+ PyErr_SetString(PyExc_ValueError,
1773
+ "Iterator is invalid");
1774
+ return -1;
1775
+ }
1776
+
1777
+ if (!PyArg_ParseTuple(value, "nn", &istart, &iend)) {
1778
+ return -1;
1779
+ }
1780
+
1781
+ if (NpyIter_ResetToIterIndexRange(self->iter, istart, iend, NULL)
1782
+ != NPY_SUCCEED) {
1783
+ return -1;
1784
+ }
1785
+ if (istart < iend) {
1786
+ self->started = self->finished = 0;
1787
+ }
1788
+ else {
1789
+ self->started = self->finished = 1;
1790
+ }
1791
+
1792
+ if (self->get_multi_index == NULL && NpyIter_HasMultiIndex(self->iter)) {
1793
+ self->get_multi_index = NpyIter_GetGetMultiIndex(self->iter, NULL);
1794
+ }
1795
+
1796
+ /* If there is nesting, the nested iterators should be reset */
1797
+ if (npyiter_resetbasepointers(self) != NPY_SUCCEED) {
1798
+ return -1;
1799
+ }
1800
+
1801
+ return 0;
1802
+ }
1803
+
1804
+ static PyObject *npyiter_has_delayed_bufalloc_get(NewNpyArrayIterObject *self)
1805
+ {
1806
+ if (self->iter == NULL) {
1807
+ PyErr_SetString(PyExc_ValueError,
1808
+ "Iterator is invalid");
1809
+ return NULL;
1810
+ }
1811
+
1812
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
1813
+ Py_RETURN_TRUE;
1814
+ }
1815
+ else {
1816
+ Py_RETURN_FALSE;
1817
+ }
1818
+ }
1819
+
1820
+ static PyObject *npyiter_iterationneedsapi_get(NewNpyArrayIterObject *self)
1821
+ {
1822
+ if (self->iter == NULL) {
1823
+ PyErr_SetString(PyExc_ValueError,
1824
+ "Iterator is invalid");
1825
+ return NULL;
1826
+ }
1827
+
1828
+ if (NpyIter_IterationNeedsAPI(self->iter)) {
1829
+ Py_RETURN_TRUE;
1830
+ }
1831
+ else {
1832
+ Py_RETURN_FALSE;
1833
+ }
1834
+ }
1835
+
1836
+ static PyObject *npyiter_has_multi_index_get(NewNpyArrayIterObject *self)
1837
+ {
1838
+ if (self->iter == NULL) {
1839
+ PyErr_SetString(PyExc_ValueError,
1840
+ "Iterator is invalid");
1841
+ return NULL;
1842
+ }
1843
+
1844
+ if (NpyIter_HasMultiIndex(self->iter)) {
1845
+ Py_RETURN_TRUE;
1846
+ }
1847
+ else {
1848
+ Py_RETURN_FALSE;
1849
+ }
1850
+ }
1851
+
1852
+ static PyObject *npyiter_has_index_get(NewNpyArrayIterObject *self)
1853
+ {
1854
+ if (self->iter == NULL) {
1855
+ PyErr_SetString(PyExc_ValueError,
1856
+ "Iterator is invalid");
1857
+ return NULL;
1858
+ }
1859
+
1860
+ if (NpyIter_HasIndex(self->iter)) {
1861
+ Py_RETURN_TRUE;
1862
+ }
1863
+ else {
1864
+ Py_RETURN_FALSE;
1865
+ }
1866
+ }
1867
+
1868
+ static PyObject *npyiter_dtypes_get(NewNpyArrayIterObject *self)
1869
+ {
1870
+ PyObject *ret;
1871
+
1872
+ npy_intp iop, nop;
1873
+ PyArray_Descr **dtypes;
1874
+
1875
+ if (self->iter == NULL) {
1876
+ PyErr_SetString(PyExc_ValueError,
1877
+ "Iterator is invalid");
1878
+ return NULL;
1879
+ }
1880
+
1881
+ nop = NpyIter_GetNOp(self->iter);
1882
+
1883
+ ret = PyTuple_New(nop);
1884
+ if (ret == NULL) {
1885
+ return NULL;
1886
+ }
1887
+ dtypes = self->dtypes;
1888
+ for (iop = 0; iop < nop; ++iop) {
1889
+ PyArray_Descr *dtype = dtypes[iop];
1890
+
1891
+ Py_INCREF(dtype);
1892
+ PyTuple_SET_ITEM(ret, iop, (PyObject *)dtype);
1893
+ }
1894
+
1895
+ return ret;
1896
+ }
1897
+
1898
+ static PyObject *npyiter_ndim_get(NewNpyArrayIterObject *self)
1899
+ {
1900
+ if (self->iter == NULL) {
1901
+ PyErr_SetString(PyExc_ValueError,
1902
+ "Iterator is invalid");
1903
+ return NULL;
1904
+ }
1905
+
1906
+ return PyInt_FromLong(NpyIter_GetNDim(self->iter));
1907
+ }
1908
+
1909
+ static PyObject *npyiter_nop_get(NewNpyArrayIterObject *self)
1910
+ {
1911
+ if (self->iter == NULL) {
1912
+ PyErr_SetString(PyExc_ValueError,
1913
+ "Iterator is invalid");
1914
+ return NULL;
1915
+ }
1916
+
1917
+ return PyInt_FromLong(NpyIter_GetNOp(self->iter));
1918
+ }
1919
+
1920
+ static PyObject *npyiter_itersize_get(NewNpyArrayIterObject *self)
1921
+ {
1922
+ if (self->iter == NULL) {
1923
+ PyErr_SetString(PyExc_ValueError,
1924
+ "Iterator is invalid");
1925
+ return NULL;
1926
+ }
1927
+
1928
+ return PyInt_FromLong(NpyIter_GetIterSize(self->iter));
1929
+ }
1930
+
1931
+ static PyObject *npyiter_finished_get(NewNpyArrayIterObject *self)
1932
+ {
1933
+ if (self->iter == NULL || !self->finished) {
1934
+ Py_RETURN_FALSE;
1935
+ }
1936
+ else {
1937
+ Py_RETURN_TRUE;
1938
+ }
1939
+ }
1940
+
1941
+ NPY_NO_EXPORT Py_ssize_t
1942
+ npyiter_seq_length(NewNpyArrayIterObject *self)
1943
+ {
1944
+ if (self->iter == NULL) {
1945
+ return 0;
1946
+ }
1947
+ else {
1948
+ return NpyIter_GetNOp(self->iter);
1949
+ }
1950
+ }
1951
+
1952
+ NPY_NO_EXPORT PyObject *
1953
+ npyiter_seq_item(NewNpyArrayIterObject *self, Py_ssize_t i)
1954
+ {
1955
+ PyArrayObject *ret;
1956
+
1957
+ npy_intp ret_ndim;
1958
+ npy_intp nop, innerloopsize, innerstride;
1959
+ char *dataptr;
1960
+ PyArray_Descr *dtype;
1961
+ int has_external_loop;
1962
+ Py_ssize_t i_orig = i;
1963
+
1964
+ if (self->iter == NULL || self->finished) {
1965
+ PyErr_SetString(PyExc_ValueError,
1966
+ "Iterator is past the end");
1967
+ return NULL;
1968
+ }
1969
+
1970
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
1971
+ PyErr_SetString(PyExc_ValueError,
1972
+ "Iterator construction used delayed buffer allocation, "
1973
+ "and no reset has been done yet");
1974
+ return NULL;
1975
+ }
1976
+
1977
+ nop = NpyIter_GetNOp(self->iter);
1978
+
1979
+ /* Negative indexing */
1980
+ if (i < 0) {
1981
+ i += nop;
1982
+ }
1983
+
1984
+ if (i < 0 || i >= nop) {
1985
+ PyErr_Format(PyExc_IndexError,
1986
+ "Iterator operand index %d is out of bounds", (int)i_orig);
1987
+ return NULL;
1988
+ }
1989
+
1990
+ #if 0
1991
+ /*
1992
+ * This check is disabled because it prevents things like
1993
+ * np.add(it[0], it[1], it[2]), where it[2] is a write-only
1994
+ * parameter. When write-only, the value of it[i] is
1995
+ * likely random junk, as if it were allocated with an
1996
+ * np.empty(...) call.
1997
+ */
1998
+ if (!self->readflags[i]) {
1999
+ PyErr_Format(PyExc_RuntimeError,
2000
+ "Iterator operand %d is write-only", (int)i);
2001
+ return NULL;
2002
+ }
2003
+ #endif
2004
+
2005
+ dataptr = self->dataptrs[i];
2006
+ dtype = self->dtypes[i];
2007
+ has_external_loop = NpyIter_HasExternalLoop(self->iter);
2008
+
2009
+ if (has_external_loop) {
2010
+ innerloopsize = *self->innerloopsizeptr;
2011
+ innerstride = self->innerstrides[i];
2012
+ ret_ndim = 1;
2013
+ }
2014
+ else {
2015
+ innerloopsize = 1;
2016
+ innerstride = 0;
2017
+ /* If the iterator is going over every element, return array scalars */
2018
+ ret_ndim = 0;
2019
+ }
2020
+
2021
+ Py_INCREF(dtype);
2022
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type, dtype,
2023
+ ret_ndim, &innerloopsize,
2024
+ &innerstride, dataptr,
2025
+ self->writeflags[i] ? NPY_ARRAY_WRITEABLE : 0, NULL);
2026
+ if (ret == NULL) {
2027
+ return NULL;
2028
+ }
2029
+ Py_INCREF(self);
2030
+ if (PyArray_SetBaseObject(ret, (PyObject *)self) < 0) {
2031
+ Py_XDECREF(ret);
2032
+ return NULL;
2033
+ }
2034
+
2035
+ PyArray_UpdateFlags(ret, NPY_ARRAY_UPDATE_ALL);
2036
+
2037
+ return (PyObject *)ret;
2038
+ }
2039
+
2040
+ NPY_NO_EXPORT PyObject *
2041
+ npyiter_seq_slice(NewNpyArrayIterObject *self,
2042
+ Py_ssize_t ilow, Py_ssize_t ihigh)
2043
+ {
2044
+ PyObject *ret;
2045
+ npy_intp nop;
2046
+ Py_ssize_t i;
2047
+
2048
+ if (self->iter == NULL || self->finished) {
2049
+ PyErr_SetString(PyExc_ValueError,
2050
+ "Iterator is past the end");
2051
+ return NULL;
2052
+ }
2053
+
2054
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
2055
+ PyErr_SetString(PyExc_ValueError,
2056
+ "Iterator construction used delayed buffer allocation, "
2057
+ "and no reset has been done yet");
2058
+ return NULL;
2059
+ }
2060
+
2061
+ nop = NpyIter_GetNOp(self->iter);
2062
+ if (ilow < 0) {
2063
+ ilow = 0;
2064
+ }
2065
+ else if (ilow >= nop) {
2066
+ ilow = nop-1;
2067
+ }
2068
+ if (ihigh < ilow) {
2069
+ ihigh = ilow;
2070
+ }
2071
+ else if (ihigh > nop) {
2072
+ ihigh = nop;
2073
+ }
2074
+
2075
+ ret = PyTuple_New(ihigh-ilow);
2076
+ if (ret == NULL) {
2077
+ return NULL;
2078
+ }
2079
+ for (i = ilow; i < ihigh ; ++i) {
2080
+ PyObject *item = npyiter_seq_item(self, i);
2081
+ if (item == NULL) {
2082
+ Py_DECREF(ret);
2083
+ return NULL;
2084
+ }
2085
+ PyTuple_SET_ITEM(ret, i-ilow, item);
2086
+ }
2087
+ return ret;
2088
+ }
2089
+
2090
+ NPY_NO_EXPORT int
2091
+ npyiter_seq_ass_item(NewNpyArrayIterObject *self, Py_ssize_t i, PyObject *v)
2092
+ {
2093
+
2094
+ npy_intp nop, innerloopsize, innerstride;
2095
+ char *dataptr;
2096
+ PyArray_Descr *dtype;
2097
+ PyArrayObject *tmp;
2098
+ int ret, has_external_loop;
2099
+ Py_ssize_t i_orig = i;
2100
+
2101
+
2102
+ if (v == NULL) {
2103
+ PyErr_SetString(PyExc_TypeError,
2104
+ "Cannot delete iterator elements");
2105
+ return -1;
2106
+ }
2107
+
2108
+ if (self->iter == NULL || self->finished) {
2109
+ PyErr_SetString(PyExc_ValueError,
2110
+ "Iterator is past the end");
2111
+ return -1;
2112
+ }
2113
+
2114
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
2115
+ PyErr_SetString(PyExc_ValueError,
2116
+ "Iterator construction used delayed buffer allocation, "
2117
+ "and no reset has been done yet");
2118
+ return -1;
2119
+ }
2120
+
2121
+ nop = NpyIter_GetNOp(self->iter);
2122
+
2123
+ /* Negative indexing */
2124
+ if (i < 0) {
2125
+ i += nop;
2126
+ }
2127
+
2128
+ if (i < 0 || i >= nop) {
2129
+ PyErr_Format(PyExc_IndexError,
2130
+ "Iterator operand index %d is out of bounds", (int)i_orig);
2131
+ return -1;
2132
+ }
2133
+ if (!self->writeflags[i]) {
2134
+ PyErr_Format(PyExc_RuntimeError,
2135
+ "Iterator operand %d is not writeable", (int)i_orig);
2136
+ return -1;
2137
+ }
2138
+
2139
+ dataptr = self->dataptrs[i];
2140
+ dtype = self->dtypes[i];
2141
+ has_external_loop = NpyIter_HasExternalLoop(self->iter);
2142
+
2143
+ if (has_external_loop) {
2144
+ innerloopsize = *self->innerloopsizeptr;
2145
+ innerstride = self->innerstrides[i];
2146
+ }
2147
+ else {
2148
+ innerloopsize = 1;
2149
+ innerstride = 0;
2150
+ }
2151
+
2152
+ /* TODO - there should be a better way than this... */
2153
+ Py_INCREF(dtype);
2154
+ tmp = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type, dtype,
2155
+ 1, &innerloopsize,
2156
+ &innerstride, dataptr,
2157
+ NPY_ARRAY_WRITEABLE, NULL);
2158
+ if (tmp == NULL) {
2159
+ return -1;
2160
+ }
2161
+
2162
+ PyArray_UpdateFlags(tmp, NPY_ARRAY_UPDATE_ALL);
2163
+
2164
+ ret = PyArray_CopyObject(tmp, v);
2165
+ Py_DECREF(tmp);
2166
+ return ret;
2167
+ }
2168
+
2169
+ static int
2170
+ npyiter_seq_ass_slice(NewNpyArrayIterObject *self, Py_ssize_t ilow,
2171
+ Py_ssize_t ihigh, PyObject *v)
2172
+ {
2173
+ npy_intp nop;
2174
+ Py_ssize_t i;
2175
+
2176
+ if (v == NULL) {
2177
+ PyErr_SetString(PyExc_TypeError,
2178
+ "Cannot delete iterator elements");
2179
+ return -1;
2180
+ }
2181
+
2182
+ if (self->iter == NULL || self->finished) {
2183
+ PyErr_SetString(PyExc_ValueError,
2184
+ "Iterator is past the end");
2185
+ return -1;
2186
+ }
2187
+
2188
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
2189
+ PyErr_SetString(PyExc_ValueError,
2190
+ "Iterator construction used delayed buffer allocation, "
2191
+ "and no reset has been done yet");
2192
+ return -1;
2193
+ }
2194
+
2195
+ nop = NpyIter_GetNOp(self->iter);
2196
+ if (ilow < 0) {
2197
+ ilow = 0;
2198
+ }
2199
+ else if (ilow >= nop) {
2200
+ ilow = nop-1;
2201
+ }
2202
+ if (ihigh < ilow) {
2203
+ ihigh = ilow;
2204
+ }
2205
+ else if (ihigh > nop) {
2206
+ ihigh = nop;
2207
+ }
2208
+
2209
+ if (!PySequence_Check(v) || PySequence_Size(v) != ihigh-ilow) {
2210
+ PyErr_SetString(PyExc_ValueError,
2211
+ "Wrong size to assign to iterator slice");
2212
+ return -1;
2213
+ }
2214
+
2215
+ for (i = ilow; i < ihigh ; ++i) {
2216
+ PyObject *item = PySequence_GetItem(v, i-ilow);
2217
+ if (item == NULL) {
2218
+ return -1;
2219
+ }
2220
+ if (npyiter_seq_ass_item(self, i, item) < 0) {
2221
+ Py_DECREF(item);
2222
+ return -1;
2223
+ }
2224
+ Py_DECREF(item);
2225
+ }
2226
+
2227
+ return 0;
2228
+ }
2229
+
2230
+ /* Py3 changes PySlice_GetIndices' first argument's type to PyObject* */
2231
+ #ifdef NPY_PY3K
2232
+ # define slice_getindices PySlice_GetIndices
2233
+ #else
2234
+ # define slice_getindices(op, nop, start, end, step) \
2235
+ PySlice_GetIndices((PySliceObject *)op, nop, start, end, step)
2236
+ #endif
2237
+
2238
+ static PyObject *
2239
+ npyiter_subscript(NewNpyArrayIterObject *self, PyObject *op)
2240
+ {
2241
+ if (self->iter == NULL || self->finished) {
2242
+ PyErr_SetString(PyExc_ValueError,
2243
+ "Iterator is past the end");
2244
+ return NULL;
2245
+ }
2246
+
2247
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
2248
+ PyErr_SetString(PyExc_ValueError,
2249
+ "Iterator construction used delayed buffer allocation, "
2250
+ "and no reset has been done yet");
2251
+ return NULL;
2252
+ }
2253
+
2254
+ if (PyInt_Check(op) || PyLong_Check(op) ||
2255
+ (PyIndex_Check(op) && !PySequence_Check(op))) {
2256
+ npy_intp i = PyArray_PyIntAsIntp(op);
2257
+ if (i == -1 && PyErr_Occurred()) {
2258
+ return NULL;
2259
+ }
2260
+ return npyiter_seq_item(self, i);
2261
+ }
2262
+ else if (PySlice_Check(op)) {
2263
+ Py_ssize_t istart = 0, iend = 0, istep = 0;
2264
+ if (slice_getindices(op, NpyIter_GetNOp(self->iter),
2265
+ &istart, &iend, &istep) < 0) {
2266
+ return NULL;
2267
+ }
2268
+ if (istep != 1) {
2269
+ PyErr_SetString(PyExc_ValueError,
2270
+ "Iterator slicing only supports a step of 1");
2271
+ return NULL;
2272
+ }
2273
+ return npyiter_seq_slice(self, istart, iend);
2274
+ }
2275
+
2276
+ PyErr_SetString(PyExc_TypeError,
2277
+ "invalid index type for iterator indexing");
2278
+ return NULL;
2279
+ }
2280
+
2281
+ static int
2282
+ npyiter_ass_subscript(NewNpyArrayIterObject *self, PyObject *op,
2283
+ PyObject *value)
2284
+ {
2285
+ if (value == NULL) {
2286
+ PyErr_SetString(PyExc_TypeError,
2287
+ "Cannot delete iterator elements");
2288
+ return -1;
2289
+ }
2290
+ if (self->iter == NULL || self->finished) {
2291
+ PyErr_SetString(PyExc_ValueError,
2292
+ "Iterator is past the end");
2293
+ return -1;
2294
+ }
2295
+
2296
+ if (NpyIter_HasDelayedBufAlloc(self->iter)) {
2297
+ PyErr_SetString(PyExc_ValueError,
2298
+ "Iterator construction used delayed buffer allocation, "
2299
+ "and no reset has been done yet");
2300
+ return -1;
2301
+ }
2302
+
2303
+ if (PyInt_Check(op) || PyLong_Check(op) ||
2304
+ (PyIndex_Check(op) && !PySequence_Check(op))) {
2305
+ npy_intp i = PyArray_PyIntAsIntp(op);
2306
+ if (i == -1 && PyErr_Occurred()) {
2307
+ return -1;
2308
+ }
2309
+ return npyiter_seq_ass_item(self, i, value);
2310
+ }
2311
+ else if (PySlice_Check(op)) {
2312
+ Py_ssize_t istart = 0, iend = 0, istep = 0;
2313
+ if (slice_getindices(op, NpyIter_GetNOp(self->iter),
2314
+ &istart, &iend, &istep) < 0) {
2315
+ return -1;
2316
+ }
2317
+ if (istep != 1) {
2318
+ PyErr_SetString(PyExc_ValueError,
2319
+ "Iterator slice assignment only supports a step of 1");
2320
+ return -1;
2321
+ }
2322
+ return npyiter_seq_ass_slice(self, istart, iend, value);
2323
+ }
2324
+
2325
+ PyErr_SetString(PyExc_TypeError,
2326
+ "invalid index type for iterator indexing");
2327
+ return -1;
2328
+ }
2329
+
2330
+ static PyMethodDef npyiter_methods[] = {
2331
+ {"reset",
2332
+ (PyCFunction)npyiter_reset,
2333
+ METH_NOARGS, NULL},
2334
+ {"copy",
2335
+ (PyCFunction)npyiter_copy,
2336
+ METH_NOARGS, NULL},
2337
+ {"__copy__",
2338
+ (PyCFunction)npyiter_copy,
2339
+ METH_NOARGS, NULL},
2340
+ {"iternext",
2341
+ (PyCFunction)npyiter_iternext,
2342
+ METH_NOARGS, NULL},
2343
+ {"remove_axis",
2344
+ (PyCFunction)npyiter_remove_axis,
2345
+ METH_VARARGS, NULL},
2346
+ {"remove_multi_index",
2347
+ (PyCFunction)npyiter_remove_multi_index,
2348
+ METH_NOARGS, NULL},
2349
+ {"enable_external_loop",
2350
+ (PyCFunction)npyiter_enable_external_loop,
2351
+ METH_NOARGS, NULL},
2352
+ {"debug_print",
2353
+ (PyCFunction)npyiter_debug_print,
2354
+ METH_NOARGS, NULL},
2355
+ {NULL, NULL, 0, NULL},
2356
+ };
2357
+
2358
+ static PyMemberDef npyiter_members[] = {
2359
+ {NULL, 0, 0, 0, NULL},
2360
+ };
2361
+
2362
+ static PyGetSetDef npyiter_getsets[] = {
2363
+ {"value",
2364
+ (getter)npyiter_value_get,
2365
+ NULL, NULL, NULL},
2366
+ {"shape",
2367
+ (getter)npyiter_shape_get,
2368
+ NULL, NULL, NULL},
2369
+ {"multi_index",
2370
+ (getter)npyiter_multi_index_get,
2371
+ (setter)npyiter_multi_index_set,
2372
+ NULL, NULL},
2373
+ {"index",
2374
+ (getter)npyiter_index_get,
2375
+ (setter)npyiter_index_set,
2376
+ NULL, NULL},
2377
+ {"iterindex",
2378
+ (getter)npyiter_iterindex_get,
2379
+ (setter)npyiter_iterindex_set,
2380
+ NULL, NULL},
2381
+ {"iterrange",
2382
+ (getter)npyiter_iterrange_get,
2383
+ (setter)npyiter_iterrange_set,
2384
+ NULL, NULL},
2385
+ {"operands",
2386
+ (getter)npyiter_operands_get,
2387
+ NULL, NULL, NULL},
2388
+ {"itviews",
2389
+ (getter)npyiter_itviews_get,
2390
+ NULL, NULL, NULL},
2391
+ {"has_delayed_bufalloc",
2392
+ (getter)npyiter_has_delayed_bufalloc_get,
2393
+ NULL, NULL, NULL},
2394
+ {"iterationneedsapi",
2395
+ (getter)npyiter_iterationneedsapi_get,
2396
+ NULL, NULL, NULL},
2397
+ {"has_multi_index",
2398
+ (getter)npyiter_has_multi_index_get,
2399
+ NULL, NULL, NULL},
2400
+ {"has_index",
2401
+ (getter)npyiter_has_index_get,
2402
+ NULL, NULL, NULL},
2403
+ {"dtypes",
2404
+ (getter)npyiter_dtypes_get,
2405
+ NULL, NULL, NULL},
2406
+ {"ndim",
2407
+ (getter)npyiter_ndim_get,
2408
+ NULL, NULL, NULL},
2409
+ {"nop",
2410
+ (getter)npyiter_nop_get,
2411
+ NULL, NULL, NULL},
2412
+ {"itersize",
2413
+ (getter)npyiter_itersize_get,
2414
+ NULL, NULL, NULL},
2415
+ {"finished",
2416
+ (getter)npyiter_finished_get,
2417
+ NULL, NULL, NULL},
2418
+
2419
+ {NULL, NULL, NULL, NULL, NULL}
2420
+ };
2421
+
2422
+ NPY_NO_EXPORT PySequenceMethods npyiter_as_sequence = {
2423
+ (lenfunc)npyiter_seq_length, /*sq_length*/
2424
+ (binaryfunc)NULL, /*sq_concat*/
2425
+ (ssizeargfunc)NULL, /*sq_repeat*/
2426
+ (ssizeargfunc)npyiter_seq_item, /*sq_item*/
2427
+ (ssizessizeargfunc)npyiter_seq_slice, /*sq_slice*/
2428
+ (ssizeobjargproc)npyiter_seq_ass_item, /*sq_ass_item*/
2429
+ (ssizessizeobjargproc)npyiter_seq_ass_slice,/*sq_ass_slice*/
2430
+ (objobjproc)NULL, /*sq_contains */
2431
+ (binaryfunc)NULL, /*sq_inplace_concat */
2432
+ (ssizeargfunc)NULL, /*sq_inplace_repeat */
2433
+ };
2434
+
2435
+ NPY_NO_EXPORT PyMappingMethods npyiter_as_mapping = {
2436
+ (lenfunc)npyiter_seq_length, /*mp_length*/
2437
+ (binaryfunc)npyiter_subscript, /*mp_subscript*/
2438
+ (objobjargproc)npyiter_ass_subscript, /*mp_ass_subscript*/
2439
+ };
2440
+
2441
+ NPY_NO_EXPORT PyTypeObject NpyIter_Type = {
2442
+ #if defined(NPY_PY3K)
2443
+ PyVarObject_HEAD_INIT(NULL, 0)
2444
+ #else
2445
+ PyObject_HEAD_INIT(NULL)
2446
+ 0, /* ob_size */
2447
+ #endif
2448
+ "numpy.nditer", /* tp_name */
2449
+ sizeof(NewNpyArrayIterObject), /* tp_basicsize */
2450
+ 0, /* tp_itemsize */
2451
+ /* methods */
2452
+ (destructor)npyiter_dealloc, /* tp_dealloc */
2453
+ 0, /* tp_print */
2454
+ 0, /* tp_getattr */
2455
+ 0, /* tp_setattr */
2456
+ #if defined(NPY_PY3K)
2457
+ 0, /* tp_reserved */
2458
+ #else
2459
+ 0, /* tp_compare */
2460
+ #endif
2461
+ 0, /* tp_repr */
2462
+ 0, /* tp_as_number */
2463
+ &npyiter_as_sequence, /* tp_as_sequence */
2464
+ &npyiter_as_mapping, /* tp_as_mapping */
2465
+ 0, /* tp_hash */
2466
+ 0, /* tp_call */
2467
+ 0, /* tp_str */
2468
+ 0, /* tp_getattro */
2469
+ 0, /* tp_setattro */
2470
+ 0, /* tp_as_buffer */
2471
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
2472
+ 0, /* tp_doc */
2473
+ 0, /* tp_traverse */
2474
+ 0, /* tp_clear */
2475
+ 0, /* tp_richcompare */
2476
+ 0, /* tp_weaklistoffset */
2477
+ 0, /* tp_iter */
2478
+ (iternextfunc)npyiter_next, /* tp_iternext */
2479
+ npyiter_methods, /* tp_methods */
2480
+ npyiter_members, /* tp_members */
2481
+ npyiter_getsets, /* tp_getset */
2482
+ 0, /* tp_base */
2483
+ 0, /* tp_dict */
2484
+ 0, /* tp_descr_get */
2485
+ 0, /* tp_descr_set */
2486
+ 0, /* tp_dictoffset */
2487
+ (initproc)npyiter_init, /* tp_init */
2488
+ 0, /* tp_alloc */
2489
+ npyiter_new, /* tp_new */
2490
+ 0, /* tp_free */
2491
+ 0, /* tp_is_gc */
2492
+ 0, /* tp_bases */
2493
+ 0, /* tp_mro */
2494
+ 0, /* tp_cache */
2495
+ 0, /* tp_subclasses */
2496
+ 0, /* tp_weaklist */
2497
+ 0, /* tp_del */
2498
+ 0, /* tp_version_tag */
2499
+ };