numpy 1.9.3__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1590) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  12. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  13. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  16. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  17. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  23. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  31. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  32. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  33. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  39. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  41. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  42. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  43. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  45. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  49. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  50. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  51. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  52. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  56. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  57. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  58. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  59. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  60. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  61. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  62. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  63. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  64. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  65. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  66. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  70. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  71. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  72. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  73. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  74. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  75. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  82. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  83. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  84. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  85. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  86. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  87. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  88. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  89. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  90. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  91. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  138. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  139. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  142. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  143. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  147. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  148. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  154. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  155. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  165. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  166. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  197. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  198. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  199. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  200. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  204. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  205. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  206. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  210. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  211. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  212. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  213. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  214. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  215. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  216. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  217. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  218. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  219. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  230. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  231. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  232. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  233. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  234. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  235. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  236. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  237. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  238. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  239. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  240. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  241. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  242. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  243. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  244. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  245. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  246. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  247. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  248. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  249. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  250. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  251. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  252. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  253. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  254. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  267. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  268. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  269. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  272. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  273. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  274. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  275. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  276. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  277. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  278. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  279. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  280. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  281. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  282. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  283. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  284. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  285. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  286. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  287. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  288. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  289. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  290. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  291. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  292. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  293. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  313. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  314. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  315. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  316. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  317. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  318. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  319. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  320. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  322. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  323. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  324. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  325. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  326. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  327. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  328. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  329. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  330. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  335. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  336. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  337. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  338. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  339. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  343. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  344. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  345. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  346. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  347. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  348. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  349. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  350. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  351. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  353. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  354. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  355. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  356. numpy-1.10.0.post2/numpy/setup.py +29 -0
  357. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  358. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  359. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  360. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  361. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  362. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  363. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  364. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  365. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  366. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  367. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  368. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  369. numpy-1.10.0.post2/numpy/version.py +10 -0
  370. numpy-1.10.0.post2/setup.py +260 -0
  371. numpy-1.10.0.post2/site.cfg.example +193 -0
  372. numpy-1.10.0.post2/tmp.txt +789 -0
  373. numpy-1.10.0.post2/tools/swig/README +145 -0
  374. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  375. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  376. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  377. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  378. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  379. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  382. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  383. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  384. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  385. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  387. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  388. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  389. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  390. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  391. numpy-1.9.3/INSTALL.txt +0 -138
  392. numpy-1.9.3/LICENSE.txt +0 -30
  393. numpy-1.9.3/MANIFEST.in +0 -26
  394. numpy-1.9.3/PKG-INFO +0 -39
  395. numpy-1.9.3/doc/release/1.9.3-notes.rst +0 -23
  396. numpy-1.9.3/doc/source/conf.py +0 -331
  397. numpy-1.9.3/doc/source/dev/gitwash/branch_list.png +0 -0
  398. numpy-1.9.3/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  399. numpy-1.9.3/doc/source/dev/gitwash/development_workflow.rst +0 -568
  400. numpy-1.9.3/doc/source/dev/gitwash/git_links.inc +0 -88
  401. numpy-1.9.3/doc/source/dev/gitwash/index.rst +0 -14
  402. numpy-1.9.3/doc/source/dev/index.rst +0 -10
  403. numpy-1.9.3/doc/source/reference/arrays.classes.rst +0 -427
  404. numpy-1.9.3/doc/source/reference/arrays.dtypes.rst +0 -534
  405. numpy-1.9.3/doc/source/reference/arrays.indexing.rst +0 -550
  406. numpy-1.9.3/doc/source/reference/arrays.interface.rst +0 -336
  407. numpy-1.9.3/doc/source/reference/arrays.ndarray.rst +0 -609
  408. numpy-1.9.3/doc/source/reference/arrays.scalars.rst +0 -291
  409. numpy-1.9.3/doc/source/reference/c-api.array.rst +0 -3362
  410. numpy-1.9.3/doc/source/reference/c-api.config.rst +0 -103
  411. numpy-1.9.3/doc/source/reference/c-api.coremath.rst +0 -420
  412. numpy-1.9.3/doc/source/reference/c-api.dtype.rst +0 -376
  413. numpy-1.9.3/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  414. numpy-1.9.3/doc/source/reference/c-api.iterator.rst +0 -1298
  415. numpy-1.9.3/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  416. numpy-1.9.3/doc/source/reference/c-api.ufunc.rst +0 -399
  417. numpy-1.9.3/doc/source/reference/index.rst +0 -44
  418. numpy-1.9.3/doc/source/reference/internals.code-explanations.rst +0 -666
  419. numpy-1.9.3/doc/source/reference/routines.array-manipulation.rst +0 -113
  420. numpy-1.9.3/doc/source/reference/routines.io.rst +0 -74
  421. numpy-1.9.3/doc/source/reference/routines.linalg.rst +0 -88
  422. numpy-1.9.3/doc/source/reference/routines.ma.rst +0 -405
  423. numpy-1.9.3/doc/source/reference/routines.sort.rst +0 -42
  424. numpy-1.9.3/doc/source/reference/routines.statistics.rst +0 -55
  425. numpy-1.9.3/doc/source/reference/swig.interface-file.rst +0 -1055
  426. numpy-1.9.3/doc/source/reference/swig.testing.rst +0 -166
  427. numpy-1.9.3/doc/source/reference/ufuncs.rst +0 -651
  428. numpy-1.9.3/doc/source/release.rst +0 -19
  429. numpy-1.9.3/doc/source/user/basics.io.genfromtxt.rst +0 -531
  430. numpy-1.9.3/doc/source/user/basics.rec.rst +0 -7
  431. numpy-1.9.3/doc/source/user/c-info.beyond-basics.rst +0 -560
  432. numpy-1.9.3/doc/source/user/c-info.how-to-extend.rst +0 -642
  433. numpy-1.9.3/doc/source/user/c-info.python-as-glue.rst +0 -1528
  434. numpy-1.9.3/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  435. numpy-1.9.3/doc/source/user/install.rst +0 -180
  436. numpy-1.9.3/numpy/__init__.py +0 -216
  437. numpy-1.9.3/numpy/_import_tools.py +0 -348
  438. numpy-1.9.3/numpy/add_newdocs.py +0 -7518
  439. numpy-1.9.3/numpy/compat/_inspect.py +0 -221
  440. numpy-1.9.3/numpy/compat/py3k.py +0 -89
  441. numpy-1.9.3/numpy/compat/setup.py +0 -12
  442. numpy-1.9.3/numpy/core/__init__.py +0 -78
  443. numpy-1.9.3/numpy/core/_internal.py +0 -570
  444. numpy-1.9.3/numpy/core/_methods.py +0 -134
  445. numpy-1.9.3/numpy/core/arrayprint.py +0 -752
  446. numpy-1.9.3/numpy/core/blasdot/_dotblas.c +0 -1255
  447. numpy-1.9.3/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  448. numpy-1.9.3/numpy/core/blasdot/cblas.h +0 -578
  449. numpy-1.9.3/numpy/core/code_generators/cversions.txt +0 -31
  450. numpy-1.9.3/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  451. numpy-1.9.3/numpy/core/code_generators/generate_umath.py +0 -972
  452. numpy-1.9.3/numpy/core/code_generators/numpy_api.py +0 -412
  453. numpy-1.9.3/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  454. numpy-1.9.3/numpy/core/defchararray.py +0 -2687
  455. numpy-1.9.3/numpy/core/fromnumeric.py +0 -2938
  456. numpy-1.9.3/numpy/core/function_base.py +0 -190
  457. numpy-1.9.3/numpy/core/getlimits.py +0 -306
  458. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.c +0 -38
  459. numpy-1.9.3/numpy/core/include/numpy/fenv/fenv.h +0 -224
  460. numpy-1.9.3/numpy/core/include/numpy/ndarrayobject.h +0 -237
  461. numpy-1.9.3/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  462. numpy-1.9.3/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  463. numpy-1.9.3/numpy/core/include/numpy/npy_common.h +0 -1038
  464. numpy-1.9.3/numpy/core/include/numpy/npy_cpu.h +0 -122
  465. numpy-1.9.3/numpy/core/include/numpy/npy_endian.h +0 -49
  466. numpy-1.9.3/numpy/core/include/numpy/npy_math.h +0 -479
  467. numpy-1.9.3/numpy/core/include/numpy/numpyconfig.h +0 -35
  468. numpy-1.9.3/numpy/core/machar.py +0 -338
  469. numpy-1.9.3/numpy/core/memmap.py +0 -308
  470. numpy-1.9.3/numpy/core/numeric.py +0 -2842
  471. numpy-1.9.3/numpy/core/numerictypes.py +0 -1042
  472. numpy-1.9.3/numpy/core/records.py +0 -804
  473. numpy-1.9.3/numpy/core/setup.py +0 -1016
  474. numpy-1.9.3/numpy/core/setup_common.py +0 -330
  475. numpy-1.9.3/numpy/core/shape_base.py +0 -277
  476. numpy-1.9.3/numpy/core/src/multiarray/alloc.c +0 -241
  477. numpy-1.9.3/numpy/core/src/multiarray/arrayobject.c +0 -1791
  478. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  479. numpy-1.9.3/numpy/core/src/multiarray/arraytypes.h +0 -13
  480. numpy-1.9.3/numpy/core/src/multiarray/buffer.c +0 -954
  481. numpy-1.9.3/numpy/core/src/multiarray/calculation.c +0 -1229
  482. numpy-1.9.3/numpy/core/src/multiarray/common.c +0 -798
  483. numpy-1.9.3/numpy/core/src/multiarray/common.h +0 -328
  484. numpy-1.9.3/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  485. numpy-1.9.3/numpy/core/src/multiarray/convert.c +0 -589
  486. numpy-1.9.3/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  487. numpy-1.9.3/numpy/core/src/multiarray/ctors.c +0 -3785
  488. numpy-1.9.3/numpy/core/src/multiarray/datetime.c +0 -3823
  489. numpy-1.9.3/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  490. numpy-1.9.3/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  491. numpy-1.9.3/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  492. numpy-1.9.3/numpy/core/src/multiarray/descriptor.c +0 -3658
  493. numpy-1.9.3/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  494. numpy-1.9.3/numpy/core/src/multiarray/einsum.c.src +0 -3013
  495. numpy-1.9.3/numpy/core/src/multiarray/getset.c +0 -984
  496. numpy-1.9.3/numpy/core/src/multiarray/hashdescr.c +0 -319
  497. numpy-1.9.3/numpy/core/src/multiarray/item_selection.c +0 -2711
  498. numpy-1.9.3/numpy/core/src/multiarray/iterators.c +0 -2160
  499. numpy-1.9.3/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  500. numpy-1.9.3/numpy/core/src/multiarray/mapping.c +0 -3316
  501. numpy-1.9.3/numpy/core/src/multiarray/mapping.h +0 -73
  502. numpy-1.9.3/numpy/core/src/multiarray/methods.c +0 -2497
  503. numpy-1.9.3/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  504. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.c +0 -4200
  505. numpy-1.9.3/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  506. numpy-1.9.3/numpy/core/src/multiarray/nditer_api.c +0 -2809
  507. numpy-1.9.3/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  508. numpy-1.9.3/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  509. numpy-1.9.3/numpy/core/src/multiarray/number.c +0 -1057
  510. numpy-1.9.3/numpy/core/src/multiarray/number.h +0 -76
  511. numpy-1.9.3/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  512. numpy-1.9.3/numpy/core/src/multiarray/numpyos.c +0 -683
  513. numpy-1.9.3/numpy/core/src/multiarray/scalarapi.c +0 -861
  514. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  515. numpy-1.9.3/numpy/core/src/multiarray/scalartypes.h +0 -52
  516. numpy-1.9.3/numpy/core/src/multiarray/shape.c +0 -1141
  517. numpy-1.9.3/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  518. numpy-1.9.3/numpy/core/src/npymath/ieee754.c.src +0 -814
  519. numpy-1.9.3/numpy/core/src/npymath/npy_math.c.src +0 -527
  520. numpy-1.9.3/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  521. numpy-1.9.3/numpy/core/src/npymath/npy_math_private.h +0 -539
  522. numpy-1.9.3/numpy/core/src/npysort/heapsort.c.src +0 -341
  523. numpy-1.9.3/numpy/core/src/npysort/mergesort.c.src +0 -428
  524. numpy-1.9.3/numpy/core/src/npysort/npysort_common.h +0 -367
  525. numpy-1.9.3/numpy/core/src/npysort/quicksort.c.src +0 -363
  526. numpy-1.9.3/numpy/core/src/npysort/selection.c.src +0 -474
  527. numpy-1.9.3/numpy/core/src/private/npy_config.h +0 -68
  528. numpy-1.9.3/numpy/core/src/private/npy_partition.h.src +0 -138
  529. numpy-1.9.3/numpy/core/src/private/npy_sort.h +0 -194
  530. numpy-1.9.3/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  531. numpy-1.9.3/numpy/core/src/private/ufunc_override.h +0 -384
  532. numpy-1.9.3/numpy/core/src/scalarmathmodule.c.src +0 -1980
  533. numpy-1.9.3/numpy/core/src/umath/funcs.inc.src +0 -715
  534. numpy-1.9.3/numpy/core/src/umath/loops.c.src +0 -2654
  535. numpy-1.9.3/numpy/core/src/umath/loops.h.src +0 -501
  536. numpy-1.9.3/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  537. numpy-1.9.3/numpy/core/src/umath/simd.inc.src +0 -881
  538. numpy-1.9.3/numpy/core/src/umath/test_rational.c.src +0 -1404
  539. numpy-1.9.3/numpy/core/src/umath/ufunc_object.c +0 -5520
  540. numpy-1.9.3/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  541. numpy-1.9.3/numpy/core/src/umath/umath_tests.c.src +0 -341
  542. numpy-1.9.3/numpy/core/src/umath/umathmodule.c +0 -561
  543. numpy-1.9.3/numpy/core/tests/test_abc.py +0 -45
  544. numpy-1.9.3/numpy/core/tests/test_api.py +0 -514
  545. numpy-1.9.3/numpy/core/tests/test_arrayprint.py +0 -167
  546. numpy-1.9.3/numpy/core/tests/test_blasdot.py +0 -249
  547. numpy-1.9.3/numpy/core/tests/test_datetime.py +0 -1781
  548. numpy-1.9.3/numpy/core/tests/test_defchararray.py +0 -642
  549. numpy-1.9.3/numpy/core/tests/test_deprecations.py +0 -512
  550. numpy-1.9.3/numpy/core/tests/test_dtype.py +0 -542
  551. numpy-1.9.3/numpy/core/tests/test_einsum.py +0 -583
  552. numpy-1.9.3/numpy/core/tests/test_errstate.py +0 -51
  553. numpy-1.9.3/numpy/core/tests/test_function_base.py +0 -111
  554. numpy-1.9.3/numpy/core/tests/test_getlimits.py +0 -86
  555. numpy-1.9.3/numpy/core/tests/test_half.py +0 -439
  556. numpy-1.9.3/numpy/core/tests/test_indexerrors.py +0 -127
  557. numpy-1.9.3/numpy/core/tests/test_indexing.py +0 -1014
  558. numpy-1.9.3/numpy/core/tests/test_item_selection.py +0 -70
  559. numpy-1.9.3/numpy/core/tests/test_machar.py +0 -30
  560. numpy-1.9.3/numpy/core/tests/test_memmap.py +0 -127
  561. numpy-1.9.3/numpy/core/tests/test_multiarray.py +0 -4645
  562. numpy-1.9.3/numpy/core/tests/test_multiarray_assignment.py +0 -80
  563. numpy-1.9.3/numpy/core/tests/test_nditer.py +0 -2630
  564. numpy-1.9.3/numpy/core/tests/test_numeric.py +0 -2117
  565. numpy-1.9.3/numpy/core/tests/test_numerictypes.py +0 -377
  566. numpy-1.9.3/numpy/core/tests/test_print.py +0 -245
  567. numpy-1.9.3/numpy/core/tests/test_records.py +0 -185
  568. numpy-1.9.3/numpy/core/tests/test_regression.py +0 -2115
  569. numpy-1.9.3/numpy/core/tests/test_scalarinherit.py +0 -34
  570. numpy-1.9.3/numpy/core/tests/test_scalarmath.py +0 -275
  571. numpy-1.9.3/numpy/core/tests/test_shape_base.py +0 -250
  572. numpy-1.9.3/numpy/core/tests/test_ufunc.py +0 -1153
  573. numpy-1.9.3/numpy/core/tests/test_umath.py +0 -1695
  574. numpy-1.9.3/numpy/core/tests/test_umath_complex.py +0 -537
  575. numpy-1.9.3/numpy/core/tests/test_unicode.py +0 -357
  576. numpy-1.9.3/numpy/distutils/__init__.py +0 -39
  577. numpy-1.9.3/numpy/distutils/ccompiler.py +0 -656
  578. numpy-1.9.3/numpy/distutils/command/autodist.py +0 -43
  579. numpy-1.9.3/numpy/distutils/command/build.py +0 -39
  580. numpy-1.9.3/numpy/distutils/command/build_clib.py +0 -284
  581. numpy-1.9.3/numpy/distutils/command/build_ext.py +0 -515
  582. numpy-1.9.3/numpy/distutils/command/config.py +0 -476
  583. numpy-1.9.3/numpy/distutils/exec_command.py +0 -618
  584. numpy-1.9.3/numpy/distutils/fcompiler/compaq.py +0 -128
  585. numpy-1.9.3/numpy/distutils/fcompiler/gnu.py +0 -390
  586. numpy-1.9.3/numpy/distutils/fcompiler/intel.py +0 -205
  587. numpy-1.9.3/numpy/distutils/fcompiler/pg.py +0 -60
  588. numpy-1.9.3/numpy/distutils/fcompiler/sun.py +0 -52
  589. numpy-1.9.3/numpy/distutils/intelccompiler.py +0 -45
  590. numpy-1.9.3/numpy/distutils/lib2def.py +0 -116
  591. numpy-1.9.3/numpy/distutils/mingw32ccompiler.py +0 -582
  592. numpy-1.9.3/numpy/distutils/misc_util.py +0 -2271
  593. numpy-1.9.3/numpy/distutils/npy_pkg_config.py +0 -464
  594. numpy-1.9.3/numpy/distutils/system_info.py +0 -2319
  595. numpy-1.9.3/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  596. numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  597. numpy-1.9.3/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  598. numpy-1.9.3/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  599. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  600. numpy-1.9.3/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  601. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  602. numpy-1.9.3/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  603. numpy-1.9.3/numpy/distutils/tests/test_misc_util.py +0 -75
  604. numpy-1.9.3/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  605. numpy-1.9.3/numpy/distutils/unixccompiler.py +0 -113
  606. numpy-1.9.3/numpy/doc/byteswapping.py +0 -147
  607. numpy-1.9.3/numpy/doc/creation.py +0 -144
  608. numpy-1.9.3/numpy/doc/glossary.py +0 -418
  609. numpy-1.9.3/numpy/doc/indexing.py +0 -437
  610. numpy-1.9.3/numpy/doc/structured_arrays.py +0 -223
  611. numpy-1.9.3/numpy/f2py/__init__.py +0 -49
  612. numpy-1.9.3/numpy/f2py/auxfuncs.py +0 -711
  613. numpy-1.9.3/numpy/f2py/capi_maps.py +0 -773
  614. numpy-1.9.3/numpy/f2py/cb_rules.py +0 -539
  615. numpy-1.9.3/numpy/f2py/cfuncs.py +0 -1224
  616. numpy-1.9.3/numpy/f2py/common_rules.py +0 -132
  617. numpy-1.9.3/numpy/f2py/crackfortran.py +0 -2870
  618. numpy-1.9.3/numpy/f2py/diagnose.py +0 -149
  619. numpy-1.9.3/numpy/f2py/f2py2e.py +0 -598
  620. numpy-1.9.3/numpy/f2py/f2py_testing.py +0 -46
  621. numpy-1.9.3/numpy/f2py/f90mod_rules.py +0 -246
  622. numpy-1.9.3/numpy/f2py/func2subr.py +0 -291
  623. numpy-1.9.3/numpy/f2py/rules.py +0 -1448
  624. numpy-1.9.3/numpy/f2py/setup.py +0 -129
  625. numpy-1.9.3/numpy/f2py/src/fortranobject.c +0 -972
  626. numpy-1.9.3/numpy/f2py/src/fortranobject.h +0 -162
  627. numpy-1.9.3/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  628. numpy-1.9.3/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  629. numpy-1.9.3/numpy/f2py/tests/test_assumed_shape.py +0 -37
  630. numpy-1.9.3/numpy/f2py/tests/test_callback.py +0 -132
  631. numpy-1.9.3/numpy/f2py/tests/test_kind.py +0 -36
  632. numpy-1.9.3/numpy/f2py/tests/test_mixed.py +0 -41
  633. numpy-1.9.3/numpy/f2py/tests/test_regression.py +0 -32
  634. numpy-1.9.3/numpy/f2py/tests/test_return_character.py +0 -142
  635. numpy-1.9.3/numpy/f2py/tests/test_return_complex.py +0 -169
  636. numpy-1.9.3/numpy/f2py/tests/test_return_integer.py +0 -178
  637. numpy-1.9.3/numpy/f2py/tests/test_return_logical.py +0 -187
  638. numpy-1.9.3/numpy/f2py/tests/test_return_real.py +0 -203
  639. numpy-1.9.3/numpy/f2py/tests/test_size.py +0 -47
  640. numpy-1.9.3/numpy/f2py/tests/util.py +0 -353
  641. numpy-1.9.3/numpy/f2py/use_rules.py +0 -109
  642. numpy-1.9.3/numpy/fft/fftpack.c +0 -1501
  643. numpy-1.9.3/numpy/fft/fftpack.h +0 -28
  644. numpy-1.9.3/numpy/fft/fftpack.py +0 -1169
  645. numpy-1.9.3/numpy/fft/fftpack_litemodule.c +0 -371
  646. numpy-1.9.3/numpy/fft/info.py +0 -179
  647. numpy-1.9.3/numpy/fft/setup.py +0 -20
  648. numpy-1.9.3/numpy/fft/tests/test_fftpack.py +0 -75
  649. numpy-1.9.3/numpy/fft/tests/test_helper.py +0 -78
  650. numpy-1.9.3/numpy/lib/_iotools.py +0 -891
  651. numpy-1.9.3/numpy/lib/arraypad.py +0 -1475
  652. numpy-1.9.3/numpy/lib/arraysetops.py +0 -464
  653. numpy-1.9.3/numpy/lib/arrayterator.py +0 -226
  654. numpy-1.9.3/numpy/lib/financial.py +0 -737
  655. numpy-1.9.3/numpy/lib/format.py +0 -771
  656. numpy-1.9.3/numpy/lib/function_base.py +0 -3884
  657. numpy-1.9.3/numpy/lib/index_tricks.py +0 -869
  658. numpy-1.9.3/numpy/lib/info.py +0 -151
  659. numpy-1.9.3/numpy/lib/nanfunctions.py +0 -1158
  660. numpy-1.9.3/numpy/lib/npyio.py +0 -1871
  661. numpy-1.9.3/numpy/lib/polynomial.py +0 -1271
  662. numpy-1.9.3/numpy/lib/recfunctions.py +0 -1003
  663. numpy-1.9.3/numpy/lib/setup.py +0 -23
  664. numpy-1.9.3/numpy/lib/shape_base.py +0 -865
  665. numpy-1.9.3/numpy/lib/src/_compiled_base.c +0 -1761
  666. numpy-1.9.3/numpy/lib/stride_tricks.py +0 -123
  667. numpy-1.9.3/numpy/lib/tests/test__iotools.py +0 -326
  668. numpy-1.9.3/numpy/lib/tests/test__version.py +0 -57
  669. numpy-1.9.3/numpy/lib/tests/test_arraypad.py +0 -560
  670. numpy-1.9.3/numpy/lib/tests/test_arraysetops.py +0 -301
  671. numpy-1.9.3/numpy/lib/tests/test_financial.py +0 -160
  672. numpy-1.9.3/numpy/lib/tests/test_format.py +0 -716
  673. numpy-1.9.3/numpy/lib/tests/test_function_base.py +0 -2145
  674. numpy-1.9.3/numpy/lib/tests/test_index_tricks.py +0 -289
  675. numpy-1.9.3/numpy/lib/tests/test_io.py +0 -1754
  676. numpy-1.9.3/numpy/lib/tests/test_nanfunctions.py +0 -774
  677. numpy-1.9.3/numpy/lib/tests/test_polynomial.py +0 -177
  678. numpy-1.9.3/numpy/lib/tests/test_recfunctions.py +0 -705
  679. numpy-1.9.3/numpy/lib/tests/test_shape_base.py +0 -368
  680. numpy-1.9.3/numpy/lib/tests/test_stride_tricks.py +0 -238
  681. numpy-1.9.3/numpy/lib/tests/test_twodim_base.py +0 -504
  682. numpy-1.9.3/numpy/lib/tests/test_type_check.py +0 -328
  683. numpy-1.9.3/numpy/lib/twodim_base.py +0 -1003
  684. numpy-1.9.3/numpy/lib/type_check.py +0 -605
  685. numpy-1.9.3/numpy/lib/utils.py +0 -1176
  686. numpy-1.9.3/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  687. numpy-1.9.3/numpy/linalg/lapack_litemodule.c +0 -362
  688. numpy-1.9.3/numpy/linalg/linalg.py +0 -2136
  689. numpy-1.9.3/numpy/linalg/tests/test_build.py +0 -53
  690. numpy-1.9.3/numpy/linalg/tests/test_linalg.py +0 -1156
  691. numpy-1.9.3/numpy/linalg/tests/test_regression.py +0 -90
  692. numpy-1.9.3/numpy/linalg/umath_linalg.c.src +0 -3210
  693. numpy-1.9.3/numpy/ma/__init__.py +0 -58
  694. numpy-1.9.3/numpy/ma/bench.py +0 -166
  695. numpy-1.9.3/numpy/ma/core.py +0 -7374
  696. numpy-1.9.3/numpy/ma/extras.py +0 -1932
  697. numpy-1.9.3/numpy/ma/mrecords.py +0 -734
  698. numpy-1.9.3/numpy/ma/setup.py +0 -20
  699. numpy-1.9.3/numpy/ma/tests/test_core.py +0 -3706
  700. numpy-1.9.3/numpy/ma/tests/test_extras.py +0 -954
  701. numpy-1.9.3/numpy/ma/tests/test_mrecords.py +0 -521
  702. numpy-1.9.3/numpy/ma/tests/test_old_ma.py +0 -869
  703. numpy-1.9.3/numpy/ma/tests/test_regression.py +0 -75
  704. numpy-1.9.3/numpy/ma/tests/test_subclassing.py +0 -236
  705. numpy-1.9.3/numpy/ma/testutils.py +0 -240
  706. numpy-1.9.3/numpy/ma/timer_comparison.py +0 -459
  707. numpy-1.9.3/numpy/matlib.py +0 -358
  708. numpy-1.9.3/numpy/matrixlib/defmatrix.py +0 -1094
  709. numpy-1.9.3/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  710. numpy-1.9.3/numpy/matrixlib/tests/test_multiarray.py +0 -18
  711. numpy-1.9.3/numpy/matrixlib/tests/test_numeric.py +0 -10
  712. numpy-1.9.3/numpy/matrixlib/tests/test_regression.py +0 -34
  713. numpy-1.9.3/numpy/polynomial/_polybase.py +0 -962
  714. numpy-1.9.3/numpy/polynomial/chebyshev.py +0 -2056
  715. numpy-1.9.3/numpy/polynomial/hermite.py +0 -1789
  716. numpy-1.9.3/numpy/polynomial/hermite_e.py +0 -1786
  717. numpy-1.9.3/numpy/polynomial/laguerre.py +0 -1781
  718. numpy-1.9.3/numpy/polynomial/legendre.py +0 -1809
  719. numpy-1.9.3/numpy/polynomial/polytemplate.py +0 -927
  720. numpy-1.9.3/numpy/polynomial/polyutils.py +0 -403
  721. numpy-1.9.3/numpy/random/mtrand/distributions.c +0 -892
  722. numpy-1.9.3/numpy/random/mtrand/mtrand.c +0 -36656
  723. numpy-1.9.3/numpy/random/mtrand/mtrand.pyx +0 -4706
  724. numpy-1.9.3/numpy/random/setup.py +0 -74
  725. numpy-1.9.3/numpy/random/tests/test_random.py +0 -707
  726. numpy-1.9.3/numpy/random/tests/test_regression.py +0 -86
  727. numpy-1.9.3/numpy/setup.py +0 -27
  728. numpy-1.9.3/numpy/testing/__init__.py +0 -16
  729. numpy-1.9.3/numpy/testing/decorators.py +0 -271
  730. numpy-1.9.3/numpy/testing/noseclasses.py +0 -353
  731. numpy-1.9.3/numpy/testing/nosetester.py +0 -504
  732. numpy-1.9.3/numpy/testing/print_coercion_tables.py +0 -89
  733. numpy-1.9.3/numpy/testing/setup.py +0 -20
  734. numpy-1.9.3/numpy/testing/tests/test_decorators.py +0 -185
  735. numpy-1.9.3/numpy/testing/tests/test_utils.py +0 -558
  736. numpy-1.9.3/numpy/testing/utils.py +0 -1715
  737. numpy-1.9.3/numpy/tests/test_ctypeslib.py +0 -102
  738. numpy-1.9.3/numpy/tests/test_matlib.py +0 -55
  739. numpy-1.9.3/numpy/version.py +0 -10
  740. numpy-1.9.3/setup.py +0 -251
  741. numpy-1.9.3/site.cfg.example +0 -157
  742. numpy-1.9.3/tools/swig/README +0 -135
  743. numpy-1.9.3/tools/swig/numpy.i +0 -3085
  744. numpy-1.9.3/tools/swig/test/Array.i +0 -102
  745. numpy-1.9.3/tools/swig/test/Makefile +0 -34
  746. numpy-1.9.3/tools/swig/test/setup.py +0 -64
  747. numpy-1.9.3/tools/swig/test/testArray.py +0 -284
  748. numpy-1.9.3/tools/swig/test/testFarray.py +0 -159
  749. numpy-1.9.3/tools/swig/test/testFortran.py +0 -173
  750. numpy-1.9.3/tools/swig/test/testMatrix.py +0 -362
  751. numpy-1.9.3/tools/swig/test/testSuperTensor.py +0 -388
  752. numpy-1.9.3/tools/swig/test/testTensor.py +0 -402
  753. numpy-1.9.3/tools/swig/test/testVector.py +0 -381
  754. {numpy-1.9.3 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  755. {numpy-1.9.3 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  756. {numpy-1.9.3 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  757. {numpy-1.9.3 → numpy-1.10.0.post2}/README.txt +0 -0
  758. {numpy-1.9.3 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  759. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  760. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  761. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  762. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  763. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  764. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  765. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  766. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  767. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  768. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  769. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  770. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  771. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  772. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  773. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  774. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  775. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  776. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  777. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  778. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  779. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  780. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  781. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  782. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  783. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  784. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  785. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  786. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  787. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  788. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  789. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  790. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  791. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  792. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  793. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  794. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  795. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  796. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  797. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  798. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  799. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  800. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  801. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  802. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  803. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  804. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  805. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  806. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  807. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  808. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  809. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  810. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  811. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  812. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  813. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  814. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  815. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  816. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  817. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  818. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  819. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  820. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  821. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  822. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  823. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  824. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  825. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  826. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  827. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  828. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  829. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  830. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  831. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  832. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  833. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  834. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  835. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  836. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  837. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  838. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  839. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  840. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.git +0 -0
  841. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  842. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  843. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  844. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  845. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  846. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  847. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  848. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  849. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  850. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  851. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  852. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  853. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  854. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  855. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  856. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  857. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  858. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  859. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  860. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  861. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  862. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  863. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  864. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  865. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  866. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  867. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  868. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  869. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  870. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  871. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  872. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  873. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  874. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  875. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  876. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  877. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  878. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  879. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  880. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  881. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  882. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  883. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  884. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  885. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  886. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  887. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  888. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  889. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  890. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  891. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  892. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  893. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  894. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  895. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  896. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  897. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  898. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  899. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  900. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  901. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  902. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  903. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  904. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  905. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  906. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  907. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  908. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  909. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  910. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  911. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  912. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  913. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  914. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  915. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  916. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  917. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  918. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  919. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  920. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  921. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  922. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  923. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  924. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  925. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  926. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  927. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  928. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  929. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  930. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  931. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  932. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  933. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  934. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  935. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  936. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  937. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  938. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  939. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  940. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  941. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  942. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  943. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  944. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  945. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  946. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  947. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  948. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  949. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  950. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  951. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  952. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  953. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  954. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  955. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  956. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  957. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  958. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  959. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  960. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  961. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  962. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  963. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  964. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  965. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  966. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  967. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  968. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  969. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  970. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  971. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  972. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  973. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  974. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  975. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  976. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  977. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  978. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  979. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  980. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  981. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  982. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  983. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  984. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  985. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  986. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  987. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  988. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  989. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  990. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  991. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  992. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  993. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  994. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  995. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  996. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  997. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  998. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  999. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1000. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1001. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1002. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1003. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1004. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1005. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1006. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1007. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1008. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1009. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1010. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1011. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1012. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1013. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1014. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1015. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1016. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1017. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1018. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1019. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1020. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1021. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1022. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1023. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1024. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1025. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1026. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1027. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1028. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1029. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1030. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1031. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1032. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1033. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1034. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1035. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1036. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1037. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1038. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1039. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1040. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1041. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1042. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1043. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1044. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1045. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1046. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1047. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1048. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1049. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1050. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1051. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1052. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1053. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1054. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1055. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1056. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1057. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1058. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1059. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1060. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1061. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1062. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1063. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1064. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1065. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1066. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1067. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1068. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1069. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1070. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1071. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1072. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1073. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1074. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1075. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1076. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1077. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1078. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1079. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1080. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1081. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1082. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1083. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1084. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1085. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1086. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1087. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1088. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1089. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1090. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1091. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1092. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1093. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1094. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1095. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1096. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1097. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1098. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1099. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1100. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1101. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1102. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1103. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1104. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1105. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1106. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1107. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1108. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1109. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1110. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1111. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1112. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1113. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1114. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1115. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1116. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1117. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1118. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1119. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1120. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1121. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1122. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1123. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1124. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1125. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1126. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1127. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1128. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1129. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1130. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1131. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1132. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1133. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1134. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1135. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1136. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1137. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1138. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1139. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1140. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1141. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1142. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1143. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1144. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1145. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1146. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1147. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1148. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1149. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1150. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1151. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1152. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1153. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1154. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1155. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1156. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1157. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1158. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1159. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1160. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1161. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1162. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1163. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1164. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1165. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1166. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1167. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1168. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1169. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1170. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1171. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1172. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1173. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1174. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1175. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1176. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1177. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1178. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1179. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1180. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1181. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1182. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1183. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1184. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1185. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1186. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1187. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1188. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1189. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1190. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1191. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1192. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1193. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1194. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1195. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1196. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1197. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1198. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1199. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1200. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1201. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1202. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1203. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1204. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1205. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1206. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1207. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1208. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1209. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1210. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1211. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1212. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1213. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1214. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1215. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1216. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1217. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1218. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1219. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1220. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1221. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1222. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1223. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1224. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1225. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1226. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1227. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1228. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1229. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1230. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1231. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1232. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1233. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1234. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1235. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1236. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1237. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1238. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1239. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1240. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1241. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1242. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1243. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1244. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1245. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1246. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1247. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1248. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1249. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1250. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1251. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1252. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1253. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1254. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1255. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1256. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1257. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1258. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1259. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1260. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1261. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1262. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1263. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1264. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1265. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1266. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1267. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1268. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1269. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1270. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1271. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1272. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1273. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1274. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1275. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1276. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1277. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1278. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1279. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1280. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1281. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1282. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1283. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1284. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1285. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1286. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1287. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1288. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1289. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1290. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1291. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1292. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1293. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1294. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1295. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1296. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1297. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1298. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1299. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1300. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1301. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1302. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1303. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1304. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1305. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1306. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1307. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1308. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1309. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1310. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1311. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1312. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1313. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1314. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1315. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1316. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1317. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1318. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1319. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1320. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1321. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1322. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1323. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1324. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1325. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1326. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1327. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.git +0 -0
  1328. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1329. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1330. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1331. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1332. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1333. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1334. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1335. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1336. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1337. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1338. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1339. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1340. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1341. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1342. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1343. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1344. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1345. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1346. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1347. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1348. {numpy-1.9.3 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1349. {numpy-1.9.3/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1350. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1351. {numpy-1.9.3/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1352. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1353. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1354. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1355. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1356. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1357. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1358. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1359. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1360. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1361. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1362. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1363. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1364. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1365. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1366. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1367. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1368. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1369. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1370. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1371. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1372. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1373. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1374. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1375. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1376. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1377. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1378. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1379. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1380. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1381. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1382. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1383. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1384. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1385. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1386. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1387. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1388. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1389. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1390. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1391. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1392. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1393. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1394. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1395. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1396. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1397. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1398. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1399. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1400. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1401. {numpy-1.9.3/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1402. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1403. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1404. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1405. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1406. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1407. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1408. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1409. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1410. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1411. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1412. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1413. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1414. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1415. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1416. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1417. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1418. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1419. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1420. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1421. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1422. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1423. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1424. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1425. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1426. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1427. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1428. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1429. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1430. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1431. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1432. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1433. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1434. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1435. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1436. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1437. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1438. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1439. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1440. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1441. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1442. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1443. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1444. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1445. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1446. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1447. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1448. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1449. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1450. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1451. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1452. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1453. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1454. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1455. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1456. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1457. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1458. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1459. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1460. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1461. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1462. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1463. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1464. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1465. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1466. {numpy-1.9.3/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1467. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1468. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1469. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1470. {numpy-1.9.3/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1471. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1472. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1473. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1474. {numpy-1.9.3/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1475. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1476. {numpy-1.9.3/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1477. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1478. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1479. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1480. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1481. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1482. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1483. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1484. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1485. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1486. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1487. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1488. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1489. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1490. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1491. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1492. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1493. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1494. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1495. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1496. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1497. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1498. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1499. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1500. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1501. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1502. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1503. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1504. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1505. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1506. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1507. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1508. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1509. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1510. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1511. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1512. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1513. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1514. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1515. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1516. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1517. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1518. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1519. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1520. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1521. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1522. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1523. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1524. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1525. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1526. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1527. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1528. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1529. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1530. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1531. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1532. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1533. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1534. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1535. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1536. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1537. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1538. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1539. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1540. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1541. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1542. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1543. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1544. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1545. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1546. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1547. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1548. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1549. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1550. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1551. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1552. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1553. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1554. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1555. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1556. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1557. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1558. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1559. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1560. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1561. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1562. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1563. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1564. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1565. {numpy-1.9.3 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1566. {numpy-1.9.3 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1567. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1568. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1569. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1570. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1571. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1572. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1573. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1574. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1575. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1576. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1577. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1578. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1579. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1580. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1581. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1582. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1583. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1584. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1585. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1586. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1587. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1588. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1589. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1590. {numpy-1.9.3 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -1,4200 +0,0 @@
1
- /*
2
- Python Multiarray Module -- A useful collection of functions for creating and
3
- using ndarrays
4
-
5
- Original file
6
- Copyright (c) 1995, 1996, 1997 Jim Hugunin, hugunin@mit.edu
7
-
8
- Modified for numpy in 2005
9
-
10
- Travis E. Oliphant
11
- oliphant@ee.byu.edu
12
- Brigham Young University
13
- */
14
-
15
- /* $Id: multiarraymodule.c,v 1.36 2005/09/14 00:14:00 teoliphant Exp $ */
16
-
17
- #define PY_SSIZE_T_CLEAN
18
- #include "Python.h"
19
- #include "structmember.h"
20
-
21
- #define NPY_NO_DEPRECATED_API NPY_API_VERSION
22
- #define _MULTIARRAYMODULE
23
- #include <numpy/npy_common.h>
24
- #include "numpy/arrayobject.h"
25
- #include "numpy/arrayscalars.h"
26
-
27
- #include "numpy/npy_math.h"
28
-
29
- #include "npy_config.h"
30
-
31
- #include "npy_pycompat.h"
32
-
33
- NPY_NO_EXPORT int NPY_NUMUSERTYPES = 0;
34
-
35
- /* Internal APIs */
36
- #include "arraytypes.h"
37
- #include "arrayobject.h"
38
- #include "hashdescr.h"
39
- #include "descriptor.h"
40
- #include "calculation.h"
41
- #include "number.h"
42
- #include "scalartypes.h"
43
- #include "numpymemoryview.h"
44
- #include "convert_datatype.h"
45
- #include "conversion_utils.h"
46
- #include "nditer_pywrap.h"
47
- #include "methods.h"
48
- #include "_datetime.h"
49
- #include "datetime_strings.h"
50
- #include "datetime_busday.h"
51
- #include "datetime_busdaycal.h"
52
- #include "item_selection.h"
53
- #include "shape.h"
54
- #include "ctors.h"
55
- #include "array_assign.h"
56
- #include "common.h"
57
- #include "ufunc_override.h"
58
- #include "scalarmathmodule.h" /* for npy_mul_with_overflow_intp */
59
-
60
- /* Only here for API compatibility */
61
- NPY_NO_EXPORT PyTypeObject PyBigArray_Type;
62
-
63
- /*NUMPY_API
64
- * Get Priority from object
65
- */
66
- NPY_NO_EXPORT double
67
- PyArray_GetPriority(PyObject *obj, double default_)
68
- {
69
- PyObject *ret;
70
- double priority = NPY_PRIORITY;
71
-
72
- if (PyArray_CheckExact(obj))
73
- return priority;
74
-
75
- ret = PyArray_GetAttrString_SuppressException(obj, "__array_priority__");
76
- if (ret == NULL) {
77
- return default_;
78
- }
79
-
80
- priority = PyFloat_AsDouble(ret);
81
- Py_DECREF(ret);
82
- return priority;
83
- }
84
-
85
- /*NUMPY_API
86
- * Multiply a List of ints
87
- */
88
- NPY_NO_EXPORT int
89
- PyArray_MultiplyIntList(int *l1, int n)
90
- {
91
- int s = 1;
92
-
93
- while (n--) {
94
- s *= (*l1++);
95
- }
96
- return s;
97
- }
98
-
99
- /*NUMPY_API
100
- * Multiply a List
101
- */
102
- NPY_NO_EXPORT npy_intp
103
- PyArray_MultiplyList(npy_intp *l1, int n)
104
- {
105
- npy_intp s = 1;
106
-
107
- while (n--) {
108
- s *= (*l1++);
109
- }
110
- return s;
111
- }
112
-
113
- /*NUMPY_API
114
- * Multiply a List of Non-negative numbers with over-flow detection.
115
- */
116
- NPY_NO_EXPORT npy_intp
117
- PyArray_OverflowMultiplyList(npy_intp *l1, int n)
118
- {
119
- npy_intp prod = 1;
120
- int i;
121
-
122
- for (i = 0; i < n; i++) {
123
- npy_intp dim = l1[i];
124
-
125
- if (dim == 0) {
126
- return 0;
127
- }
128
- if (npy_mul_with_overflow_intp(&prod, prod, dim)) {
129
- return -1;
130
- }
131
- }
132
- return prod;
133
- }
134
-
135
- /*NUMPY_API
136
- * Produce a pointer into array
137
- */
138
- NPY_NO_EXPORT void *
139
- PyArray_GetPtr(PyArrayObject *obj, npy_intp* ind)
140
- {
141
- int n = PyArray_NDIM(obj);
142
- npy_intp *strides = PyArray_STRIDES(obj);
143
- char *dptr = PyArray_DATA(obj);
144
-
145
- while (n--) {
146
- dptr += (*strides++) * (*ind++);
147
- }
148
- return (void *)dptr;
149
- }
150
-
151
- /*NUMPY_API
152
- * Compare Lists
153
- */
154
- NPY_NO_EXPORT int
155
- PyArray_CompareLists(npy_intp *l1, npy_intp *l2, int n)
156
- {
157
- int i;
158
-
159
- for (i = 0; i < n; i++) {
160
- if (l1[i] != l2[i]) {
161
- return 0;
162
- }
163
- }
164
- return 1;
165
- }
166
-
167
- /*
168
- * simulates a C-style 1-3 dimensional array which can be accesed using
169
- * ptr[i] or ptr[i][j] or ptr[i][j][k] -- requires pointer allocation
170
- * for 2-d and 3-d.
171
- *
172
- * For 2-d and up, ptr is NOT equivalent to a statically defined
173
- * 2-d or 3-d array. In particular, it cannot be passed into a
174
- * function that requires a true pointer to a fixed-size array.
175
- */
176
-
177
- /*NUMPY_API
178
- * Simulate a C-array
179
- * steals a reference to typedescr -- can be NULL
180
- */
181
- NPY_NO_EXPORT int
182
- PyArray_AsCArray(PyObject **op, void *ptr, npy_intp *dims, int nd,
183
- PyArray_Descr* typedescr)
184
- {
185
- PyArrayObject *ap;
186
- npy_intp n, m, i, j;
187
- char **ptr2;
188
- char ***ptr3;
189
-
190
- if ((nd < 1) || (nd > 3)) {
191
- PyErr_SetString(PyExc_ValueError,
192
- "C arrays of only 1-3 dimensions available");
193
- Py_XDECREF(typedescr);
194
- return -1;
195
- }
196
- if ((ap = (PyArrayObject*)PyArray_FromAny(*op, typedescr, nd, nd,
197
- NPY_ARRAY_CARRAY, NULL)) == NULL) {
198
- return -1;
199
- }
200
- switch(nd) {
201
- case 1:
202
- *((char **)ptr) = PyArray_DATA(ap);
203
- break;
204
- case 2:
205
- n = PyArray_DIMS(ap)[0];
206
- ptr2 = (char **)PyArray_malloc(n * sizeof(char *));
207
- if (!ptr2) {
208
- goto fail;
209
- }
210
- for (i = 0; i < n; i++) {
211
- ptr2[i] = PyArray_BYTES(ap) + i*PyArray_STRIDES(ap)[0];
212
- }
213
- *((char ***)ptr) = ptr2;
214
- break;
215
- case 3:
216
- n = PyArray_DIMS(ap)[0];
217
- m = PyArray_DIMS(ap)[1];
218
- ptr3 = (char ***)PyArray_malloc(n*(m+1) * sizeof(char *));
219
- if (!ptr3) {
220
- goto fail;
221
- }
222
- for (i = 0; i < n; i++) {
223
- ptr3[i] = (char **) &ptr3[n + m * i];
224
- for (j = 0; j < m; j++) {
225
- ptr3[i][j] = PyArray_BYTES(ap) + i*PyArray_STRIDES(ap)[0] + j*PyArray_STRIDES(ap)[1];
226
- }
227
- }
228
- *((char ****)ptr) = ptr3;
229
- }
230
- memcpy(dims, PyArray_DIMS(ap), nd*sizeof(npy_intp));
231
- *op = (PyObject *)ap;
232
- return 0;
233
-
234
- fail:
235
- PyErr_SetString(PyExc_MemoryError, "no memory");
236
- return -1;
237
- }
238
-
239
- /* Deprecated --- Use PyArray_AsCArray instead */
240
-
241
- /*NUMPY_API
242
- * Convert to a 1D C-array
243
- */
244
- NPY_NO_EXPORT int
245
- PyArray_As1D(PyObject **op, char **ptr, int *d1, int typecode)
246
- {
247
- npy_intp newd1;
248
- PyArray_Descr *descr;
249
- char msg[] = "PyArray_As1D: use PyArray_AsCArray.";
250
-
251
- if (DEPRECATE(msg) < 0) {
252
- return -1;
253
- }
254
- descr = PyArray_DescrFromType(typecode);
255
- if (PyArray_AsCArray(op, (void *)ptr, &newd1, 1, descr) == -1) {
256
- return -1;
257
- }
258
- *d1 = (int) newd1;
259
- return 0;
260
- }
261
-
262
- /*NUMPY_API
263
- * Convert to a 2D C-array
264
- */
265
- NPY_NO_EXPORT int
266
- PyArray_As2D(PyObject **op, char ***ptr, int *d1, int *d2, int typecode)
267
- {
268
- npy_intp newdims[2];
269
- PyArray_Descr *descr;
270
- char msg[] = "PyArray_As1D: use PyArray_AsCArray.";
271
-
272
- if (DEPRECATE(msg) < 0) {
273
- return -1;
274
- }
275
- descr = PyArray_DescrFromType(typecode);
276
- if (PyArray_AsCArray(op, (void *)ptr, newdims, 2, descr) == -1) {
277
- return -1;
278
- }
279
- *d1 = (int ) newdims[0];
280
- *d2 = (int ) newdims[1];
281
- return 0;
282
- }
283
-
284
- /* End Deprecated */
285
-
286
- /*NUMPY_API
287
- * Free pointers created if As2D is called
288
- */
289
- NPY_NO_EXPORT int
290
- PyArray_Free(PyObject *op, void *ptr)
291
- {
292
- PyArrayObject *ap = (PyArrayObject *)op;
293
-
294
- if ((PyArray_NDIM(ap) < 1) || (PyArray_NDIM(ap) > 3)) {
295
- return -1;
296
- }
297
- if (PyArray_NDIM(ap) >= 2) {
298
- PyArray_free(ptr);
299
- }
300
- Py_DECREF(ap);
301
- return 0;
302
- }
303
-
304
-
305
- /*
306
- * Concatenates a list of ndarrays.
307
- */
308
- NPY_NO_EXPORT PyArrayObject *
309
- PyArray_ConcatenateArrays(int narrays, PyArrayObject **arrays, int axis)
310
- {
311
- PyTypeObject *subtype = &PyArray_Type;
312
- double priority = NPY_PRIORITY;
313
- int iarrays, idim, ndim;
314
- npy_intp shape[NPY_MAXDIMS], s, strides[NPY_MAXDIMS];
315
- int strideperm[NPY_MAXDIMS];
316
- PyArray_Descr *dtype = NULL;
317
- PyArrayObject *ret = NULL;
318
- PyArrayObject_fields *sliding_view = NULL;
319
- int orig_axis = axis;
320
-
321
- if (narrays <= 0) {
322
- PyErr_SetString(PyExc_ValueError,
323
- "need at least one array to concatenate");
324
- return NULL;
325
- }
326
-
327
- /* All the arrays must have the same 'ndim' */
328
- ndim = PyArray_NDIM(arrays[0]);
329
-
330
- if (ndim == 0) {
331
- PyErr_SetString(PyExc_ValueError,
332
- "zero-dimensional arrays cannot be concatenated");
333
- return NULL;
334
- }
335
-
336
- /* Handle standard Python negative indexing */
337
- if (axis < 0) {
338
- axis += ndim;
339
- }
340
-
341
- if (ndim == 1 && axis != 0) {
342
- char msg[] = "axis != 0 for ndim == 1; this will raise an error in "
343
- "future versions of numpy";
344
- if (DEPRECATE(msg) < 0) {
345
- return NULL;
346
- }
347
- axis = 0;
348
- }
349
-
350
- if (axis < 0 || axis >= ndim) {
351
- PyErr_Format(PyExc_IndexError,
352
- "axis %d out of bounds [0, %d)", orig_axis, ndim);
353
- return NULL;
354
- }
355
-
356
- /*
357
- * Figure out the final concatenated shape starting from the first
358
- * array's shape.
359
- */
360
- memcpy(shape, PyArray_SHAPE(arrays[0]), ndim * sizeof(shape[0]));
361
- for (iarrays = 1; iarrays < narrays; ++iarrays) {
362
- npy_intp *arr_shape;
363
-
364
- if (PyArray_NDIM(arrays[iarrays]) != ndim) {
365
- PyErr_SetString(PyExc_ValueError,
366
- "all the input arrays must have same "
367
- "number of dimensions");
368
- return NULL;
369
- }
370
- arr_shape = PyArray_SHAPE(arrays[iarrays]);
371
-
372
- for (idim = 0; idim < ndim; ++idim) {
373
- /* Build up the size of the concatenation axis */
374
- if (idim == axis) {
375
- shape[idim] += arr_shape[idim];
376
- }
377
- /* Validate that the rest of the dimensions match */
378
- else if (shape[idim] != arr_shape[idim]) {
379
- PyErr_SetString(PyExc_ValueError,
380
- "all the input array dimensions "
381
- "except for the concatenation axis "
382
- "must match exactly");
383
- return NULL;
384
- }
385
- }
386
- }
387
-
388
- /* Get the priority subtype for the array */
389
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
390
- if (Py_TYPE(arrays[iarrays]) != subtype) {
391
- double pr = PyArray_GetPriority((PyObject *)(arrays[iarrays]), 0.0);
392
- if (pr > priority) {
393
- priority = pr;
394
- subtype = Py_TYPE(arrays[iarrays]);
395
- }
396
- }
397
- }
398
-
399
- /* Get the resulting dtype from combining all the arrays */
400
- dtype = PyArray_ResultType(narrays, arrays, 0, NULL);
401
- if (dtype == NULL) {
402
- return NULL;
403
- }
404
-
405
- /*
406
- * Figure out the permutation to apply to the strides to match
407
- * the memory layout of the input arrays, using ambiguity
408
- * resolution rules matching that of the NpyIter.
409
- */
410
- PyArray_CreateMultiSortedStridePerm(narrays, arrays, ndim, strideperm);
411
- s = dtype->elsize;
412
- for (idim = ndim-1; idim >= 0; --idim) {
413
- int iperm = strideperm[idim];
414
- strides[iperm] = s;
415
- s *= shape[iperm];
416
- }
417
-
418
- /* Allocate the array for the result. This steals the 'dtype' reference. */
419
- ret = (PyArrayObject *)PyArray_NewFromDescr(subtype,
420
- dtype,
421
- ndim,
422
- shape,
423
- strides,
424
- NULL,
425
- 0,
426
- NULL);
427
- if (ret == NULL) {
428
- return NULL;
429
- }
430
-
431
- /*
432
- * Create a view which slides through ret for assigning the
433
- * successive input arrays.
434
- */
435
- sliding_view = (PyArrayObject_fields *)PyArray_View(ret,
436
- NULL, &PyArray_Type);
437
- if (sliding_view == NULL) {
438
- Py_DECREF(ret);
439
- return NULL;
440
- }
441
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
442
- /* Set the dimension to match the input array's */
443
- sliding_view->dimensions[axis] = PyArray_SHAPE(arrays[iarrays])[axis];
444
-
445
- /* Copy the data for this array */
446
- if (PyArray_AssignArray((PyArrayObject *)sliding_view, arrays[iarrays],
447
- NULL, NPY_SAME_KIND_CASTING) < 0) {
448
- Py_DECREF(sliding_view);
449
- Py_DECREF(ret);
450
- return NULL;
451
- }
452
-
453
- /* Slide to the start of the next window */
454
- sliding_view->data += sliding_view->dimensions[axis] *
455
- sliding_view->strides[axis];
456
- }
457
-
458
- Py_DECREF(sliding_view);
459
- return ret;
460
- }
461
-
462
- /*
463
- * Concatenates a list of ndarrays, flattening each in the specified order.
464
- */
465
- NPY_NO_EXPORT PyArrayObject *
466
- PyArray_ConcatenateFlattenedArrays(int narrays, PyArrayObject **arrays,
467
- NPY_ORDER order)
468
- {
469
- PyTypeObject *subtype = &PyArray_Type;
470
- double priority = NPY_PRIORITY;
471
- int iarrays;
472
- npy_intp stride, sizes[NPY_MAXDIMS];
473
- npy_intp shape = 0;
474
- PyArray_Descr *dtype = NULL;
475
- PyArrayObject *ret = NULL;
476
- PyArrayObject_fields *sliding_view = NULL;
477
-
478
- if (narrays <= 0) {
479
- PyErr_SetString(PyExc_ValueError,
480
- "need at least one array to concatenate");
481
- return NULL;
482
- }
483
-
484
- /*
485
- * Figure out the final concatenated shape starting from the first
486
- * array's shape.
487
- */
488
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
489
- shape += sizes[iarrays] = PyArray_SIZE(arrays[iarrays]);
490
- /* Check for overflow */
491
- if (shape < 0) {
492
- PyErr_SetString(PyExc_ValueError,
493
- "total number of elements "
494
- "too large to concatenate");
495
- return NULL;
496
- }
497
- }
498
-
499
- /* Get the priority subtype for the array */
500
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
501
- if (Py_TYPE(arrays[iarrays]) != subtype) {
502
- double pr = PyArray_GetPriority((PyObject *)(arrays[iarrays]), 0.0);
503
- if (pr > priority) {
504
- priority = pr;
505
- subtype = Py_TYPE(arrays[iarrays]);
506
- }
507
- }
508
- }
509
-
510
- /* Get the resulting dtype from combining all the arrays */
511
- dtype = PyArray_ResultType(narrays, arrays, 0, NULL);
512
- if (dtype == NULL) {
513
- return NULL;
514
- }
515
-
516
- stride = dtype->elsize;
517
-
518
- /* Allocate the array for the result. This steals the 'dtype' reference. */
519
- ret = (PyArrayObject *)PyArray_NewFromDescr(subtype,
520
- dtype,
521
- 1,
522
- &shape,
523
- &stride,
524
- NULL,
525
- 0,
526
- NULL);
527
- if (ret == NULL) {
528
- return NULL;
529
- }
530
-
531
- /*
532
- * Create a view which slides through ret for assigning the
533
- * successive input arrays.
534
- */
535
- sliding_view = (PyArrayObject_fields *)PyArray_View(ret,
536
- NULL, &PyArray_Type);
537
- if (sliding_view == NULL) {
538
- Py_DECREF(ret);
539
- return NULL;
540
- }
541
-
542
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
543
- /* Adjust the window dimensions for this array */
544
- sliding_view->dimensions[0] = sizes[iarrays];
545
-
546
- /* Copy the data for this array */
547
- if (PyArray_CopyAsFlat((PyArrayObject *)sliding_view, arrays[iarrays],
548
- order) < 0) {
549
- Py_DECREF(sliding_view);
550
- Py_DECREF(ret);
551
- return NULL;
552
- }
553
-
554
- /* Slide to the start of the next window */
555
- sliding_view->data += sliding_view->strides[0] * sizes[iarrays];
556
- }
557
-
558
- Py_DECREF(sliding_view);
559
- return ret;
560
- }
561
-
562
-
563
- /*NUMPY_API
564
- * Concatenate
565
- *
566
- * Concatenate an arbitrary Python sequence into an array.
567
- * op is a python object supporting the sequence interface.
568
- * Its elements will be concatenated together to form a single
569
- * multidimensional array. If axis is NPY_MAXDIMS or bigger, then
570
- * each sequence object will be flattened before concatenation
571
- */
572
- NPY_NO_EXPORT PyObject *
573
- PyArray_Concatenate(PyObject *op, int axis)
574
- {
575
- int iarrays, narrays;
576
- PyArrayObject **arrays;
577
- PyArrayObject *ret;
578
-
579
- if (!PySequence_Check(op)) {
580
- PyErr_SetString(PyExc_TypeError,
581
- "The first input argument needs to be a sequence");
582
- return NULL;
583
- }
584
-
585
- /* Convert the input list into arrays */
586
- narrays = PySequence_Size(op);
587
- if (narrays < 0) {
588
- return NULL;
589
- }
590
- arrays = PyArray_malloc(narrays * sizeof(arrays[0]));
591
- if (arrays == NULL) {
592
- PyErr_NoMemory();
593
- return NULL;
594
- }
595
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
596
- PyObject *item = PySequence_GetItem(op, iarrays);
597
- if (item == NULL) {
598
- narrays = iarrays;
599
- goto fail;
600
- }
601
- arrays[iarrays] = (PyArrayObject *)PyArray_FromAny(item, NULL,
602
- 0, 0, 0, NULL);
603
- Py_DECREF(item);
604
- if (arrays[iarrays] == NULL) {
605
- narrays = iarrays;
606
- goto fail;
607
- }
608
- }
609
-
610
- if (axis >= NPY_MAXDIMS) {
611
- ret = PyArray_ConcatenateFlattenedArrays(narrays, arrays, NPY_CORDER);
612
- }
613
- else {
614
- ret = PyArray_ConcatenateArrays(narrays, arrays, axis);
615
- }
616
-
617
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
618
- Py_DECREF(arrays[iarrays]);
619
- }
620
- PyArray_free(arrays);
621
-
622
- return (PyObject *)ret;
623
-
624
- fail:
625
- /* 'narrays' was set to how far we got in the conversion */
626
- for (iarrays = 0; iarrays < narrays; ++iarrays) {
627
- Py_DECREF(arrays[iarrays]);
628
- }
629
- PyArray_free(arrays);
630
-
631
- return NULL;
632
- }
633
-
634
- static int
635
- _signbit_set(PyArrayObject *arr)
636
- {
637
- static char bitmask = (char) 0x80;
638
- char *ptr; /* points to the npy_byte to test */
639
- char byteorder;
640
- int elsize;
641
-
642
- elsize = PyArray_DESCR(arr)->elsize;
643
- byteorder = PyArray_DESCR(arr)->byteorder;
644
- ptr = PyArray_DATA(arr);
645
- if (elsize > 1 &&
646
- (byteorder == NPY_LITTLE ||
647
- (byteorder == NPY_NATIVE &&
648
- PyArray_ISNBO(NPY_LITTLE)))) {
649
- ptr += elsize - 1;
650
- }
651
- return ((*ptr & bitmask) != 0);
652
- }
653
-
654
-
655
- /*NUMPY_API
656
- * ScalarKind
657
- *
658
- * Returns the scalar kind of a type number, with an
659
- * optional tweak based on the scalar value itself.
660
- * If no scalar is provided, it returns INTPOS_SCALAR
661
- * for both signed and unsigned integers, otherwise
662
- * it checks the sign of any signed integer to choose
663
- * INTNEG_SCALAR when appropriate.
664
- */
665
- NPY_NO_EXPORT NPY_SCALARKIND
666
- PyArray_ScalarKind(int typenum, PyArrayObject **arr)
667
- {
668
- NPY_SCALARKIND ret = NPY_NOSCALAR;
669
-
670
- if ((unsigned int)typenum < NPY_NTYPES) {
671
- ret = _npy_scalar_kinds_table[typenum];
672
- /* Signed integer types are INTNEG in the table */
673
- if (ret == NPY_INTNEG_SCALAR) {
674
- if (!arr || !_signbit_set(*arr)) {
675
- ret = NPY_INTPOS_SCALAR;
676
- }
677
- }
678
- } else if (PyTypeNum_ISUSERDEF(typenum)) {
679
- PyArray_Descr* descr = PyArray_DescrFromType(typenum);
680
-
681
- if (descr->f->scalarkind) {
682
- ret = descr->f->scalarkind((arr ? *arr : NULL));
683
- }
684
- Py_DECREF(descr);
685
- }
686
-
687
- return ret;
688
- }
689
-
690
- /*NUMPY_API
691
- *
692
- * Determines whether the data type 'thistype', with
693
- * scalar kind 'scalar', can be coerced into 'neededtype'.
694
- */
695
- NPY_NO_EXPORT int
696
- PyArray_CanCoerceScalar(int thistype, int neededtype,
697
- NPY_SCALARKIND scalar)
698
- {
699
- PyArray_Descr* from;
700
- int *castlist;
701
-
702
- /* If 'thistype' is not a scalar, it must be safely castable */
703
- if (scalar == NPY_NOSCALAR) {
704
- return PyArray_CanCastSafely(thistype, neededtype);
705
- }
706
- if ((unsigned int)neededtype < NPY_NTYPES) {
707
- NPY_SCALARKIND neededscalar;
708
-
709
- if (scalar == NPY_OBJECT_SCALAR) {
710
- return PyArray_CanCastSafely(thistype, neededtype);
711
- }
712
-
713
- /*
714
- * The lookup table gives us exactly what we need for
715
- * this comparison, which PyArray_ScalarKind would not.
716
- *
717
- * The rule is that positive scalars can be coerced
718
- * to a signed ints, but negative scalars cannot be coerced
719
- * to unsigned ints.
720
- * _npy_scalar_kinds_table[int]==NEGINT > POSINT,
721
- * so 1 is returned, but
722
- * _npy_scalar_kinds_table[uint]==POSINT < NEGINT,
723
- * so 0 is returned, as required.
724
- *
725
- */
726
- neededscalar = _npy_scalar_kinds_table[neededtype];
727
- if (neededscalar >= scalar) {
728
- return 1;
729
- }
730
- if (!PyTypeNum_ISUSERDEF(thistype)) {
731
- return 0;
732
- }
733
- }
734
-
735
- from = PyArray_DescrFromType(thistype);
736
- if (from->f->cancastscalarkindto
737
- && (castlist = from->f->cancastscalarkindto[scalar])) {
738
- while (*castlist != NPY_NOTYPE) {
739
- if (*castlist++ == neededtype) {
740
- Py_DECREF(from);
741
- return 1;
742
- }
743
- }
744
- }
745
- Py_DECREF(from);
746
-
747
- return 0;
748
- }
749
-
750
- /*
751
- * Make a new empty array, of the passed size, of a type that takes the
752
- * priority of ap1 and ap2 into account.
753
- */
754
- static PyArrayObject *
755
- new_array_for_sum(PyArrayObject *ap1, PyArrayObject *ap2, PyArrayObject* out,
756
- int nd, npy_intp dimensions[], int typenum)
757
- {
758
- PyArrayObject *ret;
759
- PyTypeObject *subtype;
760
- double prior1, prior2;
761
- /*
762
- * Need to choose an output array that can hold a sum
763
- * -- use priority to determine which subtype.
764
- */
765
- if (Py_TYPE(ap2) != Py_TYPE(ap1)) {
766
- prior2 = PyArray_GetPriority((PyObject *)ap2, 0.0);
767
- prior1 = PyArray_GetPriority((PyObject *)ap1, 0.0);
768
- subtype = (prior2 > prior1 ? Py_TYPE(ap2) : Py_TYPE(ap1));
769
- }
770
- else {
771
- prior1 = prior2 = 0.0;
772
- subtype = Py_TYPE(ap1);
773
- }
774
- if (out) {
775
- int d;
776
- /* verify that out is usable */
777
- if (Py_TYPE(out) != subtype ||
778
- PyArray_NDIM(out) != nd ||
779
- PyArray_TYPE(out) != typenum ||
780
- !PyArray_ISCARRAY(out)) {
781
- PyErr_SetString(PyExc_ValueError,
782
- "output array is not acceptable "
783
- "(must have the right type, nr dimensions, and be a C-Array)");
784
- return 0;
785
- }
786
- for (d = 0; d < nd; ++d) {
787
- if (dimensions[d] != PyArray_DIM(out, d)) {
788
- PyErr_SetString(PyExc_ValueError,
789
- "output array has wrong dimensions");
790
- return 0;
791
- }
792
- }
793
- Py_INCREF(out);
794
- return out;
795
- }
796
-
797
- ret = (PyArrayObject *)PyArray_New(subtype, nd, dimensions,
798
- typenum, NULL, NULL, 0, 0,
799
- (PyObject *)
800
- (prior2 > prior1 ? ap2 : ap1));
801
- return ret;
802
- }
803
-
804
- /* Could perhaps be redone to not make contiguous arrays */
805
-
806
- /*NUMPY_API
807
- * Numeric.innerproduct(a,v)
808
- */
809
- NPY_NO_EXPORT PyObject *
810
- PyArray_InnerProduct(PyObject *op1, PyObject *op2)
811
- {
812
- PyArrayObject *ap1, *ap2, *ret = NULL;
813
- PyArrayIterObject *it1, *it2;
814
- npy_intp i, j, l;
815
- int typenum, nd, axis;
816
- npy_intp is1, is2, os;
817
- char *op;
818
- npy_intp dimensions[NPY_MAXDIMS];
819
- PyArray_DotFunc *dot;
820
- PyArray_Descr *typec;
821
- NPY_BEGIN_THREADS_DEF;
822
-
823
- typenum = PyArray_ObjectType(op1, 0);
824
- typenum = PyArray_ObjectType(op2, typenum);
825
-
826
- typec = PyArray_DescrFromType(typenum);
827
- if (typec == NULL) {
828
- return NULL;
829
- }
830
- Py_INCREF(typec);
831
- ap1 = (PyArrayObject *)PyArray_FromAny(op1, typec, 0, 0,
832
- NPY_ARRAY_ALIGNED, NULL);
833
- if (ap1 == NULL) {
834
- Py_DECREF(typec);
835
- return NULL;
836
- }
837
- ap2 = (PyArrayObject *)PyArray_FromAny(op2, typec, 0, 0,
838
- NPY_ARRAY_ALIGNED, NULL);
839
- if (ap2 == NULL) {
840
- goto fail;
841
- }
842
- if (PyArray_NDIM(ap1) == 0 || PyArray_NDIM(ap2) == 0) {
843
- ret = (PyArray_NDIM(ap1) == 0 ? ap1 : ap2);
844
- ret = (PyArrayObject *)Py_TYPE(ret)->tp_as_number->nb_multiply(
845
- (PyObject *)ap1, (PyObject *)ap2);
846
- Py_DECREF(ap1);
847
- Py_DECREF(ap2);
848
- return (PyObject *)ret;
849
- }
850
-
851
- l = PyArray_DIMS(ap1)[PyArray_NDIM(ap1) - 1];
852
- if (PyArray_DIMS(ap2)[PyArray_NDIM(ap2) - 1] != l) {
853
- not_aligned(ap1, PyArray_NDIM(ap1) - 1, ap2, PyArray_NDIM(ap2) - 1);
854
- goto fail;
855
- }
856
-
857
- nd = PyArray_NDIM(ap1) + PyArray_NDIM(ap2) - 2;
858
- j = 0;
859
- for (i = 0; i < PyArray_NDIM(ap1) - 1; i++) {
860
- dimensions[j++] = PyArray_DIMS(ap1)[i];
861
- }
862
- for (i = 0; i < PyArray_NDIM(ap2) - 1; i++) {
863
- dimensions[j++] = PyArray_DIMS(ap2)[i];
864
- }
865
-
866
- /*
867
- * Need to choose an output array that can hold a sum
868
- * -- use priority to determine which subtype.
869
- */
870
- ret = new_array_for_sum(ap1, ap2, NULL, nd, dimensions, typenum);
871
- if (ret == NULL) {
872
- goto fail;
873
- }
874
- /* Ensure that multiarray.inner(<Nx0>,<Mx0>) -> zeros((N,M)) */
875
- if (PyArray_SIZE(ap1) == 0 && PyArray_SIZE(ap2) == 0) {
876
- memset(PyArray_DATA(ret), 0, PyArray_NBYTES(ret));
877
- }
878
-
879
- dot = (PyArray_DESCR(ret)->f->dotfunc);
880
- if (dot == NULL) {
881
- PyErr_SetString(PyExc_ValueError,
882
- "dot not available for this type");
883
- goto fail;
884
- }
885
- is1 = PyArray_STRIDES(ap1)[PyArray_NDIM(ap1) - 1];
886
- is2 = PyArray_STRIDES(ap2)[PyArray_NDIM(ap2) - 1];
887
- op = PyArray_DATA(ret); os = PyArray_DESCR(ret)->elsize;
888
- axis = PyArray_NDIM(ap1) - 1;
889
- it1 = (PyArrayIterObject *) PyArray_IterAllButAxis((PyObject *)ap1, &axis);
890
- axis = PyArray_NDIM(ap2) - 1;
891
- it2 = (PyArrayIterObject *) PyArray_IterAllButAxis((PyObject *)ap2, &axis);
892
- NPY_BEGIN_THREADS_DESCR(PyArray_DESCR(ap2));
893
- while (it1->index < it1->size) {
894
- while (it2->index < it2->size) {
895
- dot(it1->dataptr, is1, it2->dataptr, is2, op, l, ret);
896
- op += os;
897
- PyArray_ITER_NEXT(it2);
898
- }
899
- PyArray_ITER_NEXT(it1);
900
- PyArray_ITER_RESET(it2);
901
- }
902
- NPY_END_THREADS_DESCR(PyArray_DESCR(ap2));
903
- Py_DECREF(it1);
904
- Py_DECREF(it2);
905
- if (PyErr_Occurred()) {
906
- goto fail;
907
- }
908
- Py_DECREF(ap1);
909
- Py_DECREF(ap2);
910
- return (PyObject *)ret;
911
-
912
- fail:
913
- Py_XDECREF(ap1);
914
- Py_XDECREF(ap2);
915
- Py_XDECREF(ret);
916
- return NULL;
917
- }
918
-
919
- /*NUMPY_API
920
- * Numeric.matrixproduct(a,v,out)
921
- * just like inner product but does the swapaxes stuff on the fly
922
- */
923
- NPY_NO_EXPORT PyObject *
924
- PyArray_MatrixProduct2(PyObject *op1, PyObject *op2, PyArrayObject* out)
925
- {
926
- PyArrayObject *ap1, *ap2, *ret = NULL;
927
- PyArrayIterObject *it1, *it2;
928
- npy_intp i, j, l;
929
- int typenum, nd, axis, matchDim;
930
- npy_intp is1, is2, os;
931
- char *op;
932
- npy_intp dimensions[NPY_MAXDIMS];
933
- PyArray_DotFunc *dot;
934
- PyArray_Descr *typec = NULL;
935
- NPY_BEGIN_THREADS_DEF;
936
-
937
- typenum = PyArray_ObjectType(op1, 0);
938
- typenum = PyArray_ObjectType(op2, typenum);
939
- typec = PyArray_DescrFromType(typenum);
940
- if (typec == NULL) {
941
- PyErr_SetString(PyExc_ValueError, "Cannot find a common data type.");
942
- return NULL;
943
- }
944
-
945
- Py_INCREF(typec);
946
- ap1 = (PyArrayObject *)PyArray_FromAny(op1, typec, 0, 0,
947
- NPY_ARRAY_ALIGNED, NULL);
948
- if (ap1 == NULL) {
949
- Py_DECREF(typec);
950
- return NULL;
951
- }
952
- ap2 = (PyArrayObject *)PyArray_FromAny(op2, typec, 0, 0,
953
- NPY_ARRAY_ALIGNED, NULL);
954
- if (ap2 == NULL) {
955
- goto fail;
956
- }
957
- if (PyArray_NDIM(ap1) == 0 || PyArray_NDIM(ap2) == 0) {
958
- ret = (PyArray_NDIM(ap1) == 0 ? ap1 : ap2);
959
- ret = (PyArrayObject *)Py_TYPE(ret)->tp_as_number->nb_multiply(
960
- (PyObject *)ap1, (PyObject *)ap2);
961
- Py_DECREF(ap1);
962
- Py_DECREF(ap2);
963
- return (PyObject *)ret;
964
- }
965
- l = PyArray_DIMS(ap1)[PyArray_NDIM(ap1) - 1];
966
- if (PyArray_NDIM(ap2) > 1) {
967
- matchDim = PyArray_NDIM(ap2) - 2;
968
- }
969
- else {
970
- matchDim = 0;
971
- }
972
- if (PyArray_DIMS(ap2)[matchDim] != l) {
973
- not_aligned(ap1, PyArray_NDIM(ap1) - 1, ap2, matchDim);
974
- goto fail;
975
- }
976
- nd = PyArray_NDIM(ap1) + PyArray_NDIM(ap2) - 2;
977
- if (nd > NPY_MAXDIMS) {
978
- PyErr_SetString(PyExc_ValueError, "dot: too many dimensions in result");
979
- goto fail;
980
- }
981
- j = 0;
982
- for (i = 0; i < PyArray_NDIM(ap1) - 1; i++) {
983
- dimensions[j++] = PyArray_DIMS(ap1)[i];
984
- }
985
- for (i = 0; i < PyArray_NDIM(ap2) - 2; i++) {
986
- dimensions[j++] = PyArray_DIMS(ap2)[i];
987
- }
988
- if(PyArray_NDIM(ap2) > 1) {
989
- dimensions[j++] = PyArray_DIMS(ap2)[PyArray_NDIM(ap2)-1];
990
- }
991
- /*
992
- fprintf(stderr, "nd=%d dimensions=", nd);
993
- for(i=0; i<j; i++)
994
- fprintf(stderr, "%d ", dimensions[i]);
995
- fprintf(stderr, "\n");
996
- */
997
-
998
- is1 = PyArray_STRIDES(ap1)[PyArray_NDIM(ap1)-1]; is2 = PyArray_STRIDES(ap2)[matchDim];
999
- /* Choose which subtype to return */
1000
- ret = new_array_for_sum(ap1, ap2, out, nd, dimensions, typenum);
1001
- if (ret == NULL) {
1002
- goto fail;
1003
- }
1004
- /* Ensure that multiarray.dot(<Nx0>,<0xM>) -> zeros((N,M)) */
1005
- if (PyArray_SIZE(ap1) == 0 && PyArray_SIZE(ap2) == 0) {
1006
- memset(PyArray_DATA(ret), 0, PyArray_NBYTES(ret));
1007
- }
1008
-
1009
- dot = PyArray_DESCR(ret)->f->dotfunc;
1010
- if (dot == NULL) {
1011
- PyErr_SetString(PyExc_ValueError,
1012
- "dot not available for this type");
1013
- goto fail;
1014
- }
1015
-
1016
- op = PyArray_DATA(ret); os = PyArray_DESCR(ret)->elsize;
1017
- axis = PyArray_NDIM(ap1)-1;
1018
- it1 = (PyArrayIterObject *)
1019
- PyArray_IterAllButAxis((PyObject *)ap1, &axis);
1020
- if (it1 == NULL) {
1021
- goto fail;
1022
- }
1023
- it2 = (PyArrayIterObject *)
1024
- PyArray_IterAllButAxis((PyObject *)ap2, &matchDim);
1025
- if (it2 == NULL) {
1026
- Py_DECREF(it1);
1027
- goto fail;
1028
- }
1029
- NPY_BEGIN_THREADS_DESCR(PyArray_DESCR(ap2));
1030
- while (it1->index < it1->size) {
1031
- while (it2->index < it2->size) {
1032
- dot(it1->dataptr, is1, it2->dataptr, is2, op, l, ret);
1033
- op += os;
1034
- PyArray_ITER_NEXT(it2);
1035
- }
1036
- PyArray_ITER_NEXT(it1);
1037
- PyArray_ITER_RESET(it2);
1038
- }
1039
- NPY_END_THREADS_DESCR(PyArray_DESCR(ap2));
1040
- Py_DECREF(it1);
1041
- Py_DECREF(it2);
1042
- if (PyErr_Occurred()) {
1043
- /* only for OBJECT arrays */
1044
- goto fail;
1045
- }
1046
- Py_DECREF(ap1);
1047
- Py_DECREF(ap2);
1048
- return (PyObject *)ret;
1049
-
1050
- fail:
1051
- Py_XDECREF(ap1);
1052
- Py_XDECREF(ap2);
1053
- Py_XDECREF(ret);
1054
- return NULL;
1055
- }
1056
-
1057
- /*NUMPY_API
1058
- *Numeric.matrixproduct(a,v)
1059
- * just like inner product but does the swapaxes stuff on the fly
1060
- */
1061
- NPY_NO_EXPORT PyObject *
1062
- PyArray_MatrixProduct(PyObject *op1, PyObject *op2)
1063
- {
1064
- return PyArray_MatrixProduct2(op1, op2, NULL);
1065
- }
1066
-
1067
- /*NUMPY_API
1068
- * Copy and Transpose
1069
- *
1070
- * Could deprecate this function, as there isn't a speed benefit over
1071
- * calling Transpose and then Copy.
1072
- */
1073
- NPY_NO_EXPORT PyObject *
1074
- PyArray_CopyAndTranspose(PyObject *op)
1075
- {
1076
- PyArrayObject *arr, *tmp, *ret;
1077
- int i;
1078
- npy_intp new_axes_values[NPY_MAXDIMS];
1079
- PyArray_Dims new_axes;
1080
-
1081
- /* Make sure we have an array */
1082
- arr = (PyArrayObject *)PyArray_FromAny(op, NULL, 0, 0, 0, NULL);
1083
- if (arr == NULL) {
1084
- return NULL;
1085
- }
1086
-
1087
- if (PyArray_NDIM(arr) > 1) {
1088
- /* Set up the transpose operation */
1089
- new_axes.len = PyArray_NDIM(arr);
1090
- for (i = 0; i < new_axes.len; ++i) {
1091
- new_axes_values[i] = new_axes.len - i - 1;
1092
- }
1093
- new_axes.ptr = new_axes_values;
1094
-
1095
- /* Do the transpose (always returns a view) */
1096
- tmp = (PyArrayObject *)PyArray_Transpose(arr, &new_axes);
1097
- if (tmp == NULL) {
1098
- Py_DECREF(arr);
1099
- return NULL;
1100
- }
1101
- }
1102
- else {
1103
- tmp = arr;
1104
- arr = NULL;
1105
- }
1106
-
1107
- /* TODO: Change this to NPY_KEEPORDER for NumPy 2.0 */
1108
- ret = (PyArrayObject *)PyArray_NewCopy(tmp, NPY_CORDER);
1109
-
1110
- Py_XDECREF(arr);
1111
- Py_DECREF(tmp);
1112
- return (PyObject *)ret;
1113
- }
1114
-
1115
- /*
1116
- * Implementation which is common between PyArray_Correlate
1117
- * and PyArray_Correlate2.
1118
- *
1119
- * inverted is set to 1 if computed correlate(ap2, ap1), 0 otherwise
1120
- */
1121
- static PyArrayObject*
1122
- _pyarray_correlate(PyArrayObject *ap1, PyArrayObject *ap2, int typenum,
1123
- int mode, int *inverted)
1124
- {
1125
- PyArrayObject *ret;
1126
- npy_intp length;
1127
- npy_intp i, n1, n2, n, n_left, n_right;
1128
- npy_intp is1, is2, os;
1129
- char *ip1, *ip2, *op;
1130
- PyArray_DotFunc *dot;
1131
-
1132
- NPY_BEGIN_THREADS_DEF;
1133
-
1134
- n1 = PyArray_DIMS(ap1)[0];
1135
- n2 = PyArray_DIMS(ap2)[0];
1136
- if (n1 < n2) {
1137
- ret = ap1;
1138
- ap1 = ap2;
1139
- ap2 = ret;
1140
- ret = NULL;
1141
- i = n1;
1142
- n1 = n2;
1143
- n2 = i;
1144
- *inverted = 1;
1145
- } else {
1146
- *inverted = 0;
1147
- }
1148
-
1149
- length = n1;
1150
- n = n2;
1151
- switch(mode) {
1152
- case 0:
1153
- length = length - n + 1;
1154
- n_left = n_right = 0;
1155
- break;
1156
- case 1:
1157
- n_left = (npy_intp)(n/2);
1158
- n_right = n - n_left - 1;
1159
- break;
1160
- case 2:
1161
- n_right = n - 1;
1162
- n_left = n - 1;
1163
- length = length + n - 1;
1164
- break;
1165
- default:
1166
- PyErr_SetString(PyExc_ValueError, "mode must be 0, 1, or 2");
1167
- return NULL;
1168
- }
1169
-
1170
- /*
1171
- * Need to choose an output array that can hold a sum
1172
- * -- use priority to determine which subtype.
1173
- */
1174
- ret = new_array_for_sum(ap1, ap2, NULL, 1, &length, typenum);
1175
- if (ret == NULL) {
1176
- return NULL;
1177
- }
1178
- dot = PyArray_DESCR(ret)->f->dotfunc;
1179
- if (dot == NULL) {
1180
- PyErr_SetString(PyExc_ValueError,
1181
- "function not available for this data type");
1182
- goto clean_ret;
1183
- }
1184
-
1185
- NPY_BEGIN_THREADS_DESCR(PyArray_DESCR(ret));
1186
- is1 = PyArray_STRIDES(ap1)[0];
1187
- is2 = PyArray_STRIDES(ap2)[0];
1188
- op = PyArray_DATA(ret);
1189
- os = PyArray_DESCR(ret)->elsize;
1190
- ip1 = PyArray_DATA(ap1);
1191
- ip2 = PyArray_BYTES(ap2) + n_left*is2;
1192
- n = n - n_left;
1193
- for (i = 0; i < n_left; i++) {
1194
- dot(ip1, is1, ip2, is2, op, n, ret);
1195
- n++;
1196
- ip2 -= is2;
1197
- op += os;
1198
- }
1199
- for (i = 0; i < (n1 - n2 + 1); i++) {
1200
- dot(ip1, is1, ip2, is2, op, n, ret);
1201
- ip1 += is1;
1202
- op += os;
1203
- }
1204
- for (i = 0; i < n_right; i++) {
1205
- n--;
1206
- dot(ip1, is1, ip2, is2, op, n, ret);
1207
- ip1 += is1;
1208
- op += os;
1209
- }
1210
-
1211
- NPY_END_THREADS_DESCR(PyArray_DESCR(ret));
1212
- if (PyErr_Occurred()) {
1213
- goto clean_ret;
1214
- }
1215
-
1216
- return ret;
1217
-
1218
- clean_ret:
1219
- Py_DECREF(ret);
1220
- return NULL;
1221
- }
1222
-
1223
- /*
1224
- * Revert a one dimensional array in-place
1225
- *
1226
- * Return 0 on success, other value on failure
1227
- */
1228
- static int
1229
- _pyarray_revert(PyArrayObject *ret)
1230
- {
1231
- npy_intp length;
1232
- npy_intp i;
1233
- PyArray_CopySwapFunc *copyswap;
1234
- char *tmp = NULL, *sw1, *sw2;
1235
- npy_intp os;
1236
- char *op;
1237
-
1238
- length = PyArray_DIMS(ret)[0];
1239
- copyswap = PyArray_DESCR(ret)->f->copyswap;
1240
-
1241
- tmp = PyArray_malloc(PyArray_DESCR(ret)->elsize);
1242
- if (tmp == NULL) {
1243
- return -1;
1244
- }
1245
-
1246
- os = PyArray_DESCR(ret)->elsize;
1247
- op = PyArray_DATA(ret);
1248
- sw1 = op;
1249
- sw2 = op + (length - 1) * os;
1250
- if (PyArray_ISFLEXIBLE(ret) || PyArray_ISOBJECT(ret)) {
1251
- for(i = 0; i < length/2; ++i) {
1252
- memmove(tmp, sw1, os);
1253
- copyswap(tmp, NULL, 0, NULL);
1254
- memmove(sw1, sw2, os);
1255
- copyswap(sw1, NULL, 0, NULL);
1256
- memmove(sw2, tmp, os);
1257
- copyswap(sw2, NULL, 0, NULL);
1258
- sw1 += os;
1259
- sw2 -= os;
1260
- }
1261
- } else {
1262
- for(i = 0; i < length/2; ++i) {
1263
- memcpy(tmp, sw1, os);
1264
- memcpy(sw1, sw2, os);
1265
- memcpy(sw2, tmp, os);
1266
- sw1 += os;
1267
- sw2 -= os;
1268
- }
1269
- }
1270
-
1271
- PyArray_free(tmp);
1272
- return 0;
1273
- }
1274
-
1275
- /*NUMPY_API
1276
- * correlate(a1,a2,mode)
1277
- *
1278
- * This function computes the usual correlation (correlate(a1, a2) !=
1279
- * correlate(a2, a1), and conjugate the second argument for complex inputs
1280
- */
1281
- NPY_NO_EXPORT PyObject *
1282
- PyArray_Correlate2(PyObject *op1, PyObject *op2, int mode)
1283
- {
1284
- PyArrayObject *ap1, *ap2, *ret = NULL;
1285
- int typenum;
1286
- PyArray_Descr *typec;
1287
- int inverted;
1288
- int st;
1289
-
1290
- typenum = PyArray_ObjectType(op1, 0);
1291
- typenum = PyArray_ObjectType(op2, typenum);
1292
-
1293
- typec = PyArray_DescrFromType(typenum);
1294
- Py_INCREF(typec);
1295
- ap1 = (PyArrayObject *)PyArray_FromAny(op1, typec, 1, 1,
1296
- NPY_ARRAY_DEFAULT, NULL);
1297
- if (ap1 == NULL) {
1298
- Py_DECREF(typec);
1299
- return NULL;
1300
- }
1301
- ap2 = (PyArrayObject *)PyArray_FromAny(op2, typec, 1, 1,
1302
- NPY_ARRAY_DEFAULT, NULL);
1303
- if (ap2 == NULL) {
1304
- goto clean_ap1;
1305
- }
1306
-
1307
- if (PyArray_ISCOMPLEX(ap2)) {
1308
- PyArrayObject *cap2;
1309
- cap2 = (PyArrayObject *)PyArray_Conjugate(ap2, NULL);
1310
- if (cap2 == NULL) {
1311
- goto clean_ap2;
1312
- }
1313
- Py_DECREF(ap2);
1314
- ap2 = cap2;
1315
- }
1316
-
1317
- ret = _pyarray_correlate(ap1, ap2, typenum, mode, &inverted);
1318
- if (ret == NULL) {
1319
- goto clean_ap2;
1320
- }
1321
-
1322
- /*
1323
- * If we inverted input orders, we need to reverse the output array (i.e.
1324
- * ret = ret[::-1])
1325
- */
1326
- if (inverted) {
1327
- st = _pyarray_revert(ret);
1328
- if(st) {
1329
- goto clean_ret;
1330
- }
1331
- }
1332
-
1333
- Py_DECREF(ap1);
1334
- Py_DECREF(ap2);
1335
- return (PyObject *)ret;
1336
-
1337
- clean_ret:
1338
- Py_DECREF(ret);
1339
- clean_ap2:
1340
- Py_DECREF(ap2);
1341
- clean_ap1:
1342
- Py_DECREF(ap1);
1343
- return NULL;
1344
- }
1345
-
1346
- /*NUMPY_API
1347
- * Numeric.correlate(a1,a2,mode)
1348
- */
1349
- NPY_NO_EXPORT PyObject *
1350
- PyArray_Correlate(PyObject *op1, PyObject *op2, int mode)
1351
- {
1352
- PyArrayObject *ap1, *ap2, *ret = NULL;
1353
- int typenum;
1354
- int unused;
1355
- PyArray_Descr *typec;
1356
-
1357
- typenum = PyArray_ObjectType(op1, 0);
1358
- typenum = PyArray_ObjectType(op2, typenum);
1359
-
1360
- typec = PyArray_DescrFromType(typenum);
1361
- Py_INCREF(typec);
1362
- ap1 = (PyArrayObject *)PyArray_FromAny(op1, typec, 1, 1,
1363
- NPY_ARRAY_DEFAULT, NULL);
1364
- if (ap1 == NULL) {
1365
- Py_DECREF(typec);
1366
- return NULL;
1367
- }
1368
- ap2 = (PyArrayObject *)PyArray_FromAny(op2, typec, 1, 1,
1369
- NPY_ARRAY_DEFAULT, NULL);
1370
- if (ap2 == NULL) {
1371
- goto fail;
1372
- }
1373
-
1374
- ret = _pyarray_correlate(ap1, ap2, typenum, mode, &unused);
1375
- if(ret == NULL) {
1376
- goto fail;
1377
- }
1378
- Py_DECREF(ap1);
1379
- Py_DECREF(ap2);
1380
- return (PyObject *)ret;
1381
-
1382
- fail:
1383
- Py_XDECREF(ap1);
1384
- Py_XDECREF(ap2);
1385
- Py_XDECREF(ret);
1386
- return NULL;
1387
- }
1388
-
1389
-
1390
- static PyObject *
1391
- array_putmask(PyObject *NPY_UNUSED(module), PyObject *args, PyObject *kwds)
1392
- {
1393
- PyObject *mask, *values;
1394
- PyObject *array;
1395
-
1396
- static char *kwlist[] = {"arr", "mask", "values", NULL};
1397
-
1398
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!OO:putmask", kwlist,
1399
- &PyArray_Type, &array, &mask, &values)) {
1400
- return NULL;
1401
- }
1402
- return PyArray_PutMask((PyArrayObject *)array, values, mask);
1403
- }
1404
-
1405
- /*
1406
- * Compare the field dictionaries for two types.
1407
- *
1408
- * Return 1 if the contents are the same, 0 if not.
1409
- */
1410
- static int
1411
- _equivalent_fields(PyObject *field1, PyObject *field2) {
1412
-
1413
- int same, val;
1414
-
1415
- if (field1 == field2) {
1416
- return 1;
1417
- }
1418
- if (field1 == NULL || field2 == NULL) {
1419
- return 0;
1420
- }
1421
- #if defined(NPY_PY3K)
1422
- val = PyObject_RichCompareBool(field1, field2, Py_EQ);
1423
- if (val != 1 || PyErr_Occurred()) {
1424
- #else
1425
- val = PyObject_Compare(field1, field2);
1426
- if (val != 0 || PyErr_Occurred()) {
1427
- #endif
1428
- same = 0;
1429
- }
1430
- else {
1431
- same = 1;
1432
- }
1433
- PyErr_Clear();
1434
- return same;
1435
- }
1436
-
1437
- /*
1438
- * Compare the subarray data for two types.
1439
- * Return 1 if they are the same, 0 if not.
1440
- */
1441
- static int
1442
- _equivalent_subarrays(PyArray_ArrayDescr *sub1, PyArray_ArrayDescr *sub2)
1443
- {
1444
- int val;
1445
-
1446
- if (sub1 == sub2) {
1447
- return 1;
1448
-
1449
- }
1450
- if (sub1 == NULL || sub2 == NULL) {
1451
- return 0;
1452
- }
1453
-
1454
- #if defined(NPY_PY3K)
1455
- val = PyObject_RichCompareBool(sub1->shape, sub2->shape, Py_EQ);
1456
- if (val != 1 || PyErr_Occurred()) {
1457
- #else
1458
- val = PyObject_Compare(sub1->shape, sub2->shape);
1459
- if (val != 0 || PyErr_Occurred()) {
1460
- #endif
1461
- PyErr_Clear();
1462
- return 0;
1463
- }
1464
-
1465
- return PyArray_EquivTypes(sub1->base, sub2->base);
1466
- }
1467
-
1468
-
1469
- /*NUMPY_API
1470
- *
1471
- * This function returns true if the two typecodes are
1472
- * equivalent (same basic kind and same itemsize).
1473
- */
1474
- NPY_NO_EXPORT unsigned char
1475
- PyArray_EquivTypes(PyArray_Descr *type1, PyArray_Descr *type2)
1476
- {
1477
- int type_num1, type_num2, size1, size2;
1478
-
1479
- if (type1 == type2) {
1480
- return NPY_TRUE;
1481
- }
1482
-
1483
- type_num1 = type1->type_num;
1484
- type_num2 = type2->type_num;
1485
- size1 = type1->elsize;
1486
- size2 = type2->elsize;
1487
-
1488
- if (size1 != size2) {
1489
- return NPY_FALSE;
1490
- }
1491
- if (PyArray_ISNBO(type1->byteorder) != PyArray_ISNBO(type2->byteorder)) {
1492
- return NPY_FALSE;
1493
- }
1494
- if (type1->subarray || type2->subarray) {
1495
- return ((type_num1 == type_num2)
1496
- && _equivalent_subarrays(type1->subarray, type2->subarray));
1497
- }
1498
- if (type_num1 == NPY_VOID
1499
- || type_num2 == NPY_VOID) {
1500
- return ((type_num1 == type_num2)
1501
- && _equivalent_fields(type1->fields, type2->fields));
1502
- }
1503
- if (type_num1 == NPY_DATETIME
1504
- || type_num1 == NPY_DATETIME
1505
- || type_num2 == NPY_TIMEDELTA
1506
- || type_num2 == NPY_TIMEDELTA) {
1507
- return ((type_num1 == type_num2)
1508
- && has_equivalent_datetime_metadata(type1, type2));
1509
- }
1510
- return type1->kind == type2->kind;
1511
- }
1512
-
1513
- /*NUMPY_API*/
1514
- NPY_NO_EXPORT unsigned char
1515
- PyArray_EquivTypenums(int typenum1, int typenum2)
1516
- {
1517
- PyArray_Descr *d1, *d2;
1518
- npy_bool ret;
1519
-
1520
- if (typenum1 == typenum2) {
1521
- return NPY_SUCCEED;
1522
- }
1523
-
1524
- d1 = PyArray_DescrFromType(typenum1);
1525
- d2 = PyArray_DescrFromType(typenum2);
1526
- ret = PyArray_EquivTypes(d1, d2);
1527
- Py_DECREF(d1);
1528
- Py_DECREF(d2);
1529
- return ret;
1530
- }
1531
-
1532
- /*** END C-API FUNCTIONS **/
1533
- /*
1534
- * NPY_RELAXED_STRIDES_CHECKING: If the strides logic is changed, the
1535
- * order specific stride setting is not necessary.
1536
- */
1537
- static NPY_STEALS_REF_TO_ARG(1) PyObject *
1538
- _prepend_ones(PyArrayObject *arr, int nd, int ndmin, NPY_ORDER order)
1539
- {
1540
- npy_intp newdims[NPY_MAXDIMS];
1541
- npy_intp newstrides[NPY_MAXDIMS];
1542
- npy_intp newstride;
1543
- int i, k, num;
1544
- PyArrayObject *ret;
1545
- PyArray_Descr *dtype;
1546
-
1547
- if (order == NPY_FORTRANORDER || PyArray_ISFORTRAN(arr) || PyArray_NDIM(arr) == 0) {
1548
- newstride = PyArray_DESCR(arr)->elsize;
1549
- }
1550
- else {
1551
- newstride = PyArray_STRIDES(arr)[0] * PyArray_DIMS(arr)[0];
1552
- }
1553
-
1554
- num = ndmin - nd;
1555
- for (i = 0; i < num; i++) {
1556
- newdims[i] = 1;
1557
- newstrides[i] = newstride;
1558
- }
1559
- for (i = num; i < ndmin; i++) {
1560
- k = i - num;
1561
- newdims[i] = PyArray_DIMS(arr)[k];
1562
- newstrides[i] = PyArray_STRIDES(arr)[k];
1563
- }
1564
- dtype = PyArray_DESCR(arr);
1565
- Py_INCREF(dtype);
1566
- ret = (PyArrayObject *)PyArray_NewFromDescr(Py_TYPE(arr),
1567
- dtype, ndmin, newdims, newstrides,
1568
- PyArray_DATA(arr),
1569
- PyArray_FLAGS(arr),
1570
- (PyObject *)arr);
1571
- if (ret == NULL) {
1572
- Py_DECREF(arr);
1573
- return NULL;
1574
- }
1575
- /* steals a reference to arr --- so don't increment here */
1576
- if (PyArray_SetBaseObject(ret, (PyObject *)arr) < 0) {
1577
- Py_DECREF(ret);
1578
- return NULL;
1579
- }
1580
-
1581
- return (PyObject *)ret;
1582
- }
1583
-
1584
-
1585
- #define STRIDING_OK(op, order) \
1586
- ((order) == NPY_ANYORDER || \
1587
- (order) == NPY_KEEPORDER || \
1588
- ((order) == NPY_CORDER && PyArray_IS_C_CONTIGUOUS(op)) || \
1589
- ((order) == NPY_FORTRANORDER && PyArray_IS_F_CONTIGUOUS(op)))
1590
-
1591
- static PyObject *
1592
- _array_fromobject(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kws)
1593
- {
1594
- PyObject *op;
1595
- PyArrayObject *oparr = NULL, *ret = NULL;
1596
- npy_bool subok = NPY_FALSE;
1597
- npy_bool copy = NPY_TRUE;
1598
- int ndmin = 0, nd;
1599
- PyArray_Descr *type = NULL;
1600
- PyArray_Descr *oldtype = NULL;
1601
- NPY_ORDER order = NPY_KEEPORDER;
1602
- int flags = 0;
1603
-
1604
- static char *kwd[]= {"object", "dtype", "copy", "order", "subok",
1605
- "ndmin", NULL};
1606
-
1607
- if (PyTuple_GET_SIZE(args) > 2) {
1608
- PyErr_SetString(PyExc_ValueError,
1609
- "only 2 non-keyword arguments accepted");
1610
- return NULL;
1611
- }
1612
- if(!PyArg_ParseTupleAndKeywords(args, kws, "O|O&O&O&O&i", kwd,
1613
- &op,
1614
- PyArray_DescrConverter2, &type,
1615
- PyArray_BoolConverter, &copy,
1616
- PyArray_OrderConverter, &order,
1617
- PyArray_BoolConverter, &subok,
1618
- &ndmin)) {
1619
- goto clean_type;
1620
- }
1621
-
1622
- if (ndmin > NPY_MAXDIMS) {
1623
- PyErr_Format(PyExc_ValueError,
1624
- "ndmin bigger than allowable number of dimensions "
1625
- "NPY_MAXDIMS (=%d)", NPY_MAXDIMS);
1626
- goto clean_type;
1627
- }
1628
- /* fast exit if simple call */
1629
- if ((subok && PyArray_Check(op)) ||
1630
- (!subok && PyArray_CheckExact(op))) {
1631
- oparr = (PyArrayObject *)op;
1632
- if (type == NULL) {
1633
- if (!copy && STRIDING_OK(oparr, order)) {
1634
- ret = oparr;
1635
- Py_INCREF(ret);
1636
- goto finish;
1637
- }
1638
- else {
1639
- ret = (PyArrayObject *)PyArray_NewCopy(oparr, order);
1640
- goto finish;
1641
- }
1642
- }
1643
- /* One more chance */
1644
- oldtype = PyArray_DESCR(oparr);
1645
- if (PyArray_EquivTypes(oldtype, type)) {
1646
- if (!copy && STRIDING_OK(oparr, order)) {
1647
- Py_INCREF(op);
1648
- ret = oparr;
1649
- goto finish;
1650
- }
1651
- else {
1652
- ret = (PyArrayObject *)PyArray_NewCopy(oparr, order);
1653
- if (oldtype == type || ret == NULL) {
1654
- goto finish;
1655
- }
1656
- Py_INCREF(oldtype);
1657
- Py_DECREF(PyArray_DESCR(ret));
1658
- ((PyArrayObject_fields *)ret)->descr = oldtype;
1659
- goto finish;
1660
- }
1661
- }
1662
- }
1663
-
1664
- if (copy) {
1665
- flags = NPY_ARRAY_ENSURECOPY;
1666
- }
1667
- if (order == NPY_CORDER) {
1668
- flags |= NPY_ARRAY_C_CONTIGUOUS;
1669
- }
1670
- else if ((order == NPY_FORTRANORDER)
1671
- /* order == NPY_ANYORDER && */
1672
- || (PyArray_Check(op) &&
1673
- PyArray_ISFORTRAN((PyArrayObject *)op))) {
1674
- flags |= NPY_ARRAY_F_CONTIGUOUS;
1675
- }
1676
- if (!subok) {
1677
- flags |= NPY_ARRAY_ENSUREARRAY;
1678
- }
1679
-
1680
- flags |= NPY_ARRAY_FORCECAST;
1681
- Py_XINCREF(type);
1682
- ret = (PyArrayObject *)PyArray_CheckFromAny(op, type,
1683
- 0, 0, flags, NULL);
1684
-
1685
- finish:
1686
- Py_XDECREF(type);
1687
- if (ret == NULL) {
1688
- return NULL;
1689
- }
1690
-
1691
- nd = PyArray_NDIM(ret);
1692
- if (nd >= ndmin) {
1693
- return (PyObject *)ret;
1694
- }
1695
- /*
1696
- * create a new array from the same data with ones in the shape
1697
- * steals a reference to ret
1698
- */
1699
- return _prepend_ones(ret, nd, ndmin, order);
1700
-
1701
- clean_type:
1702
- Py_XDECREF(type);
1703
- return NULL;
1704
- }
1705
-
1706
- static PyObject *
1707
- array_copyto(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
1708
- {
1709
-
1710
- static char *kwlist[] = {"dst","src","casting","where",NULL};
1711
- PyObject *wheremask_in = NULL;
1712
- PyArrayObject *dst = NULL, *src = NULL, *wheremask = NULL;
1713
- NPY_CASTING casting = NPY_SAME_KIND_CASTING;
1714
-
1715
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!O&|O&O", kwlist,
1716
- &PyArray_Type, &dst,
1717
- &PyArray_Converter, &src,
1718
- &PyArray_CastingConverter, &casting,
1719
- &wheremask_in)) {
1720
- goto fail;
1721
- }
1722
-
1723
- if (wheremask_in != NULL) {
1724
- /* Get the boolean where mask */
1725
- PyArray_Descr *dtype = PyArray_DescrFromType(NPY_BOOL);
1726
- if (dtype == NULL) {
1727
- goto fail;
1728
- }
1729
- wheremask = (PyArrayObject *)PyArray_FromAny(wheremask_in,
1730
- dtype, 0, 0, 0, NULL);
1731
- if (wheremask == NULL) {
1732
- goto fail;
1733
- }
1734
- }
1735
-
1736
- if (PyArray_AssignArray(dst, src, wheremask, casting) < 0) {
1737
- goto fail;
1738
- }
1739
-
1740
- Py_XDECREF(src);
1741
- Py_XDECREF(wheremask);
1742
-
1743
- Py_INCREF(Py_None);
1744
- return Py_None;
1745
-
1746
- fail:
1747
- Py_XDECREF(src);
1748
- Py_XDECREF(wheremask);
1749
- return NULL;
1750
- }
1751
-
1752
- static PyObject *
1753
- array_empty(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
1754
- {
1755
-
1756
- static char *kwlist[] = {"shape","dtype","order",NULL};
1757
- PyArray_Descr *typecode = NULL;
1758
- PyArray_Dims shape = {NULL, 0};
1759
- NPY_ORDER order = NPY_CORDER;
1760
- npy_bool is_f_order;
1761
- PyArrayObject *ret = NULL;
1762
-
1763
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|O&O&", kwlist,
1764
- PyArray_IntpConverter, &shape,
1765
- PyArray_DescrConverter, &typecode,
1766
- PyArray_OrderConverter, &order)) {
1767
- goto fail;
1768
- }
1769
-
1770
- switch (order) {
1771
- case NPY_CORDER:
1772
- is_f_order = NPY_FALSE;
1773
- break;
1774
- case NPY_FORTRANORDER:
1775
- is_f_order = NPY_TRUE;
1776
- break;
1777
- default:
1778
- PyErr_SetString(PyExc_ValueError,
1779
- "only 'C' or 'F' order is permitted");
1780
- goto fail;
1781
- }
1782
-
1783
- ret = (PyArrayObject *)PyArray_Empty(shape.len, shape.ptr,
1784
- typecode, is_f_order);
1785
-
1786
- PyDimMem_FREE(shape.ptr);
1787
- return (PyObject *)ret;
1788
-
1789
- fail:
1790
- Py_XDECREF(typecode);
1791
- PyDimMem_FREE(shape.ptr);
1792
- return NULL;
1793
- }
1794
-
1795
- static PyObject *
1796
- array_empty_like(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
1797
- {
1798
-
1799
- static char *kwlist[] = {"prototype","dtype","order","subok",NULL};
1800
- PyArrayObject *prototype = NULL;
1801
- PyArray_Descr *dtype = NULL;
1802
- NPY_ORDER order = NPY_KEEPORDER;
1803
- PyArrayObject *ret = NULL;
1804
- int subok = 1;
1805
-
1806
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|O&O&i", kwlist,
1807
- &PyArray_Converter, &prototype,
1808
- &PyArray_DescrConverter2, &dtype,
1809
- &PyArray_OrderConverter, &order,
1810
- &subok)) {
1811
- goto fail;
1812
- }
1813
- /* steals the reference to dtype if it's not NULL */
1814
- ret = (PyArrayObject *)PyArray_NewLikeArray(prototype,
1815
- order, dtype, subok);
1816
- Py_DECREF(prototype);
1817
-
1818
- return (PyObject *)ret;
1819
-
1820
- fail:
1821
- Py_XDECREF(prototype);
1822
- Py_XDECREF(dtype);
1823
- return NULL;
1824
- }
1825
-
1826
- /*
1827
- * This function is needed for supporting Pickles of
1828
- * numpy scalar objects.
1829
- */
1830
- static PyObject *
1831
- array_scalar(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
1832
- {
1833
-
1834
- static char *kwlist[] = {"dtype","obj", NULL};
1835
- PyArray_Descr *typecode;
1836
- PyObject *obj = NULL, *tmpobj = NULL;
1837
- int alloc = 0;
1838
- void *dptr;
1839
- PyObject *ret;
1840
-
1841
-
1842
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!|O", kwlist,
1843
- &PyArrayDescr_Type, &typecode, &obj)) {
1844
- return NULL;
1845
- }
1846
-
1847
- if (PyDataType_FLAGCHK(typecode, NPY_ITEM_IS_POINTER)) {
1848
- if (obj == NULL) {
1849
- obj = Py_None;
1850
- }
1851
- dptr = &obj;
1852
- }
1853
- else {
1854
- if (obj == NULL) {
1855
- if (typecode->elsize == 0) {
1856
- typecode->elsize = 1;
1857
- }
1858
- dptr = PyArray_malloc(typecode->elsize);
1859
- if (dptr == NULL) {
1860
- return PyErr_NoMemory();
1861
- }
1862
- memset(dptr, '\0', typecode->elsize);
1863
- alloc = 1;
1864
- }
1865
- else {
1866
- #if defined(NPY_PY3K)
1867
- /* Backward compatibility with Python 2 Numpy pickles */
1868
- if (PyUnicode_Check(obj)) {
1869
- tmpobj = PyUnicode_AsLatin1String(obj);
1870
- obj = tmpobj;
1871
- if (tmpobj == NULL) {
1872
- /* More informative error message */
1873
- PyErr_SetString(PyExc_ValueError,
1874
- ("Failed to encode Numpy scalar data string to latin1. "
1875
- "pickle.load(a, encoding='latin1') is assumed if unpickling."));
1876
- return NULL;
1877
- }
1878
- }
1879
- #endif
1880
-
1881
- if (!PyString_Check(obj)) {
1882
- PyErr_SetString(PyExc_TypeError,
1883
- "initializing object must be a string");
1884
- Py_XDECREF(tmpobj);
1885
- return NULL;
1886
- }
1887
- if (PyString_GET_SIZE(obj) < typecode->elsize) {
1888
- PyErr_SetString(PyExc_ValueError,
1889
- "initialization string is too small");
1890
- Py_XDECREF(tmpobj);
1891
- return NULL;
1892
- }
1893
- dptr = PyString_AS_STRING(obj);
1894
- }
1895
- }
1896
- ret = PyArray_Scalar(dptr, typecode, NULL);
1897
-
1898
- /* free dptr which contains zeros */
1899
- if (alloc) {
1900
- PyArray_free(dptr);
1901
- }
1902
- Py_XDECREF(tmpobj);
1903
- return ret;
1904
- }
1905
-
1906
- static PyObject *
1907
- array_zeros(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
1908
- {
1909
- static char *kwlist[] = {"shape","dtype","order",NULL};
1910
- PyArray_Descr *typecode = NULL;
1911
- PyArray_Dims shape = {NULL, 0};
1912
- NPY_ORDER order = NPY_CORDER;
1913
- npy_bool is_f_order = NPY_FALSE;
1914
- PyArrayObject *ret = NULL;
1915
-
1916
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|O&O&", kwlist,
1917
- PyArray_IntpConverter, &shape,
1918
- PyArray_DescrConverter, &typecode,
1919
- PyArray_OrderConverter, &order)) {
1920
- goto fail;
1921
- }
1922
-
1923
- switch (order) {
1924
- case NPY_CORDER:
1925
- is_f_order = NPY_FALSE;
1926
- break;
1927
- case NPY_FORTRANORDER:
1928
- is_f_order = NPY_TRUE;
1929
- break;
1930
- default:
1931
- PyErr_SetString(PyExc_ValueError,
1932
- "only 'C' or 'F' order is permitted");
1933
- goto fail;
1934
- }
1935
-
1936
- ret = (PyArrayObject *)PyArray_Zeros(shape.len, shape.ptr,
1937
- typecode, (int) is_f_order);
1938
-
1939
- PyDimMem_FREE(shape.ptr);
1940
- return (PyObject *)ret;
1941
-
1942
- fail:
1943
- Py_XDECREF(typecode);
1944
- PyDimMem_FREE(shape.ptr);
1945
- return (PyObject *)ret;
1946
- }
1947
-
1948
- static PyObject *
1949
- array_count_nonzero(PyObject *NPY_UNUSED(self), PyObject *args, PyObject *kwds)
1950
- {
1951
- PyObject *array_in;
1952
- PyArrayObject *array;
1953
- npy_intp count;
1954
-
1955
- if (!PyArg_ParseTuple(args, "O", &array_in)) {
1956
- return NULL;
1957
- }
1958
-
1959
- array = (PyArrayObject *)PyArray_FromAny(array_in, NULL, 0, 0, 0, NULL);
1960
- if (array == NULL) {
1961
- return NULL;
1962
- }
1963
-
1964
- count = PyArray_CountNonzero(array);
1965
-
1966
- Py_DECREF(array);
1967
-
1968
- if (count == -1) {
1969
- return NULL;
1970
- }
1971
- #if defined(NPY_PY3K)
1972
- return PyLong_FromSsize_t(count);
1973
- #else
1974
- return PyInt_FromSsize_t(count);
1975
- #endif
1976
- }
1977
-
1978
- static PyObject *
1979
- array_fromstring(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds)
1980
- {
1981
- char *data;
1982
- Py_ssize_t nin = -1;
1983
- char *sep = NULL;
1984
- Py_ssize_t s;
1985
- static char *kwlist[] = {"string", "dtype", "count", "sep", NULL};
1986
- PyArray_Descr *descr = NULL;
1987
-
1988
- if (!PyArg_ParseTupleAndKeywords(args, keywds,
1989
- "s#|O&" NPY_SSIZE_T_PYFMT "s", kwlist,
1990
- &data, &s, PyArray_DescrConverter, &descr, &nin, &sep)) {
1991
- Py_XDECREF(descr);
1992
- return NULL;
1993
- }
1994
- return PyArray_FromString(data, (npy_intp)s, descr, (npy_intp)nin, sep);
1995
- }
1996
-
1997
-
1998
-
1999
- static PyObject *
2000
- array_fromfile(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds)
2001
- {
2002
- PyObject *file = NULL, *ret;
2003
- char *sep = "";
2004
- Py_ssize_t nin = -1;
2005
- static char *kwlist[] = {"file", "dtype", "count", "sep", NULL};
2006
- PyArray_Descr *type = NULL;
2007
- int own;
2008
- npy_off_t orig_pos;
2009
- FILE *fp;
2010
-
2011
- if (!PyArg_ParseTupleAndKeywords(args, keywds,
2012
- "O|O&" NPY_SSIZE_T_PYFMT "s", kwlist,
2013
- &file, PyArray_DescrConverter, &type, &nin, &sep)) {
2014
- Py_XDECREF(type);
2015
- return NULL;
2016
- }
2017
- if (PyString_Check(file) || PyUnicode_Check(file)) {
2018
- file = npy_PyFile_OpenFile(file, "rb");
2019
- if (file == NULL) {
2020
- return NULL;
2021
- }
2022
- own = 1;
2023
- }
2024
- else {
2025
- Py_INCREF(file);
2026
- own = 0;
2027
- }
2028
- fp = npy_PyFile_Dup2(file, "rb", &orig_pos);
2029
- if (fp == NULL) {
2030
- PyErr_SetString(PyExc_IOError,
2031
- "first argument must be an open file");
2032
- Py_DECREF(file);
2033
- return NULL;
2034
- }
2035
- if (type == NULL) {
2036
- type = PyArray_DescrFromType(NPY_DEFAULT_TYPE);
2037
- }
2038
- ret = PyArray_FromFile(fp, type, (npy_intp) nin, sep);
2039
-
2040
- if (npy_PyFile_DupClose2(file, fp, orig_pos) < 0) {
2041
- goto fail;
2042
- }
2043
- if (own && npy_PyFile_CloseFile(file) < 0) {
2044
- goto fail;
2045
- }
2046
- Py_DECREF(file);
2047
- return ret;
2048
-
2049
- fail:
2050
- Py_DECREF(file);
2051
- Py_DECREF(ret);
2052
- return NULL;
2053
- }
2054
-
2055
- static PyObject *
2056
- array_fromiter(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds)
2057
- {
2058
- PyObject *iter;
2059
- Py_ssize_t nin = -1;
2060
- static char *kwlist[] = {"iter", "dtype", "count", NULL};
2061
- PyArray_Descr *descr = NULL;
2062
-
2063
- if (!PyArg_ParseTupleAndKeywords(args, keywds,
2064
- "OO&|" NPY_SSIZE_T_PYFMT, kwlist,
2065
- &iter, PyArray_DescrConverter, &descr, &nin)) {
2066
- Py_XDECREF(descr);
2067
- return NULL;
2068
- }
2069
- return PyArray_FromIter(iter, descr, (npy_intp)nin);
2070
- }
2071
-
2072
- static PyObject *
2073
- array_frombuffer(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds)
2074
- {
2075
- PyObject *obj = NULL;
2076
- Py_ssize_t nin = -1, offset = 0;
2077
- static char *kwlist[] = {"buffer", "dtype", "count", "offset", NULL};
2078
- PyArray_Descr *type = NULL;
2079
-
2080
- if (!PyArg_ParseTupleAndKeywords(args, keywds,
2081
- "O|O&" NPY_SSIZE_T_PYFMT NPY_SSIZE_T_PYFMT, kwlist,
2082
- &obj, PyArray_DescrConverter, &type, &nin, &offset)) {
2083
- Py_XDECREF(type);
2084
- return NULL;
2085
- }
2086
- if (type == NULL) {
2087
- type = PyArray_DescrFromType(NPY_DEFAULT_TYPE);
2088
- }
2089
- return PyArray_FromBuffer(obj, type, (npy_intp)nin, (npy_intp)offset);
2090
- }
2091
-
2092
- static PyObject *
2093
- array_concatenate(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
2094
- {
2095
- PyObject *a0;
2096
- int axis = 0;
2097
- static char *kwlist[] = {"seq", "axis", NULL};
2098
-
2099
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O&", kwlist,
2100
- &a0, PyArray_AxisConverter, &axis)) {
2101
- return NULL;
2102
- }
2103
- return PyArray_Concatenate(a0, axis);
2104
- }
2105
-
2106
- static PyObject *
2107
- array_innerproduct(PyObject *NPY_UNUSED(dummy), PyObject *args)
2108
- {
2109
- PyObject *b0, *a0;
2110
-
2111
- if (!PyArg_ParseTuple(args, "OO", &a0, &b0)) {
2112
- return NULL;
2113
- }
2114
- return PyArray_Return((PyArrayObject *)PyArray_InnerProduct(a0, b0));
2115
- }
2116
-
2117
- static PyObject *
2118
- array_matrixproduct(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject* kwds)
2119
- {
2120
- int errval;
2121
- static PyUFuncObject *cached_npy_dot = NULL;
2122
- PyObject *override = NULL;
2123
- PyObject *v, *a, *o = NULL;
2124
- char* kwlist[] = {"a", "b", "out", NULL };
2125
- PyObject *module;
2126
-
2127
- if (cached_npy_dot == NULL) {
2128
- module = PyImport_ImportModule("numpy.core.multiarray");
2129
- cached_npy_dot = (PyUFuncObject*)PyDict_GetItemString(
2130
- PyModule_GetDict(module), "dot");
2131
-
2132
- Py_INCREF(cached_npy_dot);
2133
- Py_DECREF(module);
2134
- }
2135
-
2136
- errval = PyUFunc_CheckOverride(cached_npy_dot, "__call__", args, kwds,
2137
- &override, 2);
2138
- if (errval) {
2139
- return NULL;
2140
- }
2141
- else if (override) {
2142
- return override;
2143
- }
2144
-
2145
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|O", kwlist, &a, &v, &o)) {
2146
- return NULL;
2147
- }
2148
- if (o == Py_None) {
2149
- o = NULL;
2150
- }
2151
- if (o != NULL && !PyArray_Check(o)) {
2152
- PyErr_SetString(PyExc_TypeError,
2153
- "'out' must be an array");
2154
- return NULL;
2155
- }
2156
- return PyArray_Return((PyArrayObject *)PyArray_MatrixProduct2(a, v, (PyArrayObject *)o));
2157
- }
2158
-
2159
- static int
2160
- einsum_sub_op_from_str(PyObject *args, PyObject **str_obj, char **subscripts,
2161
- PyArrayObject **op)
2162
- {
2163
- int i, nop;
2164
- PyObject *subscripts_str;
2165
-
2166
- nop = PyTuple_GET_SIZE(args) - 1;
2167
- if (nop <= 0) {
2168
- PyErr_SetString(PyExc_ValueError,
2169
- "must specify the einstein sum subscripts string "
2170
- "and at least one operand");
2171
- return -1;
2172
- }
2173
- else if (nop >= NPY_MAXARGS) {
2174
- PyErr_SetString(PyExc_ValueError, "too many operands");
2175
- return -1;
2176
- }
2177
-
2178
- /* Get the subscripts string */
2179
- subscripts_str = PyTuple_GET_ITEM(args, 0);
2180
- if (PyUnicode_Check(subscripts_str)) {
2181
- *str_obj = PyUnicode_AsASCIIString(subscripts_str);
2182
- if (*str_obj == NULL) {
2183
- return -1;
2184
- }
2185
- subscripts_str = *str_obj;
2186
- }
2187
-
2188
- *subscripts = PyBytes_AsString(subscripts_str);
2189
- if (*subscripts == NULL) {
2190
- Py_XDECREF(*str_obj);
2191
- *str_obj = NULL;
2192
- return -1;
2193
- }
2194
-
2195
- /* Set the operands to NULL */
2196
- for (i = 0; i < nop; ++i) {
2197
- op[i] = NULL;
2198
- }
2199
-
2200
- /* Get the operands */
2201
- for (i = 0; i < nop; ++i) {
2202
- PyObject *obj = PyTuple_GET_ITEM(args, i+1);
2203
-
2204
- op[i] = (PyArrayObject *)PyArray_FromAny(obj,
2205
- NULL, 0, 0, NPY_ARRAY_ENSUREARRAY, NULL);
2206
- if (op[i] == NULL) {
2207
- goto fail;
2208
- }
2209
- }
2210
-
2211
- return nop;
2212
-
2213
- fail:
2214
- for (i = 0; i < nop; ++i) {
2215
- Py_XDECREF(op[i]);
2216
- op[i] = NULL;
2217
- }
2218
-
2219
- return -1;
2220
- }
2221
-
2222
- /*
2223
- * Converts a list of subscripts to a string.
2224
- *
2225
- * Returns -1 on error, the number of characters placed in subscripts
2226
- * otherwise.
2227
- */
2228
- static int
2229
- einsum_list_to_subscripts(PyObject *obj, char *subscripts, int subsize)
2230
- {
2231
- int ellipsis = 0, subindex = 0;
2232
- npy_intp i, size;
2233
- PyObject *item;
2234
-
2235
- obj = PySequence_Fast(obj, "the subscripts for each operand must "
2236
- "be a list or a tuple");
2237
- if (obj == NULL) {
2238
- return -1;
2239
- }
2240
- size = PySequence_Size(obj);
2241
-
2242
-
2243
- for (i = 0; i < size; ++i) {
2244
- item = PySequence_Fast_GET_ITEM(obj, i);
2245
- /* Ellipsis */
2246
- if (item == Py_Ellipsis) {
2247
- if (ellipsis) {
2248
- PyErr_SetString(PyExc_ValueError,
2249
- "each subscripts list may have only one ellipsis");
2250
- Py_DECREF(obj);
2251
- return -1;
2252
- }
2253
- if (subindex + 3 >= subsize) {
2254
- PyErr_SetString(PyExc_ValueError,
2255
- "subscripts list is too long");
2256
- Py_DECREF(obj);
2257
- return -1;
2258
- }
2259
- subscripts[subindex++] = '.';
2260
- subscripts[subindex++] = '.';
2261
- subscripts[subindex++] = '.';
2262
- ellipsis = 1;
2263
- }
2264
- /* Subscript */
2265
- else if (PyInt_Check(item) || PyLong_Check(item)) {
2266
- long s = PyInt_AsLong(item);
2267
- if ( s < 0 || s > 2*26) {
2268
- PyErr_SetString(PyExc_ValueError,
2269
- "subscript is not within the valid range [0, 52]");
2270
- Py_DECREF(obj);
2271
- return -1;
2272
- }
2273
- if (s < 26) {
2274
- subscripts[subindex++] = 'A' + s;
2275
- }
2276
- else {
2277
- subscripts[subindex++] = 'a' + s;
2278
- }
2279
- if (subindex >= subsize) {
2280
- PyErr_SetString(PyExc_ValueError,
2281
- "subscripts list is too long");
2282
- Py_DECREF(obj);
2283
- return -1;
2284
- }
2285
- }
2286
- /* Invalid */
2287
- else {
2288
- PyErr_SetString(PyExc_ValueError,
2289
- "each subscript must be either an integer "
2290
- "or an ellipsis");
2291
- Py_DECREF(obj);
2292
- return -1;
2293
- }
2294
- }
2295
-
2296
- Py_DECREF(obj);
2297
-
2298
- return subindex;
2299
- }
2300
-
2301
- /*
2302
- * Fills in the subscripts, with maximum size subsize, and op,
2303
- * with the values in the tuple 'args'.
2304
- *
2305
- * Returns -1 on error, number of operands placed in op otherwise.
2306
- */
2307
- static int
2308
- einsum_sub_op_from_lists(PyObject *args,
2309
- char *subscripts, int subsize, PyArrayObject **op)
2310
- {
2311
- int subindex = 0;
2312
- npy_intp i, nop;
2313
-
2314
- nop = PyTuple_Size(args)/2;
2315
-
2316
- if (nop == 0) {
2317
- PyErr_SetString(PyExc_ValueError, "must provide at least an "
2318
- "operand and a subscripts list to einsum");
2319
- return -1;
2320
- }
2321
- else if(nop >= NPY_MAXARGS) {
2322
- PyErr_SetString(PyExc_ValueError, "too many operands");
2323
- return -1;
2324
- }
2325
-
2326
- /* Set the operands to NULL */
2327
- for (i = 0; i < nop; ++i) {
2328
- op[i] = NULL;
2329
- }
2330
-
2331
- /* Get the operands and build the subscript string */
2332
- for (i = 0; i < nop; ++i) {
2333
- PyObject *obj = PyTuple_GET_ITEM(args, 2*i);
2334
- int n;
2335
-
2336
- /* Comma between the subscripts for each operand */
2337
- if (i != 0) {
2338
- subscripts[subindex++] = ',';
2339
- if (subindex >= subsize) {
2340
- PyErr_SetString(PyExc_ValueError,
2341
- "subscripts list is too long");
2342
- goto fail;
2343
- }
2344
- }
2345
-
2346
- op[i] = (PyArrayObject *)PyArray_FromAny(obj,
2347
- NULL, 0, 0, NPY_ARRAY_ENSUREARRAY, NULL);
2348
- if (op[i] == NULL) {
2349
- goto fail;
2350
- }
2351
-
2352
- obj = PyTuple_GET_ITEM(args, 2*i+1);
2353
- n = einsum_list_to_subscripts(obj, subscripts+subindex,
2354
- subsize-subindex);
2355
- if (n < 0) {
2356
- goto fail;
2357
- }
2358
- subindex += n;
2359
- }
2360
-
2361
- /* Add the '->' to the string if provided */
2362
- if (PyTuple_Size(args) == 2*nop+1) {
2363
- PyObject *obj;
2364
- int n;
2365
-
2366
- if (subindex + 2 >= subsize) {
2367
- PyErr_SetString(PyExc_ValueError,
2368
- "subscripts list is too long");
2369
- goto fail;
2370
- }
2371
- subscripts[subindex++] = '-';
2372
- subscripts[subindex++] = '>';
2373
-
2374
- obj = PyTuple_GET_ITEM(args, 2*nop);
2375
- n = einsum_list_to_subscripts(obj, subscripts+subindex,
2376
- subsize-subindex);
2377
- if (n < 0) {
2378
- goto fail;
2379
- }
2380
- subindex += n;
2381
- }
2382
-
2383
- /* NULL-terminate the subscripts string */
2384
- subscripts[subindex] = '\0';
2385
-
2386
- return nop;
2387
-
2388
- fail:
2389
- for (i = 0; i < nop; ++i) {
2390
- Py_XDECREF(op[i]);
2391
- op[i] = NULL;
2392
- }
2393
-
2394
- return -1;
2395
- }
2396
-
2397
- static PyObject *
2398
- array_einsum(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
2399
- {
2400
- char *subscripts = NULL, subscripts_buffer[256];
2401
- PyObject *str_obj = NULL, *str_key_obj = NULL;
2402
- PyObject *arg0;
2403
- int i, nop;
2404
- PyArrayObject *op[NPY_MAXARGS];
2405
- NPY_ORDER order = NPY_KEEPORDER;
2406
- NPY_CASTING casting = NPY_SAFE_CASTING;
2407
- PyArrayObject *out = NULL;
2408
- PyArray_Descr *dtype = NULL;
2409
- PyObject *ret = NULL;
2410
-
2411
- if (PyTuple_GET_SIZE(args) < 1) {
2412
- PyErr_SetString(PyExc_ValueError,
2413
- "must specify the einstein sum subscripts string "
2414
- "and at least one operand, or at least one operand "
2415
- "and its corresponding subscripts list");
2416
- return NULL;
2417
- }
2418
- arg0 = PyTuple_GET_ITEM(args, 0);
2419
-
2420
- /* einsum('i,j', a, b), einsum('i,j->ij', a, b) */
2421
- if (PyString_Check(arg0) || PyUnicode_Check(arg0)) {
2422
- nop = einsum_sub_op_from_str(args, &str_obj, &subscripts, op);
2423
- }
2424
- /* einsum(a, [0], b, [1]), einsum(a, [0], b, [1], [0,1]) */
2425
- else {
2426
- nop = einsum_sub_op_from_lists(args, subscripts_buffer,
2427
- sizeof(subscripts_buffer), op);
2428
- subscripts = subscripts_buffer;
2429
- }
2430
- if (nop <= 0) {
2431
- goto finish;
2432
- }
2433
-
2434
- /* Get the keyword arguments */
2435
- if (kwds != NULL) {
2436
- PyObject *key, *value;
2437
- Py_ssize_t pos = 0;
2438
- while (PyDict_Next(kwds, &pos, &key, &value)) {
2439
- char *str = NULL;
2440
-
2441
- #if defined(NPY_PY3K)
2442
- Py_XDECREF(str_key_obj);
2443
- str_key_obj = PyUnicode_AsASCIIString(key);
2444
- if (str_key_obj != NULL) {
2445
- key = str_key_obj;
2446
- }
2447
- #endif
2448
-
2449
- str = PyBytes_AsString(key);
2450
-
2451
- if (str == NULL) {
2452
- PyErr_Clear();
2453
- PyErr_SetString(PyExc_TypeError, "invalid keyword");
2454
- goto finish;
2455
- }
2456
-
2457
- if (strcmp(str,"out") == 0) {
2458
- if (PyArray_Check(value)) {
2459
- out = (PyArrayObject *)value;
2460
- }
2461
- else {
2462
- PyErr_SetString(PyExc_TypeError,
2463
- "keyword parameter out must be an "
2464
- "array for einsum");
2465
- goto finish;
2466
- }
2467
- }
2468
- else if (strcmp(str,"order") == 0) {
2469
- if (!PyArray_OrderConverter(value, &order)) {
2470
- goto finish;
2471
- }
2472
- }
2473
- else if (strcmp(str,"casting") == 0) {
2474
- if (!PyArray_CastingConverter(value, &casting)) {
2475
- goto finish;
2476
- }
2477
- }
2478
- else if (strcmp(str,"dtype") == 0) {
2479
- if (!PyArray_DescrConverter2(value, &dtype)) {
2480
- goto finish;
2481
- }
2482
- }
2483
- else {
2484
- PyErr_Format(PyExc_TypeError,
2485
- "'%s' is an invalid keyword for einsum",
2486
- str);
2487
- goto finish;
2488
- }
2489
- }
2490
- }
2491
-
2492
- ret = (PyObject *)PyArray_EinsteinSum(subscripts, nop, op, dtype,
2493
- order, casting, out);
2494
-
2495
- /* If no output was supplied, possibly convert to a scalar */
2496
- if (ret != NULL && out == NULL) {
2497
- ret = PyArray_Return((PyArrayObject *)ret);
2498
- }
2499
-
2500
- finish:
2501
- for (i = 0; i < nop; ++i) {
2502
- Py_XDECREF(op[i]);
2503
- }
2504
- Py_XDECREF(dtype);
2505
- Py_XDECREF(str_obj);
2506
- Py_XDECREF(str_key_obj);
2507
- /* out is a borrowed reference */
2508
-
2509
- return ret;
2510
- }
2511
-
2512
- static PyObject *
2513
- array_fastCopyAndTranspose(PyObject *NPY_UNUSED(dummy), PyObject *args)
2514
- {
2515
- PyObject *a0;
2516
-
2517
- if (!PyArg_ParseTuple(args, "O", &a0)) {
2518
- return NULL;
2519
- }
2520
- return PyArray_Return((PyArrayObject *)PyArray_CopyAndTranspose(a0));
2521
- }
2522
-
2523
- static PyObject *
2524
- array_correlate(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
2525
- {
2526
- PyObject *shape, *a0;
2527
- int mode = 0;
2528
- static char *kwlist[] = {"a", "v", "mode", NULL};
2529
-
2530
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|i", kwlist,
2531
- &a0, &shape, &mode)) {
2532
- return NULL;
2533
- }
2534
- return PyArray_Correlate(a0, shape, mode);
2535
- }
2536
-
2537
- static PyObject*
2538
- array_correlate2(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
2539
- {
2540
- PyObject *shape, *a0;
2541
- int mode = 0;
2542
- static char *kwlist[] = {"a", "v", "mode", NULL};
2543
-
2544
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO|i", kwlist,
2545
- &a0, &shape, &mode)) {
2546
- return NULL;
2547
- }
2548
- return PyArray_Correlate2(a0, shape, mode);
2549
- }
2550
-
2551
- static PyObject *
2552
- array_arange(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kws) {
2553
- PyObject *o_start = NULL, *o_stop = NULL, *o_step = NULL, *range=NULL;
2554
- static char *kwd[]= {"start", "stop", "step", "dtype", NULL};
2555
- PyArray_Descr *typecode = NULL;
2556
-
2557
- if(!PyArg_ParseTupleAndKeywords(args, kws, "O|OOO&", kwd,
2558
- &o_start,
2559
- &o_stop,
2560
- &o_step,
2561
- PyArray_DescrConverter2, &typecode)) {
2562
- Py_XDECREF(typecode);
2563
- return NULL;
2564
- }
2565
- range = PyArray_ArangeObj(o_start, o_stop, o_step, typecode);
2566
- Py_XDECREF(typecode);
2567
-
2568
- return range;
2569
- }
2570
-
2571
- /*NUMPY_API
2572
- *
2573
- * Included at the very first so not auto-grabbed and thus not labeled.
2574
- */
2575
- NPY_NO_EXPORT unsigned int
2576
- PyArray_GetNDArrayCVersion(void)
2577
- {
2578
- return (unsigned int)NPY_ABI_VERSION;
2579
- }
2580
-
2581
- /*NUMPY_API
2582
- * Returns the built-in (at compilation time) C API version
2583
- */
2584
- NPY_NO_EXPORT unsigned int
2585
- PyArray_GetNDArrayCFeatureVersion(void)
2586
- {
2587
- return (unsigned int)NPY_API_VERSION;
2588
- }
2589
-
2590
- static PyObject *
2591
- array__get_ndarray_c_version(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
2592
- {
2593
- static char *kwlist[] = {NULL};
2594
-
2595
- if(!PyArg_ParseTupleAndKeywords(args, kwds, "", kwlist )) {
2596
- return NULL;
2597
- }
2598
- return PyInt_FromLong( (long) PyArray_GetNDArrayCVersion() );
2599
- }
2600
-
2601
- /*NUMPY_API
2602
- */
2603
- NPY_NO_EXPORT int
2604
- PyArray_GetEndianness(void)
2605
- {
2606
- const union {
2607
- npy_uint32 i;
2608
- char c[4];
2609
- } bint = {0x01020304};
2610
-
2611
- if (bint.c[0] == 1) {
2612
- return NPY_CPU_BIG;
2613
- }
2614
- else if (bint.c[0] == 4) {
2615
- return NPY_CPU_LITTLE;
2616
- }
2617
- else {
2618
- return NPY_CPU_UNKNOWN_ENDIAN;
2619
- }
2620
- }
2621
-
2622
- static PyObject *
2623
- array__reconstruct(PyObject *NPY_UNUSED(dummy), PyObject *args)
2624
- {
2625
-
2626
- PyObject *ret;
2627
- PyTypeObject *subtype;
2628
- PyArray_Dims shape = {NULL, 0};
2629
- PyArray_Descr *dtype = NULL;
2630
-
2631
- evil_global_disable_warn_O4O8_flag = 1;
2632
-
2633
- if (!PyArg_ParseTuple(args, "O!O&O&",
2634
- &PyType_Type, &subtype,
2635
- PyArray_IntpConverter, &shape,
2636
- PyArray_DescrConverter, &dtype)) {
2637
- goto fail;
2638
- }
2639
- if (!PyType_IsSubtype(subtype, &PyArray_Type)) {
2640
- PyErr_SetString(PyExc_TypeError,
2641
- "_reconstruct: First argument must be a sub-type of ndarray");
2642
- goto fail;
2643
- }
2644
- ret = PyArray_NewFromDescr(subtype, dtype,
2645
- (int)shape.len, shape.ptr, NULL, NULL, 0, NULL);
2646
- PyDimMem_FREE(shape.ptr);
2647
-
2648
- evil_global_disable_warn_O4O8_flag = 0;
2649
-
2650
- return ret;
2651
-
2652
- fail:
2653
- evil_global_disable_warn_O4O8_flag = 0;
2654
-
2655
- Py_XDECREF(dtype);
2656
- PyDimMem_FREE(shape.ptr);
2657
- return NULL;
2658
- }
2659
-
2660
- static PyObject *
2661
- array_set_string_function(PyObject *NPY_UNUSED(self), PyObject *args,
2662
- PyObject *kwds)
2663
- {
2664
- PyObject *op = NULL;
2665
- int repr = 1;
2666
- static char *kwlist[] = {"f", "repr", NULL};
2667
-
2668
- if(!PyArg_ParseTupleAndKeywords(args, kwds, "|Oi", kwlist, &op, &repr)) {
2669
- return NULL;
2670
- }
2671
- /* reset the array_repr function to built-in */
2672
- if (op == Py_None) {
2673
- op = NULL;
2674
- }
2675
- if (op != NULL && !PyCallable_Check(op)) {
2676
- PyErr_SetString(PyExc_TypeError,
2677
- "Argument must be callable.");
2678
- return NULL;
2679
- }
2680
- PyArray_SetStringFunction(op, repr);
2681
- Py_INCREF(Py_None);
2682
- return Py_None;
2683
- }
2684
-
2685
- static PyObject *
2686
- array_set_ops_function(PyObject *NPY_UNUSED(self), PyObject *NPY_UNUSED(args),
2687
- PyObject *kwds)
2688
- {
2689
- PyObject *oldops = NULL;
2690
-
2691
- if ((oldops = PyArray_GetNumericOps()) == NULL) {
2692
- return NULL;
2693
- }
2694
- /*
2695
- * Should probably ensure that objects are at least callable
2696
- * Leave this to the caller for now --- error will be raised
2697
- * later when use is attempted
2698
- */
2699
- if (kwds && PyArray_SetNumericOps(kwds) == -1) {
2700
- Py_DECREF(oldops);
2701
- PyErr_SetString(PyExc_ValueError,
2702
- "one or more objects not callable");
2703
- return NULL;
2704
- }
2705
- return oldops;
2706
- }
2707
-
2708
- static PyObject *
2709
- array_set_datetimeparse_function(PyObject *NPY_UNUSED(self),
2710
- PyObject *NPY_UNUSED(args), PyObject *NPY_UNUSED(kwds))
2711
- {
2712
- PyErr_SetString(PyExc_RuntimeError, "This function has been removed");
2713
- return NULL;
2714
- }
2715
-
2716
- /*
2717
- * inner loop with constant size memcpy arguments
2718
- * this allows the compiler to replace function calls while still handling the
2719
- * alignment requirements of the platform.
2720
- */
2721
- #define INNER_WHERE_LOOP(size) \
2722
- do { \
2723
- npy_intp i; \
2724
- for (i = 0; i < n; i++) { \
2725
- if (*csrc) { \
2726
- memcpy(dst, xsrc, size); \
2727
- } \
2728
- else { \
2729
- memcpy(dst, ysrc, size); \
2730
- } \
2731
- dst += size; \
2732
- xsrc += xstride; \
2733
- ysrc += ystride; \
2734
- csrc += cstride; \
2735
- } \
2736
- } while(0)
2737
-
2738
-
2739
- /*NUMPY_API
2740
- * Where
2741
- */
2742
- NPY_NO_EXPORT PyObject *
2743
- PyArray_Where(PyObject *condition, PyObject *x, PyObject *y)
2744
- {
2745
- PyArrayObject *arr, *ax, *ay;
2746
- PyObject *ret = NULL;
2747
-
2748
- arr = (PyArrayObject *)PyArray_FromAny(condition, NULL, 0, 0, 0, NULL);
2749
- if (arr == NULL) {
2750
- return NULL;
2751
- }
2752
- if ((x == NULL) && (y == NULL)) {
2753
- ret = PyArray_Nonzero(arr);
2754
- Py_DECREF(arr);
2755
- return ret;
2756
- }
2757
- if ((x == NULL) || (y == NULL)) {
2758
- Py_DECREF(arr);
2759
- PyErr_SetString(PyExc_ValueError,
2760
- "either both or neither of x and y should be given");
2761
- return NULL;
2762
- }
2763
-
2764
- ax = (PyArrayObject*)PyArray_FromAny(x, NULL, 0, 0, 0 ,NULL);
2765
- ay = (PyArrayObject*)PyArray_FromAny(y, NULL, 0, 0, 0 ,NULL);
2766
- if (ax == NULL || ay == NULL) {
2767
- goto fail;
2768
- }
2769
- else {
2770
- npy_uint32 flags = NPY_ITER_EXTERNAL_LOOP | NPY_ITER_BUFFERED |
2771
- NPY_ITER_REFS_OK | NPY_ITER_ZEROSIZE_OK;
2772
- PyArrayObject * op_in[4] = {
2773
- NULL, arr, ax, ay
2774
- };
2775
- npy_uint32 op_flags[4] = {
2776
- NPY_ITER_WRITEONLY | NPY_ITER_ALLOCATE | NPY_ITER_NO_SUBTYPE,
2777
- NPY_ITER_READONLY, NPY_ITER_READONLY, NPY_ITER_READONLY
2778
- };
2779
- PyArray_Descr * common_dt = PyArray_ResultType(2, &op_in[0] + 2,
2780
- 0, NULL);
2781
- PyArray_Descr * op_dt[4] = {common_dt, PyArray_DescrFromType(NPY_BOOL),
2782
- common_dt, common_dt};
2783
- NpyIter * iter;
2784
- int needs_api;
2785
- NPY_BEGIN_THREADS_DEF;
2786
-
2787
- if (common_dt == NULL || op_dt[1] == NULL) {
2788
- Py_XDECREF(op_dt[1]);
2789
- Py_XDECREF(common_dt);
2790
- goto fail;
2791
- }
2792
- iter = NpyIter_MultiNew(4, op_in, flags,
2793
- NPY_KEEPORDER, NPY_UNSAFE_CASTING,
2794
- op_flags, op_dt);
2795
- Py_DECREF(op_dt[1]);
2796
- Py_DECREF(common_dt);
2797
- if (iter == NULL) {
2798
- goto fail;
2799
- }
2800
-
2801
- needs_api = NpyIter_IterationNeedsAPI(iter);
2802
-
2803
- /* Get the result from the iterator object array */
2804
- ret = (PyObject*)NpyIter_GetOperandArray(iter)[0];
2805
-
2806
- NPY_BEGIN_THREADS_NDITER(iter);
2807
-
2808
- if (NpyIter_GetIterSize(iter) != 0) {
2809
- NpyIter_IterNextFunc *iternext = NpyIter_GetIterNext(iter, NULL);
2810
- npy_intp * innersizeptr = NpyIter_GetInnerLoopSizePtr(iter);
2811
- char **dataptrarray = NpyIter_GetDataPtrArray(iter);
2812
-
2813
- do {
2814
- PyArray_Descr * dtx = NpyIter_GetDescrArray(iter)[2];
2815
- PyArray_Descr * dty = NpyIter_GetDescrArray(iter)[3];
2816
- int axswap = PyDataType_ISBYTESWAPPED(dtx);
2817
- int ayswap = PyDataType_ISBYTESWAPPED(dty);
2818
- PyArray_CopySwapFunc *copyswapx = dtx->f->copyswap;
2819
- PyArray_CopySwapFunc *copyswapy = dty->f->copyswap;
2820
- int native = (axswap == ayswap) && (axswap == 0) && !needs_api;
2821
- npy_intp n = (*innersizeptr);
2822
- npy_intp itemsize = NpyIter_GetDescrArray(iter)[0]->elsize;
2823
- npy_intp cstride = NpyIter_GetInnerStrideArray(iter)[1];
2824
- npy_intp xstride = NpyIter_GetInnerStrideArray(iter)[2];
2825
- npy_intp ystride = NpyIter_GetInnerStrideArray(iter)[3];
2826
- char * dst = dataptrarray[0];
2827
- char * csrc = dataptrarray[1];
2828
- char * xsrc = dataptrarray[2];
2829
- char * ysrc = dataptrarray[3];
2830
-
2831
- /* constant sizes so compiler replaces memcpy */
2832
- if (native && itemsize == 16) {
2833
- INNER_WHERE_LOOP(16);
2834
- }
2835
- else if (native && itemsize == 8) {
2836
- INNER_WHERE_LOOP(8);
2837
- }
2838
- else if (native && itemsize == 4) {
2839
- INNER_WHERE_LOOP(4);
2840
- }
2841
- else if (native && itemsize == 2) {
2842
- INNER_WHERE_LOOP(2);
2843
- }
2844
- else if (native && itemsize == 1) {
2845
- INNER_WHERE_LOOP(1);
2846
- }
2847
- else {
2848
- /* copyswap is faster than memcpy even if we are native */
2849
- npy_intp i;
2850
- for (i = 0; i < n; i++) {
2851
- if (*csrc) {
2852
- copyswapx(dst, xsrc, axswap, ret);
2853
- }
2854
- else {
2855
- copyswapy(dst, ysrc, ayswap, ret);
2856
- }
2857
- dst += itemsize;
2858
- xsrc += xstride;
2859
- ysrc += ystride;
2860
- csrc += cstride;
2861
- }
2862
- }
2863
- } while (iternext(iter));
2864
- }
2865
-
2866
- NPY_END_THREADS;
2867
-
2868
- Py_INCREF(ret);
2869
- Py_DECREF(arr);
2870
- Py_DECREF(ax);
2871
- Py_DECREF(ay);
2872
-
2873
- if (NpyIter_Deallocate(iter) != NPY_SUCCEED) {
2874
- Py_DECREF(ret);
2875
- return NULL;
2876
- }
2877
-
2878
- return ret;
2879
- }
2880
-
2881
- fail:
2882
- Py_DECREF(arr);
2883
- Py_XDECREF(ax);
2884
- Py_XDECREF(ay);
2885
- return NULL;
2886
- }
2887
-
2888
- #undef INNER_WHERE_LOOP
2889
-
2890
- static PyObject *
2891
- array_where(PyObject *NPY_UNUSED(ignored), PyObject *args)
2892
- {
2893
- PyObject *obj = NULL, *x = NULL, *y = NULL;
2894
-
2895
- if (!PyArg_ParseTuple(args, "O|OO", &obj, &x, &y)) {
2896
- return NULL;
2897
- }
2898
- return PyArray_Where(obj, x, y);
2899
- }
2900
-
2901
- static PyObject *
2902
- array_lexsort(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
2903
- {
2904
- int axis = -1;
2905
- PyObject *obj;
2906
- static char *kwlist[] = {"keys", "axis", NULL};
2907
-
2908
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|i", kwlist, &obj, &axis)) {
2909
- return NULL;
2910
- }
2911
- return PyArray_Return((PyArrayObject *)PyArray_LexSort(obj, axis));
2912
- }
2913
-
2914
- static PyObject *
2915
- array_can_cast_safely(PyObject *NPY_UNUSED(self), PyObject *args,
2916
- PyObject *kwds)
2917
- {
2918
- PyObject *from_obj = NULL;
2919
- PyArray_Descr *d1 = NULL;
2920
- PyArray_Descr *d2 = NULL;
2921
- npy_bool ret;
2922
- PyObject *retobj = NULL;
2923
- NPY_CASTING casting = NPY_SAFE_CASTING;
2924
- static char *kwlist[] = {"from", "to", "casting", NULL};
2925
-
2926
- if(!PyArg_ParseTupleAndKeywords(args, kwds, "OO&|O&", kwlist,
2927
- &from_obj,
2928
- PyArray_DescrConverter2, &d2,
2929
- PyArray_CastingConverter, &casting)) {
2930
- goto finish;
2931
- }
2932
- if (d2 == NULL) {
2933
- PyErr_SetString(PyExc_TypeError,
2934
- "did not understand one of the types; 'None' not accepted");
2935
- goto finish;
2936
- }
2937
-
2938
- /* If the first parameter is an object or scalar, use CanCastArrayTo */
2939
- if (PyArray_Check(from_obj)) {
2940
- ret = PyArray_CanCastArrayTo((PyArrayObject *)from_obj, d2, casting);
2941
- }
2942
- else if (PyArray_IsScalar(from_obj, Generic) ||
2943
- PyArray_IsPythonNumber(from_obj)) {
2944
- PyArrayObject *arr;
2945
- arr = (PyArrayObject *)PyArray_FromAny(from_obj,
2946
- NULL, 0, 0, 0, NULL);
2947
- if (arr == NULL) {
2948
- goto finish;
2949
- }
2950
- ret = PyArray_CanCastArrayTo(arr, d2, casting);
2951
- Py_DECREF(arr);
2952
- }
2953
- /* Otherwise use CanCastTypeTo */
2954
- else {
2955
- if (!PyArray_DescrConverter2(from_obj, &d1) || d1 == NULL) {
2956
- PyErr_SetString(PyExc_TypeError,
2957
- "did not understand one of the types; 'None' not accepted");
2958
- goto finish;
2959
- }
2960
- ret = PyArray_CanCastTypeTo(d1, d2, casting);
2961
- }
2962
-
2963
- retobj = ret ? Py_True : Py_False;
2964
- Py_INCREF(retobj);
2965
-
2966
- finish:
2967
- Py_XDECREF(d1);
2968
- Py_XDECREF(d2);
2969
- return retobj;
2970
- }
2971
-
2972
- static PyObject *
2973
- array_promote_types(PyObject *NPY_UNUSED(dummy), PyObject *args)
2974
- {
2975
- PyArray_Descr *d1 = NULL;
2976
- PyArray_Descr *d2 = NULL;
2977
- PyObject *ret = NULL;
2978
- if(!PyArg_ParseTuple(args, "O&O&",
2979
- PyArray_DescrConverter2, &d1, PyArray_DescrConverter2, &d2)) {
2980
- goto finish;
2981
- }
2982
-
2983
- if (d1 == NULL || d2 == NULL) {
2984
- PyErr_SetString(PyExc_TypeError,
2985
- "did not understand one of the types");
2986
- goto finish;
2987
- }
2988
-
2989
- ret = (PyObject *)PyArray_PromoteTypes(d1, d2);
2990
-
2991
- finish:
2992
- Py_XDECREF(d1);
2993
- Py_XDECREF(d2);
2994
- return ret;
2995
- }
2996
-
2997
- static PyObject *
2998
- array_min_scalar_type(PyObject *NPY_UNUSED(dummy), PyObject *args)
2999
- {
3000
- PyObject *array_in = NULL;
3001
- PyArrayObject *array;
3002
- PyObject *ret = NULL;
3003
-
3004
- if(!PyArg_ParseTuple(args, "O", &array_in)) {
3005
- return NULL;
3006
- }
3007
-
3008
- array = (PyArrayObject *)PyArray_FromAny(array_in, NULL, 0, 0, 0, NULL);
3009
- if (array == NULL) {
3010
- return NULL;
3011
- }
3012
-
3013
- ret = (PyObject *)PyArray_MinScalarType(array);
3014
- Py_DECREF(array);
3015
- return ret;
3016
- }
3017
-
3018
- static PyObject *
3019
- array_result_type(PyObject *NPY_UNUSED(dummy), PyObject *args)
3020
- {
3021
- npy_intp i, len, narr = 0, ndtypes = 0;
3022
- PyArrayObject **arr = NULL;
3023
- PyArray_Descr **dtypes = NULL;
3024
- PyObject *ret = NULL;
3025
-
3026
- len = PyTuple_GET_SIZE(args);
3027
- if (len == 0) {
3028
- PyErr_SetString(PyExc_ValueError,
3029
- "at least one array or dtype is required");
3030
- goto finish;
3031
- }
3032
-
3033
- arr = PyArray_malloc(2 * len * sizeof(void *));
3034
- if (arr == NULL) {
3035
- return PyErr_NoMemory();
3036
- }
3037
- dtypes = (PyArray_Descr**)&arr[len];
3038
-
3039
- for (i = 0; i < len; ++i) {
3040
- PyObject *obj = PyTuple_GET_ITEM(args, i);
3041
- if (PyArray_Check(obj)) {
3042
- Py_INCREF(obj);
3043
- arr[narr] = (PyArrayObject *)obj;
3044
- ++narr;
3045
- }
3046
- else if (PyArray_IsScalar(obj, Generic) ||
3047
- PyArray_IsPythonNumber(obj)) {
3048
- arr[narr] = (PyArrayObject *)PyArray_FromAny(obj,
3049
- NULL, 0, 0, 0, NULL);
3050
- if (arr[narr] == NULL) {
3051
- goto finish;
3052
- }
3053
- ++narr;
3054
- }
3055
- else {
3056
- if (!PyArray_DescrConverter(obj, &dtypes[ndtypes])) {
3057
- goto finish;
3058
- }
3059
- ++ndtypes;
3060
- }
3061
- }
3062
-
3063
- ret = (PyObject *)PyArray_ResultType(narr, arr, ndtypes, dtypes);
3064
-
3065
- finish:
3066
- for (i = 0; i < narr; ++i) {
3067
- Py_DECREF(arr[i]);
3068
- }
3069
- for (i = 0; i < ndtypes; ++i) {
3070
- Py_DECREF(dtypes[i]);
3071
- }
3072
- PyArray_free(arr);
3073
- return ret;
3074
- }
3075
-
3076
- static PyObject *
3077
- array_datetime_data(PyObject *NPY_UNUSED(dummy), PyObject *args)
3078
- {
3079
- PyArray_Descr *dtype;
3080
- PyArray_DatetimeMetaData *meta;
3081
-
3082
- if(!PyArg_ParseTuple(args, "O&:datetime_data",
3083
- PyArray_DescrConverter, &dtype)) {
3084
- return NULL;
3085
- }
3086
-
3087
- meta = get_datetime_metadata_from_dtype(dtype);
3088
- if (meta == NULL) {
3089
- return NULL;
3090
- }
3091
-
3092
- return convert_datetime_metadata_to_tuple(meta);
3093
- }
3094
-
3095
- #if !defined(NPY_PY3K)
3096
- static PyObject *
3097
- new_buffer(PyObject *NPY_UNUSED(dummy), PyObject *args)
3098
- {
3099
- int size;
3100
-
3101
- if(!PyArg_ParseTuple(args, "i", &size)) {
3102
- return NULL;
3103
- }
3104
- return PyBuffer_New(size);
3105
- }
3106
-
3107
- static PyObject *
3108
- buffer_buffer(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
3109
- {
3110
- PyObject *obj;
3111
- Py_ssize_t offset = 0, n;
3112
- Py_ssize_t size = Py_END_OF_BUFFER;
3113
- void *unused;
3114
- static char *kwlist[] = {"object", "offset", "size", NULL};
3115
-
3116
- if (!PyArg_ParseTupleAndKeywords(args, kwds,
3117
- "O|" NPY_SSIZE_T_PYFMT NPY_SSIZE_T_PYFMT, kwlist,
3118
- &obj, &offset, &size)) {
3119
- return NULL;
3120
- }
3121
- if (PyObject_AsWriteBuffer(obj, &unused, &n) < 0) {
3122
- PyErr_Clear();
3123
- return PyBuffer_FromObject(obj, offset, size);
3124
- }
3125
- else {
3126
- return PyBuffer_FromReadWriteObject(obj, offset, size);
3127
- }
3128
- }
3129
- #endif
3130
-
3131
- #ifndef _MSC_VER
3132
- #include <setjmp.h>
3133
- #include <signal.h>
3134
- jmp_buf _NPY_SIGSEGV_BUF;
3135
- static void
3136
- _SigSegv_Handler(int signum)
3137
- {
3138
- longjmp(_NPY_SIGSEGV_BUF, signum);
3139
- }
3140
- #endif
3141
-
3142
- #define _test_code() { \
3143
- test = *((char*)memptr); \
3144
- if (!ro) { \
3145
- *((char *)memptr) = '\0'; \
3146
- *((char *)memptr) = test; \
3147
- } \
3148
- test = *((char*)memptr+size-1); \
3149
- if (!ro) { \
3150
- *((char *)memptr+size-1) = '\0'; \
3151
- *((char *)memptr+size-1) = test; \
3152
- } \
3153
- }
3154
-
3155
- static PyObject *
3156
- as_buffer(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
3157
- {
3158
- PyObject *mem;
3159
- Py_ssize_t size;
3160
- npy_bool ro = NPY_FALSE, check = NPY_TRUE;
3161
- void *memptr;
3162
- static char *kwlist[] = {"mem", "size", "readonly", "check", NULL};
3163
-
3164
- if (!PyArg_ParseTupleAndKeywords(args, kwds,
3165
- "O" NPY_SSIZE_T_PYFMT "|O&O&", kwlist,
3166
- &mem, &size, PyArray_BoolConverter, &ro,
3167
- PyArray_BoolConverter, &check)) {
3168
- return NULL;
3169
- }
3170
- memptr = PyLong_AsVoidPtr(mem);
3171
- if (memptr == NULL) {
3172
- return NULL;
3173
- }
3174
- if (check) {
3175
- /*
3176
- * Try to dereference the start and end of the memory region
3177
- * Catch segfault and report error if it occurs
3178
- */
3179
- char test;
3180
- int err = 0;
3181
-
3182
- #ifdef _MSC_VER
3183
- __try {
3184
- _test_code();
3185
- }
3186
- __except(1) {
3187
- err = 1;
3188
- }
3189
- #else
3190
- PyOS_sighandler_t _npy_sig_save;
3191
- _npy_sig_save = PyOS_setsig(SIGSEGV, _SigSegv_Handler);
3192
- if (setjmp(_NPY_SIGSEGV_BUF) == 0) {
3193
- _test_code();
3194
- }
3195
- else {
3196
- err = 1;
3197
- }
3198
- PyOS_setsig(SIGSEGV, _npy_sig_save);
3199
- #endif
3200
- if (err) {
3201
- PyErr_SetString(PyExc_ValueError,
3202
- "cannot use memory location as a buffer.");
3203
- return NULL;
3204
- }
3205
- }
3206
-
3207
-
3208
- #if defined(NPY_PY3K)
3209
- PyErr_SetString(PyExc_RuntimeError,
3210
- "XXX -- not implemented!");
3211
- return NULL;
3212
- #else
3213
- if (ro) {
3214
- return PyBuffer_FromMemory(memptr, size);
3215
- }
3216
- return PyBuffer_FromReadWriteMemory(memptr, size);
3217
- #endif
3218
- }
3219
-
3220
- #undef _test_code
3221
-
3222
- static PyObject *
3223
- format_longfloat(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
3224
- {
3225
- PyObject *obj;
3226
- unsigned int precision;
3227
- npy_longdouble x;
3228
- static char *kwlist[] = {"x", "precision", NULL};
3229
- static char repr[100];
3230
-
3231
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OI", kwlist,
3232
- &obj, &precision)) {
3233
- return NULL;
3234
- }
3235
- if (!PyArray_IsScalar(obj, LongDouble)) {
3236
- PyErr_SetString(PyExc_TypeError,
3237
- "not a longfloat");
3238
- return NULL;
3239
- }
3240
- x = ((PyLongDoubleScalarObject *)obj)->obval;
3241
- if (precision > 70) {
3242
- precision = 70;
3243
- }
3244
- format_longdouble(repr, 100, x, precision);
3245
- return PyUString_FromString(repr);
3246
- }
3247
-
3248
- static PyObject *
3249
- compare_chararrays(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
3250
- {
3251
- PyObject *array;
3252
- PyObject *other;
3253
- PyArrayObject *newarr, *newoth;
3254
- int cmp_op;
3255
- npy_bool rstrip;
3256
- char *cmp_str;
3257
- Py_ssize_t strlength;
3258
- PyObject *res = NULL;
3259
- static char msg[] = "comparision must be '==', '!=', '<', '>', '<=', '>='";
3260
- static char *kwlist[] = {"a1", "a2", "cmp", "rstrip", NULL};
3261
-
3262
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOs#O&", kwlist,
3263
- &array, &other, &cmp_str, &strlength,
3264
- PyArray_BoolConverter, &rstrip)) {
3265
- return NULL;
3266
- }
3267
- if (strlength < 1 || strlength > 2) {
3268
- goto err;
3269
- }
3270
- if (strlength > 1) {
3271
- if (cmp_str[1] != '=') {
3272
- goto err;
3273
- }
3274
- if (cmp_str[0] == '=') {
3275
- cmp_op = Py_EQ;
3276
- }
3277
- else if (cmp_str[0] == '!') {
3278
- cmp_op = Py_NE;
3279
- }
3280
- else if (cmp_str[0] == '<') {
3281
- cmp_op = Py_LE;
3282
- }
3283
- else if (cmp_str[0] == '>') {
3284
- cmp_op = Py_GE;
3285
- }
3286
- else {
3287
- goto err;
3288
- }
3289
- }
3290
- else {
3291
- if (cmp_str[0] == '<') {
3292
- cmp_op = Py_LT;
3293
- }
3294
- else if (cmp_str[0] == '>') {
3295
- cmp_op = Py_GT;
3296
- }
3297
- else {
3298
- goto err;
3299
- }
3300
- }
3301
-
3302
- newarr = (PyArrayObject *)PyArray_FROM_O(array);
3303
- if (newarr == NULL) {
3304
- return NULL;
3305
- }
3306
- newoth = (PyArrayObject *)PyArray_FROM_O(other);
3307
- if (newoth == NULL) {
3308
- Py_DECREF(newarr);
3309
- return NULL;
3310
- }
3311
- if (PyArray_ISSTRING(newarr) && PyArray_ISSTRING(newoth)) {
3312
- res = _strings_richcompare(newarr, newoth, cmp_op, rstrip != 0);
3313
- }
3314
- else {
3315
- PyErr_SetString(PyExc_TypeError,
3316
- "comparison of non-string arrays");
3317
- }
3318
- Py_DECREF(newarr);
3319
- Py_DECREF(newoth);
3320
- return res;
3321
-
3322
- err:
3323
- PyErr_SetString(PyExc_ValueError, msg);
3324
- return NULL;
3325
- }
3326
-
3327
- static PyObject *
3328
- _vec_string_with_args(PyArrayObject* char_array, PyArray_Descr* type,
3329
- PyObject* method, PyObject* args)
3330
- {
3331
- PyObject* broadcast_args[NPY_MAXARGS];
3332
- PyArrayMultiIterObject* in_iter = NULL;
3333
- PyArrayObject* result = NULL;
3334
- PyArrayIterObject* out_iter = NULL;
3335
- PyObject* args_tuple = NULL;
3336
- Py_ssize_t i, n, nargs;
3337
-
3338
- nargs = PySequence_Size(args) + 1;
3339
- if (nargs == -1 || nargs > NPY_MAXARGS) {
3340
- PyErr_Format(PyExc_ValueError,
3341
- "len(args) must be < %d", NPY_MAXARGS - 1);
3342
- goto err;
3343
- }
3344
-
3345
- broadcast_args[0] = (PyObject*)char_array;
3346
- for (i = 1; i < nargs; i++) {
3347
- PyObject* item = PySequence_GetItem(args, i-1);
3348
- if (item == NULL) {
3349
- goto err;
3350
- }
3351
- broadcast_args[i] = item;
3352
- Py_DECREF(item);
3353
- }
3354
- in_iter = (PyArrayMultiIterObject*)PyArray_MultiIterFromObjects
3355
- (broadcast_args, nargs, 0);
3356
- if (in_iter == NULL) {
3357
- goto err;
3358
- }
3359
- n = in_iter->numiter;
3360
-
3361
- result = (PyArrayObject*)PyArray_SimpleNewFromDescr(in_iter->nd,
3362
- in_iter->dimensions, type);
3363
- if (result == NULL) {
3364
- goto err;
3365
- }
3366
-
3367
- out_iter = (PyArrayIterObject*)PyArray_IterNew((PyObject*)result);
3368
- if (out_iter == NULL) {
3369
- goto err;
3370
- }
3371
-
3372
- args_tuple = PyTuple_New(n);
3373
- if (args_tuple == NULL) {
3374
- goto err;
3375
- }
3376
-
3377
- while (PyArray_MultiIter_NOTDONE(in_iter)) {
3378
- PyObject* item_result;
3379
-
3380
- for (i = 0; i < n; i++) {
3381
- PyArrayIterObject* it = in_iter->iters[i];
3382
- PyObject* arg = PyArray_ToScalar(PyArray_ITER_DATA(it), it->ao);
3383
- if (arg == NULL) {
3384
- goto err;
3385
- }
3386
- /* Steals ref to arg */
3387
- PyTuple_SetItem(args_tuple, i, arg);
3388
- }
3389
-
3390
- item_result = PyObject_CallObject(method, args_tuple);
3391
- if (item_result == NULL) {
3392
- goto err;
3393
- }
3394
-
3395
- if (PyArray_SETITEM(result, PyArray_ITER_DATA(out_iter), item_result)) {
3396
- Py_DECREF(item_result);
3397
- PyErr_SetString( PyExc_TypeError,
3398
- "result array type does not match underlying function");
3399
- goto err;
3400
- }
3401
- Py_DECREF(item_result);
3402
-
3403
- PyArray_MultiIter_NEXT(in_iter);
3404
- PyArray_ITER_NEXT(out_iter);
3405
- }
3406
-
3407
- Py_DECREF(in_iter);
3408
- Py_DECREF(out_iter);
3409
- Py_DECREF(args_tuple);
3410
-
3411
- return (PyObject*)result;
3412
-
3413
- err:
3414
- Py_XDECREF(in_iter);
3415
- Py_XDECREF(out_iter);
3416
- Py_XDECREF(args_tuple);
3417
- Py_XDECREF(result);
3418
-
3419
- return 0;
3420
- }
3421
-
3422
- static PyObject *
3423
- _vec_string_no_args(PyArrayObject* char_array,
3424
- PyArray_Descr* type, PyObject* method)
3425
- {
3426
- /*
3427
- * This is a faster version of _vec_string_args to use when there
3428
- * are no additional arguments to the string method. This doesn't
3429
- * require a broadcast iterator (and broadcast iterators don't work
3430
- * with 1 argument anyway).
3431
- */
3432
- PyArrayIterObject* in_iter = NULL;
3433
- PyArrayObject* result = NULL;
3434
- PyArrayIterObject* out_iter = NULL;
3435
-
3436
- in_iter = (PyArrayIterObject*)PyArray_IterNew((PyObject*)char_array);
3437
- if (in_iter == NULL) {
3438
- goto err;
3439
- }
3440
-
3441
- result = (PyArrayObject*)PyArray_SimpleNewFromDescr(
3442
- PyArray_NDIM(char_array), PyArray_DIMS(char_array), type);
3443
- if (result == NULL) {
3444
- goto err;
3445
- }
3446
-
3447
- out_iter = (PyArrayIterObject*)PyArray_IterNew((PyObject*)result);
3448
- if (out_iter == NULL) {
3449
- goto err;
3450
- }
3451
-
3452
- while (PyArray_ITER_NOTDONE(in_iter)) {
3453
- PyObject* item_result;
3454
- PyObject* item = PyArray_ToScalar(in_iter->dataptr, in_iter->ao);
3455
- if (item == NULL) {
3456
- goto err;
3457
- }
3458
-
3459
- item_result = PyObject_CallFunctionObjArgs(method, item, NULL);
3460
- Py_DECREF(item);
3461
- if (item_result == NULL) {
3462
- goto err;
3463
- }
3464
-
3465
- if (PyArray_SETITEM(result, PyArray_ITER_DATA(out_iter), item_result)) {
3466
- Py_DECREF(item_result);
3467
- PyErr_SetString( PyExc_TypeError,
3468
- "result array type does not match underlying function");
3469
- goto err;
3470
- }
3471
- Py_DECREF(item_result);
3472
-
3473
- PyArray_ITER_NEXT(in_iter);
3474
- PyArray_ITER_NEXT(out_iter);
3475
- }
3476
-
3477
- Py_DECREF(in_iter);
3478
- Py_DECREF(out_iter);
3479
-
3480
- return (PyObject*)result;
3481
-
3482
- err:
3483
- Py_XDECREF(in_iter);
3484
- Py_XDECREF(out_iter);
3485
- Py_XDECREF(result);
3486
-
3487
- return 0;
3488
- }
3489
-
3490
- static PyObject *
3491
- _vec_string(PyObject *NPY_UNUSED(dummy), PyObject *args, PyObject *kwds)
3492
- {
3493
- PyArrayObject* char_array = NULL;
3494
- PyArray_Descr *type = NULL;
3495
- PyObject* method_name;
3496
- PyObject* args_seq = NULL;
3497
-
3498
- PyObject* method = NULL;
3499
- PyObject* result = NULL;
3500
-
3501
- if (!PyArg_ParseTuple(args, "O&O&O|O",
3502
- PyArray_Converter, &char_array,
3503
- PyArray_DescrConverter, &type,
3504
- &method_name, &args_seq)) {
3505
- goto err;
3506
- }
3507
-
3508
- if (PyArray_TYPE(char_array) == NPY_STRING) {
3509
- method = PyObject_GetAttr((PyObject *)&PyString_Type, method_name);
3510
- }
3511
- else if (PyArray_TYPE(char_array) == NPY_UNICODE) {
3512
- method = PyObject_GetAttr((PyObject *)&PyUnicode_Type, method_name);
3513
- }
3514
- else {
3515
- PyErr_SetString(PyExc_TypeError,
3516
- "string operation on non-string array");
3517
- goto err;
3518
- }
3519
- if (method == NULL) {
3520
- goto err;
3521
- }
3522
-
3523
- if (args_seq == NULL
3524
- || (PySequence_Check(args_seq) && PySequence_Size(args_seq) == 0)) {
3525
- result = _vec_string_no_args(char_array, type, method);
3526
- }
3527
- else if (PySequence_Check(args_seq)) {
3528
- result = _vec_string_with_args(char_array, type, method, args_seq);
3529
- }
3530
- else {
3531
- PyErr_SetString(PyExc_TypeError,
3532
- "'args' must be a sequence of arguments");
3533
- goto err;
3534
- }
3535
- if (result == NULL) {
3536
- goto err;
3537
- }
3538
-
3539
- Py_DECREF(char_array);
3540
- Py_DECREF(method);
3541
-
3542
- return (PyObject*)result;
3543
-
3544
- err:
3545
- Py_XDECREF(char_array);
3546
- Py_XDECREF(method);
3547
-
3548
- return 0;
3549
- }
3550
-
3551
- #ifndef __NPY_PRIVATE_NO_SIGNAL
3552
-
3553
- static NPY_TLS int sigint_buf_init = 0;
3554
- static NPY_TLS NPY_SIGJMP_BUF _NPY_SIGINT_BUF;
3555
-
3556
- /*NUMPY_API
3557
- */
3558
- NPY_NO_EXPORT void
3559
- _PyArray_SigintHandler(int signum)
3560
- {
3561
- PyOS_setsig(signum, SIG_IGN);
3562
- /*
3563
- * jump buffer may be unitialized as SIGINT allowing functions are usually
3564
- * run in other threads than the master thread that receives the signal
3565
- */
3566
- if (sigint_buf_init > 0) {
3567
- NPY_SIGLONGJMP(_NPY_SIGINT_BUF, signum);
3568
- }
3569
- /*
3570
- * sending SIGINT to the worker threads to cancel them is job of the
3571
- * application
3572
- */
3573
- }
3574
-
3575
- /*NUMPY_API
3576
- */
3577
- NPY_NO_EXPORT void*
3578
- _PyArray_GetSigintBuf(void)
3579
- {
3580
- sigint_buf_init = 1;
3581
- return (void *)&_NPY_SIGINT_BUF;
3582
- }
3583
-
3584
- #else
3585
-
3586
- NPY_NO_EXPORT void
3587
- _PyArray_SigintHandler(int signum)
3588
- {
3589
- return;
3590
- }
3591
-
3592
- NPY_NO_EXPORT void*
3593
- _PyArray_GetSigintBuf(void)
3594
- {
3595
- return NULL;
3596
- }
3597
-
3598
- #endif
3599
-
3600
-
3601
- static PyObject *
3602
- test_interrupt(PyObject *NPY_UNUSED(self), PyObject *args)
3603
- {
3604
- int kind = 0;
3605
- int a = 0;
3606
-
3607
- if (!PyArg_ParseTuple(args, "|i", &kind)) {
3608
- return NULL;
3609
- }
3610
- if (kind) {
3611
- Py_BEGIN_ALLOW_THREADS;
3612
- while (a >= 0) {
3613
- if ((a % 1000 == 0) && PyOS_InterruptOccurred()) {
3614
- break;
3615
- }
3616
- a += 1;
3617
- }
3618
- Py_END_ALLOW_THREADS;
3619
- }
3620
- else {
3621
- NPY_SIGINT_ON
3622
- while(a >= 0) {
3623
- a += 1;
3624
- }
3625
- NPY_SIGINT_OFF
3626
- }
3627
- return PyInt_FromLong(a);
3628
- }
3629
-
3630
- static PyObject *
3631
- array_may_share_memory(PyObject *NPY_UNUSED(ignored), PyObject *args)
3632
- {
3633
- PyArrayObject * self = NULL;
3634
- PyArrayObject * other = NULL;
3635
- int overlap;
3636
-
3637
- if (!PyArg_ParseTuple(args, "O&O&", PyArray_Converter, &self,
3638
- PyArray_Converter, &other)) {
3639
- return NULL;
3640
- }
3641
-
3642
- overlap = arrays_overlap(self, other);
3643
- Py_XDECREF(self);
3644
- Py_XDECREF(other);
3645
-
3646
- if (overlap) {
3647
- Py_RETURN_TRUE;
3648
- }
3649
- else {
3650
- Py_RETURN_FALSE;
3651
- }
3652
- }
3653
-
3654
-
3655
-
3656
- static struct PyMethodDef array_module_methods[] = {
3657
- {"_get_ndarray_c_version",
3658
- (PyCFunction)array__get_ndarray_c_version,
3659
- METH_VARARGS|METH_KEYWORDS, NULL},
3660
- {"_reconstruct",
3661
- (PyCFunction)array__reconstruct,
3662
- METH_VARARGS, NULL},
3663
- {"set_string_function",
3664
- (PyCFunction)array_set_string_function,
3665
- METH_VARARGS|METH_KEYWORDS, NULL},
3666
- {"set_numeric_ops",
3667
- (PyCFunction)array_set_ops_function,
3668
- METH_VARARGS|METH_KEYWORDS, NULL},
3669
- {"set_datetimeparse_function",
3670
- (PyCFunction)array_set_datetimeparse_function,
3671
- METH_VARARGS|METH_KEYWORDS, NULL},
3672
- {"set_typeDict",
3673
- (PyCFunction)array_set_typeDict,
3674
- METH_VARARGS, NULL},
3675
- {"array",
3676
- (PyCFunction)_array_fromobject,
3677
- METH_VARARGS|METH_KEYWORDS, NULL},
3678
- {"copyto",
3679
- (PyCFunction)array_copyto,
3680
- METH_VARARGS|METH_KEYWORDS, NULL},
3681
- {"nested_iters",
3682
- (PyCFunction)NpyIter_NestedIters,
3683
- METH_VARARGS|METH_KEYWORDS, NULL},
3684
- {"arange",
3685
- (PyCFunction)array_arange,
3686
- METH_VARARGS|METH_KEYWORDS, NULL},
3687
- {"zeros",
3688
- (PyCFunction)array_zeros,
3689
- METH_VARARGS|METH_KEYWORDS, NULL},
3690
- {"count_nonzero",
3691
- (PyCFunction)array_count_nonzero,
3692
- METH_VARARGS|METH_KEYWORDS, NULL},
3693
- {"empty",
3694
- (PyCFunction)array_empty,
3695
- METH_VARARGS|METH_KEYWORDS, NULL},
3696
- {"empty_like",
3697
- (PyCFunction)array_empty_like,
3698
- METH_VARARGS|METH_KEYWORDS, NULL},
3699
- {"scalar",
3700
- (PyCFunction)array_scalar,
3701
- METH_VARARGS|METH_KEYWORDS, NULL},
3702
- {"where",
3703
- (PyCFunction)array_where,
3704
- METH_VARARGS, NULL},
3705
- {"lexsort",
3706
- (PyCFunction)array_lexsort,
3707
- METH_VARARGS | METH_KEYWORDS, NULL},
3708
- {"putmask",
3709
- (PyCFunction)array_putmask,
3710
- METH_VARARGS | METH_KEYWORDS, NULL},
3711
- {"fromstring",
3712
- (PyCFunction)array_fromstring,
3713
- METH_VARARGS|METH_KEYWORDS, NULL},
3714
- {"fromiter",
3715
- (PyCFunction)array_fromiter,
3716
- METH_VARARGS|METH_KEYWORDS, NULL},
3717
- {"concatenate",
3718
- (PyCFunction)array_concatenate,
3719
- METH_VARARGS|METH_KEYWORDS, NULL},
3720
- {"inner",
3721
- (PyCFunction)array_innerproduct,
3722
- METH_VARARGS, NULL},
3723
- {"dot",
3724
- (PyCFunction)array_matrixproduct,
3725
- METH_VARARGS | METH_KEYWORDS, NULL},
3726
- {"einsum",
3727
- (PyCFunction)array_einsum,
3728
- METH_VARARGS|METH_KEYWORDS, NULL},
3729
- {"_fastCopyAndTranspose",
3730
- (PyCFunction)array_fastCopyAndTranspose,
3731
- METH_VARARGS, NULL},
3732
- {"correlate",
3733
- (PyCFunction)array_correlate,
3734
- METH_VARARGS | METH_KEYWORDS, NULL},
3735
- {"correlate2",
3736
- (PyCFunction)array_correlate2,
3737
- METH_VARARGS | METH_KEYWORDS, NULL},
3738
- {"frombuffer",
3739
- (PyCFunction)array_frombuffer,
3740
- METH_VARARGS | METH_KEYWORDS, NULL},
3741
- {"fromfile",
3742
- (PyCFunction)array_fromfile,
3743
- METH_VARARGS | METH_KEYWORDS, NULL},
3744
- {"can_cast",
3745
- (PyCFunction)array_can_cast_safely,
3746
- METH_VARARGS | METH_KEYWORDS, NULL},
3747
- {"promote_types",
3748
- (PyCFunction)array_promote_types,
3749
- METH_VARARGS, NULL},
3750
- {"min_scalar_type",
3751
- (PyCFunction)array_min_scalar_type,
3752
- METH_VARARGS, NULL},
3753
- {"result_type",
3754
- (PyCFunction)array_result_type,
3755
- METH_VARARGS, NULL},
3756
- {"may_share_memory",
3757
- (PyCFunction)array_may_share_memory,
3758
- METH_VARARGS, NULL},
3759
- /* Datetime-related functions */
3760
- {"datetime_data",
3761
- (PyCFunction)array_datetime_data,
3762
- METH_VARARGS, NULL},
3763
- {"datetime_as_string",
3764
- (PyCFunction)array_datetime_as_string,
3765
- METH_VARARGS | METH_KEYWORDS, NULL},
3766
- /* Datetime business-day API */
3767
- {"busday_offset",
3768
- (PyCFunction)array_busday_offset,
3769
- METH_VARARGS | METH_KEYWORDS, NULL},
3770
- {"busday_count",
3771
- (PyCFunction)array_busday_count,
3772
- METH_VARARGS | METH_KEYWORDS, NULL},
3773
- {"is_busday",
3774
- (PyCFunction)array_is_busday,
3775
- METH_VARARGS | METH_KEYWORDS, NULL},
3776
- #if !defined(NPY_PY3K)
3777
- {"newbuffer",
3778
- (PyCFunction)new_buffer,
3779
- METH_VARARGS, NULL},
3780
- {"getbuffer",
3781
- (PyCFunction)buffer_buffer,
3782
- METH_VARARGS | METH_KEYWORDS, NULL},
3783
- #endif
3784
- {"int_asbuffer",
3785
- (PyCFunction)as_buffer,
3786
- METH_VARARGS | METH_KEYWORDS, NULL},
3787
- {"format_longfloat",
3788
- (PyCFunction)format_longfloat,
3789
- METH_VARARGS | METH_KEYWORDS, NULL},
3790
- {"compare_chararrays",
3791
- (PyCFunction)compare_chararrays,
3792
- METH_VARARGS | METH_KEYWORDS, NULL},
3793
- {"_vec_string",
3794
- (PyCFunction)_vec_string,
3795
- METH_VARARGS | METH_KEYWORDS, NULL},
3796
- {"test_interrupt",
3797
- (PyCFunction)test_interrupt,
3798
- METH_VARARGS, NULL},
3799
- {NULL, NULL, 0, NULL} /* sentinel */
3800
- };
3801
-
3802
- #include "__multiarray_api.c"
3803
-
3804
- /* Establish scalar-type hierarchy
3805
- *
3806
- * For dual inheritance we need to make sure that the objects being
3807
- * inherited from have the tp->mro object initialized. This is
3808
- * not necessarily true for the basic type objects of Python (it is
3809
- * checked for single inheritance but not dual in PyType_Ready).
3810
- *
3811
- * Thus, we call PyType_Ready on the standard Python Types, here.
3812
- */
3813
- static int
3814
- setup_scalartypes(PyObject *NPY_UNUSED(dict))
3815
- {
3816
- initialize_casting_tables();
3817
- initialize_numeric_types();
3818
-
3819
- if (PyType_Ready(&PyBool_Type) < 0) {
3820
- return -1;
3821
- }
3822
- #if !defined(NPY_PY3K)
3823
- if (PyType_Ready(&PyInt_Type) < 0) {
3824
- return -1;
3825
- }
3826
- #endif
3827
- if (PyType_Ready(&PyFloat_Type) < 0) {
3828
- return -1;
3829
- }
3830
- if (PyType_Ready(&PyComplex_Type) < 0) {
3831
- return -1;
3832
- }
3833
- if (PyType_Ready(&PyString_Type) < 0) {
3834
- return -1;
3835
- }
3836
- if (PyType_Ready(&PyUnicode_Type) < 0) {
3837
- return -1;
3838
- }
3839
-
3840
- #define SINGLE_INHERIT(child, parent) \
3841
- Py##child##ArrType_Type.tp_base = &Py##parent##ArrType_Type; \
3842
- if (PyType_Ready(&Py##child##ArrType_Type) < 0) { \
3843
- PyErr_Print(); \
3844
- PyErr_Format(PyExc_SystemError, \
3845
- "could not initialize Py%sArrType_Type", \
3846
- #child); \
3847
- return -1; \
3848
- }
3849
-
3850
- if (PyType_Ready(&PyGenericArrType_Type) < 0) {
3851
- return -1;
3852
- }
3853
- SINGLE_INHERIT(Number, Generic);
3854
- SINGLE_INHERIT(Integer, Number);
3855
- SINGLE_INHERIT(Inexact, Number);
3856
- SINGLE_INHERIT(SignedInteger, Integer);
3857
- SINGLE_INHERIT(UnsignedInteger, Integer);
3858
- SINGLE_INHERIT(Floating, Inexact);
3859
- SINGLE_INHERIT(ComplexFloating, Inexact);
3860
- SINGLE_INHERIT(Flexible, Generic);
3861
- SINGLE_INHERIT(Character, Flexible);
3862
-
3863
- #define DUAL_INHERIT(child, parent1, parent2) \
3864
- Py##child##ArrType_Type.tp_base = &Py##parent2##ArrType_Type; \
3865
- Py##child##ArrType_Type.tp_bases = \
3866
- Py_BuildValue("(OO)", &Py##parent2##ArrType_Type, \
3867
- &Py##parent1##_Type); \
3868
- if (PyType_Ready(&Py##child##ArrType_Type) < 0) { \
3869
- PyErr_Print(); \
3870
- PyErr_Format(PyExc_SystemError, \
3871
- "could not initialize Py%sArrType_Type", \
3872
- #child); \
3873
- return -1; \
3874
- } \
3875
- Py##child##ArrType_Type.tp_hash = Py##parent1##_Type.tp_hash;
3876
-
3877
- /*
3878
- * In Py3K, int is no longer a fixed-width integer type, so don't
3879
- * inherit numpy.int_ from it.
3880
- */
3881
- #if defined(NPY_PY3K)
3882
- #define INHERIT_INT(child, parent2) \
3883
- SINGLE_INHERIT(child, parent2);
3884
- #else
3885
- #define INHERIT_INT(child, parent2) \
3886
- Py##child##ArrType_Type.tp_flags |= Py_TPFLAGS_INT_SUBCLASS; \
3887
- DUAL_INHERIT(child, Int, parent2);
3888
- #endif
3889
-
3890
- #if defined(NPY_PY3K)
3891
- #define DUAL_INHERIT_COMPARE(child, parent1, parent2)
3892
- #else
3893
- #define DUAL_INHERIT_COMPARE(child, parent1, parent2) \
3894
- Py##child##ArrType_Type.tp_compare = \
3895
- Py##parent1##_Type.tp_compare;
3896
- #endif
3897
-
3898
- #define DUAL_INHERIT2(child, parent1, parent2) \
3899
- Py##child##ArrType_Type.tp_base = &Py##parent1##_Type; \
3900
- Py##child##ArrType_Type.tp_bases = \
3901
- Py_BuildValue("(OO)", &Py##parent1##_Type, \
3902
- &Py##parent2##ArrType_Type); \
3903
- Py##child##ArrType_Type.tp_richcompare = \
3904
- Py##parent1##_Type.tp_richcompare; \
3905
- DUAL_INHERIT_COMPARE(child, parent1, parent2) \
3906
- Py##child##ArrType_Type.tp_hash = Py##parent1##_Type.tp_hash; \
3907
- if (PyType_Ready(&Py##child##ArrType_Type) < 0) { \
3908
- PyErr_Print(); \
3909
- PyErr_Format(PyExc_SystemError, \
3910
- "could not initialize Py%sArrType_Type", \
3911
- #child); \
3912
- return -1; \
3913
- }
3914
-
3915
- SINGLE_INHERIT(Bool, Generic);
3916
- SINGLE_INHERIT(Byte, SignedInteger);
3917
- SINGLE_INHERIT(Short, SignedInteger);
3918
-
3919
- #if NPY_SIZEOF_INT == NPY_SIZEOF_LONG
3920
- INHERIT_INT(Int, SignedInteger);
3921
- #else
3922
- SINGLE_INHERIT(Int, SignedInteger);
3923
- #endif
3924
-
3925
- INHERIT_INT(Long, SignedInteger);
3926
-
3927
- #if NPY_SIZEOF_LONGLONG == NPY_SIZEOF_LONG
3928
- INHERIT_INT(LongLong, SignedInteger);
3929
- #else
3930
- SINGLE_INHERIT(LongLong, SignedInteger);
3931
- #endif
3932
-
3933
- /* Datetime doesn't fit in any category */
3934
- SINGLE_INHERIT(Datetime, Generic);
3935
- /* Timedelta is an integer with an associated unit */
3936
- SINGLE_INHERIT(Timedelta, SignedInteger);
3937
-
3938
- /*
3939
- fprintf(stderr,
3940
- "tp_free = %p, PyObject_Del = %p, int_tp_free = %p, base.tp_free = %p\n",
3941
- PyIntArrType_Type.tp_free, PyObject_Del, PyInt_Type.tp_free,
3942
- PySignedIntegerArrType_Type.tp_free);
3943
- */
3944
- SINGLE_INHERIT(UByte, UnsignedInteger);
3945
- SINGLE_INHERIT(UShort, UnsignedInteger);
3946
- SINGLE_INHERIT(UInt, UnsignedInteger);
3947
- SINGLE_INHERIT(ULong, UnsignedInteger);
3948
- SINGLE_INHERIT(ULongLong, UnsignedInteger);
3949
-
3950
- SINGLE_INHERIT(Half, Floating);
3951
- SINGLE_INHERIT(Float, Floating);
3952
- DUAL_INHERIT(Double, Float, Floating);
3953
- SINGLE_INHERIT(LongDouble, Floating);
3954
-
3955
- SINGLE_INHERIT(CFloat, ComplexFloating);
3956
- DUAL_INHERIT(CDouble, Complex, ComplexFloating);
3957
- SINGLE_INHERIT(CLongDouble, ComplexFloating);
3958
-
3959
- DUAL_INHERIT2(String, String, Character);
3960
- DUAL_INHERIT2(Unicode, Unicode, Character);
3961
-
3962
- SINGLE_INHERIT(Void, Flexible);
3963
-
3964
- SINGLE_INHERIT(Object, Generic);
3965
-
3966
- return 0;
3967
-
3968
- #undef SINGLE_INHERIT
3969
- #undef DUAL_INHERIT
3970
- #undef INHERIT_INT
3971
- #undef DUAL_INHERIT2
3972
- #undef DUAL_INHERIT_COMPARE
3973
-
3974
- /*
3975
- * Clean up string and unicode array types so they act more like
3976
- * strings -- get their tables from the standard types.
3977
- */
3978
- }
3979
-
3980
- /* place a flag dictionary in d */
3981
-
3982
- static void
3983
- set_flaginfo(PyObject *d)
3984
- {
3985
- PyObject *s;
3986
- PyObject *newd;
3987
-
3988
- newd = PyDict_New();
3989
-
3990
- #define _addnew(key, val, one) \
3991
- PyDict_SetItemString(newd, #key, s=PyInt_FromLong(val)); \
3992
- Py_DECREF(s); \
3993
- PyDict_SetItemString(newd, #one, s=PyInt_FromLong(val)); \
3994
- Py_DECREF(s)
3995
-
3996
- #define _addone(key, val) \
3997
- PyDict_SetItemString(newd, #key, s=PyInt_FromLong(val)); \
3998
- Py_DECREF(s)
3999
-
4000
- _addnew(OWNDATA, NPY_ARRAY_OWNDATA, O);
4001
- _addnew(FORTRAN, NPY_ARRAY_F_CONTIGUOUS, F);
4002
- _addnew(CONTIGUOUS, NPY_ARRAY_C_CONTIGUOUS, C);
4003
- _addnew(ALIGNED, NPY_ARRAY_ALIGNED, A);
4004
- _addnew(UPDATEIFCOPY, NPY_ARRAY_UPDATEIFCOPY, U);
4005
- _addnew(WRITEABLE, NPY_ARRAY_WRITEABLE, W);
4006
- _addone(C_CONTIGUOUS, NPY_ARRAY_C_CONTIGUOUS);
4007
- _addone(F_CONTIGUOUS, NPY_ARRAY_F_CONTIGUOUS);
4008
-
4009
- #undef _addone
4010
- #undef _addnew
4011
-
4012
- PyDict_SetItemString(d, "_flagdict", newd);
4013
- Py_DECREF(newd);
4014
- return;
4015
- }
4016
-
4017
- #if defined(NPY_PY3K)
4018
- static struct PyModuleDef moduledef = {
4019
- PyModuleDef_HEAD_INIT,
4020
- "multiarray",
4021
- NULL,
4022
- -1,
4023
- array_module_methods,
4024
- NULL,
4025
- NULL,
4026
- NULL,
4027
- NULL
4028
- };
4029
- #endif
4030
-
4031
- /* Initialization function for the module */
4032
- #if defined(NPY_PY3K)
4033
- #define RETVAL m
4034
- PyMODINIT_FUNC PyInit_multiarray(void) {
4035
- #else
4036
- #define RETVAL
4037
- PyMODINIT_FUNC initmultiarray(void) {
4038
- #endif
4039
- PyObject *m, *d, *s;
4040
- PyObject *c_api;
4041
-
4042
- /* Create the module and add the functions */
4043
- #if defined(NPY_PY3K)
4044
- m = PyModule_Create(&moduledef);
4045
- #else
4046
- m = Py_InitModule("multiarray", array_module_methods);
4047
- #endif
4048
- if (!m) {
4049
- goto err;
4050
- }
4051
-
4052
- #if defined(MS_WIN64) && defined(__GNUC__)
4053
- PyErr_WarnEx(PyExc_Warning,
4054
- "Numpy built with MINGW-W64 on Windows 64 bits is experimental, " \
4055
- "and only available for \n" \
4056
- "testing. You are advised not to use it for production. \n\n" \
4057
- "CRASHES ARE TO BE EXPECTED - PLEASE REPORT THEM TO NUMPY DEVELOPERS",
4058
- 1);
4059
- #endif
4060
-
4061
- /* Initialize access to the PyDateTime API */
4062
- numpy_pydatetime_import();
4063
-
4064
- /* Add some symbolic constants to the module */
4065
- d = PyModule_GetDict(m);
4066
- if (!d) {
4067
- goto err;
4068
- }
4069
- if (PyType_Ready(&PyArray_Type) < 0) {
4070
- return RETVAL;
4071
- }
4072
- if (setup_scalartypes(d) < 0) {
4073
- goto err;
4074
- }
4075
- PyArrayIter_Type.tp_iter = PyObject_SelfIter;
4076
- NpyIter_Type.tp_iter = PyObject_SelfIter;
4077
- PyArrayMultiIter_Type.tp_iter = PyObject_SelfIter;
4078
- PyArrayMultiIter_Type.tp_free = PyArray_free;
4079
- if (PyType_Ready(&PyArrayIter_Type) < 0) {
4080
- return RETVAL;
4081
- }
4082
- if (PyType_Ready(&PyArrayMapIter_Type) < 0) {
4083
- return RETVAL;
4084
- }
4085
- if (PyType_Ready(&PyArrayMultiIter_Type) < 0) {
4086
- return RETVAL;
4087
- }
4088
- PyArrayNeighborhoodIter_Type.tp_new = PyType_GenericNew;
4089
- if (PyType_Ready(&PyArrayNeighborhoodIter_Type) < 0) {
4090
- return RETVAL;
4091
- }
4092
- if (PyType_Ready(&NpyIter_Type) < 0) {
4093
- return RETVAL;
4094
- }
4095
-
4096
- PyArrayDescr_Type.tp_hash = PyArray_DescrHash;
4097
- if (PyType_Ready(&PyArrayDescr_Type) < 0) {
4098
- return RETVAL;
4099
- }
4100
- if (PyType_Ready(&PyArrayFlags_Type) < 0) {
4101
- return RETVAL;
4102
- }
4103
- NpyBusDayCalendar_Type.tp_new = PyType_GenericNew;
4104
- if (PyType_Ready(&NpyBusDayCalendar_Type) < 0) {
4105
- return RETVAL;
4106
- }
4107
- /* FIXME
4108
- * There is no error handling here
4109
- */
4110
- c_api = NpyCapsule_FromVoidPtr((void *)PyArray_API, NULL);
4111
- PyDict_SetItemString(d, "_ARRAY_API", c_api);
4112
- Py_DECREF(c_api);
4113
- if (PyErr_Occurred()) {
4114
- goto err;
4115
- }
4116
-
4117
- /* Initialize types in numpymemoryview.c */
4118
- if (_numpymemoryview_init(&s) < 0) {
4119
- return RETVAL;
4120
- }
4121
- if (s != NULL) {
4122
- PyDict_SetItemString(d, "memorysimpleview", s);
4123
- }
4124
-
4125
- /*
4126
- * PyExc_Exception should catch all the standard errors that are
4127
- * now raised instead of the string exception "multiarray.error"
4128
-
4129
- * This is for backward compatibility with existing code.
4130
- */
4131
- PyDict_SetItemString (d, "error", PyExc_Exception);
4132
-
4133
- s = PyUString_FromString("3.1");
4134
- PyDict_SetItemString(d, "__version__", s);
4135
- Py_DECREF(s);
4136
-
4137
- /* FIXME
4138
- * There is no error handling here
4139
- */
4140
- s = NpyCapsule_FromVoidPtr((void *)_datetime_strings, NULL);
4141
- PyDict_SetItemString(d, "DATETIMEUNITS", s);
4142
- Py_DECREF(s);
4143
-
4144
- #define ADDCONST(NAME) \
4145
- s = PyInt_FromLong(NPY_##NAME); \
4146
- PyDict_SetItemString(d, #NAME, s); \
4147
- Py_DECREF(s)
4148
-
4149
-
4150
- ADDCONST(ALLOW_THREADS);
4151
- ADDCONST(BUFSIZE);
4152
- ADDCONST(CLIP);
4153
-
4154
- ADDCONST(ITEM_HASOBJECT);
4155
- ADDCONST(LIST_PICKLE);
4156
- ADDCONST(ITEM_IS_POINTER);
4157
- ADDCONST(NEEDS_INIT);
4158
- ADDCONST(NEEDS_PYAPI);
4159
- ADDCONST(USE_GETITEM);
4160
- ADDCONST(USE_SETITEM);
4161
-
4162
- ADDCONST(RAISE);
4163
- ADDCONST(WRAP);
4164
- ADDCONST(MAXDIMS);
4165
- #undef ADDCONST
4166
-
4167
- Py_INCREF(&PyArray_Type);
4168
- PyDict_SetItemString(d, "ndarray", (PyObject *)&PyArray_Type);
4169
- Py_INCREF(&PyArrayIter_Type);
4170
- PyDict_SetItemString(d, "flatiter", (PyObject *)&PyArrayIter_Type);
4171
- Py_INCREF(&PyArrayMultiIter_Type);
4172
- PyDict_SetItemString(d, "nditer", (PyObject *)&NpyIter_Type);
4173
- Py_INCREF(&NpyIter_Type);
4174
- PyDict_SetItemString(d, "broadcast",
4175
- (PyObject *)&PyArrayMultiIter_Type);
4176
- Py_INCREF(&PyArrayDescr_Type);
4177
- PyDict_SetItemString(d, "dtype", (PyObject *)&PyArrayDescr_Type);
4178
-
4179
- Py_INCREF(&PyArrayFlags_Type);
4180
- PyDict_SetItemString(d, "flagsobj", (PyObject *)&PyArrayFlags_Type);
4181
-
4182
- /* Business day calendar object */
4183
- Py_INCREF(&NpyBusDayCalendar_Type);
4184
- PyDict_SetItemString(d, "busdaycalendar",
4185
- (PyObject *)&NpyBusDayCalendar_Type);
4186
-
4187
- set_flaginfo(d);
4188
-
4189
- if (set_typeinfo(d) != 0) {
4190
- goto err;
4191
- }
4192
- return RETVAL;
4193
-
4194
- err:
4195
- if (!PyErr_Occurred()) {
4196
- PyErr_SetString(PyExc_RuntimeError,
4197
- "cannot load multiarray module.");
4198
- }
4199
- return RETVAL;
4200
- }