numpy 1.9.2__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1593) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/scipy-sphinx-theme/.git +1 -0
  12. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  13. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  16. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  17. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  23. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  31. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  32. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  33. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  39. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  41. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  42. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  43. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  45. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  49. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  50. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  51. numpy-1.10.0.post2/doc/sphinxext/.git +1 -0
  52. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  56. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  57. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  58. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  59. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  60. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  61. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  62. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  63. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  64. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  65. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  66. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  70. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  71. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  72. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  73. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  74. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  75. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  82. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  83. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  84. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  85. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  86. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  87. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  88. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  89. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  90. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  91. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  138. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  139. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  142. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  143. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  147. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  148. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  154. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  155. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  165. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  166. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  197. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  198. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  199. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  200. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  204. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  205. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  206. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  210. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  211. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  212. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  213. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  214. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  215. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  216. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  217. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  218. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  219. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  230. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  231. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  232. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  233. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  234. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  235. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  236. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  237. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  238. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  239. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  240. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  241. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  242. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  243. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  244. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  245. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  246. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  247. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  248. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  249. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  250. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  251. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  252. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  253. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  254. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  267. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  268. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  269. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  272. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  273. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  274. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  275. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  276. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  277. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  278. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  279. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  280. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  281. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  282. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  283. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  284. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  285. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  286. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  287. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  288. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  289. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  290. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  291. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  292. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  293. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  313. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  314. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  315. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  316. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  317. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  318. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  319. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  320. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  322. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  323. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  324. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  325. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  326. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  327. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  328. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  329. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  330. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  335. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  336. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  337. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  338. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  339. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  343. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  344. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  345. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  346. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  347. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  348. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  349. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  350. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  351. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  353. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  354. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  355. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  356. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  357. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  358. numpy-1.10.0.post2/numpy/setup.py +29 -0
  359. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  360. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  361. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  362. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  363. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  364. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  365. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  366. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  367. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  368. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  369. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  370. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  371. numpy-1.10.0.post2/numpy/version.py +10 -0
  372. numpy-1.10.0.post2/setup.py +260 -0
  373. numpy-1.10.0.post2/site.cfg.example +193 -0
  374. numpy-1.10.0.post2/tmp.txt +789 -0
  375. numpy-1.10.0.post2/tools/swig/README +145 -0
  376. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  377. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  378. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  379. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  382. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  383. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  384. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  385. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  387. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  388. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  389. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  390. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  391. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  392. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  393. numpy-1.9.2/INSTALL.txt +0 -138
  394. numpy-1.9.2/LICENSE.txt +0 -30
  395. numpy-1.9.2/MANIFEST.in +0 -26
  396. numpy-1.9.2/PKG-INFO +0 -39
  397. numpy-1.9.2/doc/scipy-sphinx-theme/.git +0 -1
  398. numpy-1.9.2/doc/source/conf.py +0 -331
  399. numpy-1.9.2/doc/source/dev/gitwash/branch_list.png +0 -0
  400. numpy-1.9.2/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  401. numpy-1.9.2/doc/source/dev/gitwash/development_workflow.rst +0 -568
  402. numpy-1.9.2/doc/source/dev/gitwash/git_links.inc +0 -88
  403. numpy-1.9.2/doc/source/dev/gitwash/index.rst +0 -14
  404. numpy-1.9.2/doc/source/dev/index.rst +0 -10
  405. numpy-1.9.2/doc/source/reference/arrays.classes.rst +0 -427
  406. numpy-1.9.2/doc/source/reference/arrays.dtypes.rst +0 -534
  407. numpy-1.9.2/doc/source/reference/arrays.indexing.rst +0 -550
  408. numpy-1.9.2/doc/source/reference/arrays.interface.rst +0 -336
  409. numpy-1.9.2/doc/source/reference/arrays.ndarray.rst +0 -609
  410. numpy-1.9.2/doc/source/reference/arrays.scalars.rst +0 -291
  411. numpy-1.9.2/doc/source/reference/c-api.array.rst +0 -3362
  412. numpy-1.9.2/doc/source/reference/c-api.config.rst +0 -103
  413. numpy-1.9.2/doc/source/reference/c-api.coremath.rst +0 -420
  414. numpy-1.9.2/doc/source/reference/c-api.dtype.rst +0 -376
  415. numpy-1.9.2/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  416. numpy-1.9.2/doc/source/reference/c-api.iterator.rst +0 -1298
  417. numpy-1.9.2/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  418. numpy-1.9.2/doc/source/reference/c-api.ufunc.rst +0 -399
  419. numpy-1.9.2/doc/source/reference/index.rst +0 -44
  420. numpy-1.9.2/doc/source/reference/internals.code-explanations.rst +0 -666
  421. numpy-1.9.2/doc/source/reference/routines.array-manipulation.rst +0 -113
  422. numpy-1.9.2/doc/source/reference/routines.io.rst +0 -74
  423. numpy-1.9.2/doc/source/reference/routines.linalg.rst +0 -88
  424. numpy-1.9.2/doc/source/reference/routines.ma.rst +0 -405
  425. numpy-1.9.2/doc/source/reference/routines.sort.rst +0 -42
  426. numpy-1.9.2/doc/source/reference/routines.statistics.rst +0 -55
  427. numpy-1.9.2/doc/source/reference/swig.interface-file.rst +0 -1055
  428. numpy-1.9.2/doc/source/reference/swig.testing.rst +0 -166
  429. numpy-1.9.2/doc/source/reference/ufuncs.rst +0 -651
  430. numpy-1.9.2/doc/source/release.rst +0 -19
  431. numpy-1.9.2/doc/source/user/basics.io.genfromtxt.rst +0 -531
  432. numpy-1.9.2/doc/source/user/basics.rec.rst +0 -7
  433. numpy-1.9.2/doc/source/user/c-info.beyond-basics.rst +0 -560
  434. numpy-1.9.2/doc/source/user/c-info.how-to-extend.rst +0 -642
  435. numpy-1.9.2/doc/source/user/c-info.python-as-glue.rst +0 -1528
  436. numpy-1.9.2/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  437. numpy-1.9.2/doc/source/user/install.rst +0 -180
  438. numpy-1.9.2/doc/sphinxext/.git +0 -1
  439. numpy-1.9.2/numpy/__init__.py +0 -216
  440. numpy-1.9.2/numpy/_import_tools.py +0 -348
  441. numpy-1.9.2/numpy/add_newdocs.py +0 -7518
  442. numpy-1.9.2/numpy/compat/_inspect.py +0 -221
  443. numpy-1.9.2/numpy/compat/py3k.py +0 -89
  444. numpy-1.9.2/numpy/compat/setup.py +0 -12
  445. numpy-1.9.2/numpy/core/__init__.py +0 -78
  446. numpy-1.9.2/numpy/core/_internal.py +0 -570
  447. numpy-1.9.2/numpy/core/_methods.py +0 -134
  448. numpy-1.9.2/numpy/core/arrayprint.py +0 -752
  449. numpy-1.9.2/numpy/core/blasdot/_dotblas.c +0 -1255
  450. numpy-1.9.2/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  451. numpy-1.9.2/numpy/core/blasdot/cblas.h +0 -578
  452. numpy-1.9.2/numpy/core/code_generators/cversions.txt +0 -31
  453. numpy-1.9.2/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  454. numpy-1.9.2/numpy/core/code_generators/generate_umath.py +0 -972
  455. numpy-1.9.2/numpy/core/code_generators/numpy_api.py +0 -412
  456. numpy-1.9.2/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  457. numpy-1.9.2/numpy/core/defchararray.py +0 -2687
  458. numpy-1.9.2/numpy/core/fromnumeric.py +0 -2938
  459. numpy-1.9.2/numpy/core/function_base.py +0 -190
  460. numpy-1.9.2/numpy/core/getlimits.py +0 -306
  461. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.c +0 -38
  462. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.h +0 -224
  463. numpy-1.9.2/numpy/core/include/numpy/ndarrayobject.h +0 -237
  464. numpy-1.9.2/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  465. numpy-1.9.2/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  466. numpy-1.9.2/numpy/core/include/numpy/npy_common.h +0 -1038
  467. numpy-1.9.2/numpy/core/include/numpy/npy_cpu.h +0 -122
  468. numpy-1.9.2/numpy/core/include/numpy/npy_endian.h +0 -49
  469. numpy-1.9.2/numpy/core/include/numpy/npy_math.h +0 -479
  470. numpy-1.9.2/numpy/core/include/numpy/numpyconfig.h +0 -35
  471. numpy-1.9.2/numpy/core/machar.py +0 -338
  472. numpy-1.9.2/numpy/core/memmap.py +0 -308
  473. numpy-1.9.2/numpy/core/numeric.py +0 -2842
  474. numpy-1.9.2/numpy/core/numerictypes.py +0 -1042
  475. numpy-1.9.2/numpy/core/records.py +0 -804
  476. numpy-1.9.2/numpy/core/setup.py +0 -1016
  477. numpy-1.9.2/numpy/core/setup_common.py +0 -321
  478. numpy-1.9.2/numpy/core/shape_base.py +0 -277
  479. numpy-1.9.2/numpy/core/src/multiarray/alloc.c +0 -241
  480. numpy-1.9.2/numpy/core/src/multiarray/arrayobject.c +0 -1791
  481. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  482. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.h +0 -13
  483. numpy-1.9.2/numpy/core/src/multiarray/buffer.c +0 -954
  484. numpy-1.9.2/numpy/core/src/multiarray/calculation.c +0 -1229
  485. numpy-1.9.2/numpy/core/src/multiarray/common.c +0 -798
  486. numpy-1.9.2/numpy/core/src/multiarray/common.h +0 -328
  487. numpy-1.9.2/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  488. numpy-1.9.2/numpy/core/src/multiarray/convert.c +0 -589
  489. numpy-1.9.2/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  490. numpy-1.9.2/numpy/core/src/multiarray/ctors.c +0 -3785
  491. numpy-1.9.2/numpy/core/src/multiarray/datetime.c +0 -3823
  492. numpy-1.9.2/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  493. numpy-1.9.2/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  494. numpy-1.9.2/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  495. numpy-1.9.2/numpy/core/src/multiarray/descriptor.c +0 -3658
  496. numpy-1.9.2/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  497. numpy-1.9.2/numpy/core/src/multiarray/einsum.c.src +0 -3013
  498. numpy-1.9.2/numpy/core/src/multiarray/getset.c +0 -984
  499. numpy-1.9.2/numpy/core/src/multiarray/hashdescr.c +0 -319
  500. numpy-1.9.2/numpy/core/src/multiarray/item_selection.c +0 -2711
  501. numpy-1.9.2/numpy/core/src/multiarray/iterators.c +0 -2160
  502. numpy-1.9.2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  503. numpy-1.9.2/numpy/core/src/multiarray/mapping.c +0 -3316
  504. numpy-1.9.2/numpy/core/src/multiarray/mapping.h +0 -73
  505. numpy-1.9.2/numpy/core/src/multiarray/methods.c +0 -2497
  506. numpy-1.9.2/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  507. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.c +0 -4202
  508. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  509. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule_onefile.c +0 -58
  510. numpy-1.9.2/numpy/core/src/multiarray/nditer_api.c +0 -2809
  511. numpy-1.9.2/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  512. numpy-1.9.2/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  513. numpy-1.9.2/numpy/core/src/multiarray/number.c +0 -1057
  514. numpy-1.9.2/numpy/core/src/multiarray/number.h +0 -76
  515. numpy-1.9.2/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  516. numpy-1.9.2/numpy/core/src/multiarray/numpyos.c +0 -683
  517. numpy-1.9.2/numpy/core/src/multiarray/scalarapi.c +0 -861
  518. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  519. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.h +0 -52
  520. numpy-1.9.2/numpy/core/src/multiarray/shape.c +0 -1141
  521. numpy-1.9.2/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  522. numpy-1.9.2/numpy/core/src/npymath/ieee754.c.src +0 -814
  523. numpy-1.9.2/numpy/core/src/npymath/npy_math.c.src +0 -527
  524. numpy-1.9.2/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  525. numpy-1.9.2/numpy/core/src/npymath/npy_math_private.h +0 -539
  526. numpy-1.9.2/numpy/core/src/npysort/heapsort.c.src +0 -341
  527. numpy-1.9.2/numpy/core/src/npysort/mergesort.c.src +0 -428
  528. numpy-1.9.2/numpy/core/src/npysort/npysort_common.h +0 -367
  529. numpy-1.9.2/numpy/core/src/npysort/quicksort.c.src +0 -363
  530. numpy-1.9.2/numpy/core/src/npysort/selection.c.src +0 -474
  531. numpy-1.9.2/numpy/core/src/private/npy_config.h +0 -44
  532. numpy-1.9.2/numpy/core/src/private/npy_partition.h.src +0 -138
  533. numpy-1.9.2/numpy/core/src/private/npy_sort.h +0 -194
  534. numpy-1.9.2/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  535. numpy-1.9.2/numpy/core/src/private/ufunc_override.h +0 -384
  536. numpy-1.9.2/numpy/core/src/scalarmathmodule.c.src +0 -1980
  537. numpy-1.9.2/numpy/core/src/umath/funcs.inc.src +0 -715
  538. numpy-1.9.2/numpy/core/src/umath/loops.c.src +0 -2654
  539. numpy-1.9.2/numpy/core/src/umath/loops.h.src +0 -501
  540. numpy-1.9.2/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  541. numpy-1.9.2/numpy/core/src/umath/simd.inc.src +0 -881
  542. numpy-1.9.2/numpy/core/src/umath/test_rational.c.src +0 -1404
  543. numpy-1.9.2/numpy/core/src/umath/ufunc_object.c +0 -5520
  544. numpy-1.9.2/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  545. numpy-1.9.2/numpy/core/src/umath/umath_tests.c.src +0 -341
  546. numpy-1.9.2/numpy/core/src/umath/umathmodule.c +0 -561
  547. numpy-1.9.2/numpy/core/src/umath/umathmodule_onefile.c +0 -6
  548. numpy-1.9.2/numpy/core/tests/test_abc.py +0 -45
  549. numpy-1.9.2/numpy/core/tests/test_api.py +0 -514
  550. numpy-1.9.2/numpy/core/tests/test_arrayprint.py +0 -167
  551. numpy-1.9.2/numpy/core/tests/test_blasdot.py +0 -249
  552. numpy-1.9.2/numpy/core/tests/test_datetime.py +0 -1781
  553. numpy-1.9.2/numpy/core/tests/test_defchararray.py +0 -642
  554. numpy-1.9.2/numpy/core/tests/test_deprecations.py +0 -512
  555. numpy-1.9.2/numpy/core/tests/test_dtype.py +0 -542
  556. numpy-1.9.2/numpy/core/tests/test_einsum.py +0 -583
  557. numpy-1.9.2/numpy/core/tests/test_errstate.py +0 -51
  558. numpy-1.9.2/numpy/core/tests/test_function_base.py +0 -111
  559. numpy-1.9.2/numpy/core/tests/test_getlimits.py +0 -86
  560. numpy-1.9.2/numpy/core/tests/test_half.py +0 -439
  561. numpy-1.9.2/numpy/core/tests/test_indexerrors.py +0 -127
  562. numpy-1.9.2/numpy/core/tests/test_indexing.py +0 -1014
  563. numpy-1.9.2/numpy/core/tests/test_item_selection.py +0 -70
  564. numpy-1.9.2/numpy/core/tests/test_machar.py +0 -30
  565. numpy-1.9.2/numpy/core/tests/test_memmap.py +0 -127
  566. numpy-1.9.2/numpy/core/tests/test_multiarray.py +0 -4645
  567. numpy-1.9.2/numpy/core/tests/test_multiarray_assignment.py +0 -80
  568. numpy-1.9.2/numpy/core/tests/test_nditer.py +0 -2630
  569. numpy-1.9.2/numpy/core/tests/test_numeric.py +0 -2117
  570. numpy-1.9.2/numpy/core/tests/test_numerictypes.py +0 -377
  571. numpy-1.9.2/numpy/core/tests/test_print.py +0 -245
  572. numpy-1.9.2/numpy/core/tests/test_records.py +0 -185
  573. numpy-1.9.2/numpy/core/tests/test_regression.py +0 -2108
  574. numpy-1.9.2/numpy/core/tests/test_scalarinherit.py +0 -34
  575. numpy-1.9.2/numpy/core/tests/test_scalarmath.py +0 -275
  576. numpy-1.9.2/numpy/core/tests/test_shape_base.py +0 -250
  577. numpy-1.9.2/numpy/core/tests/test_ufunc.py +0 -1153
  578. numpy-1.9.2/numpy/core/tests/test_umath.py +0 -1695
  579. numpy-1.9.2/numpy/core/tests/test_umath_complex.py +0 -537
  580. numpy-1.9.2/numpy/core/tests/test_unicode.py +0 -357
  581. numpy-1.9.2/numpy/distutils/__init__.py +0 -39
  582. numpy-1.9.2/numpy/distutils/ccompiler.py +0 -656
  583. numpy-1.9.2/numpy/distutils/command/autodist.py +0 -43
  584. numpy-1.9.2/numpy/distutils/command/build.py +0 -39
  585. numpy-1.9.2/numpy/distutils/command/build_clib.py +0 -284
  586. numpy-1.9.2/numpy/distutils/command/build_ext.py +0 -503
  587. numpy-1.9.2/numpy/distutils/command/config.py +0 -476
  588. numpy-1.9.2/numpy/distutils/exec_command.py +0 -618
  589. numpy-1.9.2/numpy/distutils/fcompiler/compaq.py +0 -128
  590. numpy-1.9.2/numpy/distutils/fcompiler/gnu.py +0 -390
  591. numpy-1.9.2/numpy/distutils/fcompiler/intel.py +0 -205
  592. numpy-1.9.2/numpy/distutils/fcompiler/pg.py +0 -60
  593. numpy-1.9.2/numpy/distutils/fcompiler/sun.py +0 -52
  594. numpy-1.9.2/numpy/distutils/intelccompiler.py +0 -45
  595. numpy-1.9.2/numpy/distutils/lib2def.py +0 -116
  596. numpy-1.9.2/numpy/distutils/mingw32ccompiler.py +0 -582
  597. numpy-1.9.2/numpy/distutils/misc_util.py +0 -2271
  598. numpy-1.9.2/numpy/distutils/npy_pkg_config.py +0 -464
  599. numpy-1.9.2/numpy/distutils/system_info.py +0 -2319
  600. numpy-1.9.2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  601. numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  602. numpy-1.9.2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  603. numpy-1.9.2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  604. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  605. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  606. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  607. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  608. numpy-1.9.2/numpy/distutils/tests/test_misc_util.py +0 -75
  609. numpy-1.9.2/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  610. numpy-1.9.2/numpy/distutils/unixccompiler.py +0 -113
  611. numpy-1.9.2/numpy/doc/byteswapping.py +0 -147
  612. numpy-1.9.2/numpy/doc/creation.py +0 -144
  613. numpy-1.9.2/numpy/doc/glossary.py +0 -418
  614. numpy-1.9.2/numpy/doc/indexing.py +0 -437
  615. numpy-1.9.2/numpy/doc/structured_arrays.py +0 -223
  616. numpy-1.9.2/numpy/f2py/__init__.py +0 -49
  617. numpy-1.9.2/numpy/f2py/auxfuncs.py +0 -711
  618. numpy-1.9.2/numpy/f2py/capi_maps.py +0 -773
  619. numpy-1.9.2/numpy/f2py/cb_rules.py +0 -539
  620. numpy-1.9.2/numpy/f2py/cfuncs.py +0 -1224
  621. numpy-1.9.2/numpy/f2py/common_rules.py +0 -132
  622. numpy-1.9.2/numpy/f2py/crackfortran.py +0 -2870
  623. numpy-1.9.2/numpy/f2py/diagnose.py +0 -149
  624. numpy-1.9.2/numpy/f2py/f2py2e.py +0 -598
  625. numpy-1.9.2/numpy/f2py/f2py_testing.py +0 -46
  626. numpy-1.9.2/numpy/f2py/f90mod_rules.py +0 -246
  627. numpy-1.9.2/numpy/f2py/func2subr.py +0 -291
  628. numpy-1.9.2/numpy/f2py/rules.py +0 -1448
  629. numpy-1.9.2/numpy/f2py/setup.py +0 -129
  630. numpy-1.9.2/numpy/f2py/src/fortranobject.c +0 -972
  631. numpy-1.9.2/numpy/f2py/src/fortranobject.h +0 -162
  632. numpy-1.9.2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  633. numpy-1.9.2/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  634. numpy-1.9.2/numpy/f2py/tests/test_assumed_shape.py +0 -37
  635. numpy-1.9.2/numpy/f2py/tests/test_callback.py +0 -132
  636. numpy-1.9.2/numpy/f2py/tests/test_kind.py +0 -36
  637. numpy-1.9.2/numpy/f2py/tests/test_mixed.py +0 -41
  638. numpy-1.9.2/numpy/f2py/tests/test_regression.py +0 -32
  639. numpy-1.9.2/numpy/f2py/tests/test_return_character.py +0 -142
  640. numpy-1.9.2/numpy/f2py/tests/test_return_complex.py +0 -169
  641. numpy-1.9.2/numpy/f2py/tests/test_return_integer.py +0 -178
  642. numpy-1.9.2/numpy/f2py/tests/test_return_logical.py +0 -187
  643. numpy-1.9.2/numpy/f2py/tests/test_return_real.py +0 -203
  644. numpy-1.9.2/numpy/f2py/tests/test_size.py +0 -47
  645. numpy-1.9.2/numpy/f2py/tests/util.py +0 -353
  646. numpy-1.9.2/numpy/f2py/use_rules.py +0 -109
  647. numpy-1.9.2/numpy/fft/fftpack.c +0 -1501
  648. numpy-1.9.2/numpy/fft/fftpack.h +0 -28
  649. numpy-1.9.2/numpy/fft/fftpack.py +0 -1169
  650. numpy-1.9.2/numpy/fft/fftpack_litemodule.c +0 -371
  651. numpy-1.9.2/numpy/fft/info.py +0 -179
  652. numpy-1.9.2/numpy/fft/setup.py +0 -20
  653. numpy-1.9.2/numpy/fft/tests/test_fftpack.py +0 -75
  654. numpy-1.9.2/numpy/fft/tests/test_helper.py +0 -78
  655. numpy-1.9.2/numpy/lib/_iotools.py +0 -891
  656. numpy-1.9.2/numpy/lib/arraypad.py +0 -1475
  657. numpy-1.9.2/numpy/lib/arraysetops.py +0 -464
  658. numpy-1.9.2/numpy/lib/arrayterator.py +0 -226
  659. numpy-1.9.2/numpy/lib/financial.py +0 -737
  660. numpy-1.9.2/numpy/lib/format.py +0 -771
  661. numpy-1.9.2/numpy/lib/function_base.py +0 -3884
  662. numpy-1.9.2/numpy/lib/index_tricks.py +0 -869
  663. numpy-1.9.2/numpy/lib/info.py +0 -151
  664. numpy-1.9.2/numpy/lib/nanfunctions.py +0 -1158
  665. numpy-1.9.2/numpy/lib/npyio.py +0 -1918
  666. numpy-1.9.2/numpy/lib/polynomial.py +0 -1271
  667. numpy-1.9.2/numpy/lib/recfunctions.py +0 -1003
  668. numpy-1.9.2/numpy/lib/setup.py +0 -23
  669. numpy-1.9.2/numpy/lib/shape_base.py +0 -865
  670. numpy-1.9.2/numpy/lib/src/_compiled_base.c +0 -1761
  671. numpy-1.9.2/numpy/lib/stride_tricks.py +0 -123
  672. numpy-1.9.2/numpy/lib/tests/test__iotools.py +0 -326
  673. numpy-1.9.2/numpy/lib/tests/test__version.py +0 -57
  674. numpy-1.9.2/numpy/lib/tests/test_arraypad.py +0 -560
  675. numpy-1.9.2/numpy/lib/tests/test_arraysetops.py +0 -301
  676. numpy-1.9.2/numpy/lib/tests/test_financial.py +0 -160
  677. numpy-1.9.2/numpy/lib/tests/test_format.py +0 -716
  678. numpy-1.9.2/numpy/lib/tests/test_function_base.py +0 -2145
  679. numpy-1.9.2/numpy/lib/tests/test_index_tricks.py +0 -289
  680. numpy-1.9.2/numpy/lib/tests/test_io.py +0 -1754
  681. numpy-1.9.2/numpy/lib/tests/test_nanfunctions.py +0 -774
  682. numpy-1.9.2/numpy/lib/tests/test_polynomial.py +0 -177
  683. numpy-1.9.2/numpy/lib/tests/test_recfunctions.py +0 -705
  684. numpy-1.9.2/numpy/lib/tests/test_shape_base.py +0 -368
  685. numpy-1.9.2/numpy/lib/tests/test_stride_tricks.py +0 -238
  686. numpy-1.9.2/numpy/lib/tests/test_twodim_base.py +0 -504
  687. numpy-1.9.2/numpy/lib/tests/test_type_check.py +0 -328
  688. numpy-1.9.2/numpy/lib/twodim_base.py +0 -1003
  689. numpy-1.9.2/numpy/lib/type_check.py +0 -605
  690. numpy-1.9.2/numpy/lib/utils.py +0 -1176
  691. numpy-1.9.2/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  692. numpy-1.9.2/numpy/linalg/lapack_litemodule.c +0 -362
  693. numpy-1.9.2/numpy/linalg/linalg.py +0 -2136
  694. numpy-1.9.2/numpy/linalg/tests/test_build.py +0 -53
  695. numpy-1.9.2/numpy/linalg/tests/test_linalg.py +0 -1156
  696. numpy-1.9.2/numpy/linalg/tests/test_regression.py +0 -90
  697. numpy-1.9.2/numpy/linalg/umath_linalg.c.src +0 -3210
  698. numpy-1.9.2/numpy/ma/__init__.py +0 -58
  699. numpy-1.9.2/numpy/ma/bench.py +0 -166
  700. numpy-1.9.2/numpy/ma/core.py +0 -7374
  701. numpy-1.9.2/numpy/ma/extras.py +0 -1932
  702. numpy-1.9.2/numpy/ma/mrecords.py +0 -734
  703. numpy-1.9.2/numpy/ma/setup.py +0 -20
  704. numpy-1.9.2/numpy/ma/tests/test_core.py +0 -3706
  705. numpy-1.9.2/numpy/ma/tests/test_extras.py +0 -954
  706. numpy-1.9.2/numpy/ma/tests/test_mrecords.py +0 -521
  707. numpy-1.9.2/numpy/ma/tests/test_old_ma.py +0 -869
  708. numpy-1.9.2/numpy/ma/tests/test_regression.py +0 -75
  709. numpy-1.9.2/numpy/ma/tests/test_subclassing.py +0 -236
  710. numpy-1.9.2/numpy/ma/testutils.py +0 -240
  711. numpy-1.9.2/numpy/ma/timer_comparison.py +0 -459
  712. numpy-1.9.2/numpy/matlib.py +0 -358
  713. numpy-1.9.2/numpy/matrixlib/defmatrix.py +0 -1094
  714. numpy-1.9.2/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  715. numpy-1.9.2/numpy/matrixlib/tests/test_multiarray.py +0 -18
  716. numpy-1.9.2/numpy/matrixlib/tests/test_numeric.py +0 -10
  717. numpy-1.9.2/numpy/matrixlib/tests/test_regression.py +0 -34
  718. numpy-1.9.2/numpy/polynomial/_polybase.py +0 -962
  719. numpy-1.9.2/numpy/polynomial/chebyshev.py +0 -2056
  720. numpy-1.9.2/numpy/polynomial/hermite.py +0 -1789
  721. numpy-1.9.2/numpy/polynomial/hermite_e.py +0 -1786
  722. numpy-1.9.2/numpy/polynomial/laguerre.py +0 -1781
  723. numpy-1.9.2/numpy/polynomial/legendre.py +0 -1809
  724. numpy-1.9.2/numpy/polynomial/polytemplate.py +0 -927
  725. numpy-1.9.2/numpy/polynomial/polyutils.py +0 -403
  726. numpy-1.9.2/numpy/random/mtrand/distributions.c +0 -892
  727. numpy-1.9.2/numpy/random/mtrand/mtrand.c +0 -31204
  728. numpy-1.9.2/numpy/random/mtrand/mtrand.pyx +0 -4706
  729. numpy-1.9.2/numpy/random/setup.py +0 -74
  730. numpy-1.9.2/numpy/random/tests/test_random.py +0 -707
  731. numpy-1.9.2/numpy/random/tests/test_regression.py +0 -86
  732. numpy-1.9.2/numpy/setup.py +0 -27
  733. numpy-1.9.2/numpy/testing/__init__.py +0 -16
  734. numpy-1.9.2/numpy/testing/decorators.py +0 -271
  735. numpy-1.9.2/numpy/testing/noseclasses.py +0 -353
  736. numpy-1.9.2/numpy/testing/nosetester.py +0 -504
  737. numpy-1.9.2/numpy/testing/print_coercion_tables.py +0 -89
  738. numpy-1.9.2/numpy/testing/setup.py +0 -20
  739. numpy-1.9.2/numpy/testing/tests/test_decorators.py +0 -185
  740. numpy-1.9.2/numpy/testing/tests/test_utils.py +0 -558
  741. numpy-1.9.2/numpy/testing/utils.py +0 -1715
  742. numpy-1.9.2/numpy/tests/test_ctypeslib.py +0 -102
  743. numpy-1.9.2/numpy/tests/test_matlib.py +0 -55
  744. numpy-1.9.2/numpy/version.py +0 -10
  745. numpy-1.9.2/setup.py +0 -251
  746. numpy-1.9.2/site.cfg.example +0 -157
  747. numpy-1.9.2/tools/swig/README +0 -135
  748. numpy-1.9.2/tools/swig/numpy.i +0 -3085
  749. numpy-1.9.2/tools/swig/test/Array.i +0 -102
  750. numpy-1.9.2/tools/swig/test/Makefile +0 -34
  751. numpy-1.9.2/tools/swig/test/setup.py +0 -64
  752. numpy-1.9.2/tools/swig/test/testArray.py +0 -284
  753. numpy-1.9.2/tools/swig/test/testFarray.py +0 -159
  754. numpy-1.9.2/tools/swig/test/testFortran.py +0 -173
  755. numpy-1.9.2/tools/swig/test/testMatrix.py +0 -362
  756. numpy-1.9.2/tools/swig/test/testSuperTensor.py +0 -388
  757. numpy-1.9.2/tools/swig/test/testTensor.py +0 -402
  758. numpy-1.9.2/tools/swig/test/testVector.py +0 -381
  759. {numpy-1.9.2 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  760. {numpy-1.9.2 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  761. {numpy-1.9.2 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  762. {numpy-1.9.2 → numpy-1.10.0.post2}/README.txt +0 -0
  763. {numpy-1.9.2 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  764. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  765. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  766. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  767. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  768. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  769. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  770. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  771. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  772. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  773. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  774. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  775. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  776. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  777. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  778. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  779. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  780. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  781. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  782. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  783. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  784. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  785. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  786. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  787. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  788. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  789. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  790. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  791. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  792. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  793. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  794. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  795. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  796. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  797. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  798. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  799. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  800. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  801. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  802. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  803. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  804. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  805. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  806. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  807. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  808. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  809. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  810. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  811. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  812. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  813. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  814. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  815. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  816. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  817. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  818. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  819. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  820. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  821. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  822. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  823. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  824. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  825. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  826. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  827. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  828. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  829. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  830. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  831. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  832. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  833. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  834. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  835. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  836. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  837. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  838. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  839. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  840. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  841. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  842. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  843. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  844. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  845. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  846. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  847. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  848. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  849. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  850. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  851. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  852. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  853. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  854. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  855. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  856. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  857. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  858. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  859. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  860. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  861. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  862. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  863. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  864. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  865. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  866. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  867. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  868. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  869. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  870. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  871. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  872. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  873. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  874. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  875. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  876. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  877. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  878. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  879. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  880. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  881. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  882. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  883. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  884. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  885. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  886. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  887. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  888. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  889. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  890. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  891. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  892. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  893. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  894. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  895. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  896. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  897. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  898. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  899. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  900. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  901. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  902. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  903. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  904. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  905. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  906. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  907. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  908. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  909. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  910. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  911. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  912. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  913. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  914. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  915. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  916. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  917. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  918. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  919. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  920. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  921. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  922. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  923. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  924. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  925. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  926. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  927. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  928. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  929. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  930. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  931. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  932. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  933. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  934. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  935. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  936. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  937. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  938. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  939. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  940. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  941. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  942. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  943. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  944. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  945. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  946. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  947. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  948. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  949. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  950. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  951. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  952. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  953. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  954. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  955. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  956. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  957. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  958. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  959. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  960. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  961. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  962. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  963. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  964. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  965. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  966. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  967. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  968. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  969. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  970. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  971. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  972. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  973. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  974. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  975. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  976. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  977. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  978. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  979. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  980. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  981. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  982. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  983. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  984. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  985. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  986. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  987. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  988. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  989. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  990. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  991. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  992. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  993. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  994. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  995. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  996. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  997. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  998. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  999. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  1000. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  1001. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  1002. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  1003. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1004. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1005. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1006. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1007. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1008. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1009. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1010. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1011. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1012. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1013. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1014. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1015. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1016. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1017. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1018. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1019. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1020. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1021. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1022. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1023. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1024. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1025. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1026. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1027. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1028. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1029. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1030. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1031. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1032. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1033. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1034. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1035. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1036. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1037. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1038. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1039. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1040. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1041. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1042. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1043. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1044. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1045. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1046. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1047. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1048. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1049. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1050. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1051. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1052. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1053. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1054. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1055. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1056. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1057. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1058. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1059. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1060. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1061. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1062. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1063. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1064. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1065. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1066. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1067. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1068. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1069. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1070. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1071. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1072. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1073. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1074. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1075. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1076. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1077. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1078. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1079. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1080. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1081. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1082. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1083. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1084. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1085. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1086. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1087. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1088. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1089. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1090. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1091. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1092. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1093. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1094. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1095. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1096. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1097. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1098. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1099. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1100. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1101. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1102. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1103. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1104. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1105. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1106. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1107. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1108. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1109. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1110. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1111. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1112. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1113. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1114. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1115. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1116. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1117. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1118. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1119. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1120. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1121. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1122. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1123. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1124. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1125. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1126. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1127. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1128. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1129. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1130. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1131. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1132. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1133. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1134. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1135. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1136. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1137. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1138. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1139. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1140. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1141. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1142. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1143. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1144. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1145. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1146. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1147. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1148. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1149. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1150. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1151. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1152. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1153. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1154. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1155. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1156. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1157. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1158. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1159. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1160. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1161. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1162. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1163. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1164. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1165. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1166. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1167. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1168. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1169. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1170. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1171. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1172. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1173. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1174. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1175. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1176. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1177. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1178. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1179. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1180. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1181. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1182. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1183. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1184. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1185. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1186. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1187. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1188. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1189. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1190. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1191. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1192. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1193. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1194. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1195. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1196. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1197. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1198. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1199. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1200. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1201. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1202. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1203. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1204. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1205. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1206. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1207. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1208. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1209. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1210. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1211. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1212. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1213. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1214. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1215. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1216. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1217. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1218. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1219. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1220. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1221. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1222. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1223. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1224. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1225. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1226. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1227. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1228. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1229. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1230. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1231. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1232. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1233. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1234. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1235. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1236. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1237. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1238. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1239. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1240. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1241. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1242. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1243. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1244. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1245. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1246. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1247. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1248. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1249. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1250. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1251. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1252. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1253. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1254. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1255. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1256. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1257. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1258. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1259. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1260. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1261. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1262. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1263. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1264. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1265. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1266. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1267. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1268. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1269. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1270. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1271. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1272. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1273. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1274. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1275. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1276. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1277. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1278. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1279. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1280. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1281. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1282. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1283. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1284. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1285. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1286. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1287. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1288. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1289. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1290. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1291. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1292. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1293. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1294. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1295. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1296. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1297. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1298. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1299. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1300. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1301. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1302. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1303. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1304. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1305. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1306. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1307. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1308. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1309. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1310. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1311. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1312. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1313. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1314. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1315. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1316. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1317. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1318. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1319. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1320. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1321. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1322. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1323. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1324. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1325. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1326. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1327. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1328. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1329. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1330. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1331. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1332. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1333. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1334. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1335. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1336. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1337. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1338. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1339. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1340. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1341. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1342. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1343. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1344. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1345. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1346. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1347. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1348. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1349. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1350. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1351. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1352. {numpy-1.9.2/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1353. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1354. {numpy-1.9.2/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1355. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1356. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1357. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1358. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1359. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1360. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1361. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1362. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1363. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1364. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1365. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1366. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1367. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1368. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1369. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1370. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1371. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1372. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1373. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1374. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1375. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1376. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1377. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1378. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1379. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1380. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1381. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1382. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1383. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1384. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1385. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1386. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1387. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1388. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1389. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1390. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1391. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1392. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1393. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1394. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1395. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1396. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1397. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1398. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1399. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1400. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1401. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1402. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1403. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1404. {numpy-1.9.2/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1405. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1406. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1407. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1408. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1409. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1410. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1411. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1412. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1413. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1414. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1415. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1416. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1417. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1418. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1419. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1420. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1421. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1422. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1423. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1424. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1425. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1426. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1427. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1428. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1429. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1430. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1431. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1432. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1433. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1434. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1435. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1436. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1437. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1438. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1439. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1440. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1441. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1442. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1443. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1444. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1445. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1446. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1447. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1448. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1449. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1450. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1451. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1452. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1453. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1454. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1455. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1456. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1457. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1458. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1459. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1460. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1461. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1462. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1463. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1464. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1465. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1466. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1467. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1468. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1469. {numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1470. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1471. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1472. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1473. {numpy-1.9.2/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1474. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1475. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1476. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1477. {numpy-1.9.2/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1478. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1479. {numpy-1.9.2/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1480. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1481. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1482. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1483. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1484. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1485. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1486. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1487. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1488. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1489. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1490. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1491. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1492. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1493. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1494. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1495. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1496. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1497. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1498. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1499. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1500. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1501. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1502. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1503. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1504. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1505. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1506. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1507. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1508. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1509. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1510. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1511. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1512. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1513. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1514. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1515. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1516. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1517. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1518. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1519. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1520. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1521. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1522. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1523. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1524. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1525. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1526. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1527. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1528. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1529. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1530. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1531. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1532. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1533. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1534. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1535. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1536. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1537. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1538. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1539. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1540. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1541. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1542. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1543. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1544. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1545. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1546. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1547. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1548. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1549. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1550. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1551. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1552. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1553. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1554. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1555. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1556. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1557. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1558. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1559. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1560. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1561. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1562. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1563. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1564. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1565. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1566. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1567. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1568. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1569. {numpy-1.9.2 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1570. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1571. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1572. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1573. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1574. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1575. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1576. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1577. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1578. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1579. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1580. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1581. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1582. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1583. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1584. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1585. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1586. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1587. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1588. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1589. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1590. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1591. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1592. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1593. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -0,0 +1,2159 @@
1
+ /*
2
+ * This file implements type resolution for NumPy element-wise ufuncs.
3
+ * This mechanism is still backwards-compatible with the pre-existing
4
+ * legacy mechanism, so performs much slower than is necessary.
5
+ *
6
+ * Written by Mark Wiebe (mwwiebe@gmail.com)
7
+ * Copyright (c) 2011 by Enthought, Inc.
8
+ *
9
+ * See LICENSE.txt for the license.
10
+ */
11
+ #define _UMATHMODULE
12
+ #define NPY_NO_DEPRECATED_API NPY_API_VERSION
13
+
14
+ #include "Python.h"
15
+
16
+ #include "npy_config.h"
17
+ #ifdef ENABLE_SEPARATE_COMPILATION
18
+ #define PY_ARRAY_UNIQUE_SYMBOL _npy_umathmodule_ARRAY_API
19
+ #define NO_IMPORT_ARRAY
20
+ #endif
21
+
22
+ #include "npy_pycompat.h"
23
+
24
+ #include "numpy/ufuncobject.h"
25
+ #include "ufunc_type_resolution.h"
26
+ #include "common.h"
27
+
28
+ static const char *
29
+ npy_casting_to_string(NPY_CASTING casting)
30
+ {
31
+ switch (casting) {
32
+ case NPY_NO_CASTING:
33
+ return "'no'";
34
+ case NPY_EQUIV_CASTING:
35
+ return "'equiv'";
36
+ case NPY_SAFE_CASTING:
37
+ return "'safe'";
38
+ case NPY_SAME_KIND_CASTING:
39
+ return "'same_kind'";
40
+ case NPY_UNSAFE_CASTING:
41
+ return "'unsafe'";
42
+ default:
43
+ return "<unknown>";
44
+ }
45
+ }
46
+ /*UFUNC_API
47
+ *
48
+ * Validates that the input operands can be cast to
49
+ * the input types, and the output types can be cast to
50
+ * the output operands where provided.
51
+ *
52
+ * Returns 0 on success, -1 (with exception raised) on validation failure.
53
+ */
54
+ NPY_NO_EXPORT int
55
+ PyUFunc_ValidateCasting(PyUFuncObject *ufunc,
56
+ NPY_CASTING casting,
57
+ PyArrayObject **operands,
58
+ PyArray_Descr **dtypes)
59
+ {
60
+ int i, nin = ufunc->nin, nop = nin + ufunc->nout;
61
+ const char *ufunc_name;
62
+
63
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
64
+
65
+ for (i = 0; i < nop; ++i) {
66
+ if (i < nin) {
67
+ if (!PyArray_CanCastArrayTo(operands[i], dtypes[i], casting)) {
68
+ PyObject *errmsg;
69
+ errmsg = PyUString_FromFormat("Cannot cast ufunc %s "
70
+ "input from ", ufunc_name);
71
+ PyUString_ConcatAndDel(&errmsg,
72
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[i])));
73
+ PyUString_ConcatAndDel(&errmsg,
74
+ PyUString_FromString(" to "));
75
+ PyUString_ConcatAndDel(&errmsg,
76
+ PyObject_Repr((PyObject *)dtypes[i]));
77
+ PyUString_ConcatAndDel(&errmsg,
78
+ PyUString_FromFormat(" with casting rule %s",
79
+ npy_casting_to_string(casting)));
80
+ PyErr_SetObject(PyExc_TypeError, errmsg);
81
+ Py_DECREF(errmsg);
82
+ return -1;
83
+ }
84
+ } else if (operands[i] != NULL) {
85
+ if (!PyArray_CanCastTypeTo(dtypes[i],
86
+ PyArray_DESCR(operands[i]), casting)) {
87
+ PyObject *errmsg;
88
+ errmsg = PyUString_FromFormat("Cannot cast ufunc %s "
89
+ "output from ", ufunc_name);
90
+ PyUString_ConcatAndDel(&errmsg,
91
+ PyObject_Repr((PyObject *)dtypes[i]));
92
+ PyUString_ConcatAndDel(&errmsg,
93
+ PyUString_FromString(" to "));
94
+ PyUString_ConcatAndDel(&errmsg,
95
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[i])));
96
+ PyUString_ConcatAndDel(&errmsg,
97
+ PyUString_FromFormat(" with casting rule %s",
98
+ npy_casting_to_string(casting)));
99
+ PyErr_SetObject(PyExc_TypeError, errmsg);
100
+ Py_DECREF(errmsg);
101
+ return -1;
102
+ }
103
+ }
104
+ }
105
+
106
+ return 0;
107
+ }
108
+
109
+ /*
110
+ * Returns a new reference to type if it is already NBO, otherwise
111
+ * returns a copy converted to NBO.
112
+ */
113
+ static PyArray_Descr *
114
+ ensure_dtype_nbo(PyArray_Descr *type)
115
+ {
116
+ if (PyArray_ISNBO(type->byteorder)) {
117
+ Py_INCREF(type);
118
+ return type;
119
+ }
120
+ else {
121
+ return PyArray_DescrNewByteorder(type, NPY_NATIVE);
122
+ }
123
+ }
124
+
125
+ /*UFUNC_API
126
+ *
127
+ * This function applies the default type resolution rules
128
+ * for the provided ufunc.
129
+ *
130
+ * Returns 0 on success, -1 on error.
131
+ */
132
+ NPY_NO_EXPORT int
133
+ PyUFunc_DefaultTypeResolver(PyUFuncObject *ufunc,
134
+ NPY_CASTING casting,
135
+ PyArrayObject **operands,
136
+ PyObject *type_tup,
137
+ PyArray_Descr **out_dtypes)
138
+ {
139
+ int i, nop = ufunc->nin + ufunc->nout;
140
+ int retval = 0, any_object = 0;
141
+ NPY_CASTING input_casting;
142
+
143
+ for (i = 0; i < nop; ++i) {
144
+ if (operands[i] != NULL &&
145
+ PyTypeNum_ISOBJECT(PyArray_DESCR(operands[i])->type_num)) {
146
+ any_object = 1;
147
+ break;
148
+ }
149
+ }
150
+
151
+ /*
152
+ * Decide the casting rules for inputs and outputs. We want
153
+ * NPY_SAFE_CASTING or stricter, so that the loop selection code
154
+ * doesn't choose an integer loop for float inputs, or a float32
155
+ * loop for float64 inputs.
156
+ */
157
+ input_casting = (casting > NPY_SAFE_CASTING) ? NPY_SAFE_CASTING : casting;
158
+
159
+ if (type_tup == NULL) {
160
+ /* Find the best ufunc inner loop, and fill in the dtypes */
161
+ retval = linear_search_type_resolver(ufunc, operands,
162
+ input_casting, casting, any_object,
163
+ out_dtypes);
164
+ } else {
165
+ /* Find the specified ufunc inner loop, and fill in the dtypes */
166
+ retval = type_tuple_type_resolver(ufunc, type_tup,
167
+ operands, casting, any_object, out_dtypes);
168
+ }
169
+
170
+ return retval;
171
+ }
172
+
173
+ /*
174
+ * This function applies special type resolution rules for the case
175
+ * where all the functions have the pattern XX->bool, using
176
+ * PyArray_ResultType instead of a linear search to get the best
177
+ * loop.
178
+ *
179
+ * Returns 0 on success, -1 on error.
180
+ */
181
+ NPY_NO_EXPORT int
182
+ PyUFunc_SimpleBinaryComparisonTypeResolver(PyUFuncObject *ufunc,
183
+ NPY_CASTING casting,
184
+ PyArrayObject **operands,
185
+ PyObject *type_tup,
186
+ PyArray_Descr **out_dtypes)
187
+ {
188
+ int i, type_num1, type_num2;
189
+ const char *ufunc_name;
190
+
191
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
192
+
193
+ if (ufunc->nin != 2 || ufunc->nout != 1) {
194
+ PyErr_Format(PyExc_RuntimeError, "ufunc %s is configured "
195
+ "to use binary comparison type resolution but has "
196
+ "the wrong number of inputs or outputs",
197
+ ufunc_name);
198
+ return -1;
199
+ }
200
+
201
+ /*
202
+ * Use the default type resolution if there's a custom data type
203
+ * or object arrays.
204
+ */
205
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
206
+ type_num2 = PyArray_DESCR(operands[1])->type_num;
207
+ if (type_num1 >= NPY_NTYPES || type_num2 >= NPY_NTYPES ||
208
+ type_num1 == NPY_OBJECT || type_num2 == NPY_OBJECT) {
209
+ return PyUFunc_DefaultTypeResolver(ufunc, casting, operands,
210
+ type_tup, out_dtypes);
211
+ }
212
+
213
+ if (type_tup == NULL) {
214
+ /* Input types are the result type */
215
+ out_dtypes[0] = PyArray_ResultType(2, operands, 0, NULL);
216
+ if (out_dtypes[0] == NULL) {
217
+ return -1;
218
+ }
219
+ out_dtypes[1] = out_dtypes[0];
220
+ Py_INCREF(out_dtypes[1]);
221
+ }
222
+ else {
223
+ PyObject *item;
224
+ PyArray_Descr *dtype = NULL;
225
+
226
+ /*
227
+ * If the type tuple isn't a single-element tuple, let the
228
+ * default type resolution handle this one.
229
+ */
230
+ if (!PyTuple_Check(type_tup) || PyTuple_GET_SIZE(type_tup) != 1) {
231
+ return PyUFunc_DefaultTypeResolver(ufunc, casting,
232
+ operands, type_tup, out_dtypes);
233
+ }
234
+
235
+ item = PyTuple_GET_ITEM(type_tup, 0);
236
+
237
+ if (item == Py_None) {
238
+ PyErr_SetString(PyExc_ValueError,
239
+ "require data type in the type tuple");
240
+ return -1;
241
+ }
242
+ else if (!PyArray_DescrConverter(item, &dtype)) {
243
+ return -1;
244
+ }
245
+
246
+ out_dtypes[0] = ensure_dtype_nbo(dtype);
247
+ if (out_dtypes[0] == NULL) {
248
+ return -1;
249
+ }
250
+ out_dtypes[1] = out_dtypes[0];
251
+ Py_INCREF(out_dtypes[1]);
252
+ }
253
+
254
+ /* Output type is always boolean */
255
+ out_dtypes[2] = PyArray_DescrFromType(NPY_BOOL);
256
+ if (out_dtypes[2] == NULL) {
257
+ for (i = 0; i < 2; ++i) {
258
+ Py_DECREF(out_dtypes[i]);
259
+ out_dtypes[i] = NULL;
260
+ }
261
+ return -1;
262
+ }
263
+
264
+ /* Check against the casting rules */
265
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
266
+ for (i = 0; i < 3; ++i) {
267
+ Py_DECREF(out_dtypes[i]);
268
+ out_dtypes[i] = NULL;
269
+ }
270
+ return -1;
271
+ }
272
+
273
+ return 0;
274
+ }
275
+
276
+ /*
277
+ * This function applies special type resolution rules for the case
278
+ * where all the functions have the pattern X->X, copying
279
+ * the input descr directly so that metadata is maintained.
280
+ *
281
+ * Note that a simpler linear search through the functions loop
282
+ * is still done, but switching to a simple array lookup for
283
+ * built-in types would be better at some point.
284
+ *
285
+ * Returns 0 on success, -1 on error.
286
+ */
287
+ NPY_NO_EXPORT int
288
+ PyUFunc_SimpleUnaryOperationTypeResolver(PyUFuncObject *ufunc,
289
+ NPY_CASTING casting,
290
+ PyArrayObject **operands,
291
+ PyObject *type_tup,
292
+ PyArray_Descr **out_dtypes)
293
+ {
294
+ int i, type_num1;
295
+ const char *ufunc_name;
296
+
297
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
298
+
299
+ if (ufunc->nin != 1 || ufunc->nout != 1) {
300
+ PyErr_Format(PyExc_RuntimeError, "ufunc %s is configured "
301
+ "to use unary operation type resolution but has "
302
+ "the wrong number of inputs or outputs",
303
+ ufunc_name);
304
+ return -1;
305
+ }
306
+
307
+ /*
308
+ * Use the default type resolution if there's a custom data type
309
+ * or object arrays.
310
+ */
311
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
312
+ if (type_num1 >= NPY_NTYPES || type_num1 == NPY_OBJECT) {
313
+ return PyUFunc_DefaultTypeResolver(ufunc, casting, operands,
314
+ type_tup, out_dtypes);
315
+ }
316
+
317
+ if (type_tup == NULL) {
318
+ /* Input types are the result type */
319
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
320
+ if (out_dtypes[0] == NULL) {
321
+ return -1;
322
+ }
323
+ out_dtypes[1] = out_dtypes[0];
324
+ Py_INCREF(out_dtypes[1]);
325
+ }
326
+ else {
327
+ PyObject *item;
328
+ PyArray_Descr *dtype = NULL;
329
+
330
+ /*
331
+ * If the type tuple isn't a single-element tuple, let the
332
+ * default type resolution handle this one.
333
+ */
334
+ if (!PyTuple_Check(type_tup) || PyTuple_GET_SIZE(type_tup) != 1) {
335
+ return PyUFunc_DefaultTypeResolver(ufunc, casting,
336
+ operands, type_tup, out_dtypes);
337
+ }
338
+
339
+ item = PyTuple_GET_ITEM(type_tup, 0);
340
+
341
+ if (item == Py_None) {
342
+ PyErr_SetString(PyExc_ValueError,
343
+ "require data type in the type tuple");
344
+ return -1;
345
+ }
346
+ else if (!PyArray_DescrConverter(item, &dtype)) {
347
+ return -1;
348
+ }
349
+
350
+ out_dtypes[0] = ensure_dtype_nbo(dtype);
351
+ if (out_dtypes[0] == NULL) {
352
+ return -1;
353
+ }
354
+ out_dtypes[1] = out_dtypes[0];
355
+ Py_INCREF(out_dtypes[1]);
356
+ }
357
+
358
+ /* Check against the casting rules */
359
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
360
+ for (i = 0; i < 2; ++i) {
361
+ Py_DECREF(out_dtypes[i]);
362
+ out_dtypes[i] = NULL;
363
+ }
364
+ return -1;
365
+ }
366
+
367
+ return 0;
368
+ }
369
+
370
+
371
+ NPY_NO_EXPORT int
372
+ PyUFunc_NegativeTypeResolver(PyUFuncObject *ufunc,
373
+ NPY_CASTING casting,
374
+ PyArrayObject **operands,
375
+ PyObject *type_tup,
376
+ PyArray_Descr **out_dtypes)
377
+ {
378
+ int ret;
379
+ ret = PyUFunc_SimpleUnaryOperationTypeResolver(ufunc, casting, operands,
380
+ type_tup, out_dtypes);
381
+ if (ret < 0) {
382
+ return ret;
383
+ }
384
+
385
+ /* The type resolver would have upcast already */
386
+ if (out_dtypes[0]->type_num == NPY_BOOL) {
387
+ /* 2013-12-05, 1.9 */
388
+ if (DEPRECATE("numpy boolean negative, the `-` operator, is "
389
+ "deprecated, use the `~` operator or the logical_not "
390
+ "function instead.") < 0) {
391
+ return -1;
392
+ }
393
+ }
394
+
395
+ return ret;
396
+ }
397
+
398
+
399
+ /*
400
+ * The ones_like function shouldn't really be a ufunc, but while it
401
+ * still is, this provides type resolution that always forces UNSAFE
402
+ * casting.
403
+ */
404
+ NPY_NO_EXPORT int
405
+ PyUFunc_OnesLikeTypeResolver(PyUFuncObject *ufunc,
406
+ NPY_CASTING NPY_UNUSED(casting),
407
+ PyArrayObject **operands,
408
+ PyObject *type_tup,
409
+ PyArray_Descr **out_dtypes)
410
+ {
411
+ return PyUFunc_SimpleUnaryOperationTypeResolver(ufunc,
412
+ NPY_UNSAFE_CASTING,
413
+ operands, type_tup, out_dtypes);
414
+ }
415
+
416
+
417
+ /*
418
+ * This function applies special type resolution rules for the case
419
+ * where all the functions have the pattern XX->X, using
420
+ * PyArray_ResultType instead of a linear search to get the best
421
+ * loop.
422
+ *
423
+ * Note that a simpler linear search through the functions loop
424
+ * is still done, but switching to a simple array lookup for
425
+ * built-in types would be better at some point.
426
+ *
427
+ * Returns 0 on success, -1 on error.
428
+ */
429
+ NPY_NO_EXPORT int
430
+ PyUFunc_SimpleBinaryOperationTypeResolver(PyUFuncObject *ufunc,
431
+ NPY_CASTING casting,
432
+ PyArrayObject **operands,
433
+ PyObject *type_tup,
434
+ PyArray_Descr **out_dtypes)
435
+ {
436
+ int i, type_num1, type_num2;
437
+ const char *ufunc_name;
438
+
439
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
440
+
441
+ if (ufunc->nin != 2 || ufunc->nout != 1) {
442
+ PyErr_Format(PyExc_RuntimeError, "ufunc %s is configured "
443
+ "to use binary operation type resolution but has "
444
+ "the wrong number of inputs or outputs",
445
+ ufunc_name);
446
+ return -1;
447
+ }
448
+
449
+ /*
450
+ * Use the default type resolution if there's a custom data type
451
+ * or object arrays.
452
+ */
453
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
454
+ type_num2 = PyArray_DESCR(operands[1])->type_num;
455
+ if (type_num1 >= NPY_NTYPES || type_num2 >= NPY_NTYPES ||
456
+ type_num1 == NPY_OBJECT || type_num2 == NPY_OBJECT) {
457
+ return PyUFunc_DefaultTypeResolver(ufunc, casting, operands,
458
+ type_tup, out_dtypes);
459
+ }
460
+
461
+ if (type_tup == NULL) {
462
+ /* Input types are the result type */
463
+ out_dtypes[0] = PyArray_ResultType(2, operands, 0, NULL);
464
+ if (out_dtypes[0] == NULL) {
465
+ return -1;
466
+ }
467
+ out_dtypes[1] = out_dtypes[0];
468
+ Py_INCREF(out_dtypes[1]);
469
+ out_dtypes[2] = out_dtypes[0];
470
+ Py_INCREF(out_dtypes[2]);
471
+ }
472
+ else {
473
+ PyObject *item;
474
+ PyArray_Descr *dtype = NULL;
475
+
476
+ /*
477
+ * If the type tuple isn't a single-element tuple, let the
478
+ * default type resolution handle this one.
479
+ */
480
+ if (!PyTuple_Check(type_tup) || PyTuple_GET_SIZE(type_tup) != 1) {
481
+ return PyUFunc_DefaultTypeResolver(ufunc, casting,
482
+ operands, type_tup, out_dtypes);
483
+ }
484
+
485
+ item = PyTuple_GET_ITEM(type_tup, 0);
486
+
487
+ if (item == Py_None) {
488
+ PyErr_SetString(PyExc_ValueError,
489
+ "require data type in the type tuple");
490
+ return -1;
491
+ }
492
+ else if (!PyArray_DescrConverter(item, &dtype)) {
493
+ return -1;
494
+ }
495
+
496
+ out_dtypes[0] = ensure_dtype_nbo(dtype);
497
+ if (out_dtypes[0] == NULL) {
498
+ return -1;
499
+ }
500
+ out_dtypes[1] = out_dtypes[0];
501
+ Py_INCREF(out_dtypes[1]);
502
+ out_dtypes[2] = out_dtypes[0];
503
+ Py_INCREF(out_dtypes[2]);
504
+ }
505
+
506
+ /* Check against the casting rules */
507
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
508
+ for (i = 0; i < 3; ++i) {
509
+ Py_DECREF(out_dtypes[i]);
510
+ out_dtypes[i] = NULL;
511
+ }
512
+ return -1;
513
+ }
514
+
515
+ return 0;
516
+ }
517
+
518
+ /*
519
+ * This function applies special type resolution rules for the absolute
520
+ * ufunc. This ufunc converts complex -> float, so isn't covered
521
+ * by the simple unary type resolution.
522
+ *
523
+ * Returns 0 on success, -1 on error.
524
+ */
525
+ NPY_NO_EXPORT int
526
+ PyUFunc_AbsoluteTypeResolver(PyUFuncObject *ufunc,
527
+ NPY_CASTING casting,
528
+ PyArrayObject **operands,
529
+ PyObject *type_tup,
530
+ PyArray_Descr **out_dtypes)
531
+ {
532
+ /* Use the default for complex types, to find the loop producing float */
533
+ if (PyTypeNum_ISCOMPLEX(PyArray_DESCR(operands[0])->type_num)) {
534
+ return PyUFunc_DefaultTypeResolver(ufunc, casting, operands,
535
+ type_tup, out_dtypes);
536
+ }
537
+ else {
538
+ return PyUFunc_SimpleUnaryOperationTypeResolver(ufunc, casting,
539
+ operands, type_tup, out_dtypes);
540
+ }
541
+ }
542
+
543
+ /*
544
+ * Creates a new NPY_TIMEDELTA dtype, copying the datetime metadata
545
+ * from the given dtype.
546
+ *
547
+ * NOTE: This function is copied from datetime.c in multiarray,
548
+ * because umath and multiarray are not linked together.
549
+ */
550
+ static PyArray_Descr *
551
+ timedelta_dtype_with_copied_meta(PyArray_Descr *dtype)
552
+ {
553
+ PyArray_Descr *ret;
554
+ PyArray_DatetimeMetaData *dst, *src;
555
+ PyArray_DatetimeDTypeMetaData *dst_dtmd, *src_dtmd;
556
+
557
+ ret = PyArray_DescrNewFromType(NPY_TIMEDELTA);
558
+ if (ret == NULL) {
559
+ return NULL;
560
+ }
561
+
562
+ src_dtmd = ((PyArray_DatetimeDTypeMetaData *)dtype->c_metadata);
563
+ dst_dtmd = ((PyArray_DatetimeDTypeMetaData *)ret->c_metadata);
564
+ src = &(src_dtmd->meta);
565
+ dst = &(dst_dtmd->meta);
566
+
567
+ *dst = *src;
568
+
569
+ return ret;
570
+ }
571
+
572
+ /*
573
+ * This function applies the type resolution rules for addition.
574
+ * In particular, there are a number of special cases with datetime:
575
+ * m8[<A>] + m8[<B>] => m8[gcd(<A>,<B>)] + m8[gcd(<A>,<B>)]
576
+ * m8[<A>] + int => m8[<A>] + m8[<A>]
577
+ * int + m8[<A>] => m8[<A>] + m8[<A>]
578
+ * M8[<A>] + int => M8[<A>] + m8[<A>]
579
+ * int + M8[<A>] => m8[<A>] + M8[<A>]
580
+ * M8[<A>] + m8[<B>] => M8[gcd(<A>,<B>)] + m8[gcd(<A>,<B>)]
581
+ * m8[<A>] + M8[<B>] => m8[gcd(<A>,<B>)] + M8[gcd(<A>,<B>)]
582
+ * TODO: Non-linear time unit cases require highly special-cased loops
583
+ * M8[<A>] + m8[Y|M|B]
584
+ * m8[Y|M|B] + M8[<A>]
585
+ */
586
+ NPY_NO_EXPORT int
587
+ PyUFunc_AdditionTypeResolver(PyUFuncObject *ufunc,
588
+ NPY_CASTING casting,
589
+ PyArrayObject **operands,
590
+ PyObject *type_tup,
591
+ PyArray_Descr **out_dtypes)
592
+ {
593
+ int type_num1, type_num2;
594
+ int i;
595
+ const char *ufunc_name;
596
+
597
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
598
+
599
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
600
+ type_num2 = PyArray_DESCR(operands[1])->type_num;
601
+
602
+ /* Use the default when datetime and timedelta are not involved */
603
+ if (!PyTypeNum_ISDATETIME(type_num1) && !PyTypeNum_ISDATETIME(type_num2)) {
604
+ return PyUFunc_SimpleBinaryOperationTypeResolver(ufunc, casting,
605
+ operands, type_tup, out_dtypes);
606
+ }
607
+
608
+ if (type_num1 == NPY_TIMEDELTA) {
609
+ /* m8[<A>] + m8[<B>] => m8[gcd(<A>,<B>)] + m8[gcd(<A>,<B>)] */
610
+ if (type_num2 == NPY_TIMEDELTA) {
611
+ out_dtypes[0] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
612
+ PyArray_DESCR(operands[1]));
613
+ if (out_dtypes[0] == NULL) {
614
+ return -1;
615
+ }
616
+ out_dtypes[1] = out_dtypes[0];
617
+ Py_INCREF(out_dtypes[1]);
618
+ out_dtypes[2] = out_dtypes[0];
619
+ Py_INCREF(out_dtypes[2]);
620
+ }
621
+ /* m8[<A>] + M8[<B>] => m8[gcd(<A>,<B>)] + M8[gcd(<A>,<B>)] */
622
+ else if (type_num2 == NPY_DATETIME) {
623
+ out_dtypes[1] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
624
+ PyArray_DESCR(operands[1]));
625
+ if (out_dtypes[1] == NULL) {
626
+ return -1;
627
+ }
628
+ /* Make a new NPY_TIMEDELTA, and copy the datetime's metadata */
629
+ out_dtypes[0] = timedelta_dtype_with_copied_meta(out_dtypes[1]);
630
+ if (out_dtypes[0] == NULL) {
631
+ Py_DECREF(out_dtypes[1]);
632
+ out_dtypes[1] = NULL;
633
+ return -1;
634
+ }
635
+ out_dtypes[2] = out_dtypes[1];
636
+ Py_INCREF(out_dtypes[2]);
637
+ }
638
+ /* m8[<A>] + int => m8[<A>] + m8[<A>] */
639
+ else if (PyTypeNum_ISINTEGER(type_num2) ||
640
+ PyTypeNum_ISBOOL(type_num2)) {
641
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
642
+ if (out_dtypes[0] == NULL) {
643
+ return -1;
644
+ }
645
+ out_dtypes[1] = out_dtypes[0];
646
+ Py_INCREF(out_dtypes[1]);
647
+ out_dtypes[2] = out_dtypes[0];
648
+ Py_INCREF(out_dtypes[2]);
649
+
650
+ type_num2 = NPY_TIMEDELTA;
651
+ }
652
+ else {
653
+ goto type_reso_error;
654
+ }
655
+ }
656
+ else if (type_num1 == NPY_DATETIME) {
657
+ /* M8[<A>] + m8[<B>] => M8[gcd(<A>,<B>)] + m8[gcd(<A>,<B>)] */
658
+ if (type_num2 == NPY_TIMEDELTA) {
659
+ out_dtypes[0] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
660
+ PyArray_DESCR(operands[1]));
661
+ if (out_dtypes[0] == NULL) {
662
+ return -1;
663
+ }
664
+ /* Make a new NPY_TIMEDELTA, and copy the datetime's metadata */
665
+ out_dtypes[1] = timedelta_dtype_with_copied_meta(out_dtypes[0]);
666
+ if (out_dtypes[1] == NULL) {
667
+ Py_DECREF(out_dtypes[0]);
668
+ out_dtypes[0] = NULL;
669
+ return -1;
670
+ }
671
+ out_dtypes[2] = out_dtypes[0];
672
+ Py_INCREF(out_dtypes[2]);
673
+ }
674
+ /* M8[<A>] + int => M8[<A>] + m8[<A>] */
675
+ else if (PyTypeNum_ISINTEGER(type_num2) ||
676
+ PyTypeNum_ISBOOL(type_num2)) {
677
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
678
+ if (out_dtypes[0] == NULL) {
679
+ return -1;
680
+ }
681
+ /* Make a new NPY_TIMEDELTA, and copy type1's metadata */
682
+ out_dtypes[1] = timedelta_dtype_with_copied_meta(
683
+ PyArray_DESCR(operands[0]));
684
+ if (out_dtypes[1] == NULL) {
685
+ Py_DECREF(out_dtypes[0]);
686
+ out_dtypes[0] = NULL;
687
+ return -1;
688
+ }
689
+ out_dtypes[2] = out_dtypes[0];
690
+ Py_INCREF(out_dtypes[2]);
691
+
692
+ type_num2 = NPY_TIMEDELTA;
693
+ }
694
+ else {
695
+ goto type_reso_error;
696
+ }
697
+ }
698
+ else if (PyTypeNum_ISINTEGER(type_num1) || PyTypeNum_ISBOOL(type_num1)) {
699
+ /* int + m8[<A>] => m8[<A>] + m8[<A>] */
700
+ if (type_num2 == NPY_TIMEDELTA) {
701
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[1]));
702
+ if (out_dtypes[0] == NULL) {
703
+ return -1;
704
+ }
705
+ out_dtypes[1] = out_dtypes[0];
706
+ Py_INCREF(out_dtypes[1]);
707
+ out_dtypes[2] = out_dtypes[0];
708
+ Py_INCREF(out_dtypes[2]);
709
+
710
+ type_num1 = NPY_TIMEDELTA;
711
+ }
712
+ else if (type_num2 == NPY_DATETIME) {
713
+ /* Make a new NPY_TIMEDELTA, and copy type2's metadata */
714
+ out_dtypes[0] = timedelta_dtype_with_copied_meta(
715
+ PyArray_DESCR(operands[1]));
716
+ if (out_dtypes[0] == NULL) {
717
+ return -1;
718
+ }
719
+ out_dtypes[1] = ensure_dtype_nbo(PyArray_DESCR(operands[1]));
720
+ if (out_dtypes[1] == NULL) {
721
+ Py_DECREF(out_dtypes[0]);
722
+ out_dtypes[0] = NULL;
723
+ return -1;
724
+ }
725
+ out_dtypes[2] = out_dtypes[1];
726
+ Py_INCREF(out_dtypes[2]);
727
+
728
+ type_num1 = NPY_TIMEDELTA;
729
+ }
730
+ else {
731
+ goto type_reso_error;
732
+ }
733
+ }
734
+ else {
735
+ goto type_reso_error;
736
+ }
737
+
738
+ /* Check against the casting rules */
739
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
740
+ for (i = 0; i < 3; ++i) {
741
+ Py_DECREF(out_dtypes[i]);
742
+ out_dtypes[i] = NULL;
743
+ }
744
+ return -1;
745
+ }
746
+
747
+ return 0;
748
+
749
+ type_reso_error: {
750
+ PyObject *errmsg;
751
+ errmsg = PyUString_FromFormat("ufunc %s cannot use operands "
752
+ "with types ", ufunc_name);
753
+ PyUString_ConcatAndDel(&errmsg,
754
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[0])));
755
+ PyUString_ConcatAndDel(&errmsg,
756
+ PyUString_FromString(" and "));
757
+ PyUString_ConcatAndDel(&errmsg,
758
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
759
+ PyErr_SetObject(PyExc_TypeError, errmsg);
760
+ Py_DECREF(errmsg);
761
+ return -1;
762
+ }
763
+ }
764
+
765
+ /*
766
+ * This function applies the type resolution rules for subtraction.
767
+ * In particular, there are a number of special cases with datetime:
768
+ * m8[<A>] - m8[<B>] => m8[gcd(<A>,<B>)] - m8[gcd(<A>,<B>)]
769
+ * m8[<A>] - int => m8[<A>] - m8[<A>]
770
+ * int - m8[<A>] => m8[<A>] - m8[<A>]
771
+ * M8[<A>] - int => M8[<A>] - m8[<A>]
772
+ * M8[<A>] - m8[<B>] => M8[gcd(<A>,<B>)] - m8[gcd(<A>,<B>)]
773
+ * TODO: Non-linear time unit cases require highly special-cased loops
774
+ * M8[<A>] - m8[Y|M|B]
775
+ */
776
+ NPY_NO_EXPORT int
777
+ PyUFunc_SubtractionTypeResolver(PyUFuncObject *ufunc,
778
+ NPY_CASTING casting,
779
+ PyArrayObject **operands,
780
+ PyObject *type_tup,
781
+ PyArray_Descr **out_dtypes)
782
+ {
783
+ int type_num1, type_num2;
784
+ int i;
785
+ const char *ufunc_name;
786
+
787
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
788
+
789
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
790
+ type_num2 = PyArray_DESCR(operands[1])->type_num;
791
+
792
+ /* Use the default when datetime and timedelta are not involved */
793
+ if (!PyTypeNum_ISDATETIME(type_num1) && !PyTypeNum_ISDATETIME(type_num2)) {
794
+ int ret;
795
+ ret = PyUFunc_SimpleBinaryOperationTypeResolver(ufunc, casting,
796
+ operands, type_tup, out_dtypes);
797
+ if (ret < 0) {
798
+ return ret;
799
+ }
800
+
801
+ /* The type resolver would have upcast already */
802
+ if (out_dtypes[0]->type_num == NPY_BOOL) {
803
+ /* 2013-12-05, 1.9 */
804
+ if (DEPRECATE("numpy boolean subtract, the `-` operator, is "
805
+ "deprecated, use the bitwise_xor, the `^` operator, "
806
+ "or the logical_xor function instead.") < 0) {
807
+ return -1;
808
+ }
809
+ }
810
+ return ret;
811
+ }
812
+
813
+ if (type_num1 == NPY_TIMEDELTA) {
814
+ /* m8[<A>] - m8[<B>] => m8[gcd(<A>,<B>)] - m8[gcd(<A>,<B>)] */
815
+ if (type_num2 == NPY_TIMEDELTA) {
816
+ out_dtypes[0] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
817
+ PyArray_DESCR(operands[1]));
818
+ if (out_dtypes[0] == NULL) {
819
+ return -1;
820
+ }
821
+ out_dtypes[1] = out_dtypes[0];
822
+ Py_INCREF(out_dtypes[1]);
823
+ out_dtypes[2] = out_dtypes[0];
824
+ Py_INCREF(out_dtypes[2]);
825
+ }
826
+ /* m8[<A>] - int => m8[<A>] - m8[<A>] */
827
+ else if (PyTypeNum_ISINTEGER(type_num2) ||
828
+ PyTypeNum_ISBOOL(type_num2)) {
829
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
830
+ if (out_dtypes[0] == NULL) {
831
+ return -1;
832
+ }
833
+ out_dtypes[1] = out_dtypes[0];
834
+ Py_INCREF(out_dtypes[1]);
835
+ out_dtypes[2] = out_dtypes[0];
836
+ Py_INCREF(out_dtypes[2]);
837
+
838
+ type_num2 = NPY_TIMEDELTA;
839
+ }
840
+ else {
841
+ goto type_reso_error;
842
+ }
843
+ }
844
+ else if (type_num1 == NPY_DATETIME) {
845
+ /* M8[<A>] - m8[<B>] => M8[gcd(<A>,<B>)] - m8[gcd(<A>,<B>)] */
846
+ if (type_num2 == NPY_TIMEDELTA) {
847
+ out_dtypes[0] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
848
+ PyArray_DESCR(operands[1]));
849
+ if (out_dtypes[0] == NULL) {
850
+ return -1;
851
+ }
852
+ /* Make a new NPY_TIMEDELTA, and copy the datetime's metadata */
853
+ out_dtypes[1] = timedelta_dtype_with_copied_meta(out_dtypes[0]);
854
+ if (out_dtypes[1] == NULL) {
855
+ Py_DECREF(out_dtypes[0]);
856
+ out_dtypes[0] = NULL;
857
+ return -1;
858
+ }
859
+ out_dtypes[2] = out_dtypes[0];
860
+ Py_INCREF(out_dtypes[2]);
861
+ }
862
+ /* M8[<A>] - int => M8[<A>] - m8[<A>] */
863
+ else if (PyTypeNum_ISINTEGER(type_num2) ||
864
+ PyTypeNum_ISBOOL(type_num2)) {
865
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
866
+ if (out_dtypes[0] == NULL) {
867
+ return -1;
868
+ }
869
+ /* Make a new NPY_TIMEDELTA, and copy type1's metadata */
870
+ out_dtypes[1] = timedelta_dtype_with_copied_meta(
871
+ PyArray_DESCR(operands[0]));
872
+ if (out_dtypes[1] == NULL) {
873
+ Py_DECREF(out_dtypes[0]);
874
+ out_dtypes[0] = NULL;
875
+ return -1;
876
+ }
877
+ out_dtypes[2] = out_dtypes[0];
878
+ Py_INCREF(out_dtypes[2]);
879
+
880
+ type_num2 = NPY_TIMEDELTA;
881
+ }
882
+ /* M8[<A>] - M8[<B>] => M8[gcd(<A>,<B>)] - M8[gcd(<A>,<B>)] */
883
+ else if (type_num2 == NPY_DATETIME) {
884
+ out_dtypes[0] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
885
+ PyArray_DESCR(operands[1]));
886
+ if (out_dtypes[0] == NULL) {
887
+ return -1;
888
+ }
889
+ /* Make a new NPY_TIMEDELTA, and copy type1's metadata */
890
+ out_dtypes[2] = timedelta_dtype_with_copied_meta(out_dtypes[0]);
891
+ if (out_dtypes[2] == NULL) {
892
+ Py_DECREF(out_dtypes[0]);
893
+ return -1;
894
+ }
895
+ out_dtypes[1] = out_dtypes[0];
896
+ Py_INCREF(out_dtypes[1]);
897
+ }
898
+ else {
899
+ goto type_reso_error;
900
+ }
901
+ }
902
+ else if (PyTypeNum_ISINTEGER(type_num1) || PyTypeNum_ISBOOL(type_num1)) {
903
+ /* int - m8[<A>] => m8[<A>] - m8[<A>] */
904
+ if (type_num2 == NPY_TIMEDELTA) {
905
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[1]));
906
+ if (out_dtypes[0] == NULL) {
907
+ return -1;
908
+ }
909
+ out_dtypes[1] = out_dtypes[0];
910
+ Py_INCREF(out_dtypes[1]);
911
+ out_dtypes[2] = out_dtypes[0];
912
+ Py_INCREF(out_dtypes[2]);
913
+
914
+ type_num1 = NPY_TIMEDELTA;
915
+ }
916
+ else {
917
+ goto type_reso_error;
918
+ }
919
+ }
920
+ else {
921
+ goto type_reso_error;
922
+ }
923
+
924
+ /* Check against the casting rules */
925
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
926
+ for (i = 0; i < 3; ++i) {
927
+ Py_DECREF(out_dtypes[i]);
928
+ out_dtypes[i] = NULL;
929
+ }
930
+ return -1;
931
+ }
932
+
933
+ return 0;
934
+
935
+ type_reso_error: {
936
+ PyObject *errmsg;
937
+ errmsg = PyUString_FromFormat("ufunc %s cannot use operands "
938
+ "with types ", ufunc_name);
939
+ PyUString_ConcatAndDel(&errmsg,
940
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[0])));
941
+ PyUString_ConcatAndDel(&errmsg,
942
+ PyUString_FromString(" and "));
943
+ PyUString_ConcatAndDel(&errmsg,
944
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
945
+ PyErr_SetObject(PyExc_TypeError, errmsg);
946
+ Py_DECREF(errmsg);
947
+ return -1;
948
+ }
949
+ }
950
+
951
+ /*
952
+ * This function applies the type resolution rules for multiplication.
953
+ * In particular, there are a number of special cases with datetime:
954
+ * int## * m8[<A>] => int64 * m8[<A>]
955
+ * m8[<A>] * int## => m8[<A>] * int64
956
+ * float## * m8[<A>] => float64 * m8[<A>]
957
+ * m8[<A>] * float## => m8[<A>] * float64
958
+ */
959
+ NPY_NO_EXPORT int
960
+ PyUFunc_MultiplicationTypeResolver(PyUFuncObject *ufunc,
961
+ NPY_CASTING casting,
962
+ PyArrayObject **operands,
963
+ PyObject *type_tup,
964
+ PyArray_Descr **out_dtypes)
965
+ {
966
+ int type_num1, type_num2;
967
+ int i;
968
+ const char *ufunc_name;
969
+
970
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
971
+
972
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
973
+ type_num2 = PyArray_DESCR(operands[1])->type_num;
974
+
975
+ /* Use the default when datetime and timedelta are not involved */
976
+ if (!PyTypeNum_ISDATETIME(type_num1) && !PyTypeNum_ISDATETIME(type_num2)) {
977
+ return PyUFunc_SimpleBinaryOperationTypeResolver(ufunc, casting,
978
+ operands, type_tup, out_dtypes);
979
+ }
980
+
981
+ if (type_num1 == NPY_TIMEDELTA) {
982
+ /* m8[<A>] * int## => m8[<A>] * int64 */
983
+ if (PyTypeNum_ISINTEGER(type_num2) || PyTypeNum_ISBOOL(type_num2)) {
984
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
985
+ if (out_dtypes[0] == NULL) {
986
+ return -1;
987
+ }
988
+ out_dtypes[1] = PyArray_DescrNewFromType(NPY_LONGLONG);
989
+ if (out_dtypes[1] == NULL) {
990
+ Py_DECREF(out_dtypes[0]);
991
+ out_dtypes[0] = NULL;
992
+ return -1;
993
+ }
994
+ out_dtypes[2] = out_dtypes[0];
995
+ Py_INCREF(out_dtypes[2]);
996
+
997
+ type_num2 = NPY_LONGLONG;
998
+ }
999
+ /* m8[<A>] * float## => m8[<A>] * float64 */
1000
+ else if (PyTypeNum_ISFLOAT(type_num2)) {
1001
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
1002
+ if (out_dtypes[0] == NULL) {
1003
+ return -1;
1004
+ }
1005
+ out_dtypes[1] = PyArray_DescrNewFromType(NPY_DOUBLE);
1006
+ if (out_dtypes[1] == NULL) {
1007
+ Py_DECREF(out_dtypes[0]);
1008
+ out_dtypes[0] = NULL;
1009
+ return -1;
1010
+ }
1011
+ out_dtypes[2] = out_dtypes[0];
1012
+ Py_INCREF(out_dtypes[2]);
1013
+
1014
+ type_num2 = NPY_DOUBLE;
1015
+ }
1016
+ else {
1017
+ goto type_reso_error;
1018
+ }
1019
+ }
1020
+ else if (PyTypeNum_ISINTEGER(type_num1) || PyTypeNum_ISBOOL(type_num1)) {
1021
+ /* int## * m8[<A>] => int64 * m8[<A>] */
1022
+ if (type_num2 == NPY_TIMEDELTA) {
1023
+ out_dtypes[0] = PyArray_DescrNewFromType(NPY_LONGLONG);
1024
+ if (out_dtypes[0] == NULL) {
1025
+ return -1;
1026
+ }
1027
+ out_dtypes[1] = ensure_dtype_nbo(PyArray_DESCR(operands[1]));
1028
+ if (out_dtypes[1] == NULL) {
1029
+ Py_DECREF(out_dtypes[0]);
1030
+ out_dtypes[0] = NULL;
1031
+ return -1;
1032
+ }
1033
+ out_dtypes[2] = out_dtypes[1];
1034
+ Py_INCREF(out_dtypes[2]);
1035
+
1036
+ type_num1 = NPY_LONGLONG;
1037
+ }
1038
+ else {
1039
+ goto type_reso_error;
1040
+ }
1041
+ }
1042
+ else if (PyTypeNum_ISFLOAT(type_num1)) {
1043
+ /* float## * m8[<A>] => float64 * m8[<A>] */
1044
+ if (type_num2 == NPY_TIMEDELTA) {
1045
+ out_dtypes[0] = PyArray_DescrNewFromType(NPY_DOUBLE);
1046
+ if (out_dtypes[0] == NULL) {
1047
+ return -1;
1048
+ }
1049
+ out_dtypes[1] = ensure_dtype_nbo(PyArray_DESCR(operands[1]));
1050
+ if (out_dtypes[1] == NULL) {
1051
+ Py_DECREF(out_dtypes[0]);
1052
+ out_dtypes[0] = NULL;
1053
+ return -1;
1054
+ }
1055
+ out_dtypes[2] = out_dtypes[1];
1056
+ Py_INCREF(out_dtypes[2]);
1057
+
1058
+ type_num1 = NPY_DOUBLE;
1059
+ }
1060
+ else {
1061
+ goto type_reso_error;
1062
+ }
1063
+ }
1064
+ else {
1065
+ goto type_reso_error;
1066
+ }
1067
+
1068
+ /* Check against the casting rules */
1069
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
1070
+ for (i = 0; i < 3; ++i) {
1071
+ Py_DECREF(out_dtypes[i]);
1072
+ out_dtypes[i] = NULL;
1073
+ }
1074
+ return -1;
1075
+ }
1076
+
1077
+ return 0;
1078
+
1079
+ type_reso_error: {
1080
+ PyObject *errmsg;
1081
+ errmsg = PyUString_FromFormat("ufunc %s cannot use operands "
1082
+ "with types ", ufunc_name);
1083
+ PyUString_ConcatAndDel(&errmsg,
1084
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[0])));
1085
+ PyUString_ConcatAndDel(&errmsg,
1086
+ PyUString_FromString(" and "));
1087
+ PyUString_ConcatAndDel(&errmsg,
1088
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
1089
+ PyErr_SetObject(PyExc_TypeError, errmsg);
1090
+ Py_DECREF(errmsg);
1091
+ return -1;
1092
+ }
1093
+ }
1094
+
1095
+ /*
1096
+ * This function applies the type resolution rules for division.
1097
+ * In particular, there are a number of special cases with datetime:
1098
+ * m8[<A>] / m8[<B>] to m8[gcd(<A>,<B>)] / m8[gcd(<A>,<B>)] -> float64
1099
+ * m8[<A>] / int## to m8[<A>] / int64 -> m8[<A>]
1100
+ * m8[<A>] / float## to m8[<A>] / float64 -> m8[<A>]
1101
+ */
1102
+ NPY_NO_EXPORT int
1103
+ PyUFunc_DivisionTypeResolver(PyUFuncObject *ufunc,
1104
+ NPY_CASTING casting,
1105
+ PyArrayObject **operands,
1106
+ PyObject *type_tup,
1107
+ PyArray_Descr **out_dtypes)
1108
+ {
1109
+ int type_num1, type_num2;
1110
+ int i;
1111
+ const char *ufunc_name;
1112
+
1113
+ ufunc_name = ufunc->name ? ufunc->name : "<unnamed ufunc>";
1114
+
1115
+ type_num1 = PyArray_DESCR(operands[0])->type_num;
1116
+ type_num2 = PyArray_DESCR(operands[1])->type_num;
1117
+
1118
+ /* Use the default when datetime and timedelta are not involved */
1119
+ if (!PyTypeNum_ISDATETIME(type_num1) && !PyTypeNum_ISDATETIME(type_num2)) {
1120
+ return PyUFunc_DefaultTypeResolver(ufunc, casting, operands,
1121
+ type_tup, out_dtypes);
1122
+ }
1123
+
1124
+ if (type_num1 == NPY_TIMEDELTA) {
1125
+ /*
1126
+ * m8[<A>] / m8[<B>] to
1127
+ * m8[gcd(<A>,<B>)] / m8[gcd(<A>,<B>)] -> float64
1128
+ */
1129
+ if (type_num2 == NPY_TIMEDELTA) {
1130
+ out_dtypes[0] = PyArray_PromoteTypes(PyArray_DESCR(operands[0]),
1131
+ PyArray_DESCR(operands[1]));
1132
+ if (out_dtypes[0] == NULL) {
1133
+ return -1;
1134
+ }
1135
+ out_dtypes[1] = out_dtypes[0];
1136
+ Py_INCREF(out_dtypes[1]);
1137
+ out_dtypes[2] = PyArray_DescrFromType(NPY_DOUBLE);
1138
+ if (out_dtypes[2] == NULL) {
1139
+ Py_DECREF(out_dtypes[0]);
1140
+ out_dtypes[0] = NULL;
1141
+ Py_DECREF(out_dtypes[1]);
1142
+ out_dtypes[1] = NULL;
1143
+ return -1;
1144
+ }
1145
+ }
1146
+ /* m8[<A>] / int## => m8[<A>] / int64 */
1147
+ else if (PyTypeNum_ISINTEGER(type_num2)) {
1148
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
1149
+ if (out_dtypes[0] == NULL) {
1150
+ return -1;
1151
+ }
1152
+ out_dtypes[1] = PyArray_DescrFromType(NPY_LONGLONG);
1153
+ if (out_dtypes[1] == NULL) {
1154
+ Py_DECREF(out_dtypes[0]);
1155
+ out_dtypes[0] = NULL;
1156
+ return -1;
1157
+ }
1158
+ out_dtypes[2] = out_dtypes[0];
1159
+ Py_INCREF(out_dtypes[2]);
1160
+
1161
+ type_num2 = NPY_LONGLONG;
1162
+ }
1163
+ /* m8[<A>] / float## => m8[<A>] / float64 */
1164
+ else if (PyTypeNum_ISFLOAT(type_num2)) {
1165
+ out_dtypes[0] = ensure_dtype_nbo(PyArray_DESCR(operands[0]));
1166
+ if (out_dtypes[0] == NULL) {
1167
+ return -1;
1168
+ }
1169
+ out_dtypes[1] = PyArray_DescrNewFromType(NPY_DOUBLE);
1170
+ if (out_dtypes[1] == NULL) {
1171
+ Py_DECREF(out_dtypes[0]);
1172
+ out_dtypes[0] = NULL;
1173
+ return -1;
1174
+ }
1175
+ out_dtypes[2] = out_dtypes[0];
1176
+ Py_INCREF(out_dtypes[2]);
1177
+
1178
+ type_num2 = NPY_DOUBLE;
1179
+ }
1180
+ else {
1181
+ goto type_reso_error;
1182
+ }
1183
+ }
1184
+ else {
1185
+ goto type_reso_error;
1186
+ }
1187
+
1188
+ /* Check against the casting rules */
1189
+ if (PyUFunc_ValidateCasting(ufunc, casting, operands, out_dtypes) < 0) {
1190
+ for (i = 0; i < 3; ++i) {
1191
+ Py_DECREF(out_dtypes[i]);
1192
+ out_dtypes[i] = NULL;
1193
+ }
1194
+ return -1;
1195
+ }
1196
+
1197
+ return 0;
1198
+
1199
+ type_reso_error: {
1200
+ PyObject *errmsg;
1201
+ errmsg = PyUString_FromFormat("ufunc %s cannot use operands "
1202
+ "with types ", ufunc_name);
1203
+ PyUString_ConcatAndDel(&errmsg,
1204
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[0])));
1205
+ PyUString_ConcatAndDel(&errmsg,
1206
+ PyUString_FromString(" and "));
1207
+ PyUString_ConcatAndDel(&errmsg,
1208
+ PyObject_Repr((PyObject *)PyArray_DESCR(operands[1])));
1209
+ PyErr_SetObject(PyExc_TypeError, errmsg);
1210
+ Py_DECREF(errmsg);
1211
+ return -1;
1212
+ }
1213
+ }
1214
+
1215
+ static int
1216
+ find_userloop(PyUFuncObject *ufunc,
1217
+ PyArray_Descr **dtypes,
1218
+ PyUFuncGenericFunction *out_innerloop,
1219
+ void **out_innerloopdata)
1220
+ {
1221
+ npy_intp i, nin = ufunc->nin, j, nargs = nin + ufunc->nout;
1222
+ PyUFunc_Loop1d *funcdata;
1223
+
1224
+ /* Use this to try to avoid repeating the same userdef loop search */
1225
+ int last_userdef = -1;
1226
+
1227
+ for (i = 0; i < nargs; ++i) {
1228
+ int type_num;
1229
+
1230
+ /* no more ufunc arguments to check */
1231
+ if (dtypes[i] == NULL) {
1232
+ break;
1233
+ }
1234
+
1235
+ type_num = dtypes[i]->type_num;
1236
+ if (type_num != last_userdef &&
1237
+ (PyTypeNum_ISUSERDEF(type_num) || type_num == NPY_VOID)) {
1238
+ PyObject *key, *obj;
1239
+
1240
+ last_userdef = type_num;
1241
+
1242
+ key = PyInt_FromLong(type_num);
1243
+ if (key == NULL) {
1244
+ return -1;
1245
+ }
1246
+ obj = PyDict_GetItem(ufunc->userloops, key);
1247
+ Py_DECREF(key);
1248
+ if (obj == NULL) {
1249
+ continue;
1250
+ }
1251
+ funcdata = (PyUFunc_Loop1d *)NpyCapsule_AsVoidPtr(obj);
1252
+ while (funcdata != NULL) {
1253
+ int *types = funcdata->arg_types;
1254
+
1255
+ for (j = 0; j < nargs; ++j) {
1256
+ if (types[j] != dtypes[j]->type_num) {
1257
+ break;
1258
+ }
1259
+ }
1260
+ /* It matched */
1261
+ if (j == nargs) {
1262
+ *out_innerloop = funcdata->func;
1263
+ *out_innerloopdata = funcdata->data;
1264
+ return 1;
1265
+ }
1266
+
1267
+ funcdata = funcdata->next;
1268
+ }
1269
+ }
1270
+ }
1271
+
1272
+ /* Didn't find a match */
1273
+ return 0;
1274
+ }
1275
+
1276
+ NPY_NO_EXPORT int
1277
+ PyUFunc_DefaultLegacyInnerLoopSelector(PyUFuncObject *ufunc,
1278
+ PyArray_Descr **dtypes,
1279
+ PyUFuncGenericFunction *out_innerloop,
1280
+ void **out_innerloopdata,
1281
+ int *out_needs_api)
1282
+ {
1283
+ int nargs = ufunc->nargs;
1284
+ char *types;
1285
+ const char *ufunc_name;
1286
+ PyObject *errmsg;
1287
+ int i, j;
1288
+
1289
+ ufunc_name = ufunc->name ? ufunc->name : "(unknown)";
1290
+
1291
+ /*
1292
+ * If there are user-loops search them first.
1293
+ * TODO: There needs to be a loop selection acceleration structure,
1294
+ * like a hash table.
1295
+ */
1296
+ if (ufunc->userloops) {
1297
+ switch (find_userloop(ufunc, dtypes,
1298
+ out_innerloop, out_innerloopdata)) {
1299
+ /* Error */
1300
+ case -1:
1301
+ return -1;
1302
+ /* Found a loop */
1303
+ case 1:
1304
+ return 0;
1305
+ }
1306
+ }
1307
+
1308
+ types = ufunc->types;
1309
+ for (i = 0; i < ufunc->ntypes; ++i) {
1310
+ /* Copy the types into an int array for matching */
1311
+ for (j = 0; j < nargs; ++j) {
1312
+ if (types[j] != dtypes[j]->type_num) {
1313
+ break;
1314
+ }
1315
+ }
1316
+ if (j == nargs) {
1317
+ *out_innerloop = ufunc->functions[i];
1318
+ *out_innerloopdata = ufunc->data[i];
1319
+ return 0;
1320
+ }
1321
+
1322
+ types += nargs;
1323
+ }
1324
+
1325
+ errmsg = PyUString_FromFormat("ufunc '%s' did not contain a loop "
1326
+ "with signature matching types ", ufunc_name);
1327
+ for (i = 0; i < nargs; ++i) {
1328
+ PyUString_ConcatAndDel(&errmsg,
1329
+ PyObject_Repr((PyObject *)dtypes[i]));
1330
+ if (i < nargs - 1) {
1331
+ PyUString_ConcatAndDel(&errmsg, PyUString_FromString(" "));
1332
+ }
1333
+ }
1334
+ PyErr_SetObject(PyExc_TypeError, errmsg);
1335
+ Py_DECREF(errmsg);
1336
+
1337
+ return -1;
1338
+ }
1339
+
1340
+ typedef struct {
1341
+ NpyAuxData base;
1342
+ PyUFuncGenericFunction unmasked_innerloop;
1343
+ void *unmasked_innerloopdata;
1344
+ int nargs;
1345
+ } _ufunc_masker_data;
1346
+
1347
+ static NpyAuxData *
1348
+ ufunc_masker_data_clone(NpyAuxData *data)
1349
+ {
1350
+ _ufunc_masker_data *n;
1351
+
1352
+ /* Allocate a new one */
1353
+ n = (_ufunc_masker_data *)PyArray_malloc(sizeof(_ufunc_masker_data));
1354
+ if (n == NULL) {
1355
+ return NULL;
1356
+ }
1357
+
1358
+ /* Copy the data (unmasked data doesn't have object semantics) */
1359
+ memcpy(n, data, sizeof(_ufunc_masker_data));
1360
+
1361
+ return (NpyAuxData *)n;
1362
+ }
1363
+
1364
+ /*
1365
+ * This function wraps a regular unmasked ufunc inner loop as a
1366
+ * masked ufunc inner loop, only calling the function for
1367
+ * elements where the mask is True.
1368
+ */
1369
+ static void
1370
+ unmasked_ufunc_loop_as_masked(
1371
+ char **dataptrs, npy_intp *strides,
1372
+ char *mask, npy_intp mask_stride,
1373
+ npy_intp loopsize,
1374
+ NpyAuxData *innerloopdata)
1375
+ {
1376
+ _ufunc_masker_data *data;
1377
+ int iargs, nargs;
1378
+ PyUFuncGenericFunction unmasked_innerloop;
1379
+ void *unmasked_innerloopdata;
1380
+ npy_intp subloopsize;
1381
+
1382
+ /* Put the aux data into local variables */
1383
+ data = (_ufunc_masker_data *)innerloopdata;
1384
+ unmasked_innerloop = data->unmasked_innerloop;
1385
+ unmasked_innerloopdata = data->unmasked_innerloopdata;
1386
+ nargs = data->nargs;
1387
+
1388
+ /* Process the data as runs of unmasked values */
1389
+ do {
1390
+ /* Skip masked values */
1391
+ mask = npy_memchr(mask, 0, mask_stride, loopsize, &subloopsize, 1);
1392
+ for (iargs = 0; iargs < nargs; ++iargs) {
1393
+ dataptrs[iargs] += subloopsize * strides[iargs];
1394
+ }
1395
+ loopsize -= subloopsize;
1396
+ /*
1397
+ * Process unmasked values (assumes unmasked loop doesn't
1398
+ * mess with the 'args' pointer values)
1399
+ */
1400
+ mask = npy_memchr(mask, 0, mask_stride, loopsize, &subloopsize, 0);
1401
+ unmasked_innerloop(dataptrs, &subloopsize, strides,
1402
+ unmasked_innerloopdata);
1403
+ for (iargs = 0; iargs < nargs; ++iargs) {
1404
+ dataptrs[iargs] += subloopsize * strides[iargs];
1405
+ }
1406
+ loopsize -= subloopsize;
1407
+ } while (loopsize > 0);
1408
+ }
1409
+
1410
+
1411
+ /*
1412
+ * This function wraps a legacy inner loop so it becomes masked.
1413
+ *
1414
+ * Returns 0 on success, -1 on error.
1415
+ */
1416
+ NPY_NO_EXPORT int
1417
+ PyUFunc_DefaultMaskedInnerLoopSelector(PyUFuncObject *ufunc,
1418
+ PyArray_Descr **dtypes,
1419
+ PyArray_Descr *mask_dtype,
1420
+ npy_intp *NPY_UNUSED(fixed_strides),
1421
+ npy_intp NPY_UNUSED(fixed_mask_stride),
1422
+ PyUFunc_MaskedStridedInnerLoopFunc **out_innerloop,
1423
+ NpyAuxData **out_innerloopdata,
1424
+ int *out_needs_api)
1425
+ {
1426
+ int retcode;
1427
+ _ufunc_masker_data *data;
1428
+
1429
+ if (ufunc->legacy_inner_loop_selector == NULL) {
1430
+ PyErr_SetString(PyExc_RuntimeError,
1431
+ "the ufunc default masked inner loop selector doesn't "
1432
+ "yet support wrapping the new inner loop selector, it "
1433
+ "still only wraps the legacy inner loop selector");
1434
+ return -1;
1435
+ }
1436
+
1437
+ if (mask_dtype->type_num != NPY_BOOL) {
1438
+ PyErr_SetString(PyExc_ValueError,
1439
+ "only boolean masks are supported in ufunc inner loops "
1440
+ "presently");
1441
+ return -1;
1442
+ }
1443
+
1444
+ /* Create a new NpyAuxData object for the masker data */
1445
+ data = (_ufunc_masker_data *)PyArray_malloc(sizeof(_ufunc_masker_data));
1446
+ if (data == NULL) {
1447
+ PyErr_NoMemory();
1448
+ return -1;
1449
+ }
1450
+ memset(data, 0, sizeof(_ufunc_masker_data));
1451
+ data->base.free = (NpyAuxData_FreeFunc *)&PyArray_free;
1452
+ data->base.clone = &ufunc_masker_data_clone;
1453
+ data->nargs = ufunc->nin + ufunc->nout;
1454
+
1455
+ /* Get the unmasked ufunc inner loop */
1456
+ retcode = ufunc->legacy_inner_loop_selector(ufunc, dtypes,
1457
+ &data->unmasked_innerloop, &data->unmasked_innerloopdata,
1458
+ out_needs_api);
1459
+ if (retcode < 0) {
1460
+ PyArray_free(data);
1461
+ return retcode;
1462
+ }
1463
+
1464
+ /* Return the loop function + aux data */
1465
+ *out_innerloop = &unmasked_ufunc_loop_as_masked;
1466
+ *out_innerloopdata = (NpyAuxData *)data;
1467
+ return 0;
1468
+ }
1469
+
1470
+ static int
1471
+ ufunc_loop_matches(PyUFuncObject *self,
1472
+ PyArrayObject **op,
1473
+ NPY_CASTING input_casting,
1474
+ NPY_CASTING output_casting,
1475
+ int any_object,
1476
+ int use_min_scalar,
1477
+ int *types, PyArray_Descr **dtypes,
1478
+ int *out_no_castable_output,
1479
+ char *out_err_src_typecode,
1480
+ char *out_err_dst_typecode)
1481
+ {
1482
+ npy_intp i, nin = self->nin, nop = nin + self->nout;
1483
+
1484
+ /*
1485
+ * First check if all the inputs can be safely cast
1486
+ * to the types for this function
1487
+ */
1488
+ for (i = 0; i < nin; ++i) {
1489
+ PyArray_Descr *tmp;
1490
+
1491
+ /*
1492
+ * If no inputs are objects and there are more than one
1493
+ * loop, don't allow conversion to object. The rationale
1494
+ * behind this is mostly performance. Except for custom
1495
+ * ufuncs built with just one object-parametered inner loop,
1496
+ * only the types that are supported are implemented. Trying
1497
+ * the object version of logical_or on float arguments doesn't
1498
+ * seem right.
1499
+ */
1500
+ if (types[i] == NPY_OBJECT && !any_object && self->ntypes > 1) {
1501
+ return 0;
1502
+ }
1503
+
1504
+ /*
1505
+ * If type num is NPY_VOID and struct dtypes have been passed in,
1506
+ * use struct dtype object. Otherwise create new dtype object
1507
+ * from type num.
1508
+ */
1509
+ if (types[i] == NPY_VOID && dtypes != NULL) {
1510
+ tmp = dtypes[i];
1511
+ Py_INCREF(tmp);
1512
+ }
1513
+ else {
1514
+ tmp = PyArray_DescrFromType(types[i]);
1515
+ }
1516
+ if (tmp == NULL) {
1517
+ return -1;
1518
+ }
1519
+
1520
+ #if NPY_UF_DBG_TRACING
1521
+ printf("Checking type for op %d, type %d: ", (int)i, (int)types[i]);
1522
+ PyObject_Print((PyObject *)tmp, stdout, 0);
1523
+ printf(", operand type: ");
1524
+ PyObject_Print((PyObject *)PyArray_DESCR(op[i]), stdout, 0);
1525
+ printf("\n");
1526
+ #endif
1527
+ /*
1528
+ * If all the inputs are scalars, use the regular
1529
+ * promotion rules, not the special value-checking ones.
1530
+ */
1531
+ if (!use_min_scalar) {
1532
+ if (!PyArray_CanCastTypeTo(PyArray_DESCR(op[i]), tmp,
1533
+ input_casting)) {
1534
+ Py_DECREF(tmp);
1535
+ return 0;
1536
+ }
1537
+ }
1538
+ else {
1539
+ if (!PyArray_CanCastArrayTo(op[i], tmp, input_casting)) {
1540
+ Py_DECREF(tmp);
1541
+ return 0;
1542
+ }
1543
+ }
1544
+ Py_DECREF(tmp);
1545
+ }
1546
+
1547
+ /*
1548
+ * If all the inputs were ok, then check casting back to the
1549
+ * outputs.
1550
+ */
1551
+ for (i = nin; i < nop; ++i) {
1552
+ if (op[i] != NULL) {
1553
+ PyArray_Descr *tmp = PyArray_DescrFromType(types[i]);
1554
+ if (tmp == NULL) {
1555
+ return -1;
1556
+ }
1557
+ if (!PyArray_CanCastTypeTo(tmp, PyArray_DESCR(op[i]),
1558
+ output_casting)) {
1559
+ if (!(*out_no_castable_output)) {
1560
+ *out_no_castable_output = 1;
1561
+ *out_err_src_typecode = tmp->type;
1562
+ *out_err_dst_typecode = PyArray_DESCR(op[i])->type;
1563
+ }
1564
+ Py_DECREF(tmp);
1565
+ return 0;
1566
+ }
1567
+ Py_DECREF(tmp);
1568
+ }
1569
+ }
1570
+
1571
+ return 1;
1572
+ }
1573
+
1574
+ static int
1575
+ set_ufunc_loop_data_types(PyUFuncObject *self, PyArrayObject **op,
1576
+ PyArray_Descr **out_dtypes,
1577
+ int *type_nums, PyArray_Descr **dtypes)
1578
+ {
1579
+ int i, nin = self->nin, nop = nin + self->nout;
1580
+
1581
+ /*
1582
+ * Fill the dtypes array.
1583
+ * For outputs,
1584
+ * also search the inputs for a matching type_num to copy
1585
+ * instead of creating a new one, similarly to preserve metadata.
1586
+ **/
1587
+ for (i = 0; i < nop; ++i) {
1588
+ if (dtypes != NULL) {
1589
+ out_dtypes[i] = dtypes[i];
1590
+ Py_XINCREF(out_dtypes[i]);
1591
+ /*
1592
+ * Copy the dtype from 'op' if the type_num matches,
1593
+ * to preserve metadata.
1594
+ */
1595
+ }
1596
+ else if (op[i] != NULL &&
1597
+ PyArray_DESCR(op[i])->type_num == type_nums[i]) {
1598
+ out_dtypes[i] = ensure_dtype_nbo(PyArray_DESCR(op[i]));
1599
+ }
1600
+ /*
1601
+ * For outputs, copy the dtype from op[0] if the type_num
1602
+ * matches, similarly to preserve metdata.
1603
+ */
1604
+ else if (i >= nin && op[0] != NULL &&
1605
+ PyArray_DESCR(op[0])->type_num == type_nums[i]) {
1606
+ out_dtypes[i] = ensure_dtype_nbo(PyArray_DESCR(op[0]));
1607
+ }
1608
+ /* Otherwise create a plain descr from the type number */
1609
+ else {
1610
+ out_dtypes[i] = PyArray_DescrFromType(type_nums[i]);
1611
+ }
1612
+
1613
+ if (out_dtypes[i] == NULL) {
1614
+ goto fail;
1615
+ }
1616
+ }
1617
+
1618
+ return 0;
1619
+
1620
+ fail:
1621
+ while (--i >= 0) {
1622
+ Py_DECREF(out_dtypes[i]);
1623
+ out_dtypes[i] = NULL;
1624
+ }
1625
+ return -1;
1626
+ }
1627
+
1628
+ /*
1629
+ * Does a search through the arguments and the loops
1630
+ */
1631
+ static int
1632
+ linear_search_userloop_type_resolver(PyUFuncObject *self,
1633
+ PyArrayObject **op,
1634
+ NPY_CASTING input_casting,
1635
+ NPY_CASTING output_casting,
1636
+ int any_object,
1637
+ int use_min_scalar,
1638
+ PyArray_Descr **out_dtype,
1639
+ int *out_no_castable_output,
1640
+ char *out_err_src_typecode,
1641
+ char *out_err_dst_typecode)
1642
+ {
1643
+ npy_intp i, nop = self->nin + self->nout;
1644
+ PyUFunc_Loop1d *funcdata;
1645
+
1646
+ /* Use this to try to avoid repeating the same userdef loop search */
1647
+ int last_userdef = -1;
1648
+
1649
+ for (i = 0; i < nop; ++i) {
1650
+ int type_num;
1651
+
1652
+ /* no more ufunc arguments to check */
1653
+ if (op[i] == NULL) {
1654
+ break;
1655
+ }
1656
+
1657
+ type_num = PyArray_DESCR(op[i])->type_num;
1658
+ if (type_num != last_userdef &&
1659
+ (PyTypeNum_ISUSERDEF(type_num) || type_num == NPY_VOID)) {
1660
+ PyObject *key, *obj;
1661
+
1662
+ last_userdef = type_num;
1663
+
1664
+ key = PyInt_FromLong(type_num);
1665
+ if (key == NULL) {
1666
+ return -1;
1667
+ }
1668
+ obj = PyDict_GetItem(self->userloops, key);
1669
+ Py_DECREF(key);
1670
+ if (obj == NULL) {
1671
+ continue;
1672
+ }
1673
+ funcdata = (PyUFunc_Loop1d *)NpyCapsule_AsVoidPtr(obj);
1674
+ while (funcdata != NULL) {
1675
+ int *types = funcdata->arg_types;
1676
+ switch (ufunc_loop_matches(self, op,
1677
+ input_casting, output_casting,
1678
+ any_object, use_min_scalar,
1679
+ types, funcdata->arg_dtypes,
1680
+ out_no_castable_output, out_err_src_typecode,
1681
+ out_err_dst_typecode)) {
1682
+ /* Error */
1683
+ case -1:
1684
+ return -1;
1685
+ /* Found a match */
1686
+ case 1:
1687
+ set_ufunc_loop_data_types(self, op, out_dtype, types, funcdata->arg_dtypes);
1688
+ return 1;
1689
+ }
1690
+
1691
+ funcdata = funcdata->next;
1692
+ }
1693
+ }
1694
+ }
1695
+
1696
+ /* Didn't find a match */
1697
+ return 0;
1698
+ }
1699
+
1700
+ /*
1701
+ * Does a search through the arguments and the loops
1702
+ */
1703
+ static int
1704
+ type_tuple_userloop_type_resolver(PyUFuncObject *self,
1705
+ int n_specified,
1706
+ int *specified_types,
1707
+ PyArrayObject **op,
1708
+ NPY_CASTING casting,
1709
+ int any_object,
1710
+ int use_min_scalar,
1711
+ PyArray_Descr **out_dtype)
1712
+ {
1713
+ int i, j, nin = self->nin, nop = nin + self->nout;
1714
+ PyUFunc_Loop1d *funcdata;
1715
+
1716
+ /* Use this to try to avoid repeating the same userdef loop search */
1717
+ int last_userdef = -1;
1718
+
1719
+ int no_castable_output = 0;
1720
+ char err_src_typecode = '-', err_dst_typecode = '-';
1721
+
1722
+ for (i = 0; i < nin; ++i) {
1723
+ int type_num = PyArray_DESCR(op[i])->type_num;
1724
+ if (type_num != last_userdef && PyTypeNum_ISUSERDEF(type_num)) {
1725
+ PyObject *key, *obj;
1726
+
1727
+ last_userdef = type_num;
1728
+
1729
+ key = PyInt_FromLong(type_num);
1730
+ if (key == NULL) {
1731
+ return -1;
1732
+ }
1733
+ obj = PyDict_GetItem(self->userloops, key);
1734
+ Py_DECREF(key);
1735
+ if (obj == NULL) {
1736
+ continue;
1737
+ }
1738
+ funcdata = (PyUFunc_Loop1d *)NpyCapsule_AsVoidPtr(obj);
1739
+ while (funcdata != NULL) {
1740
+ int *types = funcdata->arg_types;
1741
+ int matched = 1;
1742
+
1743
+ if (n_specified == nop) {
1744
+ for (j = 0; j < nop; ++j) {
1745
+ if (types[j] != specified_types[j] &&
1746
+ specified_types[j] != NPY_NOTYPE) {
1747
+ matched = 0;
1748
+ break;
1749
+ }
1750
+ }
1751
+ } else {
1752
+ if (types[nin] != specified_types[0]) {
1753
+ matched = 0;
1754
+ }
1755
+ }
1756
+ if (!matched) {
1757
+ continue;
1758
+ }
1759
+
1760
+ switch (ufunc_loop_matches(self, op,
1761
+ casting, casting,
1762
+ any_object, use_min_scalar,
1763
+ types, NULL,
1764
+ &no_castable_output, &err_src_typecode,
1765
+ &err_dst_typecode)) {
1766
+ /* It works */
1767
+ case 1:
1768
+ set_ufunc_loop_data_types(self, op,
1769
+ out_dtype, types, NULL);
1770
+ return 1;
1771
+ /* Didn't match */
1772
+ case 0:
1773
+ PyErr_Format(PyExc_TypeError,
1774
+ "found a user loop for ufunc '%s' "
1775
+ "matching the type-tuple, "
1776
+ "but the inputs and/or outputs could not be "
1777
+ "cast according to the casting rule",
1778
+ self->name ? self->name : "(unknown)");
1779
+ return -1;
1780
+ /* Error */
1781
+ case -1:
1782
+ return -1;
1783
+ }
1784
+
1785
+ funcdata = funcdata->next;
1786
+ }
1787
+ }
1788
+ }
1789
+
1790
+ /* Didn't find a match */
1791
+ return 0;
1792
+ }
1793
+
1794
+ /*
1795
+ * Provides an ordering for the dtype 'kind' character codes, to help
1796
+ * determine when to use the min_scalar_type function. This groups
1797
+ * 'kind' into boolean, integer, floating point, and everything else.
1798
+ */
1799
+
1800
+ static int
1801
+ dtype_kind_to_simplified_ordering(char kind)
1802
+ {
1803
+ switch (kind) {
1804
+ /* Boolean kind */
1805
+ case 'b':
1806
+ return 0;
1807
+ /* Unsigned int kind */
1808
+ case 'u':
1809
+ /* Signed int kind */
1810
+ case 'i':
1811
+ return 1;
1812
+ /* Float kind */
1813
+ case 'f':
1814
+ /* Complex kind */
1815
+ case 'c':
1816
+ return 2;
1817
+ /* Anything else */
1818
+ default:
1819
+ return 3;
1820
+ }
1821
+ }
1822
+
1823
+ static int
1824
+ should_use_min_scalar(PyArrayObject **op, int nop)
1825
+ {
1826
+ int i, use_min_scalar, kind;
1827
+ int all_scalars = 1, max_scalar_kind = -1, max_array_kind = -1;
1828
+
1829
+ /*
1830
+ * Determine if there are any scalars, and if so, whether
1831
+ * the maximum "kind" of the scalars surpasses the maximum
1832
+ * "kind" of the arrays
1833
+ */
1834
+ use_min_scalar = 0;
1835
+ if (nop > 1) {
1836
+ for(i = 0; i < nop; ++i) {
1837
+ kind = dtype_kind_to_simplified_ordering(
1838
+ PyArray_DESCR(op[i])->kind);
1839
+ if (PyArray_NDIM(op[i]) == 0) {
1840
+ if (kind > max_scalar_kind) {
1841
+ max_scalar_kind = kind;
1842
+ }
1843
+ }
1844
+ else {
1845
+ all_scalars = 0;
1846
+ if (kind > max_array_kind) {
1847
+ max_array_kind = kind;
1848
+ }
1849
+
1850
+ }
1851
+ }
1852
+
1853
+ /* Indicate whether to use the min_scalar_type function */
1854
+ if (!all_scalars && max_array_kind >= max_scalar_kind) {
1855
+ use_min_scalar = 1;
1856
+ }
1857
+ }
1858
+
1859
+ return use_min_scalar;
1860
+ }
1861
+
1862
+ /*
1863
+ * Does a linear search for the best inner loop of the ufunc.
1864
+ *
1865
+ * Note that if an error is returned, the caller must free the non-zero
1866
+ * references in out_dtype. This function does not do its own clean-up.
1867
+ */
1868
+ NPY_NO_EXPORT int
1869
+ linear_search_type_resolver(PyUFuncObject *self,
1870
+ PyArrayObject **op,
1871
+ NPY_CASTING input_casting,
1872
+ NPY_CASTING output_casting,
1873
+ int any_object,
1874
+ PyArray_Descr **out_dtype)
1875
+ {
1876
+ npy_intp i, j, nin = self->nin, nop = nin + self->nout;
1877
+ int types[NPY_MAXARGS];
1878
+ const char *ufunc_name;
1879
+ int no_castable_output, use_min_scalar;
1880
+
1881
+ /* For making a better error message on coercion error */
1882
+ char err_dst_typecode = '-', err_src_typecode = '-';
1883
+
1884
+ ufunc_name = self->name ? self->name : "(unknown)";
1885
+
1886
+ use_min_scalar = should_use_min_scalar(op, nin);
1887
+
1888
+ /* If the ufunc has userloops, search for them. */
1889
+ if (self->userloops) {
1890
+ switch (linear_search_userloop_type_resolver(self, op,
1891
+ input_casting, output_casting,
1892
+ any_object, use_min_scalar, out_dtype,
1893
+ &no_castable_output, &err_src_typecode,
1894
+ &err_dst_typecode)) {
1895
+ /* Error */
1896
+ case -1:
1897
+ return -1;
1898
+ /* A loop was found */
1899
+ case 1:
1900
+ return 0;
1901
+ }
1902
+ }
1903
+
1904
+ /*
1905
+ * Determine the UFunc loop. This could in general be *much* faster,
1906
+ * and a better way to implement it might be for the ufunc to
1907
+ * provide a function which gives back the result type and inner
1908
+ * loop function.
1909
+ *
1910
+ * A default fast mechanism could be provided for functions which
1911
+ * follow the most typical pattern, when all functions have signatures
1912
+ * "xx...x -> x" for some built-in data type x, as follows.
1913
+ * - Use PyArray_ResultType to get the output type
1914
+ * - Look up the inner loop in a table based on the output type_num
1915
+ *
1916
+ * The method for finding the loop in the previous code did not
1917
+ * appear consistent (as noted by some asymmetry in the generated
1918
+ * coercion tables for np.add).
1919
+ */
1920
+ no_castable_output = 0;
1921
+ for (i = 0; i < self->ntypes; ++i) {
1922
+ char *orig_types = self->types + i*self->nargs;
1923
+
1924
+ /* Copy the types into an int array for matching */
1925
+ for (j = 0; j < nop; ++j) {
1926
+ types[j] = orig_types[j];
1927
+ }
1928
+
1929
+ switch (ufunc_loop_matches(self, op,
1930
+ input_casting, output_casting,
1931
+ any_object, use_min_scalar,
1932
+ types, NULL,
1933
+ &no_castable_output, &err_src_typecode,
1934
+ &err_dst_typecode)) {
1935
+ /* Error */
1936
+ case -1:
1937
+ return -1;
1938
+ /* Found a match */
1939
+ case 1:
1940
+ set_ufunc_loop_data_types(self, op, out_dtype, types, NULL);
1941
+ return 0;
1942
+ }
1943
+ }
1944
+
1945
+ /* If no function was found, throw an error */
1946
+ if (no_castable_output) {
1947
+ PyErr_Format(PyExc_TypeError,
1948
+ "ufunc '%s' output (typecode '%c') could not be coerced to "
1949
+ "provided output parameter (typecode '%c') according "
1950
+ "to the casting rule '%s'",
1951
+ ufunc_name, err_src_typecode, err_dst_typecode,
1952
+ npy_casting_to_string(output_casting));
1953
+ }
1954
+ else {
1955
+ /*
1956
+ * TODO: We should try again if the casting rule is same_kind
1957
+ * or unsafe, and look for a function more liberally.
1958
+ */
1959
+ PyErr_Format(PyExc_TypeError,
1960
+ "ufunc '%s' not supported for the input types, and the "
1961
+ "inputs could not be safely coerced to any supported "
1962
+ "types according to the casting rule '%s'",
1963
+ ufunc_name,
1964
+ npy_casting_to_string(input_casting));
1965
+ }
1966
+
1967
+ return -1;
1968
+ }
1969
+
1970
+ /*
1971
+ * Does a linear search for the inner loop of the ufunc specified by type_tup.
1972
+ *
1973
+ * Note that if an error is returned, the caller must free the non-zero
1974
+ * references in out_dtype. This function does not do its own clean-up.
1975
+ */
1976
+ NPY_NO_EXPORT int
1977
+ type_tuple_type_resolver(PyUFuncObject *self,
1978
+ PyObject *type_tup,
1979
+ PyArrayObject **op,
1980
+ NPY_CASTING casting,
1981
+ int any_object,
1982
+ PyArray_Descr **out_dtype)
1983
+ {
1984
+ npy_intp i, j, n, nin = self->nin, nop = nin + self->nout;
1985
+ int n_specified = 0;
1986
+ int specified_types[NPY_MAXARGS], types[NPY_MAXARGS];
1987
+ const char *ufunc_name;
1988
+ int no_castable_output, use_min_scalar;
1989
+
1990
+ /* For making a better error message on coercion error */
1991
+ char err_dst_typecode = '-', err_src_typecode = '-';
1992
+
1993
+ ufunc_name = self->name ? self->name : "(unknown)";
1994
+
1995
+ use_min_scalar = should_use_min_scalar(op, nin);
1996
+
1997
+ /* Fill in specified_types from the tuple or string */
1998
+ if (PyTuple_Check(type_tup)) {
1999
+ int nonecount = 0;
2000
+ n = PyTuple_GET_SIZE(type_tup);
2001
+ if (n != 1 && n != nop) {
2002
+ PyErr_Format(PyExc_ValueError,
2003
+ "a type-tuple must be specified "
2004
+ "of length 1 or %d for ufunc '%s'", (int)nop,
2005
+ self->name ? self->name : "(unknown)");
2006
+ return -1;
2007
+ }
2008
+
2009
+ for (i = 0; i < n; ++i) {
2010
+ PyObject *item = PyTuple_GET_ITEM(type_tup, i);
2011
+ if (item == Py_None) {
2012
+ specified_types[i] = NPY_NOTYPE;
2013
+ ++nonecount;
2014
+ }
2015
+ else {
2016
+ PyArray_Descr *dtype = NULL;
2017
+ if (!PyArray_DescrConverter(item, &dtype)) {
2018
+ return -1;
2019
+ }
2020
+ specified_types[i] = dtype->type_num;
2021
+ Py_DECREF(dtype);
2022
+ }
2023
+ }
2024
+
2025
+ if (nonecount == n) {
2026
+ PyErr_SetString(PyExc_ValueError,
2027
+ "the type-tuple provided to the ufunc "
2028
+ "must specify at least one none-None dtype");
2029
+ return -1;
2030
+ }
2031
+
2032
+ n_specified = n;
2033
+ }
2034
+ else if (PyBytes_Check(type_tup) || PyUnicode_Check(type_tup)) {
2035
+ Py_ssize_t length;
2036
+ char *str;
2037
+ PyObject *str_obj = NULL;
2038
+
2039
+ if (PyUnicode_Check(type_tup)) {
2040
+ str_obj = PyUnicode_AsASCIIString(type_tup);
2041
+ if (str_obj == NULL) {
2042
+ return -1;
2043
+ }
2044
+ type_tup = str_obj;
2045
+ }
2046
+
2047
+ if (PyBytes_AsStringAndSize(type_tup, &str, &length) < 0) {
2048
+ Py_XDECREF(str_obj);
2049
+ return -1;
2050
+ }
2051
+ if (length != 1 && (length != nop + 2 ||
2052
+ str[nin] != '-' || str[nin+1] != '>')) {
2053
+ PyErr_Format(PyExc_ValueError,
2054
+ "a type-string for %s, " \
2055
+ "requires 1 typecode, or "
2056
+ "%d typecode(s) before " \
2057
+ "and %d after the -> sign",
2058
+ self->name ? self->name : "(unknown)",
2059
+ self->nin, self->nout);
2060
+ Py_XDECREF(str_obj);
2061
+ return -1;
2062
+ }
2063
+ if (length == 1) {
2064
+ PyArray_Descr *dtype;
2065
+ n_specified = 1;
2066
+ dtype = PyArray_DescrFromType(str[0]);
2067
+ if (dtype == NULL) {
2068
+ Py_XDECREF(str_obj);
2069
+ return -1;
2070
+ }
2071
+ specified_types[0] = dtype->type_num;
2072
+ Py_DECREF(dtype);
2073
+ }
2074
+ else {
2075
+ PyArray_Descr *dtype;
2076
+ n_specified = (int)nop;
2077
+
2078
+ for (i = 0; i < nop; ++i) {
2079
+ npy_intp istr = i < nin ? i : i+2;
2080
+
2081
+ dtype = PyArray_DescrFromType(str[istr]);
2082
+ if (dtype == NULL) {
2083
+ Py_XDECREF(str_obj);
2084
+ return -1;
2085
+ }
2086
+ specified_types[i] = dtype->type_num;
2087
+ Py_DECREF(dtype);
2088
+ }
2089
+ }
2090
+ Py_XDECREF(str_obj);
2091
+ }
2092
+
2093
+ /* If the ufunc has userloops, search for them. */
2094
+ if (self->userloops) {
2095
+ switch (type_tuple_userloop_type_resolver(self,
2096
+ n_specified, specified_types,
2097
+ op, casting,
2098
+ any_object, use_min_scalar,
2099
+ out_dtype)) {
2100
+ /* Error */
2101
+ case -1:
2102
+ return -1;
2103
+ /* Found matching loop */
2104
+ case 1:
2105
+ return 0;
2106
+ }
2107
+ }
2108
+
2109
+ for (i = 0; i < self->ntypes; ++i) {
2110
+ char *orig_types = self->types + i*self->nargs;
2111
+
2112
+ /* Copy the types into an int array for matching */
2113
+ for (j = 0; j < nop; ++j) {
2114
+ types[j] = orig_types[j];
2115
+ }
2116
+
2117
+ if (n_specified == nop) {
2118
+ for (j = 0; j < nop; ++j) {
2119
+ if (types[j] != specified_types[j] &&
2120
+ specified_types[j] != NPY_NOTYPE) {
2121
+ break;
2122
+ }
2123
+ }
2124
+ if (j < nop) {
2125
+ /* no match */
2126
+ continue;
2127
+ }
2128
+ }
2129
+ else if (types[nin] != specified_types[0]) {
2130
+ /* no match */
2131
+ continue;
2132
+ }
2133
+
2134
+ switch (ufunc_loop_matches(self, op,
2135
+ casting, casting,
2136
+ any_object, use_min_scalar,
2137
+ types, NULL,
2138
+ &no_castable_output, &err_src_typecode,
2139
+ &err_dst_typecode)) {
2140
+ case -1:
2141
+ /* Error */
2142
+ return -1;
2143
+ case 0:
2144
+ /* Cannot cast inputs */
2145
+ continue;
2146
+ case 1:
2147
+ /* Success */
2148
+ set_ufunc_loop_data_types(self, op, out_dtype, types, NULL);
2149
+ return 0;
2150
+ }
2151
+ }
2152
+
2153
+ /* If no function was found, throw an error */
2154
+ PyErr_Format(PyExc_TypeError,
2155
+ "No loop matching the specified signature and casting\n"
2156
+ "was found for ufunc %s", ufunc_name);
2157
+
2158
+ return -1;
2159
+ }