numpy 1.9.2__zip → 1.10.0__zip

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

Potentially problematic release.


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

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