numpy 1.9.2__zip → 1.10.0__zip

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