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