numpy 1.9.3__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1590) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  12. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  13. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  16. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  17. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  23. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  31. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  32. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  33. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  39. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  41. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  42. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  43. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  45. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  49. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  50. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  51. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  52. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  56. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  57. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  58. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  59. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  60. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  61. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  62. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  63. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  64. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  65. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  66. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  70. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  71. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  72. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  73. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  74. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  75. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  82. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  83. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  84. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  85. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  86. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  87. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  88. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  89. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  90. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  91. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  138. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  139. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  142. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  143. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  147. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  148. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  154. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  155. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  165. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  166. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  197. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  198. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  199. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  200. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  204. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  205. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  206. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  210. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  211. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  212. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  213. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  214. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  215. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  216. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  217. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  218. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  219. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  230. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  231. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  232. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  233. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  234. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  235. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  236. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  237. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  238. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  239. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  240. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  241. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  242. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  243. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  244. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  245. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  246. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  247. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  248. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  249. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  250. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  251. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  252. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  253. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  254. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  267. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  268. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  269. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  272. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  273. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  274. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  275. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  276. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  277. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  278. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  279. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  280. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  281. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  282. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  283. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  284. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  285. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  286. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  287. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  288. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  289. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  290. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  291. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  292. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  293. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  313. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  314. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  315. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  316. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  317. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  318. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  319. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  320. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  322. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  323. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  324. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  325. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  326. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  327. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  328. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  329. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  330. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  335. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  336. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  337. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  338. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  339. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  343. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  344. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  345. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  346. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  347. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  348. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  349. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  350. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  351. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  353. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  354. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  355. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  356. numpy-1.10.0.post2/numpy/setup.py +29 -0
  357. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  358. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  359. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  360. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  361. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  362. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  363. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  364. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  365. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  366. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  367. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  368. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  369. numpy-1.10.0.post2/numpy/version.py +10 -0
  370. numpy-1.10.0.post2/setup.py +260 -0
  371. numpy-1.10.0.post2/site.cfg.example +193 -0
  372. numpy-1.10.0.post2/tmp.txt +789 -0
  373. numpy-1.10.0.post2/tools/swig/README +145 -0
  374. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  375. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  376. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  377. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  378. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  379. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  382. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  383. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  384. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  385. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  387. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  388. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  389. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  390. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  391. numpy-1.9.3/INSTALL.txt +0 -138
  392. numpy-1.9.3/LICENSE.txt +0 -30
  393. numpy-1.9.3/MANIFEST.in +0 -26
  394. numpy-1.9.3/PKG-INFO +0 -39
  395. numpy-1.9.3/doc/release/1.9.3-notes.rst +0 -23
  396. numpy-1.9.3/doc/source/conf.py +0 -331
  397. numpy-1.9.3/doc/source/dev/gitwash/branch_list.png +0 -0
  398. numpy-1.9.3/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  399. numpy-1.9.3/doc/source/dev/gitwash/development_workflow.rst +0 -568
  400. numpy-1.9.3/doc/source/dev/gitwash/git_links.inc +0 -88
  401. numpy-1.9.3/doc/source/dev/gitwash/index.rst +0 -14
  402. numpy-1.9.3/doc/source/dev/index.rst +0 -10
  403. numpy-1.9.3/doc/source/reference/arrays.classes.rst +0 -427
  404. numpy-1.9.3/doc/source/reference/arrays.dtypes.rst +0 -534
  405. numpy-1.9.3/doc/source/reference/arrays.indexing.rst +0 -550
  406. numpy-1.9.3/doc/source/reference/arrays.interface.rst +0 -336
  407. numpy-1.9.3/doc/source/reference/arrays.ndarray.rst +0 -609
  408. numpy-1.9.3/doc/source/reference/arrays.scalars.rst +0 -291
  409. numpy-1.9.3/doc/source/reference/c-api.array.rst +0 -3362
  410. numpy-1.9.3/doc/source/reference/c-api.config.rst +0 -103
  411. numpy-1.9.3/doc/source/reference/c-api.coremath.rst +0 -420
  412. numpy-1.9.3/doc/source/reference/c-api.dtype.rst +0 -376
  413. numpy-1.9.3/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  414. numpy-1.9.3/doc/source/reference/c-api.iterator.rst +0 -1298
  415. numpy-1.9.3/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  416. numpy-1.9.3/doc/source/reference/c-api.ufunc.rst +0 -399
  417. numpy-1.9.3/doc/source/reference/index.rst +0 -44
  418. numpy-1.9.3/doc/source/reference/internals.code-explanations.rst +0 -666
  419. numpy-1.9.3/doc/source/reference/routines.array-manipulation.rst +0 -113
  420. numpy-1.9.3/doc/source/reference/routines.io.rst +0 -74
  421. numpy-1.9.3/doc/source/reference/routines.linalg.rst +0 -88
  422. numpy-1.9.3/doc/source/reference/routines.ma.rst +0 -405
  423. numpy-1.9.3/doc/source/reference/routines.sort.rst +0 -42
  424. numpy-1.9.3/doc/source/reference/routines.statistics.rst +0 -55
  425. numpy-1.9.3/doc/source/reference/swig.interface-file.rst +0 -1055
  426. numpy-1.9.3/doc/source/reference/swig.testing.rst +0 -166
  427. numpy-1.9.3/doc/source/reference/ufuncs.rst +0 -651
  428. numpy-1.9.3/doc/source/release.rst +0 -19
  429. numpy-1.9.3/doc/source/user/basics.io.genfromtxt.rst +0 -531
  430. numpy-1.9.3/doc/source/user/basics.rec.rst +0 -7
  431. numpy-1.9.3/doc/source/user/c-info.beyond-basics.rst +0 -560
  432. numpy-1.9.3/doc/source/user/c-info.how-to-extend.rst +0 -642
  433. numpy-1.9.3/doc/source/user/c-info.python-as-glue.rst +0 -1528
  434. numpy-1.9.3/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  435. numpy-1.9.3/doc/source/user/install.rst +0 -180
  436. numpy-1.9.3/numpy/__init__.py +0 -216
  437. numpy-1.9.3/numpy/_import_tools.py +0 -348
  438. numpy-1.9.3/numpy/add_newdocs.py +0 -7518
  439. numpy-1.9.3/numpy/compat/_inspect.py +0 -221
  440. numpy-1.9.3/numpy/compat/py3k.py +0 -89
  441. numpy-1.9.3/numpy/compat/setup.py +0 -12
  442. numpy-1.9.3/numpy/core/__init__.py +0 -78
  443. numpy-1.9.3/numpy/core/_internal.py +0 -570
  444. numpy-1.9.3/numpy/core/_methods.py +0 -134
  445. numpy-1.9.3/numpy/core/arrayprint.py +0 -752
  446. numpy-1.9.3/numpy/core/blasdot/_dotblas.c +0 -1255
  447. numpy-1.9.3/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  448. numpy-1.9.3/numpy/core/blasdot/cblas.h +0 -578
  449. numpy-1.9.3/numpy/core/code_generators/cversions.txt +0 -31
  450. numpy-1.9.3/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  451. numpy-1.9.3/numpy/core/code_generators/generate_umath.py +0 -972
  452. numpy-1.9.3/numpy/core/code_generators/numpy_api.py +0 -412
  453. numpy-1.9.3/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  454. numpy-1.9.3/numpy/core/defchararray.py +0 -2687
  455. numpy-1.9.3/numpy/core/fromnumeric.py +0 -2938
  456. numpy-1.9.3/numpy/core/function_base.py +0 -190
  457. numpy-1.9.3/numpy/core/getlimits.py +0 -306
  458. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.c +0 -38
  459. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.h +0 -224
  460. numpy-1.9.3/numpy/core/include/numpy/ndarrayobject.h +0 -237
  461. numpy-1.9.3/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  462. numpy-1.9.3/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  463. numpy-1.9.3/numpy/core/include/numpy/npy_common.h +0 -1038
  464. numpy-1.9.3/numpy/core/include/numpy/npy_cpu.h +0 -122
  465. numpy-1.9.3/numpy/core/include/numpy/npy_endian.h +0 -49
  466. numpy-1.9.3/numpy/core/include/numpy/npy_math.h +0 -479
  467. numpy-1.9.3/numpy/core/include/numpy/numpyconfig.h +0 -35
  468. numpy-1.9.3/numpy/core/machar.py +0 -338
  469. numpy-1.9.3/numpy/core/memmap.py +0 -308
  470. numpy-1.9.3/numpy/core/numeric.py +0 -2842
  471. numpy-1.9.3/numpy/core/numerictypes.py +0 -1042
  472. numpy-1.9.3/numpy/core/records.py +0 -804
  473. numpy-1.9.3/numpy/core/setup.py +0 -1016
  474. numpy-1.9.3/numpy/core/setup_common.py +0 -330
  475. numpy-1.9.3/numpy/core/shape_base.py +0 -277
  476. numpy-1.9.3/numpy/core/src/multiarray/alloc.c +0 -241
  477. numpy-1.9.3/numpy/core/src/multiarray/arrayobject.c +0 -1791
  478. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  479. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.h +0 -13
  480. numpy-1.9.3/numpy/core/src/multiarray/buffer.c +0 -954
  481. numpy-1.9.3/numpy/core/src/multiarray/calculation.c +0 -1229
  482. numpy-1.9.3/numpy/core/src/multiarray/common.c +0 -798
  483. numpy-1.9.3/numpy/core/src/multiarray/common.h +0 -328
  484. numpy-1.9.3/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  485. numpy-1.9.3/numpy/core/src/multiarray/convert.c +0 -589
  486. numpy-1.9.3/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  487. numpy-1.9.3/numpy/core/src/multiarray/ctors.c +0 -3785
  488. numpy-1.9.3/numpy/core/src/multiarray/datetime.c +0 -3823
  489. numpy-1.9.3/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  490. numpy-1.9.3/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  491. numpy-1.9.3/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  492. numpy-1.9.3/numpy/core/src/multiarray/descriptor.c +0 -3658
  493. numpy-1.9.3/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  494. numpy-1.9.3/numpy/core/src/multiarray/einsum.c.src +0 -3013
  495. numpy-1.9.3/numpy/core/src/multiarray/getset.c +0 -984
  496. numpy-1.9.3/numpy/core/src/multiarray/hashdescr.c +0 -319
  497. numpy-1.9.3/numpy/core/src/multiarray/item_selection.c +0 -2711
  498. numpy-1.9.3/numpy/core/src/multiarray/iterators.c +0 -2160
  499. numpy-1.9.3/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  500. numpy-1.9.3/numpy/core/src/multiarray/mapping.c +0 -3316
  501. numpy-1.9.3/numpy/core/src/multiarray/mapping.h +0 -73
  502. numpy-1.9.3/numpy/core/src/multiarray/methods.c +0 -2497
  503. numpy-1.9.3/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  504. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.c +0 -4200
  505. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  506. numpy-1.9.3/numpy/core/src/multiarray/nditer_api.c +0 -2809
  507. numpy-1.9.3/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  508. numpy-1.9.3/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  509. numpy-1.9.3/numpy/core/src/multiarray/number.c +0 -1057
  510. numpy-1.9.3/numpy/core/src/multiarray/number.h +0 -76
  511. numpy-1.9.3/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  512. numpy-1.9.3/numpy/core/src/multiarray/numpyos.c +0 -683
  513. numpy-1.9.3/numpy/core/src/multiarray/scalarapi.c +0 -861
  514. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  515. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.h +0 -52
  516. numpy-1.9.3/numpy/core/src/multiarray/shape.c +0 -1141
  517. numpy-1.9.3/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  518. numpy-1.9.3/numpy/core/src/npymath/ieee754.c.src +0 -814
  519. numpy-1.9.3/numpy/core/src/npymath/npy_math.c.src +0 -527
  520. numpy-1.9.3/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  521. numpy-1.9.3/numpy/core/src/npymath/npy_math_private.h +0 -539
  522. numpy-1.9.3/numpy/core/src/npysort/heapsort.c.src +0 -341
  523. numpy-1.9.3/numpy/core/src/npysort/mergesort.c.src +0 -428
  524. numpy-1.9.3/numpy/core/src/npysort/npysort_common.h +0 -367
  525. numpy-1.9.3/numpy/core/src/npysort/quicksort.c.src +0 -363
  526. numpy-1.9.3/numpy/core/src/npysort/selection.c.src +0 -474
  527. numpy-1.9.3/numpy/core/src/private/npy_config.h +0 -68
  528. numpy-1.9.3/numpy/core/src/private/npy_partition.h.src +0 -138
  529. numpy-1.9.3/numpy/core/src/private/npy_sort.h +0 -194
  530. numpy-1.9.3/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  531. numpy-1.9.3/numpy/core/src/private/ufunc_override.h +0 -384
  532. numpy-1.9.3/numpy/core/src/scalarmathmodule.c.src +0 -1980
  533. numpy-1.9.3/numpy/core/src/umath/funcs.inc.src +0 -715
  534. numpy-1.9.3/numpy/core/src/umath/loops.c.src +0 -2654
  535. numpy-1.9.3/numpy/core/src/umath/loops.h.src +0 -501
  536. numpy-1.9.3/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  537. numpy-1.9.3/numpy/core/src/umath/simd.inc.src +0 -881
  538. numpy-1.9.3/numpy/core/src/umath/test_rational.c.src +0 -1404
  539. numpy-1.9.3/numpy/core/src/umath/ufunc_object.c +0 -5520
  540. numpy-1.9.3/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  541. numpy-1.9.3/numpy/core/src/umath/umath_tests.c.src +0 -341
  542. numpy-1.9.3/numpy/core/src/umath/umathmodule.c +0 -561
  543. numpy-1.9.3/numpy/core/tests/test_abc.py +0 -45
  544. numpy-1.9.3/numpy/core/tests/test_api.py +0 -514
  545. numpy-1.9.3/numpy/core/tests/test_arrayprint.py +0 -167
  546. numpy-1.9.3/numpy/core/tests/test_blasdot.py +0 -249
  547. numpy-1.9.3/numpy/core/tests/test_datetime.py +0 -1781
  548. numpy-1.9.3/numpy/core/tests/test_defchararray.py +0 -642
  549. numpy-1.9.3/numpy/core/tests/test_deprecations.py +0 -512
  550. numpy-1.9.3/numpy/core/tests/test_dtype.py +0 -542
  551. numpy-1.9.3/numpy/core/tests/test_einsum.py +0 -583
  552. numpy-1.9.3/numpy/core/tests/test_errstate.py +0 -51
  553. numpy-1.9.3/numpy/core/tests/test_function_base.py +0 -111
  554. numpy-1.9.3/numpy/core/tests/test_getlimits.py +0 -86
  555. numpy-1.9.3/numpy/core/tests/test_half.py +0 -439
  556. numpy-1.9.3/numpy/core/tests/test_indexerrors.py +0 -127
  557. numpy-1.9.3/numpy/core/tests/test_indexing.py +0 -1014
  558. numpy-1.9.3/numpy/core/tests/test_item_selection.py +0 -70
  559. numpy-1.9.3/numpy/core/tests/test_machar.py +0 -30
  560. numpy-1.9.3/numpy/core/tests/test_memmap.py +0 -127
  561. numpy-1.9.3/numpy/core/tests/test_multiarray.py +0 -4645
  562. numpy-1.9.3/numpy/core/tests/test_multiarray_assignment.py +0 -80
  563. numpy-1.9.3/numpy/core/tests/test_nditer.py +0 -2630
  564. numpy-1.9.3/numpy/core/tests/test_numeric.py +0 -2117
  565. numpy-1.9.3/numpy/core/tests/test_numerictypes.py +0 -377
  566. numpy-1.9.3/numpy/core/tests/test_print.py +0 -245
  567. numpy-1.9.3/numpy/core/tests/test_records.py +0 -185
  568. numpy-1.9.3/numpy/core/tests/test_regression.py +0 -2115
  569. numpy-1.9.3/numpy/core/tests/test_scalarinherit.py +0 -34
  570. numpy-1.9.3/numpy/core/tests/test_scalarmath.py +0 -275
  571. numpy-1.9.3/numpy/core/tests/test_shape_base.py +0 -250
  572. numpy-1.9.3/numpy/core/tests/test_ufunc.py +0 -1153
  573. numpy-1.9.3/numpy/core/tests/test_umath.py +0 -1695
  574. numpy-1.9.3/numpy/core/tests/test_umath_complex.py +0 -537
  575. numpy-1.9.3/numpy/core/tests/test_unicode.py +0 -357
  576. numpy-1.9.3/numpy/distutils/__init__.py +0 -39
  577. numpy-1.9.3/numpy/distutils/ccompiler.py +0 -656
  578. numpy-1.9.3/numpy/distutils/command/autodist.py +0 -43
  579. numpy-1.9.3/numpy/distutils/command/build.py +0 -39
  580. numpy-1.9.3/numpy/distutils/command/build_clib.py +0 -284
  581. numpy-1.9.3/numpy/distutils/command/build_ext.py +0 -515
  582. numpy-1.9.3/numpy/distutils/command/config.py +0 -476
  583. numpy-1.9.3/numpy/distutils/exec_command.py +0 -618
  584. numpy-1.9.3/numpy/distutils/fcompiler/compaq.py +0 -128
  585. numpy-1.9.3/numpy/distutils/fcompiler/gnu.py +0 -390
  586. numpy-1.9.3/numpy/distutils/fcompiler/intel.py +0 -205
  587. numpy-1.9.3/numpy/distutils/fcompiler/pg.py +0 -60
  588. numpy-1.9.3/numpy/distutils/fcompiler/sun.py +0 -52
  589. numpy-1.9.3/numpy/distutils/intelccompiler.py +0 -45
  590. numpy-1.9.3/numpy/distutils/lib2def.py +0 -116
  591. numpy-1.9.3/numpy/distutils/mingw32ccompiler.py +0 -582
  592. numpy-1.9.3/numpy/distutils/misc_util.py +0 -2271
  593. numpy-1.9.3/numpy/distutils/npy_pkg_config.py +0 -464
  594. numpy-1.9.3/numpy/distutils/system_info.py +0 -2319
  595. numpy-1.9.3/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  596. numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  597. numpy-1.9.3/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  598. numpy-1.9.3/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  599. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  600. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  601. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  602. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  603. numpy-1.9.3/numpy/distutils/tests/test_misc_util.py +0 -75
  604. numpy-1.9.3/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  605. numpy-1.9.3/numpy/distutils/unixccompiler.py +0 -113
  606. numpy-1.9.3/numpy/doc/byteswapping.py +0 -147
  607. numpy-1.9.3/numpy/doc/creation.py +0 -144
  608. numpy-1.9.3/numpy/doc/glossary.py +0 -418
  609. numpy-1.9.3/numpy/doc/indexing.py +0 -437
  610. numpy-1.9.3/numpy/doc/structured_arrays.py +0 -223
  611. numpy-1.9.3/numpy/f2py/__init__.py +0 -49
  612. numpy-1.9.3/numpy/f2py/auxfuncs.py +0 -711
  613. numpy-1.9.3/numpy/f2py/capi_maps.py +0 -773
  614. numpy-1.9.3/numpy/f2py/cb_rules.py +0 -539
  615. numpy-1.9.3/numpy/f2py/cfuncs.py +0 -1224
  616. numpy-1.9.3/numpy/f2py/common_rules.py +0 -132
  617. numpy-1.9.3/numpy/f2py/crackfortran.py +0 -2870
  618. numpy-1.9.3/numpy/f2py/diagnose.py +0 -149
  619. numpy-1.9.3/numpy/f2py/f2py2e.py +0 -598
  620. numpy-1.9.3/numpy/f2py/f2py_testing.py +0 -46
  621. numpy-1.9.3/numpy/f2py/f90mod_rules.py +0 -246
  622. numpy-1.9.3/numpy/f2py/func2subr.py +0 -291
  623. numpy-1.9.3/numpy/f2py/rules.py +0 -1448
  624. numpy-1.9.3/numpy/f2py/setup.py +0 -129
  625. numpy-1.9.3/numpy/f2py/src/fortranobject.c +0 -972
  626. numpy-1.9.3/numpy/f2py/src/fortranobject.h +0 -162
  627. numpy-1.9.3/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  628. numpy-1.9.3/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  629. numpy-1.9.3/numpy/f2py/tests/test_assumed_shape.py +0 -37
  630. numpy-1.9.3/numpy/f2py/tests/test_callback.py +0 -132
  631. numpy-1.9.3/numpy/f2py/tests/test_kind.py +0 -36
  632. numpy-1.9.3/numpy/f2py/tests/test_mixed.py +0 -41
  633. numpy-1.9.3/numpy/f2py/tests/test_regression.py +0 -32
  634. numpy-1.9.3/numpy/f2py/tests/test_return_character.py +0 -142
  635. numpy-1.9.3/numpy/f2py/tests/test_return_complex.py +0 -169
  636. numpy-1.9.3/numpy/f2py/tests/test_return_integer.py +0 -178
  637. numpy-1.9.3/numpy/f2py/tests/test_return_logical.py +0 -187
  638. numpy-1.9.3/numpy/f2py/tests/test_return_real.py +0 -203
  639. numpy-1.9.3/numpy/f2py/tests/test_size.py +0 -47
  640. numpy-1.9.3/numpy/f2py/tests/util.py +0 -353
  641. numpy-1.9.3/numpy/f2py/use_rules.py +0 -109
  642. numpy-1.9.3/numpy/fft/fftpack.c +0 -1501
  643. numpy-1.9.3/numpy/fft/fftpack.h +0 -28
  644. numpy-1.9.3/numpy/fft/fftpack.py +0 -1169
  645. numpy-1.9.3/numpy/fft/fftpack_litemodule.c +0 -371
  646. numpy-1.9.3/numpy/fft/info.py +0 -179
  647. numpy-1.9.3/numpy/fft/setup.py +0 -20
  648. numpy-1.9.3/numpy/fft/tests/test_fftpack.py +0 -75
  649. numpy-1.9.3/numpy/fft/tests/test_helper.py +0 -78
  650. numpy-1.9.3/numpy/lib/_iotools.py +0 -891
  651. numpy-1.9.3/numpy/lib/arraypad.py +0 -1475
  652. numpy-1.9.3/numpy/lib/arraysetops.py +0 -464
  653. numpy-1.9.3/numpy/lib/arrayterator.py +0 -226
  654. numpy-1.9.3/numpy/lib/financial.py +0 -737
  655. numpy-1.9.3/numpy/lib/format.py +0 -771
  656. numpy-1.9.3/numpy/lib/function_base.py +0 -3884
  657. numpy-1.9.3/numpy/lib/index_tricks.py +0 -869
  658. numpy-1.9.3/numpy/lib/info.py +0 -151
  659. numpy-1.9.3/numpy/lib/nanfunctions.py +0 -1158
  660. numpy-1.9.3/numpy/lib/npyio.py +0 -1871
  661. numpy-1.9.3/numpy/lib/polynomial.py +0 -1271
  662. numpy-1.9.3/numpy/lib/recfunctions.py +0 -1003
  663. numpy-1.9.3/numpy/lib/setup.py +0 -23
  664. numpy-1.9.3/numpy/lib/shape_base.py +0 -865
  665. numpy-1.9.3/numpy/lib/src/_compiled_base.c +0 -1761
  666. numpy-1.9.3/numpy/lib/stride_tricks.py +0 -123
  667. numpy-1.9.3/numpy/lib/tests/test__iotools.py +0 -326
  668. numpy-1.9.3/numpy/lib/tests/test__version.py +0 -57
  669. numpy-1.9.3/numpy/lib/tests/test_arraypad.py +0 -560
  670. numpy-1.9.3/numpy/lib/tests/test_arraysetops.py +0 -301
  671. numpy-1.9.3/numpy/lib/tests/test_financial.py +0 -160
  672. numpy-1.9.3/numpy/lib/tests/test_format.py +0 -716
  673. numpy-1.9.3/numpy/lib/tests/test_function_base.py +0 -2145
  674. numpy-1.9.3/numpy/lib/tests/test_index_tricks.py +0 -289
  675. numpy-1.9.3/numpy/lib/tests/test_io.py +0 -1754
  676. numpy-1.9.3/numpy/lib/tests/test_nanfunctions.py +0 -774
  677. numpy-1.9.3/numpy/lib/tests/test_polynomial.py +0 -177
  678. numpy-1.9.3/numpy/lib/tests/test_recfunctions.py +0 -705
  679. numpy-1.9.3/numpy/lib/tests/test_shape_base.py +0 -368
  680. numpy-1.9.3/numpy/lib/tests/test_stride_tricks.py +0 -238
  681. numpy-1.9.3/numpy/lib/tests/test_twodim_base.py +0 -504
  682. numpy-1.9.3/numpy/lib/tests/test_type_check.py +0 -328
  683. numpy-1.9.3/numpy/lib/twodim_base.py +0 -1003
  684. numpy-1.9.3/numpy/lib/type_check.py +0 -605
  685. numpy-1.9.3/numpy/lib/utils.py +0 -1176
  686. numpy-1.9.3/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  687. numpy-1.9.3/numpy/linalg/lapack_litemodule.c +0 -362
  688. numpy-1.9.3/numpy/linalg/linalg.py +0 -2136
  689. numpy-1.9.3/numpy/linalg/tests/test_build.py +0 -53
  690. numpy-1.9.3/numpy/linalg/tests/test_linalg.py +0 -1156
  691. numpy-1.9.3/numpy/linalg/tests/test_regression.py +0 -90
  692. numpy-1.9.3/numpy/linalg/umath_linalg.c.src +0 -3210
  693. numpy-1.9.3/numpy/ma/__init__.py +0 -58
  694. numpy-1.9.3/numpy/ma/bench.py +0 -166
  695. numpy-1.9.3/numpy/ma/core.py +0 -7374
  696. numpy-1.9.3/numpy/ma/extras.py +0 -1932
  697. numpy-1.9.3/numpy/ma/mrecords.py +0 -734
  698. numpy-1.9.3/numpy/ma/setup.py +0 -20
  699. numpy-1.9.3/numpy/ma/tests/test_core.py +0 -3706
  700. numpy-1.9.3/numpy/ma/tests/test_extras.py +0 -954
  701. numpy-1.9.3/numpy/ma/tests/test_mrecords.py +0 -521
  702. numpy-1.9.3/numpy/ma/tests/test_old_ma.py +0 -869
  703. numpy-1.9.3/numpy/ma/tests/test_regression.py +0 -75
  704. numpy-1.9.3/numpy/ma/tests/test_subclassing.py +0 -236
  705. numpy-1.9.3/numpy/ma/testutils.py +0 -240
  706. numpy-1.9.3/numpy/ma/timer_comparison.py +0 -459
  707. numpy-1.9.3/numpy/matlib.py +0 -358
  708. numpy-1.9.3/numpy/matrixlib/defmatrix.py +0 -1094
  709. numpy-1.9.3/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  710. numpy-1.9.3/numpy/matrixlib/tests/test_multiarray.py +0 -18
  711. numpy-1.9.3/numpy/matrixlib/tests/test_numeric.py +0 -10
  712. numpy-1.9.3/numpy/matrixlib/tests/test_regression.py +0 -34
  713. numpy-1.9.3/numpy/polynomial/_polybase.py +0 -962
  714. numpy-1.9.3/numpy/polynomial/chebyshev.py +0 -2056
  715. numpy-1.9.3/numpy/polynomial/hermite.py +0 -1789
  716. numpy-1.9.3/numpy/polynomial/hermite_e.py +0 -1786
  717. numpy-1.9.3/numpy/polynomial/laguerre.py +0 -1781
  718. numpy-1.9.3/numpy/polynomial/legendre.py +0 -1809
  719. numpy-1.9.3/numpy/polynomial/polytemplate.py +0 -927
  720. numpy-1.9.3/numpy/polynomial/polyutils.py +0 -403
  721. numpy-1.9.3/numpy/random/mtrand/distributions.c +0 -892
  722. numpy-1.9.3/numpy/random/mtrand/mtrand.c +0 -36656
  723. numpy-1.9.3/numpy/random/mtrand/mtrand.pyx +0 -4706
  724. numpy-1.9.3/numpy/random/setup.py +0 -74
  725. numpy-1.9.3/numpy/random/tests/test_random.py +0 -707
  726. numpy-1.9.3/numpy/random/tests/test_regression.py +0 -86
  727. numpy-1.9.3/numpy/setup.py +0 -27
  728. numpy-1.9.3/numpy/testing/__init__.py +0 -16
  729. numpy-1.9.3/numpy/testing/decorators.py +0 -271
  730. numpy-1.9.3/numpy/testing/noseclasses.py +0 -353
  731. numpy-1.9.3/numpy/testing/nosetester.py +0 -504
  732. numpy-1.9.3/numpy/testing/print_coercion_tables.py +0 -89
  733. numpy-1.9.3/numpy/testing/setup.py +0 -20
  734. numpy-1.9.3/numpy/testing/tests/test_decorators.py +0 -185
  735. numpy-1.9.3/numpy/testing/tests/test_utils.py +0 -558
  736. numpy-1.9.3/numpy/testing/utils.py +0 -1715
  737. numpy-1.9.3/numpy/tests/test_ctypeslib.py +0 -102
  738. numpy-1.9.3/numpy/tests/test_matlib.py +0 -55
  739. numpy-1.9.3/numpy/version.py +0 -10
  740. numpy-1.9.3/setup.py +0 -251
  741. numpy-1.9.3/site.cfg.example +0 -157
  742. numpy-1.9.3/tools/swig/README +0 -135
  743. numpy-1.9.3/tools/swig/numpy.i +0 -3085
  744. numpy-1.9.3/tools/swig/test/Array.i +0 -102
  745. numpy-1.9.3/tools/swig/test/Makefile +0 -34
  746. numpy-1.9.3/tools/swig/test/setup.py +0 -64
  747. numpy-1.9.3/tools/swig/test/testArray.py +0 -284
  748. numpy-1.9.3/tools/swig/test/testFarray.py +0 -159
  749. numpy-1.9.3/tools/swig/test/testFortran.py +0 -173
  750. numpy-1.9.3/tools/swig/test/testMatrix.py +0 -362
  751. numpy-1.9.3/tools/swig/test/testSuperTensor.py +0 -388
  752. numpy-1.9.3/tools/swig/test/testTensor.py +0 -402
  753. numpy-1.9.3/tools/swig/test/testVector.py +0 -381
  754. {numpy-1.9.3 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  755. {numpy-1.9.3 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  756. {numpy-1.9.3 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  757. {numpy-1.9.3 → numpy-1.10.0.post2}/README.txt +0 -0
  758. {numpy-1.9.3 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  759. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  760. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  761. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  762. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  763. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  764. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  765. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  766. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  767. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  768. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  769. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  770. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  771. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  772. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  773. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  774. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  775. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  776. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  777. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  778. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  779. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  780. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  781. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  782. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  783. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  784. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  785. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  786. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  787. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  788. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  789. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  790. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  791. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  792. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  793. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  794. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  795. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  796. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  797. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  798. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  799. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  800. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  801. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  802. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  803. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  804. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  805. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  806. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  807. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  808. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  809. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  810. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  811. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  812. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  813. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  814. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  815. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  816. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  817. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  818. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  819. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  820. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  821. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  822. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  823. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  824. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  825. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  826. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  827. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  828. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  829. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  830. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  831. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  832. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  833. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  834. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  835. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  836. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  837. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  838. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  839. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  840. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.git +0 -0
  841. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  842. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  843. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  844. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  845. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  846. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  847. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  848. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  849. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  850. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  851. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  852. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  853. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  854. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  855. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  856. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  857. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  858. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  859. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  860. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  861. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  862. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  863. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  864. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  865. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  866. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  867. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  868. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  869. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  870. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  871. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  872. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  873. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  874. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  875. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  876. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  877. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  878. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  879. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  880. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  881. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  882. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  883. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  884. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  885. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  886. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  887. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  888. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  889. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  890. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  891. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  892. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  893. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  894. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  895. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  896. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  897. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  898. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  899. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  900. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  901. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  902. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  903. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  904. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  905. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  906. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  907. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  908. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  909. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  910. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  911. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  912. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  913. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  914. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  915. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  916. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  917. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  918. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  919. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  920. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  921. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  922. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  923. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  924. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  925. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  926. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  927. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  928. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  929. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  930. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  931. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  932. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  933. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  934. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  935. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  936. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  937. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  938. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  939. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  940. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  941. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  942. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  943. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  944. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  945. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  946. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  947. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  948. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  949. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  950. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  951. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  952. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  953. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  954. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  955. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  956. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  957. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  958. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  959. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  960. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  961. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  962. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  963. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  964. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  965. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  966. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  967. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  968. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  969. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  970. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  971. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  972. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  973. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  974. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  975. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  976. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  977. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  978. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  979. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  980. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  981. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  982. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  983. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  984. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  985. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  986. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  987. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  988. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  989. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  990. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  991. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  992. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  993. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  994. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  995. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  996. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  997. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  998. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  999. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1000. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1001. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1002. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1003. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1004. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1005. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1006. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1007. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1008. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1009. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1010. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1011. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1012. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1013. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1014. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1015. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1016. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1017. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1018. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1019. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1020. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1021. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1022. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1023. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1024. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1025. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1026. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1027. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1028. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1029. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1030. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1031. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1032. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1033. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1034. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1035. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1036. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1037. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1038. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1039. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1040. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1041. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1042. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1043. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1044. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1045. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1046. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1047. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1048. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1049. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1050. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1051. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1052. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1053. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1054. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1055. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1056. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1057. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1058. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1059. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1060. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1061. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1062. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1063. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1064. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1065. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1066. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1067. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1068. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1069. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1070. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1071. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1072. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1073. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1074. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1075. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1076. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1077. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1078. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1079. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1080. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1081. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1082. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1083. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1084. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1085. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1086. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1087. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1088. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1089. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1090. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1091. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1092. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1093. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1094. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1095. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1096. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1097. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1098. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1099. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1100. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1101. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1102. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1103. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1104. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1105. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1106. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1107. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1108. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1109. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1110. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1111. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1112. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1113. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1114. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1115. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1116. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1117. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1118. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1119. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1120. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1121. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1122. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1123. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1124. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1125. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1126. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1127. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1128. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1129. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1130. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1131. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1132. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1133. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1134. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1135. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1136. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1137. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1138. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1139. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1140. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1141. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1142. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1143. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1144. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1145. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1146. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1147. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1148. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1149. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1150. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1151. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1152. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1153. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1154. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1155. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1156. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1157. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1158. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1159. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1160. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1161. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1162. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1163. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1164. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1165. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1166. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1167. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1168. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1169. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1170. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1171. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1172. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1173. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1174. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1175. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1176. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1177. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1178. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1179. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1180. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1181. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1182. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1183. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1184. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1185. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1186. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1187. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1188. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1189. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1190. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1191. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1192. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1193. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1194. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1195. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1196. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1197. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1198. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1199. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1200. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1201. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1202. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1203. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1204. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1205. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1206. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1207. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1208. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1209. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1210. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1211. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1212. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1213. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1214. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1215. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1216. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1217. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1218. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1219. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1220. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1221. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1222. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1223. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1224. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1225. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1226. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1227. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1228. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1229. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1230. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1231. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1232. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1233. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1234. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1235. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1236. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1237. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1238. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1239. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1240. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1241. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1242. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1243. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1244. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1245. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1246. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1247. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1248. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1249. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1250. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1251. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1252. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1253. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1254. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1255. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1256. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1257. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1258. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1259. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1260. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1261. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1262. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1263. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1264. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1265. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1266. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1267. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1268. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1269. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1270. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1271. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1272. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1273. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1274. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1275. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1276. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1277. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1278. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1279. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1280. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1281. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1282. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1283. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1284. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1285. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1286. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1287. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1288. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1289. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1290. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1291. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1292. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1293. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1294. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1295. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1296. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1297. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1298. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1299. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1300. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1301. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1302. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1303. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1304. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1305. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1306. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1307. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1308. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1309. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1310. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1311. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1312. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1313. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1314. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1315. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1316. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1317. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1318. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1319. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1320. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1321. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1322. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1323. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1324. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1325. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1326. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1327. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.git +0 -0
  1328. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1329. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1330. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1331. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1332. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1333. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1334. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1335. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1336. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1337. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1338. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1339. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1340. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1341. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1342. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1343. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1344. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1345. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1346. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1347. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1348. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1349. {numpy-1.9.3/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1350. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1351. {numpy-1.9.3/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1352. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1353. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1354. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1355. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1356. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1357. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1358. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1359. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1360. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1361. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1362. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1363. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1364. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1365. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1366. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1367. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1368. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1369. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1370. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1371. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1372. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1373. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1374. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1375. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1376. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1377. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1378. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1379. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1380. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1381. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1382. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1383. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1384. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1385. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1386. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1387. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1388. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1389. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1390. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1391. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1392. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1393. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1394. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1395. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1396. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1397. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1398. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1399. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1400. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1401. {numpy-1.9.3/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1402. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1403. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1404. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1405. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1406. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1407. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1408. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1409. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1410. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1411. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1412. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1413. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1414. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1415. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1416. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1417. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1418. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1419. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1420. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1421. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1422. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1423. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1424. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1425. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1426. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1427. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1428. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1429. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1430. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1431. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1432. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1433. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1434. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1435. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1436. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1437. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1438. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1439. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1440. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1441. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1442. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1443. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1444. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1445. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1446. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1447. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1448. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1449. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1450. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1451. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1452. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1453. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1454. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1455. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1456. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1457. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1458. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1459. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1460. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1461. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1462. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1463. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1464. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1465. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1466. {numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1467. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1468. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1469. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1470. {numpy-1.9.3/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1471. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1472. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1473. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1474. {numpy-1.9.3/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1475. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1476. {numpy-1.9.3/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1477. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1478. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1479. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1480. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1481. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1482. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1483. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1484. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1485. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1486. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1487. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1488. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1489. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1490. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1491. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1492. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1493. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1494. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1495. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1496. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1497. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1498. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1499. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1500. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1501. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1502. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1503. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1504. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1505. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1506. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1507. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1508. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1509. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1510. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1511. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1512. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1513. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1514. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1515. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1516. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1517. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1518. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1519. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1520. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1521. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1522. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1523. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1524. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1525. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1526. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1527. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1528. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1529. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1530. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1531. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1532. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1533. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1534. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1535. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1536. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1537. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1538. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1539. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1540. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1541. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1542. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1543. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1544. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1545. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1546. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1547. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1548. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1549. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1550. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1551. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1552. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1553. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1554. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1555. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1556. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1557. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1558. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1559. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1560. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1561. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1562. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1563. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1564. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1565. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1566. {numpy-1.9.3 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1567. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1568. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1569. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1570. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1571. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1572. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1573. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1574. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1575. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1576. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1577. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1578. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1579. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1580. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1581. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1582. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1583. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1584. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1585. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1586. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1587. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1588. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1589. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1590. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -0,0 +1,3838 @@
1
+ #define PY_SSIZE_T_CLEAN
2
+ #include <Python.h>
3
+ #include "structmember.h"
4
+
5
+ #define NPY_NO_DEPRECATED_API NPY_API_VERSION
6
+ #define _MULTIARRAYMODULE
7
+ #include "numpy/arrayobject.h"
8
+ #include "numpy/arrayscalars.h"
9
+
10
+ #include "numpy/npy_math.h"
11
+
12
+ #include "npy_config.h"
13
+
14
+ #include "npy_pycompat.h"
15
+ #include "multiarraymodule.h"
16
+
17
+ #include "common.h"
18
+ #include "ctors.h"
19
+ #include "convert_datatype.h"
20
+ #include "shape.h"
21
+ #include "buffer.h"
22
+ #include "numpymemoryview.h"
23
+ #include "lowlevel_strided_loops.h"
24
+ #include "methods.h"
25
+ #include "_datetime.h"
26
+ #include "datetime_strings.h"
27
+ #include "array_assign.h"
28
+ #include "mapping.h" /* for array_item_asarray */
29
+ #include "templ_common.h" /* for npy_mul_with_overflow_intp */
30
+ #include "alloc.h"
31
+ #include <assert.h>
32
+
33
+ /*
34
+ * Reading from a file or a string.
35
+ *
36
+ * As much as possible, we try to use the same code for both files and strings,
37
+ * so the semantics for fromstring and fromfile are the same, especially with
38
+ * regards to the handling of text representations.
39
+ */
40
+
41
+ typedef int (*next_element)(void **, void *, PyArray_Descr *, void *);
42
+ typedef int (*skip_separator)(void **, const char *, void *);
43
+
44
+ static int
45
+ fromstr_next_element(char **s, void *dptr, PyArray_Descr *dtype,
46
+ const char *end)
47
+ {
48
+ int r = dtype->f->fromstr(*s, dptr, s, dtype);
49
+ if (end != NULL && *s > end) {
50
+ return -1;
51
+ }
52
+ return r;
53
+ }
54
+
55
+ static int
56
+ fromfile_next_element(FILE **fp, void *dptr, PyArray_Descr *dtype,
57
+ void *NPY_UNUSED(stream_data))
58
+ {
59
+ /* the NULL argument is for backwards-compatibility */
60
+ return dtype->f->scanfunc(*fp, dptr, NULL, dtype);
61
+ }
62
+
63
+ /*
64
+ * Remove multiple whitespace from the separator, and add a space to the
65
+ * beginning and end. This simplifies the separator-skipping code below.
66
+ */
67
+ static char *
68
+ swab_separator(const char *sep)
69
+ {
70
+ int skip_space = 0;
71
+ char *s, *start;
72
+
73
+ s = start = malloc(strlen(sep)+3);
74
+ if (s == NULL) {
75
+ return NULL;
76
+ }
77
+ /* add space to front if there isn't one */
78
+ if (*sep != '\0' && !isspace(*sep)) {
79
+ *s = ' '; s++;
80
+ }
81
+ while (*sep != '\0') {
82
+ if (isspace(*sep)) {
83
+ if (skip_space) {
84
+ sep++;
85
+ }
86
+ else {
87
+ *s = ' ';
88
+ s++;
89
+ sep++;
90
+ skip_space = 1;
91
+ }
92
+ }
93
+ else {
94
+ *s = *sep;
95
+ s++;
96
+ sep++;
97
+ skip_space = 0;
98
+ }
99
+ }
100
+ /* add space to end if there isn't one */
101
+ if (s != start && s[-1] == ' ') {
102
+ *s = ' ';
103
+ s++;
104
+ }
105
+ *s = '\0';
106
+ return start;
107
+ }
108
+
109
+ /*
110
+ * Assuming that the separator is the next bit in the string (file), skip it.
111
+ *
112
+ * Single spaces in the separator are matched to arbitrary-long sequences
113
+ * of whitespace in the input. If the separator consists only of spaces,
114
+ * it matches one or more whitespace characters.
115
+ *
116
+ * If we can't match the separator, return -2.
117
+ * If we hit the end of the string (file), return -1.
118
+ * Otherwise, return 0.
119
+ */
120
+ static int
121
+ fromstr_skip_separator(char **s, const char *sep, const char *end)
122
+ {
123
+ char *string = *s;
124
+ int result = 0;
125
+ while (1) {
126
+ char c = *string;
127
+ if (c == '\0' || (end != NULL && string >= end)) {
128
+ result = -1;
129
+ break;
130
+ }
131
+ else if (*sep == '\0') {
132
+ if (string != *s) {
133
+ /* matched separator */
134
+ result = 0;
135
+ break;
136
+ }
137
+ else {
138
+ /* separator was whitespace wildcard that didn't match */
139
+ result = -2;
140
+ break;
141
+ }
142
+ }
143
+ else if (*sep == ' ') {
144
+ /* whitespace wildcard */
145
+ if (!isspace(c)) {
146
+ sep++;
147
+ continue;
148
+ }
149
+ }
150
+ else if (*sep != c) {
151
+ result = -2;
152
+ break;
153
+ }
154
+ else {
155
+ sep++;
156
+ }
157
+ string++;
158
+ }
159
+ *s = string;
160
+ return result;
161
+ }
162
+
163
+ static int
164
+ fromfile_skip_separator(FILE **fp, const char *sep, void *NPY_UNUSED(stream_data))
165
+ {
166
+ int result = 0;
167
+ const char *sep_start = sep;
168
+
169
+ while (1) {
170
+ int c = fgetc(*fp);
171
+
172
+ if (c == EOF) {
173
+ result = -1;
174
+ break;
175
+ }
176
+ else if (*sep == '\0') {
177
+ ungetc(c, *fp);
178
+ if (sep != sep_start) {
179
+ /* matched separator */
180
+ result = 0;
181
+ break;
182
+ }
183
+ else {
184
+ /* separator was whitespace wildcard that didn't match */
185
+ result = -2;
186
+ break;
187
+ }
188
+ }
189
+ else if (*sep == ' ') {
190
+ /* whitespace wildcard */
191
+ if (!isspace(c)) {
192
+ sep++;
193
+ sep_start++;
194
+ ungetc(c, *fp);
195
+ }
196
+ else if (sep == sep_start) {
197
+ sep_start--;
198
+ }
199
+ }
200
+ else if (*sep != c) {
201
+ ungetc(c, *fp);
202
+ result = -2;
203
+ break;
204
+ }
205
+ else {
206
+ sep++;
207
+ }
208
+ }
209
+ return result;
210
+ }
211
+
212
+ /*
213
+ * Change a sub-array field to the base descriptor
214
+ * and update the dimensions and strides
215
+ * appropriately. Dimensions and strides are added
216
+ * to the end.
217
+ *
218
+ * Strides are only added if given (because data is given).
219
+ */
220
+ static int
221
+ _update_descr_and_dimensions(PyArray_Descr **des, npy_intp *newdims,
222
+ npy_intp *newstrides, int oldnd)
223
+ {
224
+ PyArray_Descr *old;
225
+ int newnd;
226
+ int numnew;
227
+ npy_intp *mydim;
228
+ int i;
229
+ int tuple;
230
+
231
+ old = *des;
232
+ *des = old->subarray->base;
233
+
234
+
235
+ mydim = newdims + oldnd;
236
+ tuple = PyTuple_Check(old->subarray->shape);
237
+ if (tuple) {
238
+ numnew = PyTuple_GET_SIZE(old->subarray->shape);
239
+ }
240
+ else {
241
+ numnew = 1;
242
+ }
243
+
244
+
245
+ newnd = oldnd + numnew;
246
+ if (newnd > NPY_MAXDIMS) {
247
+ goto finish;
248
+ }
249
+ if (tuple) {
250
+ for (i = 0; i < numnew; i++) {
251
+ mydim[i] = (npy_intp) PyInt_AsLong(
252
+ PyTuple_GET_ITEM(old->subarray->shape, i));
253
+ }
254
+ }
255
+ else {
256
+ mydim[0] = (npy_intp) PyInt_AsLong(old->subarray->shape);
257
+ }
258
+
259
+ if (newstrides) {
260
+ npy_intp tempsize;
261
+ npy_intp *mystrides;
262
+
263
+ mystrides = newstrides + oldnd;
264
+ /* Make new strides -- alwasy C-contiguous */
265
+ tempsize = (*des)->elsize;
266
+ for (i = numnew - 1; i >= 0; i--) {
267
+ mystrides[i] = tempsize;
268
+ tempsize *= mydim[i] ? mydim[i] : 1;
269
+ }
270
+ }
271
+
272
+ finish:
273
+ Py_INCREF(*des);
274
+ Py_DECREF(old);
275
+ return newnd;
276
+ }
277
+
278
+ NPY_NO_EXPORT void
279
+ _unaligned_strided_byte_copy(char *dst, npy_intp outstrides, char *src,
280
+ npy_intp instrides, npy_intp N, int elsize)
281
+ {
282
+ npy_intp i;
283
+ char *tout = dst;
284
+ char *tin = src;
285
+
286
+ #define _COPY_N_SIZE(size) \
287
+ for(i=0; i<N; i++) { \
288
+ memcpy(tout, tin, size); \
289
+ tin += instrides; \
290
+ tout += outstrides; \
291
+ } \
292
+ return
293
+
294
+ switch(elsize) {
295
+ case 8:
296
+ _COPY_N_SIZE(8);
297
+ case 4:
298
+ _COPY_N_SIZE(4);
299
+ case 1:
300
+ _COPY_N_SIZE(1);
301
+ case 2:
302
+ _COPY_N_SIZE(2);
303
+ case 16:
304
+ _COPY_N_SIZE(16);
305
+ default:
306
+ _COPY_N_SIZE(elsize);
307
+ }
308
+ #undef _COPY_N_SIZE
309
+
310
+ }
311
+
312
+ NPY_NO_EXPORT void
313
+ _strided_byte_swap(void *p, npy_intp stride, npy_intp n, int size)
314
+ {
315
+ char *a, *b, c = 0;
316
+ int j, m;
317
+
318
+ switch(size) {
319
+ case 1: /* no byteswap necessary */
320
+ break;
321
+ case 4:
322
+ if (npy_is_aligned((void*)((npy_intp)p | stride), sizeof(npy_uint32))) {
323
+ for (a = (char*)p; n > 0; n--, a += stride) {
324
+ npy_uint32 * a_ = (npy_uint32 *)a;
325
+ *a_ = npy_bswap4(*a_);
326
+ }
327
+ }
328
+ else {
329
+ for (a = (char*)p; n > 0; n--, a += stride) {
330
+ npy_bswap4_unaligned(a);
331
+ }
332
+ }
333
+ break;
334
+ case 8:
335
+ if (npy_is_aligned((void*)((npy_intp)p | stride), sizeof(npy_uint64))) {
336
+ for (a = (char*)p; n > 0; n--, a += stride) {
337
+ npy_uint64 * a_ = (npy_uint64 *)a;
338
+ *a_ = npy_bswap8(*a_);
339
+ }
340
+ }
341
+ else {
342
+ for (a = (char*)p; n > 0; n--, a += stride) {
343
+ npy_bswap8_unaligned(a);
344
+ }
345
+ }
346
+ break;
347
+ case 2:
348
+ if (npy_is_aligned((void*)((npy_intp)p | stride), sizeof(npy_uint16))) {
349
+ for (a = (char*)p; n > 0; n--, a += stride) {
350
+ npy_uint16 * a_ = (npy_uint16 *)a;
351
+ *a_ = npy_bswap2(*a_);
352
+ }
353
+ }
354
+ else {
355
+ for (a = (char*)p; n > 0; n--, a += stride) {
356
+ npy_bswap2_unaligned(a);
357
+ }
358
+ }
359
+ break;
360
+ default:
361
+ m = size/2;
362
+ for (a = (char *)p; n > 0; n--, a += stride - m) {
363
+ b = a + (size - 1);
364
+ for (j = 0; j < m; j++) {
365
+ c=*a; *a++ = *b; *b-- = c;
366
+ }
367
+ }
368
+ break;
369
+ }
370
+ }
371
+
372
+ NPY_NO_EXPORT void
373
+ byte_swap_vector(void *p, npy_intp n, int size)
374
+ {
375
+ _strided_byte_swap(p, (npy_intp) size, n, size);
376
+ return;
377
+ }
378
+
379
+ /* If numitems > 1, then dst must be contiguous */
380
+ NPY_NO_EXPORT void
381
+ copy_and_swap(void *dst, void *src, int itemsize, npy_intp numitems,
382
+ npy_intp srcstrides, int swap)
383
+ {
384
+ if ((numitems == 1) || (itemsize == srcstrides)) {
385
+ memcpy(dst, src, itemsize*numitems);
386
+ }
387
+ else {
388
+ npy_intp i;
389
+ char *s1 = (char *)src;
390
+ char *d1 = (char *)dst;
391
+
392
+ for (i = 0; i < numitems; i++) {
393
+ memcpy(d1, s1, itemsize);
394
+ d1 += itemsize;
395
+ s1 += srcstrides;
396
+ }
397
+ }
398
+
399
+ if (swap) {
400
+ byte_swap_vector(dst, numitems, itemsize);
401
+ }
402
+ }
403
+
404
+ /*
405
+ * adapted from Numarray,
406
+ * a: destination array
407
+ * s: source object, array or sequence
408
+ * dim: current recursion dimension, must be 0 on first call
409
+ * dst: must be NULL on first call
410
+ * it is a view on the destination array viewing the place where to put the
411
+ * data of the current recursion
412
+ */
413
+ static int
414
+ setArrayFromSequence(PyArrayObject *a, PyObject *s,
415
+ int dim, PyArrayObject * dst)
416
+ {
417
+ Py_ssize_t i, slen;
418
+ int res = -1;
419
+
420
+ /* first recursion, view equal destination */
421
+ if (dst == NULL)
422
+ dst = a;
423
+
424
+ /*
425
+ * This code is to ensure that the sequence access below will
426
+ * return a lower-dimensional sequence.
427
+ */
428
+
429
+ /* INCREF on entry DECREF on exit */
430
+ Py_INCREF(s);
431
+
432
+ if (PyArray_Check(s)) {
433
+ if (!(PyArray_CheckExact(s))) {
434
+ /*
435
+ * make sure a base-class array is used so that the dimensionality
436
+ * reduction assumption is correct.
437
+ */
438
+ /* This will DECREF(s) if replaced */
439
+ s = PyArray_EnsureArray(s);
440
+ if (s == NULL) {
441
+ goto fail;
442
+ }
443
+ }
444
+
445
+ /* dst points to correct array subsection */
446
+ if (PyArray_CopyInto(dst, (PyArrayObject *)s) < 0) {
447
+ goto fail;
448
+ }
449
+
450
+ Py_DECREF(s);
451
+ return 0;
452
+ }
453
+
454
+ if (dim > PyArray_NDIM(a)) {
455
+ PyErr_Format(PyExc_ValueError,
456
+ "setArrayFromSequence: sequence/array dimensions mismatch.");
457
+ goto fail;
458
+ }
459
+
460
+ slen = PySequence_Length(s);
461
+ if (slen < 0) {
462
+ goto fail;
463
+ }
464
+ /*
465
+ * Either the dimensions match, or the sequence has length 1 and can
466
+ * be broadcast to the destination.
467
+ */
468
+ if (slen != PyArray_DIMS(a)[dim] && slen != 1) {
469
+ PyErr_Format(PyExc_ValueError,
470
+ "cannot copy sequence with size %d to array axis "
471
+ "with dimension %d", (int)slen, (int)PyArray_DIMS(a)[dim]);
472
+ goto fail;
473
+ }
474
+
475
+ /* Broadcast the one element from the sequence to all the outputs */
476
+ if (slen == 1) {
477
+ PyObject *o;
478
+ npy_intp alen = PyArray_DIM(a, dim);
479
+
480
+ o = PySequence_GetItem(s, 0);
481
+ if (o == NULL) {
482
+ goto fail;
483
+ }
484
+
485
+ for (i = 0; i < alen; i++) {
486
+ if ((PyArray_NDIM(a) - dim) > 1) {
487
+ PyArrayObject * tmp =
488
+ (PyArrayObject *)array_item_asarray(dst, i);
489
+ if (tmp == NULL) {
490
+ goto fail;
491
+ }
492
+
493
+ res = setArrayFromSequence(a, o, dim+1, tmp);
494
+ Py_DECREF(tmp);
495
+ }
496
+ else {
497
+ char * b = (PyArray_BYTES(dst) + i * PyArray_STRIDES(dst)[0]);
498
+ res = PyArray_DESCR(dst)->f->setitem(o, b, dst);
499
+ }
500
+ if (res < 0) {
501
+ Py_DECREF(o);
502
+ goto fail;
503
+ }
504
+ }
505
+ Py_DECREF(o);
506
+ }
507
+ /* Copy element by element */
508
+ else {
509
+ PyObject * seq;
510
+ seq = PySequence_Fast(s, "Could not convert object to sequence");
511
+ if (seq == NULL) {
512
+ goto fail;
513
+ }
514
+ for (i = 0; i < slen; i++) {
515
+ PyObject * o = PySequence_Fast_GET_ITEM(seq, i);
516
+ if ((PyArray_NDIM(a) - dim) > 1) {
517
+ PyArrayObject * tmp =
518
+ (PyArrayObject *)array_item_asarray(dst, i);
519
+ if (tmp == NULL) {
520
+ Py_DECREF(seq);
521
+ goto fail;
522
+ }
523
+
524
+ res = setArrayFromSequence(a, o, dim+1, tmp);
525
+ Py_DECREF(tmp);
526
+ }
527
+ else {
528
+ char * b = (PyArray_BYTES(dst) + i * PyArray_STRIDES(dst)[0]);
529
+ res = PyArray_DESCR(dst)->f->setitem(o, b, dst);
530
+ }
531
+ if (res < 0) {
532
+ Py_DECREF(seq);
533
+ goto fail;
534
+ }
535
+ }
536
+ Py_DECREF(seq);
537
+ }
538
+
539
+ Py_DECREF(s);
540
+ return 0;
541
+
542
+ fail:
543
+ Py_DECREF(s);
544
+ return res;
545
+ }
546
+
547
+ NPY_NO_EXPORT int
548
+ PyArray_AssignFromSequence(PyArrayObject *self, PyObject *v)
549
+ {
550
+ if (!PySequence_Check(v)) {
551
+ PyErr_SetString(PyExc_ValueError,
552
+ "assignment from non-sequence");
553
+ return -1;
554
+ }
555
+ if (PyArray_NDIM(self) == 0) {
556
+ PyErr_SetString(PyExc_ValueError,
557
+ "assignment to 0-d array");
558
+ return -1;
559
+ }
560
+ return setArrayFromSequence(self, v, 0, NULL);
561
+ }
562
+
563
+ /*
564
+ * The rest of this code is to build the right kind of array
565
+ * from a python object.
566
+ */
567
+
568
+ static int
569
+ discover_itemsize(PyObject *s, int nd, int *itemsize, int string_type)
570
+ {
571
+ int r;
572
+ npy_intp n, i;
573
+
574
+ if (PyArray_Check(s)) {
575
+ *itemsize = PyArray_MAX(*itemsize, PyArray_ITEMSIZE((PyArrayObject *)s));
576
+ return 0;
577
+ }
578
+
579
+ if ((nd == 0) || PyString_Check(s) ||
580
+ #if defined(NPY_PY3K)
581
+ PyMemoryView_Check(s) ||
582
+ #else
583
+ PyBuffer_Check(s) ||
584
+ #endif
585
+ PyUnicode_Check(s)) {
586
+
587
+ /* If an object has no length, leave it be */
588
+ if (string_type && s != NULL &&
589
+ !PyString_Check(s) && !PyUnicode_Check(s)) {
590
+ PyObject *s_string = NULL;
591
+ if (string_type == NPY_STRING) {
592
+ s_string = PyObject_Str(s);
593
+ }
594
+ else {
595
+ #if defined(NPY_PY3K)
596
+ s_string = PyObject_Str(s);
597
+ #else
598
+ s_string = PyObject_Unicode(s);
599
+ #endif
600
+ }
601
+ if (s_string) {
602
+ n = PyObject_Length(s_string);
603
+ Py_DECREF(s_string);
604
+ }
605
+ else {
606
+ n = -1;
607
+ }
608
+ }
609
+ else {
610
+ n = PyObject_Length(s);
611
+ }
612
+ if (n == -1) {
613
+ PyErr_Clear();
614
+ }
615
+ else {
616
+ *itemsize = PyArray_MAX(*itemsize, n);
617
+ }
618
+ return 0;
619
+ }
620
+
621
+ n = PySequence_Length(s);
622
+ for (i = 0; i < n; i++) {
623
+ PyObject *e = PySequence_GetItem(s,i);
624
+
625
+ if (e == NULL) {
626
+ return -1;
627
+ }
628
+
629
+ r = discover_itemsize(e, nd - 1, itemsize, string_type);
630
+ Py_DECREF(e);
631
+ if (r == -1) {
632
+ return -1;
633
+ }
634
+ }
635
+
636
+ return 0;
637
+ }
638
+
639
+ /*
640
+ * Take an arbitrary object and discover how many dimensions it
641
+ * has, filling in the dimensions as we go.
642
+ */
643
+ static int
644
+ discover_dimensions(PyObject *obj, int *maxndim, npy_intp *d, int check_it,
645
+ int stop_at_string, int stop_at_tuple,
646
+ int *out_is_object)
647
+ {
648
+ PyObject *e;
649
+ int r;
650
+ npy_intp n, i;
651
+ Py_buffer buffer_view;
652
+ PyObject * seq;
653
+
654
+ if (*maxndim == 0) {
655
+ return 0;
656
+ }
657
+
658
+ /* obj is an Array */
659
+ if (PyArray_Check(obj)) {
660
+ PyArrayObject *arr = (PyArrayObject *)obj;
661
+
662
+ if (PyArray_NDIM(arr) < *maxndim) {
663
+ *maxndim = PyArray_NDIM(arr);
664
+ }
665
+
666
+ for (i=0; i<*maxndim; i++) {
667
+ d[i] = PyArray_DIM(arr,i);
668
+ }
669
+ return 0;
670
+ }
671
+
672
+ /* obj is a Scalar */
673
+ if (PyArray_IsScalar(obj, Generic)) {
674
+ *maxndim = 0;
675
+ return 0;
676
+ }
677
+
678
+ /* obj is not a Sequence */
679
+ if (!PySequence_Check(obj) ||
680
+ #if defined(NPY_PY3K)
681
+ /* FIXME: XXX -- what is the correct thing to do here? */
682
+ #else
683
+ PyInstance_Check(obj) ||
684
+ #endif
685
+ PySequence_Length(obj) < 0) {
686
+ *maxndim = 0;
687
+ PyErr_Clear();
688
+ return 0;
689
+ }
690
+
691
+ /* obj is a String */
692
+ if (PyString_Check(obj) ||
693
+ #if defined(NPY_PY3K)
694
+ #else
695
+ PyBuffer_Check(obj) ||
696
+ #endif
697
+ PyUnicode_Check(obj)) {
698
+ if (stop_at_string) {
699
+ *maxndim = 0;
700
+ }
701
+ else {
702
+ d[0] = PySequence_Length(obj);
703
+ *maxndim = 1;
704
+ }
705
+ return 0;
706
+ }
707
+
708
+ /* obj is a Tuple, but tuples aren't expanded */
709
+ if (stop_at_tuple && PyTuple_Check(obj)) {
710
+ *maxndim = 0;
711
+ return 0;
712
+ }
713
+
714
+ /* obj is a PEP 3118 buffer */
715
+ /* PEP 3118 buffer interface */
716
+ if (PyObject_CheckBuffer(obj) == 1) {
717
+ memset(&buffer_view, 0, sizeof(Py_buffer));
718
+ if (PyObject_GetBuffer(obj, &buffer_view, PyBUF_STRIDES) == 0 ||
719
+ PyObject_GetBuffer(obj, &buffer_view, PyBUF_ND) == 0) {
720
+ int nd = buffer_view.ndim;
721
+ if (nd < *maxndim) {
722
+ *maxndim = nd;
723
+ }
724
+ for (i=0; i<*maxndim; i++) {
725
+ d[i] = buffer_view.shape[i];
726
+ }
727
+ PyBuffer_Release(&buffer_view);
728
+ return 0;
729
+ }
730
+ else if (PyObject_GetBuffer(obj, &buffer_view, PyBUF_SIMPLE) == 0) {
731
+ d[0] = buffer_view.len;
732
+ *maxndim = 1;
733
+ PyBuffer_Release(&buffer_view);
734
+ return 0;
735
+ }
736
+ else {
737
+ PyErr_Clear();
738
+ }
739
+ }
740
+
741
+ /* obj has the __array_struct__ interface */
742
+ e = PyArray_GetAttrString_SuppressException(obj, "__array_struct__");
743
+ if (e != NULL) {
744
+ int nd = -1;
745
+ if (NpyCapsule_Check(e)) {
746
+ PyArrayInterface *inter;
747
+ inter = (PyArrayInterface *)NpyCapsule_AsVoidPtr(e);
748
+ if (inter->two == 2) {
749
+ nd = inter->nd;
750
+ if (nd >= 0) {
751
+ if (nd < *maxndim) {
752
+ *maxndim = nd;
753
+ }
754
+ for (i=0; i<*maxndim; i++) {
755
+ d[i] = inter->shape[i];
756
+ }
757
+ }
758
+ }
759
+ }
760
+ Py_DECREF(e);
761
+ if (nd >= 0) {
762
+ return 0;
763
+ }
764
+ }
765
+
766
+ /* obj has the __array_interface__ interface */
767
+ e = PyArray_GetAttrString_SuppressException(obj, "__array_interface__");
768
+ if (e != NULL) {
769
+ int nd = -1;
770
+ if (PyDict_Check(e)) {
771
+ PyObject *new;
772
+ new = PyDict_GetItemString(e, "shape");
773
+ if (new && PyTuple_Check(new)) {
774
+ nd = PyTuple_GET_SIZE(new);
775
+ if (nd < *maxndim) {
776
+ *maxndim = nd;
777
+ }
778
+ for (i=0; i<*maxndim; i++) {
779
+ d[i] = PyInt_AsSsize_t(PyTuple_GET_ITEM(new, i));
780
+ if (d[i] < 0) {
781
+ PyErr_SetString(PyExc_RuntimeError,
782
+ "Invalid shape in __array_interface__");
783
+ Py_DECREF(e);
784
+ return -1;
785
+ }
786
+ }
787
+ }
788
+ }
789
+ Py_DECREF(e);
790
+ if (nd >= 0) {
791
+ return 0;
792
+ }
793
+ }
794
+
795
+ seq = PySequence_Fast(obj, "Could not convert object to sequence");
796
+ if (seq == NULL) {
797
+ /*
798
+ * PySequence_Check detects whether an old type object is a
799
+ * sequence by the presence of the __getitem__ attribute, and
800
+ * for new type objects that aren't dictionaries by the
801
+ * presence of the __len__ attribute as well. In either case it
802
+ * is possible to have an object that tests as a sequence but
803
+ * doesn't behave as a sequence and consequently, the
804
+ * PySequence_GetItem call can fail. When that happens and the
805
+ * object looks like a dictionary, we truncate the dimensions
806
+ * and set the object creation flag, otherwise we pass the
807
+ * error back up the call chain.
808
+ */
809
+ if (PyErr_ExceptionMatches(PyExc_KeyError)) {
810
+ PyErr_Clear();
811
+ *maxndim = 0;
812
+ *out_is_object = 1;
813
+ return 0;
814
+ }
815
+ else {
816
+ return -1;
817
+ }
818
+ }
819
+ n = PySequence_Fast_GET_SIZE(seq);
820
+
821
+ d[0] = n;
822
+
823
+ /* 1-dimensional sequence */
824
+ if (n == 0 || *maxndim == 1) {
825
+ *maxndim = 1;
826
+ Py_DECREF(seq);
827
+ return 0;
828
+ }
829
+ else {
830
+ npy_intp dtmp[NPY_MAXDIMS];
831
+ int j, maxndim_m1 = *maxndim - 1;
832
+ e = PySequence_Fast_GET_ITEM(seq, 0);
833
+
834
+ r = discover_dimensions(e, &maxndim_m1, d + 1, check_it,
835
+ stop_at_string, stop_at_tuple,
836
+ out_is_object);
837
+ if (r < 0) {
838
+ Py_DECREF(seq);
839
+ return r;
840
+ }
841
+
842
+ /* For the dimension truncation check below */
843
+ *maxndim = maxndim_m1 + 1;
844
+ for (i = 1; i < n; ++i) {
845
+ e = PySequence_Fast_GET_ITEM(seq, i);
846
+ /* Get the dimensions of the first item */
847
+ r = discover_dimensions(e, &maxndim_m1, dtmp, check_it,
848
+ stop_at_string, stop_at_tuple,
849
+ out_is_object);
850
+ if (r < 0) {
851
+ Py_DECREF(seq);
852
+ return r;
853
+ }
854
+
855
+ /* Reduce max_ndim_m1 to just items which match */
856
+ for (j = 0; j < maxndim_m1; ++j) {
857
+ if (dtmp[j] != d[j+1]) {
858
+ maxndim_m1 = j;
859
+ break;
860
+ }
861
+ }
862
+ }
863
+ /*
864
+ * If the dimensions are truncated, need to produce
865
+ * an object array.
866
+ */
867
+ if (maxndim_m1 + 1 < *maxndim) {
868
+ *out_is_object = 1;
869
+ *maxndim = maxndim_m1 + 1;
870
+ }
871
+ }
872
+
873
+ Py_DECREF(seq);
874
+
875
+ return 0;
876
+ }
877
+
878
+ /*
879
+ * Generic new array creation routine.
880
+ * Internal variant with calloc argument for PyArray_Zeros.
881
+ *
882
+ * steals a reference to descr (even on failure)
883
+ */
884
+ static PyObject *
885
+ PyArray_NewFromDescr_int(PyTypeObject *subtype, PyArray_Descr *descr, int nd,
886
+ npy_intp *dims, npy_intp *strides, void *data,
887
+ int flags, PyObject *obj, int zeroed)
888
+ {
889
+ PyArrayObject_fields *fa;
890
+ int i;
891
+ size_t sd;
892
+ npy_intp size;
893
+
894
+ if (descr->subarray) {
895
+ PyObject *ret;
896
+ npy_intp newdims[2*NPY_MAXDIMS];
897
+ npy_intp *newstrides = NULL;
898
+ memcpy(newdims, dims, nd*sizeof(npy_intp));
899
+ if (strides) {
900
+ newstrides = newdims + NPY_MAXDIMS;
901
+ memcpy(newstrides, strides, nd*sizeof(npy_intp));
902
+ }
903
+ nd =_update_descr_and_dimensions(&descr, newdims,
904
+ newstrides, nd);
905
+ ret = PyArray_NewFromDescr_int(subtype, descr, nd, newdims,
906
+ newstrides,
907
+ data, flags, obj, zeroed);
908
+ return ret;
909
+ }
910
+
911
+ if ((unsigned int)nd > (unsigned int)NPY_MAXDIMS) {
912
+ PyErr_Format(PyExc_ValueError,
913
+ "number of dimensions must be within [0, %d]",
914
+ NPY_MAXDIMS);
915
+ Py_DECREF(descr);
916
+ return NULL;
917
+ }
918
+
919
+ /* Check dimensions */
920
+ size = 1;
921
+ sd = (size_t) descr->elsize;
922
+ if (sd == 0) {
923
+ if (!PyDataType_ISSTRING(descr)) {
924
+ PyErr_SetString(PyExc_TypeError, "Empty data-type");
925
+ Py_DECREF(descr);
926
+ return NULL;
927
+ }
928
+ PyArray_DESCR_REPLACE(descr);
929
+ if (descr == NULL) {
930
+ return NULL;
931
+ }
932
+ if (descr->type_num == NPY_STRING) {
933
+ sd = descr->elsize = 1;
934
+ }
935
+ else {
936
+ sd = descr->elsize = sizeof(npy_ucs4);
937
+ }
938
+ }
939
+
940
+ for (i = 0; i < nd; i++) {
941
+ npy_intp dim = dims[i];
942
+
943
+ if (dim == 0) {
944
+ /*
945
+ * Compare to PyArray_OverflowMultiplyList that
946
+ * returns 0 in this case.
947
+ */
948
+ continue;
949
+ }
950
+
951
+ if (dim < 0) {
952
+ PyErr_SetString(PyExc_ValueError,
953
+ "negative dimensions " \
954
+ "are not allowed");
955
+ Py_DECREF(descr);
956
+ return NULL;
957
+ }
958
+
959
+ /*
960
+ * Care needs to be taken to avoid integer overflow when
961
+ * multiplying the dimensions together to get the total size of the
962
+ * array.
963
+ */
964
+ if (npy_mul_with_overflow_intp(&size, size, dim)) {
965
+ PyErr_SetString(PyExc_ValueError,
966
+ "array is too big.");
967
+ Py_DECREF(descr);
968
+ return NULL;
969
+ }
970
+ }
971
+
972
+ fa = (PyArrayObject_fields *) subtype->tp_alloc(subtype, 0);
973
+ if (fa == NULL) {
974
+ Py_DECREF(descr);
975
+ return NULL;
976
+ }
977
+ fa->nd = nd;
978
+ fa->dimensions = NULL;
979
+ fa->data = NULL;
980
+ if (data == NULL) {
981
+ fa->flags = NPY_ARRAY_DEFAULT;
982
+ if (flags) {
983
+ fa->flags |= NPY_ARRAY_F_CONTIGUOUS;
984
+ if (nd > 1) {
985
+ fa->flags &= ~NPY_ARRAY_C_CONTIGUOUS;
986
+ }
987
+ flags = NPY_ARRAY_F_CONTIGUOUS;
988
+ }
989
+ }
990
+ else {
991
+ fa->flags = (flags & ~NPY_ARRAY_UPDATEIFCOPY);
992
+ }
993
+ fa->descr = descr;
994
+ fa->base = (PyObject *)NULL;
995
+ fa->weakreflist = (PyObject *)NULL;
996
+
997
+ if (nd > 0) {
998
+ fa->dimensions = npy_alloc_cache_dim(2 * nd);
999
+ if (fa->dimensions == NULL) {
1000
+ PyErr_NoMemory();
1001
+ goto fail;
1002
+ }
1003
+ fa->strides = fa->dimensions + nd;
1004
+ memcpy(fa->dimensions, dims, sizeof(npy_intp)*nd);
1005
+ if (strides == NULL) { /* fill it in */
1006
+ sd = _array_fill_strides(fa->strides, dims, nd, sd,
1007
+ flags, &(fa->flags));
1008
+ }
1009
+ else {
1010
+ /*
1011
+ * we allow strides even when we create
1012
+ * the memory, but be careful with this...
1013
+ */
1014
+ memcpy(fa->strides, strides, sizeof(npy_intp)*nd);
1015
+ sd *= size;
1016
+ }
1017
+ }
1018
+ else {
1019
+ fa->dimensions = fa->strides = NULL;
1020
+ fa->flags |= NPY_ARRAY_F_CONTIGUOUS;
1021
+ }
1022
+
1023
+ if (data == NULL) {
1024
+ /*
1025
+ * Allocate something even for zero-space arrays
1026
+ * e.g. shape=(0,) -- otherwise buffer exposure
1027
+ * (a.data) doesn't work as it should.
1028
+ */
1029
+
1030
+ if (sd == 0) {
1031
+ sd = descr->elsize;
1032
+ }
1033
+ /*
1034
+ * It is bad to have unitialized OBJECT pointers
1035
+ * which could also be sub-fields of a VOID array
1036
+ */
1037
+ if (zeroed || PyDataType_FLAGCHK(descr, NPY_NEEDS_INIT)) {
1038
+ data = npy_alloc_cache_zero(sd);
1039
+ }
1040
+ else {
1041
+ data = npy_alloc_cache(sd);
1042
+ }
1043
+ if (data == NULL) {
1044
+ PyErr_NoMemory();
1045
+ goto fail;
1046
+ }
1047
+ fa->flags |= NPY_ARRAY_OWNDATA;
1048
+
1049
+ }
1050
+ else {
1051
+ /*
1052
+ * If data is passed in, this object won't own it by default.
1053
+ * Caller must arrange for this to be reset if truly desired
1054
+ */
1055
+ fa->flags &= ~NPY_ARRAY_OWNDATA;
1056
+ }
1057
+ fa->data = data;
1058
+
1059
+ /*
1060
+ * always update the flags to get the right CONTIGUOUS, ALIGN properties
1061
+ * not owned data and input strides may not be aligned and on some
1062
+ * platforms (debian sparc) malloc does not provide enough alignment for
1063
+ * long double types
1064
+ */
1065
+ PyArray_UpdateFlags((PyArrayObject *)fa, NPY_ARRAY_UPDATE_ALL);
1066
+
1067
+ /*
1068
+ * call the __array_finalize__
1069
+ * method if a subtype.
1070
+ * If obj is NULL, then call method with Py_None
1071
+ */
1072
+ if ((subtype != &PyArray_Type)) {
1073
+ PyObject *res, *func, *args;
1074
+
1075
+ func = PyObject_GetAttr((PyObject *)fa, npy_ma_str_array_finalize);
1076
+ if (func && func != Py_None) {
1077
+ if (NpyCapsule_Check(func)) {
1078
+ /* A C-function is stored here */
1079
+ PyArray_FinalizeFunc *cfunc;
1080
+ cfunc = NpyCapsule_AsVoidPtr(func);
1081
+ Py_DECREF(func);
1082
+ if (cfunc((PyArrayObject *)fa, obj) < 0) {
1083
+ goto fail;
1084
+ }
1085
+ }
1086
+ else {
1087
+ args = PyTuple_New(1);
1088
+ if (obj == NULL) {
1089
+ obj=Py_None;
1090
+ }
1091
+ Py_INCREF(obj);
1092
+ PyTuple_SET_ITEM(args, 0, obj);
1093
+ res = PyObject_Call(func, args, NULL);
1094
+ Py_DECREF(args);
1095
+ Py_DECREF(func);
1096
+ if (res == NULL) {
1097
+ goto fail;
1098
+ }
1099
+ else {
1100
+ Py_DECREF(res);
1101
+ }
1102
+ }
1103
+ }
1104
+ else Py_XDECREF(func);
1105
+ }
1106
+ return (PyObject *)fa;
1107
+
1108
+ fail:
1109
+ Py_DECREF(fa);
1110
+ return NULL;
1111
+ }
1112
+
1113
+
1114
+ /*NUMPY_API
1115
+ * Generic new array creation routine.
1116
+ *
1117
+ * steals a reference to descr (even on failure)
1118
+ */
1119
+ NPY_NO_EXPORT PyObject *
1120
+ PyArray_NewFromDescr(PyTypeObject *subtype, PyArray_Descr *descr, int nd,
1121
+ npy_intp *dims, npy_intp *strides, void *data,
1122
+ int flags, PyObject *obj)
1123
+ {
1124
+ return PyArray_NewFromDescr_int(subtype, descr, nd,
1125
+ dims, strides, data,
1126
+ flags, obj, 0);
1127
+ }
1128
+
1129
+ /*NUMPY_API
1130
+ * Creates a new array with the same shape as the provided one,
1131
+ * with possible memory layout order and data type changes.
1132
+ *
1133
+ * prototype - The array the new one should be like.
1134
+ * order - NPY_CORDER - C-contiguous result.
1135
+ * NPY_FORTRANORDER - Fortran-contiguous result.
1136
+ * NPY_ANYORDER - Fortran if prototype is Fortran, C otherwise.
1137
+ * NPY_KEEPORDER - Keeps the axis ordering of prototype.
1138
+ * dtype - If not NULL, overrides the data type of the result.
1139
+ * subok - If 1, use the prototype's array subtype, otherwise
1140
+ * always create a base-class array.
1141
+ *
1142
+ * NOTE: If dtype is not NULL, steals the dtype reference.
1143
+ */
1144
+ NPY_NO_EXPORT PyObject *
1145
+ PyArray_NewLikeArray(PyArrayObject *prototype, NPY_ORDER order,
1146
+ PyArray_Descr *dtype, int subok)
1147
+ {
1148
+ PyObject *ret = NULL;
1149
+ int ndim = PyArray_NDIM(prototype);
1150
+
1151
+ /* If no override data type, use the one from the prototype */
1152
+ if (dtype == NULL) {
1153
+ dtype = PyArray_DESCR(prototype);
1154
+ Py_INCREF(dtype);
1155
+ }
1156
+
1157
+ /* Handle ANYORDER and simple KEEPORDER cases */
1158
+ switch (order) {
1159
+ case NPY_ANYORDER:
1160
+ order = PyArray_ISFORTRAN(prototype) ?
1161
+ NPY_FORTRANORDER : NPY_CORDER;
1162
+ break;
1163
+ case NPY_KEEPORDER:
1164
+ if (PyArray_IS_C_CONTIGUOUS(prototype) || ndim <= 1) {
1165
+ order = NPY_CORDER;
1166
+ break;
1167
+ }
1168
+ else if (PyArray_IS_F_CONTIGUOUS(prototype)) {
1169
+ order = NPY_FORTRANORDER;
1170
+ break;
1171
+ }
1172
+ break;
1173
+ default:
1174
+ break;
1175
+ }
1176
+
1177
+ /* If it's not KEEPORDER, this is simple */
1178
+ if (order != NPY_KEEPORDER) {
1179
+ ret = PyArray_NewFromDescr(subok ? Py_TYPE(prototype) : &PyArray_Type,
1180
+ dtype,
1181
+ ndim,
1182
+ PyArray_DIMS(prototype),
1183
+ NULL,
1184
+ NULL,
1185
+ order,
1186
+ subok ? (PyObject *)prototype : NULL);
1187
+ }
1188
+ /* KEEPORDER needs some analysis of the strides */
1189
+ else {
1190
+ npy_intp strides[NPY_MAXDIMS], stride;
1191
+ npy_intp *shape = PyArray_DIMS(prototype);
1192
+ npy_stride_sort_item strideperm[NPY_MAXDIMS];
1193
+ int idim;
1194
+
1195
+ PyArray_CreateSortedStridePerm(PyArray_NDIM(prototype),
1196
+ PyArray_STRIDES(prototype),
1197
+ strideperm);
1198
+
1199
+ /* Build the new strides */
1200
+ stride = dtype->elsize;
1201
+ for (idim = ndim-1; idim >= 0; --idim) {
1202
+ npy_intp i_perm = strideperm[idim].perm;
1203
+ strides[i_perm] = stride;
1204
+ stride *= shape[i_perm];
1205
+ }
1206
+
1207
+ /* Finally, allocate the array */
1208
+ ret = PyArray_NewFromDescr(subok ? Py_TYPE(prototype) : &PyArray_Type,
1209
+ dtype,
1210
+ ndim,
1211
+ shape,
1212
+ strides,
1213
+ NULL,
1214
+ 0,
1215
+ subok ? (PyObject *)prototype : NULL);
1216
+ }
1217
+
1218
+ return ret;
1219
+ }
1220
+
1221
+ /*NUMPY_API
1222
+ * Generic new array creation routine.
1223
+ */
1224
+ NPY_NO_EXPORT PyObject *
1225
+ PyArray_New(PyTypeObject *subtype, int nd, npy_intp *dims, int type_num,
1226
+ npy_intp *strides, void *data, int itemsize, int flags,
1227
+ PyObject *obj)
1228
+ {
1229
+ PyArray_Descr *descr;
1230
+ PyObject *new;
1231
+
1232
+ descr = PyArray_DescrFromType(type_num);
1233
+ if (descr == NULL) {
1234
+ return NULL;
1235
+ }
1236
+ if (descr->elsize == 0) {
1237
+ if (itemsize < 1) {
1238
+ PyErr_SetString(PyExc_ValueError,
1239
+ "data type must provide an itemsize");
1240
+ Py_DECREF(descr);
1241
+ return NULL;
1242
+ }
1243
+ PyArray_DESCR_REPLACE(descr);
1244
+ descr->elsize = itemsize;
1245
+ }
1246
+ new = PyArray_NewFromDescr(subtype, descr, nd, dims, strides,
1247
+ data, flags, obj);
1248
+ return new;
1249
+ }
1250
+
1251
+
1252
+ NPY_NO_EXPORT int
1253
+ _array_from_buffer_3118(PyObject *obj, PyObject **out)
1254
+ {
1255
+ /* PEP 3118 */
1256
+ PyObject *memoryview;
1257
+ Py_buffer *view;
1258
+ PyArray_Descr *descr = NULL;
1259
+ PyObject *r;
1260
+ int nd, flags, k;
1261
+ Py_ssize_t d;
1262
+ npy_intp shape[NPY_MAXDIMS], strides[NPY_MAXDIMS];
1263
+
1264
+ memoryview = PyMemoryView_FromObject(obj);
1265
+ if (memoryview == NULL) {
1266
+ PyErr_Clear();
1267
+ return -1;
1268
+ }
1269
+
1270
+ view = PyMemoryView_GET_BUFFER(memoryview);
1271
+ if (view->format != NULL) {
1272
+ descr = _descriptor_from_pep3118_format(view->format);
1273
+ if (descr == NULL) {
1274
+ PyObject *msg;
1275
+ msg = PyBytes_FromFormat("Invalid PEP 3118 format string: '%s'",
1276
+ view->format);
1277
+ PyErr_WarnEx(PyExc_RuntimeWarning, PyBytes_AS_STRING(msg), 0);
1278
+ Py_DECREF(msg);
1279
+ goto fail;
1280
+ }
1281
+
1282
+ /* Sanity check */
1283
+ if (descr->elsize != view->itemsize) {
1284
+ PyErr_WarnEx(PyExc_RuntimeWarning,
1285
+ "Item size computed from the PEP 3118 buffer format "
1286
+ "string does not match the actual item size.",
1287
+ 0);
1288
+ goto fail;
1289
+ }
1290
+ }
1291
+ else {
1292
+ descr = PyArray_DescrNewFromType(NPY_STRING);
1293
+ descr->elsize = view->itemsize;
1294
+ }
1295
+
1296
+ nd = view->ndim;
1297
+ if (view->shape != NULL) {
1298
+ if (nd >= NPY_MAXDIMS || nd < 0) {
1299
+ goto fail;
1300
+ }
1301
+ for (k = 0; k < nd; ++k) {
1302
+ if (k >= NPY_MAXDIMS) {
1303
+ goto fail;
1304
+ }
1305
+ shape[k] = view->shape[k];
1306
+ }
1307
+ if (view->strides != NULL) {
1308
+ for (k = 0; k < nd; ++k) {
1309
+ strides[k] = view->strides[k];
1310
+ }
1311
+ }
1312
+ else {
1313
+ d = view->len;
1314
+ for (k = 0; k < nd; ++k) {
1315
+ if (view->shape[k] != 0) {
1316
+ d /= view->shape[k];
1317
+ }
1318
+ strides[k] = d;
1319
+ }
1320
+ }
1321
+ }
1322
+ else {
1323
+ if (nd == 1) {
1324
+ shape[0] = view->len / view->itemsize;
1325
+ strides[0] = view->itemsize;
1326
+ }
1327
+ else if (nd > 1) {
1328
+ PyErr_WarnEx(PyExc_RuntimeWarning,
1329
+ "ndim computed from the PEP 3118 buffer format "
1330
+ "is greater than 1, but shape is NULL.",
1331
+ 0);
1332
+ goto fail;
1333
+ }
1334
+ }
1335
+
1336
+ flags = NPY_ARRAY_BEHAVED & (view->readonly ? ~NPY_ARRAY_WRITEABLE : ~0);
1337
+ r = PyArray_NewFromDescr(&PyArray_Type, descr,
1338
+ nd, shape, strides, view->buf,
1339
+ flags, NULL);
1340
+ if (r == NULL ||
1341
+ PyArray_SetBaseObject((PyArrayObject *)r, memoryview) < 0) {
1342
+ Py_XDECREF(r);
1343
+ Py_DECREF(memoryview);
1344
+ return -1;
1345
+ }
1346
+ PyArray_UpdateFlags((PyArrayObject *)r, NPY_ARRAY_UPDATE_ALL);
1347
+
1348
+ *out = r;
1349
+ return 0;
1350
+
1351
+ fail:
1352
+ Py_XDECREF(descr);
1353
+ Py_DECREF(memoryview);
1354
+ return -1;
1355
+
1356
+ }
1357
+
1358
+ /*NUMPY_API
1359
+ * Retrieves the array parameters for viewing/converting an arbitrary
1360
+ * PyObject* to a NumPy array. This allows the "innate type and shape"
1361
+ * of Python list-of-lists to be discovered without
1362
+ * actually converting to an array.
1363
+ *
1364
+ * In some cases, such as structured arrays and the __array__ interface,
1365
+ * a data type needs to be used to make sense of the object. When
1366
+ * this is needed, provide a Descr for 'requested_dtype', otherwise
1367
+ * provide NULL. This reference is not stolen. Also, if the requested
1368
+ * dtype doesn't modify the interpretation of the input, out_dtype will
1369
+ * still get the "innate" dtype of the object, not the dtype passed
1370
+ * in 'requested_dtype'.
1371
+ *
1372
+ * If writing to the value in 'op' is desired, set the boolean
1373
+ * 'writeable' to 1. This raises an error when 'op' is a scalar, list
1374
+ * of lists, or other non-writeable 'op'.
1375
+ *
1376
+ * Result: When success (0 return value) is returned, either out_arr
1377
+ * is filled with a non-NULL PyArrayObject and
1378
+ * the rest of the parameters are untouched, or out_arr is
1379
+ * filled with NULL, and the rest of the parameters are
1380
+ * filled.
1381
+ *
1382
+ * Typical usage:
1383
+ *
1384
+ * PyArrayObject *arr = NULL;
1385
+ * PyArray_Descr *dtype = NULL;
1386
+ * int ndim = 0;
1387
+ * npy_intp dims[NPY_MAXDIMS];
1388
+ *
1389
+ * if (PyArray_GetArrayParamsFromObject(op, NULL, 1, &dtype,
1390
+ * &ndim, dims, &arr, NULL) < 0) {
1391
+ * return NULL;
1392
+ * }
1393
+ * if (arr == NULL) {
1394
+ * ... validate/change dtype, validate flags, ndim, etc ...
1395
+ * // Could make custom strides here too
1396
+ * arr = PyArray_NewFromDescr(&PyArray_Type, dtype, ndim,
1397
+ * dims, NULL,
1398
+ * is_f_order ? NPY_ARRAY_F_CONTIGUOUS : 0,
1399
+ * NULL);
1400
+ * if (arr == NULL) {
1401
+ * return NULL;
1402
+ * }
1403
+ * if (PyArray_CopyObject(arr, op) < 0) {
1404
+ * Py_DECREF(arr);
1405
+ * return NULL;
1406
+ * }
1407
+ * }
1408
+ * else {
1409
+ * ... in this case the other parameters weren't filled, just
1410
+ * validate and possibly copy arr itself ...
1411
+ * }
1412
+ * ... use arr ...
1413
+ */
1414
+ NPY_NO_EXPORT int
1415
+ PyArray_GetArrayParamsFromObject(PyObject *op,
1416
+ PyArray_Descr *requested_dtype,
1417
+ npy_bool writeable,
1418
+ PyArray_Descr **out_dtype,
1419
+ int *out_ndim, npy_intp *out_dims,
1420
+ PyArrayObject **out_arr, PyObject *context)
1421
+ {
1422
+ PyObject *tmp;
1423
+
1424
+ /* If op is an array */
1425
+ if (PyArray_Check(op)) {
1426
+ if (writeable
1427
+ && PyArray_FailUnlessWriteable((PyArrayObject *)op, "array") < 0) {
1428
+ return -1;
1429
+ }
1430
+ Py_INCREF(op);
1431
+ *out_arr = (PyArrayObject *)op;
1432
+ return 0;
1433
+ }
1434
+
1435
+ /* If op is a NumPy scalar */
1436
+ if (PyArray_IsScalar(op, Generic)) {
1437
+ if (writeable) {
1438
+ PyErr_SetString(PyExc_RuntimeError,
1439
+ "cannot write to scalar");
1440
+ return -1;
1441
+ }
1442
+ *out_dtype = PyArray_DescrFromScalar(op);
1443
+ if (*out_dtype == NULL) {
1444
+ return -1;
1445
+ }
1446
+ *out_ndim = 0;
1447
+ *out_arr = NULL;
1448
+ return 0;
1449
+ }
1450
+
1451
+ /* If op is a Python scalar */
1452
+ *out_dtype = _array_find_python_scalar_type(op);
1453
+ if (*out_dtype != NULL) {
1454
+ if (writeable) {
1455
+ PyErr_SetString(PyExc_RuntimeError,
1456
+ "cannot write to scalar");
1457
+ Py_DECREF(*out_dtype);
1458
+ return -1;
1459
+ }
1460
+ *out_ndim = 0;
1461
+ *out_arr = NULL;
1462
+ return 0;
1463
+ }
1464
+
1465
+ /* If op supports the PEP 3118 buffer interface */
1466
+ if (!PyBytes_Check(op) && !PyUnicode_Check(op) &&
1467
+ _array_from_buffer_3118(op, (PyObject **)out_arr) == 0) {
1468
+ if (writeable
1469
+ && PyArray_FailUnlessWriteable(*out_arr, "PEP 3118 buffer") < 0) {
1470
+ Py_DECREF(*out_arr);
1471
+ return -1;
1472
+ }
1473
+ return (*out_arr) == NULL ? -1 : 0;
1474
+ }
1475
+
1476
+ /* If op supports the __array_struct__ or __array_interface__ interface */
1477
+ tmp = PyArray_FromStructInterface(op);
1478
+ if (tmp == NULL) {
1479
+ return -1;
1480
+ }
1481
+ if (tmp == Py_NotImplemented) {
1482
+ tmp = PyArray_FromInterface(op);
1483
+ if (tmp == NULL) {
1484
+ return -1;
1485
+ }
1486
+ }
1487
+ if (tmp != Py_NotImplemented) {
1488
+ if (writeable
1489
+ && PyArray_FailUnlessWriteable((PyArrayObject *)tmp,
1490
+ "array interface object") < 0) {
1491
+ Py_DECREF(tmp);
1492
+ return -1;
1493
+ }
1494
+ *out_arr = (PyArrayObject *)tmp;
1495
+ return (*out_arr) == NULL ? -1 : 0;
1496
+ }
1497
+
1498
+ /*
1499
+ * If op supplies the __array__ function.
1500
+ * The documentation says this should produce a copy, so
1501
+ * we skip this method if writeable is true, because the intent
1502
+ * of writeable is to modify the operand.
1503
+ * XXX: If the implementation is wrong, and/or if actual
1504
+ * usage requires this behave differently,
1505
+ * this should be changed!
1506
+ */
1507
+ if (!writeable) {
1508
+ tmp = PyArray_FromArrayAttr(op, requested_dtype, context);
1509
+ if (tmp != Py_NotImplemented) {
1510
+ if (writeable
1511
+ && PyArray_FailUnlessWriteable((PyArrayObject *)tmp,
1512
+ "array interface object") < 0) {
1513
+ Py_DECREF(tmp);
1514
+ return -1;
1515
+ }
1516
+ *out_arr = (PyArrayObject *)tmp;
1517
+ return (*out_arr) == NULL ? -1 : 0;
1518
+ }
1519
+ }
1520
+
1521
+ /* Try to treat op as a list of lists */
1522
+ if (!writeable && PySequence_Check(op)) {
1523
+ int check_it, stop_at_string, stop_at_tuple, is_object;
1524
+ int type_num, type;
1525
+
1526
+ /*
1527
+ * Determine the type, using the requested data type if
1528
+ * it will affect how the array is retrieved
1529
+ */
1530
+ if (requested_dtype != NULL && (
1531
+ requested_dtype->type_num == NPY_STRING ||
1532
+ requested_dtype->type_num == NPY_UNICODE ||
1533
+ (requested_dtype->type_num == NPY_VOID &&
1534
+ (requested_dtype->names || requested_dtype->subarray)) ||
1535
+ requested_dtype->type == NPY_CHARLTR ||
1536
+ requested_dtype->type_num == NPY_OBJECT)) {
1537
+ Py_INCREF(requested_dtype);
1538
+ *out_dtype = requested_dtype;
1539
+ }
1540
+ else {
1541
+ *out_dtype = NULL;
1542
+ if (PyArray_DTypeFromObject(op, NPY_MAXDIMS, out_dtype) < 0) {
1543
+ if (PyErr_ExceptionMatches(PyExc_MemoryError)) {
1544
+ return -1;
1545
+ }
1546
+ /* Return NPY_OBJECT for most exceptions */
1547
+ else {
1548
+ PyErr_Clear();
1549
+ *out_dtype = PyArray_DescrFromType(NPY_OBJECT);
1550
+ if (*out_dtype == NULL) {
1551
+ return -1;
1552
+ }
1553
+ }
1554
+ }
1555
+ if (*out_dtype == NULL) {
1556
+ *out_dtype = PyArray_DescrFromType(NPY_DEFAULT_TYPE);
1557
+ if (*out_dtype == NULL) {
1558
+ return -1;
1559
+ }
1560
+ }
1561
+ }
1562
+
1563
+ type_num = (*out_dtype)->type_num;
1564
+ type = (*out_dtype)->type;
1565
+
1566
+ check_it = (type != NPY_CHARLTR);
1567
+ stop_at_string = (type_num != NPY_STRING) ||
1568
+ (type == NPY_STRINGLTR);
1569
+ stop_at_tuple = (type_num == NPY_VOID &&
1570
+ ((*out_dtype)->names || (*out_dtype)->subarray));
1571
+
1572
+ *out_ndim = NPY_MAXDIMS;
1573
+ is_object = 0;
1574
+ if (discover_dimensions(op, out_ndim, out_dims, check_it,
1575
+ stop_at_string, stop_at_tuple,
1576
+ &is_object) < 0) {
1577
+ Py_DECREF(*out_dtype);
1578
+ if (PyErr_Occurred()) {
1579
+ return -1;
1580
+ }
1581
+ *out_dtype = PyArray_DescrFromType(NPY_OBJECT);
1582
+ if (*out_dtype == NULL) {
1583
+ return -1;
1584
+ }
1585
+ *out_ndim = 0;
1586
+ *out_arr = NULL;
1587
+ return 0;
1588
+ }
1589
+ /* If object arrays are forced */
1590
+ if (is_object) {
1591
+ Py_DECREF(*out_dtype);
1592
+ *out_dtype = PyArray_DescrFromType(NPY_OBJECT);
1593
+ if (*out_dtype == NULL) {
1594
+ return -1;
1595
+ }
1596
+ }
1597
+
1598
+ if ((*out_dtype)->type == NPY_CHARLTR && (*out_ndim) > 0 &&
1599
+ out_dims[(*out_ndim) - 1] == 1) {
1600
+ (*out_ndim) -= 1;
1601
+ }
1602
+
1603
+ /* If the type is flexible, determine its size */
1604
+ if ((*out_dtype)->elsize == 0 &&
1605
+ PyTypeNum_ISEXTENDED((*out_dtype)->type_num)) {
1606
+ int itemsize = 0;
1607
+ int string_type = 0;
1608
+ if ((*out_dtype)->type_num == NPY_STRING ||
1609
+ (*out_dtype)->type_num == NPY_UNICODE) {
1610
+ string_type = (*out_dtype)->type_num;
1611
+ }
1612
+ if (discover_itemsize(op, *out_ndim, &itemsize, string_type) < 0) {
1613
+ Py_DECREF(*out_dtype);
1614
+ if (PyErr_Occurred() &&
1615
+ PyErr_GivenExceptionMatches(PyErr_Occurred(),
1616
+ PyExc_MemoryError)) {
1617
+ return -1;
1618
+ }
1619
+ /* Say it's an OBJECT scalar if there's an error */
1620
+ PyErr_Clear();
1621
+ *out_dtype = PyArray_DescrFromType(NPY_OBJECT);
1622
+ *out_ndim = 0;
1623
+ *out_arr = NULL;
1624
+ return 0;
1625
+ }
1626
+ if ((*out_dtype)->type_num == NPY_UNICODE) {
1627
+ itemsize *= 4;
1628
+ }
1629
+
1630
+ if (itemsize != (*out_dtype)->elsize) {
1631
+ PyArray_DESCR_REPLACE(*out_dtype);
1632
+ (*out_dtype)->elsize = itemsize;
1633
+ }
1634
+ }
1635
+
1636
+ *out_arr = NULL;
1637
+ return 0;
1638
+ }
1639
+
1640
+ /* Anything can be viewed as an object, unless it needs to be writeable */
1641
+ if (!writeable) {
1642
+ *out_dtype = PyArray_DescrFromType(NPY_OBJECT);
1643
+ if (*out_dtype == NULL) {
1644
+ return -1;
1645
+ }
1646
+ *out_ndim = 0;
1647
+ *out_arr = NULL;
1648
+ return 0;
1649
+ }
1650
+
1651
+ PyErr_SetString(PyExc_RuntimeError,
1652
+ "object cannot be viewed as a writeable numpy array");
1653
+ return -1;
1654
+ }
1655
+
1656
+ /*NUMPY_API
1657
+ * Does not check for NPY_ARRAY_ENSURECOPY and NPY_ARRAY_NOTSWAPPED in flags
1658
+ * Steals a reference to newtype --- which can be NULL
1659
+ */
1660
+ NPY_NO_EXPORT PyObject *
1661
+ PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int min_depth,
1662
+ int max_depth, int flags, PyObject *context)
1663
+ {
1664
+ /*
1665
+ * This is the main code to make a NumPy array from a Python
1666
+ * Object. It is called from many different places.
1667
+ */
1668
+ PyArrayObject *arr = NULL, *ret;
1669
+ PyArray_Descr *dtype = NULL;
1670
+ int ndim = 0;
1671
+ npy_intp dims[NPY_MAXDIMS];
1672
+
1673
+ /* Get either the array or its parameters if it isn't an array */
1674
+ if (PyArray_GetArrayParamsFromObject(op, newtype,
1675
+ 0, &dtype,
1676
+ &ndim, dims, &arr, context) < 0) {
1677
+ Py_XDECREF(newtype);
1678
+ return NULL;
1679
+ }
1680
+
1681
+ /* If the requested dtype is flexible, adapt it */
1682
+ if (newtype != NULL) {
1683
+ PyArray_AdaptFlexibleDType(op,
1684
+ (dtype == NULL) ? PyArray_DESCR(arr) : dtype,
1685
+ &newtype);
1686
+ }
1687
+
1688
+ /* If we got dimensions and dtype instead of an array */
1689
+ if (arr == NULL) {
1690
+ if (flags & NPY_ARRAY_UPDATEIFCOPY) {
1691
+ Py_XDECREF(newtype);
1692
+ PyErr_SetString(PyExc_TypeError,
1693
+ "UPDATEIFCOPY used for non-array input.");
1694
+ return NULL;
1695
+ }
1696
+ else if (min_depth != 0 && ndim < min_depth) {
1697
+ Py_DECREF(dtype);
1698
+ Py_XDECREF(newtype);
1699
+ PyErr_SetString(PyExc_ValueError,
1700
+ "object of too small depth for desired array");
1701
+ ret = NULL;
1702
+ }
1703
+ else if (max_depth != 0 && ndim > max_depth) {
1704
+ Py_DECREF(dtype);
1705
+ Py_XDECREF(newtype);
1706
+ PyErr_SetString(PyExc_ValueError,
1707
+ "object too deep for desired array");
1708
+ ret = NULL;
1709
+ }
1710
+ else if (ndim == 0 && PyArray_IsScalar(op, Generic)) {
1711
+ ret = (PyArrayObject *)PyArray_FromScalar(op, newtype);
1712
+ Py_DECREF(dtype);
1713
+ }
1714
+ else {
1715
+ if (newtype == NULL) {
1716
+ newtype = dtype;
1717
+ }
1718
+ else {
1719
+ /*
1720
+ * TODO: would be nice to do this too, but it's
1721
+ * a behavior change. It's also a bit tricky
1722
+ * for downcasting to small integer and float
1723
+ * types, and might be better to modify
1724
+ * PyArray_AssignFromSequence and descr->f->setitem
1725
+ * to have a 'casting' parameter and
1726
+ * to check each value with scalar rules like
1727
+ * in PyArray_MinScalarType.
1728
+ */
1729
+ /*
1730
+ if (!(flags&NPY_ARRAY_FORCECAST) && ndim > 0 &&
1731
+ !PyArray_CanCastTo(dtype, newtype)) {
1732
+ Py_DECREF(dtype);
1733
+ Py_XDECREF(newtype);
1734
+ PyErr_SetString(PyExc_TypeError,
1735
+ "object cannot be safely cast to array "
1736
+ "of required type");
1737
+ return NULL;
1738
+ }
1739
+ */
1740
+ Py_DECREF(dtype);
1741
+ }
1742
+
1743
+ /* Create an array and copy the data */
1744
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type, newtype,
1745
+ ndim, dims,
1746
+ NULL, NULL,
1747
+ flags&NPY_ARRAY_F_CONTIGUOUS, NULL);
1748
+ if (ret == NULL) {
1749
+ return NULL;
1750
+ }
1751
+
1752
+ if (ndim > 0) {
1753
+ if (PyArray_AssignFromSequence(ret, op) < 0) {
1754
+ Py_DECREF(ret);
1755
+ ret = NULL;
1756
+ }
1757
+ }
1758
+ else {
1759
+ if (PyArray_DESCR(ret)->f->setitem(op,
1760
+ PyArray_DATA(ret), ret) < 0) {
1761
+ Py_DECREF(ret);
1762
+ ret = NULL;
1763
+ }
1764
+ }
1765
+ }
1766
+ }
1767
+ else {
1768
+ if (min_depth != 0 && PyArray_NDIM(arr) < min_depth) {
1769
+ PyErr_SetString(PyExc_ValueError,
1770
+ "object of too small depth for desired array");
1771
+ Py_DECREF(arr);
1772
+ ret = NULL;
1773
+ }
1774
+ else if (max_depth != 0 && PyArray_NDIM(arr) > max_depth) {
1775
+ PyErr_SetString(PyExc_ValueError,
1776
+ "object too deep for desired array");
1777
+ Py_DECREF(arr);
1778
+ ret = NULL;
1779
+ }
1780
+ else {
1781
+ ret = (PyArrayObject *)PyArray_FromArray(arr, newtype, flags);
1782
+ Py_DECREF(arr);
1783
+ }
1784
+ }
1785
+
1786
+ return (PyObject *)ret;
1787
+ }
1788
+
1789
+ /*
1790
+ * flags is any of
1791
+ * NPY_ARRAY_C_CONTIGUOUS (formerly CONTIGUOUS),
1792
+ * NPY_ARRAY_F_CONTIGUOUS (formerly FORTRAN),
1793
+ * NPY_ARRAY_ALIGNED,
1794
+ * NPY_ARRAY_WRITEABLE,
1795
+ * NPY_ARRAY_NOTSWAPPED,
1796
+ * NPY_ARRAY_ENSURECOPY,
1797
+ * NPY_ARRAY_UPDATEIFCOPY,
1798
+ * NPY_ARRAY_FORCECAST,
1799
+ * NPY_ARRAY_ENSUREARRAY,
1800
+ * NPY_ARRAY_ELEMENTSTRIDES
1801
+ *
1802
+ * or'd (|) together
1803
+ *
1804
+ * Any of these flags present means that the returned array should
1805
+ * guarantee that aspect of the array. Otherwise the returned array
1806
+ * won't guarantee it -- it will depend on the object as to whether or
1807
+ * not it has such features.
1808
+ *
1809
+ * Note that NPY_ARRAY_ENSURECOPY is enough
1810
+ * to guarantee NPY_ARRAY_C_CONTIGUOUS, NPY_ARRAY_ALIGNED and
1811
+ * NPY_ARRAY_WRITEABLE and therefore it is redundant to include
1812
+ * those as well.
1813
+ *
1814
+ * NPY_ARRAY_BEHAVED == NPY_ARRAY_ALIGNED | NPY_ARRAY_WRITEABLE
1815
+ * NPY_ARRAY_CARRAY = NPY_ARRAY_C_CONTIGUOUS | NPY_ARRAY_BEHAVED
1816
+ * NPY_ARRAY_FARRAY = NPY_ARRAY_F_CONTIGUOUS | NPY_ARRAY_BEHAVED
1817
+ *
1818
+ * NPY_ARRAY_F_CONTIGUOUS can be set in the FLAGS to request a FORTRAN array.
1819
+ * Fortran arrays are always behaved (aligned,
1820
+ * notswapped, and writeable) and not (C) CONTIGUOUS (if > 1d).
1821
+ *
1822
+ * NPY_ARRAY_UPDATEIFCOPY flag sets this flag in the returned array if a copy
1823
+ * is made and the base argument points to the (possibly) misbehaved array.
1824
+ * When the new array is deallocated, the original array held in base
1825
+ * is updated with the contents of the new array.
1826
+ *
1827
+ * NPY_ARRAY_FORCECAST will cause a cast to occur regardless of whether or not
1828
+ * it is safe.
1829
+ */
1830
+
1831
+ /*NUMPY_API
1832
+ * steals a reference to descr -- accepts NULL
1833
+ */
1834
+ NPY_NO_EXPORT PyObject *
1835
+ PyArray_CheckFromAny(PyObject *op, PyArray_Descr *descr, int min_depth,
1836
+ int max_depth, int requires, PyObject *context)
1837
+ {
1838
+ PyObject *obj;
1839
+ if (requires & NPY_ARRAY_NOTSWAPPED) {
1840
+ if (!descr && PyArray_Check(op) &&
1841
+ !PyArray_ISNBO(PyArray_DESCR((PyArrayObject *)op)->byteorder)) {
1842
+ descr = PyArray_DescrNew(PyArray_DESCR((PyArrayObject *)op));
1843
+ }
1844
+ else if (descr && !PyArray_ISNBO(descr->byteorder)) {
1845
+ PyArray_DESCR_REPLACE(descr);
1846
+ }
1847
+ if (descr && descr->byteorder != NPY_IGNORE) {
1848
+ descr->byteorder = NPY_NATIVE;
1849
+ }
1850
+ }
1851
+
1852
+ obj = PyArray_FromAny(op, descr, min_depth, max_depth, requires, context);
1853
+ if (obj == NULL) {
1854
+ return NULL;
1855
+ }
1856
+ if ((requires & NPY_ARRAY_ELEMENTSTRIDES) &&
1857
+ !PyArray_ElementStrides(obj)) {
1858
+ PyObject *ret;
1859
+ ret = PyArray_NewCopy((PyArrayObject *)obj, NPY_ANYORDER);
1860
+ Py_DECREF(obj);
1861
+ obj = ret;
1862
+ }
1863
+ return obj;
1864
+ }
1865
+
1866
+ /*NUMPY_API
1867
+ * steals reference to newtype --- acc. NULL
1868
+ */
1869
+ NPY_NO_EXPORT PyObject *
1870
+ PyArray_FromArray(PyArrayObject *arr, PyArray_Descr *newtype, int flags)
1871
+ {
1872
+
1873
+ PyArrayObject *ret = NULL;
1874
+ int itemsize;
1875
+ int copy = 0;
1876
+ int arrflags;
1877
+ PyArray_Descr *oldtype;
1878
+ NPY_CASTING casting = NPY_SAFE_CASTING;
1879
+
1880
+ oldtype = PyArray_DESCR(arr);
1881
+ if (newtype == NULL) {
1882
+ /*
1883
+ * Check if object is of array with Null newtype.
1884
+ * If so return it directly instead of checking for casting.
1885
+ */
1886
+ if (flags == 0) {
1887
+ Py_INCREF(arr);
1888
+ return (PyObject *)arr;
1889
+ }
1890
+ newtype = oldtype;
1891
+ Py_INCREF(oldtype);
1892
+ }
1893
+ itemsize = newtype->elsize;
1894
+ if (itemsize == 0) {
1895
+ PyArray_DESCR_REPLACE(newtype);
1896
+ if (newtype == NULL) {
1897
+ return NULL;
1898
+ }
1899
+ newtype->elsize = oldtype->elsize;
1900
+ itemsize = newtype->elsize;
1901
+ }
1902
+
1903
+ /* If the casting if forced, use the 'unsafe' casting rule */
1904
+ if (flags & NPY_ARRAY_FORCECAST) {
1905
+ casting = NPY_UNSAFE_CASTING;
1906
+ }
1907
+
1908
+ /* Raise an error if the casting rule isn't followed */
1909
+ if (!PyArray_CanCastArrayTo(arr, newtype, casting)) {
1910
+ PyObject *errmsg;
1911
+
1912
+ errmsg = PyUString_FromString("Cannot cast array data from ");
1913
+ PyUString_ConcatAndDel(&errmsg,
1914
+ PyObject_Repr((PyObject *)PyArray_DESCR(arr)));
1915
+ PyUString_ConcatAndDel(&errmsg,
1916
+ PyUString_FromString(" to "));
1917
+ PyUString_ConcatAndDel(&errmsg,
1918
+ PyObject_Repr((PyObject *)newtype));
1919
+ PyUString_ConcatAndDel(&errmsg,
1920
+ PyUString_FromFormat(" according to the rule %s",
1921
+ npy_casting_to_string(casting)));
1922
+ PyErr_SetObject(PyExc_TypeError, errmsg);
1923
+ Py_DECREF(errmsg);
1924
+
1925
+ Py_DECREF(newtype);
1926
+ return NULL;
1927
+ }
1928
+
1929
+ arrflags = PyArray_FLAGS(arr);
1930
+ /* If a guaranteed copy was requested */
1931
+ copy = (flags & NPY_ARRAY_ENSURECOPY) ||
1932
+ /* If C contiguous was requested, and arr is not */
1933
+ ((flags & NPY_ARRAY_C_CONTIGUOUS) &&
1934
+ (!(arrflags & NPY_ARRAY_C_CONTIGUOUS))) ||
1935
+ /* If an aligned array was requested, and arr is not */
1936
+ ((flags & NPY_ARRAY_ALIGNED) &&
1937
+ (!(arrflags & NPY_ARRAY_ALIGNED))) ||
1938
+ /* If a Fortran contiguous array was requested, and arr is not */
1939
+ ((flags & NPY_ARRAY_F_CONTIGUOUS) &&
1940
+ (!(arrflags & NPY_ARRAY_F_CONTIGUOUS))) ||
1941
+ /* If a writeable array was requested, and arr is not */
1942
+ ((flags & NPY_ARRAY_WRITEABLE) &&
1943
+ (!(arrflags & NPY_ARRAY_WRITEABLE))) ||
1944
+ !PyArray_EquivTypes(oldtype, newtype);
1945
+
1946
+ if (copy) {
1947
+ NPY_ORDER order = NPY_KEEPORDER;
1948
+ int subok = 1;
1949
+
1950
+ /* Set the order for the copy being made based on the flags */
1951
+ if (flags & NPY_ARRAY_F_CONTIGUOUS) {
1952
+ order = NPY_FORTRANORDER;
1953
+ }
1954
+ else if (flags & NPY_ARRAY_C_CONTIGUOUS) {
1955
+ order = NPY_CORDER;
1956
+ }
1957
+
1958
+ if ((flags & NPY_ARRAY_ENSUREARRAY)) {
1959
+ subok = 0;
1960
+ }
1961
+ ret = (PyArrayObject *)PyArray_NewLikeArray(arr, order,
1962
+ newtype, subok);
1963
+ if (ret == NULL) {
1964
+ return NULL;
1965
+ }
1966
+
1967
+ if (PyArray_CopyInto(ret, arr) < 0) {
1968
+ Py_DECREF(ret);
1969
+ return NULL;
1970
+ }
1971
+
1972
+ if (flags & NPY_ARRAY_UPDATEIFCOPY) {
1973
+ Py_INCREF(arr);
1974
+ if (PyArray_SetUpdateIfCopyBase(ret, arr) < 0) {
1975
+ Py_DECREF(ret);
1976
+ return NULL;
1977
+ }
1978
+ }
1979
+ }
1980
+ /*
1981
+ * If no copy then take an appropriate view if necessary, or
1982
+ * just return a reference to ret itself.
1983
+ */
1984
+ else {
1985
+ int needview = ((flags & NPY_ARRAY_ENSUREARRAY) &&
1986
+ !PyArray_CheckExact(arr));
1987
+
1988
+ Py_DECREF(newtype);
1989
+ if (needview) {
1990
+ PyArray_Descr *dtype = PyArray_DESCR(arr);
1991
+ PyTypeObject *subtype = NULL;
1992
+
1993
+ if (flags & NPY_ARRAY_ENSUREARRAY) {
1994
+ subtype = &PyArray_Type;
1995
+ }
1996
+
1997
+ Py_INCREF(dtype);
1998
+ ret = (PyArrayObject *)PyArray_View(arr, NULL, subtype);
1999
+ if (ret == NULL) {
2000
+ return NULL;
2001
+ }
2002
+ }
2003
+ else {
2004
+ Py_INCREF(arr);
2005
+ ret = arr;
2006
+ }
2007
+ }
2008
+
2009
+ return (PyObject *)ret;
2010
+ }
2011
+
2012
+ /*NUMPY_API */
2013
+ NPY_NO_EXPORT PyObject *
2014
+ PyArray_FromStructInterface(PyObject *input)
2015
+ {
2016
+ PyArray_Descr *thetype = NULL;
2017
+ char buf[40];
2018
+ PyArrayInterface *inter;
2019
+ PyObject *attr;
2020
+ PyArrayObject *ret;
2021
+ char endian = NPY_NATBYTE;
2022
+
2023
+ attr = PyArray_GetAttrString_SuppressException(input, "__array_struct__");
2024
+ if (attr == NULL) {
2025
+ return Py_NotImplemented;
2026
+ }
2027
+ if (!NpyCapsule_Check(attr)) {
2028
+ goto fail;
2029
+ }
2030
+ inter = NpyCapsule_AsVoidPtr(attr);
2031
+ if (inter->two != 2) {
2032
+ goto fail;
2033
+ }
2034
+ if ((inter->flags & NPY_ARRAY_NOTSWAPPED) != NPY_ARRAY_NOTSWAPPED) {
2035
+ endian = NPY_OPPBYTE;
2036
+ inter->flags &= ~NPY_ARRAY_NOTSWAPPED;
2037
+ }
2038
+
2039
+ if (inter->flags & NPY_ARR_HAS_DESCR) {
2040
+ if (PyArray_DescrConverter(inter->descr, &thetype) == NPY_FAIL) {
2041
+ thetype = NULL;
2042
+ PyErr_Clear();
2043
+ }
2044
+ }
2045
+
2046
+ if (thetype == NULL) {
2047
+ PyOS_snprintf(buf, sizeof(buf),
2048
+ "%c%c%d", endian, inter->typekind, inter->itemsize);
2049
+ if (!(thetype=_array_typedescr_fromstr(buf))) {
2050
+ Py_DECREF(attr);
2051
+ return NULL;
2052
+ }
2053
+ }
2054
+
2055
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type, thetype,
2056
+ inter->nd, inter->shape,
2057
+ inter->strides, inter->data,
2058
+ inter->flags, NULL);
2059
+ Py_INCREF(input);
2060
+ if (PyArray_SetBaseObject(ret, input) < 0) {
2061
+ Py_DECREF(ret);
2062
+ return NULL;
2063
+ }
2064
+ Py_DECREF(attr);
2065
+ PyArray_UpdateFlags(ret, NPY_ARRAY_UPDATE_ALL);
2066
+ return (PyObject *)ret;
2067
+
2068
+ fail:
2069
+ PyErr_SetString(PyExc_ValueError, "invalid __array_struct__");
2070
+ Py_DECREF(attr);
2071
+ return NULL;
2072
+ }
2073
+
2074
+ /*
2075
+ * Checks if the object in descr is the default 'descr' member for the
2076
+ * __array_interface__ dictionary with 'typestr' member typestr.
2077
+ */
2078
+ NPY_NO_EXPORT int
2079
+ _is_default_descr(PyObject *descr, PyObject *typestr) {
2080
+ PyObject *tuple, *name, *typestr2;
2081
+ #if defined(NPY_PY3K)
2082
+ PyObject *tmp = NULL;
2083
+ #endif
2084
+ int ret = 0;
2085
+
2086
+ if (!PyList_Check(descr) || PyList_GET_SIZE(descr) != 1) {
2087
+ return 0;
2088
+ }
2089
+ tuple = PyList_GET_ITEM(descr, 0);
2090
+ if (!(PyTuple_Check(tuple) && PyTuple_GET_SIZE(tuple) == 2)) {
2091
+ return 0;
2092
+ }
2093
+ name = PyTuple_GET_ITEM(tuple, 0);
2094
+ if (!(PyUString_Check(name) && PyUString_GET_SIZE(name) == 0)) {
2095
+ return 0;
2096
+ }
2097
+ typestr2 = PyTuple_GET_ITEM(tuple, 1);
2098
+ #if defined(NPY_PY3K)
2099
+ /* Allow unicode type strings */
2100
+ if (PyUnicode_Check(typestr2)) {
2101
+ tmp = PyUnicode_AsASCIIString(typestr2);
2102
+ if (tmp == NULL) {
2103
+ return 0;
2104
+ }
2105
+ typestr2 = tmp;
2106
+ }
2107
+ #endif
2108
+ if (PyBytes_Check(typestr2) &&
2109
+ PyObject_RichCompareBool(typestr, typestr2, Py_EQ)) {
2110
+ ret = 1;
2111
+ }
2112
+ #if defined(NPY_PY3K)
2113
+ Py_XDECREF(tmp);
2114
+ #endif
2115
+
2116
+ return ret;
2117
+ }
2118
+
2119
+ #define PyIntOrLong_Check(obj) (PyInt_Check(obj) || PyLong_Check(obj))
2120
+
2121
+ /*NUMPY_API*/
2122
+ NPY_NO_EXPORT PyObject *
2123
+ PyArray_FromInterface(PyObject *origin)
2124
+ {
2125
+ PyObject *tmp = NULL;
2126
+ PyObject *iface = NULL;
2127
+ PyObject *attr = NULL;
2128
+ PyObject *base = NULL;
2129
+ PyArrayObject *ret;
2130
+ PyArray_Descr *dtype = NULL;
2131
+ char *data = NULL;
2132
+ Py_ssize_t buffer_len;
2133
+ int res, i, n;
2134
+ npy_intp dims[NPY_MAXDIMS], strides[NPY_MAXDIMS];
2135
+ int dataflags = NPY_ARRAY_BEHAVED;
2136
+
2137
+ iface = PyArray_GetAttrString_SuppressException(origin,
2138
+ "__array_interface__");
2139
+ if (iface == NULL) {
2140
+ return Py_NotImplemented;
2141
+ }
2142
+ if (!PyDict_Check(iface)) {
2143
+ Py_DECREF(iface);
2144
+ PyErr_SetString(PyExc_ValueError,
2145
+ "Invalid __array_interface__ value, must be a dict");
2146
+ return NULL;
2147
+ }
2148
+
2149
+ /* Get type string from interface specification */
2150
+ attr = PyDict_GetItemString(iface, "typestr");
2151
+ if (attr == NULL) {
2152
+ Py_DECREF(iface);
2153
+ PyErr_SetString(PyExc_ValueError,
2154
+ "Missing __array_interface__ typestr");
2155
+ return NULL;
2156
+ }
2157
+ #if defined(NPY_PY3K)
2158
+ /* Allow unicode type strings */
2159
+ if (PyUnicode_Check(attr)) {
2160
+ tmp = PyUnicode_AsASCIIString(attr);
2161
+ attr = tmp;
2162
+ }
2163
+ #endif
2164
+ if (!PyBytes_Check(attr)) {
2165
+ PyErr_SetString(PyExc_TypeError,
2166
+ "__array_interface__ typestr must be a string");
2167
+ goto fail;
2168
+ }
2169
+ /* Get dtype from type string */
2170
+ dtype = _array_typedescr_fromstr(PyString_AS_STRING(attr));
2171
+ #if defined(NPY_PY3K)
2172
+ if (tmp == attr) {
2173
+ Py_DECREF(tmp);
2174
+ }
2175
+ #endif
2176
+ if (dtype == NULL) {
2177
+ goto fail;
2178
+ }
2179
+
2180
+ /*
2181
+ * If the dtype is NPY_VOID, see if there is extra information in
2182
+ * the 'descr' attribute.
2183
+ */
2184
+ if (dtype->type_num == NPY_VOID) {
2185
+ PyObject *descr = PyDict_GetItemString(iface, "descr");
2186
+ PyArray_Descr *new_dtype = NULL;
2187
+
2188
+ if (descr != NULL && !_is_default_descr(descr, attr) &&
2189
+ PyArray_DescrConverter2(descr, &new_dtype) == NPY_SUCCEED &&
2190
+ new_dtype != NULL) {
2191
+ Py_DECREF(dtype);
2192
+ dtype = new_dtype;
2193
+ }
2194
+ }
2195
+
2196
+ /* Get shape tuple from interface specification */
2197
+ attr = PyDict_GetItemString(iface, "shape");
2198
+ if (attr == NULL) {
2199
+ /* Shape must be specified when 'data' is specified */
2200
+ if (PyDict_GetItemString(iface, "data") != NULL) {
2201
+ Py_DECREF(iface);
2202
+ PyErr_SetString(PyExc_ValueError,
2203
+ "Missing __array_interface__ shape");
2204
+ return NULL;
2205
+ }
2206
+ /* Assume shape as scalar otherwise */
2207
+ else {
2208
+ /* NOTE: pointers to data and base should be NULL */
2209
+ n = dims[0] = 0;
2210
+ }
2211
+ }
2212
+ /* Make sure 'shape' is a tuple */
2213
+ else if (!PyTuple_Check(attr)) {
2214
+ PyErr_SetString(PyExc_TypeError,
2215
+ "shape must be a tuple");
2216
+ goto fail;
2217
+ }
2218
+ /* Get dimensions from shape tuple */
2219
+ else {
2220
+ n = PyTuple_GET_SIZE(attr);
2221
+ for (i = 0; i < n; i++) {
2222
+ tmp = PyTuple_GET_ITEM(attr, i);
2223
+ dims[i] = PyArray_PyIntAsIntp(tmp);
2224
+ if (error_converting(dims[i])) {
2225
+ goto fail;
2226
+ }
2227
+ }
2228
+ }
2229
+
2230
+ /* Get data buffer from interface specification */
2231
+ attr = PyDict_GetItemString(iface, "data");
2232
+
2233
+ /* Case for data access through pointer */
2234
+ if (attr && PyTuple_Check(attr)) {
2235
+ PyObject *dataptr;
2236
+ if (PyTuple_GET_SIZE(attr) != 2) {
2237
+ PyErr_SetString(PyExc_TypeError,
2238
+ "__array_interface__ data must be a 2-tuple with "
2239
+ "(data pointer integer, read-only flag)");
2240
+ goto fail;
2241
+ }
2242
+ dataptr = PyTuple_GET_ITEM(attr, 0);
2243
+ if (PyString_Check(dataptr)) {
2244
+ res = sscanf(PyString_AsString(dataptr),
2245
+ "%p", (void **)&data);
2246
+ if (res < 1) {
2247
+ PyErr_SetString(PyExc_TypeError,
2248
+ "__array_interface__ data string cannot be converted");
2249
+ goto fail;
2250
+ }
2251
+ }
2252
+ else if (PyIntOrLong_Check(dataptr)) {
2253
+ data = PyLong_AsVoidPtr(dataptr);
2254
+ }
2255
+ else {
2256
+ PyErr_SetString(PyExc_TypeError,
2257
+ "first element of __array_interface__ data tuple "
2258
+ "must be integer or string.");
2259
+ goto fail;
2260
+ }
2261
+ if (PyObject_IsTrue(PyTuple_GET_ITEM(attr,1))) {
2262
+ dataflags &= ~NPY_ARRAY_WRITEABLE;
2263
+ }
2264
+ base = origin;
2265
+ }
2266
+
2267
+ /* Case for data access through buffer */
2268
+ else if (attr) {
2269
+ if (n == 0) {
2270
+ PyErr_SetString(PyExc_ValueError,
2271
+ "__array_interface__ shape must be at least size 1");
2272
+ goto fail;
2273
+ }
2274
+ if (attr && (attr != Py_None)) {
2275
+ base = attr;
2276
+ }
2277
+ else {
2278
+ base = origin;
2279
+ }
2280
+ res = PyObject_AsWriteBuffer(base, (void **)&data, &buffer_len);
2281
+ if (res < 0) {
2282
+ PyErr_Clear();
2283
+ res = PyObject_AsReadBuffer(
2284
+ base, (const void **)&data, &buffer_len);
2285
+ if (res < 0) {
2286
+ goto fail;
2287
+ }
2288
+ dataflags &= ~NPY_ARRAY_WRITEABLE;
2289
+ }
2290
+ /* Get offset number from interface specification */
2291
+ attr = PyDict_GetItemString(origin, "offset");
2292
+ if (attr) {
2293
+ npy_longlong num = PyLong_AsLongLong(attr);
2294
+ if (error_converting(num)) {
2295
+ PyErr_SetString(PyExc_TypeError,
2296
+ "__array_interface__ offset must be an integer");
2297
+ goto fail;
2298
+ }
2299
+ data += num;
2300
+ }
2301
+ }
2302
+
2303
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type, dtype,
2304
+ n, dims,
2305
+ NULL, data,
2306
+ dataflags, NULL);
2307
+ if (ret == NULL) {
2308
+ goto fail;
2309
+ }
2310
+ if (data == NULL) {
2311
+ if (PyArray_SIZE(ret) > 1) {
2312
+ PyErr_SetString(PyExc_ValueError,
2313
+ "cannot coerce scalar to array with size > 1");
2314
+ Py_DECREF(ret);
2315
+ goto fail;
2316
+ }
2317
+ if (PyArray_SETITEM(ret, PyArray_DATA(ret), origin) < 0) {
2318
+ Py_DECREF(ret);
2319
+ goto fail;
2320
+ }
2321
+ }
2322
+ if (base) {
2323
+ Py_INCREF(base);
2324
+ if (PyArray_SetBaseObject(ret, base) < 0) {
2325
+ Py_DECREF(ret);
2326
+ goto fail;
2327
+ }
2328
+ }
2329
+ attr = PyDict_GetItemString(iface, "strides");
2330
+ if (attr != NULL && attr != Py_None) {
2331
+ if (!PyTuple_Check(attr)) {
2332
+ PyErr_SetString(PyExc_TypeError,
2333
+ "strides must be a tuple");
2334
+ Py_DECREF(ret);
2335
+ goto fail;
2336
+ }
2337
+ if (n != PyTuple_GET_SIZE(attr)) {
2338
+ PyErr_SetString(PyExc_ValueError,
2339
+ "mismatch in length of strides and shape");
2340
+ Py_DECREF(ret);
2341
+ goto fail;
2342
+ }
2343
+ for (i = 0; i < n; i++) {
2344
+ tmp = PyTuple_GET_ITEM(attr, i);
2345
+ strides[i] = PyArray_PyIntAsIntp(tmp);
2346
+ if (error_converting(strides[i])) {
2347
+ Py_DECREF(ret);
2348
+ goto fail;
2349
+ }
2350
+ }
2351
+ memcpy(PyArray_STRIDES(ret), strides, n*sizeof(npy_intp));
2352
+ }
2353
+ PyArray_UpdateFlags(ret, NPY_ARRAY_UPDATE_ALL);
2354
+ Py_DECREF(iface);
2355
+ return (PyObject *)ret;
2356
+
2357
+ fail:
2358
+ Py_XDECREF(dtype);
2359
+ Py_XDECREF(iface);
2360
+ return NULL;
2361
+ }
2362
+
2363
+ /*NUMPY_API*/
2364
+ NPY_NO_EXPORT PyObject *
2365
+ PyArray_FromArrayAttr(PyObject *op, PyArray_Descr *typecode, PyObject *context)
2366
+ {
2367
+ PyObject *new;
2368
+ PyObject *array_meth;
2369
+
2370
+ array_meth = PyArray_GetAttrString_SuppressException(op, "__array__");
2371
+ if (array_meth == NULL) {
2372
+ return Py_NotImplemented;
2373
+ }
2374
+ if (context == NULL) {
2375
+ if (typecode == NULL) {
2376
+ new = PyObject_CallFunction(array_meth, NULL);
2377
+ }
2378
+ else {
2379
+ new = PyObject_CallFunction(array_meth, "O", typecode);
2380
+ }
2381
+ }
2382
+ else {
2383
+ if (typecode == NULL) {
2384
+ new = PyObject_CallFunction(array_meth, "OO", Py_None, context);
2385
+ if (new == NULL && PyErr_ExceptionMatches(PyExc_TypeError)) {
2386
+ PyErr_Clear();
2387
+ new = PyObject_CallFunction(array_meth, "");
2388
+ }
2389
+ }
2390
+ else {
2391
+ new = PyObject_CallFunction(array_meth, "OO", typecode, context);
2392
+ if (new == NULL && PyErr_ExceptionMatches(PyExc_TypeError)) {
2393
+ PyErr_Clear();
2394
+ new = PyObject_CallFunction(array_meth, "O", typecode);
2395
+ }
2396
+ }
2397
+ }
2398
+ Py_DECREF(array_meth);
2399
+ if (new == NULL) {
2400
+ return NULL;
2401
+ }
2402
+ if (!PyArray_Check(new)) {
2403
+ PyErr_SetString(PyExc_ValueError,
2404
+ "object __array__ method not " \
2405
+ "producing an array");
2406
+ Py_DECREF(new);
2407
+ return NULL;
2408
+ }
2409
+ return new;
2410
+ }
2411
+
2412
+ /*NUMPY_API
2413
+ * new reference -- accepts NULL for mintype
2414
+ */
2415
+ NPY_NO_EXPORT PyArray_Descr *
2416
+ PyArray_DescrFromObject(PyObject *op, PyArray_Descr *mintype)
2417
+ {
2418
+ PyArray_Descr *dtype;
2419
+
2420
+ dtype = mintype;
2421
+ Py_XINCREF(dtype);
2422
+
2423
+ if (PyArray_DTypeFromObject(op, NPY_MAXDIMS, &dtype) < 0) {
2424
+ return NULL;
2425
+ }
2426
+
2427
+ if (dtype == NULL) {
2428
+ return PyArray_DescrFromType(NPY_DEFAULT_TYPE);
2429
+ }
2430
+ else {
2431
+ return dtype;
2432
+ }
2433
+ }
2434
+
2435
+ /* These are also old calls (should use PyArray_NewFromDescr) */
2436
+
2437
+ /* They all zero-out the memory as previously done */
2438
+
2439
+ /* steals reference to descr -- and enforces native byteorder on it.*/
2440
+ /*NUMPY_API
2441
+ Like FromDimsAndData but uses the Descr structure instead of typecode
2442
+ as input.
2443
+ */
2444
+ NPY_NO_EXPORT PyObject *
2445
+ PyArray_FromDimsAndDataAndDescr(int nd, int *d,
2446
+ PyArray_Descr *descr,
2447
+ char *data)
2448
+ {
2449
+ PyObject *ret;
2450
+ int i;
2451
+ npy_intp newd[NPY_MAXDIMS];
2452
+ char msg[] = "PyArray_FromDimsAndDataAndDescr: use PyArray_NewFromDescr.";
2453
+
2454
+ if (DEPRECATE(msg) < 0) {
2455
+ /* 2009-04-30, 1.5 */
2456
+ return NULL;
2457
+ }
2458
+ if (!PyArray_ISNBO(descr->byteorder))
2459
+ descr->byteorder = '=';
2460
+ for (i = 0; i < nd; i++) {
2461
+ newd[i] = (npy_intp) d[i];
2462
+ }
2463
+ ret = PyArray_NewFromDescr(&PyArray_Type, descr,
2464
+ nd, newd,
2465
+ NULL, data,
2466
+ (data ? NPY_ARRAY_CARRAY : 0), NULL);
2467
+ return ret;
2468
+ }
2469
+
2470
+ /*NUMPY_API
2471
+ Construct an empty array from dimensions and typenum
2472
+ */
2473
+ NPY_NO_EXPORT PyObject *
2474
+ PyArray_FromDims(int nd, int *d, int type)
2475
+ {
2476
+ PyArrayObject *ret;
2477
+ char msg[] = "PyArray_FromDims: use PyArray_SimpleNew.";
2478
+
2479
+ if (DEPRECATE(msg) < 0) {
2480
+ /* 2009-04-30, 1.5 */
2481
+ return NULL;
2482
+ }
2483
+ ret = (PyArrayObject *)PyArray_FromDimsAndDataAndDescr(nd, d,
2484
+ PyArray_DescrFromType(type),
2485
+ NULL);
2486
+ /*
2487
+ * Old FromDims set memory to zero --- some algorithms
2488
+ * relied on that. Better keep it the same. If
2489
+ * Object type, then it's already been set to zero, though.
2490
+ */
2491
+ if (ret && (PyArray_DESCR(ret)->type_num != NPY_OBJECT)) {
2492
+ memset(PyArray_DATA(ret), 0, PyArray_NBYTES(ret));
2493
+ }
2494
+ return (PyObject *)ret;
2495
+ }
2496
+
2497
+ /* end old calls */
2498
+
2499
+ /*NUMPY_API
2500
+ * This is a quick wrapper around PyArray_FromAny(op, NULL, 0, 0, ENSUREARRAY)
2501
+ * that special cases Arrays and PyArray_Scalars up front
2502
+ * It *steals a reference* to the object
2503
+ * It also guarantees that the result is PyArray_Type
2504
+ * Because it decrefs op if any conversion needs to take place
2505
+ * so it can be used like PyArray_EnsureArray(some_function(...))
2506
+ */
2507
+ NPY_NO_EXPORT PyObject *
2508
+ PyArray_EnsureArray(PyObject *op)
2509
+ {
2510
+ PyObject *new;
2511
+
2512
+ if ((op == NULL) || (PyArray_CheckExact(op))) {
2513
+ new = op;
2514
+ Py_XINCREF(new);
2515
+ }
2516
+ else if (PyArray_Check(op)) {
2517
+ new = PyArray_View((PyArrayObject *)op, NULL, &PyArray_Type);
2518
+ }
2519
+ else if (PyArray_IsScalar(op, Generic)) {
2520
+ new = PyArray_FromScalar(op, NULL);
2521
+ }
2522
+ else {
2523
+ new = PyArray_FromAny(op, NULL, 0, 0, NPY_ARRAY_ENSUREARRAY, NULL);
2524
+ }
2525
+ Py_XDECREF(op);
2526
+ return new;
2527
+ }
2528
+
2529
+ /*NUMPY_API*/
2530
+ NPY_NO_EXPORT PyObject *
2531
+ PyArray_EnsureAnyArray(PyObject *op)
2532
+ {
2533
+ if (op && PyArray_Check(op)) {
2534
+ return op;
2535
+ }
2536
+ return PyArray_EnsureArray(op);
2537
+ }
2538
+
2539
+ /* TODO: Put the order parameter in PyArray_CopyAnyInto and remove this */
2540
+ NPY_NO_EXPORT int
2541
+ PyArray_CopyAsFlat(PyArrayObject *dst, PyArrayObject *src, NPY_ORDER order)
2542
+ {
2543
+ PyArray_StridedUnaryOp *stransfer = NULL;
2544
+ NpyAuxData *transferdata = NULL;
2545
+ NpyIter *dst_iter, *src_iter;
2546
+
2547
+ NpyIter_IterNextFunc *dst_iternext, *src_iternext;
2548
+ char **dst_dataptr, **src_dataptr;
2549
+ npy_intp dst_stride, src_stride;
2550
+ npy_intp *dst_countptr, *src_countptr;
2551
+ npy_uint32 baseflags;
2552
+
2553
+ char *dst_data, *src_data;
2554
+ npy_intp dst_count, src_count, count;
2555
+ npy_intp src_itemsize;
2556
+ npy_intp dst_size, src_size;
2557
+ int needs_api;
2558
+
2559
+ NPY_BEGIN_THREADS_DEF;
2560
+
2561
+ if (PyArray_FailUnlessWriteable(dst, "destination array") < 0) {
2562
+ return -1;
2563
+ }
2564
+
2565
+ /*
2566
+ * If the shapes match and a particular order is forced
2567
+ * for both, use the more efficient CopyInto
2568
+ */
2569
+ if (order != NPY_ANYORDER && order != NPY_KEEPORDER &&
2570
+ PyArray_NDIM(dst) == PyArray_NDIM(src) &&
2571
+ PyArray_CompareLists(PyArray_DIMS(dst), PyArray_DIMS(src),
2572
+ PyArray_NDIM(dst))) {
2573
+ return PyArray_CopyInto(dst, src);
2574
+ }
2575
+
2576
+ dst_size = PyArray_SIZE(dst);
2577
+ src_size = PyArray_SIZE(src);
2578
+ if (dst_size != src_size) {
2579
+ PyErr_Format(PyExc_ValueError,
2580
+ "cannot copy from array of size %d into an array "
2581
+ "of size %d", (int)src_size, (int)dst_size);
2582
+ return -1;
2583
+ }
2584
+
2585
+ /* Zero-sized arrays require nothing be done */
2586
+ if (dst_size == 0) {
2587
+ return 0;
2588
+ }
2589
+
2590
+ baseflags = NPY_ITER_EXTERNAL_LOOP |
2591
+ NPY_ITER_DONT_NEGATE_STRIDES |
2592
+ NPY_ITER_REFS_OK;
2593
+
2594
+ /*
2595
+ * This copy is based on matching C-order traversals of src and dst.
2596
+ * By using two iterators, we can find maximal sub-chunks that
2597
+ * can be processed at once.
2598
+ */
2599
+ dst_iter = NpyIter_New(dst, NPY_ITER_WRITEONLY | baseflags,
2600
+ order,
2601
+ NPY_NO_CASTING,
2602
+ NULL);
2603
+ if (dst_iter == NULL) {
2604
+ return -1;
2605
+ }
2606
+ src_iter = NpyIter_New(src, NPY_ITER_READONLY | baseflags,
2607
+ order,
2608
+ NPY_NO_CASTING,
2609
+ NULL);
2610
+ if (src_iter == NULL) {
2611
+ NpyIter_Deallocate(dst_iter);
2612
+ return -1;
2613
+ }
2614
+
2615
+ /* Get all the values needed for the inner loop */
2616
+ dst_iternext = NpyIter_GetIterNext(dst_iter, NULL);
2617
+ dst_dataptr = NpyIter_GetDataPtrArray(dst_iter);
2618
+ /* Since buffering is disabled, we can cache the stride */
2619
+ dst_stride = NpyIter_GetInnerStrideArray(dst_iter)[0];
2620
+ dst_countptr = NpyIter_GetInnerLoopSizePtr(dst_iter);
2621
+
2622
+ src_iternext = NpyIter_GetIterNext(src_iter, NULL);
2623
+ src_dataptr = NpyIter_GetDataPtrArray(src_iter);
2624
+ /* Since buffering is disabled, we can cache the stride */
2625
+ src_stride = NpyIter_GetInnerStrideArray(src_iter)[0];
2626
+ src_countptr = NpyIter_GetInnerLoopSizePtr(src_iter);
2627
+ src_itemsize = PyArray_DESCR(src)->elsize;
2628
+
2629
+ if (dst_iternext == NULL || src_iternext == NULL) {
2630
+ NpyIter_Deallocate(dst_iter);
2631
+ NpyIter_Deallocate(src_iter);
2632
+ return -1;
2633
+ }
2634
+
2635
+ needs_api = NpyIter_IterationNeedsAPI(dst_iter) ||
2636
+ NpyIter_IterationNeedsAPI(src_iter);
2637
+
2638
+ /*
2639
+ * Because buffering is disabled in the iterator, the inner loop
2640
+ * strides will be the same throughout the iteration loop. Thus,
2641
+ * we can pass them to this function to take advantage of
2642
+ * contiguous strides, etc.
2643
+ */
2644
+ if (PyArray_GetDTypeTransferFunction(
2645
+ PyArray_ISALIGNED(src) && PyArray_ISALIGNED(dst),
2646
+ src_stride, dst_stride,
2647
+ PyArray_DESCR(src), PyArray_DESCR(dst),
2648
+ 0,
2649
+ &stransfer, &transferdata,
2650
+ &needs_api) != NPY_SUCCEED) {
2651
+ NpyIter_Deallocate(dst_iter);
2652
+ NpyIter_Deallocate(src_iter);
2653
+ return -1;
2654
+ }
2655
+
2656
+ if (!needs_api) {
2657
+ NPY_BEGIN_THREADS;
2658
+ }
2659
+
2660
+ dst_count = *dst_countptr;
2661
+ src_count = *src_countptr;
2662
+ dst_data = dst_dataptr[0];
2663
+ src_data = src_dataptr[0];
2664
+ for(;;) {
2665
+ /* Transfer the biggest amount that fits both */
2666
+ count = (src_count < dst_count) ? src_count : dst_count;
2667
+ stransfer(dst_data, dst_stride,
2668
+ src_data, src_stride,
2669
+ count, src_itemsize, transferdata);
2670
+
2671
+ /* If we exhausted the dst block, refresh it */
2672
+ if (dst_count == count) {
2673
+ if (!dst_iternext(dst_iter)) {
2674
+ break;
2675
+ }
2676
+ dst_count = *dst_countptr;
2677
+ dst_data = dst_dataptr[0];
2678
+ }
2679
+ else {
2680
+ dst_count -= count;
2681
+ dst_data += count*dst_stride;
2682
+ }
2683
+
2684
+ /* If we exhausted the src block, refresh it */
2685
+ if (src_count == count) {
2686
+ if (!src_iternext(src_iter)) {
2687
+ break;
2688
+ }
2689
+ src_count = *src_countptr;
2690
+ src_data = src_dataptr[0];
2691
+ }
2692
+ else {
2693
+ src_count -= count;
2694
+ src_data += count*src_stride;
2695
+ }
2696
+ }
2697
+
2698
+ NPY_END_THREADS;
2699
+
2700
+ NPY_AUXDATA_FREE(transferdata);
2701
+ NpyIter_Deallocate(dst_iter);
2702
+ NpyIter_Deallocate(src_iter);
2703
+
2704
+ return PyErr_Occurred() ? -1 : 0;
2705
+ }
2706
+
2707
+ /*NUMPY_API
2708
+ * Copy an Array into another array -- memory must not overlap
2709
+ * Does not require src and dest to have "broadcastable" shapes
2710
+ * (only the same number of elements).
2711
+ *
2712
+ * TODO: For NumPy 2.0, this could accept an order parameter which
2713
+ * only allows NPY_CORDER and NPY_FORDER. Could also rename
2714
+ * this to CopyAsFlat to make the name more intuitive.
2715
+ *
2716
+ * Returns 0 on success, -1 on error.
2717
+ */
2718
+ NPY_NO_EXPORT int
2719
+ PyArray_CopyAnyInto(PyArrayObject *dst, PyArrayObject *src)
2720
+ {
2721
+ return PyArray_CopyAsFlat(dst, src, NPY_CORDER);
2722
+ }
2723
+
2724
+ /*NUMPY_API
2725
+ * Copy an Array into another array.
2726
+ * Broadcast to the destination shape if necessary.
2727
+ *
2728
+ * Returns 0 on success, -1 on failure.
2729
+ */
2730
+ NPY_NO_EXPORT int
2731
+ PyArray_CopyInto(PyArrayObject *dst, PyArrayObject *src)
2732
+ {
2733
+ return PyArray_AssignArray(dst, src, NULL, NPY_UNSAFE_CASTING);
2734
+ }
2735
+
2736
+ /*NUMPY_API
2737
+ * Move the memory of one array into another, allowing for overlapping data.
2738
+ *
2739
+ * Returns 0 on success, negative on failure.
2740
+ */
2741
+ NPY_NO_EXPORT int
2742
+ PyArray_MoveInto(PyArrayObject *dst, PyArrayObject *src)
2743
+ {
2744
+ return PyArray_AssignArray(dst, src, NULL, NPY_UNSAFE_CASTING);
2745
+ }
2746
+
2747
+ /*NUMPY_API
2748
+ * PyArray_CheckAxis
2749
+ *
2750
+ * check that axis is valid
2751
+ * convert 0-d arrays to 1-d arrays
2752
+ */
2753
+ NPY_NO_EXPORT PyObject *
2754
+ PyArray_CheckAxis(PyArrayObject *arr, int *axis, int flags)
2755
+ {
2756
+ PyObject *temp1, *temp2;
2757
+ int n = PyArray_NDIM(arr);
2758
+ int axis_orig = *axis;
2759
+
2760
+ if (*axis == NPY_MAXDIMS || n == 0) {
2761
+ if (n != 1) {
2762
+ temp1 = PyArray_Ravel(arr,0);
2763
+ if (temp1 == NULL) {
2764
+ *axis = 0;
2765
+ return NULL;
2766
+ }
2767
+ if (*axis == NPY_MAXDIMS) {
2768
+ *axis = PyArray_NDIM((PyArrayObject *)temp1)-1;
2769
+ }
2770
+ }
2771
+ else {
2772
+ temp1 = (PyObject *)arr;
2773
+ Py_INCREF(temp1);
2774
+ *axis = 0;
2775
+ }
2776
+ if (!flags && *axis == 0) {
2777
+ return temp1;
2778
+ }
2779
+ }
2780
+ else {
2781
+ temp1 = (PyObject *)arr;
2782
+ Py_INCREF(temp1);
2783
+ }
2784
+ if (flags) {
2785
+ temp2 = PyArray_CheckFromAny((PyObject *)temp1, NULL,
2786
+ 0, 0, flags, NULL);
2787
+ Py_DECREF(temp1);
2788
+ if (temp2 == NULL) {
2789
+ return NULL;
2790
+ }
2791
+ }
2792
+ else {
2793
+ temp2 = (PyObject *)temp1;
2794
+ }
2795
+ n = PyArray_NDIM((PyArrayObject *)temp2);
2796
+ if (*axis < 0) {
2797
+ *axis += n;
2798
+ }
2799
+ if ((*axis < 0) || (*axis >= n)) {
2800
+ PyErr_Format(PyExc_ValueError,
2801
+ "axis(=%d) out of bounds", axis_orig);
2802
+ Py_DECREF(temp2);
2803
+ return NULL;
2804
+ }
2805
+ return temp2;
2806
+ }
2807
+
2808
+ /*NUMPY_API
2809
+ * Zeros
2810
+ *
2811
+ * steal a reference
2812
+ * accepts NULL type
2813
+ */
2814
+ NPY_NO_EXPORT PyObject *
2815
+ PyArray_Zeros(int nd, npy_intp *dims, PyArray_Descr *type, int is_f_order)
2816
+ {
2817
+ PyArrayObject *ret;
2818
+
2819
+ if (!type) {
2820
+ type = PyArray_DescrFromType(NPY_DEFAULT_TYPE);
2821
+ }
2822
+
2823
+ ret = (PyArrayObject *)PyArray_NewFromDescr_int(&PyArray_Type,
2824
+ type,
2825
+ nd, dims,
2826
+ NULL, NULL,
2827
+ is_f_order, NULL, 1);
2828
+
2829
+ if (ret == NULL) {
2830
+ return NULL;
2831
+ }
2832
+
2833
+ /* handle objects */
2834
+ if (PyDataType_REFCHK(PyArray_DESCR(ret))) {
2835
+ if (_zerofill(ret) < 0) {
2836
+ Py_DECREF(ret);
2837
+ return NULL;
2838
+ }
2839
+ }
2840
+
2841
+
2842
+ return (PyObject *)ret;
2843
+
2844
+ }
2845
+
2846
+ /*NUMPY_API
2847
+ * Empty
2848
+ *
2849
+ * accepts NULL type
2850
+ * steals referenct to type
2851
+ */
2852
+ NPY_NO_EXPORT PyObject *
2853
+ PyArray_Empty(int nd, npy_intp *dims, PyArray_Descr *type, int is_f_order)
2854
+ {
2855
+ PyArrayObject *ret;
2856
+
2857
+ if (!type) type = PyArray_DescrFromType(NPY_DEFAULT_TYPE);
2858
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type,
2859
+ type, nd, dims,
2860
+ NULL, NULL,
2861
+ is_f_order, NULL);
2862
+ if (ret == NULL) {
2863
+ return NULL;
2864
+ }
2865
+ if (PyDataType_REFCHK(type)) {
2866
+ PyArray_FillObjectArray(ret, Py_None);
2867
+ if (PyErr_Occurred()) {
2868
+ Py_DECREF(ret);
2869
+ return NULL;
2870
+ }
2871
+ }
2872
+ return (PyObject *)ret;
2873
+ }
2874
+
2875
+ /*
2876
+ * Like ceil(value), but check for overflow.
2877
+ *
2878
+ * Return 0 on success, -1 on failure. In case of failure, set a PyExc_Overflow
2879
+ * exception
2880
+ */
2881
+ static int _safe_ceil_to_intp(double value, npy_intp* ret)
2882
+ {
2883
+ double ivalue;
2884
+
2885
+ ivalue = npy_ceil(value);
2886
+ if (ivalue < NPY_MIN_INTP || ivalue > NPY_MAX_INTP) {
2887
+ return -1;
2888
+ }
2889
+
2890
+ *ret = (npy_intp)ivalue;
2891
+ return 0;
2892
+ }
2893
+
2894
+
2895
+ /*NUMPY_API
2896
+ Arange,
2897
+ */
2898
+ NPY_NO_EXPORT PyObject *
2899
+ PyArray_Arange(double start, double stop, double step, int type_num)
2900
+ {
2901
+ npy_intp length;
2902
+ PyArrayObject *range;
2903
+ PyArray_ArrFuncs *funcs;
2904
+ PyObject *obj;
2905
+ int ret;
2906
+ NPY_BEGIN_THREADS_DEF;
2907
+
2908
+ if (_safe_ceil_to_intp((stop - start)/step, &length)) {
2909
+ PyErr_SetString(PyExc_OverflowError,
2910
+ "arange: overflow while computing length");
2911
+ }
2912
+
2913
+ if (length <= 0) {
2914
+ length = 0;
2915
+ return PyArray_New(&PyArray_Type, 1, &length, type_num,
2916
+ NULL, NULL, 0, 0, NULL);
2917
+ }
2918
+ range = (PyArrayObject *)PyArray_New(&PyArray_Type, 1, &length, type_num,
2919
+ NULL, NULL, 0, 0, NULL);
2920
+ if (range == NULL) {
2921
+ return NULL;
2922
+ }
2923
+ funcs = PyArray_DESCR(range)->f;
2924
+
2925
+ /*
2926
+ * place start in the buffer and the next value in the second position
2927
+ * if length > 2, then call the inner loop, otherwise stop
2928
+ */
2929
+ obj = PyFloat_FromDouble(start);
2930
+ ret = funcs->setitem(obj, PyArray_DATA(range), range);
2931
+ Py_DECREF(obj);
2932
+ if (ret < 0) {
2933
+ goto fail;
2934
+ }
2935
+ if (length == 1) {
2936
+ return (PyObject *)range;
2937
+ }
2938
+ obj = PyFloat_FromDouble(start + step);
2939
+ ret = funcs->setitem(obj, PyArray_BYTES(range)+PyArray_ITEMSIZE(range),
2940
+ range);
2941
+ Py_DECREF(obj);
2942
+ if (ret < 0) {
2943
+ goto fail;
2944
+ }
2945
+ if (length == 2) {
2946
+ return (PyObject *)range;
2947
+ }
2948
+ if (!funcs->fill) {
2949
+ PyErr_SetString(PyExc_ValueError,
2950
+ "no fill-function for data-type.");
2951
+ Py_DECREF(range);
2952
+ return NULL;
2953
+ }
2954
+ NPY_BEGIN_THREADS_DESCR(PyArray_DESCR(range));
2955
+ funcs->fill(PyArray_DATA(range), length, range);
2956
+ NPY_END_THREADS;
2957
+ if (PyErr_Occurred()) {
2958
+ goto fail;
2959
+ }
2960
+ return (PyObject *)range;
2961
+
2962
+ fail:
2963
+ Py_DECREF(range);
2964
+ return NULL;
2965
+ }
2966
+
2967
+ /*
2968
+ * the formula is len = (intp) ceil((start - stop) / step);
2969
+ */
2970
+ static npy_intp
2971
+ _calc_length(PyObject *start, PyObject *stop, PyObject *step, PyObject **next, int cmplx)
2972
+ {
2973
+ npy_intp len, tmp;
2974
+ PyObject *val;
2975
+ double value;
2976
+
2977
+ *next = PyNumber_Subtract(stop, start);
2978
+ if (!(*next)) {
2979
+ if (PyTuple_Check(stop)) {
2980
+ PyErr_Clear();
2981
+ PyErr_SetString(PyExc_TypeError,
2982
+ "arange: scalar arguments expected "\
2983
+ "instead of a tuple.");
2984
+ }
2985
+ return -1;
2986
+ }
2987
+ val = PyNumber_TrueDivide(*next, step);
2988
+ Py_DECREF(*next);
2989
+ *next = NULL;
2990
+ if (!val) {
2991
+ return -1;
2992
+ }
2993
+ if (cmplx && PyComplex_Check(val)) {
2994
+ value = PyComplex_RealAsDouble(val);
2995
+ if (error_converting(value)) {
2996
+ Py_DECREF(val);
2997
+ return -1;
2998
+ }
2999
+ if (_safe_ceil_to_intp(value, &len)) {
3000
+ Py_DECREF(val);
3001
+ PyErr_SetString(PyExc_OverflowError,
3002
+ "arange: overflow while computing length");
3003
+ return -1;
3004
+ }
3005
+ value = PyComplex_ImagAsDouble(val);
3006
+ Py_DECREF(val);
3007
+ if (error_converting(value)) {
3008
+ return -1;
3009
+ }
3010
+ if (_safe_ceil_to_intp(value, &tmp)) {
3011
+ PyErr_SetString(PyExc_OverflowError,
3012
+ "arange: overflow while computing length");
3013
+ return -1;
3014
+ }
3015
+ len = PyArray_MIN(len, tmp);
3016
+ }
3017
+ else {
3018
+ value = PyFloat_AsDouble(val);
3019
+ Py_DECREF(val);
3020
+ if (error_converting(value)) {
3021
+ return -1;
3022
+ }
3023
+ if (_safe_ceil_to_intp(value, &len)) {
3024
+ PyErr_SetString(PyExc_OverflowError,
3025
+ "arange: overflow while computing length");
3026
+ return -1;
3027
+ }
3028
+ }
3029
+ if (len > 0) {
3030
+ *next = PyNumber_Add(start, step);
3031
+ if (!*next) {
3032
+ return -1;
3033
+ }
3034
+ }
3035
+ return len;
3036
+ }
3037
+
3038
+ /*NUMPY_API
3039
+ *
3040
+ * ArangeObj,
3041
+ *
3042
+ * this doesn't change the references
3043
+ */
3044
+ NPY_NO_EXPORT PyObject *
3045
+ PyArray_ArangeObj(PyObject *start, PyObject *stop, PyObject *step, PyArray_Descr *dtype)
3046
+ {
3047
+ PyArrayObject *range;
3048
+ PyArray_ArrFuncs *funcs;
3049
+ PyObject *next, *err;
3050
+ npy_intp length;
3051
+ PyArray_Descr *native = NULL;
3052
+ int swap;
3053
+ NPY_BEGIN_THREADS_DEF;
3054
+
3055
+ /* Datetime arange is handled specially */
3056
+ if ((dtype != NULL && (dtype->type_num == NPY_DATETIME ||
3057
+ dtype->type_num == NPY_TIMEDELTA)) ||
3058
+ (dtype == NULL && (is_any_numpy_datetime_or_timedelta(start) ||
3059
+ is_any_numpy_datetime_or_timedelta(stop) ||
3060
+ is_any_numpy_datetime_or_timedelta(step)))) {
3061
+ return (PyObject *)datetime_arange(start, stop, step, dtype);
3062
+ }
3063
+
3064
+ if (!dtype) {
3065
+ PyArray_Descr *deftype;
3066
+ PyArray_Descr *newtype;
3067
+
3068
+ /* intentionally made to be at least NPY_LONG */
3069
+ deftype = PyArray_DescrFromType(NPY_LONG);
3070
+ newtype = PyArray_DescrFromObject(start, deftype);
3071
+ Py_DECREF(deftype);
3072
+ if (newtype == NULL) {
3073
+ return NULL;
3074
+ }
3075
+ deftype = newtype;
3076
+ if (stop && stop != Py_None) {
3077
+ newtype = PyArray_DescrFromObject(stop, deftype);
3078
+ Py_DECREF(deftype);
3079
+ if (newtype == NULL) {
3080
+ return NULL;
3081
+ }
3082
+ deftype = newtype;
3083
+ }
3084
+ if (step && step != Py_None) {
3085
+ newtype = PyArray_DescrFromObject(step, deftype);
3086
+ Py_DECREF(deftype);
3087
+ if (newtype == NULL) {
3088
+ return NULL;
3089
+ }
3090
+ deftype = newtype;
3091
+ }
3092
+ dtype = deftype;
3093
+ }
3094
+ else {
3095
+ Py_INCREF(dtype);
3096
+ }
3097
+ if (!step || step == Py_None) {
3098
+ step = PyInt_FromLong(1);
3099
+ }
3100
+ else {
3101
+ Py_XINCREF(step);
3102
+ }
3103
+ if (!stop || stop == Py_None) {
3104
+ stop = start;
3105
+ start = PyInt_FromLong(0);
3106
+ }
3107
+ else {
3108
+ Py_INCREF(start);
3109
+ }
3110
+ /* calculate the length and next = start + step*/
3111
+ length = _calc_length(start, stop, step, &next,
3112
+ PyTypeNum_ISCOMPLEX(dtype->type_num));
3113
+ err = PyErr_Occurred();
3114
+ if (err) {
3115
+ Py_DECREF(dtype);
3116
+ if (err && PyErr_GivenExceptionMatches(err, PyExc_OverflowError)) {
3117
+ PyErr_SetString(PyExc_ValueError, "Maximum allowed size exceeded");
3118
+ }
3119
+ goto fail;
3120
+ }
3121
+ if (length <= 0) {
3122
+ length = 0;
3123
+ range = (PyArrayObject *)PyArray_SimpleNewFromDescr(1, &length, dtype);
3124
+ Py_DECREF(step);
3125
+ Py_DECREF(start);
3126
+ return (PyObject *)range;
3127
+ }
3128
+
3129
+ /*
3130
+ * If dtype is not in native byte-order then get native-byte
3131
+ * order version. And then swap on the way out.
3132
+ */
3133
+ if (!PyArray_ISNBO(dtype->byteorder)) {
3134
+ native = PyArray_DescrNewByteorder(dtype, NPY_NATBYTE);
3135
+ swap = 1;
3136
+ }
3137
+ else {
3138
+ native = dtype;
3139
+ swap = 0;
3140
+ }
3141
+
3142
+ range = (PyArrayObject *)PyArray_SimpleNewFromDescr(1, &length, native);
3143
+ if (range == NULL) {
3144
+ goto fail;
3145
+ }
3146
+
3147
+ /*
3148
+ * place start in the buffer and the next value in the second position
3149
+ * if length > 2, then call the inner loop, otherwise stop
3150
+ */
3151
+ funcs = PyArray_DESCR(range)->f;
3152
+ if (funcs->setitem(start, PyArray_DATA(range), range) < 0) {
3153
+ goto fail;
3154
+ }
3155
+ if (length == 1) {
3156
+ goto finish;
3157
+ }
3158
+ if (funcs->setitem(next, PyArray_BYTES(range)+PyArray_ITEMSIZE(range),
3159
+ range) < 0) {
3160
+ goto fail;
3161
+ }
3162
+ if (length == 2) {
3163
+ goto finish;
3164
+ }
3165
+ if (!funcs->fill) {
3166
+ PyErr_SetString(PyExc_ValueError, "no fill-function for data-type.");
3167
+ Py_DECREF(range);
3168
+ goto fail;
3169
+ }
3170
+ NPY_BEGIN_THREADS_DESCR(PyArray_DESCR(range));
3171
+ funcs->fill(PyArray_DATA(range), length, range);
3172
+ NPY_END_THREADS;
3173
+ if (PyErr_Occurred()) {
3174
+ goto fail;
3175
+ }
3176
+ finish:
3177
+ /* TODO: This swapping could be handled on the fly by the nditer */
3178
+ if (swap) {
3179
+ PyObject *new;
3180
+ new = PyArray_Byteswap(range, 1);
3181
+ Py_DECREF(new);
3182
+ Py_DECREF(PyArray_DESCR(range));
3183
+ /* steals the reference */
3184
+ ((PyArrayObject_fields *)range)->descr = dtype;
3185
+ }
3186
+ Py_DECREF(start);
3187
+ Py_DECREF(step);
3188
+ Py_DECREF(next);
3189
+ return (PyObject *)range;
3190
+
3191
+ fail:
3192
+ Py_DECREF(start);
3193
+ Py_DECREF(step);
3194
+ Py_XDECREF(next);
3195
+ return NULL;
3196
+ }
3197
+
3198
+ static PyArrayObject *
3199
+ array_fromfile_binary(FILE *fp, PyArray_Descr *dtype, npy_intp num, size_t *nread)
3200
+ {
3201
+ PyArrayObject *r;
3202
+ npy_off_t start, numbytes;
3203
+
3204
+ if (num < 0) {
3205
+ int fail = 0;
3206
+ start = npy_ftell(fp);
3207
+ if (start < 0) {
3208
+ fail = 1;
3209
+ }
3210
+ if (npy_fseek(fp, 0, SEEK_END) < 0) {
3211
+ fail = 1;
3212
+ }
3213
+ numbytes = npy_ftell(fp);
3214
+ if (numbytes < 0) {
3215
+ fail = 1;
3216
+ }
3217
+ numbytes -= start;
3218
+ if (npy_fseek(fp, start, SEEK_SET) < 0) {
3219
+ fail = 1;
3220
+ }
3221
+ if (fail) {
3222
+ PyErr_SetString(PyExc_IOError,
3223
+ "could not seek in file");
3224
+ Py_DECREF(dtype);
3225
+ return NULL;
3226
+ }
3227
+ num = numbytes / dtype->elsize;
3228
+ }
3229
+ r = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type,
3230
+ dtype,
3231
+ 1, &num,
3232
+ NULL, NULL,
3233
+ 0, NULL);
3234
+ if (r == NULL) {
3235
+ return NULL;
3236
+ }
3237
+ NPY_BEGIN_ALLOW_THREADS;
3238
+ *nread = fread(PyArray_DATA(r), dtype->elsize, num, fp);
3239
+ NPY_END_ALLOW_THREADS;
3240
+ return r;
3241
+ }
3242
+
3243
+ /*
3244
+ * Create an array by reading from the given stream, using the passed
3245
+ * next_element and skip_separator functions.
3246
+ */
3247
+ #define FROM_BUFFER_SIZE 4096
3248
+ static PyArrayObject *
3249
+ array_from_text(PyArray_Descr *dtype, npy_intp num, char *sep, size_t *nread,
3250
+ void *stream, next_element next, skip_separator skip_sep,
3251
+ void *stream_data)
3252
+ {
3253
+ PyArrayObject *r;
3254
+ npy_intp i;
3255
+ char *dptr, *clean_sep, *tmp;
3256
+ int err = 0;
3257
+ npy_intp thisbuf = 0;
3258
+ npy_intp size;
3259
+ npy_intp bytes, totalbytes;
3260
+
3261
+ size = (num >= 0) ? num : FROM_BUFFER_SIZE;
3262
+ r = (PyArrayObject *)
3263
+ PyArray_NewFromDescr(&PyArray_Type,
3264
+ dtype,
3265
+ 1, &size,
3266
+ NULL, NULL,
3267
+ 0, NULL);
3268
+ if (r == NULL) {
3269
+ return NULL;
3270
+ }
3271
+ clean_sep = swab_separator(sep);
3272
+ if (clean_sep == NULL) {
3273
+ err = 1;
3274
+ goto fail;
3275
+ }
3276
+
3277
+ NPY_BEGIN_ALLOW_THREADS;
3278
+ totalbytes = bytes = size * dtype->elsize;
3279
+ dptr = PyArray_DATA(r);
3280
+ for (i= 0; num < 0 || i < num; i++) {
3281
+ if (next(&stream, dptr, dtype, stream_data) < 0) {
3282
+ break;
3283
+ }
3284
+ *nread += 1;
3285
+ thisbuf += 1;
3286
+ dptr += dtype->elsize;
3287
+ if (num < 0 && thisbuf == size) {
3288
+ totalbytes += bytes;
3289
+ tmp = PyDataMem_RENEW(PyArray_DATA(r), totalbytes);
3290
+ if (tmp == NULL) {
3291
+ err = 1;
3292
+ break;
3293
+ }
3294
+ ((PyArrayObject_fields *)r)->data = tmp;
3295
+ dptr = tmp + (totalbytes - bytes);
3296
+ thisbuf = 0;
3297
+ }
3298
+ if (skip_sep(&stream, clean_sep, stream_data) < 0) {
3299
+ break;
3300
+ }
3301
+ }
3302
+ if (num < 0) {
3303
+ tmp = PyDataMem_RENEW(PyArray_DATA(r), PyArray_MAX(*nread,1)*dtype->elsize);
3304
+ if (tmp == NULL) {
3305
+ err = 1;
3306
+ }
3307
+ else {
3308
+ PyArray_DIMS(r)[0] = *nread;
3309
+ ((PyArrayObject_fields *)r)->data = tmp;
3310
+ }
3311
+ }
3312
+ NPY_END_ALLOW_THREADS;
3313
+ free(clean_sep);
3314
+
3315
+ fail:
3316
+ if (err == 1) {
3317
+ PyErr_NoMemory();
3318
+ }
3319
+ if (PyErr_Occurred()) {
3320
+ Py_DECREF(r);
3321
+ return NULL;
3322
+ }
3323
+ return r;
3324
+ }
3325
+ #undef FROM_BUFFER_SIZE
3326
+
3327
+ /*NUMPY_API
3328
+ *
3329
+ * Given a ``FILE *`` pointer ``fp``, and a ``PyArray_Descr``, return an
3330
+ * array corresponding to the data encoded in that file.
3331
+ *
3332
+ * If the dtype is NULL, the default array type is used (double).
3333
+ * If non-null, the reference is stolen.
3334
+ *
3335
+ * The number of elements to read is given as ``num``; if it is < 0, then
3336
+ * then as many as possible are read.
3337
+ *
3338
+ * If ``sep`` is NULL or empty, then binary data is assumed, else
3339
+ * text data, with ``sep`` as the separator between elements. Whitespace in
3340
+ * the separator matches any length of whitespace in the text, and a match
3341
+ * for whitespace around the separator is added.
3342
+ *
3343
+ * For memory-mapped files, use the buffer interface. No more data than
3344
+ * necessary is read by this routine.
3345
+ */
3346
+ NPY_NO_EXPORT PyObject *
3347
+ PyArray_FromFile(FILE *fp, PyArray_Descr *dtype, npy_intp num, char *sep)
3348
+ {
3349
+ PyArrayObject *ret;
3350
+ size_t nread = 0;
3351
+
3352
+ if (PyDataType_REFCHK(dtype)) {
3353
+ PyErr_SetString(PyExc_ValueError,
3354
+ "Cannot read into object array");
3355
+ Py_DECREF(dtype);
3356
+ return NULL;
3357
+ }
3358
+ if (dtype->elsize == 0) {
3359
+ PyErr_SetString(PyExc_ValueError,
3360
+ "The elements are 0-sized.");
3361
+ Py_DECREF(dtype);
3362
+ return NULL;
3363
+ }
3364
+ if ((sep == NULL) || (strlen(sep) == 0)) {
3365
+ ret = array_fromfile_binary(fp, dtype, num, &nread);
3366
+ }
3367
+ else {
3368
+ if (dtype->f->scanfunc == NULL) {
3369
+ PyErr_SetString(PyExc_ValueError,
3370
+ "Unable to read character files of that array type");
3371
+ Py_DECREF(dtype);
3372
+ return NULL;
3373
+ }
3374
+ ret = array_from_text(dtype, num, sep, &nread, fp,
3375
+ (next_element) fromfile_next_element,
3376
+ (skip_separator) fromfile_skip_separator, NULL);
3377
+ }
3378
+ if (ret == NULL) {
3379
+ Py_DECREF(dtype);
3380
+ return NULL;
3381
+ }
3382
+ if (((npy_intp) nread) < num) {
3383
+ /* Realloc memory for smaller number of elements */
3384
+ const size_t nsize = PyArray_MAX(nread,1)*PyArray_DESCR(ret)->elsize;
3385
+ char *tmp;
3386
+
3387
+ if((tmp = PyDataMem_RENEW(PyArray_DATA(ret), nsize)) == NULL) {
3388
+ Py_DECREF(ret);
3389
+ return PyErr_NoMemory();
3390
+ }
3391
+ ((PyArrayObject_fields *)ret)->data = tmp;
3392
+ PyArray_DIMS(ret)[0] = nread;
3393
+ }
3394
+ return (PyObject *)ret;
3395
+ }
3396
+
3397
+ /*NUMPY_API*/
3398
+ NPY_NO_EXPORT PyObject *
3399
+ PyArray_FromBuffer(PyObject *buf, PyArray_Descr *type,
3400
+ npy_intp count, npy_intp offset)
3401
+ {
3402
+ PyArrayObject *ret;
3403
+ char *data;
3404
+ Py_ssize_t ts;
3405
+ npy_intp s, n;
3406
+ int itemsize;
3407
+ int writeable = 1;
3408
+
3409
+
3410
+ if (PyDataType_REFCHK(type)) {
3411
+ PyErr_SetString(PyExc_ValueError,
3412
+ "cannot create an OBJECT array from memory"\
3413
+ " buffer");
3414
+ Py_DECREF(type);
3415
+ return NULL;
3416
+ }
3417
+ if (type->elsize == 0) {
3418
+ PyErr_SetString(PyExc_ValueError,
3419
+ "itemsize cannot be zero in type");
3420
+ Py_DECREF(type);
3421
+ return NULL;
3422
+ }
3423
+ if (Py_TYPE(buf)->tp_as_buffer == NULL
3424
+ #if defined(NPY_PY3K)
3425
+ || Py_TYPE(buf)->tp_as_buffer->bf_getbuffer == NULL
3426
+ #else
3427
+ || (Py_TYPE(buf)->tp_as_buffer->bf_getwritebuffer == NULL
3428
+ && Py_TYPE(buf)->tp_as_buffer->bf_getreadbuffer == NULL)
3429
+ #endif
3430
+ ) {
3431
+ PyObject *newbuf;
3432
+ newbuf = PyObject_GetAttr(buf, npy_ma_str_buffer);
3433
+ if (newbuf == NULL) {
3434
+ Py_DECREF(type);
3435
+ return NULL;
3436
+ }
3437
+ buf = newbuf;
3438
+ }
3439
+ else {
3440
+ Py_INCREF(buf);
3441
+ }
3442
+
3443
+ if (PyObject_AsWriteBuffer(buf, (void *)&data, &ts) == -1) {
3444
+ writeable = 0;
3445
+ PyErr_Clear();
3446
+ if (PyObject_AsReadBuffer(buf, (void *)&data, &ts) == -1) {
3447
+ Py_DECREF(buf);
3448
+ Py_DECREF(type);
3449
+ return NULL;
3450
+ }
3451
+ }
3452
+
3453
+ if ((offset < 0) || (offset > ts)) {
3454
+ PyErr_Format(PyExc_ValueError,
3455
+ "offset must be non-negative and no greater than buffer "\
3456
+ "length (%" NPY_INTP_FMT ")", (npy_intp)ts);
3457
+ Py_DECREF(buf);
3458
+ Py_DECREF(type);
3459
+ return NULL;
3460
+ }
3461
+
3462
+ data += offset;
3463
+ s = (npy_intp)ts - offset;
3464
+ n = (npy_intp)count;
3465
+ itemsize = type->elsize;
3466
+ if (n < 0 ) {
3467
+ if (s % itemsize != 0) {
3468
+ PyErr_SetString(PyExc_ValueError,
3469
+ "buffer size must be a multiple"\
3470
+ " of element size");
3471
+ Py_DECREF(buf);
3472
+ Py_DECREF(type);
3473
+ return NULL;
3474
+ }
3475
+ n = s/itemsize;
3476
+ }
3477
+ else {
3478
+ if (s < n*itemsize) {
3479
+ PyErr_SetString(PyExc_ValueError,
3480
+ "buffer is smaller than requested"\
3481
+ " size");
3482
+ Py_DECREF(buf);
3483
+ Py_DECREF(type);
3484
+ return NULL;
3485
+ }
3486
+ }
3487
+
3488
+ if ((ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type,
3489
+ type,
3490
+ 1, &n,
3491
+ NULL, data,
3492
+ NPY_ARRAY_DEFAULT,
3493
+ NULL)) == NULL) {
3494
+ Py_DECREF(buf);
3495
+ return NULL;
3496
+ }
3497
+
3498
+ if (!writeable) {
3499
+ PyArray_CLEARFLAGS(ret, NPY_ARRAY_WRITEABLE);
3500
+ }
3501
+ /* Store a reference for decref on deallocation */
3502
+ if (PyArray_SetBaseObject(ret, buf) < 0) {
3503
+ Py_DECREF(ret);
3504
+ return NULL;
3505
+ }
3506
+ PyArray_UpdateFlags(ret, NPY_ARRAY_ALIGNED);
3507
+ return (PyObject *)ret;
3508
+ }
3509
+
3510
+ /*NUMPY_API
3511
+ *
3512
+ * Given a pointer to a string ``data``, a string length ``slen``, and
3513
+ * a ``PyArray_Descr``, return an array corresponding to the data
3514
+ * encoded in that string.
3515
+ *
3516
+ * If the dtype is NULL, the default array type is used (double).
3517
+ * If non-null, the reference is stolen.
3518
+ *
3519
+ * If ``slen`` is < 0, then the end of string is used for text data.
3520
+ * It is an error for ``slen`` to be < 0 for binary data (since embedded NULLs
3521
+ * would be the norm).
3522
+ *
3523
+ * The number of elements to read is given as ``num``; if it is < 0, then
3524
+ * then as many as possible are read.
3525
+ *
3526
+ * If ``sep`` is NULL or empty, then binary data is assumed, else
3527
+ * text data, with ``sep`` as the separator between elements. Whitespace in
3528
+ * the separator matches any length of whitespace in the text, and a match
3529
+ * for whitespace around the separator is added.
3530
+ */
3531
+ NPY_NO_EXPORT PyObject *
3532
+ PyArray_FromString(char *data, npy_intp slen, PyArray_Descr *dtype,
3533
+ npy_intp num, char *sep)
3534
+ {
3535
+ int itemsize;
3536
+ PyArrayObject *ret;
3537
+ npy_bool binary;
3538
+
3539
+ if (dtype == NULL) {
3540
+ dtype=PyArray_DescrFromType(NPY_DEFAULT_TYPE);
3541
+ if (dtype == NULL) {
3542
+ return NULL;
3543
+ }
3544
+ }
3545
+ if (PyDataType_FLAGCHK(dtype, NPY_ITEM_IS_POINTER) ||
3546
+ PyDataType_REFCHK(dtype)) {
3547
+ PyErr_SetString(PyExc_ValueError,
3548
+ "Cannot create an object array from" \
3549
+ " a string");
3550
+ Py_DECREF(dtype);
3551
+ return NULL;
3552
+ }
3553
+ itemsize = dtype->elsize;
3554
+ if (itemsize == 0) {
3555
+ PyErr_SetString(PyExc_ValueError, "zero-valued itemsize");
3556
+ Py_DECREF(dtype);
3557
+ return NULL;
3558
+ }
3559
+
3560
+ binary = ((sep == NULL) || (strlen(sep) == 0));
3561
+ if (binary) {
3562
+ if (num < 0 ) {
3563
+ if (slen % itemsize != 0) {
3564
+ PyErr_SetString(PyExc_ValueError,
3565
+ "string size must be a "\
3566
+ "multiple of element size");
3567
+ Py_DECREF(dtype);
3568
+ return NULL;
3569
+ }
3570
+ num = slen/itemsize;
3571
+ }
3572
+ else {
3573
+ if (slen < num*itemsize) {
3574
+ PyErr_SetString(PyExc_ValueError,
3575
+ "string is smaller than " \
3576
+ "requested size");
3577
+ Py_DECREF(dtype);
3578
+ return NULL;
3579
+ }
3580
+ }
3581
+ ret = (PyArrayObject *)
3582
+ PyArray_NewFromDescr(&PyArray_Type, dtype,
3583
+ 1, &num, NULL, NULL,
3584
+ 0, NULL);
3585
+ if (ret == NULL) {
3586
+ return NULL;
3587
+ }
3588
+ memcpy(PyArray_DATA(ret), data, num*dtype->elsize);
3589
+ }
3590
+ else {
3591
+ /* read from character-based string */
3592
+ size_t nread = 0;
3593
+ char *end;
3594
+
3595
+ if (dtype->f->scanfunc == NULL) {
3596
+ PyErr_SetString(PyExc_ValueError,
3597
+ "don't know how to read " \
3598
+ "character strings with that " \
3599
+ "array type");
3600
+ Py_DECREF(dtype);
3601
+ return NULL;
3602
+ }
3603
+ if (slen < 0) {
3604
+ end = NULL;
3605
+ }
3606
+ else {
3607
+ end = data + slen;
3608
+ }
3609
+ ret = array_from_text(dtype, num, sep, &nread,
3610
+ data,
3611
+ (next_element) fromstr_next_element,
3612
+ (skip_separator) fromstr_skip_separator,
3613
+ end);
3614
+ }
3615
+ return (PyObject *)ret;
3616
+ }
3617
+
3618
+ /*NUMPY_API
3619
+ *
3620
+ * steals a reference to dtype (which cannot be NULL)
3621
+ */
3622
+ NPY_NO_EXPORT PyObject *
3623
+ PyArray_FromIter(PyObject *obj, PyArray_Descr *dtype, npy_intp count)
3624
+ {
3625
+ PyObject *value;
3626
+ PyObject *iter = PyObject_GetIter(obj);
3627
+ PyArrayObject *ret = NULL;
3628
+ npy_intp i, elsize, elcount;
3629
+ char *item, *new_data;
3630
+
3631
+ if (iter == NULL) {
3632
+ goto done;
3633
+ }
3634
+ elcount = (count < 0) ? 0 : count;
3635
+ if ((elsize = dtype->elsize) == 0) {
3636
+ PyErr_SetString(PyExc_ValueError,
3637
+ "Must specify length when using variable-size data-type.");
3638
+ goto done;
3639
+ }
3640
+
3641
+ /*
3642
+ * We would need to alter the memory RENEW code to decrement any
3643
+ * reference counts before throwing away any memory.
3644
+ */
3645
+ if (PyDataType_REFCHK(dtype)) {
3646
+ PyErr_SetString(PyExc_ValueError,
3647
+ "cannot create object arrays from iterator");
3648
+ goto done;
3649
+ }
3650
+
3651
+ ret = (PyArrayObject *)PyArray_NewFromDescr(&PyArray_Type, dtype, 1,
3652
+ &elcount, NULL,NULL, 0, NULL);
3653
+ dtype = NULL;
3654
+ if (ret == NULL) {
3655
+ goto done;
3656
+ }
3657
+ for (i = 0; (i < count || count == -1) &&
3658
+ (value = PyIter_Next(iter)); i++) {
3659
+ if (i >= elcount) {
3660
+ /*
3661
+ Grow PyArray_DATA(ret):
3662
+ this is similar for the strategy for PyListObject, but we use
3663
+ 50% overallocation => 0, 4, 8, 14, 23, 36, 56, 86 ...
3664
+ */
3665
+ elcount = (i >> 1) + (i < 4 ? 4 : 2) + i;
3666
+ if (elcount <= NPY_MAX_INTP/elsize) {
3667
+ new_data = PyDataMem_RENEW(PyArray_DATA(ret), elcount * elsize);
3668
+ }
3669
+ else {
3670
+ new_data = NULL;
3671
+ }
3672
+ if (new_data == NULL) {
3673
+ PyErr_SetString(PyExc_MemoryError,
3674
+ "cannot allocate array memory");
3675
+ Py_DECREF(value);
3676
+ goto done;
3677
+ }
3678
+ ((PyArrayObject_fields *)ret)->data = new_data;
3679
+ }
3680
+ PyArray_DIMS(ret)[0] = i + 1;
3681
+
3682
+ if (((item = index2ptr(ret, i)) == NULL) ||
3683
+ (PyArray_DESCR(ret)->f->setitem(value, item, ret) == -1)) {
3684
+ Py_DECREF(value);
3685
+ goto done;
3686
+ }
3687
+ Py_DECREF(value);
3688
+ }
3689
+
3690
+
3691
+ if (PyErr_Occurred()) {
3692
+ goto done;
3693
+ }
3694
+ if (i < count) {
3695
+ PyErr_SetString(PyExc_ValueError,
3696
+ "iterator too short");
3697
+ goto done;
3698
+ }
3699
+
3700
+ /*
3701
+ * Realloc the data so that don't keep extra memory tied up
3702
+ * (assuming realloc is reasonably good about reusing space...)
3703
+ */
3704
+ if (i == 0) {
3705
+ /* The size cannot be zero for PyDataMem_RENEW. */
3706
+ i = 1;
3707
+ }
3708
+ new_data = PyDataMem_RENEW(PyArray_DATA(ret), i * elsize);
3709
+ if (new_data == NULL) {
3710
+ PyErr_SetString(PyExc_MemoryError,
3711
+ "cannot allocate array memory");
3712
+ goto done;
3713
+ }
3714
+ ((PyArrayObject_fields *)ret)->data = new_data;
3715
+
3716
+ done:
3717
+ Py_XDECREF(iter);
3718
+ Py_XDECREF(dtype);
3719
+ if (PyErr_Occurred()) {
3720
+ Py_XDECREF(ret);
3721
+ return NULL;
3722
+ }
3723
+ return (PyObject *)ret;
3724
+ }
3725
+
3726
+ /*
3727
+ * This is the main array creation routine.
3728
+ *
3729
+ * Flags argument has multiple related meanings
3730
+ * depending on data and strides:
3731
+ *
3732
+ * If data is given, then flags is flags associated with data.
3733
+ * If strides is not given, then a contiguous strides array will be created
3734
+ * and the NPY_ARRAY_C_CONTIGUOUS bit will be set. If the flags argument
3735
+ * has the NPY_ARRAY_F_CONTIGUOUS bit set, then a FORTRAN-style strides array will be
3736
+ * created (and of course the NPY_ARRAY_F_CONTIGUOUS flag bit will be set).
3737
+ *
3738
+ * If data is not given but created here, then flags will be NPY_ARRAY_DEFAULT
3739
+ * and a non-zero flags argument can be used to indicate a FORTRAN style
3740
+ * array is desired.
3741
+ */
3742
+
3743
+ NPY_NO_EXPORT size_t
3744
+ _array_fill_strides(npy_intp *strides, npy_intp *dims, int nd, size_t itemsize,
3745
+ int inflag, int *objflags)
3746
+ {
3747
+ int i;
3748
+ #if NPY_RELAXED_STRIDES_CHECKING
3749
+ npy_bool not_cf_contig = 0;
3750
+ npy_bool nod = 0; /* A dim != 1 was found */
3751
+
3752
+ /* Check if new array is both F- and C-contiguous */
3753
+ for (i = 0; i < nd; i++) {
3754
+ if (dims[i] != 1) {
3755
+ if (nod) {
3756
+ not_cf_contig = 1;
3757
+ break;
3758
+ }
3759
+ nod = 1;
3760
+ }
3761
+ }
3762
+ #endif /* NPY_RELAXED_STRIDES_CHECKING */
3763
+
3764
+ /* Only make Fortran strides if not contiguous as well */
3765
+ if ((inflag & (NPY_ARRAY_F_CONTIGUOUS|NPY_ARRAY_C_CONTIGUOUS)) ==
3766
+ NPY_ARRAY_F_CONTIGUOUS) {
3767
+ for (i = 0; i < nd; i++) {
3768
+ strides[i] = itemsize;
3769
+ if (dims[i]) {
3770
+ itemsize *= dims[i];
3771
+ }
3772
+ #if NPY_RELAXED_STRIDES_CHECKING
3773
+ else {
3774
+ not_cf_contig = 0;
3775
+ }
3776
+ #endif /* NPY_RELAXED_STRIDES_CHECKING */
3777
+ }
3778
+ #if NPY_RELAXED_STRIDES_CHECKING
3779
+ if (not_cf_contig) {
3780
+ #else /* not NPY_RELAXED_STRIDES_CHECKING */
3781
+ if ((nd > 1) && ((strides[0] != strides[nd-1]) || (dims[nd-1] > 1))) {
3782
+ #endif /* not NPY_RELAXED_STRIDES_CHECKING */
3783
+ *objflags = ((*objflags)|NPY_ARRAY_F_CONTIGUOUS) &
3784
+ ~NPY_ARRAY_C_CONTIGUOUS;
3785
+ }
3786
+ else {
3787
+ *objflags |= (NPY_ARRAY_F_CONTIGUOUS|NPY_ARRAY_C_CONTIGUOUS);
3788
+ }
3789
+ }
3790
+ else {
3791
+ for (i = nd - 1; i >= 0; i--) {
3792
+ strides[i] = itemsize;
3793
+ if (dims[i]) {
3794
+ itemsize *= dims[i];
3795
+ }
3796
+ #if NPY_RELAXED_STRIDES_CHECKING
3797
+ else {
3798
+ not_cf_contig = 0;
3799
+ }
3800
+ #endif /* NPY_RELAXED_STRIDES_CHECKING */
3801
+ }
3802
+ #if NPY_RELAXED_STRIDES_CHECKING
3803
+ if (not_cf_contig) {
3804
+ #else /* not NPY_RELAXED_STRIDES_CHECKING */
3805
+ if ((nd > 1) && ((strides[0] != strides[nd-1]) || (dims[0] > 1))) {
3806
+ #endif /* not NPY_RELAXED_STRIDES_CHECKING */
3807
+ *objflags = ((*objflags)|NPY_ARRAY_C_CONTIGUOUS) &
3808
+ ~NPY_ARRAY_F_CONTIGUOUS;
3809
+ }
3810
+ else {
3811
+ *objflags |= (NPY_ARRAY_C_CONTIGUOUS|NPY_ARRAY_F_CONTIGUOUS);
3812
+ }
3813
+ }
3814
+ return itemsize;
3815
+ }
3816
+
3817
+ /*
3818
+ * Calls arr_of_subclass.__array_wrap__(towrap), in order to make 'towrap'
3819
+ * have the same ndarray subclass as 'arr_of_subclass'.
3820
+ */
3821
+ NPY_NO_EXPORT PyArrayObject *
3822
+ PyArray_SubclassWrap(PyArrayObject *arr_of_subclass, PyArrayObject *towrap)
3823
+ {
3824
+ PyObject *wrapped = PyObject_CallMethod((PyObject *)arr_of_subclass,
3825
+ "__array_wrap__", "O", towrap);
3826
+ if (wrapped == NULL) {
3827
+ return NULL;
3828
+ }
3829
+ if (!PyArray_Check(wrapped)) {
3830
+ PyErr_SetString(PyExc_RuntimeError,
3831
+ "ndarray subclass __array_wrap__ method returned an "
3832
+ "object which was not an instance of an ndarray subclass");
3833
+ Py_DECREF(wrapped);
3834
+ return NULL;
3835
+ }
3836
+
3837
+ return (PyArrayObject *)wrapped;
3838
+ }