numpy 1.9.2__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

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