numpy 1.9.2__zip → 1.10.0__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1593) hide show
  1. numpy-1.10.0.post2/INSTALL.txt +200 -0
  2. numpy-1.10.0.post2/LICENSE.txt +30 -0
  3. numpy-1.10.0.post2/MANIFEST.in +31 -0
  4. numpy-1.10.0.post2/PKG-INFO +47 -0
  5. numpy-1.10.0.post2/cnew.txt +117 -0
  6. numpy-1.10.0.post2/cold.txt +44 -0
  7. numpy-1.10.0.post2/committers.txt +160 -0
  8. numpy-1.10.0.post2/cpre.txt +283 -0
  9. numpy-1.10.0.post2/crel.txt +161 -0
  10. numpy-1.10.0.post2/doc/release/1.10.0-notes.rst +439 -0
  11. numpy-1.10.0.post2/doc/scipy-sphinx-theme/.git +1 -0
  12. numpy-1.10.0.post2/doc/source/conf.py +331 -0
  13. numpy-1.10.0.post2/doc/source/dev/development_environment.rst +211 -0
  14. numpy-1.10.0.post2/doc/source/dev/gitwash/development_workflow.rst +534 -0
  15. numpy-1.10.0.post2/doc/source/dev/gitwash/git_links.inc +95 -0
  16. numpy-1.10.0.post2/doc/source/dev/gitwash/index.rst +14 -0
  17. numpy-1.10.0.post2/doc/source/dev/index.rst +11 -0
  18. numpy-1.10.0.post2/doc/source/reference/arrays.classes.rst +490 -0
  19. numpy-1.10.0.post2/doc/source/reference/arrays.dtypes.rst +536 -0
  20. numpy-1.10.0.post2/doc/source/reference/arrays.indexing.rst +549 -0
  21. numpy-1.10.0.post2/doc/source/reference/arrays.interface.rst +337 -0
  22. numpy-1.10.0.post2/doc/source/reference/arrays.ndarray.rst +622 -0
  23. numpy-1.10.0.post2/doc/source/reference/arrays.scalars.rst +291 -0
  24. numpy-1.10.0.post2/doc/source/reference/c-api.array.rst +3393 -0
  25. numpy-1.10.0.post2/doc/source/reference/c-api.config.rst +103 -0
  26. numpy-1.10.0.post2/doc/source/reference/c-api.coremath.rst +420 -0
  27. numpy-1.10.0.post2/doc/source/reference/c-api.dtype.rst +376 -0
  28. numpy-1.10.0.post2/doc/source/reference/c-api.generalized-ufuncs.rst +191 -0
  29. numpy-1.10.0.post2/doc/source/reference/c-api.iterator.rst +1300 -0
  30. numpy-1.10.0.post2/doc/source/reference/c-api.types-and-structures.rst +1240 -0
  31. numpy-1.10.0.post2/doc/source/reference/c-api.ufunc.rst +413 -0
  32. numpy-1.10.0.post2/doc/source/reference/index.rst +43 -0
  33. numpy-1.10.0.post2/doc/source/reference/internals.code-explanations.rst +615 -0
  34. numpy-1.10.0.post2/doc/source/reference/routines.array-manipulation.rst +115 -0
  35. numpy-1.10.0.post2/doc/source/reference/routines.io.rst +78 -0
  36. numpy-1.10.0.post2/doc/source/reference/routines.linalg.rst +91 -0
  37. numpy-1.10.0.post2/doc/source/reference/routines.ma.rst +407 -0
  38. numpy-1.10.0.post2/doc/source/reference/routines.sort.rst +41 -0
  39. numpy-1.10.0.post2/doc/source/reference/routines.statistics.rst +57 -0
  40. numpy-1.10.0.post2/doc/source/reference/swig.interface-file.rst +1066 -0
  41. numpy-1.10.0.post2/doc/source/reference/swig.testing.rst +167 -0
  42. numpy-1.10.0.post2/doc/source/reference/ufuncs.rst +666 -0
  43. numpy-1.10.0.post2/doc/source/release.rst +20 -0
  44. numpy-1.10.0.post2/doc/source/user/basics.io.genfromtxt.rst +531 -0
  45. numpy-1.10.0.post2/doc/source/user/basics.rec.rst +7 -0
  46. numpy-1.10.0.post2/doc/source/user/c-info.beyond-basics.rst +560 -0
  47. numpy-1.10.0.post2/doc/source/user/c-info.how-to-extend.rst +642 -0
  48. numpy-1.10.0.post2/doc/source/user/c-info.python-as-glue.rst +1177 -0
  49. numpy-1.10.0.post2/doc/source/user/c-info.ufunc-tutorial.rst +1211 -0
  50. numpy-1.10.0.post2/doc/source/user/install.rst +194 -0
  51. numpy-1.10.0.post2/doc/sphinxext/.git +1 -0
  52. numpy-1.10.0.post2/numpy/__init__.py +227 -0
  53. numpy-1.10.0.post2/numpy/_build_utils/README +8 -0
  54. numpy-1.10.0.post2/numpy/_build_utils/apple_accelerate.py +21 -0
  55. numpy-1.10.0.post2/numpy/_build_utils/common.py +138 -0
  56. numpy-1.10.0.post2/numpy/_build_utils/src/apple_sgemv_fix.c +227 -0
  57. numpy-1.10.0.post2/numpy/_build_utils/waf.py +531 -0
  58. numpy-1.10.0.post2/numpy/_import_tools.py +353 -0
  59. numpy-1.10.0.post2/numpy/add_newdocs.py +7611 -0
  60. numpy-1.10.0.post2/numpy/compat/_inspect.py +194 -0
  61. numpy-1.10.0.post2/numpy/compat/py3k.py +88 -0
  62. numpy-1.10.0.post2/numpy/compat/setup.py +12 -0
  63. numpy-1.10.0.post2/numpy/core/__init__.py +89 -0
  64. numpy-1.10.0.post2/numpy/core/_internal.py +761 -0
  65. numpy-1.10.0.post2/numpy/core/_methods.py +133 -0
  66. numpy-1.10.0.post2/numpy/core/arrayprint.py +760 -0
  67. numpy-1.10.0.post2/numpy/core/code_generators/cversions.txt +34 -0
  68. numpy-1.10.0.post2/numpy/core/code_generators/generate_ufunc_api.py +219 -0
  69. numpy-1.10.0.post2/numpy/core/code_generators/generate_umath.py +1017 -0
  70. numpy-1.10.0.post2/numpy/core/code_generators/numpy_api.py +415 -0
  71. numpy-1.10.0.post2/numpy/core/code_generators/ufunc_docstrings.py +3442 -0
  72. numpy-1.10.0.post2/numpy/core/defchararray.py +2689 -0
  73. numpy-1.10.0.post2/numpy/core/fromnumeric.py +3089 -0
  74. numpy-1.10.0.post2/numpy/core/function_base.py +203 -0
  75. numpy-1.10.0.post2/numpy/core/getlimits.py +308 -0
  76. numpy-1.10.0.post2/numpy/core/include/numpy/ndarrayobject.h +246 -0
  77. numpy-1.10.0.post2/numpy/core/include/numpy/ndarraytypes.h +1797 -0
  78. numpy-1.10.0.post2/numpy/core/include/numpy/npy_3kcompat.h +448 -0
  79. numpy-1.10.0.post2/numpy/core/include/numpy/npy_common.h +1051 -0
  80. numpy-1.10.0.post2/numpy/core/include/numpy/npy_cpu.h +92 -0
  81. numpy-1.10.0.post2/numpy/core/include/numpy/npy_endian.h +61 -0
  82. numpy-1.10.0.post2/numpy/core/include/numpy/npy_math.h +525 -0
  83. numpy-1.10.0.post2/numpy/core/include/numpy/numpyconfig.h +36 -0
  84. numpy-1.10.0.post2/numpy/core/machar.py +342 -0
  85. numpy-1.10.0.post2/numpy/core/memmap.py +311 -0
  86. numpy-1.10.0.post2/numpy/core/numeric.py +2893 -0
  87. numpy-1.10.0.post2/numpy/core/numerictypes.py +1036 -0
  88. numpy-1.10.0.post2/numpy/core/records.py +846 -0
  89. numpy-1.10.0.post2/numpy/core/setup.py +983 -0
  90. numpy-1.10.0.post2/numpy/core/setup_common.py +352 -0
  91. numpy-1.10.0.post2/numpy/core/shape_base.py +350 -0
  92. numpy-1.10.0.post2/numpy/core/src/multiarray/alloc.c +244 -0
  93. numpy-1.10.0.post2/numpy/core/src/multiarray/arrayobject.c +1858 -0
  94. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.c.src +4738 -0
  95. numpy-1.10.0.post2/numpy/core/src/multiarray/arraytypes.h +37 -0
  96. numpy-1.10.0.post2/numpy/core/src/multiarray/buffer.c +981 -0
  97. numpy-1.10.0.post2/numpy/core/src/multiarray/calculation.c +1224 -0
  98. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.c +812 -0
  99. numpy-1.10.0.post2/numpy/core/src/multiarray/cblasfuncs.h +10 -0
  100. numpy-1.10.0.post2/numpy/core/src/multiarray/common.c +911 -0
  101. numpy-1.10.0.post2/numpy/core/src/multiarray/common.h +250 -0
  102. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.c +1664 -0
  103. numpy-1.10.0.post2/numpy/core/src/multiarray/compiled_base.h +24 -0
  104. numpy-1.10.0.post2/numpy/core/src/multiarray/conversion_utils.c +1217 -0
  105. numpy-1.10.0.post2/numpy/core/src/multiarray/convert.c +590 -0
  106. numpy-1.10.0.post2/numpy/core/src/multiarray/convert_datatype.c +2155 -0
  107. numpy-1.10.0.post2/numpy/core/src/multiarray/ctors.c +3838 -0
  108. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime.c +3821 -0
  109. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busday.c +1322 -0
  110. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_busdaycal.c +552 -0
  111. numpy-1.10.0.post2/numpy/core/src/multiarray/datetime_strings.c +1772 -0
  112. numpy-1.10.0.post2/numpy/core/src/multiarray/descriptor.c +3719 -0
  113. numpy-1.10.0.post2/numpy/core/src/multiarray/dtype_transfer.c +4239 -0
  114. numpy-1.10.0.post2/numpy/core/src/multiarray/einsum.c.src +3005 -0
  115. numpy-1.10.0.post2/numpy/core/src/multiarray/getset.c +986 -0
  116. numpy-1.10.0.post2/numpy/core/src/multiarray/hashdescr.c +318 -0
  117. numpy-1.10.0.post2/numpy/core/src/multiarray/item_selection.c +2413 -0
  118. numpy-1.10.0.post2/numpy/core/src/multiarray/iterators.c +2192 -0
  119. numpy-1.10.0.post2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +1769 -0
  120. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.c +3380 -0
  121. numpy-1.10.0.post2/numpy/core/src/multiarray/mapping.h +77 -0
  122. numpy-1.10.0.post2/numpy/core/src/multiarray/methods.c +2514 -0
  123. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarray_tests.c.src +1035 -0
  124. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.c +4628 -0
  125. numpy-1.10.0.post2/numpy/core/src/multiarray/multiarraymodule.h +15 -0
  126. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_api.c +2809 -0
  127. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_constr.c +3160 -0
  128. numpy-1.10.0.post2/numpy/core/src/multiarray/nditer_pywrap.c +2499 -0
  129. numpy-1.10.0.post2/numpy/core/src/multiarray/number.c +1106 -0
  130. numpy-1.10.0.post2/numpy/core/src/multiarray/number.h +77 -0
  131. numpy-1.10.0.post2/numpy/core/src/multiarray/numpymemoryview.c +308 -0
  132. numpy-1.10.0.post2/numpy/core/src/multiarray/numpyos.c +683 -0
  133. numpy-1.10.0.post2/numpy/core/src/multiarray/scalarapi.c +870 -0
  134. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.c.src +4343 -0
  135. numpy-1.10.0.post2/numpy/core/src/multiarray/scalartypes.h +55 -0
  136. numpy-1.10.0.post2/numpy/core/src/multiarray/shape.c +1131 -0
  137. numpy-1.10.0.post2/numpy/core/src/multiarray/ucsnarrow.c +174 -0
  138. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.c +180 -0
  139. numpy-1.10.0.post2/numpy/core/src/multiarray/vdot.h +18 -0
  140. numpy-1.10.0.post2/numpy/core/src/npymath/ieee754.c.src +808 -0
  141. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math.c.src +597 -0
  142. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_complex.c.src +1788 -0
  143. numpy-1.10.0.post2/numpy/core/src/npymath/npy_math_private.h +544 -0
  144. numpy-1.10.0.post2/numpy/core/src/npysort/heapsort.c.src +402 -0
  145. numpy-1.10.0.post2/numpy/core/src/npysort/mergesort.c.src +488 -0
  146. numpy-1.10.0.post2/numpy/core/src/npysort/npysort_common.h +360 -0
  147. numpy-1.10.0.post2/numpy/core/src/npysort/quicksort.c.src +523 -0
  148. numpy-1.10.0.post2/numpy/core/src/npysort/selection.c.src +426 -0
  149. numpy-1.10.0.post2/numpy/core/src/private/npy_cblas.h +584 -0
  150. numpy-1.10.0.post2/numpy/core/src/private/npy_config.h +101 -0
  151. numpy-1.10.0.post2/numpy/core/src/private/npy_import.h +32 -0
  152. numpy-1.10.0.post2/numpy/core/src/private/npy_partition.h.src +122 -0
  153. numpy-1.10.0.post2/numpy/core/src/private/npy_sort.h +196 -0
  154. numpy-1.10.0.post2/numpy/core/src/private/templ_common.h.src +43 -0
  155. numpy-1.10.0.post2/numpy/core/src/private/ufunc_override.h +397 -0
  156. numpy-1.10.0.post2/numpy/core/src/umath/funcs.inc.src +356 -0
  157. numpy-1.10.0.post2/numpy/core/src/umath/loops.c.src +2675 -0
  158. numpy-1.10.0.post2/numpy/core/src/umath/loops.h.src +497 -0
  159. numpy-1.10.0.post2/numpy/core/src/umath/operand_flag_tests.c.src +105 -0
  160. numpy-1.10.0.post2/numpy/core/src/umath/scalarmath.c.src +1738 -0
  161. numpy-1.10.0.post2/numpy/core/src/umath/simd.inc.src +903 -0
  162. numpy-1.10.0.post2/numpy/core/src/umath/test_rational.c.src +1404 -0
  163. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_object.c +5703 -0
  164. numpy-1.10.0.post2/numpy/core/src/umath/ufunc_type_resolution.c +2159 -0
  165. numpy-1.10.0.post2/numpy/core/src/umath/umath_tests.c.src +392 -0
  166. numpy-1.10.0.post2/numpy/core/src/umath/umathmodule.c +443 -0
  167. numpy-1.10.0.post2/numpy/core/tests/test_abc.py +47 -0
  168. numpy-1.10.0.post2/numpy/core/tests/test_api.py +515 -0
  169. numpy-1.10.0.post2/numpy/core/tests/test_arrayprint.py +171 -0
  170. numpy-1.10.0.post2/numpy/core/tests/test_datetime.py +1820 -0
  171. numpy-1.10.0.post2/numpy/core/tests/test_defchararray.py +703 -0
  172. numpy-1.10.0.post2/numpy/core/tests/test_deprecations.py +619 -0
  173. numpy-1.10.0.post2/numpy/core/tests/test_dtype.py +578 -0
  174. numpy-1.10.0.post2/numpy/core/tests/test_einsum.py +627 -0
  175. numpy-1.10.0.post2/numpy/core/tests/test_errstate.py +52 -0
  176. numpy-1.10.0.post2/numpy/core/tests/test_function_base.py +142 -0
  177. numpy-1.10.0.post2/numpy/core/tests/test_getlimits.py +77 -0
  178. numpy-1.10.0.post2/numpy/core/tests/test_half.py +436 -0
  179. numpy-1.10.0.post2/numpy/core/tests/test_indexerrors.py +126 -0
  180. numpy-1.10.0.post2/numpy/core/tests/test_indexing.py +1047 -0
  181. numpy-1.10.0.post2/numpy/core/tests/test_item_selection.py +73 -0
  182. numpy-1.10.0.post2/numpy/core/tests/test_machar.py +29 -0
  183. numpy-1.10.0.post2/numpy/core/tests/test_memmap.py +130 -0
  184. numpy-1.10.0.post2/numpy/core/tests/test_multiarray.py +5924 -0
  185. numpy-1.10.0.post2/numpy/core/tests/test_multiarray_assignment.py +84 -0
  186. numpy-1.10.0.post2/numpy/core/tests/test_nditer.py +2638 -0
  187. numpy-1.10.0.post2/numpy/core/tests/test_numeric.py +2204 -0
  188. numpy-1.10.0.post2/numpy/core/tests/test_numerictypes.py +382 -0
  189. numpy-1.10.0.post2/numpy/core/tests/test_print.py +248 -0
  190. numpy-1.10.0.post2/numpy/core/tests/test_records.py +299 -0
  191. numpy-1.10.0.post2/numpy/core/tests/test_regression.py +2177 -0
  192. numpy-1.10.0.post2/numpy/core/tests/test_scalarinherit.py +41 -0
  193. numpy-1.10.0.post2/numpy/core/tests/test_scalarmath.py +316 -0
  194. numpy-1.10.0.post2/numpy/core/tests/test_shape_base.py +319 -0
  195. numpy-1.10.0.post2/numpy/core/tests/test_ufunc.py +1227 -0
  196. numpy-1.10.0.post2/numpy/core/tests/test_umath.py +1933 -0
  197. numpy-1.10.0.post2/numpy/core/tests/test_umath_complex.py +538 -0
  198. numpy-1.10.0.post2/numpy/core/tests/test_unicode.py +360 -0
  199. numpy-1.10.0.post2/numpy/distutils/__init__.py +23 -0
  200. numpy-1.10.0.post2/numpy/distutils/ccompiler.py +690 -0
  201. numpy-1.10.0.post2/numpy/distutils/command/autodist.py +94 -0
  202. numpy-1.10.0.post2/numpy/distutils/command/build.py +47 -0
  203. numpy-1.10.0.post2/numpy/distutils/command/build_clib.py +295 -0
  204. numpy-1.10.0.post2/numpy/distutils/command/build_ext.py +522 -0
  205. numpy-1.10.0.post2/numpy/distutils/command/config.py +437 -0
  206. numpy-1.10.0.post2/numpy/distutils/exec_command.py +651 -0
  207. numpy-1.10.0.post2/numpy/distutils/fcompiler/compaq.py +128 -0
  208. numpy-1.10.0.post2/numpy/distutils/fcompiler/gnu.py +403 -0
  209. numpy-1.10.0.post2/numpy/distutils/fcompiler/intel.py +217 -0
  210. numpy-1.10.0.post2/numpy/distutils/fcompiler/pg.py +63 -0
  211. numpy-1.10.0.post2/numpy/distutils/fcompiler/sun.py +55 -0
  212. numpy-1.10.0.post2/numpy/distutils/intelccompiler.py +95 -0
  213. numpy-1.10.0.post2/numpy/distutils/lib2def.py +116 -0
  214. numpy-1.10.0.post2/numpy/distutils/mingw32ccompiler.py +599 -0
  215. numpy-1.10.0.post2/numpy/distutils/misc_util.py +2306 -0
  216. numpy-1.10.0.post2/numpy/distutils/msvc9compiler.py +23 -0
  217. numpy-1.10.0.post2/numpy/distutils/msvccompiler.py +17 -0
  218. numpy-1.10.0.post2/numpy/distutils/npy_pkg_config.py +451 -0
  219. numpy-1.10.0.post2/numpy/distutils/system_info.py +2397 -0
  220. numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +12 -0
  221. numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +11 -0
  222. numpy-1.10.0.post2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +11 -0
  223. numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +13 -0
  224. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/__init__.py +1 -0
  225. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example.py +17 -0
  226. numpy-1.10.0.post2/numpy/distutils/tests/swig_ext/tests/test_example2.py +15 -0
  227. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_gnu.py +60 -0
  228. numpy-1.10.0.post2/numpy/distutils/tests/test_fcompiler_intel.py +36 -0
  229. numpy-1.10.0.post2/numpy/distutils/tests/test_misc_util.py +79 -0
  230. numpy-1.10.0.post2/numpy/distutils/tests/test_npy_pkg_config.py +102 -0
  231. numpy-1.10.0.post2/numpy/distutils/tests/test_system_info.py +209 -0
  232. numpy-1.10.0.post2/numpy/distutils/unixccompiler.py +125 -0
  233. numpy-1.10.0.post2/numpy/doc/byteswapping.py +156 -0
  234. numpy-1.10.0.post2/numpy/doc/creation.py +144 -0
  235. numpy-1.10.0.post2/numpy/doc/glossary.py +423 -0
  236. numpy-1.10.0.post2/numpy/doc/indexing.py +439 -0
  237. numpy-1.10.0.post2/numpy/doc/structured_arrays.py +290 -0
  238. numpy-1.10.0.post2/numpy/f2py/__init__.py +49 -0
  239. numpy-1.10.0.post2/numpy/f2py/__main__.py +25 -0
  240. numpy-1.10.0.post2/numpy/f2py/auxfuncs.py +858 -0
  241. numpy-1.10.0.post2/numpy/f2py/capi_maps.py +851 -0
  242. numpy-1.10.0.post2/numpy/f2py/cb_rules.py +554 -0
  243. numpy-1.10.0.post2/numpy/f2py/cfuncs.py +1261 -0
  244. numpy-1.10.0.post2/numpy/f2py/common_rules.py +150 -0
  245. numpy-1.10.0.post2/numpy/f2py/crackfortran.py +3314 -0
  246. numpy-1.10.0.post2/numpy/f2py/diagnose.py +156 -0
  247. numpy-1.10.0.post2/numpy/f2py/f2py2e.py +656 -0
  248. numpy-1.10.0.post2/numpy/f2py/f2py_testing.py +48 -0
  249. numpy-1.10.0.post2/numpy/f2py/f90mod_rules.py +272 -0
  250. numpy-1.10.0.post2/numpy/f2py/func2subr.py +299 -0
  251. numpy-1.10.0.post2/numpy/f2py/rules.py +1475 -0
  252. numpy-1.10.0.post2/numpy/f2py/setup.py +117 -0
  253. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.c +1037 -0
  254. numpy-1.10.0.post2/numpy/f2py/src/fortranobject.h +162 -0
  255. numpy-1.10.0.post2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +223 -0
  256. numpy-1.10.0.post2/numpy/f2py/tests/test_array_from_pyobj.py +593 -0
  257. numpy-1.10.0.post2/numpy/f2py/tests/test_assumed_shape.py +35 -0
  258. numpy-1.10.0.post2/numpy/f2py/tests/test_callback.py +136 -0
  259. numpy-1.10.0.post2/numpy/f2py/tests/test_kind.py +36 -0
  260. numpy-1.10.0.post2/numpy/f2py/tests/test_mixed.py +40 -0
  261. numpy-1.10.0.post2/numpy/f2py/tests/test_regression.py +34 -0
  262. numpy-1.10.0.post2/numpy/f2py/tests/test_return_character.py +148 -0
  263. numpy-1.10.0.post2/numpy/f2py/tests/test_return_complex.py +170 -0
  264. numpy-1.10.0.post2/numpy/f2py/tests/test_return_integer.py +180 -0
  265. numpy-1.10.0.post2/numpy/f2py/tests/test_return_logical.py +189 -0
  266. numpy-1.10.0.post2/numpy/f2py/tests/test_return_real.py +206 -0
  267. numpy-1.10.0.post2/numpy/f2py/tests/test_size.py +44 -0
  268. numpy-1.10.0.post2/numpy/f2py/tests/util.py +367 -0
  269. numpy-1.10.0.post2/numpy/f2py/use_rules.py +115 -0
  270. numpy-1.10.0.post2/numpy/fft/fftpack.c +1501 -0
  271. numpy-1.10.0.post2/numpy/fft/fftpack.h +28 -0
  272. numpy-1.10.0.post2/numpy/fft/fftpack.py +1241 -0
  273. numpy-1.10.0.post2/numpy/fft/fftpack_litemodule.c +363 -0
  274. numpy-1.10.0.post2/numpy/fft/info.py +187 -0
  275. numpy-1.10.0.post2/numpy/fft/setup.py +19 -0
  276. numpy-1.10.0.post2/numpy/fft/tests/test_fftpack.py +166 -0
  277. numpy-1.10.0.post2/numpy/fft/tests/test_helper.py +78 -0
  278. numpy-1.10.0.post2/numpy/lib/_iotools.py +917 -0
  279. numpy-1.10.0.post2/numpy/lib/arraypad.py +1497 -0
  280. numpy-1.10.0.post2/numpy/lib/arraysetops.py +480 -0
  281. numpy-1.10.0.post2/numpy/lib/arrayterator.py +226 -0
  282. numpy-1.10.0.post2/numpy/lib/financial.py +737 -0
  283. numpy-1.10.0.post2/numpy/lib/format.py +814 -0
  284. numpy-1.10.0.post2/numpy/lib/function_base.py +4150 -0
  285. numpy-1.10.0.post2/numpy/lib/index_tricks.py +874 -0
  286. numpy-1.10.0.post2/numpy/lib/info.py +152 -0
  287. numpy-1.10.0.post2/numpy/lib/nanfunctions.py +1237 -0
  288. numpy-1.10.0.post2/numpy/lib/npyio.py +1992 -0
  289. numpy-1.10.0.post2/numpy/lib/polynomial.py +1277 -0
  290. numpy-1.10.0.post2/numpy/lib/recfunctions.py +1003 -0
  291. numpy-1.10.0.post2/numpy/lib/setup.py +12 -0
  292. numpy-1.10.0.post2/numpy/lib/shape_base.py +872 -0
  293. numpy-1.10.0.post2/numpy/lib/stride_tricks.py +200 -0
  294. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npy +0 -0
  295. numpy-1.10.0.post2/numpy/lib/tests/data/py2-objarr.npz +0 -0
  296. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npy +0 -0
  297. numpy-1.10.0.post2/numpy/lib/tests/data/py3-objarr.npz +0 -0
  298. numpy-1.10.0.post2/numpy/lib/tests/test__iotools.py +348 -0
  299. numpy-1.10.0.post2/numpy/lib/tests/test__version.py +70 -0
  300. numpy-1.10.0.post2/numpy/lib/tests/test_arraypad.py +1047 -0
  301. numpy-1.10.0.post2/numpy/lib/tests/test_arraysetops.py +309 -0
  302. numpy-1.10.0.post2/numpy/lib/tests/test_financial.py +163 -0
  303. numpy-1.10.0.post2/numpy/lib/tests/test_format.py +841 -0
  304. numpy-1.10.0.post2/numpy/lib/tests/test_function_base.py +2555 -0
  305. numpy-1.10.0.post2/numpy/lib/tests/test_index_tricks.py +326 -0
  306. numpy-1.10.0.post2/numpy/lib/tests/test_io.py +1916 -0
  307. numpy-1.10.0.post2/numpy/lib/tests/test_nanfunctions.py +707 -0
  308. numpy-1.10.0.post2/numpy/lib/tests/test_packbits.py +26 -0
  309. numpy-1.10.0.post2/numpy/lib/tests/test_polynomial.py +188 -0
  310. numpy-1.10.0.post2/numpy/lib/tests/test_recfunctions.py +734 -0
  311. numpy-1.10.0.post2/numpy/lib/tests/test_shape_base.py +386 -0
  312. numpy-1.10.0.post2/numpy/lib/tests/test_stride_tricks.py +405 -0
  313. numpy-1.10.0.post2/numpy/lib/tests/test_twodim_base.py +535 -0
  314. numpy-1.10.0.post2/numpy/lib/tests/test_type_check.py +332 -0
  315. numpy-1.10.0.post2/numpy/lib/twodim_base.py +1007 -0
  316. numpy-1.10.0.post2/numpy/lib/type_check.py +596 -0
  317. numpy-1.10.0.post2/numpy/lib/utils.py +1122 -0
  318. numpy-1.10.0.post2/numpy/linalg/lapack_lite/python_xerbla.c +46 -0
  319. numpy-1.10.0.post2/numpy/linalg/lapack_litemodule.c +358 -0
  320. numpy-1.10.0.post2/numpy/linalg/linalg.py +2406 -0
  321. numpy-1.10.0.post2/numpy/linalg/tests/test_build.py +59 -0
  322. numpy-1.10.0.post2/numpy/linalg/tests/test_linalg.py +1351 -0
  323. numpy-1.10.0.post2/numpy/linalg/tests/test_regression.py +95 -0
  324. numpy-1.10.0.post2/numpy/linalg/umath_linalg.c.src +3236 -0
  325. numpy-1.10.0.post2/numpy/ma/__init__.py +56 -0
  326. numpy-1.10.0.post2/numpy/ma/bench.py +131 -0
  327. numpy-1.10.0.post2/numpy/ma/core.py +7608 -0
  328. numpy-1.10.0.post2/numpy/ma/extras.py +1953 -0
  329. numpy-1.10.0.post2/numpy/ma/mrecords.py +796 -0
  330. numpy-1.10.0.post2/numpy/ma/setup.py +13 -0
  331. numpy-1.10.0.post2/numpy/ma/tests/test_core.py +4100 -0
  332. numpy-1.10.0.post2/numpy/ma/tests/test_extras.py +1132 -0
  333. numpy-1.10.0.post2/numpy/ma/tests/test_mrecords.py +520 -0
  334. numpy-1.10.0.post2/numpy/ma/tests/test_old_ma.py +879 -0
  335. numpy-1.10.0.post2/numpy/ma/tests/test_regression.py +80 -0
  336. numpy-1.10.0.post2/numpy/ma/tests/test_subclassing.py +338 -0
  337. numpy-1.10.0.post2/numpy/ma/testutils.py +289 -0
  338. numpy-1.10.0.post2/numpy/ma/timer_comparison.py +440 -0
  339. numpy-1.10.0.post2/numpy/matlib.py +358 -0
  340. numpy-1.10.0.post2/numpy/matrixlib/defmatrix.py +1232 -0
  341. numpy-1.10.0.post2/numpy/matrixlib/tests/test_defmatrix.py +449 -0
  342. numpy-1.10.0.post2/numpy/matrixlib/tests/test_multiarray.py +23 -0
  343. numpy-1.10.0.post2/numpy/matrixlib/tests/test_numeric.py +23 -0
  344. numpy-1.10.0.post2/numpy/matrixlib/tests/test_regression.py +37 -0
  345. numpy-1.10.0.post2/numpy/polynomial/_polybase.py +962 -0
  346. numpy-1.10.0.post2/numpy/polynomial/chebyshev.py +2056 -0
  347. numpy-1.10.0.post2/numpy/polynomial/hermite.py +1831 -0
  348. numpy-1.10.0.post2/numpy/polynomial/hermite_e.py +1828 -0
  349. numpy-1.10.0.post2/numpy/polynomial/laguerre.py +1780 -0
  350. numpy-1.10.0.post2/numpy/polynomial/legendre.py +1808 -0
  351. numpy-1.10.0.post2/numpy/polynomial/polyutils.py +403 -0
  352. numpy-1.10.0.post2/numpy/random/mtrand/distributions.c +912 -0
  353. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.c +34805 -0
  354. numpy-1.10.0.post2/numpy/random/mtrand/mtrand.pyx +4766 -0
  355. numpy-1.10.0.post2/numpy/random/setup.py +61 -0
  356. numpy-1.10.0.post2/numpy/random/tests/test_random.py +723 -0
  357. numpy-1.10.0.post2/numpy/random/tests/test_regression.py +117 -0
  358. numpy-1.10.0.post2/numpy/setup.py +29 -0
  359. numpy-1.10.0.post2/numpy/testing/__init__.py +15 -0
  360. numpy-1.10.0.post2/numpy/testing/decorators.py +271 -0
  361. numpy-1.10.0.post2/numpy/testing/noseclasses.py +353 -0
  362. numpy-1.10.0.post2/numpy/testing/nosetester.py +511 -0
  363. numpy-1.10.0.post2/numpy/testing/print_coercion_tables.py +91 -0
  364. numpy-1.10.0.post2/numpy/testing/setup.py +20 -0
  365. numpy-1.10.0.post2/numpy/testing/tests/test_decorators.py +182 -0
  366. numpy-1.10.0.post2/numpy/testing/tests/test_utils.py +781 -0
  367. numpy-1.10.0.post2/numpy/testing/utils.py +1831 -0
  368. numpy-1.10.0.post2/numpy/tests/test_ctypeslib.py +106 -0
  369. numpy-1.10.0.post2/numpy/tests/test_matlib.py +55 -0
  370. numpy-1.10.0.post2/numpy/tests/test_scripts.py +69 -0
  371. numpy-1.10.0.post2/numpy/version.py +10 -0
  372. numpy-1.10.0.post2/setup.py +260 -0
  373. numpy-1.10.0.post2/site.cfg.example +193 -0
  374. numpy-1.10.0.post2/tmp.txt +789 -0
  375. numpy-1.10.0.post2/tools/swig/README +145 -0
  376. numpy-1.10.0.post2/tools/swig/numpy.i +3161 -0
  377. numpy-1.10.0.post2/tools/swig/test/Array.i +135 -0
  378. numpy-1.10.0.post2/tools/swig/test/ArrayZ.cxx +131 -0
  379. numpy-1.10.0.post2/tools/swig/test/ArrayZ.h +56 -0
  380. numpy-1.10.0.post2/tools/swig/test/Flat.cxx +36 -0
  381. numpy-1.10.0.post2/tools/swig/test/Flat.h +34 -0
  382. numpy-1.10.0.post2/tools/swig/test/Flat.i +36 -0
  383. numpy-1.10.0.post2/tools/swig/test/Makefile +37 -0
  384. numpy-1.10.0.post2/tools/swig/test/setup.py +71 -0
  385. numpy-1.10.0.post2/tools/swig/test/testArray.py +385 -0
  386. numpy-1.10.0.post2/tools/swig/test/testFarray.py +159 -0
  387. numpy-1.10.0.post2/tools/swig/test/testFlat.py +200 -0
  388. numpy-1.10.0.post2/tools/swig/test/testFortran.py +173 -0
  389. numpy-1.10.0.post2/tools/swig/test/testMatrix.py +362 -0
  390. numpy-1.10.0.post2/tools/swig/test/testSuperTensor.py +388 -0
  391. numpy-1.10.0.post2/tools/swig/test/testTensor.py +402 -0
  392. numpy-1.10.0.post2/tools/swig/test/testVector.py +381 -0
  393. numpy-1.9.2/INSTALL.txt +0 -138
  394. numpy-1.9.2/LICENSE.txt +0 -30
  395. numpy-1.9.2/MANIFEST.in +0 -26
  396. numpy-1.9.2/PKG-INFO +0 -39
  397. numpy-1.9.2/doc/scipy-sphinx-theme/.git +0 -1
  398. numpy-1.9.2/doc/source/conf.py +0 -331
  399. numpy-1.9.2/doc/source/dev/gitwash/branch_list.png +0 -0
  400. numpy-1.9.2/doc/source/dev/gitwash/branch_list_compare.png +0 -0
  401. numpy-1.9.2/doc/source/dev/gitwash/development_workflow.rst +0 -568
  402. numpy-1.9.2/doc/source/dev/gitwash/git_links.inc +0 -88
  403. numpy-1.9.2/doc/source/dev/gitwash/index.rst +0 -14
  404. numpy-1.9.2/doc/source/dev/index.rst +0 -10
  405. numpy-1.9.2/doc/source/reference/arrays.classes.rst +0 -427
  406. numpy-1.9.2/doc/source/reference/arrays.dtypes.rst +0 -534
  407. numpy-1.9.2/doc/source/reference/arrays.indexing.rst +0 -550
  408. numpy-1.9.2/doc/source/reference/arrays.interface.rst +0 -336
  409. numpy-1.9.2/doc/source/reference/arrays.ndarray.rst +0 -609
  410. numpy-1.9.2/doc/source/reference/arrays.scalars.rst +0 -291
  411. numpy-1.9.2/doc/source/reference/c-api.array.rst +0 -3362
  412. numpy-1.9.2/doc/source/reference/c-api.config.rst +0 -103
  413. numpy-1.9.2/doc/source/reference/c-api.coremath.rst +0 -420
  414. numpy-1.9.2/doc/source/reference/c-api.dtype.rst +0 -376
  415. numpy-1.9.2/doc/source/reference/c-api.generalized-ufuncs.rst +0 -171
  416. numpy-1.9.2/doc/source/reference/c-api.iterator.rst +0 -1298
  417. numpy-1.9.2/doc/source/reference/c-api.types-and-structures.rst +0 -1204
  418. numpy-1.9.2/doc/source/reference/c-api.ufunc.rst +0 -399
  419. numpy-1.9.2/doc/source/reference/index.rst +0 -44
  420. numpy-1.9.2/doc/source/reference/internals.code-explanations.rst +0 -666
  421. numpy-1.9.2/doc/source/reference/routines.array-manipulation.rst +0 -113
  422. numpy-1.9.2/doc/source/reference/routines.io.rst +0 -74
  423. numpy-1.9.2/doc/source/reference/routines.linalg.rst +0 -88
  424. numpy-1.9.2/doc/source/reference/routines.ma.rst +0 -405
  425. numpy-1.9.2/doc/source/reference/routines.sort.rst +0 -42
  426. numpy-1.9.2/doc/source/reference/routines.statistics.rst +0 -55
  427. numpy-1.9.2/doc/source/reference/swig.interface-file.rst +0 -1055
  428. numpy-1.9.2/doc/source/reference/swig.testing.rst +0 -166
  429. numpy-1.9.2/doc/source/reference/ufuncs.rst +0 -651
  430. numpy-1.9.2/doc/source/release.rst +0 -19
  431. numpy-1.9.2/doc/source/user/basics.io.genfromtxt.rst +0 -531
  432. numpy-1.9.2/doc/source/user/basics.rec.rst +0 -7
  433. numpy-1.9.2/doc/source/user/c-info.beyond-basics.rst +0 -560
  434. numpy-1.9.2/doc/source/user/c-info.how-to-extend.rst +0 -642
  435. numpy-1.9.2/doc/source/user/c-info.python-as-glue.rst +0 -1528
  436. numpy-1.9.2/doc/source/user/c-info.ufunc-tutorial.rst +0 -1211
  437. numpy-1.9.2/doc/source/user/install.rst +0 -180
  438. numpy-1.9.2/doc/sphinxext/.git +0 -1
  439. numpy-1.9.2/numpy/__init__.py +0 -216
  440. numpy-1.9.2/numpy/_import_tools.py +0 -348
  441. numpy-1.9.2/numpy/add_newdocs.py +0 -7518
  442. numpy-1.9.2/numpy/compat/_inspect.py +0 -221
  443. numpy-1.9.2/numpy/compat/py3k.py +0 -89
  444. numpy-1.9.2/numpy/compat/setup.py +0 -12
  445. numpy-1.9.2/numpy/core/__init__.py +0 -78
  446. numpy-1.9.2/numpy/core/_internal.py +0 -570
  447. numpy-1.9.2/numpy/core/_methods.py +0 -134
  448. numpy-1.9.2/numpy/core/arrayprint.py +0 -752
  449. numpy-1.9.2/numpy/core/blasdot/_dotblas.c +0 -1255
  450. numpy-1.9.2/numpy/core/blasdot/apple_sgemv_patch.c +0 -216
  451. numpy-1.9.2/numpy/core/blasdot/cblas.h +0 -578
  452. numpy-1.9.2/numpy/core/code_generators/cversions.txt +0 -31
  453. numpy-1.9.2/numpy/core/code_generators/generate_ufunc_api.py +0 -219
  454. numpy-1.9.2/numpy/core/code_generators/generate_umath.py +0 -972
  455. numpy-1.9.2/numpy/core/code_generators/numpy_api.py +0 -412
  456. numpy-1.9.2/numpy/core/code_generators/ufunc_docstrings.py +0 -3419
  457. numpy-1.9.2/numpy/core/defchararray.py +0 -2687
  458. numpy-1.9.2/numpy/core/fromnumeric.py +0 -2938
  459. numpy-1.9.2/numpy/core/function_base.py +0 -190
  460. numpy-1.9.2/numpy/core/getlimits.py +0 -306
  461. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.c +0 -38
  462. numpy-1.9.2/numpy/core/include/numpy/fenv/fenv.h +0 -224
  463. numpy-1.9.2/numpy/core/include/numpy/ndarrayobject.h +0 -237
  464. numpy-1.9.2/numpy/core/include/numpy/ndarraytypes.h +0 -1820
  465. numpy-1.9.2/numpy/core/include/numpy/npy_3kcompat.h +0 -506
  466. numpy-1.9.2/numpy/core/include/numpy/npy_common.h +0 -1038
  467. numpy-1.9.2/numpy/core/include/numpy/npy_cpu.h +0 -122
  468. numpy-1.9.2/numpy/core/include/numpy/npy_endian.h +0 -49
  469. numpy-1.9.2/numpy/core/include/numpy/npy_math.h +0 -479
  470. numpy-1.9.2/numpy/core/include/numpy/numpyconfig.h +0 -35
  471. numpy-1.9.2/numpy/core/machar.py +0 -338
  472. numpy-1.9.2/numpy/core/memmap.py +0 -308
  473. numpy-1.9.2/numpy/core/numeric.py +0 -2842
  474. numpy-1.9.2/numpy/core/numerictypes.py +0 -1042
  475. numpy-1.9.2/numpy/core/records.py +0 -804
  476. numpy-1.9.2/numpy/core/setup.py +0 -1016
  477. numpy-1.9.2/numpy/core/setup_common.py +0 -321
  478. numpy-1.9.2/numpy/core/shape_base.py +0 -277
  479. numpy-1.9.2/numpy/core/src/multiarray/alloc.c +0 -241
  480. numpy-1.9.2/numpy/core/src/multiarray/arrayobject.c +0 -1791
  481. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.c.src +0 -4372
  482. numpy-1.9.2/numpy/core/src/multiarray/arraytypes.h +0 -13
  483. numpy-1.9.2/numpy/core/src/multiarray/buffer.c +0 -954
  484. numpy-1.9.2/numpy/core/src/multiarray/calculation.c +0 -1229
  485. numpy-1.9.2/numpy/core/src/multiarray/common.c +0 -798
  486. numpy-1.9.2/numpy/core/src/multiarray/common.h +0 -328
  487. numpy-1.9.2/numpy/core/src/multiarray/conversion_utils.c +0 -1240
  488. numpy-1.9.2/numpy/core/src/multiarray/convert.c +0 -589
  489. numpy-1.9.2/numpy/core/src/multiarray/convert_datatype.c +0 -2199
  490. numpy-1.9.2/numpy/core/src/multiarray/ctors.c +0 -3785
  491. numpy-1.9.2/numpy/core/src/multiarray/datetime.c +0 -3823
  492. numpy-1.9.2/numpy/core/src/multiarray/datetime_busday.c +0 -1322
  493. numpy-1.9.2/numpy/core/src/multiarray/datetime_busdaycal.c +0 -552
  494. numpy-1.9.2/numpy/core/src/multiarray/datetime_strings.c +0 -1772
  495. numpy-1.9.2/numpy/core/src/multiarray/descriptor.c +0 -3658
  496. numpy-1.9.2/numpy/core/src/multiarray/dtype_transfer.c +0 -4232
  497. numpy-1.9.2/numpy/core/src/multiarray/einsum.c.src +0 -3013
  498. numpy-1.9.2/numpy/core/src/multiarray/getset.c +0 -984
  499. numpy-1.9.2/numpy/core/src/multiarray/hashdescr.c +0 -319
  500. numpy-1.9.2/numpy/core/src/multiarray/item_selection.c +0 -2711
  501. numpy-1.9.2/numpy/core/src/multiarray/iterators.c +0 -2160
  502. numpy-1.9.2/numpy/core/src/multiarray/lowlevel_strided_loops.c.src +0 -1767
  503. numpy-1.9.2/numpy/core/src/multiarray/mapping.c +0 -3316
  504. numpy-1.9.2/numpy/core/src/multiarray/mapping.h +0 -73
  505. numpy-1.9.2/numpy/core/src/multiarray/methods.c +0 -2497
  506. numpy-1.9.2/numpy/core/src/multiarray/multiarray_tests.c.src +0 -977
  507. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.c +0 -4202
  508. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule.h +0 -4
  509. numpy-1.9.2/numpy/core/src/multiarray/multiarraymodule_onefile.c +0 -58
  510. numpy-1.9.2/numpy/core/src/multiarray/nditer_api.c +0 -2809
  511. numpy-1.9.2/numpy/core/src/multiarray/nditer_constr.c +0 -3159
  512. numpy-1.9.2/numpy/core/src/multiarray/nditer_pywrap.c +0 -2492
  513. numpy-1.9.2/numpy/core/src/multiarray/number.c +0 -1057
  514. numpy-1.9.2/numpy/core/src/multiarray/number.h +0 -76
  515. numpy-1.9.2/numpy/core/src/multiarray/numpymemoryview.c +0 -309
  516. numpy-1.9.2/numpy/core/src/multiarray/numpyos.c +0 -683
  517. numpy-1.9.2/numpy/core/src/multiarray/scalarapi.c +0 -861
  518. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.c.src +0 -4270
  519. numpy-1.9.2/numpy/core/src/multiarray/scalartypes.h +0 -52
  520. numpy-1.9.2/numpy/core/src/multiarray/shape.c +0 -1141
  521. numpy-1.9.2/numpy/core/src/multiarray/ucsnarrow.c +0 -173
  522. numpy-1.9.2/numpy/core/src/npymath/ieee754.c.src +0 -814
  523. numpy-1.9.2/numpy/core/src/npymath/npy_math.c.src +0 -527
  524. numpy-1.9.2/numpy/core/src/npymath/npy_math_complex.c.src +0 -291
  525. numpy-1.9.2/numpy/core/src/npymath/npy_math_private.h +0 -539
  526. numpy-1.9.2/numpy/core/src/npysort/heapsort.c.src +0 -341
  527. numpy-1.9.2/numpy/core/src/npysort/mergesort.c.src +0 -428
  528. numpy-1.9.2/numpy/core/src/npysort/npysort_common.h +0 -367
  529. numpy-1.9.2/numpy/core/src/npysort/quicksort.c.src +0 -363
  530. numpy-1.9.2/numpy/core/src/npysort/selection.c.src +0 -474
  531. numpy-1.9.2/numpy/core/src/private/npy_config.h +0 -44
  532. numpy-1.9.2/numpy/core/src/private/npy_partition.h.src +0 -138
  533. numpy-1.9.2/numpy/core/src/private/npy_sort.h +0 -194
  534. numpy-1.9.2/numpy/core/src/private/scalarmathmodule.h.src +0 -42
  535. numpy-1.9.2/numpy/core/src/private/ufunc_override.h +0 -384
  536. numpy-1.9.2/numpy/core/src/scalarmathmodule.c.src +0 -1980
  537. numpy-1.9.2/numpy/core/src/umath/funcs.inc.src +0 -715
  538. numpy-1.9.2/numpy/core/src/umath/loops.c.src +0 -2654
  539. numpy-1.9.2/numpy/core/src/umath/loops.h.src +0 -501
  540. numpy-1.9.2/numpy/core/src/umath/operand_flag_tests.c.src +0 -105
  541. numpy-1.9.2/numpy/core/src/umath/simd.inc.src +0 -881
  542. numpy-1.9.2/numpy/core/src/umath/test_rational.c.src +0 -1404
  543. numpy-1.9.2/numpy/core/src/umath/ufunc_object.c +0 -5520
  544. numpy-1.9.2/numpy/core/src/umath/ufunc_type_resolution.c +0 -2164
  545. numpy-1.9.2/numpy/core/src/umath/umath_tests.c.src +0 -341
  546. numpy-1.9.2/numpy/core/src/umath/umathmodule.c +0 -561
  547. numpy-1.9.2/numpy/core/src/umath/umathmodule_onefile.c +0 -6
  548. numpy-1.9.2/numpy/core/tests/test_abc.py +0 -45
  549. numpy-1.9.2/numpy/core/tests/test_api.py +0 -514
  550. numpy-1.9.2/numpy/core/tests/test_arrayprint.py +0 -167
  551. numpy-1.9.2/numpy/core/tests/test_blasdot.py +0 -249
  552. numpy-1.9.2/numpy/core/tests/test_datetime.py +0 -1781
  553. numpy-1.9.2/numpy/core/tests/test_defchararray.py +0 -642
  554. numpy-1.9.2/numpy/core/tests/test_deprecations.py +0 -512
  555. numpy-1.9.2/numpy/core/tests/test_dtype.py +0 -542
  556. numpy-1.9.2/numpy/core/tests/test_einsum.py +0 -583
  557. numpy-1.9.2/numpy/core/tests/test_errstate.py +0 -51
  558. numpy-1.9.2/numpy/core/tests/test_function_base.py +0 -111
  559. numpy-1.9.2/numpy/core/tests/test_getlimits.py +0 -86
  560. numpy-1.9.2/numpy/core/tests/test_half.py +0 -439
  561. numpy-1.9.2/numpy/core/tests/test_indexerrors.py +0 -127
  562. numpy-1.9.2/numpy/core/tests/test_indexing.py +0 -1014
  563. numpy-1.9.2/numpy/core/tests/test_item_selection.py +0 -70
  564. numpy-1.9.2/numpy/core/tests/test_machar.py +0 -30
  565. numpy-1.9.2/numpy/core/tests/test_memmap.py +0 -127
  566. numpy-1.9.2/numpy/core/tests/test_multiarray.py +0 -4645
  567. numpy-1.9.2/numpy/core/tests/test_multiarray_assignment.py +0 -80
  568. numpy-1.9.2/numpy/core/tests/test_nditer.py +0 -2630
  569. numpy-1.9.2/numpy/core/tests/test_numeric.py +0 -2117
  570. numpy-1.9.2/numpy/core/tests/test_numerictypes.py +0 -377
  571. numpy-1.9.2/numpy/core/tests/test_print.py +0 -245
  572. numpy-1.9.2/numpy/core/tests/test_records.py +0 -185
  573. numpy-1.9.2/numpy/core/tests/test_regression.py +0 -2108
  574. numpy-1.9.2/numpy/core/tests/test_scalarinherit.py +0 -34
  575. numpy-1.9.2/numpy/core/tests/test_scalarmath.py +0 -275
  576. numpy-1.9.2/numpy/core/tests/test_shape_base.py +0 -250
  577. numpy-1.9.2/numpy/core/tests/test_ufunc.py +0 -1153
  578. numpy-1.9.2/numpy/core/tests/test_umath.py +0 -1695
  579. numpy-1.9.2/numpy/core/tests/test_umath_complex.py +0 -537
  580. numpy-1.9.2/numpy/core/tests/test_unicode.py +0 -357
  581. numpy-1.9.2/numpy/distutils/__init__.py +0 -39
  582. numpy-1.9.2/numpy/distutils/ccompiler.py +0 -656
  583. numpy-1.9.2/numpy/distutils/command/autodist.py +0 -43
  584. numpy-1.9.2/numpy/distutils/command/build.py +0 -39
  585. numpy-1.9.2/numpy/distutils/command/build_clib.py +0 -284
  586. numpy-1.9.2/numpy/distutils/command/build_ext.py +0 -503
  587. numpy-1.9.2/numpy/distutils/command/config.py +0 -476
  588. numpy-1.9.2/numpy/distutils/exec_command.py +0 -618
  589. numpy-1.9.2/numpy/distutils/fcompiler/compaq.py +0 -128
  590. numpy-1.9.2/numpy/distutils/fcompiler/gnu.py +0 -390
  591. numpy-1.9.2/numpy/distutils/fcompiler/intel.py +0 -205
  592. numpy-1.9.2/numpy/distutils/fcompiler/pg.py +0 -60
  593. numpy-1.9.2/numpy/distutils/fcompiler/sun.py +0 -52
  594. numpy-1.9.2/numpy/distutils/intelccompiler.py +0 -45
  595. numpy-1.9.2/numpy/distutils/lib2def.py +0 -116
  596. numpy-1.9.2/numpy/distutils/mingw32ccompiler.py +0 -582
  597. numpy-1.9.2/numpy/distutils/misc_util.py +0 -2271
  598. numpy-1.9.2/numpy/distutils/npy_pkg_config.py +0 -464
  599. numpy-1.9.2/numpy/distutils/system_info.py +0 -2319
  600. numpy-1.9.2/numpy/distutils/tests/f2py_ext/tests/test_fib2.py +0 -13
  601. numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext/tests/test_foo.py +0 -12
  602. numpy-1.9.2/numpy/distutils/tests/gen_ext/tests/test_fib3.py +0 -12
  603. numpy-1.9.2/numpy/distutils/tests/pyrex_ext/tests/test_primes.py +0 -14
  604. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example.py +0 -18
  605. numpy-1.9.2/numpy/distutils/tests/swig_ext/tests/test_example2.py +0 -16
  606. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_gnu.py +0 -53
  607. numpy-1.9.2/numpy/distutils/tests/test_fcompiler_intel.py +0 -36
  608. numpy-1.9.2/numpy/distutils/tests/test_misc_util.py +0 -75
  609. numpy-1.9.2/numpy/distutils/tests/test_npy_pkg_config.py +0 -98
  610. numpy-1.9.2/numpy/distutils/unixccompiler.py +0 -113
  611. numpy-1.9.2/numpy/doc/byteswapping.py +0 -147
  612. numpy-1.9.2/numpy/doc/creation.py +0 -144
  613. numpy-1.9.2/numpy/doc/glossary.py +0 -418
  614. numpy-1.9.2/numpy/doc/indexing.py +0 -437
  615. numpy-1.9.2/numpy/doc/structured_arrays.py +0 -223
  616. numpy-1.9.2/numpy/f2py/__init__.py +0 -49
  617. numpy-1.9.2/numpy/f2py/auxfuncs.py +0 -711
  618. numpy-1.9.2/numpy/f2py/capi_maps.py +0 -773
  619. numpy-1.9.2/numpy/f2py/cb_rules.py +0 -539
  620. numpy-1.9.2/numpy/f2py/cfuncs.py +0 -1224
  621. numpy-1.9.2/numpy/f2py/common_rules.py +0 -132
  622. numpy-1.9.2/numpy/f2py/crackfortran.py +0 -2870
  623. numpy-1.9.2/numpy/f2py/diagnose.py +0 -149
  624. numpy-1.9.2/numpy/f2py/f2py2e.py +0 -598
  625. numpy-1.9.2/numpy/f2py/f2py_testing.py +0 -46
  626. numpy-1.9.2/numpy/f2py/f90mod_rules.py +0 -246
  627. numpy-1.9.2/numpy/f2py/func2subr.py +0 -291
  628. numpy-1.9.2/numpy/f2py/rules.py +0 -1448
  629. numpy-1.9.2/numpy/f2py/setup.py +0 -129
  630. numpy-1.9.2/numpy/f2py/src/fortranobject.c +0 -972
  631. numpy-1.9.2/numpy/f2py/src/fortranobject.h +0 -162
  632. numpy-1.9.2/numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +0 -223
  633. numpy-1.9.2/numpy/f2py/tests/test_array_from_pyobj.py +0 -559
  634. numpy-1.9.2/numpy/f2py/tests/test_assumed_shape.py +0 -37
  635. numpy-1.9.2/numpy/f2py/tests/test_callback.py +0 -132
  636. numpy-1.9.2/numpy/f2py/tests/test_kind.py +0 -36
  637. numpy-1.9.2/numpy/f2py/tests/test_mixed.py +0 -41
  638. numpy-1.9.2/numpy/f2py/tests/test_regression.py +0 -32
  639. numpy-1.9.2/numpy/f2py/tests/test_return_character.py +0 -142
  640. numpy-1.9.2/numpy/f2py/tests/test_return_complex.py +0 -169
  641. numpy-1.9.2/numpy/f2py/tests/test_return_integer.py +0 -178
  642. numpy-1.9.2/numpy/f2py/tests/test_return_logical.py +0 -187
  643. numpy-1.9.2/numpy/f2py/tests/test_return_real.py +0 -203
  644. numpy-1.9.2/numpy/f2py/tests/test_size.py +0 -47
  645. numpy-1.9.2/numpy/f2py/tests/util.py +0 -353
  646. numpy-1.9.2/numpy/f2py/use_rules.py +0 -109
  647. numpy-1.9.2/numpy/fft/fftpack.c +0 -1501
  648. numpy-1.9.2/numpy/fft/fftpack.h +0 -28
  649. numpy-1.9.2/numpy/fft/fftpack.py +0 -1169
  650. numpy-1.9.2/numpy/fft/fftpack_litemodule.c +0 -371
  651. numpy-1.9.2/numpy/fft/info.py +0 -179
  652. numpy-1.9.2/numpy/fft/setup.py +0 -20
  653. numpy-1.9.2/numpy/fft/tests/test_fftpack.py +0 -75
  654. numpy-1.9.2/numpy/fft/tests/test_helper.py +0 -78
  655. numpy-1.9.2/numpy/lib/_iotools.py +0 -891
  656. numpy-1.9.2/numpy/lib/arraypad.py +0 -1475
  657. numpy-1.9.2/numpy/lib/arraysetops.py +0 -464
  658. numpy-1.9.2/numpy/lib/arrayterator.py +0 -226
  659. numpy-1.9.2/numpy/lib/financial.py +0 -737
  660. numpy-1.9.2/numpy/lib/format.py +0 -771
  661. numpy-1.9.2/numpy/lib/function_base.py +0 -3884
  662. numpy-1.9.2/numpy/lib/index_tricks.py +0 -869
  663. numpy-1.9.2/numpy/lib/info.py +0 -151
  664. numpy-1.9.2/numpy/lib/nanfunctions.py +0 -1158
  665. numpy-1.9.2/numpy/lib/npyio.py +0 -1918
  666. numpy-1.9.2/numpy/lib/polynomial.py +0 -1271
  667. numpy-1.9.2/numpy/lib/recfunctions.py +0 -1003
  668. numpy-1.9.2/numpy/lib/setup.py +0 -23
  669. numpy-1.9.2/numpy/lib/shape_base.py +0 -865
  670. numpy-1.9.2/numpy/lib/src/_compiled_base.c +0 -1761
  671. numpy-1.9.2/numpy/lib/stride_tricks.py +0 -123
  672. numpy-1.9.2/numpy/lib/tests/test__iotools.py +0 -326
  673. numpy-1.9.2/numpy/lib/tests/test__version.py +0 -57
  674. numpy-1.9.2/numpy/lib/tests/test_arraypad.py +0 -560
  675. numpy-1.9.2/numpy/lib/tests/test_arraysetops.py +0 -301
  676. numpy-1.9.2/numpy/lib/tests/test_financial.py +0 -160
  677. numpy-1.9.2/numpy/lib/tests/test_format.py +0 -716
  678. numpy-1.9.2/numpy/lib/tests/test_function_base.py +0 -2145
  679. numpy-1.9.2/numpy/lib/tests/test_index_tricks.py +0 -289
  680. numpy-1.9.2/numpy/lib/tests/test_io.py +0 -1754
  681. numpy-1.9.2/numpy/lib/tests/test_nanfunctions.py +0 -774
  682. numpy-1.9.2/numpy/lib/tests/test_polynomial.py +0 -177
  683. numpy-1.9.2/numpy/lib/tests/test_recfunctions.py +0 -705
  684. numpy-1.9.2/numpy/lib/tests/test_shape_base.py +0 -368
  685. numpy-1.9.2/numpy/lib/tests/test_stride_tricks.py +0 -238
  686. numpy-1.9.2/numpy/lib/tests/test_twodim_base.py +0 -504
  687. numpy-1.9.2/numpy/lib/tests/test_type_check.py +0 -328
  688. numpy-1.9.2/numpy/lib/twodim_base.py +0 -1003
  689. numpy-1.9.2/numpy/lib/type_check.py +0 -605
  690. numpy-1.9.2/numpy/lib/utils.py +0 -1176
  691. numpy-1.9.2/numpy/linalg/lapack_lite/python_xerbla.c +0 -47
  692. numpy-1.9.2/numpy/linalg/lapack_litemodule.c +0 -362
  693. numpy-1.9.2/numpy/linalg/linalg.py +0 -2136
  694. numpy-1.9.2/numpy/linalg/tests/test_build.py +0 -53
  695. numpy-1.9.2/numpy/linalg/tests/test_linalg.py +0 -1156
  696. numpy-1.9.2/numpy/linalg/tests/test_regression.py +0 -90
  697. numpy-1.9.2/numpy/linalg/umath_linalg.c.src +0 -3210
  698. numpy-1.9.2/numpy/ma/__init__.py +0 -58
  699. numpy-1.9.2/numpy/ma/bench.py +0 -166
  700. numpy-1.9.2/numpy/ma/core.py +0 -7374
  701. numpy-1.9.2/numpy/ma/extras.py +0 -1932
  702. numpy-1.9.2/numpy/ma/mrecords.py +0 -734
  703. numpy-1.9.2/numpy/ma/setup.py +0 -20
  704. numpy-1.9.2/numpy/ma/tests/test_core.py +0 -3706
  705. numpy-1.9.2/numpy/ma/tests/test_extras.py +0 -954
  706. numpy-1.9.2/numpy/ma/tests/test_mrecords.py +0 -521
  707. numpy-1.9.2/numpy/ma/tests/test_old_ma.py +0 -869
  708. numpy-1.9.2/numpy/ma/tests/test_regression.py +0 -75
  709. numpy-1.9.2/numpy/ma/tests/test_subclassing.py +0 -236
  710. numpy-1.9.2/numpy/ma/testutils.py +0 -240
  711. numpy-1.9.2/numpy/ma/timer_comparison.py +0 -459
  712. numpy-1.9.2/numpy/matlib.py +0 -358
  713. numpy-1.9.2/numpy/matrixlib/defmatrix.py +0 -1094
  714. numpy-1.9.2/numpy/matrixlib/tests/test_defmatrix.py +0 -400
  715. numpy-1.9.2/numpy/matrixlib/tests/test_multiarray.py +0 -18
  716. numpy-1.9.2/numpy/matrixlib/tests/test_numeric.py +0 -10
  717. numpy-1.9.2/numpy/matrixlib/tests/test_regression.py +0 -34
  718. numpy-1.9.2/numpy/polynomial/_polybase.py +0 -962
  719. numpy-1.9.2/numpy/polynomial/chebyshev.py +0 -2056
  720. numpy-1.9.2/numpy/polynomial/hermite.py +0 -1789
  721. numpy-1.9.2/numpy/polynomial/hermite_e.py +0 -1786
  722. numpy-1.9.2/numpy/polynomial/laguerre.py +0 -1781
  723. numpy-1.9.2/numpy/polynomial/legendre.py +0 -1809
  724. numpy-1.9.2/numpy/polynomial/polytemplate.py +0 -927
  725. numpy-1.9.2/numpy/polynomial/polyutils.py +0 -403
  726. numpy-1.9.2/numpy/random/mtrand/distributions.c +0 -892
  727. numpy-1.9.2/numpy/random/mtrand/mtrand.c +0 -31204
  728. numpy-1.9.2/numpy/random/mtrand/mtrand.pyx +0 -4706
  729. numpy-1.9.2/numpy/random/setup.py +0 -74
  730. numpy-1.9.2/numpy/random/tests/test_random.py +0 -707
  731. numpy-1.9.2/numpy/random/tests/test_regression.py +0 -86
  732. numpy-1.9.2/numpy/setup.py +0 -27
  733. numpy-1.9.2/numpy/testing/__init__.py +0 -16
  734. numpy-1.9.2/numpy/testing/decorators.py +0 -271
  735. numpy-1.9.2/numpy/testing/noseclasses.py +0 -353
  736. numpy-1.9.2/numpy/testing/nosetester.py +0 -504
  737. numpy-1.9.2/numpy/testing/print_coercion_tables.py +0 -89
  738. numpy-1.9.2/numpy/testing/setup.py +0 -20
  739. numpy-1.9.2/numpy/testing/tests/test_decorators.py +0 -185
  740. numpy-1.9.2/numpy/testing/tests/test_utils.py +0 -558
  741. numpy-1.9.2/numpy/testing/utils.py +0 -1715
  742. numpy-1.9.2/numpy/tests/test_ctypeslib.py +0 -102
  743. numpy-1.9.2/numpy/tests/test_matlib.py +0 -55
  744. numpy-1.9.2/numpy/version.py +0 -10
  745. numpy-1.9.2/setup.py +0 -251
  746. numpy-1.9.2/site.cfg.example +0 -157
  747. numpy-1.9.2/tools/swig/README +0 -135
  748. numpy-1.9.2/tools/swig/numpy.i +0 -3085
  749. numpy-1.9.2/tools/swig/test/Array.i +0 -102
  750. numpy-1.9.2/tools/swig/test/Makefile +0 -34
  751. numpy-1.9.2/tools/swig/test/setup.py +0 -64
  752. numpy-1.9.2/tools/swig/test/testArray.py +0 -284
  753. numpy-1.9.2/tools/swig/test/testFarray.py +0 -159
  754. numpy-1.9.2/tools/swig/test/testFortran.py +0 -173
  755. numpy-1.9.2/tools/swig/test/testMatrix.py +0 -362
  756. numpy-1.9.2/tools/swig/test/testSuperTensor.py +0 -388
  757. numpy-1.9.2/tools/swig/test/testTensor.py +0 -402
  758. numpy-1.9.2/tools/swig/test/testVector.py +0 -381
  759. {numpy-1.9.2 → numpy-1.10.0.post2}/BENTO_BUILD.txt +0 -0
  760. {numpy-1.9.2 → numpy-1.10.0.post2}/COMPATIBILITY +0 -0
  761. {numpy-1.9.2 → numpy-1.10.0.post2}/DEV_README.txt +0 -0
  762. {numpy-1.9.2 → numpy-1.10.0.post2}/README.txt +0 -0
  763. {numpy-1.9.2 → numpy-1.10.0.post2}/THANKS.txt +0 -0
  764. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/Makefile +0 -0
  765. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/BUGS.txt +0 -0
  766. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/FAQ.txt +0 -0
  767. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/HISTORY.txt +0 -0
  768. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Makefile +0 -0
  769. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/OLDNEWS.txt +0 -0
  770. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/README.txt +0 -0
  771. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-1.x.txt +0 -0
  772. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-2.x.txt +0 -0
  773. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-3.x.txt +0 -0
  774. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/Release-4.x.txt +0 -0
  775. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TESTING.txt +0 -0
  776. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/THANKS.txt +0 -0
  777. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/TODO.txt +0 -0
  778. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/apps.tex +0 -0
  779. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/bugs.tex +0 -0
  780. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/collectinput.py +0 -0
  781. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/commands.tex +0 -0
  782. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/default.css +0 -0
  783. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/docutils.conf +0 -0
  784. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/arr.f +0 -0
  785. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/bar.f +0 -0
  786. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foo.f +0 -0
  787. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar-smart.f90 +0 -0
  788. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobar.f90 +0 -0
  789. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/foobarmodule.tex +0 -0
  790. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/ex1/runme +0 -0
  791. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py.1 +0 -0
  792. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2py2e.tex +0 -0
  793. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/README.txt +0 -0
  794. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/aerostructure.jpg +0 -0
  795. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/flow.jpg +0 -0
  796. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_html.sh +0 -0
  797. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_pdf.sh +0 -0
  798. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/mk_ps.sh +0 -0
  799. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1.f +0 -0
  800. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1mess.txt +0 -0
  801. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/exp1session.txt +0 -0
  802. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foo.pyf +0 -0
  803. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/src/examples/foom.pyf +0 -0
  804. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/f2python9-final/structure.jpg +0 -0
  805. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/fortranobject.tex +0 -0
  806. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/hello.f +0 -0
  807. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/index.html +0 -0
  808. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/intro.tex +0 -0
  809. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/array_from_pyobj.c +0 -0
  810. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/bar.c +0 -0
  811. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/foo.f +0 -0
  812. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fortran_array_from_pyobj.txt +0 -0
  813. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/fun.pyf +0 -0
  814. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/run.pyf +0 -0
  815. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarray/transpose.txt +0 -0
  816. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/multiarrays.txt +0 -0
  817. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/notes.tex +0 -0
  818. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/oldnews.html +0 -0
  819. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/options.tex +0 -0
  820. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pyforttest.pyf +0 -0
  821. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/pytest.py +0 -0
  822. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/python9.tex +0 -0
  823. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/signaturefile.tex +0 -0
  824. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple.f +0 -0
  825. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/simple_session.dat +0 -0
  826. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/using_F_compiler.txt +0 -0
  827. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/f2py/win32_notes.txt +0 -0
  828. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/postprocess.py +0 -0
  829. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.3.0-notes.rst +0 -0
  830. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.4.0-notes.rst +0 -0
  831. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.5.0-notes.rst +0 -0
  832. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.0-notes.rst +0 -0
  833. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.1-notes.rst +0 -0
  834. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.6.2-notes.rst +0 -0
  835. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.0-notes.rst +0 -0
  836. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.1-notes.rst +0 -0
  837. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.7.2-notes.rst +0 -0
  838. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.0-notes.rst +0 -0
  839. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.1-notes.rst +0 -0
  840. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.8.2-notes.rst +0 -0
  841. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.0-notes.rst +0 -0
  842. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.1-notes.rst +0 -0
  843. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/1.9.2-notes.rst +0 -0
  844. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/release/time_based_proposal.rst +0 -0
  845. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/.gitignore +0 -0
  846. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/Makefile +0 -0
  847. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/README.rst +0 -0
  848. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_static/scipyshiny_small.png +0 -0
  849. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/layout.html +0 -0
  850. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/searchbox.html +0 -0
  851. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/sourcelink.html +0 -0
  852. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/extend.css +0 -0
  853. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/pygments.css +0 -0
  854. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/scipy-central.css +0 -0
  855. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-bootstrap.css +0 -0
  856. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/css/spc-extend.css +0 -0
  857. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/all-icons.svg +0 -0
  858. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/contents.png +0 -0
  859. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/create-new-account-icon.png +0 -0
  860. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon-shrunk.png +0 -0
  861. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.png +0 -0
  862. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-icon.svg +0 -0
  863. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiniest.png +0 -0
  864. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon-tiny.png +0 -0
  865. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/external-link-list-icon.png +0 -0
  866. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ad.png +0 -0
  867. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ae.png +0 -0
  868. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-af.png +0 -0
  869. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ag.png +0 -0
  870. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ai.png +0 -0
  871. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-al.png +0 -0
  872. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-am.png +0 -0
  873. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ao.png +0 -0
  874. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aq.png +0 -0
  875. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ar.png +0 -0
  876. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-as.png +0 -0
  877. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-at.png +0 -0
  878. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-au.png +0 -0
  879. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-aw.png +0 -0
  880. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-az.png +0 -0
  881. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ba.png +0 -0
  882. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bb.png +0 -0
  883. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bd.png +0 -0
  884. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-be.png +0 -0
  885. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bf.png +0 -0
  886. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bg.png +0 -0
  887. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bh.png +0 -0
  888. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bi.png +0 -0
  889. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bj.png +0 -0
  890. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bl.png +0 -0
  891. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bm.png +0 -0
  892. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bn.png +0 -0
  893. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bo.png +0 -0
  894. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-br.png +0 -0
  895. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bs.png +0 -0
  896. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bt.png +0 -0
  897. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bw.png +0 -0
  898. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-by.png +0 -0
  899. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-bz.png +0 -0
  900. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ca.png +0 -0
  901. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cc.png +0 -0
  902. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cd.png +0 -0
  903. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cf.png +0 -0
  904. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cg.png +0 -0
  905. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ch.png +0 -0
  906. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ci.png +0 -0
  907. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ck.png +0 -0
  908. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cl.png +0 -0
  909. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cm.png +0 -0
  910. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cn.png +0 -0
  911. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-co.png +0 -0
  912. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cr.png +0 -0
  913. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cu.png +0 -0
  914. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cv.png +0 -0
  915. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cw.png +0 -0
  916. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cx.png +0 -0
  917. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cy.png +0 -0
  918. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-cz.png +0 -0
  919. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-de.png +0 -0
  920. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dj.png +0 -0
  921. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dk.png +0 -0
  922. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dm.png +0 -0
  923. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-do.png +0 -0
  924. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-dz.png +0 -0
  925. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ec.png +0 -0
  926. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ee.png +0 -0
  927. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-eg.png +0 -0
  928. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-er.png +0 -0
  929. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-es.png +0 -0
  930. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-et.png +0 -0
  931. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fi.png +0 -0
  932. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fj.png +0 -0
  933. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fk.png +0 -0
  934. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fm.png +0 -0
  935. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fo.png +0 -0
  936. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-fr.png +0 -0
  937. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ga.png +0 -0
  938. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gb.png +0 -0
  939. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gd.png +0 -0
  940. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ge.png +0 -0
  941. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gf.png +0 -0
  942. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gg.png +0 -0
  943. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gh.png +0 -0
  944. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gi.png +0 -0
  945. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gl.png +0 -0
  946. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gm.png +0 -0
  947. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gn.png +0 -0
  948. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gq.png +0 -0
  949. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gr.png +0 -0
  950. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gs.png +0 -0
  951. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gt.png +0 -0
  952. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gu.png +0 -0
  953. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gw.png +0 -0
  954. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-gy.png +0 -0
  955. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hk.png +0 -0
  956. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hm.png +0 -0
  957. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hn.png +0 -0
  958. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hr.png +0 -0
  959. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ht.png +0 -0
  960. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-hu.png +0 -0
  961. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-id.png +0 -0
  962. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ie.png +0 -0
  963. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-il.png +0 -0
  964. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-im.png +0 -0
  965. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-in.png +0 -0
  966. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-io.png +0 -0
  967. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-iq.png +0 -0
  968. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ir.png +0 -0
  969. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-is.png +0 -0
  970. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-it.png +0 -0
  971. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-je.png +0 -0
  972. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jm.png +0 -0
  973. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jo.png +0 -0
  974. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-jp.png +0 -0
  975. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ke.png +0 -0
  976. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kg.png +0 -0
  977. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kh.png +0 -0
  978. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ki.png +0 -0
  979. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-km.png +0 -0
  980. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kn.png +0 -0
  981. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kp.png +0 -0
  982. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kr.png +0 -0
  983. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kw.png +0 -0
  984. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ky.png +0 -0
  985. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-kz.png +0 -0
  986. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-la.png +0 -0
  987. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lb.png +0 -0
  988. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lc.png +0 -0
  989. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-li.png +0 -0
  990. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lk.png +0 -0
  991. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lr.png +0 -0
  992. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ls.png +0 -0
  993. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lt.png +0 -0
  994. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lu.png +0 -0
  995. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-lv.png +0 -0
  996. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ly.png +0 -0
  997. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ma.png +0 -0
  998. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mc.png +0 -0
  999. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-md.png +0 -0
  1000. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-me.png +0 -0
  1001. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mf.png +0 -0
  1002. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mg.png +0 -0
  1003. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mh.png +0 -0
  1004. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mk.png +0 -0
  1005. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ml.png +0 -0
  1006. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mm.png +0 -0
  1007. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mn.png +0 -0
  1008. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mo.png +0 -0
  1009. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mp.png +0 -0
  1010. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mq.png +0 -0
  1011. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mr.png +0 -0
  1012. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ms.png +0 -0
  1013. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mt.png +0 -0
  1014. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mu.png +0 -0
  1015. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mv.png +0 -0
  1016. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mw.png +0 -0
  1017. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mx.png +0 -0
  1018. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-my.png +0 -0
  1019. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-mz.png +0 -0
  1020. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-na.png +0 -0
  1021. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nc.png +0 -0
  1022. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ne.png +0 -0
  1023. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nf.png +0 -0
  1024. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ng.png +0 -0
  1025. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ni.png +0 -0
  1026. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nl.png +0 -0
  1027. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-no.png +0 -0
  1028. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-np.png +0 -0
  1029. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nr.png +0 -0
  1030. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nu.png +0 -0
  1031. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-nz.png +0 -0
  1032. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-om.png +0 -0
  1033. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pa.png +0 -0
  1034. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pe.png +0 -0
  1035. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pf.png +0 -0
  1036. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pg.png +0 -0
  1037. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ph.png +0 -0
  1038. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pk.png +0 -0
  1039. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pl.png +0 -0
  1040. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pm.png +0 -0
  1041. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pn.png +0 -0
  1042. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pr.png +0 -0
  1043. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ps.png +0 -0
  1044. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pt.png +0 -0
  1045. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-pw.png +0 -0
  1046. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-py.png +0 -0
  1047. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-qa.png +0 -0
  1048. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-re.png +0 -0
  1049. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ro.png +0 -0
  1050. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rs.png +0 -0
  1051. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ru.png +0 -0
  1052. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-rw.png +0 -0
  1053. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sa.png +0 -0
  1054. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sb.png +0 -0
  1055. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sc.png +0 -0
  1056. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sd.png +0 -0
  1057. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-se.png +0 -0
  1058. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sg.png +0 -0
  1059. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sh.png +0 -0
  1060. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-si.png +0 -0
  1061. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sj.png +0 -0
  1062. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sk.png +0 -0
  1063. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sl.png +0 -0
  1064. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sm.png +0 -0
  1065. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sn.png +0 -0
  1066. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-so.png +0 -0
  1067. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sr.png +0 -0
  1068. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-st.png +0 -0
  1069. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sv.png +0 -0
  1070. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sy.png +0 -0
  1071. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-sz.png +0 -0
  1072. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tc.png +0 -0
  1073. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-td.png +0 -0
  1074. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tf.png +0 -0
  1075. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tg.png +0 -0
  1076. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-th.png +0 -0
  1077. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tj.png +0 -0
  1078. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tk.png +0 -0
  1079. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tl.png +0 -0
  1080. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tm.png +0 -0
  1081. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tn.png +0 -0
  1082. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-to.png +0 -0
  1083. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tr.png +0 -0
  1084. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tt.png +0 -0
  1085. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tv.png +0 -0
  1086. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tw.png +0 -0
  1087. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-tz.png +0 -0
  1088. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ua.png +0 -0
  1089. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ug.png +0 -0
  1090. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-um.png +0 -0
  1091. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-us.png +0 -0
  1092. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uy.png +0 -0
  1093. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-uz.png +0 -0
  1094. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-va.png +0 -0
  1095. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vc.png +0 -0
  1096. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ve.png +0 -0
  1097. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vg.png +0 -0
  1098. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vi.png +0 -0
  1099. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vn.png +0 -0
  1100. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-vu.png +0 -0
  1101. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-wf.png +0 -0
  1102. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ws.png +0 -0
  1103. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-ye.png +0 -0
  1104. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-za.png +0 -0
  1105. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zm.png +0 -0
  1106. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/flags/flag-zw.png +0 -0
  1107. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings-white.png +0 -0
  1108. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/glyphicons-halflings.png +0 -0
  1109. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/important-icon.png +0 -0
  1110. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/information-icon.png +0 -0
  1111. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/internet-web-browser.png +0 -0
  1112. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon-shrunk.png +0 -0
  1113. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.png +0 -0
  1114. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-icon.svg +0 -0
  1115. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon-tiny.png +0 -0
  1116. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/multiple-file-list-icon.png +0 -0
  1117. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/navigation.png +0 -0
  1118. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon-tiny.png +0 -0
  1119. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/person-list-icon.png +0 -0
  1120. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy-logo.png +0 -0
  1121. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipy_org_logo.gif +0 -0
  1122. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipycentral_logo.png +0 -0
  1123. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/scipyshiny_small.png +0 -0
  1124. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/send-email-icon.png +0 -0
  1125. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon-shrunk.png +0 -0
  1126. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.png +0 -0
  1127. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-icon.svg +0 -0
  1128. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiniest.png +0 -0
  1129. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon-tiny.png +0 -0
  1130. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/single-file-list-icon.png +0 -0
  1131. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/transparent-pixel.gif +0 -0
  1132. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/img/ui-anim_basic_16x16.gif +0 -0
  1133. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/js/copybutton.js +0 -0
  1134. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/accordion.less +0 -0
  1135. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/alerts.less +0 -0
  1136. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/bootstrap.less +0 -0
  1137. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/breadcrumbs.less +0 -0
  1138. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/button-groups.less +0 -0
  1139. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/buttons.less +0 -0
  1140. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/carousel.less +0 -0
  1141. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/close.less +0 -0
  1142. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/code.less +0 -0
  1143. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/component-animations.less +0 -0
  1144. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/dropdowns.less +0 -0
  1145. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/forms.less +0 -0
  1146. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/grid.less +0 -0
  1147. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/hero-unit.less +0 -0
  1148. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/labels-badges.less +0 -0
  1149. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/layouts.less +0 -0
  1150. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/media.less +0 -0
  1151. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/mixins.less +0 -0
  1152. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/modals.less +0 -0
  1153. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navbar.less +0 -0
  1154. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/navs.less +0 -0
  1155. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pager.less +0 -0
  1156. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/pagination.less +0 -0
  1157. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/popovers.less +0 -0
  1158. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/progress-bars.less +0 -0
  1159. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/reset.less +0 -0
  1160. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-1200px-min.less +0 -0
  1161. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-767px-max.less +0 -0
  1162. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-768px-979px.less +0 -0
  1163. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-navbar.less +0 -0
  1164. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive-utilities.less +0 -0
  1165. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/responsive.less +0 -0
  1166. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/scaffolding.less +0 -0
  1167. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/sprites.less +0 -0
  1168. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tables.less +0 -0
  1169. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/thumbnails.less +0 -0
  1170. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/tooltip.less +0 -0
  1171. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/type.less +0 -0
  1172. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/utilities.less +0 -0
  1173. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/variables.less +0 -0
  1174. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/bootstrap/wells.less +0 -0
  1175. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-bootstrap.less +0 -0
  1176. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-content.less +0 -0
  1177. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-extend.less +0 -0
  1178. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-footer.less +0 -0
  1179. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-header.less +0 -0
  1180. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-rightsidebar.less +0 -0
  1181. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/less/spc-utils.less +0 -0
  1182. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/static/scipy.css_t +0 -0
  1183. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/_theme/scipy/theme.conf +0 -0
  1184. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/conf.py +0 -0
  1185. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/index.rst +0 -0
  1186. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc.rst +0 -0
  1187. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_2.rst +0 -0
  1188. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_3.rst +0 -0
  1189. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_autodoc_4.rst +0 -0
  1190. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/scipy-sphinx-theme/test_optimize.rst +0 -0
  1191. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/autosummary/class.rst +0 -0
  1192. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexcontent.html +0 -0
  1193. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/indexsidebar.html +0 -0
  1194. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/_templates/layout.html +0 -0
  1195. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/about.rst +0 -0
  1196. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/bugs.rst +0 -0
  1197. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/contents.rst +0 -0
  1198. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/configure_git.rst +0 -0
  1199. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/development_setup.rst +0 -0
  1200. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/dot2_dot3.rst +0 -0
  1201. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/following_latest.rst +0 -0
  1202. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/forking_button.png +0 -0
  1203. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_development.rst +0 -0
  1204. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_intro.rst +0 -0
  1205. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/git_resources.rst +0 -0
  1206. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash/pull_button.png +0 -0
  1207. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/dev/gitwash_links.txt +0 -0
  1208. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/advanced.rst +0 -0
  1209. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr.f90 +0 -0
  1210. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/allocarr_session.dat +0 -0
  1211. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array.f +0 -0
  1212. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/array_session.dat +0 -0
  1213. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate.f +0 -0
  1214. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/calculate_session.dat +0 -0
  1215. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback.f +0 -0
  1216. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback2.pyf +0 -0
  1217. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/callback_session.dat +0 -0
  1218. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common.f +0 -0
  1219. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/common_session.dat +0 -0
  1220. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/compile_session.dat +0 -0
  1221. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/distutils.rst +0 -0
  1222. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback.f +0 -0
  1223. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/extcallback_session.dat +0 -0
  1224. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.f +0 -0
  1225. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib1.pyf +0 -0
  1226. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib2.pyf +0 -0
  1227. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/fib3.f +0 -0
  1228. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype.f +0 -0
  1229. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/ftype_session.dat +0 -0
  1230. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/getting-started.rst +0 -0
  1231. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/index.rst +0 -0
  1232. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata.f90 +0 -0
  1233. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/moddata_session.dat +0 -0
  1234. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/python-usage.rst +0 -0
  1235. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/run_main_session.dat +0 -0
  1236. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar.f +0 -0
  1237. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/scalar_session.dat +0 -0
  1238. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/setup_example.py +0 -0
  1239. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/signature-file.rst +0 -0
  1240. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam.pyf +0 -0
  1241. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/spam_session.dat +0 -0
  1242. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string.f +0 -0
  1243. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/string_session.dat +0 -0
  1244. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/usage.rst +0 -0
  1245. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var.pyf +0 -0
  1246. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/f2py/var_session.dat +0 -0
  1247. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/glossary.rst +0 -0
  1248. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/license.rst +0 -0
  1249. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal.rst +0 -0
  1250. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/datetime-proposal3.rst +0 -0
  1251. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/deferred-ufunc-evaluation.rst +0 -0
  1252. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/generalized-ufuncs.rst +0 -0
  1253. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/groupby_additions.rst +0 -0
  1254. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/index.rst +0 -0
  1255. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/math_config_clean.rst +0 -0
  1256. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/missing-data.rst +0 -0
  1257. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/new-iterator-ufunc.rst +0 -0
  1258. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/newbugtracker.rst +0 -0
  1259. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/npy-format.rst +0 -0
  1260. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/structured_array_extensions.rst +0 -0
  1261. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/ufunc-overrides.rst +0 -0
  1262. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/neps/warnfix.rst +0 -0
  1263. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.datetime.rst +0 -0
  1264. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.nditer.rst +0 -0
  1265. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/arrays.rst +0 -0
  1266. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.deprecations.rst +0 -0
  1267. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/c-api.rst +0 -0
  1268. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/distutils.rst +0 -0
  1269. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.dia +0 -0
  1270. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.pdf +0 -0
  1271. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/dtype-hierarchy.png +0 -0
  1272. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.fig +0 -0
  1273. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.pdf +0 -0
  1274. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/figures/threefundamental.png +0 -0
  1275. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/internals.rst +0 -0
  1276. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.baseclass.rst +0 -0
  1277. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.generic.rst +0 -0
  1278. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/maskedarray.rst +0 -0
  1279. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.array-creation.rst +0 -0
  1280. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.bitwise.rst +0 -0
  1281. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.char.rst +0 -0
  1282. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.ctypeslib.rst +0 -0
  1283. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.datetime.rst +0 -0
  1284. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dtype.rst +0 -0
  1285. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.dual.rst +0 -0
  1286. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.emath.rst +0 -0
  1287. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.err.rst +0 -0
  1288. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.fft.rst +0 -0
  1289. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.financial.rst +0 -0
  1290. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.functional.rst +0 -0
  1291. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.help.rst +0 -0
  1292. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.indexing.rst +0 -0
  1293. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.logic.rst +0 -0
  1294. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.math.rst +0 -0
  1295. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.matlib.rst +0 -0
  1296. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.numarray.rst +0 -0
  1297. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.oldnumeric.rst +0 -0
  1298. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.other.rst +0 -0
  1299. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.padding.rst +0 -0
  1300. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.chebyshev.rst +0 -0
  1301. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.classes.rst +0 -0
  1302. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite.rst +0 -0
  1303. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.hermite_e.rst +0 -0
  1304. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.laguerre.rst +0 -0
  1305. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.legendre.rst +0 -0
  1306. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.package.rst +0 -0
  1307. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.poly1d.rst +0 -0
  1308. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.polynomial.rst +0 -0
  1309. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.polynomials.rst +0 -0
  1310. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.random.rst +0 -0
  1311. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.rst +0 -0
  1312. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.set.rst +0 -0
  1313. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.testing.rst +0 -0
  1314. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/routines.window.rst +0 -0
  1315. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/reference/swig.rst +0 -0
  1316. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.broadcasting.rst +0 -0
  1317. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.byteswapping.rst +0 -0
  1318. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.creation.rst +0 -0
  1319. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.indexing.rst +0 -0
  1320. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.io.rst +0 -0
  1321. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.rst +0 -0
  1322. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.subclassing.rst +0 -0
  1323. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/basics.types.rst +0 -0
  1324. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/c-info.rst +0 -0
  1325. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/howtofind.rst +0 -0
  1326. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/index.rst +0 -0
  1327. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/introduction.rst +0 -0
  1328. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/misc.rst +0 -0
  1329. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/performance.rst +0 -0
  1330. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/source/user/whatisnumpy.rst +0 -0
  1331. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.gitignore +0 -0
  1332. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/.travis.yml +0 -0
  1333. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/LICENSE.txt +0 -0
  1334. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/MANIFEST.in +0 -0
  1335. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/README.rst +0 -0
  1336. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/__init__.py +0 -0
  1337. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/comment_eater.py +0 -0
  1338. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/compiler_unparse.py +0 -0
  1339. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape.py +0 -0
  1340. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/docscrape_sphinx.py +0 -0
  1341. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/linkcode.py +0 -0
  1342. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/numpydoc.py +0 -0
  1343. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/phantom_import.py +0 -0
  1344. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/plot_directive.py +0 -0
  1345. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_docscrape.py +0 -0
  1346. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_linkcode.py +0 -0
  1347. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_phantom_import.py +0 -0
  1348. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_plot_directive.py +0 -0
  1349. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/tests/test_traitsdoc.py +0 -0
  1350. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/numpydoc/traitsdoc.py +0 -0
  1351. {numpy-1.9.2 → numpy-1.10.0.post2}/doc/sphinxext/setup.py +0 -0
  1352. {numpy-1.9.2/numpy/core/code_generators → numpy-1.10.0.post2/numpy/_build_utils}/__init__.py +0 -0
  1353. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/compat/__init__.py +0 -0
  1354. {numpy-1.9.2/numpy/distutils/tests/f2py_ext → numpy-1.10.0.post2/numpy/core/code_generators}/__init__.py +0 -0
  1355. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/genapi.py +0 -0
  1356. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/code_generators/generate_numpy_api.py +0 -0
  1357. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/cversions.py +0 -0
  1358. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_neighborhood_iterator_imp.h +0 -0
  1359. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/_numpyconfig.h.in +0 -0
  1360. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayobject.h +0 -0
  1361. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/arrayscalars.h +0 -0
  1362. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/halffloat.h +0 -0
  1363. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/noprefix.h +0 -0
  1364. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_1_7_deprecated_api.h +0 -0
  1365. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_interrupt.h +0 -0
  1366. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_no_deprecated_api.h +0 -0
  1367. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/npy_os.h +0 -0
  1368. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/old_defines.h +0 -0
  1369. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/oldnumeric.h +0 -0
  1370. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/ufuncobject.h +0 -0
  1371. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/include/numpy/utils.h +0 -0
  1372. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/info.py +0 -0
  1373. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/mlib.ini.in +0 -0
  1374. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/npymath.ini.in +0 -0
  1375. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/dummymodule.c +0 -0
  1376. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/_datetime.h +0 -0
  1377. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/alloc.h +0 -0
  1378. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.c +0 -0
  1379. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign.h +0 -0
  1380. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_array.c +0 -0
  1381. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/array_assign_scalar.c +0 -0
  1382. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/arrayobject.h +0 -0
  1383. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/buffer.h +0 -0
  1384. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/calculation.h +0 -0
  1385. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/conversion_utils.h +0 -0
  1386. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert.h +0 -0
  1387. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/convert_datatype.h +0 -0
  1388. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ctors.h +0 -0
  1389. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busday.h +0 -0
  1390. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_busdaycal.h +0 -0
  1391. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/datetime_strings.h +0 -0
  1392. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/descriptor.h +0 -0
  1393. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/flagsobject.c +0 -0
  1394. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/getset.h +0 -0
  1395. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/hashdescr.h +0 -0
  1396. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/item_selection.h +0 -0
  1397. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/iterators.h +0 -0
  1398. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/methods.h +0 -0
  1399. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_impl.h +0 -0
  1400. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_pywrap.h +0 -0
  1401. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/nditer_templ.c.src +0 -0
  1402. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpymemoryview.h +0 -0
  1403. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/numpyos.h +0 -0
  1404. {numpy-1.9.2/numpy/core/blasdot → numpy-1.10.0.post2/numpy/core/src/multiarray}/python_xerbla.c +0 -0
  1405. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.c +0 -0
  1406. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/refcount.h +0 -0
  1407. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.c +0 -0
  1408. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/sequence.h +0 -0
  1409. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/shape.h +0 -0
  1410. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/ucsnarrow.h +0 -0
  1411. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.c +0 -0
  1412. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/multiarray/usertypes.h +0 -0
  1413. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/_signbit.c +0 -0
  1414. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/halffloat.c +0 -0
  1415. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npymath/npy_math_common.h +0 -0
  1416. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/npysort/binsearch.c.src +0 -0
  1417. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/lowlevel_strided_loops.h +0 -0
  1418. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_binsearch.h.src +0 -0
  1419. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_fpmath.h +0 -0
  1420. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/private/npy_pycompat.h +0 -0
  1421. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.c +0 -0
  1422. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/reduction.h +0 -0
  1423. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/struct_ufunc_test.c.src +0 -0
  1424. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_object.h +0 -0
  1425. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/src/umath/ufunc_type_resolution.h +0 -0
  1426. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/astype_copy.pkl +0 -0
  1427. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/data/recarray_from_file.fits +0 -0
  1428. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/core/tests/test_scalarprint.py +0 -0
  1429. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ctypeslib.py +0 -0
  1430. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/__version__.py +0 -0
  1431. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/__init__.py +0 -0
  1432. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/bdist_rpm.py +0 -0
  1433. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_py.py +0 -0
  1434. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_scripts.py +0 -0
  1435. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/build_src.py +0 -0
  1436. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/config_compiler.py +0 -0
  1437. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/develop.py +0 -0
  1438. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/egg_info.py +0 -0
  1439. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install.py +0 -0
  1440. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_clib.py +0 -0
  1441. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_data.py +0 -0
  1442. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/install_headers.py +0 -0
  1443. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/command/sdist.py +0 -0
  1444. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/compat.py +0 -0
  1445. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/conv_template.py +0 -0
  1446. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/core.py +0 -0
  1447. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/cpuinfo.py +0 -0
  1448. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/environment.py +0 -0
  1449. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/extension.py +0 -0
  1450. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/__init__.py +0 -0
  1451. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/absoft.py +0 -0
  1452. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/g95.py +0 -0
  1453. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/hpux.py +0 -0
  1454. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/ibm.py +0 -0
  1455. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/lahey.py +0 -0
  1456. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/mips.py +0 -0
  1457. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/nag.py +0 -0
  1458. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/none.py +0 -0
  1459. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/pathf95.py +0 -0
  1460. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/fcompiler/vast.py +0 -0
  1461. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/from_template.py +0 -0
  1462. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/info.py +0 -0
  1463. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/line_endings.py +0 -0
  1464. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/log.py +0 -0
  1465. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/mingw/gfortran_vs2003_hack.c +0 -0
  1466. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/numpy_distribution.py +0 -0
  1467. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/pathccompiler.py +0 -0
  1468. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/setup.py +0 -0
  1469. {numpy-1.9.2/numpy/distutils/tests/f2py_f90_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_ext}/__init__.py +0 -0
  1470. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/setup.py +0 -0
  1471. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib1.f +0 -0
  1472. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_ext/src/fib2.pyf +0 -0
  1473. {numpy-1.9.2/numpy/distutils/tests/gen_ext → numpy-1.10.0.post2/numpy/distutils/tests/f2py_f90_ext}/__init__.py +0 -0
  1474. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/include/body.f90 +0 -0
  1475. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/setup.py +0 -0
  1476. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/f2py_f90_ext/src/foo_free.f90 +0 -0
  1477. {numpy-1.9.2/numpy/distutils/tests/pyrex_ext → numpy-1.10.0.post2/numpy/distutils/tests/gen_ext}/__init__.py +0 -0
  1478. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/gen_ext/setup.py +0 -0
  1479. {numpy-1.9.2/numpy/distutils/tests/swig_ext → numpy-1.10.0.post2/numpy/distutils/tests/pyrex_ext}/__init__.py +0 -0
  1480. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/primes.pyx +0 -0
  1481. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/pyrex_ext/setup.py +0 -0
  1482. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/setup.py +0 -0
  1483. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/setup.py +0 -0
  1484. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.c +0 -0
  1485. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/example.i +0 -0
  1486. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.cc +0 -0
  1487. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.h +0 -0
  1488. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/swig_ext/src/zoo.i +0 -0
  1489. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/distutils/tests/test_exec_command.py +0 -0
  1490. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/__init__.py +0 -0
  1491. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/basics.py +0 -0
  1492. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/broadcasting.py +0 -0
  1493. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/constants.py +0 -0
  1494. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/howtofind.py +0 -0
  1495. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/internals.py +0 -0
  1496. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/io.py +0 -0
  1497. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/jargon.py +0 -0
  1498. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/methods_vs_functions.py +0 -0
  1499. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/misc.py +0 -0
  1500. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/performance.py +0 -0
  1501. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/subclassing.py +0 -0
  1502. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/doc/ufuncs.py +0 -0
  1503. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/dual.py +0 -0
  1504. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/__version__.py +0 -0
  1505. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/info.py +0 -0
  1506. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +0 -0
  1507. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_free.f90 +0 -0
  1508. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +0 -0
  1509. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/foo_use.f90 +0 -0
  1510. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/assumed_shape/precision.f90 +0 -0
  1511. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/kind/foo.f90 +0 -0
  1512. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo.f +0 -0
  1513. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_fixed.f90 +0 -0
  1514. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/mixed/foo_free.f90 +0 -0
  1515. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/regression/inout.f90 +0 -0
  1516. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/f2py/tests/src/size/foo.f90 +0 -0
  1517. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/__init__.py +0 -0
  1518. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/fft/helper.py +0 -0
  1519. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/__init__.py +0 -0
  1520. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_datasource.py +0 -0
  1521. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/_version.py +0 -0
  1522. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/scimath.py +0 -0
  1523. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/python3.npy +0 -0
  1524. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/data/win64python2.npy +0 -0
  1525. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test__datasource.py +0 -0
  1526. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_arrayterator.py +0 -0
  1527. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_regression.py +0 -0
  1528. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_ufunclike.py +0 -0
  1529. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/tests/test_utils.py +0 -0
  1530. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/ufunclike.py +0 -0
  1531. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/lib/user_array.py +0 -0
  1532. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/__init__.py +0 -0
  1533. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/info.py +0 -0
  1534. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/blas_lite.c +0 -0
  1535. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlamch.c +0 -0
  1536. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/dlapack_lite.c +0 -0
  1537. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c.h +0 -0
  1538. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/f2c_lite.c +0 -0
  1539. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/lapack_lite/zlapack_lite.c +0 -0
  1540. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/setup.py +0 -0
  1541. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/linalg/tests/test_deprecations.py +0 -0
  1542. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/ma/version.py +0 -0
  1543. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/__init__.py +0 -0
  1544. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/matrixlib/setup.py +0 -0
  1545. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/__init__.py +0 -0
  1546. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/polynomial.py +0 -0
  1547. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/setup.py +0 -0
  1548. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_chebyshev.py +0 -0
  1549. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_classes.py +0 -0
  1550. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite.py +0 -0
  1551. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_hermite_e.py +0 -0
  1552. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_laguerre.py +0 -0
  1553. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_legendre.py +0 -0
  1554. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polynomial.py +0 -0
  1555. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_polyutils.py +0 -0
  1556. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/polynomial/tests/test_printing.py +0 -0
  1557. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/__init__.py +0 -0
  1558. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/info.py +0 -0
  1559. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/Python.pxi +0 -0
  1560. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/distributions.h +0 -0
  1561. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/generate_mtrand_c.py +0 -0
  1562. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.c +0 -0
  1563. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/initarray.h +0 -0
  1564. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/mtrand_py_helper.h +0 -0
  1565. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/numpy.pxd +0 -0
  1566. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.c +0 -0
  1567. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/random/mtrand/randomkit.h +0 -0
  1568. {numpy-1.9.2 → numpy-1.10.0.post2}/numpy/testing/tests/test_doctesting.py +0 -0
  1569. {numpy-1.9.2 → numpy-1.10.0.post2}/setupegg.py +0 -0
  1570. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/Makefile +0 -0
  1571. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/pyfragments.swg +0 -0
  1572. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.cxx +0 -0
  1573. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array1.h +0 -0
  1574. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.cxx +0 -0
  1575. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Array2.h +0 -0
  1576. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.cxx +0 -0
  1577. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.h +0 -0
  1578. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Farray.i +0 -0
  1579. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.cxx +0 -0
  1580. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.h +0 -0
  1581. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Fortran.i +0 -0
  1582. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.cxx +0 -0
  1583. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.h +0 -0
  1584. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Matrix.i +0 -0
  1585. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.cxx +0 -0
  1586. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.h +0 -0
  1587. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/SuperTensor.i +0 -0
  1588. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.cxx +0 -0
  1589. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.h +0 -0
  1590. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Tensor.i +0 -0
  1591. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.cxx +0 -0
  1592. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.h +0 -0
  1593. {numpy-1.9.2 → numpy-1.10.0.post2}/tools/swig/test/Vector.i +0 -0
@@ -1,3658 +0,0 @@
1
- /* Array Descr Object */
2
-
3
- #define PY_SSIZE_T_CLEAN
4
- #include <Python.h>
5
- #include "structmember.h"
6
-
7
- #define NPY_NO_DEPRECATED_API NPY_API_VERSION
8
- #define _MULTIARRAYMODULE
9
- #include "numpy/arrayobject.h"
10
- #include "numpy/arrayscalars.h"
11
-
12
- #include "npy_config.h"
13
-
14
- #include "npy_pycompat.h"
15
-
16
- #include "_datetime.h"
17
- #include "common.h"
18
- #include "descriptor.h"
19
-
20
- /*
21
- * offset: A starting offset.
22
- * alignment: A power-of-two alignment.
23
- *
24
- * This macro returns the smallest value >= 'offset'
25
- * that is divisible by 'alignment'. Because 'alignment'
26
- * is a power of two and integers are twos-complement,
27
- * it is possible to use some simple bit-fiddling to do this.
28
- */
29
- #define NPY_NEXT_ALIGNED_OFFSET(offset, alignment) \
30
- (((offset) + (alignment) - 1) & (-(alignment)))
31
-
32
- static PyObject *typeDict = NULL; /* Must be explicitly loaded */
33
-
34
- static PyArray_Descr *
35
- _use_inherit(PyArray_Descr *type, PyObject *newobj, int *errflag);
36
-
37
- /*
38
- * Creates a dtype object from ctypes inputs.
39
- *
40
- * Returns a new reference to a dtype object, or NULL
41
- * if this is not possible. When it returns NULL, it does
42
- * not set a Python exception.
43
- */
44
- static PyArray_Descr *
45
- _arraydescr_fromctypes(PyObject *obj)
46
- {
47
- PyObject *dtypedescr;
48
- PyArray_Descr *newdescr;
49
- int ret;
50
-
51
- /* Understand basic ctypes */
52
- dtypedescr = PyObject_GetAttrString(obj, "_type_");
53
- PyErr_Clear();
54
- if (dtypedescr) {
55
- ret = PyArray_DescrConverter(dtypedescr, &newdescr);
56
- Py_DECREF(dtypedescr);
57
- if (ret == NPY_SUCCEED) {
58
- PyObject *length;
59
- /* Check for ctypes arrays */
60
- length = PyObject_GetAttrString(obj, "_length_");
61
- PyErr_Clear();
62
- if (length) {
63
- /* derived type */
64
- PyObject *newtup;
65
- PyArray_Descr *derived;
66
- newtup = Py_BuildValue("NN", newdescr, length);
67
- ret = PyArray_DescrConverter(newtup, &derived);
68
- Py_DECREF(newtup);
69
- if (ret == NPY_SUCCEED) {
70
- return derived;
71
- }
72
- PyErr_Clear();
73
- return NULL;
74
- }
75
- return newdescr;
76
- }
77
- PyErr_Clear();
78
- return NULL;
79
- }
80
- /* Understand ctypes structures --
81
- bit-fields are not supported
82
- automatically aligns */
83
- dtypedescr = PyObject_GetAttrString(obj, "_fields_");
84
- PyErr_Clear();
85
- if (dtypedescr) {
86
- ret = PyArray_DescrAlignConverter(dtypedescr, &newdescr);
87
- Py_DECREF(dtypedescr);
88
- if (ret == NPY_SUCCEED) {
89
- return newdescr;
90
- }
91
- PyErr_Clear();
92
- }
93
-
94
- return NULL;
95
- }
96
-
97
- /*
98
- * This function creates a dtype object when:
99
- * - The object has a "dtype" attribute, and it can be converted
100
- * to a dtype object.
101
- * - The object is a ctypes type object, including array
102
- * and structure types.
103
- *
104
- * Returns a new reference to a dtype object, or NULL
105
- * if this is not possible. When it returns NULL, it does
106
- * not set a Python exception.
107
- */
108
- NPY_NO_EXPORT PyArray_Descr *
109
- _arraydescr_fromobj(PyObject *obj)
110
- {
111
- PyObject *dtypedescr;
112
- PyArray_Descr *newdescr = NULL;
113
- int ret;
114
-
115
- /* For arbitrary objects that have a "dtype" attribute */
116
- dtypedescr = PyObject_GetAttrString(obj, "dtype");
117
- PyErr_Clear();
118
- if (dtypedescr != NULL) {
119
- ret = PyArray_DescrConverter(dtypedescr, &newdescr);
120
- Py_DECREF(dtypedescr);
121
- if (ret == NPY_SUCCEED) {
122
- return newdescr;
123
- }
124
- PyErr_Clear();
125
- }
126
- return _arraydescr_fromctypes(obj);
127
- }
128
-
129
- /*
130
- * Sets the global typeDict object, which is a dictionary mapping
131
- * dtype names to numpy scalar types.
132
- */
133
- NPY_NO_EXPORT PyObject *
134
- array_set_typeDict(PyObject *NPY_UNUSED(ignored), PyObject *args)
135
- {
136
- PyObject *dict;
137
-
138
- if (!PyArg_ParseTuple(args, "O", &dict)) {
139
- return NULL;
140
- }
141
- /* Decrement old reference (if any)*/
142
- Py_XDECREF(typeDict);
143
- typeDict = dict;
144
- /* Create an internal reference to it */
145
- Py_INCREF(dict);
146
- Py_INCREF(Py_None);
147
- return Py_None;
148
- }
149
-
150
- #define _chk_byteorder(arg) (arg == '>' || arg == '<' || \
151
- arg == '|' || arg == '=')
152
-
153
- static int
154
- _check_for_commastring(char *type, Py_ssize_t len)
155
- {
156
- Py_ssize_t i;
157
- int sqbracket;
158
-
159
- /* Check for ints at start of string */
160
- if ((type[0] >= '0'
161
- && type[0] <= '9')
162
- || ((len > 1)
163
- && _chk_byteorder(type[0])
164
- && (type[1] >= '0'
165
- && type[1] <= '9'))) {
166
- return 1;
167
- }
168
- /* Check for empty tuple */
169
- if (((len > 1)
170
- && (type[0] == '('
171
- && type[1] == ')'))
172
- || ((len > 3)
173
- && _chk_byteorder(type[0])
174
- && (type[1] == '('
175
- && type[2] == ')'))) {
176
- return 1;
177
- }
178
- /*
179
- * Check for presence of commas outside square [] brackets. This
180
- * allows commas inside of [], for parameterized dtypes to use.
181
- */
182
- sqbracket = 0;
183
- for (i = 1; i < len; i++) {
184
- switch (type[i]) {
185
- case ',':
186
- if (sqbracket == 0) {
187
- return 1;
188
- }
189
- break;
190
- case '[':
191
- ++sqbracket;
192
- break;
193
- case ']':
194
- --sqbracket;
195
- break;
196
- }
197
- }
198
- return 0;
199
- }
200
-
201
- #undef _chk_byteorder
202
-
203
- static int
204
- is_datetime_typestr(char *type, Py_ssize_t len)
205
- {
206
- if (len < 2) {
207
- return 0;
208
- }
209
- if (type[1] == '8' && (type[0] == 'M' || type[0] == 'm')) {
210
- return 1;
211
- }
212
- if (len < 10) {
213
- return 0;
214
- }
215
- if (strncmp(type, "datetime64", 10) == 0) {
216
- return 1;
217
- }
218
- if (len < 11) {
219
- return 0;
220
- }
221
- if (strncmp(type, "timedelta64", 11) == 0) {
222
- return 1;
223
- }
224
- return 0;
225
- }
226
-
227
- static PyArray_Descr *
228
- _convert_from_tuple(PyObject *obj)
229
- {
230
- PyArray_Descr *type, *res;
231
- PyObject *val;
232
- int errflag;
233
-
234
- if (PyTuple_GET_SIZE(obj) != 2) {
235
- return NULL;
236
- }
237
- if (!PyArray_DescrConverter(PyTuple_GET_ITEM(obj,0), &type)) {
238
- return NULL;
239
- }
240
- val = PyTuple_GET_ITEM(obj,1);
241
- /* try to interpret next item as a type */
242
- res = _use_inherit(type, val, &errflag);
243
- if (res || errflag) {
244
- Py_DECREF(type);
245
- if (res) {
246
- return res;
247
- }
248
- else {
249
- return NULL;
250
- }
251
- }
252
- PyErr_Clear();
253
- /*
254
- * We get here if res was NULL but errflag wasn't set
255
- * --- i.e. the conversion to a data-descr failed in _use_inherit
256
- */
257
- if (type->elsize == 0) {
258
- /* interpret next item as a typesize */
259
- int itemsize = PyArray_PyIntAsInt(PyTuple_GET_ITEM(obj,1));
260
-
261
- if (error_converting(itemsize)) {
262
- PyErr_SetString(PyExc_ValueError,
263
- "invalid itemsize in generic type tuple");
264
- goto fail;
265
- }
266
- PyArray_DESCR_REPLACE(type);
267
- if (type->type_num == NPY_UNICODE) {
268
- type->elsize = itemsize << 2;
269
- }
270
- else {
271
- type->elsize = itemsize;
272
- }
273
- }
274
- else if (PyDict_Check(val)) {
275
- /* Assume it's a metadata dictionary */
276
- if (PyDict_Merge(type->metadata, val, 0) == -1) {
277
- Py_DECREF(type);
278
- return NULL;
279
- }
280
- }
281
- else {
282
- /*
283
- * interpret next item as shape (if it's a tuple)
284
- * and reset the type to NPY_VOID with
285
- * a new fields attribute.
286
- */
287
- PyArray_Dims shape = {NULL, -1};
288
- PyArray_Descr *newdescr;
289
- npy_intp items;
290
- int i;
291
-
292
- if (!(PyArray_IntpConverter(val, &shape)) || (shape.len > NPY_MAXDIMS)) {
293
- PyDimMem_FREE(shape.ptr);
294
- PyErr_SetString(PyExc_ValueError,
295
- "invalid shape in fixed-type tuple.");
296
- goto fail;
297
- }
298
- /*
299
- * If (type, 1) was given, it is equivalent to type...
300
- * or (type, ()) was given it is equivalent to type...
301
- */
302
- if ((shape.len == 1
303
- && shape.ptr[0] == 1
304
- && PyNumber_Check(val))
305
- || (shape.len == 0
306
- && PyTuple_Check(val))) {
307
- PyDimMem_FREE(shape.ptr);
308
- return type;
309
- }
310
- newdescr = PyArray_DescrNewFromType(NPY_VOID);
311
- if (newdescr == NULL) {
312
- PyDimMem_FREE(shape.ptr);
313
- goto fail;
314
- }
315
-
316
- /* validate and set shape */
317
- for (i=0; i < shape.len; i++) {
318
- if (shape.ptr[i] < 0) {
319
- PyErr_SetString(PyExc_ValueError,
320
- "invalid shape in fixed-type tuple: "
321
- "dimension smaller then zero.");
322
- PyDimMem_FREE(shape.ptr);
323
- goto fail;
324
- }
325
- if (shape.ptr[i] > NPY_MAX_INT) {
326
- PyErr_SetString(PyExc_ValueError,
327
- "invalid shape in fixed-type tuple: "
328
- "dimension does not fit into a C int.");
329
- PyDimMem_FREE(shape.ptr);
330
- goto fail;
331
- }
332
- }
333
- items = PyArray_OverflowMultiplyList(shape.ptr, shape.len);
334
- if ((items < 0) || (items > (NPY_MAX_INT / type->elsize))) {
335
- PyErr_SetString(PyExc_ValueError,
336
- "invalid shape in fixed-type tuple: dtype size in "
337
- "bytes must fit into a C int.");
338
- PyDimMem_FREE(shape.ptr);
339
- goto fail;
340
- }
341
- newdescr->elsize = type->elsize * items;
342
- if (newdescr->elsize == -1) {
343
- PyDimMem_FREE(shape.ptr);
344
- goto fail;
345
- }
346
-
347
- newdescr->subarray = PyArray_malloc(sizeof(PyArray_ArrayDescr));
348
- if (newdescr->subarray == NULL) {
349
- Py_DECREF(newdescr);
350
- PyErr_NoMemory();
351
- goto fail;
352
- }
353
- newdescr->flags = type->flags;
354
- newdescr->alignment = type->alignment;
355
- newdescr->subarray->base = type;
356
- type = NULL;
357
- Py_XDECREF(newdescr->fields);
358
- Py_XDECREF(newdescr->names);
359
- newdescr->fields = NULL;
360
- newdescr->names = NULL;
361
-
362
- /*
363
- * Create a new subarray->shape tuple (it can be an arbitrary
364
- * sequence of integer like objects, neither of which is safe.
365
- */
366
- newdescr->subarray->shape = PyTuple_New(shape.len);
367
- if (newdescr->subarray->shape == NULL) {
368
- PyDimMem_FREE(shape.ptr);
369
- goto fail;
370
- }
371
- for (i=0; i < shape.len; i++) {
372
- PyTuple_SET_ITEM(newdescr->subarray->shape, i,
373
- PyInt_FromLong((long)shape.ptr[i]));
374
-
375
- if (PyTuple_GET_ITEM(newdescr->subarray->shape, i) == NULL) {
376
- Py_DECREF(newdescr->subarray->shape);
377
- newdescr->subarray->shape = NULL;
378
- PyDimMem_FREE(shape.ptr);
379
- goto fail;
380
- }
381
- }
382
-
383
- PyDimMem_FREE(shape.ptr);
384
- type = newdescr;
385
- }
386
- return type;
387
-
388
- fail:
389
- Py_XDECREF(type);
390
- return NULL;
391
- }
392
-
393
- /*
394
- * obj is a list. Each item is a tuple with
395
- *
396
- * (field-name, data-type (either a list or a string), and an optional
397
- * shape parameter).
398
- *
399
- * field-name can be a string or a 2-tuple
400
- * data-type can now be a list, string, or 2-tuple
401
- * (string, metadata dictionary)
402
- */
403
- static PyArray_Descr *
404
- _convert_from_array_descr(PyObject *obj, int align)
405
- {
406
- int n, i, totalsize;
407
- int ret;
408
- PyObject *fields, *item, *newobj;
409
- PyObject *name, *tup, *title;
410
- PyObject *nameslist;
411
- PyArray_Descr *new;
412
- PyArray_Descr *conv;
413
- /* Types with fields need the Python C API for field access */
414
- char dtypeflags = NPY_NEEDS_PYAPI;
415
- int maxalign = 0;
416
-
417
- n = PyList_GET_SIZE(obj);
418
- nameslist = PyTuple_New(n);
419
- if (!nameslist) {
420
- return NULL;
421
- }
422
- totalsize = 0;
423
- fields = PyDict_New();
424
- for (i = 0; i < n; i++) {
425
- item = PyList_GET_ITEM(obj, i);
426
- if (!PyTuple_Check(item) || (PyTuple_GET_SIZE(item) < 2)) {
427
- goto fail;
428
- }
429
- name = PyTuple_GET_ITEM(item, 0);
430
- if (PyUString_Check(name)) {
431
- title = NULL;
432
- }
433
- else if (PyTuple_Check(name)) {
434
- if (PyTuple_GET_SIZE(name) != 2) {
435
- goto fail;
436
- }
437
- title = PyTuple_GET_ITEM(name, 0);
438
- name = PyTuple_GET_ITEM(name, 1);
439
- if (!PyUString_Check(name)) {
440
- goto fail;
441
- }
442
- }
443
- else {
444
- goto fail;
445
- }
446
-
447
- /* Insert name into nameslist */
448
- Py_INCREF(name);
449
-
450
- if (PyUString_GET_SIZE(name) == 0) {
451
- Py_DECREF(name);
452
- if (title == NULL) {
453
- name = PyUString_FromFormat("f%d", i);
454
- }
455
- #if defined(NPY_PY3K)
456
- /* On Py3, allow only non-empty Unicode strings as field names */
457
- else if (PyUString_Check(title) && PyUString_GET_SIZE(title) > 0) {
458
- name = title;
459
- Py_INCREF(name);
460
- }
461
- else {
462
- goto fail;
463
- }
464
- #else
465
- else {
466
- name = title;
467
- Py_INCREF(name);
468
- }
469
- #endif
470
- }
471
- PyTuple_SET_ITEM(nameslist, i, name);
472
-
473
- /* Process rest */
474
-
475
- if (PyTuple_GET_SIZE(item) == 2) {
476
- if (align) {
477
- ret = PyArray_DescrAlignConverter(PyTuple_GET_ITEM(item, 1),
478
- &conv);
479
- }
480
- else {
481
- ret = PyArray_DescrConverter(PyTuple_GET_ITEM(item, 1), &conv);
482
- }
483
- if (ret == NPY_FAIL) {
484
- PyObject_Print(PyTuple_GET_ITEM(item, 1), stderr, 0);
485
- }
486
- }
487
- else if (PyTuple_GET_SIZE(item) == 3) {
488
- newobj = PyTuple_GetSlice(item, 1, 3);
489
- if (align) {
490
- ret = PyArray_DescrAlignConverter(newobj, &conv);
491
- }
492
- else {
493
- ret = PyArray_DescrConverter(newobj, &conv);
494
- }
495
- Py_DECREF(newobj);
496
- }
497
- else {
498
- goto fail;
499
- }
500
- if (ret == NPY_FAIL) {
501
- goto fail;
502
- }
503
- if ((PyDict_GetItem(fields, name) != NULL)
504
- || (title
505
- #if defined(NPY_PY3K)
506
- && PyUString_Check(title)
507
- #else
508
- && (PyUString_Check(title) || PyUnicode_Check(title))
509
- #endif
510
- && (PyDict_GetItem(fields, title) != NULL))) {
511
- PyErr_SetString(PyExc_ValueError,
512
- "two fields with the same name");
513
- goto fail;
514
- }
515
- dtypeflags |= (conv->flags & NPY_FROM_FIELDS);
516
- tup = PyTuple_New((title == NULL ? 2 : 3));
517
- PyTuple_SET_ITEM(tup, 0, (PyObject *)conv);
518
- if (align) {
519
- int _align;
520
-
521
- _align = conv->alignment;
522
- if (_align > 1) {
523
- totalsize = NPY_NEXT_ALIGNED_OFFSET(totalsize, _align);
524
- }
525
- maxalign = PyArray_MAX(maxalign, _align);
526
- }
527
- PyTuple_SET_ITEM(tup, 1, PyInt_FromLong((long) totalsize));
528
-
529
- PyDict_SetItem(fields, name, tup);
530
-
531
- /*
532
- * Title can be "meta-data". Only insert it
533
- * into the fields dictionary if it is a string
534
- * and if it is not the same as the name.
535
- */
536
- if (title != NULL) {
537
- Py_INCREF(title);
538
- PyTuple_SET_ITEM(tup, 2, title);
539
- #if defined(NPY_PY3K)
540
- if (PyUString_Check(title)) {
541
- #else
542
- if (PyUString_Check(title) || PyUnicode_Check(title)) {
543
- #endif
544
- if (PyDict_GetItem(fields, title) != NULL) {
545
- PyErr_SetString(PyExc_ValueError,
546
- "title already used as a name or title.");
547
- Py_DECREF(tup);
548
- goto fail;
549
- }
550
- PyDict_SetItem(fields, title, tup);
551
- }
552
- }
553
- totalsize += conv->elsize;
554
- Py_DECREF(tup);
555
- }
556
-
557
- if (maxalign > 1) {
558
- totalsize = NPY_NEXT_ALIGNED_OFFSET(totalsize, maxalign);
559
- }
560
-
561
- new = PyArray_DescrNewFromType(NPY_VOID);
562
- if (new == NULL) {
563
- Py_XDECREF(fields);
564
- Py_XDECREF(nameslist);
565
- return NULL;
566
- }
567
- new->fields = fields;
568
- new->names = nameslist;
569
- new->elsize = totalsize;
570
- new->flags = dtypeflags;
571
-
572
- /* Structured arrays get a sticky aligned bit */
573
- if (align) {
574
- new->flags |= NPY_ALIGNED_STRUCT;
575
- new->alignment = maxalign;
576
- }
577
- return new;
578
-
579
- fail:
580
- Py_DECREF(fields);
581
- Py_DECREF(nameslist);
582
- return NULL;
583
-
584
- }
585
-
586
- /*
587
- * a list specifying a data-type can just be
588
- * a list of formats. The names for the fields
589
- * will default to f0, f1, f2, and so forth.
590
- */
591
- static PyArray_Descr *
592
- _convert_from_list(PyObject *obj, int align)
593
- {
594
- int n, i;
595
- int totalsize;
596
- PyObject *fields;
597
- PyArray_Descr *conv = NULL;
598
- PyArray_Descr *new;
599
- PyObject *key, *tup;
600
- PyObject *nameslist = NULL;
601
- int ret;
602
- int maxalign = 0;
603
- /* Types with fields need the Python C API for field access */
604
- char dtypeflags = NPY_NEEDS_PYAPI;
605
-
606
- n = PyList_GET_SIZE(obj);
607
- /*
608
- * Ignore any empty string at end which _internal._commastring
609
- * can produce
610
- */
611
- key = PyList_GET_ITEM(obj, n-1);
612
- if (PyBytes_Check(key) && PyBytes_GET_SIZE(key) == 0) {
613
- n = n - 1;
614
- }
615
- /* End ignore code.*/
616
- totalsize = 0;
617
- if (n == 0) {
618
- return NULL;
619
- }
620
- nameslist = PyTuple_New(n);
621
- if (!nameslist) {
622
- return NULL;
623
- }
624
- fields = PyDict_New();
625
- for (i = 0; i < n; i++) {
626
- tup = PyTuple_New(2);
627
- key = PyUString_FromFormat("f%d", i);
628
- if (align) {
629
- ret = PyArray_DescrAlignConverter(PyList_GET_ITEM(obj, i), &conv);
630
- }
631
- else {
632
- ret = PyArray_DescrConverter(PyList_GET_ITEM(obj, i), &conv);
633
- }
634
- if (ret == NPY_FAIL) {
635
- Py_DECREF(tup);
636
- Py_DECREF(key);
637
- goto fail;
638
- }
639
- dtypeflags |= (conv->flags & NPY_FROM_FIELDS);
640
- PyTuple_SET_ITEM(tup, 0, (PyObject *)conv);
641
- if (align) {
642
- int _align;
643
-
644
- _align = conv->alignment;
645
- if (_align > 1) {
646
- totalsize = NPY_NEXT_ALIGNED_OFFSET(totalsize, _align);
647
- }
648
- maxalign = PyArray_MAX(maxalign, _align);
649
- }
650
- PyTuple_SET_ITEM(tup, 1, PyInt_FromLong((long) totalsize));
651
- PyDict_SetItem(fields, key, tup);
652
- Py_DECREF(tup);
653
- PyTuple_SET_ITEM(nameslist, i, key);
654
- totalsize += conv->elsize;
655
- }
656
- new = PyArray_DescrNewFromType(NPY_VOID);
657
- new->fields = fields;
658
- new->names = nameslist;
659
- new->flags = dtypeflags;
660
- if (maxalign > 1) {
661
- totalsize = NPY_NEXT_ALIGNED_OFFSET(totalsize, maxalign);
662
- }
663
- /* Structured arrays get a sticky aligned bit */
664
- if (align) {
665
- new->flags |= NPY_ALIGNED_STRUCT;
666
- new->alignment = maxalign;
667
- }
668
- new->elsize = totalsize;
669
- return new;
670
-
671
- fail:
672
- Py_DECREF(nameslist);
673
- Py_DECREF(fields);
674
- return NULL;
675
- }
676
-
677
-
678
- /*
679
- * comma-separated string
680
- * this is the format developed by the numarray records module and implemented
681
- * by the format parser in that module this is an alternative implementation
682
- * found in the _internal.py file patterned after that one -- the approach is
683
- * to try to convert to a list (with tuples if any repeat information is
684
- * present) and then call the _convert_from_list)
685
- *
686
- * TODO: Calling Python from C like this in critical-path code is not
687
- * a good idea. This should all be converted to C code.
688
- */
689
- static PyArray_Descr *
690
- _convert_from_commastring(PyObject *obj, int align)
691
- {
692
- PyObject *listobj;
693
- PyArray_Descr *res;
694
- PyObject *_numpy_internal;
695
-
696
- if (!PyBytes_Check(obj)) {
697
- return NULL;
698
- }
699
- _numpy_internal = PyImport_ImportModule("numpy.core._internal");
700
- if (_numpy_internal == NULL) {
701
- return NULL;
702
- }
703
- listobj = PyObject_CallMethod(_numpy_internal, "_commastring", "O", obj);
704
- Py_DECREF(_numpy_internal);
705
- if (listobj == NULL) {
706
- return NULL;
707
- }
708
- if (!PyList_Check(listobj) || PyList_GET_SIZE(listobj) < 1) {
709
- PyErr_SetString(PyExc_RuntimeError,
710
- "_commastring is not returning a list with len >= 1");
711
- Py_DECREF(listobj);
712
- return NULL;
713
- }
714
- if (PyList_GET_SIZE(listobj) == 1) {
715
- int retcode;
716
- retcode = PyArray_DescrConverter(PyList_GET_ITEM(listobj, 0),
717
- &res);
718
- if (retcode == NPY_FAIL) {
719
- res = NULL;
720
- }
721
- }
722
- else {
723
- res = _convert_from_list(listobj, align);
724
- }
725
- Py_DECREF(listobj);
726
- if (!res && !PyErr_Occurred()) {
727
- PyErr_SetString(PyExc_ValueError,
728
- "invalid data-type");
729
- return NULL;
730
- }
731
- return res;
732
- }
733
-
734
- static int
735
- _is_tuple_of_integers(PyObject *obj)
736
- {
737
- int i;
738
-
739
- if (!PyTuple_Check(obj)) {
740
- return 0;
741
- }
742
- for (i = 0; i < PyTuple_GET_SIZE(obj); i++) {
743
- if (!PyArray_IsIntegerScalar(PyTuple_GET_ITEM(obj, i))) {
744
- return 0;
745
- }
746
- }
747
- return 1;
748
- }
749
-
750
- /*
751
- * A tuple type would be either (generic typeobject, typesize)
752
- * or (fixed-length data-type, shape)
753
- *
754
- * or (inheriting data-type, new-data-type)
755
- * The new data-type must have the same itemsize as the inheriting data-type
756
- * unless the latter is 0
757
- *
758
- * Thus (int32, {'real':(int16,0),'imag',(int16,2)})
759
- *
760
- * is one way to specify a descriptor that will give
761
- * a['real'] and a['imag'] to an int32 array.
762
- *
763
- * leave type reference alone
764
- */
765
- static PyArray_Descr *
766
- _use_inherit(PyArray_Descr *type, PyObject *newobj, int *errflag)
767
- {
768
- PyArray_Descr *new;
769
- PyArray_Descr *conv;
770
-
771
- *errflag = 0;
772
- if (PyArray_IsScalar(newobj, Integer)
773
- || _is_tuple_of_integers(newobj)
774
- || !PyArray_DescrConverter(newobj, &conv)) {
775
- return NULL;
776
- }
777
- *errflag = 1;
778
- new = PyArray_DescrNew(type);
779
- if (new == NULL) {
780
- goto fail;
781
- }
782
- if (new->elsize && new->elsize != conv->elsize) {
783
- PyErr_SetString(PyExc_ValueError,
784
- "mismatch in size of old and new data-descriptor");
785
- goto fail;
786
- }
787
- new->elsize = conv->elsize;
788
- if (PyDataType_HASFIELDS(conv)) {
789
- new->fields = conv->fields;
790
- Py_XINCREF(new->fields);
791
- new->names = conv->names;
792
- Py_XINCREF(new->names);
793
- }
794
- new->flags = conv->flags;
795
- Py_DECREF(conv);
796
- *errflag = 0;
797
- return new;
798
-
799
- fail:
800
- Py_DECREF(conv);
801
- return NULL;
802
- }
803
-
804
- /*
805
- * Validates that any field of the structured array 'dtype' which has
806
- * the NPY_ITEM_HASOBJECT flag set does not overlap with another field.
807
- *
808
- * This algorithm is worst case O(n^2). It could be done with a sort
809
- * and sweep algorithm, but the structured dtype representation is
810
- * rather ugly right now, so writing something better can wait until
811
- * that representation is made sane.
812
- *
813
- * Returns 0 on success, -1 if an exception is raised.
814
- */
815
- static int
816
- validate_object_field_overlap(PyArray_Descr *dtype)
817
- {
818
- PyObject *names, *fields, *key, *tup, *title;
819
- Py_ssize_t i, j, names_size;
820
- PyArray_Descr *fld_dtype, *fld2_dtype;
821
- int fld_offset, fld2_offset;
822
-
823
- /* Get some properties from the dtype */
824
- names = dtype->names;
825
- names_size = PyTuple_GET_SIZE(names);
826
- fields = dtype->fields;
827
-
828
- for (i = 0; i < names_size; ++i) {
829
- key = PyTuple_GET_ITEM(names, i);
830
- if (key == NULL) {
831
- return -1;
832
- }
833
- tup = PyDict_GetItem(fields, key);
834
- if (tup == NULL) {
835
- return -1;
836
- }
837
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld_dtype, &fld_offset, &title)) {
838
- return -1;
839
- }
840
-
841
- /* If this field has objects, check for overlaps */
842
- if (PyDataType_REFCHK(fld_dtype)) {
843
- for (j = 0; j < names_size; ++j) {
844
- if (i != j) {
845
- key = PyTuple_GET_ITEM(names, j);
846
- if (key == NULL) {
847
- return -1;
848
- }
849
- tup = PyDict_GetItem(fields, key);
850
- if (tup == NULL) {
851
- return -1;
852
- }
853
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld2_dtype,
854
- &fld2_offset, &title)) {
855
- return -1;
856
- }
857
- /* Raise an exception if it overlaps */
858
- if (fld_offset < fld2_offset + fld2_dtype->elsize &&
859
- fld2_offset < fld_offset + fld_dtype->elsize) {
860
- PyErr_SetString(PyExc_TypeError,
861
- "Cannot create a NumPy dtype with overlapping "
862
- "object fields");
863
- return -1;
864
- }
865
- }
866
- }
867
- }
868
- }
869
-
870
- /* It passed all the overlap tests */
871
- return 0;
872
- }
873
-
874
- /*
875
- * a dictionary specifying a data-type
876
- * must have at least two and up to four
877
- * keys These must all be sequences of the same length.
878
- *
879
- * can also have an additional key called "metadata" which can be any dictionary
880
- *
881
- * "names" --- field names
882
- * "formats" --- the data-type descriptors for the field.
883
- *
884
- * Optional:
885
- *
886
- * "offsets" --- integers indicating the offset into the
887
- * record of the start of the field.
888
- * if not given, then "consecutive offsets"
889
- * will be assumed and placed in the dictionary.
890
- *
891
- * "titles" --- Allows the use of an additional key
892
- * for the fields dictionary.(if these are strings
893
- * or unicode objects) or
894
- * this can also be meta-data to
895
- * be passed around with the field description.
896
- *
897
- * Attribute-lookup-based field names merely has to query the fields
898
- * dictionary of the data-descriptor. Any result present can be used
899
- * to return the correct field.
900
- *
901
- * So, the notion of what is a name and what is a title is really quite
902
- * arbitrary.
903
- *
904
- * What does distinguish a title, however, is that if it is not None,
905
- * it will be placed at the end of the tuple inserted into the
906
- * fields dictionary.and can therefore be used to carry meta-data around.
907
- *
908
- * If the dictionary does not have "names" and "formats" entries,
909
- * then it will be checked for conformity and used directly.
910
- */
911
- static PyArray_Descr *
912
- _use_fields_dict(PyObject *obj, int align)
913
- {
914
- PyObject *_numpy_internal;
915
- PyArray_Descr *res;
916
-
917
- _numpy_internal = PyImport_ImportModule("numpy.core._internal");
918
- if (_numpy_internal == NULL) {
919
- return NULL;
920
- }
921
- res = (PyArray_Descr *)PyObject_CallMethod(_numpy_internal,
922
- "_usefields", "Oi", obj, align);
923
- Py_DECREF(_numpy_internal);
924
- return res;
925
- }
926
-
927
- /*
928
- * Creates a struct dtype object from a Python dictionary.
929
- */
930
- static PyArray_Descr *
931
- _convert_from_dict(PyObject *obj, int align)
932
- {
933
- PyArray_Descr *new;
934
- PyObject *fields = NULL;
935
- PyObject *names, *offsets, *descrs, *titles, *tmp;
936
- PyObject *metadata;
937
- int n, i;
938
- int totalsize, itemsize;
939
- int maxalign = 0;
940
- /* Types with fields need the Python C API for field access */
941
- char dtypeflags = NPY_NEEDS_PYAPI;
942
- int has_out_of_order_fields = 0;
943
-
944
- fields = PyDict_New();
945
- if (fields == NULL) {
946
- return (PyArray_Descr *)PyErr_NoMemory();
947
- }
948
- names = PyDict_GetItemString(obj, "names");
949
- descrs = PyDict_GetItemString(obj, "formats");
950
- if (!names || !descrs) {
951
- Py_DECREF(fields);
952
- return _use_fields_dict(obj, align);
953
- }
954
- n = PyObject_Length(names);
955
- offsets = PyDict_GetItemString(obj, "offsets");
956
- titles = PyDict_GetItemString(obj, "titles");
957
- if ((n > PyObject_Length(descrs))
958
- || (offsets && (n > PyObject_Length(offsets)))
959
- || (titles && (n > PyObject_Length(titles)))) {
960
- PyErr_SetString(PyExc_ValueError,
961
- "'names', 'formats', 'offsets', and 'titles' dicct "
962
- "entries must have the same length");
963
- goto fail;
964
- }
965
-
966
- /*
967
- * If a property 'aligned' is in the dict, it overrides the align flag
968
- * to be True if it not already true.
969
- */
970
- tmp = PyDict_GetItemString(obj, "aligned");
971
- if (tmp != NULL) {
972
- if (tmp == Py_True) {
973
- align = 1;
974
- }
975
- else if (tmp != Py_False) {
976
- PyErr_SetString(PyExc_ValueError,
977
- "NumPy dtype descriptor includes 'aligned' entry, "
978
- "but its value is neither True nor False");
979
- return NULL;
980
- }
981
- }
982
-
983
- totalsize = 0;
984
- for (i = 0; i < n; i++) {
985
- PyObject *tup, *descr, *ind, *title, *name, *off;
986
- int len, ret, _align = 1;
987
- PyArray_Descr *newdescr;
988
-
989
- /* Build item to insert (descr, offset, [title])*/
990
- len = 2;
991
- title = NULL;
992
- ind = PyInt_FromLong(i);
993
- if (titles) {
994
- title=PyObject_GetItem(titles, ind);
995
- if (title && title != Py_None) {
996
- len = 3;
997
- }
998
- else {
999
- Py_XDECREF(title);
1000
- }
1001
- PyErr_Clear();
1002
- }
1003
- tup = PyTuple_New(len);
1004
- descr = PyObject_GetItem(descrs, ind);
1005
- if (!descr) {
1006
- goto fail;
1007
- }
1008
- if (align) {
1009
- ret = PyArray_DescrAlignConverter(descr, &newdescr);
1010
- }
1011
- else {
1012
- ret = PyArray_DescrConverter(descr, &newdescr);
1013
- }
1014
- Py_DECREF(descr);
1015
- if (ret == NPY_FAIL) {
1016
- Py_DECREF(tup);
1017
- Py_DECREF(ind);
1018
- goto fail;
1019
- }
1020
- PyTuple_SET_ITEM(tup, 0, (PyObject *)newdescr);
1021
- if (align) {
1022
- _align = newdescr->alignment;
1023
- maxalign = PyArray_MAX(maxalign,_align);
1024
- }
1025
- if (offsets) {
1026
- long offset;
1027
- off = PyObject_GetItem(offsets, ind);
1028
- if (!off) {
1029
- goto fail;
1030
- }
1031
- offset = PyInt_AsLong(off);
1032
- PyTuple_SET_ITEM(tup, 1, off);
1033
- /* Flag whether the fields are specified out of order */
1034
- if (offset < totalsize) {
1035
- has_out_of_order_fields = 1;
1036
- }
1037
- /* If align=True, enforce field alignment */
1038
- if (align && offset % newdescr->alignment != 0) {
1039
- PyErr_Format(PyExc_ValueError,
1040
- "offset %d for NumPy dtype with fields is "
1041
- "not divisible by the field alignment %d "
1042
- "with align=True",
1043
- (int)offset, (int)newdescr->alignment);
1044
- ret = NPY_FAIL;
1045
- }
1046
- else if (offset + newdescr->elsize > totalsize) {
1047
- totalsize = offset + newdescr->elsize;
1048
- }
1049
- }
1050
- else {
1051
- if (align && _align > 1) {
1052
- totalsize = NPY_NEXT_ALIGNED_OFFSET(totalsize, _align);
1053
- }
1054
- PyTuple_SET_ITEM(tup, 1, PyInt_FromLong(totalsize));
1055
- totalsize += newdescr->elsize;
1056
- }
1057
- if (len == 3) {
1058
- PyTuple_SET_ITEM(tup, 2, title);
1059
- }
1060
- name = PyObject_GetItem(names, ind);
1061
- if (!name) {
1062
- goto fail;
1063
- }
1064
- Py_DECREF(ind);
1065
- #if defined(NPY_PY3K)
1066
- if (!PyUString_Check(name)) {
1067
- #else
1068
- if (!(PyUString_Check(name) || PyUnicode_Check(name))) {
1069
- #endif
1070
- PyErr_SetString(PyExc_ValueError,
1071
- "field names must be strings");
1072
- ret = NPY_FAIL;
1073
- }
1074
-
1075
- /* Insert into dictionary */
1076
- if (PyDict_GetItem(fields, name) != NULL) {
1077
- PyErr_SetString(PyExc_ValueError,
1078
- "name already used as a name or title");
1079
- ret = NPY_FAIL;
1080
- }
1081
- PyDict_SetItem(fields, name, tup);
1082
- Py_DECREF(name);
1083
- if (len == 3) {
1084
- #if defined(NPY_PY3K)
1085
- if (PyUString_Check(title)) {
1086
- #else
1087
- if (PyUString_Check(title) || PyUnicode_Check(title)) {
1088
- #endif
1089
- if (PyDict_GetItem(fields, title) != NULL) {
1090
- PyErr_SetString(PyExc_ValueError,
1091
- "title already used as a name or title.");
1092
- ret=NPY_FAIL;
1093
- }
1094
- PyDict_SetItem(fields, title, tup);
1095
- }
1096
- }
1097
- Py_DECREF(tup);
1098
- if ((ret == NPY_FAIL) || (newdescr->elsize == 0)) {
1099
- goto fail;
1100
- }
1101
- dtypeflags |= (newdescr->flags & NPY_FROM_FIELDS);
1102
- }
1103
-
1104
- new = PyArray_DescrNewFromType(NPY_VOID);
1105
- if (new == NULL) {
1106
- goto fail;
1107
- }
1108
- if (maxalign > 1) {
1109
- totalsize = NPY_NEXT_ALIGNED_OFFSET(totalsize, maxalign);
1110
- }
1111
- if (align) {
1112
- new->alignment = maxalign;
1113
- }
1114
- new->elsize = totalsize;
1115
- if (!PyTuple_Check(names)) {
1116
- names = PySequence_Tuple(names);
1117
- }
1118
- else {
1119
- Py_INCREF(names);
1120
- }
1121
- new->names = names;
1122
- new->fields = fields;
1123
- new->flags = dtypeflags;
1124
-
1125
- /*
1126
- * If the fields weren't in order, and there was an OBJECT type,
1127
- * need to verify that no OBJECT types overlap with something else.
1128
- */
1129
- if (has_out_of_order_fields && PyDataType_REFCHK(new)) {
1130
- if (validate_object_field_overlap(new) < 0) {
1131
- Py_DECREF(new);
1132
- return NULL;
1133
- }
1134
- }
1135
-
1136
- /* Structured arrays get a sticky aligned bit */
1137
- if (align) {
1138
- new->flags |= NPY_ALIGNED_STRUCT;
1139
- }
1140
-
1141
- /* Override the itemsize if provided */
1142
- tmp = PyDict_GetItemString(obj, "itemsize");
1143
- if (tmp != NULL) {
1144
- itemsize = (int)PyInt_AsLong(tmp);
1145
- if (itemsize == -1 && PyErr_Occurred()) {
1146
- Py_DECREF(new);
1147
- return NULL;
1148
- }
1149
- /* Make sure the itemsize isn't made too small */
1150
- if (itemsize < new->elsize) {
1151
- PyErr_Format(PyExc_ValueError,
1152
- "NumPy dtype descriptor requires %d bytes, "
1153
- "cannot override to smaller itemsize of %d",
1154
- (int)new->elsize, (int)itemsize);
1155
- Py_DECREF(new);
1156
- return NULL;
1157
- }
1158
- /* If align is set, make sure the alignment divides into the size */
1159
- if (align && itemsize % new->alignment != 0) {
1160
- PyErr_Format(PyExc_ValueError,
1161
- "NumPy dtype descriptor requires alignment of %d bytes, "
1162
- "which is not divisible into the specified itemsize %d",
1163
- (int)new->alignment, (int)itemsize);
1164
- Py_DECREF(new);
1165
- return NULL;
1166
- }
1167
- /* Set the itemsize */
1168
- new->elsize = itemsize;
1169
- }
1170
-
1171
- /* Add the metadata if provided */
1172
- metadata = PyDict_GetItemString(obj, "metadata");
1173
-
1174
- if (new->metadata == NULL) {
1175
- new->metadata = metadata;
1176
- Py_XINCREF(new->metadata);
1177
- }
1178
- else if (metadata != NULL) {
1179
- if (PyDict_Merge(new->metadata, metadata, 0) == -1) {
1180
- Py_DECREF(new);
1181
- return NULL;
1182
- }
1183
- }
1184
- return new;
1185
-
1186
- fail:
1187
- Py_XDECREF(fields);
1188
- return NULL;
1189
- }
1190
-
1191
-
1192
- /*NUMPY_API*/
1193
- NPY_NO_EXPORT PyArray_Descr *
1194
- PyArray_DescrNewFromType(int type_num)
1195
- {
1196
- PyArray_Descr *old;
1197
- PyArray_Descr *new;
1198
-
1199
- old = PyArray_DescrFromType(type_num);
1200
- new = PyArray_DescrNew(old);
1201
- Py_DECREF(old);
1202
- return new;
1203
- }
1204
-
1205
- /*NUMPY_API
1206
- * Get typenum from an object -- None goes to NULL
1207
- */
1208
- NPY_NO_EXPORT int
1209
- PyArray_DescrConverter2(PyObject *obj, PyArray_Descr **at)
1210
- {
1211
- if (obj == Py_None) {
1212
- *at = NULL;
1213
- return NPY_SUCCEED;
1214
- }
1215
- else {
1216
- return PyArray_DescrConverter(obj, at);
1217
- }
1218
- }
1219
-
1220
- /*NUMPY_API
1221
- * Get typenum from an object -- None goes to NPY_DEFAULT_TYPE
1222
- * This function takes a Python object representing a type and converts it
1223
- * to a the correct PyArray_Descr * structure to describe the type.
1224
- *
1225
- * Many objects can be used to represent a data-type which in NumPy is
1226
- * quite a flexible concept.
1227
- *
1228
- * This is the central code that converts Python objects to
1229
- * Type-descriptor objects that are used throughout numpy.
1230
- *
1231
- * Returns a new reference in *at, but the returned should not be
1232
- * modified as it may be one of the canonical immutable objects or
1233
- * a reference to the input obj.
1234
- */
1235
- NPY_NO_EXPORT int
1236
- PyArray_DescrConverter(PyObject *obj, PyArray_Descr **at)
1237
- {
1238
- int check_num = NPY_NOTYPE + 10;
1239
- PyObject *item;
1240
- int elsize = 0;
1241
- char endian = '=';
1242
-
1243
- *at = NULL;
1244
-
1245
- /* default */
1246
- if (obj == Py_None) {
1247
- *at = PyArray_DescrFromType(NPY_DEFAULT_TYPE);
1248
- return NPY_SUCCEED;
1249
- }
1250
-
1251
- if (PyArray_DescrCheck(obj)) {
1252
- *at = (PyArray_Descr *)obj;
1253
- Py_INCREF(*at);
1254
- return NPY_SUCCEED;
1255
- }
1256
-
1257
- if (PyType_Check(obj)) {
1258
- if (PyType_IsSubtype((PyTypeObject *)obj, &PyGenericArrType_Type)) {
1259
- *at = PyArray_DescrFromTypeObject(obj);
1260
- return (*at) ? NPY_SUCCEED : NPY_FAIL;
1261
- }
1262
- check_num = NPY_OBJECT;
1263
- #if !defined(NPY_PY3K)
1264
- if (obj == (PyObject *)(&PyInt_Type)) {
1265
- check_num = NPY_LONG;
1266
- }
1267
- else if (obj == (PyObject *)(&PyLong_Type)) {
1268
- check_num = NPY_LONGLONG;
1269
- }
1270
- #else
1271
- if (obj == (PyObject *)(&PyLong_Type)) {
1272
- check_num = NPY_LONG;
1273
- }
1274
- #endif
1275
- else if (obj == (PyObject *)(&PyFloat_Type)) {
1276
- check_num = NPY_DOUBLE;
1277
- }
1278
- else if (obj == (PyObject *)(&PyComplex_Type)) {
1279
- check_num = NPY_CDOUBLE;
1280
- }
1281
- else if (obj == (PyObject *)(&PyBool_Type)) {
1282
- check_num = NPY_BOOL;
1283
- }
1284
- else if (obj == (PyObject *)(&PyBytes_Type)) {
1285
- check_num = NPY_STRING;
1286
- }
1287
- else if (obj == (PyObject *)(&PyUnicode_Type)) {
1288
- check_num = NPY_UNICODE;
1289
- }
1290
- #if defined(NPY_PY3K)
1291
- else if (obj == (PyObject *)(&PyMemoryView_Type)) {
1292
- #else
1293
- else if (obj == (PyObject *)(&PyBuffer_Type)) {
1294
- #endif
1295
- check_num = NPY_VOID;
1296
- }
1297
- else {
1298
- *at = _arraydescr_fromobj(obj);
1299
- if (*at) {
1300
- return NPY_SUCCEED;
1301
- }
1302
- }
1303
- goto finish;
1304
- }
1305
-
1306
- /* or a typecode string */
1307
-
1308
- if (PyUnicode_Check(obj)) {
1309
- /* Allow unicode format strings: convert to bytes */
1310
- int retval;
1311
- PyObject *obj2;
1312
- obj2 = PyUnicode_AsASCIIString(obj);
1313
- if (obj2 == NULL) {
1314
- return NPY_FAIL;
1315
- }
1316
- retval = PyArray_DescrConverter(obj2, at);
1317
- Py_DECREF(obj2);
1318
- return retval;
1319
- }
1320
-
1321
- if (PyBytes_Check(obj)) {
1322
- char *type = NULL;
1323
- Py_ssize_t len = 0;
1324
-
1325
- /* Check for a string typecode. */
1326
- if (PyBytes_AsStringAndSize(obj, &type, &len) == -1) {
1327
- goto error;
1328
- }
1329
-
1330
- /* Empty string is invalid */
1331
- if (len == 0) {
1332
- goto fail;
1333
- }
1334
-
1335
- /* check for commas present or first (or second) element a digit */
1336
- if (_check_for_commastring(type, len)) {
1337
- *at = _convert_from_commastring(obj, 0);
1338
- return (*at) ? NPY_SUCCEED : NPY_FAIL;
1339
- }
1340
-
1341
- /* Process the endian character. '|' is replaced by '='*/
1342
- switch (type[0]) {
1343
- case '>':
1344
- case '<':
1345
- case '=':
1346
- endian = type[0];
1347
- ++type;
1348
- --len;
1349
- break;
1350
-
1351
- case '|':
1352
- endian = '=';
1353
- ++type;
1354
- --len;
1355
- break;
1356
- }
1357
-
1358
- /* Just an endian character is invalid */
1359
- if (len == 0) {
1360
- goto fail;
1361
- }
1362
-
1363
- /* Check for datetime format */
1364
- if (is_datetime_typestr(type, len)) {
1365
- *at = parse_dtype_from_datetime_typestr(type, len);
1366
- if (*at == NULL) {
1367
- return NPY_FAIL;
1368
- }
1369
- /* *at has byte order '=' at this point */
1370
- if (!PyArray_ISNBO(endian)) {
1371
- (*at)->byteorder = endian;
1372
- }
1373
- return NPY_SUCCEED;
1374
- }
1375
-
1376
- /* A typecode like 'd' */
1377
- if (len == 1) {
1378
- check_num = type[0];
1379
- }
1380
- /* A kind + size like 'f8' */
1381
- else {
1382
- char *typeend = NULL;
1383
- int kind;
1384
-
1385
- /* Parse the integer, make sure it's the rest of the string */
1386
- elsize = (int)strtol(type + 1, &typeend, 10);
1387
- if (typeend - type == len) {
1388
-
1389
- kind = type[0];
1390
- switch (kind) {
1391
- case NPY_STRINGLTR:
1392
- case NPY_STRINGLTR2:
1393
- check_num = NPY_STRING;
1394
- break;
1395
-
1396
- /*
1397
- * When specifying length of UNICODE
1398
- * the number of characters is given to match
1399
- * the STRING interface. Each character can be
1400
- * more than one byte and itemsize must be
1401
- * the number of bytes.
1402
- */
1403
- case NPY_UNICODELTR:
1404
- check_num = NPY_UNICODE;
1405
- elsize <<= 2;
1406
- break;
1407
-
1408
- case NPY_VOIDLTR:
1409
- check_num = NPY_VOID;
1410
- break;
1411
-
1412
- default:
1413
- if (elsize == 0) {
1414
- check_num = NPY_NOTYPE+10;
1415
- }
1416
- /* Support for generic processing c8, i4, f8, etc...*/
1417
- else {
1418
- check_num = PyArray_TypestrConvert(elsize, kind);
1419
- if (check_num == NPY_NOTYPE) {
1420
- check_num += 10;
1421
- }
1422
- elsize = 0;
1423
- }
1424
- }
1425
- }
1426
- }
1427
- }
1428
- else if (PyTuple_Check(obj)) {
1429
- /* or a tuple */
1430
- *at = _convert_from_tuple(obj);
1431
- if (*at == NULL){
1432
- if (PyErr_Occurred()) {
1433
- return NPY_FAIL;
1434
- }
1435
- goto fail;
1436
- }
1437
- return NPY_SUCCEED;
1438
- }
1439
- else if (PyList_Check(obj)) {
1440
- /* or a list */
1441
- *at = _convert_from_array_descr(obj,0);
1442
- if (*at == NULL) {
1443
- if (PyErr_Occurred()) {
1444
- return NPY_FAIL;
1445
- }
1446
- goto fail;
1447
- }
1448
- return NPY_SUCCEED;
1449
- }
1450
- else if (PyDict_Check(obj)) {
1451
- /* or a dictionary */
1452
- *at = _convert_from_dict(obj,0);
1453
- if (*at == NULL) {
1454
- if (PyErr_Occurred()) {
1455
- return NPY_FAIL;
1456
- }
1457
- goto fail;
1458
- }
1459
- return NPY_SUCCEED;
1460
- }
1461
- else if (PyArray_Check(obj)) {
1462
- goto fail;
1463
- }
1464
- else {
1465
- *at = _arraydescr_fromobj(obj);
1466
- if (*at) {
1467
- return NPY_SUCCEED;
1468
- }
1469
- if (PyErr_Occurred()) {
1470
- return NPY_FAIL;
1471
- }
1472
- goto fail;
1473
- }
1474
- if (PyErr_Occurred()) {
1475
- goto fail;
1476
- }
1477
-
1478
- finish:
1479
- if ((check_num == NPY_NOTYPE + 10) ||
1480
- (*at = PyArray_DescrFromType(check_num)) == NULL) {
1481
- PyErr_Clear();
1482
- /* Now check to see if the object is registered in typeDict */
1483
- if (typeDict != NULL) {
1484
- item = PyDict_GetItem(typeDict, obj);
1485
- #if defined(NPY_PY3K)
1486
- if (!item && PyBytes_Check(obj)) {
1487
- PyObject *tmp;
1488
- tmp = PyUnicode_FromEncodedObject(obj, "ascii", "strict");
1489
- if (tmp != NULL) {
1490
- item = PyDict_GetItem(typeDict, tmp);
1491
- Py_DECREF(tmp);
1492
- }
1493
- }
1494
- #endif
1495
- if (item) {
1496
- return PyArray_DescrConverter(item, at);
1497
- }
1498
- }
1499
- goto fail;
1500
- }
1501
-
1502
- if (((*at)->elsize == 0) && (elsize != 0)) {
1503
- PyArray_DESCR_REPLACE(*at);
1504
- (*at)->elsize = elsize;
1505
- }
1506
- if (endian != '=' && PyArray_ISNBO(endian)) {
1507
- endian = '=';
1508
- }
1509
- if (endian != '=' && (*at)->byteorder != '|'
1510
- && (*at)->byteorder != endian) {
1511
- PyArray_DESCR_REPLACE(*at);
1512
- (*at)->byteorder = endian;
1513
- }
1514
- return NPY_SUCCEED;
1515
-
1516
- fail:
1517
- if (PyBytes_Check(obj)) {
1518
- PyErr_Format(PyExc_TypeError,
1519
- "data type \"%s\" not understood", PyBytes_AS_STRING(obj));
1520
- }
1521
- else {
1522
- PyErr_SetString(PyExc_TypeError,
1523
- "data type not understood");
1524
- }
1525
-
1526
- error:
1527
- *at = NULL;
1528
- return NPY_FAIL;
1529
- }
1530
-
1531
- /** Array Descr Objects for dynamic types **/
1532
-
1533
- /*
1534
- * There are some statically-defined PyArray_Descr objects corresponding
1535
- * to the basic built-in types.
1536
- * These can and should be DECREF'd and INCREF'd as appropriate, anyway.
1537
- * If a mistake is made in reference counting, deallocation on these
1538
- * builtins will be attempted leading to problems.
1539
- *
1540
- * This lets us deal with all PyArray_Descr objects using reference
1541
- * counting (regardless of whether they are statically or dynamically
1542
- * allocated).
1543
- */
1544
-
1545
- /*NUMPY_API
1546
- * base cannot be NULL
1547
- */
1548
- NPY_NO_EXPORT PyArray_Descr *
1549
- PyArray_DescrNew(PyArray_Descr *base)
1550
- {
1551
- PyArray_Descr *newdescr = PyObject_New(PyArray_Descr, &PyArrayDescr_Type);
1552
-
1553
- if (newdescr == NULL) {
1554
- return NULL;
1555
- }
1556
- /* Don't copy PyObject_HEAD part */
1557
- memcpy((char *)newdescr + sizeof(PyObject),
1558
- (char *)base + sizeof(PyObject),
1559
- sizeof(PyArray_Descr) - sizeof(PyObject));
1560
-
1561
- /*
1562
- * The c_metadata has a by-value ownership model, need to clone it
1563
- * (basically a deep copy, but the auxdata clone function has some
1564
- * flexibility still) so the new PyArray_Descr object owns
1565
- * a copy of the data. Having both 'base' and 'newdescr' point to
1566
- * the same auxdata pointer would cause a double-free of memory.
1567
- */
1568
- if (base->c_metadata != NULL) {
1569
- newdescr->c_metadata = NPY_AUXDATA_CLONE(base->c_metadata);
1570
- if (newdescr->c_metadata == NULL) {
1571
- PyErr_NoMemory();
1572
- Py_DECREF(newdescr);
1573
- return NULL;
1574
- }
1575
- }
1576
-
1577
- if (newdescr->fields == Py_None) {
1578
- newdescr->fields = NULL;
1579
- }
1580
- Py_XINCREF(newdescr->fields);
1581
- Py_XINCREF(newdescr->names);
1582
- if (newdescr->subarray) {
1583
- newdescr->subarray = PyArray_malloc(sizeof(PyArray_ArrayDescr));
1584
- if (newdescr->subarray == NULL) {
1585
- Py_DECREF(newdescr);
1586
- return (PyArray_Descr *)PyErr_NoMemory();
1587
- }
1588
- memcpy(newdescr->subarray, base->subarray, sizeof(PyArray_ArrayDescr));
1589
- Py_INCREF(newdescr->subarray->shape);
1590
- Py_INCREF(newdescr->subarray->base);
1591
- }
1592
- Py_XINCREF(newdescr->typeobj);
1593
- Py_XINCREF(newdescr->metadata);
1594
-
1595
- return newdescr;
1596
- }
1597
-
1598
- /*
1599
- * should never be called for builtin-types unless
1600
- * there is a reference-count problem
1601
- */
1602
- static void
1603
- arraydescr_dealloc(PyArray_Descr *self)
1604
- {
1605
- if (self->fields == Py_None) {
1606
- fprintf(stderr, "*** Reference count error detected: \n" \
1607
- "an attempt was made to deallocate %d (%c) ***\n",
1608
- self->type_num, self->type);
1609
- Py_INCREF(self);
1610
- Py_INCREF(self);
1611
- return;
1612
- }
1613
- Py_XDECREF(self->typeobj);
1614
- Py_XDECREF(self->names);
1615
- Py_XDECREF(self->fields);
1616
- if (self->subarray) {
1617
- Py_XDECREF(self->subarray->shape);
1618
- Py_DECREF(self->subarray->base);
1619
- PyArray_free(self->subarray);
1620
- }
1621
- Py_XDECREF(self->metadata);
1622
- NPY_AUXDATA_FREE(self->c_metadata);
1623
- self->c_metadata = NULL;
1624
- Py_TYPE(self)->tp_free((PyObject *)self);
1625
- }
1626
-
1627
- /*
1628
- * we need to be careful about setting attributes because these
1629
- * objects are pointed to by arrays that depend on them for interpreting
1630
- * data. Currently no attributes of data-type objects can be set
1631
- * directly except names.
1632
- */
1633
- static PyMemberDef arraydescr_members[] = {
1634
- {"type",
1635
- T_OBJECT, offsetof(PyArray_Descr, typeobj), READONLY, NULL},
1636
- {"kind",
1637
- T_CHAR, offsetof(PyArray_Descr, kind), READONLY, NULL},
1638
- {"char",
1639
- T_CHAR, offsetof(PyArray_Descr, type), READONLY, NULL},
1640
- {"num",
1641
- T_INT, offsetof(PyArray_Descr, type_num), READONLY, NULL},
1642
- {"byteorder",
1643
- T_CHAR, offsetof(PyArray_Descr, byteorder), READONLY, NULL},
1644
- {"itemsize",
1645
- T_INT, offsetof(PyArray_Descr, elsize), READONLY, NULL},
1646
- {"alignment",
1647
- T_INT, offsetof(PyArray_Descr, alignment), READONLY, NULL},
1648
- {"flags",
1649
- T_BYTE, offsetof(PyArray_Descr, flags), READONLY, NULL},
1650
- {NULL, 0, 0, 0, NULL},
1651
- };
1652
-
1653
- static PyObject *
1654
- arraydescr_subdescr_get(PyArray_Descr *self)
1655
- {
1656
- if (!PyDataType_HASSUBARRAY(self)) {
1657
- Py_INCREF(Py_None);
1658
- return Py_None;
1659
- }
1660
- return Py_BuildValue("OO",
1661
- (PyObject *)self->subarray->base, self->subarray->shape);
1662
- }
1663
-
1664
- NPY_NO_EXPORT PyObject *
1665
- arraydescr_protocol_typestr_get(PyArray_Descr *self)
1666
- {
1667
- char basic_ = self->kind;
1668
- char endian = self->byteorder;
1669
- int size = self->elsize;
1670
- PyObject *ret;
1671
-
1672
- if (endian == '=') {
1673
- endian = '<';
1674
- if (!PyArray_IsNativeByteOrder(endian)) {
1675
- endian = '>';
1676
- }
1677
- }
1678
- if (self->type_num == NPY_UNICODE) {
1679
- size >>= 2;
1680
- }
1681
-
1682
- ret = PyUString_FromFormat("%c%c%d", endian, basic_, size);
1683
- if (PyDataType_ISDATETIME(self)) {
1684
- PyArray_DatetimeMetaData *meta;
1685
-
1686
- meta = get_datetime_metadata_from_dtype(self);
1687
- if (meta == NULL) {
1688
- Py_DECREF(ret);
1689
- return NULL;
1690
- }
1691
-
1692
- ret = append_metastr_to_string(meta, 0, ret);
1693
- }
1694
-
1695
- return ret;
1696
- }
1697
-
1698
- static PyObject *
1699
- arraydescr_typename_get(PyArray_Descr *self)
1700
- {
1701
- static const char np_prefix[] = "numpy.";
1702
- const int np_prefix_len = sizeof(np_prefix) - 1;
1703
- PyTypeObject *typeobj = self->typeobj;
1704
- PyObject *res;
1705
- char *s;
1706
- int len;
1707
- int prefix_len;
1708
- int suffix_len;
1709
-
1710
- if (PyTypeNum_ISUSERDEF(self->type_num)) {
1711
- s = strrchr(typeobj->tp_name, '.');
1712
- if (s == NULL) {
1713
- res = PyUString_FromString(typeobj->tp_name);
1714
- }
1715
- else {
1716
- res = PyUString_FromStringAndSize(s + 1, strlen(s) - 1);
1717
- }
1718
- return res;
1719
- }
1720
- else {
1721
- /*
1722
- * NumPy type or subclass
1723
- *
1724
- * res is derived from typeobj->tp_name with the following rules:
1725
- * - if starts with "numpy.", that prefix is removed
1726
- * - if ends with "_", that suffix is removed
1727
- */
1728
- len = strlen(typeobj->tp_name);
1729
-
1730
- if (! strncmp(typeobj->tp_name, np_prefix, np_prefix_len)) {
1731
- prefix_len = np_prefix_len;
1732
- }
1733
- else {
1734
- prefix_len = 0;
1735
- }
1736
-
1737
- if (typeobj->tp_name[len - 1] == '_') {
1738
- suffix_len = 1;
1739
- }
1740
- else {
1741
- suffix_len = 0;
1742
- }
1743
-
1744
- len -= prefix_len;
1745
- len -= suffix_len;
1746
- res = PyUString_FromStringAndSize(typeobj->tp_name+prefix_len, len);
1747
- }
1748
- if (PyTypeNum_ISFLEXIBLE(self->type_num) && self->elsize != 0) {
1749
- PyObject *p;
1750
- p = PyUString_FromFormat("%d", self->elsize * 8);
1751
- PyUString_ConcatAndDel(&res, p);
1752
- }
1753
- if (PyDataType_ISDATETIME(self)) {
1754
- PyArray_DatetimeMetaData *meta;
1755
-
1756
- meta = get_datetime_metadata_from_dtype(self);
1757
- if (meta == NULL) {
1758
- Py_DECREF(res);
1759
- return NULL;
1760
- }
1761
-
1762
- res = append_metastr_to_string(meta, 0, res);
1763
- }
1764
-
1765
- return res;
1766
- }
1767
-
1768
- static PyObject *
1769
- arraydescr_base_get(PyArray_Descr *self)
1770
- {
1771
- if (!PyDataType_HASSUBARRAY(self)) {
1772
- Py_INCREF(self);
1773
- return (PyObject *)self;
1774
- }
1775
- Py_INCREF(self->subarray->base);
1776
- return (PyObject *)(self->subarray->base);
1777
- }
1778
-
1779
- static PyObject *
1780
- arraydescr_shape_get(PyArray_Descr *self)
1781
- {
1782
- if (!PyDataType_HASSUBARRAY(self)) {
1783
- return PyTuple_New(0);
1784
- }
1785
- /*TODO
1786
- * self->subarray->shape should always be a tuple,
1787
- * so this check should be unnecessary
1788
- */
1789
- if (PyTuple_Check(self->subarray->shape)) {
1790
- Py_INCREF(self->subarray->shape);
1791
- return (PyObject *)(self->subarray->shape);
1792
- }
1793
- return Py_BuildValue("(O)", self->subarray->shape);
1794
- }
1795
-
1796
- NPY_NO_EXPORT PyObject *
1797
- arraydescr_protocol_descr_get(PyArray_Descr *self)
1798
- {
1799
- PyObject *dobj, *res;
1800
- PyObject *_numpy_internal;
1801
-
1802
- if (!PyDataType_HASFIELDS(self)) {
1803
- /* get default */
1804
- dobj = PyTuple_New(2);
1805
- if (dobj == NULL) {
1806
- return NULL;
1807
- }
1808
- PyTuple_SET_ITEM(dobj, 0, PyUString_FromString(""));
1809
- PyTuple_SET_ITEM(dobj, 1, arraydescr_protocol_typestr_get(self));
1810
- res = PyList_New(1);
1811
- if (res == NULL) {
1812
- Py_DECREF(dobj);
1813
- return NULL;
1814
- }
1815
- PyList_SET_ITEM(res, 0, dobj);
1816
- return res;
1817
- }
1818
-
1819
- _numpy_internal = PyImport_ImportModule("numpy.core._internal");
1820
- if (_numpy_internal == NULL) {
1821
- return NULL;
1822
- }
1823
- res = PyObject_CallMethod(_numpy_internal, "_array_descr", "O", self);
1824
- Py_DECREF(_numpy_internal);
1825
- return res;
1826
- }
1827
-
1828
- /*
1829
- * returns 1 for a builtin type
1830
- * and 2 for a user-defined data-type descriptor
1831
- * return 0 if neither (i.e. it's a copy of one)
1832
- */
1833
- static PyObject *
1834
- arraydescr_isbuiltin_get(PyArray_Descr *self)
1835
- {
1836
- long val;
1837
- val = 0;
1838
- if (self->fields == Py_None) {
1839
- val = 1;
1840
- }
1841
- if (PyTypeNum_ISUSERDEF(self->type_num)) {
1842
- val = 2;
1843
- }
1844
- return PyInt_FromLong(val);
1845
- }
1846
-
1847
- static int
1848
- _arraydescr_isnative(PyArray_Descr *self)
1849
- {
1850
- if (!PyDataType_HASFIELDS(self)) {
1851
- return PyArray_ISNBO(self->byteorder);
1852
- }
1853
- else {
1854
- PyObject *key, *value, *title = NULL;
1855
- PyArray_Descr *new;
1856
- int offset;
1857
- Py_ssize_t pos = 0;
1858
- while (PyDict_Next(self->fields, &pos, &key, &value)) {
1859
- if NPY_TITLE_KEY(key, value) {
1860
- continue;
1861
- }
1862
- if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset, &title)) {
1863
- return -1;
1864
- }
1865
- if (!_arraydescr_isnative(new)) {
1866
- return 0;
1867
- }
1868
- }
1869
- }
1870
- return 1;
1871
- }
1872
-
1873
- /*
1874
- * return Py_True if this data-type descriptor
1875
- * has native byteorder if no fields are defined
1876
- *
1877
- * or if all sub-fields have native-byteorder if
1878
- * fields are defined
1879
- */
1880
- static PyObject *
1881
- arraydescr_isnative_get(PyArray_Descr *self)
1882
- {
1883
- PyObject *ret;
1884
- int retval;
1885
- retval = _arraydescr_isnative(self);
1886
- if (retval == -1) {
1887
- return NULL;
1888
- }
1889
- ret = retval ? Py_True : Py_False;
1890
- Py_INCREF(ret);
1891
- return ret;
1892
- }
1893
-
1894
- static PyObject *
1895
- arraydescr_isalignedstruct_get(PyArray_Descr *self)
1896
- {
1897
- PyObject *ret;
1898
- ret = (self->flags&NPY_ALIGNED_STRUCT) ? Py_True : Py_False;
1899
- Py_INCREF(ret);
1900
- return ret;
1901
- }
1902
-
1903
- static PyObject *
1904
- arraydescr_fields_get(PyArray_Descr *self)
1905
- {
1906
- if (!PyDataType_HASFIELDS(self)) {
1907
- Py_INCREF(Py_None);
1908
- return Py_None;
1909
- }
1910
- return PyDictProxy_New(self->fields);
1911
- }
1912
-
1913
- static PyObject *
1914
- arraydescr_metadata_get(PyArray_Descr *self)
1915
- {
1916
- if (self->metadata == NULL) {
1917
- Py_INCREF(Py_None);
1918
- return Py_None;
1919
- }
1920
- return PyDictProxy_New(self->metadata);
1921
- }
1922
-
1923
- static PyObject *
1924
- arraydescr_hasobject_get(PyArray_Descr *self)
1925
- {
1926
- if (PyDataType_FLAGCHK(self, NPY_ITEM_HASOBJECT)) {
1927
- Py_RETURN_TRUE;
1928
- }
1929
- else {
1930
- Py_RETURN_FALSE;
1931
- }
1932
- }
1933
-
1934
- static PyObject *
1935
- arraydescr_names_get(PyArray_Descr *self)
1936
- {
1937
- if (!PyDataType_HASFIELDS(self)) {
1938
- Py_INCREF(Py_None);
1939
- return Py_None;
1940
- }
1941
- Py_INCREF(self->names);
1942
- return self->names;
1943
- }
1944
-
1945
- static int
1946
- arraydescr_names_set(PyArray_Descr *self, PyObject *val)
1947
- {
1948
- int N = 0;
1949
- int i;
1950
- PyObject *new_names;
1951
- PyObject *new_fields;
1952
-
1953
- if (val == NULL) {
1954
- PyErr_SetString(PyExc_AttributeError,
1955
- "Cannot delete dtype names attribute");
1956
- return -1;
1957
- }
1958
- if (!PyDataType_HASFIELDS(self)) {
1959
- PyErr_SetString(PyExc_ValueError,
1960
- "there are no fields defined");
1961
- return -1;
1962
- }
1963
-
1964
- /*
1965
- * This deprecation has been temporarily removed for the NumPy 1.7
1966
- * release. It should be re-added after the 1.7 branch is done,
1967
- * and a convenience API to replace the typical use-cases for
1968
- * mutable names should be implemented.
1969
- *
1970
- * if (DEPRECATE("Setting NumPy dtype names is deprecated, the dtype "
1971
- * "will become immutable in a future version") < 0) {
1972
- * return -1;
1973
- * }
1974
- */
1975
-
1976
- N = PyTuple_GET_SIZE(self->names);
1977
- if (!PySequence_Check(val) || PyObject_Size((PyObject *)val) != N) {
1978
- PyErr_Format(PyExc_ValueError,
1979
- "must replace all names at once with a sequence of length %d",
1980
- N);
1981
- return -1;
1982
- }
1983
- /* Make sure all entries are strings */
1984
- for (i = 0; i < N; i++) {
1985
- PyObject *item;
1986
- int valid = 1;
1987
- item = PySequence_GetItem(val, i);
1988
- valid = PyUString_Check(item);
1989
- Py_DECREF(item);
1990
- if (!valid) {
1991
- PyErr_Format(PyExc_ValueError,
1992
- "item #%d of names is of type %s and not string",
1993
- i, Py_TYPE(item)->tp_name);
1994
- return -1;
1995
- }
1996
- }
1997
- /* Update dictionary keys in fields */
1998
- new_names = PySequence_Tuple(val);
1999
- new_fields = PyDict_New();
2000
- for (i = 0; i < N; i++) {
2001
- PyObject *key;
2002
- PyObject *item;
2003
- PyObject *new_key;
2004
- int ret;
2005
- key = PyTuple_GET_ITEM(self->names, i);
2006
- /* Borrowed references to item and new_key */
2007
- item = PyDict_GetItem(self->fields, key);
2008
- new_key = PyTuple_GET_ITEM(new_names, i);
2009
- /* Check for duplicates */
2010
- ret = PyDict_Contains(new_fields, new_key);
2011
- if (ret != 0) {
2012
- if (ret < 0) {
2013
- PyErr_Clear();
2014
- }
2015
- PyErr_SetString(PyExc_ValueError, "Duplicate field names given.");
2016
- Py_DECREF(new_names);
2017
- Py_DECREF(new_fields);
2018
- return -1;
2019
- }
2020
- PyDict_SetItem(new_fields, new_key, item);
2021
- }
2022
-
2023
- /* Replace names */
2024
- Py_DECREF(self->names);
2025
- self->names = new_names;
2026
-
2027
- /* Replace fields */
2028
- Py_DECREF(self->fields);
2029
- self->fields = new_fields;
2030
-
2031
- return 0;
2032
- }
2033
-
2034
- static PyGetSetDef arraydescr_getsets[] = {
2035
- {"subdtype",
2036
- (getter)arraydescr_subdescr_get,
2037
- NULL, NULL, NULL},
2038
- {"descr",
2039
- (getter)arraydescr_protocol_descr_get,
2040
- NULL, NULL, NULL},
2041
- {"str",
2042
- (getter)arraydescr_protocol_typestr_get,
2043
- NULL, NULL, NULL},
2044
- {"name",
2045
- (getter)arraydescr_typename_get,
2046
- NULL, NULL, NULL},
2047
- {"base",
2048
- (getter)arraydescr_base_get,
2049
- NULL, NULL, NULL},
2050
- {"shape",
2051
- (getter)arraydescr_shape_get,
2052
- NULL, NULL, NULL},
2053
- {"isbuiltin",
2054
- (getter)arraydescr_isbuiltin_get,
2055
- NULL, NULL, NULL},
2056
- {"isnative",
2057
- (getter)arraydescr_isnative_get,
2058
- NULL, NULL, NULL},
2059
- {"isalignedstruct",
2060
- (getter)arraydescr_isalignedstruct_get,
2061
- NULL, NULL, NULL},
2062
- {"fields",
2063
- (getter)arraydescr_fields_get,
2064
- NULL, NULL, NULL},
2065
- {"metadata",
2066
- (getter)arraydescr_metadata_get,
2067
- NULL, NULL, NULL},
2068
- {"names",
2069
- (getter)arraydescr_names_get,
2070
- (setter)arraydescr_names_set,
2071
- NULL, NULL},
2072
- {"hasobject",
2073
- (getter)arraydescr_hasobject_get,
2074
- NULL, NULL, NULL},
2075
- {NULL, NULL, NULL, NULL, NULL},
2076
- };
2077
-
2078
- static PyObject *
2079
- arraydescr_new(PyTypeObject *NPY_UNUSED(subtype),
2080
- PyObject *args, PyObject *kwds)
2081
- {
2082
- PyObject *odescr, *metadata=NULL;
2083
- PyArray_Descr *descr, *conv;
2084
- npy_bool align = NPY_FALSE;
2085
- npy_bool copy = NPY_FALSE;
2086
- npy_bool copied = NPY_FALSE;
2087
-
2088
- static char *kwlist[] = {"dtype", "align", "copy", "metadata", NULL};
2089
-
2090
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O&O&O!", kwlist,
2091
- &odescr,
2092
- PyArray_BoolConverter, &align,
2093
- PyArray_BoolConverter, &copy,
2094
- &PyDict_Type, &metadata)) {
2095
- return NULL;
2096
- }
2097
-
2098
- if (align) {
2099
- if (!PyArray_DescrAlignConverter(odescr, &conv)) {
2100
- return NULL;
2101
- }
2102
- }
2103
- else if (!PyArray_DescrConverter(odescr, &conv)) {
2104
- return NULL;
2105
- }
2106
-
2107
- /* Get a new copy of it unless it's already a copy */
2108
- if (copy && conv->fields == Py_None) {
2109
- descr = PyArray_DescrNew(conv);
2110
- Py_DECREF(conv);
2111
- conv = descr;
2112
- copied = NPY_TRUE;
2113
- }
2114
-
2115
- if ((metadata != NULL)) {
2116
- /*
2117
- * We need to be sure to make a new copy of the data-type and any
2118
- * underlying dictionary
2119
- */
2120
- if (!copied) {
2121
- copied = NPY_TRUE;
2122
- descr = PyArray_DescrNew(conv);
2123
- Py_DECREF(conv);
2124
- conv = descr;
2125
- }
2126
- if ((conv->metadata != NULL)) {
2127
- /*
2128
- * Make a copy of the metadata before merging with the
2129
- * input metadata so that this data-type descriptor has
2130
- * it's own copy
2131
- */
2132
- /* Save a reference */
2133
- odescr = conv->metadata;
2134
- conv->metadata = PyDict_Copy(odescr);
2135
- /* Decrement the old reference */
2136
- Py_DECREF(odescr);
2137
-
2138
- /*
2139
- * Update conv->metadata with anything new in metadata
2140
- * keyword, but do not over-write anything already there
2141
- */
2142
- if (PyDict_Merge(conv->metadata, metadata, 0) != 0) {
2143
- Py_DECREF(conv);
2144
- return NULL;
2145
- }
2146
- }
2147
- else {
2148
- /* Make a copy of the input dictionary */
2149
- conv->metadata = PyDict_Copy(metadata);
2150
- }
2151
- }
2152
-
2153
- return (PyObject *)conv;
2154
- }
2155
-
2156
- /*
2157
- * Return a tuple of
2158
- * (cleaned metadata dictionary, tuple with (str, num))
2159
- */
2160
- static PyObject *
2161
- _get_pickleabletype_from_datetime_metadata(PyArray_Descr *dtype)
2162
- {
2163
- PyObject *ret, *dt_tuple;
2164
- PyArray_DatetimeMetaData *meta;
2165
-
2166
- /* Create the 2-item tuple to return */
2167
- ret = PyTuple_New(2);
2168
- if (ret == NULL) {
2169
- return NULL;
2170
- }
2171
-
2172
- /* Store the metadata dictionary */
2173
- if (dtype->metadata != NULL) {
2174
- Py_INCREF(dtype->metadata);
2175
- PyTuple_SET_ITEM(ret, 0, dtype->metadata);
2176
- } else {
2177
- PyTuple_SET_ITEM(ret, 0, PyDict_New());
2178
- }
2179
-
2180
- /* Convert the datetime metadata into a tuple */
2181
- meta = get_datetime_metadata_from_dtype(dtype);
2182
- if (meta == NULL) {
2183
- Py_DECREF(ret);
2184
- return NULL;
2185
- }
2186
- /* Use a 4-tuple that numpy 1.6 knows how to unpickle */
2187
- dt_tuple = PyTuple_New(4);
2188
- if (dt_tuple == NULL) {
2189
- Py_DECREF(ret);
2190
- return NULL;
2191
- }
2192
- PyTuple_SET_ITEM(dt_tuple, 0,
2193
- PyBytes_FromString(_datetime_strings[meta->base]));
2194
- PyTuple_SET_ITEM(dt_tuple, 1,
2195
- PyInt_FromLong(meta->num));
2196
- PyTuple_SET_ITEM(dt_tuple, 2,
2197
- PyInt_FromLong(1));
2198
- PyTuple_SET_ITEM(dt_tuple, 3,
2199
- PyInt_FromLong(1));
2200
-
2201
- PyTuple_SET_ITEM(ret, 1, dt_tuple);
2202
-
2203
- return ret;
2204
- }
2205
-
2206
- /*
2207
- * return a tuple of (callable object, args, state).
2208
- *
2209
- * TODO: This method needs to change so that unpickling doesn't
2210
- * use __setstate__. This is required for the dtype
2211
- * to be an immutable object.
2212
- */
2213
- static PyObject *
2214
- arraydescr_reduce(PyArray_Descr *self, PyObject *NPY_UNUSED(args))
2215
- {
2216
- /*
2217
- * version number of this pickle type. Increment if we need to
2218
- * change the format. Be sure to handle the old versions in
2219
- * arraydescr_setstate.
2220
- */
2221
- const int version = 4;
2222
- PyObject *ret, *mod, *obj;
2223
- PyObject *state;
2224
- char endian;
2225
- int elsize, alignment;
2226
-
2227
- ret = PyTuple_New(3);
2228
- if (ret == NULL) {
2229
- return NULL;
2230
- }
2231
- mod = PyImport_ImportModule("numpy.core.multiarray");
2232
- if (mod == NULL) {
2233
- Py_DECREF(ret);
2234
- return NULL;
2235
- }
2236
- obj = PyObject_GetAttrString(mod, "dtype");
2237
- Py_DECREF(mod);
2238
- if (obj == NULL) {
2239
- Py_DECREF(ret);
2240
- return NULL;
2241
- }
2242
- PyTuple_SET_ITEM(ret, 0, obj);
2243
- if (PyTypeNum_ISUSERDEF(self->type_num)
2244
- || ((self->type_num == NPY_VOID
2245
- && self->typeobj != &PyVoidArrType_Type))) {
2246
- obj = (PyObject *)self->typeobj;
2247
- Py_INCREF(obj);
2248
- }
2249
- else {
2250
- elsize = self->elsize;
2251
- if (self->type_num == NPY_UNICODE) {
2252
- elsize >>= 2;
2253
- }
2254
- obj = PyUString_FromFormat("%c%d",self->kind, elsize);
2255
- }
2256
- PyTuple_SET_ITEM(ret, 1, Py_BuildValue("(Nii)", obj, 0, 1));
2257
-
2258
- /*
2259
- * Now return the state which is at least byteorder,
2260
- * subarray, and fields
2261
- */
2262
- endian = self->byteorder;
2263
- if (endian == '=') {
2264
- endian = '<';
2265
- if (!PyArray_IsNativeByteOrder(endian)) {
2266
- endian = '>';
2267
- }
2268
- }
2269
- if (PyDataType_ISDATETIME(self)) {
2270
- PyObject *newobj;
2271
- state = PyTuple_New(9);
2272
- PyTuple_SET_ITEM(state, 0, PyInt_FromLong(version));
2273
- /*
2274
- * newobj is a tuple of the Python metadata dictionary
2275
- * and tuple of date_time info (str, num)
2276
- */
2277
- newobj = _get_pickleabletype_from_datetime_metadata(self);
2278
- if (newobj == NULL) {
2279
- Py_DECREF(state);
2280
- Py_DECREF(ret);
2281
- return NULL;
2282
- }
2283
- PyTuple_SET_ITEM(state, 8, newobj);
2284
- }
2285
- else if (self->metadata) {
2286
- state = PyTuple_New(9);
2287
- PyTuple_SET_ITEM(state, 0, PyInt_FromLong(version));
2288
- Py_INCREF(self->metadata);
2289
- PyTuple_SET_ITEM(state, 8, self->metadata);
2290
- }
2291
- else { /* Use version 3 pickle format */
2292
- state = PyTuple_New(8);
2293
- PyTuple_SET_ITEM(state, 0, PyInt_FromLong(3));
2294
- }
2295
-
2296
- PyTuple_SET_ITEM(state, 1, PyUString_FromFormat("%c", endian));
2297
- PyTuple_SET_ITEM(state, 2, arraydescr_subdescr_get(self));
2298
- if (PyDataType_HASFIELDS(self)) {
2299
- Py_INCREF(self->names);
2300
- Py_INCREF(self->fields);
2301
- PyTuple_SET_ITEM(state, 3, self->names);
2302
- PyTuple_SET_ITEM(state, 4, self->fields);
2303
- }
2304
- else {
2305
- PyTuple_SET_ITEM(state, 3, Py_None);
2306
- PyTuple_SET_ITEM(state, 4, Py_None);
2307
- Py_INCREF(Py_None);
2308
- Py_INCREF(Py_None);
2309
- }
2310
-
2311
- /* for extended types it also includes elsize and alignment */
2312
- if (PyTypeNum_ISEXTENDED(self->type_num)) {
2313
- elsize = self->elsize;
2314
- alignment = self->alignment;
2315
- }
2316
- else {
2317
- elsize = -1;
2318
- alignment = -1;
2319
- }
2320
- PyTuple_SET_ITEM(state, 5, PyInt_FromLong(elsize));
2321
- PyTuple_SET_ITEM(state, 6, PyInt_FromLong(alignment));
2322
- PyTuple_SET_ITEM(state, 7, PyInt_FromLong(self->flags));
2323
-
2324
- PyTuple_SET_ITEM(ret, 2, state);
2325
- return ret;
2326
- }
2327
-
2328
- /*
2329
- * returns NPY_OBJECT_DTYPE_FLAGS if this data-type has an object portion used
2330
- * when setting the state because hasobject is not stored.
2331
- */
2332
- static char
2333
- _descr_find_object(PyArray_Descr *self)
2334
- {
2335
- if (self->flags
2336
- || self->type_num == NPY_OBJECT
2337
- || self->kind == 'O') {
2338
- return NPY_OBJECT_DTYPE_FLAGS;
2339
- }
2340
- if (PyDataType_HASFIELDS(self)) {
2341
- PyObject *key, *value, *title = NULL;
2342
- PyArray_Descr *new;
2343
- int offset;
2344
- Py_ssize_t pos = 0;
2345
-
2346
- while (PyDict_Next(self->fields, &pos, &key, &value)) {
2347
- if NPY_TITLE_KEY(key, value) {
2348
- continue;
2349
- }
2350
- if (!PyArg_ParseTuple(value, "Oi|O", &new, &offset, &title)) {
2351
- PyErr_Clear();
2352
- return 0;
2353
- }
2354
- if (_descr_find_object(new)) {
2355
- new->flags = NPY_OBJECT_DTYPE_FLAGS;
2356
- return NPY_OBJECT_DTYPE_FLAGS;
2357
- }
2358
- }
2359
- }
2360
- return 0;
2361
- }
2362
-
2363
- /*
2364
- * state is at least byteorder, subarray, and fields but could include elsize
2365
- * and alignment for EXTENDED arrays
2366
- */
2367
- static PyObject *
2368
- arraydescr_setstate(PyArray_Descr *self, PyObject *args)
2369
- {
2370
- int elsize = -1, alignment = -1;
2371
- int version = 4;
2372
- char endian;
2373
- PyObject *endian_obj;
2374
- PyObject *subarray, *fields, *names = NULL, *metadata=NULL;
2375
- int incref_names = 1;
2376
- int int_dtypeflags = 0;
2377
- char dtypeflags;
2378
-
2379
- if (self->fields == Py_None) {
2380
- Py_INCREF(Py_None);
2381
- return Py_None;
2382
- }
2383
- if (PyTuple_GET_SIZE(args) != 1
2384
- || !(PyTuple_Check(PyTuple_GET_ITEM(args, 0)))) {
2385
- PyErr_BadInternalCall();
2386
- return NULL;
2387
- }
2388
- switch (PyTuple_GET_SIZE(PyTuple_GET_ITEM(args,0))) {
2389
- case 9:
2390
- if (!PyArg_ParseTuple(args, "(iOOOOiiiO)", &version, &endian_obj,
2391
- &subarray, &names, &fields, &elsize,
2392
- &alignment, &int_dtypeflags, &metadata)) {
2393
- PyErr_Clear();
2394
- return NULL;
2395
- }
2396
- break;
2397
- case 8:
2398
- if (!PyArg_ParseTuple(args, "(iOOOOiii)", &version, &endian_obj,
2399
- &subarray, &names, &fields, &elsize,
2400
- &alignment, &int_dtypeflags)) {
2401
- return NULL;
2402
- }
2403
- break;
2404
- case 7:
2405
- if (!PyArg_ParseTuple(args, "(iOOOOii)", &version, &endian_obj,
2406
- &subarray, &names, &fields, &elsize,
2407
- &alignment)) {
2408
- return NULL;
2409
- }
2410
- break;
2411
- case 6:
2412
- if (!PyArg_ParseTuple(args, "(iOOOii)", &version,
2413
- &endian_obj, &subarray, &fields,
2414
- &elsize, &alignment)) {
2415
- return NULL;
2416
- }
2417
- break;
2418
- case 5:
2419
- version = 0;
2420
- if (!PyArg_ParseTuple(args, "(OOOii)",
2421
- &endian_obj, &subarray, &fields, &elsize,
2422
- &alignment)) {
2423
- return NULL;
2424
- }
2425
- break;
2426
- default:
2427
- /* raise an error */
2428
- if (PyTuple_GET_SIZE(PyTuple_GET_ITEM(args,0)) > 5) {
2429
- version = PyInt_AsLong(PyTuple_GET_ITEM(args, 0));
2430
- }
2431
- else {
2432
- version = -1;
2433
- }
2434
- }
2435
-
2436
- /*
2437
- * If we ever need another pickle format, increment the version
2438
- * number. But we should still be able to handle the old versions.
2439
- */
2440
- if (version < 0 || version > 4) {
2441
- PyErr_Format(PyExc_ValueError,
2442
- "can't handle version %d of numpy.dtype pickle",
2443
- version);
2444
- return NULL;
2445
- }
2446
-
2447
- if (version == 1 || version == 0) {
2448
- if (fields != Py_None) {
2449
- PyObject *key, *list;
2450
- key = PyInt_FromLong(-1);
2451
- list = PyDict_GetItem(fields, key);
2452
- if (!list) {
2453
- return NULL;
2454
- }
2455
- Py_INCREF(list);
2456
- names = list;
2457
- PyDict_DelItem(fields, key);
2458
- incref_names = 0;
2459
- }
2460
- else {
2461
- names = Py_None;
2462
- }
2463
- }
2464
-
2465
- /* Parse endian */
2466
- if (PyUnicode_Check(endian_obj) || PyBytes_Check(endian_obj)) {
2467
- PyObject *tmp = NULL;
2468
- char *str;
2469
- Py_ssize_t len;
2470
-
2471
- if (PyUnicode_Check(endian_obj)) {
2472
- tmp = PyUnicode_AsASCIIString(endian_obj);
2473
- if (tmp == NULL) {
2474
- return NULL;
2475
- }
2476
- endian_obj = tmp;
2477
- }
2478
-
2479
- if (PyBytes_AsStringAndSize(endian_obj, &str, &len) == -1) {
2480
- Py_XDECREF(tmp);
2481
- return NULL;
2482
- }
2483
- if (len != 1) {
2484
- PyErr_SetString(PyExc_ValueError,
2485
- "endian is not 1-char string in Numpy dtype unpickling");
2486
- Py_XDECREF(tmp);
2487
- return NULL;
2488
- }
2489
- endian = str[0];
2490
- Py_XDECREF(tmp);
2491
- }
2492
- else {
2493
- PyErr_SetString(PyExc_ValueError,
2494
- "endian is not a string in Numpy dtype unpickling");
2495
- return NULL;
2496
- }
2497
-
2498
- if ((fields == Py_None && names != Py_None) ||
2499
- (names == Py_None && fields != Py_None)) {
2500
- PyErr_Format(PyExc_ValueError,
2501
- "inconsistent fields and names in Numpy dtype unpickling");
2502
- return NULL;
2503
- }
2504
-
2505
- if (names != Py_None && !PyTuple_Check(names)) {
2506
- PyErr_Format(PyExc_ValueError,
2507
- "non-tuple names in Numpy dtype unpickling");
2508
- return NULL;
2509
- }
2510
-
2511
- if (fields != Py_None && !PyDict_Check(fields)) {
2512
- PyErr_Format(PyExc_ValueError,
2513
- "non-dict fields in Numpy dtype unpickling");
2514
- return NULL;
2515
- }
2516
-
2517
- if (endian != '|' && PyArray_IsNativeByteOrder(endian)) {
2518
- endian = '=';
2519
- }
2520
- self->byteorder = endian;
2521
- if (self->subarray) {
2522
- Py_XDECREF(self->subarray->base);
2523
- Py_XDECREF(self->subarray->shape);
2524
- PyArray_free(self->subarray);
2525
- }
2526
- self->subarray = NULL;
2527
-
2528
- if (subarray != Py_None) {
2529
- PyObject *subarray_shape;
2530
-
2531
- /*
2532
- * Ensure that subarray[0] is an ArrayDescr and
2533
- * that subarray_shape obtained from subarray[1] is a tuple of integers.
2534
- */
2535
- if (!(PyTuple_Check(subarray) &&
2536
- PyTuple_Size(subarray) == 2 &&
2537
- PyArray_DescrCheck(PyTuple_GET_ITEM(subarray, 0)))) {
2538
- PyErr_Format(PyExc_ValueError,
2539
- "incorrect subarray in __setstate__");
2540
- return NULL;
2541
- }
2542
- subarray_shape = PyTuple_GET_ITEM(subarray, 1);
2543
- if (PyNumber_Check(subarray_shape)) {
2544
- PyObject *tmp;
2545
- #if defined(NPY_PY3K)
2546
- tmp = PyNumber_Long(subarray_shape);
2547
- #else
2548
- tmp = PyNumber_Int(subarray_shape);
2549
- #endif
2550
- if (tmp == NULL) {
2551
- return NULL;
2552
- }
2553
- subarray_shape = Py_BuildValue("(O)", tmp);
2554
- Py_DECREF(tmp);
2555
- if (subarray_shape == NULL) {
2556
- return NULL;
2557
- }
2558
- }
2559
- else if (_is_tuple_of_integers(subarray_shape)) {
2560
- Py_INCREF(subarray_shape);
2561
- }
2562
- else {
2563
- PyErr_Format(PyExc_ValueError,
2564
- "incorrect subarray shape in __setstate__");
2565
- return NULL;
2566
- }
2567
-
2568
- self->subarray = PyArray_malloc(sizeof(PyArray_ArrayDescr));
2569
- if (!PyDataType_HASSUBARRAY(self)) {
2570
- return PyErr_NoMemory();
2571
- }
2572
- self->subarray->base = (PyArray_Descr *)PyTuple_GET_ITEM(subarray, 0);
2573
- Py_INCREF(self->subarray->base);
2574
- self->subarray->shape = subarray_shape;
2575
- }
2576
-
2577
- if (fields != Py_None) {
2578
- /*
2579
- * Ensure names are of appropriate string type
2580
- */
2581
- Py_ssize_t i;
2582
- int names_ok = 1;
2583
- PyObject *name;
2584
-
2585
- for (i = 0; i < PyTuple_GET_SIZE(names); ++i) {
2586
- name = PyTuple_GET_ITEM(names, i);
2587
- if (!PyUString_Check(name)) {
2588
- names_ok = 0;
2589
- break;
2590
- }
2591
- }
2592
-
2593
- if (names_ok) {
2594
- Py_XDECREF(self->fields);
2595
- self->fields = fields;
2596
- Py_INCREF(fields);
2597
- Py_XDECREF(self->names);
2598
- self->names = names;
2599
- if (incref_names) {
2600
- Py_INCREF(names);
2601
- }
2602
- }
2603
- else {
2604
- #if defined(NPY_PY3K)
2605
- /*
2606
- * To support pickle.load(f, encoding='bytes') for loading Py2
2607
- * generated pickles on Py3, we need to be more lenient and convert
2608
- * field names from byte strings to unicode.
2609
- */
2610
- PyObject *tmp, *new_name, *field;
2611
-
2612
- tmp = PyDict_New();
2613
- if (tmp == NULL) {
2614
- return NULL;
2615
- }
2616
- Py_XDECREF(self->fields);
2617
- self->fields = tmp;
2618
-
2619
- tmp = PyTuple_New(PyTuple_GET_SIZE(names));
2620
- if (tmp == NULL) {
2621
- return NULL;
2622
- }
2623
- Py_XDECREF(self->names);
2624
- self->names = tmp;
2625
-
2626
- for (i = 0; i < PyTuple_GET_SIZE(names); ++i) {
2627
- name = PyTuple_GET_ITEM(names, i);
2628
- field = PyDict_GetItem(fields, name);
2629
- if (!field) {
2630
- return NULL;
2631
- }
2632
-
2633
- if (PyUnicode_Check(name)) {
2634
- new_name = name;
2635
- Py_INCREF(new_name);
2636
- }
2637
- else {
2638
- new_name = PyUnicode_FromEncodedObject(name, "ASCII", "strict");
2639
- if (new_name == NULL) {
2640
- return NULL;
2641
- }
2642
- }
2643
-
2644
- PyTuple_SET_ITEM(self->names, i, new_name);
2645
- if (PyDict_SetItem(self->fields, new_name, field) != 0) {
2646
- return NULL;
2647
- }
2648
- }
2649
- #else
2650
- PyErr_Format(PyExc_ValueError,
2651
- "non-string names in Numpy dtype unpickling");
2652
- return NULL;
2653
- #endif
2654
- }
2655
- }
2656
-
2657
- if (PyTypeNum_ISEXTENDED(self->type_num)) {
2658
- self->elsize = elsize;
2659
- self->alignment = alignment;
2660
- }
2661
-
2662
- /*
2663
- * We use an integer converted to char for backward compatibility with
2664
- * pickled arrays. Pickled arrays created with previous versions encoded
2665
- * flags as an int even though it actually was a char in the PyArray_Descr
2666
- * structure
2667
- */
2668
- dtypeflags = int_dtypeflags;
2669
- if (dtypeflags != int_dtypeflags) {
2670
- PyErr_Format(PyExc_ValueError,
2671
- "incorrect value for flags variable (overflow)");
2672
- return NULL;
2673
- }
2674
- else {
2675
- self->flags = dtypeflags;
2676
- }
2677
-
2678
- if (version < 3) {
2679
- self->flags = _descr_find_object(self);
2680
- }
2681
-
2682
- /*
2683
- * We have a borrowed reference to metadata so no need
2684
- * to alter reference count when throwing away Py_None.
2685
- */
2686
- if (metadata == Py_None) {
2687
- metadata = NULL;
2688
- }
2689
-
2690
- if (PyDataType_ISDATETIME(self) && (metadata != NULL)) {
2691
- PyObject *old_metadata, *errmsg;
2692
- PyArray_DatetimeMetaData temp_dt_data;
2693
-
2694
- if ((! PyTuple_Check(metadata)) || (PyTuple_Size(metadata) != 2)) {
2695
- errmsg = PyUString_FromString("Invalid datetime dtype (metadata, c_metadata): ");
2696
- PyUString_ConcatAndDel(&errmsg, PyObject_Repr(metadata));
2697
- PyErr_SetObject(PyExc_ValueError, errmsg);
2698
- Py_DECREF(errmsg);
2699
- return NULL;
2700
- }
2701
-
2702
- if (convert_datetime_metadata_tuple_to_datetime_metadata(
2703
- PyTuple_GET_ITEM(metadata, 1),
2704
- &temp_dt_data) < 0) {
2705
- return NULL;
2706
- }
2707
-
2708
- old_metadata = self->metadata;
2709
- self->metadata = PyTuple_GET_ITEM(metadata, 0);
2710
- memcpy((char *) &((PyArray_DatetimeDTypeMetaData *)self->c_metadata)->meta,
2711
- (char *) &temp_dt_data,
2712
- sizeof(PyArray_DatetimeMetaData));
2713
- Py_XINCREF(self->metadata);
2714
- Py_XDECREF(old_metadata);
2715
- }
2716
- else {
2717
- PyObject *old_metadata = self->metadata;
2718
- self->metadata = metadata;
2719
- Py_XINCREF(self->metadata);
2720
- Py_XDECREF(old_metadata);
2721
- }
2722
-
2723
- Py_INCREF(Py_None);
2724
- return Py_None;
2725
- }
2726
-
2727
- /*NUMPY_API
2728
- *
2729
- * Get type-descriptor from an object forcing alignment if possible
2730
- * None goes to DEFAULT type.
2731
- *
2732
- * any object with the .fields attribute and/or .itemsize attribute (if the
2733
- *.fields attribute does not give the total size -- i.e. a partial record
2734
- * naming). If itemsize is given it must be >= size computed from fields
2735
- *
2736
- * The .fields attribute must return a convertible dictionary if present.
2737
- * Result inherits from NPY_VOID.
2738
- */
2739
- NPY_NO_EXPORT int
2740
- PyArray_DescrAlignConverter(PyObject *obj, PyArray_Descr **at)
2741
- {
2742
- if (PyDict_Check(obj)) {
2743
- *at = _convert_from_dict(obj, 1);
2744
- }
2745
- else if (PyBytes_Check(obj)) {
2746
- *at = _convert_from_commastring(obj, 1);
2747
- }
2748
- else if (PyUnicode_Check(obj)) {
2749
- PyObject *tmp;
2750
- tmp = PyUnicode_AsASCIIString(obj);
2751
- *at = _convert_from_commastring(tmp, 1);
2752
- Py_DECREF(tmp);
2753
- }
2754
- else if (PyList_Check(obj)) {
2755
- *at = _convert_from_array_descr(obj, 1);
2756
- }
2757
- else {
2758
- return PyArray_DescrConverter(obj, at);
2759
- }
2760
- if (*at == NULL) {
2761
- if (!PyErr_Occurred()) {
2762
- PyErr_SetString(PyExc_ValueError,
2763
- "data-type-descriptor not understood");
2764
- }
2765
- return NPY_FAIL;
2766
- }
2767
- return NPY_SUCCEED;
2768
- }
2769
-
2770
- /*NUMPY_API
2771
- *
2772
- * Get type-descriptor from an object forcing alignment if possible
2773
- * None goes to NULL.
2774
- */
2775
- NPY_NO_EXPORT int
2776
- PyArray_DescrAlignConverter2(PyObject *obj, PyArray_Descr **at)
2777
- {
2778
- if (PyDict_Check(obj)) {
2779
- *at = _convert_from_dict(obj, 1);
2780
- }
2781
- else if (PyBytes_Check(obj)) {
2782
- *at = _convert_from_commastring(obj, 1);
2783
- }
2784
- else if (PyUnicode_Check(obj)) {
2785
- PyObject *tmp;
2786
- tmp = PyUnicode_AsASCIIString(obj);
2787
- *at = _convert_from_commastring(tmp, 1);
2788
- Py_DECREF(tmp);
2789
- }
2790
- else if (PyList_Check(obj)) {
2791
- *at = _convert_from_array_descr(obj, 1);
2792
- }
2793
- else {
2794
- return PyArray_DescrConverter2(obj, at);
2795
- }
2796
- if (*at == NULL) {
2797
- if (!PyErr_Occurred()) {
2798
- PyErr_SetString(PyExc_ValueError,
2799
- "data-type-descriptor not understood");
2800
- }
2801
- return NPY_FAIL;
2802
- }
2803
- return NPY_SUCCEED;
2804
- }
2805
-
2806
-
2807
-
2808
- /*NUMPY_API
2809
- *
2810
- * returns a copy of the PyArray_Descr structure with the byteorder
2811
- * altered:
2812
- * no arguments: The byteorder is swapped (in all subfields as well)
2813
- * single argument: The byteorder is forced to the given state
2814
- * (in all subfields as well)
2815
- *
2816
- * Valid states: ('big', '>') or ('little' or '<')
2817
- * ('native', or '=')
2818
- *
2819
- * If a descr structure with | is encountered it's own
2820
- * byte-order is not changed but any fields are:
2821
- *
2822
- *
2823
- * Deep bytorder change of a data-type descriptor
2824
- * *** Leaves reference count of self unchanged --- does not DECREF self ***
2825
- */
2826
- NPY_NO_EXPORT PyArray_Descr *
2827
- PyArray_DescrNewByteorder(PyArray_Descr *self, char newendian)
2828
- {
2829
- PyArray_Descr *new;
2830
- char endian;
2831
-
2832
- new = PyArray_DescrNew(self);
2833
- endian = new->byteorder;
2834
- if (endian != NPY_IGNORE) {
2835
- if (newendian == NPY_SWAP) {
2836
- /* swap byteorder */
2837
- if (PyArray_ISNBO(endian)) {
2838
- endian = NPY_OPPBYTE;
2839
- }
2840
- else {
2841
- endian = NPY_NATBYTE;
2842
- }
2843
- new->byteorder = endian;
2844
- }
2845
- else if (newendian != NPY_IGNORE) {
2846
- new->byteorder = newendian;
2847
- }
2848
- }
2849
- if (PyDataType_HASFIELDS(new)) {
2850
- PyObject *newfields;
2851
- PyObject *key, *value;
2852
- PyObject *newvalue;
2853
- PyObject *old;
2854
- PyArray_Descr *newdescr;
2855
- Py_ssize_t pos = 0;
2856
- int len, i;
2857
-
2858
- newfields = PyDict_New();
2859
- /* make new dictionary with replaced PyArray_Descr Objects */
2860
- while (PyDict_Next(self->fields, &pos, &key, &value)) {
2861
- if NPY_TITLE_KEY(key, value) {
2862
- continue;
2863
- }
2864
- if (!PyUString_Check(key) || !PyTuple_Check(value) ||
2865
- ((len=PyTuple_GET_SIZE(value)) < 2)) {
2866
- continue;
2867
- }
2868
- old = PyTuple_GET_ITEM(value, 0);
2869
- if (!PyArray_DescrCheck(old)) {
2870
- continue;
2871
- }
2872
- newdescr = PyArray_DescrNewByteorder(
2873
- (PyArray_Descr *)old, newendian);
2874
- if (newdescr == NULL) {
2875
- Py_DECREF(newfields); Py_DECREF(new);
2876
- return NULL;
2877
- }
2878
- newvalue = PyTuple_New(len);
2879
- PyTuple_SET_ITEM(newvalue, 0, (PyObject *)newdescr);
2880
- for (i = 1; i < len; i++) {
2881
- old = PyTuple_GET_ITEM(value, i);
2882
- Py_INCREF(old);
2883
- PyTuple_SET_ITEM(newvalue, i, old);
2884
- }
2885
- PyDict_SetItem(newfields, key, newvalue);
2886
- Py_DECREF(newvalue);
2887
- }
2888
- Py_DECREF(new->fields);
2889
- new->fields = newfields;
2890
- }
2891
- if (PyDataType_HASSUBARRAY(new)) {
2892
- Py_DECREF(new->subarray->base);
2893
- new->subarray->base = PyArray_DescrNewByteorder(
2894
- self->subarray->base, newendian);
2895
- }
2896
- return new;
2897
- }
2898
-
2899
-
2900
- static PyObject *
2901
- arraydescr_newbyteorder(PyArray_Descr *self, PyObject *args)
2902
- {
2903
- char endian=NPY_SWAP;
2904
-
2905
- if (!PyArg_ParseTuple(args, "|O&", PyArray_ByteorderConverter,
2906
- &endian)) {
2907
- return NULL;
2908
- }
2909
- return (PyObject *)PyArray_DescrNewByteorder(self, endian);
2910
- }
2911
-
2912
- static PyMethodDef arraydescr_methods[] = {
2913
- /* for pickling */
2914
- {"__reduce__",
2915
- (PyCFunction)arraydescr_reduce,
2916
- METH_VARARGS, NULL},
2917
- {"__setstate__",
2918
- (PyCFunction)arraydescr_setstate,
2919
- METH_VARARGS, NULL},
2920
- {"newbyteorder",
2921
- (PyCFunction)arraydescr_newbyteorder,
2922
- METH_VARARGS, NULL},
2923
- {NULL, NULL, 0, NULL} /* sentinel */
2924
- };
2925
-
2926
- /*
2927
- * Checks whether the structured data type in 'dtype'
2928
- * has a simple layout, where all the fields are in order,
2929
- * and follow each other with no alignment padding.
2930
- *
2931
- * When this returns true, the dtype can be reconstructed
2932
- * from a list of the field names and dtypes with no additional
2933
- * dtype parameters.
2934
- *
2935
- * Returns 1 if it has a simple layout, 0 otherwise.
2936
- */
2937
- static int
2938
- is_dtype_struct_simple_unaligned_layout(PyArray_Descr *dtype)
2939
- {
2940
- PyObject *names, *fields, *key, *tup, *title;
2941
- Py_ssize_t i, names_size;
2942
- PyArray_Descr *fld_dtype;
2943
- int fld_offset;
2944
- npy_intp total_offset;
2945
-
2946
- /* Get some properties from the dtype */
2947
- names = dtype->names;
2948
- names_size = PyTuple_GET_SIZE(names);
2949
- fields = dtype->fields;
2950
-
2951
- /* Start at offset zero */
2952
- total_offset = 0;
2953
-
2954
- for (i = 0; i < names_size; ++i) {
2955
- key = PyTuple_GET_ITEM(names, i);
2956
- if (key == NULL) {
2957
- return 0;
2958
- }
2959
- tup = PyDict_GetItem(fields, key);
2960
- if (tup == NULL) {
2961
- return 0;
2962
- }
2963
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld_dtype, &fld_offset, &title)) {
2964
- PyErr_Clear();
2965
- return 0;
2966
- }
2967
- /* If this field doesn't follow the pattern, not a simple layout */
2968
- if (total_offset != fld_offset) {
2969
- return 0;
2970
- }
2971
- /* Get the next offset */
2972
- total_offset += fld_dtype->elsize;
2973
- }
2974
-
2975
- /*
2976
- * If the itemsize doesn't match the final offset, it's
2977
- * not a simple layout.
2978
- */
2979
- if (total_offset != dtype->elsize) {
2980
- return 0;
2981
- }
2982
-
2983
- /* It's a simple layout, since all the above tests passed */
2984
- return 1;
2985
- }
2986
-
2987
- /*
2988
- * Returns a string representation of a structured array,
2989
- * in a list format.
2990
- */
2991
- static PyObject *
2992
- arraydescr_struct_list_str(PyArray_Descr *dtype)
2993
- {
2994
- PyObject *names, *key, *fields, *ret, *tmp, *tup, *title;
2995
- Py_ssize_t i, names_size;
2996
- PyArray_Descr *fld_dtype;
2997
- int fld_offset;
2998
-
2999
- names = dtype->names;
3000
- names_size = PyTuple_GET_SIZE(names);
3001
- fields = dtype->fields;
3002
-
3003
- /* Build up a string to make the list */
3004
-
3005
- /* Go through all the names */
3006
- ret = PyUString_FromString("[");
3007
- for (i = 0; i < names_size; ++i) {
3008
- key = PyTuple_GET_ITEM(names, i);
3009
- tup = PyDict_GetItem(fields, key);
3010
- if (tup == NULL) {
3011
- return 0;
3012
- }
3013
- title = NULL;
3014
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld_dtype, &fld_offset, &title)) {
3015
- PyErr_Clear();
3016
- return 0;
3017
- }
3018
- PyUString_ConcatAndDel(&ret, PyUString_FromString("("));
3019
- /* Check for whether to do titles as well */
3020
- if (title != NULL && title != Py_None) {
3021
- PyUString_ConcatAndDel(&ret, PyUString_FromString("("));
3022
- PyUString_ConcatAndDel(&ret, PyObject_Repr(title));
3023
- PyUString_ConcatAndDel(&ret, PyUString_FromString(", "));
3024
- PyUString_ConcatAndDel(&ret, PyObject_Repr(key));
3025
- PyUString_ConcatAndDel(&ret, PyUString_FromString("), "));
3026
- }
3027
- else {
3028
- PyUString_ConcatAndDel(&ret, PyObject_Repr(key));
3029
- PyUString_ConcatAndDel(&ret, PyUString_FromString(", "));
3030
- }
3031
- /* Special case subarray handling here */
3032
- if (PyDataType_HASSUBARRAY(fld_dtype)) {
3033
- tmp = arraydescr_construction_repr(
3034
- fld_dtype->subarray->base, 0, 1);
3035
- PyUString_ConcatAndDel(&ret, tmp);
3036
- PyUString_ConcatAndDel(&ret, PyUString_FromString(", "));
3037
- PyUString_ConcatAndDel(&ret,
3038
- PyObject_Str(fld_dtype->subarray->shape));
3039
- }
3040
- else {
3041
- tmp = arraydescr_construction_repr(fld_dtype, 0, 1);
3042
- PyUString_ConcatAndDel(&ret, tmp);
3043
- }
3044
- PyUString_ConcatAndDel(&ret, PyUString_FromString(")"));
3045
- if (i != names_size - 1) {
3046
- PyUString_ConcatAndDel(&ret, PyUString_FromString(", "));
3047
- }
3048
- }
3049
- PyUString_ConcatAndDel(&ret, PyUString_FromString("]"));
3050
-
3051
- return ret;
3052
- }
3053
-
3054
- /*
3055
- * Returns a string representation of a structured array,
3056
- * in a dict format.
3057
- */
3058
- static PyObject *
3059
- arraydescr_struct_dict_str(PyArray_Descr *dtype, int includealignedflag)
3060
- {
3061
- PyObject *names, *key, *fields, *ret, *tmp, *tup, *title;
3062
- Py_ssize_t i, names_size;
3063
- PyArray_Descr *fld_dtype;
3064
- int fld_offset, has_titles;
3065
-
3066
- names = dtype->names;
3067
- names_size = PyTuple_GET_SIZE(names);
3068
- fields = dtype->fields;
3069
- has_titles = 0;
3070
-
3071
- /* Build up a string to make the dictionary */
3072
-
3073
- /* First, the names */
3074
- ret = PyUString_FromString("{'names':[");
3075
- for (i = 0; i < names_size; ++i) {
3076
- key = PyTuple_GET_ITEM(names, i);
3077
- PyUString_ConcatAndDel(&ret, PyObject_Repr(key));
3078
- if (i != names_size - 1) {
3079
- PyUString_ConcatAndDel(&ret, PyUString_FromString(","));
3080
- }
3081
- }
3082
- /* Second, the formats */
3083
- PyUString_ConcatAndDel(&ret, PyUString_FromString("], 'formats':["));
3084
- for (i = 0; i < names_size; ++i) {
3085
- key = PyTuple_GET_ITEM(names, i);
3086
- tup = PyDict_GetItem(fields, key);
3087
- if (tup == NULL) {
3088
- return 0;
3089
- }
3090
- title = NULL;
3091
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld_dtype, &fld_offset, &title)) {
3092
- PyErr_Clear();
3093
- return 0;
3094
- }
3095
- /* Check for whether to do titles as well */
3096
- if (title != NULL && title != Py_None) {
3097
- has_titles = 1;
3098
- }
3099
- tmp = arraydescr_construction_repr(fld_dtype, 0, 1);
3100
- PyUString_ConcatAndDel(&ret, tmp);
3101
- if (i != names_size - 1) {
3102
- PyUString_ConcatAndDel(&ret, PyUString_FromString(","));
3103
- }
3104
- }
3105
- /* Third, the offsets */
3106
- PyUString_ConcatAndDel(&ret, PyUString_FromString("], 'offsets':["));
3107
- for (i = 0; i < names_size; ++i) {
3108
- key = PyTuple_GET_ITEM(names, i);
3109
- tup = PyDict_GetItem(fields, key);
3110
- if (tup == NULL) {
3111
- return 0;
3112
- }
3113
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld_dtype, &fld_offset, &title)) {
3114
- PyErr_Clear();
3115
- return 0;
3116
- }
3117
- PyUString_ConcatAndDel(&ret, PyUString_FromFormat("%d", fld_offset));
3118
- if (i != names_size - 1) {
3119
- PyUString_ConcatAndDel(&ret, PyUString_FromString(","));
3120
- }
3121
- }
3122
- /* Fourth, the titles */
3123
- if (has_titles) {
3124
- PyUString_ConcatAndDel(&ret, PyUString_FromString("], 'titles':["));
3125
- for (i = 0; i < names_size; ++i) {
3126
- key = PyTuple_GET_ITEM(names, i);
3127
- tup = PyDict_GetItem(fields, key);
3128
- if (tup == NULL) {
3129
- return 0;
3130
- }
3131
- title = Py_None;
3132
- if (!PyArg_ParseTuple(tup, "Oi|O", &fld_dtype,
3133
- &fld_offset, &title)) {
3134
- PyErr_Clear();
3135
- return 0;
3136
- }
3137
- PyUString_ConcatAndDel(&ret, PyObject_Repr(title));
3138
- if (i != names_size - 1) {
3139
- PyUString_ConcatAndDel(&ret, PyUString_FromString(","));
3140
- }
3141
- }
3142
- }
3143
- if (includealignedflag && (dtype->flags&NPY_ALIGNED_STRUCT)) {
3144
- /* Finally, the itemsize/itemsize and aligned flag */
3145
- PyUString_ConcatAndDel(&ret,
3146
- PyUString_FromFormat("], 'itemsize':%d, 'aligned':True}",
3147
- (int)dtype->elsize));
3148
- }
3149
- else {
3150
- /* Finally, the itemsize/itemsize*/
3151
- PyUString_ConcatAndDel(&ret,
3152
- PyUString_FromFormat("], 'itemsize':%d}", (int)dtype->elsize));
3153
- }
3154
-
3155
- return ret;
3156
- }
3157
-
3158
- /* Produces a string representation for a structured dtype */
3159
- static PyObject *
3160
- arraydescr_struct_str(PyArray_Descr *dtype, int includealignflag)
3161
- {
3162
- /*
3163
- * The list str representation can't include the 'align=' flag,
3164
- * so if it is requested and the struct has the aligned flag set,
3165
- * we must use the dict str instead.
3166
- */
3167
- if (!(includealignflag && (dtype->flags&NPY_ALIGNED_STRUCT)) &&
3168
- is_dtype_struct_simple_unaligned_layout(dtype)) {
3169
- return arraydescr_struct_list_str(dtype);
3170
- }
3171
- else {
3172
- return arraydescr_struct_dict_str(dtype, includealignflag);
3173
- }
3174
- }
3175
-
3176
- /* Produces a string representation for a subarray dtype */
3177
- static PyObject *
3178
- arraydescr_subarray_str(PyArray_Descr *dtype)
3179
- {
3180
- PyObject *p, *ret;
3181
-
3182
- ret = PyUString_FromString("(");
3183
- p = arraydescr_construction_repr(dtype->subarray->base, 0, 1);
3184
- PyUString_ConcatAndDel(&ret, p);
3185
- PyUString_ConcatAndDel(&ret, PyUString_FromString(", "));
3186
- PyUString_ConcatAndDel(&ret, PyObject_Str(dtype->subarray->shape));
3187
- PyUString_ConcatAndDel(&ret, PyUString_FromString(")"));
3188
-
3189
- return ret;
3190
- }
3191
-
3192
- static PyObject *
3193
- arraydescr_str(PyArray_Descr *dtype)
3194
- {
3195
- PyObject *sub;
3196
-
3197
- if (PyDataType_HASFIELDS(dtype)) {
3198
- sub = arraydescr_struct_str(dtype, 1);
3199
- }
3200
- else if (PyDataType_HASSUBARRAY(dtype)) {
3201
- sub = arraydescr_subarray_str(dtype);
3202
- }
3203
- else if (PyDataType_ISFLEXIBLE(dtype) || !PyArray_ISNBO(dtype->byteorder)) {
3204
- sub = arraydescr_protocol_typestr_get(dtype);
3205
- }
3206
- else {
3207
- sub = arraydescr_typename_get(dtype);
3208
- }
3209
- return sub;
3210
- }
3211
-
3212
- /*
3213
- * The dtype repr function specifically for structured arrays.
3214
- */
3215
- static PyObject *
3216
- arraydescr_struct_repr(PyArray_Descr *dtype)
3217
- {
3218
- PyObject *sub, *s;
3219
-
3220
- s = PyUString_FromString("dtype(");
3221
- sub = arraydescr_struct_str(dtype, 0);
3222
- if (sub == NULL) {
3223
- return NULL;
3224
- }
3225
-
3226
- PyUString_ConcatAndDel(&s, sub);
3227
-
3228
- /* If it's an aligned structure, add the align=True parameter */
3229
- if (dtype->flags&NPY_ALIGNED_STRUCT) {
3230
- PyUString_ConcatAndDel(&s, PyUString_FromString(", align=True"));
3231
- }
3232
-
3233
- PyUString_ConcatAndDel(&s, PyUString_FromString(")"));
3234
- return s;
3235
- }
3236
-
3237
- /* See descriptor.h for documentation */
3238
- NPY_NO_EXPORT PyObject *
3239
- arraydescr_construction_repr(PyArray_Descr *dtype, int includealignflag,
3240
- int shortrepr)
3241
- {
3242
- PyObject *ret;
3243
- PyArray_DatetimeMetaData *meta;
3244
- char byteorder[2];
3245
-
3246
- if (PyDataType_HASFIELDS(dtype)) {
3247
- return arraydescr_struct_str(dtype, includealignflag);
3248
- }
3249
- else if (PyDataType_HASSUBARRAY(dtype)) {
3250
- return arraydescr_subarray_str(dtype);
3251
- }
3252
-
3253
- /* Normalize byteorder to '<' or '>' */
3254
- switch (dtype->byteorder) {
3255
- case NPY_NATIVE:
3256
- byteorder[0] = NPY_NATBYTE;
3257
- break;
3258
- case NPY_SWAP:
3259
- byteorder[0] = NPY_OPPBYTE;
3260
- break;
3261
- case NPY_IGNORE:
3262
- byteorder[0] = '\0';
3263
- break;
3264
- default:
3265
- byteorder[0] = dtype->byteorder;
3266
- break;
3267
- }
3268
- byteorder[1] = '\0';
3269
-
3270
- /* Handle booleans, numbers, and custom dtypes */
3271
- if (dtype->type_num == NPY_BOOL) {
3272
- if (shortrepr) {
3273
- return PyUString_FromString("'?'");
3274
- }
3275
- else {
3276
- return PyUString_FromString("'bool'");
3277
- }
3278
- }
3279
- else if (PyTypeNum_ISNUMBER(dtype->type_num)) {
3280
- /* Short repr with endianness, like '<f8' */
3281
- if (shortrepr || (dtype->byteorder != NPY_NATIVE &&
3282
- dtype->byteorder != NPY_IGNORE)) {
3283
- return PyUString_FromFormat("'%s%c%d'", byteorder,
3284
- (int)dtype->kind, dtype->elsize);
3285
- }
3286
- /* Longer repr, like 'float64' */
3287
- else {
3288
- char *kindstr;
3289
- switch (dtype->kind) {
3290
- case 'u':
3291
- kindstr = "uint";
3292
- break;
3293
- case 'i':
3294
- kindstr = "int";
3295
- break;
3296
- case 'f':
3297
- kindstr = "float";
3298
- break;
3299
- case 'c':
3300
- kindstr = "complex";
3301
- break;
3302
- default:
3303
- PyErr_Format(PyExc_RuntimeError,
3304
- "internal dtype repr error, unknown kind '%c'",
3305
- (int)dtype->kind);
3306
- return NULL;
3307
- }
3308
- return PyUString_FromFormat("'%s%d'", kindstr, 8*dtype->elsize);
3309
- }
3310
- }
3311
- else if (PyTypeNum_ISUSERDEF(dtype->type_num)) {
3312
- char *s = strrchr(dtype->typeobj->tp_name, '.');
3313
- if (s == NULL) {
3314
- return PyUString_FromString(dtype->typeobj->tp_name);
3315
- }
3316
- else {
3317
- return PyUString_FromStringAndSize(s + 1, strlen(s) - 1);
3318
- }
3319
- }
3320
-
3321
- /* All the rest which don't fit in the same pattern */
3322
- switch (dtype->type_num) {
3323
- /*
3324
- * The object reference may be different sizes on different
3325
- * platforms, so it should never include the itemsize here.
3326
- */
3327
- case NPY_OBJECT:
3328
- return PyUString_FromString("'O'");
3329
-
3330
- case NPY_STRING:
3331
- if (dtype->elsize == 0) {
3332
- return PyUString_FromString("'S'");
3333
- }
3334
- else {
3335
- return PyUString_FromFormat("'S%d'", (int)dtype->elsize);
3336
- }
3337
-
3338
- case NPY_UNICODE:
3339
- if (dtype->elsize == 0) {
3340
- return PyUString_FromFormat("'%sU'", byteorder);
3341
- }
3342
- else {
3343
- return PyUString_FromFormat("'%sU%d'", byteorder,
3344
- (int)dtype->elsize / 4);
3345
- }
3346
-
3347
- case NPY_VOID:
3348
- if (dtype->elsize == 0) {
3349
- return PyUString_FromString("'V'");
3350
- }
3351
- else {
3352
- return PyUString_FromFormat("'V%d'", (int)dtype->elsize);
3353
- }
3354
-
3355
- case NPY_DATETIME:
3356
- meta = get_datetime_metadata_from_dtype(dtype);
3357
- if (meta == NULL) {
3358
- return NULL;
3359
- }
3360
- ret = PyUString_FromFormat("'%sM8", byteorder);
3361
- ret = append_metastr_to_string(meta, 0, ret);
3362
- PyUString_ConcatAndDel(&ret, PyUString_FromString("'"));
3363
- return ret;
3364
-
3365
- case NPY_TIMEDELTA:
3366
- meta = get_datetime_metadata_from_dtype(dtype);
3367
- if (meta == NULL) {
3368
- return NULL;
3369
- }
3370
- ret = PyUString_FromFormat("'%sm8", byteorder);
3371
- ret = append_metastr_to_string(meta, 0, ret);
3372
- PyUString_ConcatAndDel(&ret, PyUString_FromString("'"));
3373
- return ret;
3374
-
3375
- default:
3376
- PyErr_SetString(PyExc_RuntimeError, "Internal error: NumPy dtype "
3377
- "unrecognized type number");
3378
- return NULL;
3379
- }
3380
- }
3381
-
3382
- /*
3383
- * The general dtype repr function.
3384
- */
3385
- static PyObject *
3386
- arraydescr_repr(PyArray_Descr *dtype)
3387
- {
3388
- PyObject *ret;
3389
-
3390
- if (PyDataType_HASFIELDS(dtype)) {
3391
- return arraydescr_struct_repr(dtype);
3392
- }
3393
- else {
3394
- ret = PyUString_FromString("dtype(");
3395
- PyUString_ConcatAndDel(&ret,
3396
- arraydescr_construction_repr(dtype, 1, 0));
3397
- PyUString_ConcatAndDel(&ret, PyUString_FromString(")"));
3398
- return ret;
3399
- }
3400
- }
3401
-
3402
- static PyObject *
3403
- arraydescr_richcompare(PyArray_Descr *self, PyObject *other, int cmp_op)
3404
- {
3405
- PyArray_Descr *new = NULL;
3406
- PyObject *result = Py_NotImplemented;
3407
- if (!PyArray_DescrCheck(other)) {
3408
- if (PyArray_DescrConverter(other, &new) == NPY_FAIL) {
3409
- return NULL;
3410
- }
3411
- }
3412
- else {
3413
- new = (PyArray_Descr *)other;
3414
- Py_INCREF(new);
3415
- }
3416
- switch (cmp_op) {
3417
- case Py_LT:
3418
- if (!PyArray_EquivTypes(self, new) && PyArray_CanCastTo(self, new)) {
3419
- result = Py_True;
3420
- }
3421
- else {
3422
- result = Py_False;
3423
- }
3424
- break;
3425
- case Py_LE:
3426
- if (PyArray_CanCastTo(self, new)) {
3427
- result = Py_True;
3428
- }
3429
- else {
3430
- result = Py_False;
3431
- }
3432
- break;
3433
- case Py_EQ:
3434
- if (PyArray_EquivTypes(self, new)) {
3435
- result = Py_True;
3436
- }
3437
- else {
3438
- result = Py_False;
3439
- }
3440
- break;
3441
- case Py_NE:
3442
- if (PyArray_EquivTypes(self, new))
3443
- result = Py_False;
3444
- else
3445
- result = Py_True;
3446
- break;
3447
- case Py_GT:
3448
- if (!PyArray_EquivTypes(self, new) && PyArray_CanCastTo(new, self)) {
3449
- result = Py_True;
3450
- }
3451
- else {
3452
- result = Py_False;
3453
- }
3454
- break;
3455
- case Py_GE:
3456
- if (PyArray_CanCastTo(new, self)) {
3457
- result = Py_True;
3458
- }
3459
- else {
3460
- result = Py_False;
3461
- }
3462
- break;
3463
- default:
3464
- result = Py_NotImplemented;
3465
- }
3466
-
3467
- Py_XDECREF(new);
3468
- Py_INCREF(result);
3469
- return result;
3470
- }
3471
-
3472
- /*************************************************************************
3473
- **************** Implement Mapping Protocol ***************************
3474
- *************************************************************************/
3475
-
3476
- static Py_ssize_t
3477
- descr_length(PyObject *self0)
3478
- {
3479
- PyArray_Descr *self = (PyArray_Descr *)self0;
3480
-
3481
- if (PyDataType_HASFIELDS(self)) {
3482
- return PyTuple_GET_SIZE(self->names);
3483
- }
3484
- else {
3485
- return 0;
3486
- }
3487
- }
3488
-
3489
- static PyObject *
3490
- descr_repeat(PyObject *self, Py_ssize_t length)
3491
- {
3492
- PyObject *tup;
3493
- PyArray_Descr *new;
3494
- if (length < 0) {
3495
- return PyErr_Format(PyExc_ValueError,
3496
- "Array length must be >= 0, not %"NPY_INTP_FMT, (npy_intp)length);
3497
- }
3498
- tup = Py_BuildValue("O" NPY_SSIZE_T_PYFMT, self, length);
3499
- if (tup == NULL) {
3500
- return NULL;
3501
- }
3502
- PyArray_DescrConverter(tup, &new);
3503
- Py_DECREF(tup);
3504
- return (PyObject *)new;
3505
- }
3506
-
3507
- static PyObject *
3508
- descr_subscript(PyArray_Descr *self, PyObject *op)
3509
- {
3510
- PyObject *retval;
3511
-
3512
- if (!PyDataType_HASFIELDS(self)) {
3513
- PyObject *astr = arraydescr_str(self);
3514
- #if defined(NPY_PY3K)
3515
- PyObject *bstr = PyUnicode_AsUnicodeEscapeString(astr);
3516
- Py_DECREF(astr);
3517
- astr = bstr;
3518
- #endif
3519
- PyErr_Format(PyExc_KeyError,
3520
- "There are no fields in dtype %s.", PyBytes_AsString(astr));
3521
- Py_DECREF(astr);
3522
- return NULL;
3523
- }
3524
- #if defined(NPY_PY3K)
3525
- if (PyUString_Check(op)) {
3526
- #else
3527
- if (PyUString_Check(op) || PyUnicode_Check(op)) {
3528
- #endif
3529
- PyObject *obj = PyDict_GetItem(self->fields, op);
3530
- PyObject *descr;
3531
- PyObject *s;
3532
-
3533
- if (obj == NULL) {
3534
- if (PyUnicode_Check(op)) {
3535
- s = PyUnicode_AsUnicodeEscapeString(op);
3536
- }
3537
- else {
3538
- s = op;
3539
- }
3540
-
3541
- PyErr_Format(PyExc_KeyError,
3542
- "Field named \'%s\' not found.", PyBytes_AsString(s));
3543
- if (s != op) {
3544
- Py_DECREF(s);
3545
- }
3546
- return NULL;
3547
- }
3548
- descr = PyTuple_GET_ITEM(obj, 0);
3549
- Py_INCREF(descr);
3550
- retval = descr;
3551
- }
3552
- else if (PyInt_Check(op)) {
3553
- PyObject *name;
3554
- int size = PyTuple_GET_SIZE(self->names);
3555
- int value = PyArray_PyIntAsInt(op);
3556
- int orig_value = value;
3557
-
3558
- if (PyErr_Occurred()) {
3559
- return NULL;
3560
- }
3561
- if (value < 0) {
3562
- value += size;
3563
- }
3564
- if (value < 0 || value >= size) {
3565
- PyErr_Format(PyExc_IndexError,
3566
- "Field index %d out of range.", orig_value);
3567
- return NULL;
3568
- }
3569
- name = PyTuple_GET_ITEM(self->names, value);
3570
- retval = descr_subscript(self, name);
3571
- }
3572
- else {
3573
- PyErr_SetString(PyExc_ValueError,
3574
- "Field key must be an integer, string, or unicode.");
3575
- return NULL;
3576
- }
3577
- return retval;
3578
- }
3579
-
3580
- static PySequenceMethods descr_as_sequence = {
3581
- descr_length,
3582
- (binaryfunc)NULL,
3583
- descr_repeat,
3584
- NULL, NULL,
3585
- NULL, /* sq_ass_item */
3586
- NULL, /* ssizessizeobjargproc sq_ass_slice */
3587
- 0, /* sq_contains */
3588
- 0, /* sq_inplace_concat */
3589
- 0, /* sq_inplace_repeat */
3590
- };
3591
-
3592
- static PyMappingMethods descr_as_mapping = {
3593
- descr_length, /* mp_length*/
3594
- (binaryfunc)descr_subscript, /* mp_subscript*/
3595
- (objobjargproc)NULL, /* mp_ass_subscript*/
3596
- };
3597
-
3598
- /****************** End of Mapping Protocol ******************************/
3599
-
3600
- NPY_NO_EXPORT PyTypeObject PyArrayDescr_Type = {
3601
- #if defined(NPY_PY3K)
3602
- PyVarObject_HEAD_INIT(NULL, 0)
3603
- #else
3604
- PyObject_HEAD_INIT(NULL)
3605
- 0, /* ob_size */
3606
- #endif
3607
- "numpy.dtype", /* tp_name */
3608
- sizeof(PyArray_Descr), /* tp_basicsize */
3609
- 0, /* tp_itemsize */
3610
- /* methods */
3611
- (destructor)arraydescr_dealloc, /* tp_dealloc */
3612
- 0, /* tp_print */
3613
- 0, /* tp_getattr */
3614
- 0, /* tp_setattr */
3615
- #if defined(NPY_PY3K)
3616
- (void *)0, /* tp_reserved */
3617
- #else
3618
- 0, /* tp_compare */
3619
- #endif
3620
- (reprfunc)arraydescr_repr, /* tp_repr */
3621
- 0, /* tp_as_number */
3622
- &descr_as_sequence, /* tp_as_sequence */
3623
- &descr_as_mapping, /* tp_as_mapping */
3624
- 0, /* tp_hash */
3625
- 0, /* tp_call */
3626
- (reprfunc)arraydescr_str, /* tp_str */
3627
- 0, /* tp_getattro */
3628
- 0, /* tp_setattro */
3629
- 0, /* tp_as_buffer */
3630
- Py_TPFLAGS_DEFAULT, /* tp_flags */
3631
- 0, /* tp_doc */
3632
- 0, /* tp_traverse */
3633
- 0, /* tp_clear */
3634
- (richcmpfunc)arraydescr_richcompare, /* tp_richcompare */
3635
- 0, /* tp_weaklistoffset */
3636
- 0, /* tp_iter */
3637
- 0, /* tp_iternext */
3638
- arraydescr_methods, /* tp_methods */
3639
- arraydescr_members, /* tp_members */
3640
- arraydescr_getsets, /* tp_getset */
3641
- 0, /* tp_base */
3642
- 0, /* tp_dict */
3643
- 0, /* tp_descr_get */
3644
- 0, /* tp_descr_set */
3645
- 0, /* tp_dictoffset */
3646
- 0, /* tp_init */
3647
- 0, /* tp_alloc */
3648
- arraydescr_new, /* tp_new */
3649
- 0, /* tp_free */
3650
- 0, /* tp_is_gc */
3651
- 0, /* tp_bases */
3652
- 0, /* tp_mro */
3653
- 0, /* tp_cache */
3654
- 0, /* tp_subclasses */
3655
- 0, /* tp_weaklist */
3656
- 0, /* tp_del */
3657
- 0, /* tp_version_tag */
3658
- };