numpy 1.9.3__zip → 1.10.0__zip

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