numpy 2.3.5__cp313-cp313-macosx_14_0_arm64.whl

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

Potentially problematic release.


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

Files changed (897) hide show
  1. numpy/__config__.py +170 -0
  2. numpy/__config__.pyi +102 -0
  3. numpy/__init__.cython-30.pxd +1241 -0
  4. numpy/__init__.pxd +1154 -0
  5. numpy/__init__.py +945 -0
  6. numpy/__init__.pyi +6147 -0
  7. numpy/_array_api_info.py +346 -0
  8. numpy/_array_api_info.pyi +207 -0
  9. numpy/_configtool.py +39 -0
  10. numpy/_configtool.pyi +1 -0
  11. numpy/_core/__init__.py +186 -0
  12. numpy/_core/__init__.pyi +2 -0
  13. numpy/_core/_add_newdocs.py +6967 -0
  14. numpy/_core/_add_newdocs.pyi +3 -0
  15. numpy/_core/_add_newdocs_scalars.py +390 -0
  16. numpy/_core/_add_newdocs_scalars.pyi +16 -0
  17. numpy/_core/_asarray.py +134 -0
  18. numpy/_core/_asarray.pyi +41 -0
  19. numpy/_core/_dtype.py +366 -0
  20. numpy/_core/_dtype.pyi +58 -0
  21. numpy/_core/_dtype_ctypes.py +120 -0
  22. numpy/_core/_dtype_ctypes.pyi +83 -0
  23. numpy/_core/_exceptions.py +162 -0
  24. numpy/_core/_exceptions.pyi +55 -0
  25. numpy/_core/_internal.py +958 -0
  26. numpy/_core/_internal.pyi +72 -0
  27. numpy/_core/_machar.py +355 -0
  28. numpy/_core/_machar.pyi +55 -0
  29. numpy/_core/_methods.py +255 -0
  30. numpy/_core/_methods.pyi +22 -0
  31. numpy/_core/_multiarray_tests.cpython-313-darwin.so +0 -0
  32. numpy/_core/_multiarray_umath.cpython-313-darwin.so +0 -0
  33. numpy/_core/_operand_flag_tests.cpython-313-darwin.so +0 -0
  34. numpy/_core/_rational_tests.cpython-313-darwin.so +0 -0
  35. numpy/_core/_simd.cpython-313-darwin.so +0 -0
  36. numpy/_core/_simd.pyi +25 -0
  37. numpy/_core/_string_helpers.py +100 -0
  38. numpy/_core/_string_helpers.pyi +12 -0
  39. numpy/_core/_struct_ufunc_tests.cpython-313-darwin.so +0 -0
  40. numpy/_core/_type_aliases.py +119 -0
  41. numpy/_core/_type_aliases.pyi +97 -0
  42. numpy/_core/_ufunc_config.py +491 -0
  43. numpy/_core/_ufunc_config.pyi +78 -0
  44. numpy/_core/_umath_tests.cpython-313-darwin.so +0 -0
  45. numpy/_core/arrayprint.py +1775 -0
  46. numpy/_core/arrayprint.pyi +238 -0
  47. numpy/_core/cversions.py +13 -0
  48. numpy/_core/defchararray.py +1427 -0
  49. numpy/_core/defchararray.pyi +1135 -0
  50. numpy/_core/einsumfunc.py +1498 -0
  51. numpy/_core/einsumfunc.pyi +184 -0
  52. numpy/_core/fromnumeric.py +4269 -0
  53. numpy/_core/fromnumeric.pyi +1750 -0
  54. numpy/_core/function_base.py +545 -0
  55. numpy/_core/function_base.pyi +278 -0
  56. numpy/_core/getlimits.py +748 -0
  57. numpy/_core/getlimits.pyi +3 -0
  58. numpy/_core/include/numpy/__multiarray_api.c +376 -0
  59. numpy/_core/include/numpy/__multiarray_api.h +1628 -0
  60. numpy/_core/include/numpy/__ufunc_api.c +54 -0
  61. numpy/_core/include/numpy/__ufunc_api.h +341 -0
  62. numpy/_core/include/numpy/_neighborhood_iterator_imp.h +90 -0
  63. numpy/_core/include/numpy/_numpyconfig.h +33 -0
  64. numpy/_core/include/numpy/_public_dtype_api_table.h +86 -0
  65. numpy/_core/include/numpy/arrayobject.h +7 -0
  66. numpy/_core/include/numpy/arrayscalars.h +196 -0
  67. numpy/_core/include/numpy/dtype_api.h +480 -0
  68. numpy/_core/include/numpy/halffloat.h +70 -0
  69. numpy/_core/include/numpy/ndarrayobject.h +304 -0
  70. numpy/_core/include/numpy/ndarraytypes.h +1950 -0
  71. numpy/_core/include/numpy/npy_2_compat.h +249 -0
  72. numpy/_core/include/numpy/npy_2_complexcompat.h +28 -0
  73. numpy/_core/include/numpy/npy_3kcompat.h +374 -0
  74. numpy/_core/include/numpy/npy_common.h +977 -0
  75. numpy/_core/include/numpy/npy_cpu.h +124 -0
  76. numpy/_core/include/numpy/npy_endian.h +78 -0
  77. numpy/_core/include/numpy/npy_math.h +602 -0
  78. numpy/_core/include/numpy/npy_no_deprecated_api.h +20 -0
  79. numpy/_core/include/numpy/npy_os.h +42 -0
  80. numpy/_core/include/numpy/numpyconfig.h +182 -0
  81. numpy/_core/include/numpy/random/LICENSE.txt +21 -0
  82. numpy/_core/include/numpy/random/bitgen.h +20 -0
  83. numpy/_core/include/numpy/random/distributions.h +209 -0
  84. numpy/_core/include/numpy/random/libdivide.h +2079 -0
  85. numpy/_core/include/numpy/ufuncobject.h +343 -0
  86. numpy/_core/include/numpy/utils.h +37 -0
  87. numpy/_core/lib/libnpymath.a +0 -0
  88. numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
  89. numpy/_core/lib/npy-pkg-config/npymath.ini +20 -0
  90. numpy/_core/lib/pkgconfig/numpy.pc +7 -0
  91. numpy/_core/memmap.py +363 -0
  92. numpy/_core/memmap.pyi +3 -0
  93. numpy/_core/multiarray.py +1762 -0
  94. numpy/_core/multiarray.pyi +1285 -0
  95. numpy/_core/numeric.py +2760 -0
  96. numpy/_core/numeric.pyi +882 -0
  97. numpy/_core/numerictypes.py +633 -0
  98. numpy/_core/numerictypes.pyi +197 -0
  99. numpy/_core/overrides.py +183 -0
  100. numpy/_core/overrides.pyi +48 -0
  101. numpy/_core/printoptions.py +32 -0
  102. numpy/_core/printoptions.pyi +28 -0
  103. numpy/_core/records.py +1089 -0
  104. numpy/_core/records.pyi +333 -0
  105. numpy/_core/shape_base.py +998 -0
  106. numpy/_core/shape_base.pyi +175 -0
  107. numpy/_core/strings.py +1829 -0
  108. numpy/_core/strings.pyi +511 -0
  109. numpy/_core/tests/_locales.py +72 -0
  110. numpy/_core/tests/_natype.py +205 -0
  111. numpy/_core/tests/data/astype_copy.pkl +0 -0
  112. numpy/_core/tests/data/generate_umath_validation_data.cpp +170 -0
  113. numpy/_core/tests/data/recarray_from_file.fits +0 -0
  114. numpy/_core/tests/data/umath-validation-set-README.txt +15 -0
  115. numpy/_core/tests/data/umath-validation-set-arccos.csv +1429 -0
  116. numpy/_core/tests/data/umath-validation-set-arccosh.csv +1429 -0
  117. numpy/_core/tests/data/umath-validation-set-arcsin.csv +1429 -0
  118. numpy/_core/tests/data/umath-validation-set-arcsinh.csv +1429 -0
  119. numpy/_core/tests/data/umath-validation-set-arctan.csv +1429 -0
  120. numpy/_core/tests/data/umath-validation-set-arctanh.csv +1429 -0
  121. numpy/_core/tests/data/umath-validation-set-cbrt.csv +1429 -0
  122. numpy/_core/tests/data/umath-validation-set-cos.csv +1375 -0
  123. numpy/_core/tests/data/umath-validation-set-cosh.csv +1429 -0
  124. numpy/_core/tests/data/umath-validation-set-exp.csv +412 -0
  125. numpy/_core/tests/data/umath-validation-set-exp2.csv +1429 -0
  126. numpy/_core/tests/data/umath-validation-set-expm1.csv +1429 -0
  127. numpy/_core/tests/data/umath-validation-set-log.csv +271 -0
  128. numpy/_core/tests/data/umath-validation-set-log10.csv +1629 -0
  129. numpy/_core/tests/data/umath-validation-set-log1p.csv +1429 -0
  130. numpy/_core/tests/data/umath-validation-set-log2.csv +1629 -0
  131. numpy/_core/tests/data/umath-validation-set-sin.csv +1370 -0
  132. numpy/_core/tests/data/umath-validation-set-sinh.csv +1429 -0
  133. numpy/_core/tests/data/umath-validation-set-tan.csv +1429 -0
  134. numpy/_core/tests/data/umath-validation-set-tanh.csv +1429 -0
  135. numpy/_core/tests/examples/cython/checks.pyx +373 -0
  136. numpy/_core/tests/examples/cython/meson.build +43 -0
  137. numpy/_core/tests/examples/cython/setup.py +39 -0
  138. numpy/_core/tests/examples/limited_api/limited_api1.c +17 -0
  139. numpy/_core/tests/examples/limited_api/limited_api2.pyx +11 -0
  140. numpy/_core/tests/examples/limited_api/limited_api_latest.c +19 -0
  141. numpy/_core/tests/examples/limited_api/meson.build +59 -0
  142. numpy/_core/tests/examples/limited_api/setup.py +24 -0
  143. numpy/_core/tests/test__exceptions.py +90 -0
  144. numpy/_core/tests/test_abc.py +54 -0
  145. numpy/_core/tests/test_api.py +654 -0
  146. numpy/_core/tests/test_argparse.py +92 -0
  147. numpy/_core/tests/test_array_api_info.py +113 -0
  148. numpy/_core/tests/test_array_coercion.py +911 -0
  149. numpy/_core/tests/test_array_interface.py +222 -0
  150. numpy/_core/tests/test_arraymethod.py +84 -0
  151. numpy/_core/tests/test_arrayobject.py +75 -0
  152. numpy/_core/tests/test_arrayprint.py +1328 -0
  153. numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
  154. numpy/_core/tests/test_casting_unittests.py +817 -0
  155. numpy/_core/tests/test_conversion_utils.py +206 -0
  156. numpy/_core/tests/test_cpu_dispatcher.py +49 -0
  157. numpy/_core/tests/test_cpu_features.py +432 -0
  158. numpy/_core/tests/test_custom_dtypes.py +315 -0
  159. numpy/_core/tests/test_cython.py +351 -0
  160. numpy/_core/tests/test_datetime.py +2734 -0
  161. numpy/_core/tests/test_defchararray.py +825 -0
  162. numpy/_core/tests/test_deprecations.py +454 -0
  163. numpy/_core/tests/test_dlpack.py +190 -0
  164. numpy/_core/tests/test_dtype.py +1995 -0
  165. numpy/_core/tests/test_einsum.py +1317 -0
  166. numpy/_core/tests/test_errstate.py +131 -0
  167. numpy/_core/tests/test_extint128.py +217 -0
  168. numpy/_core/tests/test_function_base.py +503 -0
  169. numpy/_core/tests/test_getlimits.py +205 -0
  170. numpy/_core/tests/test_half.py +568 -0
  171. numpy/_core/tests/test_hashtable.py +35 -0
  172. numpy/_core/tests/test_indexerrors.py +125 -0
  173. numpy/_core/tests/test_indexing.py +1455 -0
  174. numpy/_core/tests/test_item_selection.py +167 -0
  175. numpy/_core/tests/test_limited_api.py +102 -0
  176. numpy/_core/tests/test_longdouble.py +369 -0
  177. numpy/_core/tests/test_machar.py +30 -0
  178. numpy/_core/tests/test_mem_overlap.py +930 -0
  179. numpy/_core/tests/test_mem_policy.py +452 -0
  180. numpy/_core/tests/test_memmap.py +246 -0
  181. numpy/_core/tests/test_multiarray.py +10577 -0
  182. numpy/_core/tests/test_multithreading.py +292 -0
  183. numpy/_core/tests/test_nditer.py +3498 -0
  184. numpy/_core/tests/test_nep50_promotions.py +287 -0
  185. numpy/_core/tests/test_numeric.py +4247 -0
  186. numpy/_core/tests/test_numerictypes.py +651 -0
  187. numpy/_core/tests/test_overrides.py +791 -0
  188. numpy/_core/tests/test_print.py +200 -0
  189. numpy/_core/tests/test_protocols.py +46 -0
  190. numpy/_core/tests/test_records.py +544 -0
  191. numpy/_core/tests/test_regression.py +2670 -0
  192. numpy/_core/tests/test_scalar_ctors.py +207 -0
  193. numpy/_core/tests/test_scalar_methods.py +246 -0
  194. numpy/_core/tests/test_scalarbuffer.py +153 -0
  195. numpy/_core/tests/test_scalarinherit.py +105 -0
  196. numpy/_core/tests/test_scalarmath.py +1176 -0
  197. numpy/_core/tests/test_scalarprint.py +403 -0
  198. numpy/_core/tests/test_shape_base.py +891 -0
  199. numpy/_core/tests/test_simd.py +1341 -0
  200. numpy/_core/tests/test_simd_module.py +103 -0
  201. numpy/_core/tests/test_stringdtype.py +1814 -0
  202. numpy/_core/tests/test_strings.py +1499 -0
  203. numpy/_core/tests/test_ufunc.py +3313 -0
  204. numpy/_core/tests/test_umath.py +4928 -0
  205. numpy/_core/tests/test_umath_accuracy.py +124 -0
  206. numpy/_core/tests/test_umath_complex.py +626 -0
  207. numpy/_core/tests/test_unicode.py +368 -0
  208. numpy/_core/umath.py +60 -0
  209. numpy/_core/umath.pyi +197 -0
  210. numpy/_distributor_init.py +15 -0
  211. numpy/_distributor_init.pyi +1 -0
  212. numpy/_expired_attrs_2_0.py +79 -0
  213. numpy/_expired_attrs_2_0.pyi +62 -0
  214. numpy/_globals.py +96 -0
  215. numpy/_globals.pyi +17 -0
  216. numpy/_pyinstaller/__init__.py +0 -0
  217. numpy/_pyinstaller/__init__.pyi +0 -0
  218. numpy/_pyinstaller/hook-numpy.py +36 -0
  219. numpy/_pyinstaller/hook-numpy.pyi +13 -0
  220. numpy/_pyinstaller/tests/__init__.py +16 -0
  221. numpy/_pyinstaller/tests/pyinstaller-smoke.py +32 -0
  222. numpy/_pyinstaller/tests/test_pyinstaller.py +35 -0
  223. numpy/_pytesttester.py +201 -0
  224. numpy/_pytesttester.pyi +18 -0
  225. numpy/_typing/__init__.py +148 -0
  226. numpy/_typing/_add_docstring.py +153 -0
  227. numpy/_typing/_array_like.py +106 -0
  228. numpy/_typing/_char_codes.py +213 -0
  229. numpy/_typing/_dtype_like.py +114 -0
  230. numpy/_typing/_extended_precision.py +15 -0
  231. numpy/_typing/_nbit.py +19 -0
  232. numpy/_typing/_nbit_base.py +94 -0
  233. numpy/_typing/_nbit_base.pyi +40 -0
  234. numpy/_typing/_nested_sequence.py +79 -0
  235. numpy/_typing/_scalars.py +20 -0
  236. numpy/_typing/_shape.py +8 -0
  237. numpy/_typing/_ufunc.py +7 -0
  238. numpy/_typing/_ufunc.pyi +941 -0
  239. numpy/_utils/__init__.py +95 -0
  240. numpy/_utils/__init__.pyi +30 -0
  241. numpy/_utils/_convertions.py +18 -0
  242. numpy/_utils/_convertions.pyi +4 -0
  243. numpy/_utils/_inspect.py +192 -0
  244. numpy/_utils/_inspect.pyi +71 -0
  245. numpy/_utils/_pep440.py +486 -0
  246. numpy/_utils/_pep440.pyi +121 -0
  247. numpy/char/__init__.py +2 -0
  248. numpy/char/__init__.pyi +111 -0
  249. numpy/conftest.py +258 -0
  250. numpy/core/__init__.py +33 -0
  251. numpy/core/__init__.pyi +0 -0
  252. numpy/core/_dtype.py +10 -0
  253. numpy/core/_dtype.pyi +0 -0
  254. numpy/core/_dtype_ctypes.py +10 -0
  255. numpy/core/_dtype_ctypes.pyi +0 -0
  256. numpy/core/_internal.py +27 -0
  257. numpy/core/_multiarray_umath.py +57 -0
  258. numpy/core/_utils.py +21 -0
  259. numpy/core/arrayprint.py +10 -0
  260. numpy/core/defchararray.py +10 -0
  261. numpy/core/einsumfunc.py +10 -0
  262. numpy/core/fromnumeric.py +10 -0
  263. numpy/core/function_base.py +10 -0
  264. numpy/core/getlimits.py +10 -0
  265. numpy/core/multiarray.py +25 -0
  266. numpy/core/numeric.py +12 -0
  267. numpy/core/numerictypes.py +10 -0
  268. numpy/core/overrides.py +10 -0
  269. numpy/core/overrides.pyi +7 -0
  270. numpy/core/records.py +10 -0
  271. numpy/core/shape_base.py +10 -0
  272. numpy/core/umath.py +10 -0
  273. numpy/ctypeslib/__init__.py +13 -0
  274. numpy/ctypeslib/__init__.pyi +33 -0
  275. numpy/ctypeslib/_ctypeslib.py +603 -0
  276. numpy/ctypeslib/_ctypeslib.pyi +245 -0
  277. numpy/doc/ufuncs.py +138 -0
  278. numpy/dtypes.py +41 -0
  279. numpy/dtypes.pyi +631 -0
  280. numpy/exceptions.py +247 -0
  281. numpy/exceptions.pyi +27 -0
  282. numpy/f2py/__init__.py +86 -0
  283. numpy/f2py/__init__.pyi +6 -0
  284. numpy/f2py/__main__.py +5 -0
  285. numpy/f2py/__version__.py +1 -0
  286. numpy/f2py/__version__.pyi +1 -0
  287. numpy/f2py/_backends/__init__.py +9 -0
  288. numpy/f2py/_backends/__init__.pyi +5 -0
  289. numpy/f2py/_backends/_backend.py +44 -0
  290. numpy/f2py/_backends/_backend.pyi +46 -0
  291. numpy/f2py/_backends/_distutils.py +76 -0
  292. numpy/f2py/_backends/_distutils.pyi +13 -0
  293. numpy/f2py/_backends/_meson.py +231 -0
  294. numpy/f2py/_backends/_meson.pyi +63 -0
  295. numpy/f2py/_backends/meson.build.template +55 -0
  296. numpy/f2py/_isocbind.py +62 -0
  297. numpy/f2py/_isocbind.pyi +13 -0
  298. numpy/f2py/_src_pyf.py +247 -0
  299. numpy/f2py/_src_pyf.pyi +29 -0
  300. numpy/f2py/auxfuncs.py +1004 -0
  301. numpy/f2py/auxfuncs.pyi +264 -0
  302. numpy/f2py/capi_maps.py +811 -0
  303. numpy/f2py/capi_maps.pyi +33 -0
  304. numpy/f2py/cb_rules.py +665 -0
  305. numpy/f2py/cb_rules.pyi +17 -0
  306. numpy/f2py/cfuncs.py +1563 -0
  307. numpy/f2py/cfuncs.pyi +31 -0
  308. numpy/f2py/common_rules.py +143 -0
  309. numpy/f2py/common_rules.pyi +9 -0
  310. numpy/f2py/crackfortran.py +3725 -0
  311. numpy/f2py/crackfortran.pyi +258 -0
  312. numpy/f2py/diagnose.py +149 -0
  313. numpy/f2py/diagnose.pyi +1 -0
  314. numpy/f2py/f2py2e.py +786 -0
  315. numpy/f2py/f2py2e.pyi +76 -0
  316. numpy/f2py/f90mod_rules.py +269 -0
  317. numpy/f2py/f90mod_rules.pyi +16 -0
  318. numpy/f2py/func2subr.py +329 -0
  319. numpy/f2py/func2subr.pyi +7 -0
  320. numpy/f2py/rules.py +1629 -0
  321. numpy/f2py/rules.pyi +43 -0
  322. numpy/f2py/setup.cfg +3 -0
  323. numpy/f2py/src/fortranobject.c +1436 -0
  324. numpy/f2py/src/fortranobject.h +173 -0
  325. numpy/f2py/symbolic.py +1516 -0
  326. numpy/f2py/symbolic.pyi +221 -0
  327. numpy/f2py/tests/__init__.py +16 -0
  328. numpy/f2py/tests/src/abstract_interface/foo.f90 +34 -0
  329. numpy/f2py/tests/src/abstract_interface/gh18403_mod.f90 +6 -0
  330. numpy/f2py/tests/src/array_from_pyobj/wrapmodule.c +235 -0
  331. numpy/f2py/tests/src/assumed_shape/.f2py_f2cmap +1 -0
  332. numpy/f2py/tests/src/assumed_shape/foo_free.f90 +34 -0
  333. numpy/f2py/tests/src/assumed_shape/foo_mod.f90 +41 -0
  334. numpy/f2py/tests/src/assumed_shape/foo_use.f90 +19 -0
  335. numpy/f2py/tests/src/assumed_shape/precision.f90 +4 -0
  336. numpy/f2py/tests/src/block_docstring/foo.f +6 -0
  337. numpy/f2py/tests/src/callback/foo.f +62 -0
  338. numpy/f2py/tests/src/callback/gh17797.f90 +7 -0
  339. numpy/f2py/tests/src/callback/gh18335.f90 +17 -0
  340. numpy/f2py/tests/src/callback/gh25211.f +10 -0
  341. numpy/f2py/tests/src/callback/gh25211.pyf +18 -0
  342. numpy/f2py/tests/src/callback/gh26681.f90 +18 -0
  343. numpy/f2py/tests/src/cli/gh_22819.pyf +6 -0
  344. numpy/f2py/tests/src/cli/hi77.f +3 -0
  345. numpy/f2py/tests/src/cli/hiworld.f90 +3 -0
  346. numpy/f2py/tests/src/common/block.f +11 -0
  347. numpy/f2py/tests/src/common/gh19161.f90 +10 -0
  348. numpy/f2py/tests/src/crackfortran/accesstype.f90 +13 -0
  349. numpy/f2py/tests/src/crackfortran/common_with_division.f +17 -0
  350. numpy/f2py/tests/src/crackfortran/data_common.f +8 -0
  351. numpy/f2py/tests/src/crackfortran/data_multiplier.f +5 -0
  352. numpy/f2py/tests/src/crackfortran/data_stmts.f90 +20 -0
  353. numpy/f2py/tests/src/crackfortran/data_with_comments.f +8 -0
  354. numpy/f2py/tests/src/crackfortran/foo_deps.f90 +6 -0
  355. numpy/f2py/tests/src/crackfortran/gh15035.f +16 -0
  356. numpy/f2py/tests/src/crackfortran/gh17859.f +12 -0
  357. numpy/f2py/tests/src/crackfortran/gh22648.pyf +7 -0
  358. numpy/f2py/tests/src/crackfortran/gh23533.f +5 -0
  359. numpy/f2py/tests/src/crackfortran/gh23598.f90 +4 -0
  360. numpy/f2py/tests/src/crackfortran/gh23598Warn.f90 +11 -0
  361. numpy/f2py/tests/src/crackfortran/gh23879.f90 +20 -0
  362. numpy/f2py/tests/src/crackfortran/gh27697.f90 +12 -0
  363. numpy/f2py/tests/src/crackfortran/gh2848.f90 +13 -0
  364. numpy/f2py/tests/src/crackfortran/operators.f90 +49 -0
  365. numpy/f2py/tests/src/crackfortran/privatemod.f90 +11 -0
  366. numpy/f2py/tests/src/crackfortran/publicmod.f90 +10 -0
  367. numpy/f2py/tests/src/crackfortran/pubprivmod.f90 +10 -0
  368. numpy/f2py/tests/src/crackfortran/unicode_comment.f90 +4 -0
  369. numpy/f2py/tests/src/f2cmap/.f2py_f2cmap +1 -0
  370. numpy/f2py/tests/src/f2cmap/isoFortranEnvMap.f90 +9 -0
  371. numpy/f2py/tests/src/isocintrin/isoCtests.f90 +34 -0
  372. numpy/f2py/tests/src/kind/foo.f90 +20 -0
  373. numpy/f2py/tests/src/mixed/foo.f +5 -0
  374. numpy/f2py/tests/src/mixed/foo_fixed.f90 +8 -0
  375. numpy/f2py/tests/src/mixed/foo_free.f90 +8 -0
  376. numpy/f2py/tests/src/modules/gh25337/data.f90 +8 -0
  377. numpy/f2py/tests/src/modules/gh25337/use_data.f90 +6 -0
  378. numpy/f2py/tests/src/modules/gh26920/two_mods_with_no_public_entities.f90 +21 -0
  379. numpy/f2py/tests/src/modules/gh26920/two_mods_with_one_public_routine.f90 +21 -0
  380. numpy/f2py/tests/src/modules/module_data_docstring.f90 +12 -0
  381. numpy/f2py/tests/src/modules/use_modules.f90 +20 -0
  382. numpy/f2py/tests/src/negative_bounds/issue_20853.f90 +7 -0
  383. numpy/f2py/tests/src/parameter/constant_array.f90 +45 -0
  384. numpy/f2py/tests/src/parameter/constant_both.f90 +57 -0
  385. numpy/f2py/tests/src/parameter/constant_compound.f90 +15 -0
  386. numpy/f2py/tests/src/parameter/constant_integer.f90 +22 -0
  387. numpy/f2py/tests/src/parameter/constant_non_compound.f90 +23 -0
  388. numpy/f2py/tests/src/parameter/constant_real.f90 +23 -0
  389. numpy/f2py/tests/src/quoted_character/foo.f +14 -0
  390. numpy/f2py/tests/src/regression/AB.inc +1 -0
  391. numpy/f2py/tests/src/regression/assignOnlyModule.f90 +25 -0
  392. numpy/f2py/tests/src/regression/datonly.f90 +17 -0
  393. numpy/f2py/tests/src/regression/f77comments.f +26 -0
  394. numpy/f2py/tests/src/regression/f77fixedform.f95 +5 -0
  395. numpy/f2py/tests/src/regression/f90continuation.f90 +9 -0
  396. numpy/f2py/tests/src/regression/incfile.f90 +5 -0
  397. numpy/f2py/tests/src/regression/inout.f90 +9 -0
  398. numpy/f2py/tests/src/regression/lower_f2py_fortran.f90 +5 -0
  399. numpy/f2py/tests/src/regression/mod_derived_types.f90 +23 -0
  400. numpy/f2py/tests/src/return_character/foo77.f +45 -0
  401. numpy/f2py/tests/src/return_character/foo90.f90 +48 -0
  402. numpy/f2py/tests/src/return_complex/foo77.f +45 -0
  403. numpy/f2py/tests/src/return_complex/foo90.f90 +48 -0
  404. numpy/f2py/tests/src/return_integer/foo77.f +56 -0
  405. numpy/f2py/tests/src/return_integer/foo90.f90 +59 -0
  406. numpy/f2py/tests/src/return_logical/foo77.f +56 -0
  407. numpy/f2py/tests/src/return_logical/foo90.f90 +59 -0
  408. numpy/f2py/tests/src/return_real/foo77.f +45 -0
  409. numpy/f2py/tests/src/return_real/foo90.f90 +48 -0
  410. numpy/f2py/tests/src/routines/funcfortranname.f +5 -0
  411. numpy/f2py/tests/src/routines/funcfortranname.pyf +11 -0
  412. numpy/f2py/tests/src/routines/subrout.f +4 -0
  413. numpy/f2py/tests/src/routines/subrout.pyf +10 -0
  414. numpy/f2py/tests/src/size/foo.f90 +44 -0
  415. numpy/f2py/tests/src/string/char.f90 +29 -0
  416. numpy/f2py/tests/src/string/fixed_string.f90 +34 -0
  417. numpy/f2py/tests/src/string/gh24008.f +8 -0
  418. numpy/f2py/tests/src/string/gh24662.f90 +7 -0
  419. numpy/f2py/tests/src/string/gh25286.f90 +14 -0
  420. numpy/f2py/tests/src/string/gh25286.pyf +12 -0
  421. numpy/f2py/tests/src/string/gh25286_bc.pyf +12 -0
  422. numpy/f2py/tests/src/string/scalar_string.f90 +9 -0
  423. numpy/f2py/tests/src/string/string.f +12 -0
  424. numpy/f2py/tests/src/value_attrspec/gh21665.f90 +9 -0
  425. numpy/f2py/tests/test_abstract_interface.py +26 -0
  426. numpy/f2py/tests/test_array_from_pyobj.py +678 -0
  427. numpy/f2py/tests/test_assumed_shape.py +50 -0
  428. numpy/f2py/tests/test_block_docstring.py +20 -0
  429. numpy/f2py/tests/test_callback.py +263 -0
  430. numpy/f2py/tests/test_character.py +641 -0
  431. numpy/f2py/tests/test_common.py +23 -0
  432. numpy/f2py/tests/test_crackfortran.py +421 -0
  433. numpy/f2py/tests/test_data.py +71 -0
  434. numpy/f2py/tests/test_docs.py +64 -0
  435. numpy/f2py/tests/test_f2cmap.py +17 -0
  436. numpy/f2py/tests/test_f2py2e.py +964 -0
  437. numpy/f2py/tests/test_isoc.py +56 -0
  438. numpy/f2py/tests/test_kind.py +53 -0
  439. numpy/f2py/tests/test_mixed.py +35 -0
  440. numpy/f2py/tests/test_modules.py +83 -0
  441. numpy/f2py/tests/test_parameter.py +129 -0
  442. numpy/f2py/tests/test_pyf_src.py +43 -0
  443. numpy/f2py/tests/test_quoted_character.py +18 -0
  444. numpy/f2py/tests/test_regression.py +187 -0
  445. numpy/f2py/tests/test_return_character.py +48 -0
  446. numpy/f2py/tests/test_return_complex.py +67 -0
  447. numpy/f2py/tests/test_return_integer.py +55 -0
  448. numpy/f2py/tests/test_return_logical.py +65 -0
  449. numpy/f2py/tests/test_return_real.py +109 -0
  450. numpy/f2py/tests/test_routines.py +29 -0
  451. numpy/f2py/tests/test_semicolon_split.py +75 -0
  452. numpy/f2py/tests/test_size.py +45 -0
  453. numpy/f2py/tests/test_string.py +100 -0
  454. numpy/f2py/tests/test_symbolic.py +495 -0
  455. numpy/f2py/tests/test_value_attrspec.py +15 -0
  456. numpy/f2py/tests/util.py +442 -0
  457. numpy/f2py/use_rules.py +99 -0
  458. numpy/f2py/use_rules.pyi +9 -0
  459. numpy/fft/__init__.py +215 -0
  460. numpy/fft/__init__.pyi +43 -0
  461. numpy/fft/_helper.py +235 -0
  462. numpy/fft/_helper.pyi +45 -0
  463. numpy/fft/_pocketfft.py +1693 -0
  464. numpy/fft/_pocketfft.pyi +138 -0
  465. numpy/fft/_pocketfft_umath.cpython-313-darwin.so +0 -0
  466. numpy/fft/helper.py +17 -0
  467. numpy/fft/helper.pyi +22 -0
  468. numpy/fft/tests/__init__.py +0 -0
  469. numpy/fft/tests/test_helper.py +167 -0
  470. numpy/fft/tests/test_pocketfft.py +589 -0
  471. numpy/lib/__init__.py +97 -0
  472. numpy/lib/__init__.pyi +44 -0
  473. numpy/lib/_array_utils_impl.py +62 -0
  474. numpy/lib/_array_utils_impl.pyi +26 -0
  475. numpy/lib/_arraypad_impl.py +890 -0
  476. numpy/lib/_arraypad_impl.pyi +89 -0
  477. numpy/lib/_arraysetops_impl.py +1260 -0
  478. numpy/lib/_arraysetops_impl.pyi +468 -0
  479. numpy/lib/_arrayterator_impl.py +224 -0
  480. numpy/lib/_arrayterator_impl.pyi +46 -0
  481. numpy/lib/_datasource.py +700 -0
  482. numpy/lib/_datasource.pyi +31 -0
  483. numpy/lib/_format_impl.py +1036 -0
  484. numpy/lib/_format_impl.pyi +26 -0
  485. numpy/lib/_function_base_impl.py +5844 -0
  486. numpy/lib/_function_base_impl.pyi +1164 -0
  487. numpy/lib/_histograms_impl.py +1085 -0
  488. numpy/lib/_histograms_impl.pyi +50 -0
  489. numpy/lib/_index_tricks_impl.py +1067 -0
  490. numpy/lib/_index_tricks_impl.pyi +208 -0
  491. numpy/lib/_iotools.py +900 -0
  492. numpy/lib/_iotools.pyi +114 -0
  493. numpy/lib/_nanfunctions_impl.py +2024 -0
  494. numpy/lib/_nanfunctions_impl.pyi +52 -0
  495. numpy/lib/_npyio_impl.py +2596 -0
  496. numpy/lib/_npyio_impl.pyi +301 -0
  497. numpy/lib/_polynomial_impl.py +1465 -0
  498. numpy/lib/_polynomial_impl.pyi +318 -0
  499. numpy/lib/_scimath_impl.py +642 -0
  500. numpy/lib/_scimath_impl.pyi +93 -0
  501. numpy/lib/_shape_base_impl.py +1301 -0
  502. numpy/lib/_shape_base_impl.pyi +235 -0
  503. numpy/lib/_stride_tricks_impl.py +549 -0
  504. numpy/lib/_stride_tricks_impl.pyi +74 -0
  505. numpy/lib/_twodim_base_impl.py +1201 -0
  506. numpy/lib/_twodim_base_impl.pyi +438 -0
  507. numpy/lib/_type_check_impl.py +699 -0
  508. numpy/lib/_type_check_impl.pyi +350 -0
  509. numpy/lib/_ufunclike_impl.py +207 -0
  510. numpy/lib/_ufunclike_impl.pyi +67 -0
  511. numpy/lib/_user_array_impl.py +299 -0
  512. numpy/lib/_user_array_impl.pyi +225 -0
  513. numpy/lib/_utils_impl.py +784 -0
  514. numpy/lib/_utils_impl.pyi +10 -0
  515. numpy/lib/_version.py +154 -0
  516. numpy/lib/_version.pyi +17 -0
  517. numpy/lib/array_utils.py +7 -0
  518. numpy/lib/array_utils.pyi +12 -0
  519. numpy/lib/format.py +24 -0
  520. numpy/lib/format.pyi +66 -0
  521. numpy/lib/introspect.py +95 -0
  522. numpy/lib/introspect.pyi +3 -0
  523. numpy/lib/mixins.py +180 -0
  524. numpy/lib/mixins.pyi +77 -0
  525. numpy/lib/npyio.py +1 -0
  526. numpy/lib/npyio.pyi +9 -0
  527. numpy/lib/recfunctions.py +1681 -0
  528. numpy/lib/recfunctions.pyi +435 -0
  529. numpy/lib/scimath.py +13 -0
  530. numpy/lib/scimath.pyi +30 -0
  531. numpy/lib/stride_tricks.py +1 -0
  532. numpy/lib/stride_tricks.pyi +6 -0
  533. numpy/lib/tests/__init__.py +0 -0
  534. numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
  535. numpy/lib/tests/data/py2-objarr.npy +0 -0
  536. numpy/lib/tests/data/py2-objarr.npz +0 -0
  537. numpy/lib/tests/data/py3-objarr.npy +0 -0
  538. numpy/lib/tests/data/py3-objarr.npz +0 -0
  539. numpy/lib/tests/data/python3.npy +0 -0
  540. numpy/lib/tests/data/win64python2.npy +0 -0
  541. numpy/lib/tests/test__datasource.py +352 -0
  542. numpy/lib/tests/test__iotools.py +360 -0
  543. numpy/lib/tests/test__version.py +64 -0
  544. numpy/lib/tests/test_array_utils.py +32 -0
  545. numpy/lib/tests/test_arraypad.py +1415 -0
  546. numpy/lib/tests/test_arraysetops.py +1074 -0
  547. numpy/lib/tests/test_arrayterator.py +46 -0
  548. numpy/lib/tests/test_format.py +1054 -0
  549. numpy/lib/tests/test_function_base.py +4573 -0
  550. numpy/lib/tests/test_histograms.py +855 -0
  551. numpy/lib/tests/test_index_tricks.py +573 -0
  552. numpy/lib/tests/test_io.py +2848 -0
  553. numpy/lib/tests/test_loadtxt.py +1101 -0
  554. numpy/lib/tests/test_mixins.py +215 -0
  555. numpy/lib/tests/test_nanfunctions.py +1438 -0
  556. numpy/lib/tests/test_packbits.py +376 -0
  557. numpy/lib/tests/test_polynomial.py +320 -0
  558. numpy/lib/tests/test_recfunctions.py +1052 -0
  559. numpy/lib/tests/test_regression.py +231 -0
  560. numpy/lib/tests/test_shape_base.py +813 -0
  561. numpy/lib/tests/test_stride_tricks.py +656 -0
  562. numpy/lib/tests/test_twodim_base.py +559 -0
  563. numpy/lib/tests/test_type_check.py +473 -0
  564. numpy/lib/tests/test_ufunclike.py +97 -0
  565. numpy/lib/tests/test_utils.py +80 -0
  566. numpy/lib/user_array.py +1 -0
  567. numpy/lib/user_array.pyi +1 -0
  568. numpy/linalg/__init__.py +98 -0
  569. numpy/linalg/__init__.pyi +73 -0
  570. numpy/linalg/_linalg.py +3682 -0
  571. numpy/linalg/_linalg.pyi +475 -0
  572. numpy/linalg/_umath_linalg.cpython-313-darwin.so +0 -0
  573. numpy/linalg/_umath_linalg.pyi +61 -0
  574. numpy/linalg/lapack_lite.cpython-313-darwin.so +0 -0
  575. numpy/linalg/lapack_lite.pyi +141 -0
  576. numpy/linalg/linalg.py +17 -0
  577. numpy/linalg/linalg.pyi +69 -0
  578. numpy/linalg/tests/__init__.py +0 -0
  579. numpy/linalg/tests/test_deprecations.py +20 -0
  580. numpy/linalg/tests/test_linalg.py +2443 -0
  581. numpy/linalg/tests/test_regression.py +181 -0
  582. numpy/ma/API_CHANGES.txt +135 -0
  583. numpy/ma/LICENSE +24 -0
  584. numpy/ma/README.rst +236 -0
  585. numpy/ma/__init__.py +53 -0
  586. numpy/ma/__init__.pyi +458 -0
  587. numpy/ma/core.py +8933 -0
  588. numpy/ma/core.pyi +1462 -0
  589. numpy/ma/extras.py +2344 -0
  590. numpy/ma/extras.pyi +138 -0
  591. numpy/ma/mrecords.py +773 -0
  592. numpy/ma/mrecords.pyi +96 -0
  593. numpy/ma/tests/__init__.py +0 -0
  594. numpy/ma/tests/test_arrayobject.py +40 -0
  595. numpy/ma/tests/test_core.py +5886 -0
  596. numpy/ma/tests/test_deprecations.py +87 -0
  597. numpy/ma/tests/test_extras.py +1998 -0
  598. numpy/ma/tests/test_mrecords.py +497 -0
  599. numpy/ma/tests/test_old_ma.py +942 -0
  600. numpy/ma/tests/test_regression.py +100 -0
  601. numpy/ma/tests/test_subclassing.py +469 -0
  602. numpy/ma/testutils.py +294 -0
  603. numpy/matlib.py +380 -0
  604. numpy/matlib.pyi +582 -0
  605. numpy/matrixlib/__init__.py +12 -0
  606. numpy/matrixlib/__init__.pyi +5 -0
  607. numpy/matrixlib/defmatrix.py +1119 -0
  608. numpy/matrixlib/defmatrix.pyi +17 -0
  609. numpy/matrixlib/tests/__init__.py +0 -0
  610. numpy/matrixlib/tests/test_defmatrix.py +455 -0
  611. numpy/matrixlib/tests/test_interaction.py +360 -0
  612. numpy/matrixlib/tests/test_masked_matrix.py +240 -0
  613. numpy/matrixlib/tests/test_matrix_linalg.py +105 -0
  614. numpy/matrixlib/tests/test_multiarray.py +17 -0
  615. numpy/matrixlib/tests/test_numeric.py +18 -0
  616. numpy/matrixlib/tests/test_regression.py +31 -0
  617. numpy/polynomial/__init__.py +187 -0
  618. numpy/polynomial/__init__.pyi +25 -0
  619. numpy/polynomial/_polybase.py +1191 -0
  620. numpy/polynomial/_polybase.pyi +285 -0
  621. numpy/polynomial/_polytypes.pyi +892 -0
  622. numpy/polynomial/chebyshev.py +2003 -0
  623. numpy/polynomial/chebyshev.pyi +181 -0
  624. numpy/polynomial/hermite.py +1740 -0
  625. numpy/polynomial/hermite.pyi +107 -0
  626. numpy/polynomial/hermite_e.py +1642 -0
  627. numpy/polynomial/hermite_e.pyi +107 -0
  628. numpy/polynomial/laguerre.py +1675 -0
  629. numpy/polynomial/laguerre.pyi +100 -0
  630. numpy/polynomial/legendre.py +1605 -0
  631. numpy/polynomial/legendre.pyi +100 -0
  632. numpy/polynomial/polynomial.py +1616 -0
  633. numpy/polynomial/polynomial.pyi +89 -0
  634. numpy/polynomial/polyutils.py +759 -0
  635. numpy/polynomial/polyutils.pyi +423 -0
  636. numpy/polynomial/tests/__init__.py +0 -0
  637. numpy/polynomial/tests/test_chebyshev.py +623 -0
  638. numpy/polynomial/tests/test_classes.py +618 -0
  639. numpy/polynomial/tests/test_hermite.py +558 -0
  640. numpy/polynomial/tests/test_hermite_e.py +559 -0
  641. numpy/polynomial/tests/test_laguerre.py +540 -0
  642. numpy/polynomial/tests/test_legendre.py +571 -0
  643. numpy/polynomial/tests/test_polynomial.py +669 -0
  644. numpy/polynomial/tests/test_polyutils.py +128 -0
  645. numpy/polynomial/tests/test_printing.py +555 -0
  646. numpy/polynomial/tests/test_symbol.py +217 -0
  647. numpy/py.typed +0 -0
  648. numpy/random/LICENSE.md +71 -0
  649. numpy/random/__init__.pxd +14 -0
  650. numpy/random/__init__.py +213 -0
  651. numpy/random/__init__.pyi +124 -0
  652. numpy/random/_bounded_integers.cpython-313-darwin.so +0 -0
  653. numpy/random/_bounded_integers.pxd +29 -0
  654. numpy/random/_bounded_integers.pyi +1 -0
  655. numpy/random/_common.cpython-313-darwin.so +0 -0
  656. numpy/random/_common.pxd +107 -0
  657. numpy/random/_common.pyi +16 -0
  658. numpy/random/_examples/cffi/extending.py +44 -0
  659. numpy/random/_examples/cffi/parse.py +53 -0
  660. numpy/random/_examples/cython/extending.pyx +77 -0
  661. numpy/random/_examples/cython/extending_distributions.pyx +118 -0
  662. numpy/random/_examples/cython/meson.build +53 -0
  663. numpy/random/_examples/numba/extending.py +86 -0
  664. numpy/random/_examples/numba/extending_distributions.py +67 -0
  665. numpy/random/_generator.cpython-313-darwin.so +0 -0
  666. numpy/random/_generator.pyi +861 -0
  667. numpy/random/_mt19937.cpython-313-darwin.so +0 -0
  668. numpy/random/_mt19937.pyi +25 -0
  669. numpy/random/_pcg64.cpython-313-darwin.so +0 -0
  670. numpy/random/_pcg64.pyi +44 -0
  671. numpy/random/_philox.cpython-313-darwin.so +0 -0
  672. numpy/random/_philox.pyi +39 -0
  673. numpy/random/_pickle.py +88 -0
  674. numpy/random/_pickle.pyi +43 -0
  675. numpy/random/_sfc64.cpython-313-darwin.so +0 -0
  676. numpy/random/_sfc64.pyi +28 -0
  677. numpy/random/bit_generator.cpython-313-darwin.so +0 -0
  678. numpy/random/bit_generator.pxd +35 -0
  679. numpy/random/bit_generator.pyi +124 -0
  680. numpy/random/c_distributions.pxd +119 -0
  681. numpy/random/lib/libnpyrandom.a +0 -0
  682. numpy/random/mtrand.cpython-313-darwin.so +0 -0
  683. numpy/random/mtrand.pyi +703 -0
  684. numpy/random/tests/__init__.py +0 -0
  685. numpy/random/tests/data/__init__.py +0 -0
  686. numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
  687. numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
  688. numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
  689. numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
  690. numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
  691. numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
  692. numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
  693. numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
  694. numpy/random/tests/data/philox-testset-1.csv +1001 -0
  695. numpy/random/tests/data/philox-testset-2.csv +1001 -0
  696. numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
  697. numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
  698. numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
  699. numpy/random/tests/test_direct.py +592 -0
  700. numpy/random/tests/test_extending.py +127 -0
  701. numpy/random/tests/test_generator_mt19937.py +2809 -0
  702. numpy/random/tests/test_generator_mt19937_regressions.py +207 -0
  703. numpy/random/tests/test_random.py +1757 -0
  704. numpy/random/tests/test_randomstate.py +2130 -0
  705. numpy/random/tests/test_randomstate_regression.py +217 -0
  706. numpy/random/tests/test_regression.py +152 -0
  707. numpy/random/tests/test_seed_sequence.py +79 -0
  708. numpy/random/tests/test_smoke.py +819 -0
  709. numpy/rec/__init__.py +2 -0
  710. numpy/rec/__init__.pyi +23 -0
  711. numpy/strings/__init__.py +2 -0
  712. numpy/strings/__init__.pyi +97 -0
  713. numpy/testing/__init__.py +22 -0
  714. numpy/testing/__init__.pyi +102 -0
  715. numpy/testing/_private/__init__.py +0 -0
  716. numpy/testing/_private/__init__.pyi +0 -0
  717. numpy/testing/_private/extbuild.py +250 -0
  718. numpy/testing/_private/extbuild.pyi +25 -0
  719. numpy/testing/_private/utils.py +2752 -0
  720. numpy/testing/_private/utils.pyi +499 -0
  721. numpy/testing/overrides.py +84 -0
  722. numpy/testing/overrides.pyi +11 -0
  723. numpy/testing/print_coercion_tables.py +207 -0
  724. numpy/testing/print_coercion_tables.pyi +27 -0
  725. numpy/testing/tests/__init__.py +0 -0
  726. numpy/testing/tests/test_utils.py +1917 -0
  727. numpy/tests/__init__.py +0 -0
  728. numpy/tests/test__all__.py +10 -0
  729. numpy/tests/test_configtool.py +48 -0
  730. numpy/tests/test_ctypeslib.py +377 -0
  731. numpy/tests/test_lazyloading.py +38 -0
  732. numpy/tests/test_matlib.py +59 -0
  733. numpy/tests/test_numpy_config.py +46 -0
  734. numpy/tests/test_numpy_version.py +54 -0
  735. numpy/tests/test_public_api.py +806 -0
  736. numpy/tests/test_reloading.py +74 -0
  737. numpy/tests/test_scripts.py +49 -0
  738. numpy/tests/test_warnings.py +78 -0
  739. numpy/typing/__init__.py +201 -0
  740. numpy/typing/mypy_plugin.py +195 -0
  741. numpy/typing/tests/__init__.py +0 -0
  742. numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
  743. numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
  744. numpy/typing/tests/data/fail/array_like.pyi +15 -0
  745. numpy/typing/tests/data/fail/array_pad.pyi +6 -0
  746. numpy/typing/tests/data/fail/arrayprint.pyi +16 -0
  747. numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
  748. numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
  749. numpy/typing/tests/data/fail/char.pyi +65 -0
  750. numpy/typing/tests/data/fail/chararray.pyi +62 -0
  751. numpy/typing/tests/data/fail/comparisons.pyi +27 -0
  752. numpy/typing/tests/data/fail/constants.pyi +3 -0
  753. numpy/typing/tests/data/fail/datasource.pyi +15 -0
  754. numpy/typing/tests/data/fail/dtype.pyi +17 -0
  755. numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
  756. numpy/typing/tests/data/fail/flatiter.pyi +20 -0
  757. numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
  758. numpy/typing/tests/data/fail/histograms.pyi +12 -0
  759. numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
  760. numpy/typing/tests/data/fail/lib_function_base.pyi +62 -0
  761. numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
  762. numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
  763. numpy/typing/tests/data/fail/lib_version.pyi +6 -0
  764. numpy/typing/tests/data/fail/linalg.pyi +48 -0
  765. numpy/typing/tests/data/fail/ma.pyi +143 -0
  766. numpy/typing/tests/data/fail/memmap.pyi +5 -0
  767. numpy/typing/tests/data/fail/modules.pyi +17 -0
  768. numpy/typing/tests/data/fail/multiarray.pyi +52 -0
  769. numpy/typing/tests/data/fail/ndarray.pyi +11 -0
  770. numpy/typing/tests/data/fail/ndarray_misc.pyi +36 -0
  771. numpy/typing/tests/data/fail/nditer.pyi +8 -0
  772. numpy/typing/tests/data/fail/nested_sequence.pyi +16 -0
  773. numpy/typing/tests/data/fail/npyio.pyi +24 -0
  774. numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
  775. numpy/typing/tests/data/fail/random.pyi +62 -0
  776. numpy/typing/tests/data/fail/rec.pyi +17 -0
  777. numpy/typing/tests/data/fail/scalars.pyi +87 -0
  778. numpy/typing/tests/data/fail/shape.pyi +6 -0
  779. numpy/typing/tests/data/fail/shape_base.pyi +8 -0
  780. numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
  781. numpy/typing/tests/data/fail/strings.pyi +52 -0
  782. numpy/typing/tests/data/fail/testing.pyi +28 -0
  783. numpy/typing/tests/data/fail/twodim_base.pyi +32 -0
  784. numpy/typing/tests/data/fail/type_check.pyi +13 -0
  785. numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
  786. numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
  787. numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
  788. numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
  789. numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
  790. numpy/typing/tests/data/mypy.ini +9 -0
  791. numpy/typing/tests/data/pass/arithmetic.py +612 -0
  792. numpy/typing/tests/data/pass/array_constructors.py +137 -0
  793. numpy/typing/tests/data/pass/array_like.py +43 -0
  794. numpy/typing/tests/data/pass/arrayprint.py +37 -0
  795. numpy/typing/tests/data/pass/arrayterator.py +27 -0
  796. numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
  797. numpy/typing/tests/data/pass/comparisons.py +315 -0
  798. numpy/typing/tests/data/pass/dtype.py +57 -0
  799. numpy/typing/tests/data/pass/einsumfunc.py +36 -0
  800. numpy/typing/tests/data/pass/flatiter.py +19 -0
  801. numpy/typing/tests/data/pass/fromnumeric.py +272 -0
  802. numpy/typing/tests/data/pass/index_tricks.py +60 -0
  803. numpy/typing/tests/data/pass/lib_user_array.py +22 -0
  804. numpy/typing/tests/data/pass/lib_utils.py +19 -0
  805. numpy/typing/tests/data/pass/lib_version.py +18 -0
  806. numpy/typing/tests/data/pass/literal.py +51 -0
  807. numpy/typing/tests/data/pass/ma.py +174 -0
  808. numpy/typing/tests/data/pass/mod.py +149 -0
  809. numpy/typing/tests/data/pass/modules.py +45 -0
  810. numpy/typing/tests/data/pass/multiarray.py +76 -0
  811. numpy/typing/tests/data/pass/ndarray_conversion.py +87 -0
  812. numpy/typing/tests/data/pass/ndarray_misc.py +203 -0
  813. numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
  814. numpy/typing/tests/data/pass/nditer.py +4 -0
  815. numpy/typing/tests/data/pass/numeric.py +95 -0
  816. numpy/typing/tests/data/pass/numerictypes.py +17 -0
  817. numpy/typing/tests/data/pass/random.py +1497 -0
  818. numpy/typing/tests/data/pass/recfunctions.py +161 -0
  819. numpy/typing/tests/data/pass/scalars.py +248 -0
  820. numpy/typing/tests/data/pass/shape.py +19 -0
  821. numpy/typing/tests/data/pass/simple.py +168 -0
  822. numpy/typing/tests/data/pass/simple_py3.py +6 -0
  823. numpy/typing/tests/data/pass/ufunc_config.py +64 -0
  824. numpy/typing/tests/data/pass/ufunclike.py +47 -0
  825. numpy/typing/tests/data/pass/ufuncs.py +16 -0
  826. numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
  827. numpy/typing/tests/data/reveal/arithmetic.pyi +720 -0
  828. numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
  829. numpy/typing/tests/data/reveal/array_constructors.pyi +249 -0
  830. numpy/typing/tests/data/reveal/arraypad.pyi +22 -0
  831. numpy/typing/tests/data/reveal/arrayprint.pyi +25 -0
  832. numpy/typing/tests/data/reveal/arraysetops.pyi +74 -0
  833. numpy/typing/tests/data/reveal/arrayterator.pyi +27 -0
  834. numpy/typing/tests/data/reveal/bitwise_ops.pyi +167 -0
  835. numpy/typing/tests/data/reveal/char.pyi +224 -0
  836. numpy/typing/tests/data/reveal/chararray.pyi +137 -0
  837. numpy/typing/tests/data/reveal/comparisons.pyi +264 -0
  838. numpy/typing/tests/data/reveal/constants.pyi +14 -0
  839. numpy/typing/tests/data/reveal/ctypeslib.pyi +81 -0
  840. numpy/typing/tests/data/reveal/datasource.pyi +23 -0
  841. numpy/typing/tests/data/reveal/dtype.pyi +136 -0
  842. numpy/typing/tests/data/reveal/einsumfunc.pyi +39 -0
  843. numpy/typing/tests/data/reveal/emath.pyi +54 -0
  844. numpy/typing/tests/data/reveal/fft.pyi +37 -0
  845. numpy/typing/tests/data/reveal/flatiter.pyi +47 -0
  846. numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
  847. numpy/typing/tests/data/reveal/getlimits.pyi +51 -0
  848. numpy/typing/tests/data/reveal/histograms.pyi +25 -0
  849. numpy/typing/tests/data/reveal/index_tricks.pyi +70 -0
  850. numpy/typing/tests/data/reveal/lib_function_base.pyi +213 -0
  851. numpy/typing/tests/data/reveal/lib_polynomial.pyi +144 -0
  852. numpy/typing/tests/data/reveal/lib_utils.pyi +17 -0
  853. numpy/typing/tests/data/reveal/lib_version.pyi +20 -0
  854. numpy/typing/tests/data/reveal/linalg.pyi +132 -0
  855. numpy/typing/tests/data/reveal/ma.pyi +369 -0
  856. numpy/typing/tests/data/reveal/matrix.pyi +73 -0
  857. numpy/typing/tests/data/reveal/memmap.pyi +19 -0
  858. numpy/typing/tests/data/reveal/mod.pyi +179 -0
  859. numpy/typing/tests/data/reveal/modules.pyi +51 -0
  860. numpy/typing/tests/data/reveal/multiarray.pyi +194 -0
  861. numpy/typing/tests/data/reveal/nbit_base_example.pyi +21 -0
  862. numpy/typing/tests/data/reveal/ndarray_assignability.pyi +77 -0
  863. numpy/typing/tests/data/reveal/ndarray_conversion.pyi +85 -0
  864. numpy/typing/tests/data/reveal/ndarray_misc.pyi +247 -0
  865. numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +39 -0
  866. numpy/typing/tests/data/reveal/nditer.pyi +49 -0
  867. numpy/typing/tests/data/reveal/nested_sequence.pyi +25 -0
  868. numpy/typing/tests/data/reveal/npyio.pyi +83 -0
  869. numpy/typing/tests/data/reveal/numeric.pyi +134 -0
  870. numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
  871. numpy/typing/tests/data/reveal/polynomial_polybase.pyi +220 -0
  872. numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +219 -0
  873. numpy/typing/tests/data/reveal/polynomial_series.pyi +138 -0
  874. numpy/typing/tests/data/reveal/random.pyi +1546 -0
  875. numpy/typing/tests/data/reveal/rec.pyi +171 -0
  876. numpy/typing/tests/data/reveal/scalars.pyi +191 -0
  877. numpy/typing/tests/data/reveal/shape.pyi +13 -0
  878. numpy/typing/tests/data/reveal/shape_base.pyi +52 -0
  879. numpy/typing/tests/data/reveal/stride_tricks.pyi +27 -0
  880. numpy/typing/tests/data/reveal/strings.pyi +196 -0
  881. numpy/typing/tests/data/reveal/testing.pyi +198 -0
  882. numpy/typing/tests/data/reveal/twodim_base.pyi +145 -0
  883. numpy/typing/tests/data/reveal/type_check.pyi +67 -0
  884. numpy/typing/tests/data/reveal/ufunc_config.pyi +30 -0
  885. numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
  886. numpy/typing/tests/data/reveal/ufuncs.pyi +123 -0
  887. numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
  888. numpy/typing/tests/test_isfile.py +32 -0
  889. numpy/typing/tests/test_runtime.py +102 -0
  890. numpy/typing/tests/test_typing.py +205 -0
  891. numpy/version.py +11 -0
  892. numpy/version.pyi +18 -0
  893. numpy-2.3.5.dist-info/LICENSE.txt +971 -0
  894. numpy-2.3.5.dist-info/METADATA +1093 -0
  895. numpy-2.3.5.dist-info/RECORD +897 -0
  896. numpy-2.3.5.dist-info/WHEEL +6 -0
  897. numpy-2.3.5.dist-info/entry_points.txt +13 -0
@@ -0,0 +1,167 @@
1
+ import sys
2
+
3
+ import pytest
4
+
5
+ import numpy as np
6
+ from numpy.testing import HAS_REFCOUNT, assert_, assert_array_equal, assert_raises
7
+
8
+
9
+ class TestTake:
10
+ def test_simple(self):
11
+ a = [[1, 2], [3, 4]]
12
+ a_str = [[b'1', b'2'], [b'3', b'4']]
13
+ modes = ['raise', 'wrap', 'clip']
14
+ indices = [-1, 4]
15
+ index_arrays = [np.empty(0, dtype=np.intp),
16
+ np.empty((), dtype=np.intp),
17
+ np.empty((1, 1), dtype=np.intp)]
18
+ real_indices = {'raise': {-1: 1, 4: IndexError},
19
+ 'wrap': {-1: 1, 4: 0},
20
+ 'clip': {-1: 0, 4: 1}}
21
+ # Currently all types but object, use the same function generation.
22
+ # So it should not be necessary to test all. However test also a non
23
+ # refcounted struct on top of object, which has a size that hits the
24
+ # default (non-specialized) path.
25
+ types = int, object, np.dtype([('', 'i2', 3)])
26
+ for t in types:
27
+ # ta works, even if the array may be odd if buffer interface is used
28
+ ta = np.array(a if np.issubdtype(t, np.number) else a_str, dtype=t)
29
+ tresult = list(ta.T.copy())
30
+ for index_array in index_arrays:
31
+ if index_array.size != 0:
32
+ tresult[0].shape = (2,) + index_array.shape
33
+ tresult[1].shape = (2,) + index_array.shape
34
+ for mode in modes:
35
+ for index in indices:
36
+ real_index = real_indices[mode][index]
37
+ if real_index is IndexError and index_array.size != 0:
38
+ index_array.put(0, index)
39
+ assert_raises(IndexError, ta.take, index_array,
40
+ mode=mode, axis=1)
41
+ elif index_array.size != 0:
42
+ index_array.put(0, index)
43
+ res = ta.take(index_array, mode=mode, axis=1)
44
+ assert_array_equal(res, tresult[real_index])
45
+ else:
46
+ res = ta.take(index_array, mode=mode, axis=1)
47
+ assert_(res.shape == (2,) + index_array.shape)
48
+
49
+ def test_refcounting(self):
50
+ objects = [object() for i in range(10)]
51
+ if HAS_REFCOUNT:
52
+ orig_rcs = [sys.getrefcount(o) for o in objects]
53
+ for mode in ('raise', 'clip', 'wrap'):
54
+ a = np.array(objects)
55
+ b = np.array([2, 2, 4, 5, 3, 5])
56
+ a.take(b, out=a[:6], mode=mode)
57
+ del a
58
+ if HAS_REFCOUNT:
59
+ assert_(all(sys.getrefcount(o) == rc + 1
60
+ for o, rc in zip(objects, orig_rcs)))
61
+ # not contiguous, example:
62
+ a = np.array(objects * 2)[::2]
63
+ a.take(b, out=a[:6], mode=mode)
64
+ del a
65
+ if HAS_REFCOUNT:
66
+ assert_(all(sys.getrefcount(o) == rc + 1
67
+ for o, rc in zip(objects, orig_rcs)))
68
+
69
+ def test_unicode_mode(self):
70
+ d = np.arange(10)
71
+ k = b'\xc3\xa4'.decode("UTF8")
72
+ assert_raises(ValueError, d.take, 5, mode=k)
73
+
74
+ def test_empty_partition(self):
75
+ # In reference to github issue #6530
76
+ a_original = np.array([0, 2, 4, 6, 8, 10])
77
+ a = a_original.copy()
78
+
79
+ # An empty partition should be a successful no-op
80
+ a.partition(np.array([], dtype=np.int16))
81
+
82
+ assert_array_equal(a, a_original)
83
+
84
+ def test_empty_argpartition(self):
85
+ # In reference to github issue #6530
86
+ a = np.array([0, 2, 4, 6, 8, 10])
87
+ a = a.argpartition(np.array([], dtype=np.int16))
88
+
89
+ b = np.array([0, 1, 2, 3, 4, 5])
90
+ assert_array_equal(a, b)
91
+
92
+
93
+ class TestPutMask:
94
+ @pytest.mark.parametrize("dtype", list(np.typecodes["All"]) + ["i,O"])
95
+ def test_simple(self, dtype):
96
+ if dtype.lower() == "m":
97
+ dtype += "8[ns]"
98
+
99
+ # putmask is weird and doesn't care about value length (even shorter)
100
+ vals = np.arange(1001).astype(dtype=dtype)
101
+
102
+ mask = np.random.randint(2, size=1000).astype(bool)
103
+ # Use vals.dtype in case of flexible dtype (i.e. string)
104
+ arr = np.zeros(1000, dtype=vals.dtype)
105
+ zeros = arr.copy()
106
+
107
+ np.putmask(arr, mask, vals)
108
+ assert_array_equal(arr[mask], vals[:len(mask)][mask])
109
+ assert_array_equal(arr[~mask], zeros[~mask])
110
+
111
+ @pytest.mark.parametrize("dtype", list(np.typecodes["All"])[1:] + ["i,O"])
112
+ @pytest.mark.parametrize("mode", ["raise", "wrap", "clip"])
113
+ def test_empty(self, dtype, mode):
114
+ arr = np.zeros(1000, dtype=dtype)
115
+ arr_copy = arr.copy()
116
+ mask = np.random.randint(2, size=1000).astype(bool)
117
+
118
+ # Allowing empty values like this is weird...
119
+ np.put(arr, mask, [])
120
+ assert_array_equal(arr, arr_copy)
121
+
122
+
123
+ class TestPut:
124
+ @pytest.mark.parametrize("dtype", list(np.typecodes["All"])[1:] + ["i,O"])
125
+ @pytest.mark.parametrize("mode", ["raise", "wrap", "clip"])
126
+ def test_simple(self, dtype, mode):
127
+ if dtype.lower() == "m":
128
+ dtype += "8[ns]"
129
+
130
+ # put is weird and doesn't care about value length (even shorter)
131
+ vals = np.arange(1001).astype(dtype=dtype)
132
+
133
+ # Use vals.dtype in case of flexible dtype (i.e. string)
134
+ arr = np.zeros(1000, dtype=vals.dtype)
135
+ zeros = arr.copy()
136
+
137
+ if mode == "clip":
138
+ # Special because 0 and -1 value are "reserved" for clip test
139
+ indx = np.random.permutation(len(arr) - 2)[:-500] + 1
140
+
141
+ indx[-1] = 0
142
+ indx[-2] = len(arr) - 1
143
+ indx_put = indx.copy()
144
+ indx_put[-1] = -1389
145
+ indx_put[-2] = 1321
146
+ else:
147
+ # Avoid duplicates (for simplicity) and fill half only
148
+ indx = np.random.permutation(len(arr) - 3)[:-500]
149
+ indx_put = indx
150
+ if mode == "wrap":
151
+ indx_put = indx_put + len(arr)
152
+
153
+ np.put(arr, indx_put, vals, mode=mode)
154
+ assert_array_equal(arr[indx], vals[:len(indx)])
155
+ untouched = np.ones(len(arr), dtype=bool)
156
+ untouched[indx] = False
157
+ assert_array_equal(arr[untouched], zeros[:untouched.sum()])
158
+
159
+ @pytest.mark.parametrize("dtype", list(np.typecodes["All"])[1:] + ["i,O"])
160
+ @pytest.mark.parametrize("mode", ["raise", "wrap", "clip"])
161
+ def test_empty(self, dtype, mode):
162
+ arr = np.zeros(1000, dtype=dtype)
163
+ arr_copy = arr.copy()
164
+
165
+ # Allowing empty values like this is weird...
166
+ np.put(arr, [1, 2, 3], [])
167
+ assert_array_equal(arr, arr_copy)
@@ -0,0 +1,102 @@
1
+ import os
2
+ import subprocess
3
+ import sys
4
+ import sysconfig
5
+
6
+ import pytest
7
+
8
+ from numpy.testing import IS_EDITABLE, IS_PYPY, IS_WASM, NOGIL_BUILD
9
+
10
+ # This import is copied from random.tests.test_extending
11
+ try:
12
+ import cython
13
+ from Cython.Compiler.Version import version as cython_version
14
+ except ImportError:
15
+ cython = None
16
+ else:
17
+ from numpy._utils import _pep440
18
+
19
+ # Note: keep in sync with the one in pyproject.toml
20
+ required_version = "3.0.6"
21
+ if _pep440.parse(cython_version) < _pep440.Version(required_version):
22
+ # too old or wrong cython, skip the test
23
+ cython = None
24
+
25
+ pytestmark = pytest.mark.skipif(cython is None, reason="requires cython")
26
+
27
+
28
+ if IS_EDITABLE:
29
+ pytest.skip(
30
+ "Editable install doesn't support tests with a compile step",
31
+ allow_module_level=True
32
+ )
33
+
34
+
35
+ @pytest.fixture(scope='module')
36
+ def install_temp(tmpdir_factory):
37
+ # Based in part on test_cython from random.tests.test_extending
38
+ if IS_WASM:
39
+ pytest.skip("No subprocess")
40
+
41
+ srcdir = os.path.join(os.path.dirname(__file__), 'examples', 'limited_api')
42
+ build_dir = tmpdir_factory.mktemp("limited_api") / "build"
43
+ os.makedirs(build_dir, exist_ok=True)
44
+ # Ensure we use the correct Python interpreter even when `meson` is
45
+ # installed in a different Python environment (see gh-24956)
46
+ native_file = str(build_dir / 'interpreter-native-file.ini')
47
+ with open(native_file, 'w') as f:
48
+ f.write("[binaries]\n")
49
+ f.write(f"python = '{sys.executable}'\n")
50
+ f.write(f"python3 = '{sys.executable}'")
51
+
52
+ try:
53
+ subprocess.check_call(["meson", "--version"])
54
+ except FileNotFoundError:
55
+ pytest.skip("No usable 'meson' found")
56
+ if sysconfig.get_platform() == "win-arm64":
57
+ pytest.skip("Meson unable to find MSVC linker on win-arm64")
58
+ if sys.platform == "win32":
59
+ subprocess.check_call(["meson", "setup",
60
+ "--werror",
61
+ "--buildtype=release",
62
+ "--vsenv", "--native-file", native_file,
63
+ str(srcdir)],
64
+ cwd=build_dir,
65
+ )
66
+ else:
67
+ subprocess.check_call(["meson", "setup", "--werror",
68
+ "--native-file", native_file, str(srcdir)],
69
+ cwd=build_dir
70
+ )
71
+ try:
72
+ subprocess.check_call(
73
+ ["meson", "compile", "-vv"], cwd=build_dir)
74
+ except subprocess.CalledProcessError as p:
75
+ print(f"{p.stdout=}")
76
+ print(f"{p.stderr=}")
77
+ raise
78
+
79
+ sys.path.append(str(build_dir))
80
+
81
+
82
+ @pytest.mark.skipif(IS_WASM, reason="Can't start subprocess")
83
+ @pytest.mark.xfail(
84
+ sysconfig.get_config_var("Py_DEBUG"),
85
+ reason=(
86
+ "Py_LIMITED_API is incompatible with Py_DEBUG, Py_TRACE_REFS, "
87
+ "and Py_REF_DEBUG"
88
+ ),
89
+ )
90
+ @pytest.mark.xfail(
91
+ NOGIL_BUILD,
92
+ reason="Py_GIL_DISABLED builds do not currently support the limited API",
93
+ )
94
+ @pytest.mark.skipif(IS_PYPY, reason="no support for limited API in PyPy")
95
+ def test_limited_api(install_temp):
96
+ """Test building a third-party C extension with the limited API
97
+ and building a cython extension with the limited API
98
+ """
99
+
100
+ import limited_api1 # Earliest (3.6) # noqa: F401
101
+ import limited_api2 # cython # noqa: F401
102
+ import limited_api_latest # Latest version (current Python) # noqa: F401
@@ -0,0 +1,369 @@
1
+ import platform
2
+ import warnings
3
+
4
+ import pytest
5
+
6
+ import numpy as np
7
+ from numpy._core.tests._locales import CommaDecimalPointLocale
8
+ from numpy.testing import (
9
+ IS_MUSL,
10
+ assert_,
11
+ assert_array_equal,
12
+ assert_equal,
13
+ assert_raises,
14
+ temppath,
15
+ )
16
+
17
+ LD_INFO = np.finfo(np.longdouble)
18
+ longdouble_longer_than_double = (LD_INFO.eps < np.finfo(np.double).eps)
19
+
20
+
21
+ _o = 1 + LD_INFO.eps
22
+ string_to_longdouble_inaccurate = (_o != np.longdouble(str(_o)))
23
+ del _o
24
+
25
+
26
+ def test_scalar_extraction():
27
+ """Confirm that extracting a value doesn't convert to python float"""
28
+ o = 1 + LD_INFO.eps
29
+ a = np.array([o, o, o])
30
+ assert_equal(a[1], o)
31
+
32
+
33
+ # Conversions string -> long double
34
+
35
+ # 0.1 not exactly representable in base 2 floating point.
36
+ repr_precision = len(repr(np.longdouble(0.1)))
37
+ # +2 from macro block starting around line 842 in scalartypes.c.src.
38
+
39
+
40
+ @pytest.mark.skipif(IS_MUSL,
41
+ reason="test flaky on musllinux")
42
+ @pytest.mark.skipif(LD_INFO.precision + 2 >= repr_precision,
43
+ reason="repr precision not enough to show eps")
44
+ def test_str_roundtrip():
45
+ # We will only see eps in repr if within printing precision.
46
+ o = 1 + LD_INFO.eps
47
+ assert_equal(np.longdouble(str(o)), o, f"str was {str(o)}")
48
+
49
+
50
+ @pytest.mark.skipif(string_to_longdouble_inaccurate, reason="Need strtold_l")
51
+ def test_str_roundtrip_bytes():
52
+ o = 1 + LD_INFO.eps
53
+ assert_equal(np.longdouble(str(o).encode("ascii")), o)
54
+
55
+
56
+ @pytest.mark.skipif(string_to_longdouble_inaccurate, reason="Need strtold_l")
57
+ @pytest.mark.parametrize("strtype", (np.str_, np.bytes_, str, bytes))
58
+ def test_array_and_stringlike_roundtrip(strtype):
59
+ """
60
+ Test that string representations of long-double roundtrip both
61
+ for array casting and scalar coercion, see also gh-15608.
62
+ """
63
+ o = 1 + LD_INFO.eps
64
+
65
+ if strtype in (np.bytes_, bytes):
66
+ o_str = strtype(str(o).encode("ascii"))
67
+ else:
68
+ o_str = strtype(str(o))
69
+
70
+ # Test that `o` is correctly coerced from the string-like
71
+ assert o == np.longdouble(o_str)
72
+
73
+ # Test that arrays also roundtrip correctly:
74
+ o_strarr = np.asarray([o] * 3, dtype=strtype)
75
+ assert (o == o_strarr.astype(np.longdouble)).all()
76
+
77
+ # And array coercion and casting to string give the same as scalar repr:
78
+ assert (o_strarr == o_str).all()
79
+ assert (np.asarray([o] * 3).astype(strtype) == o_str).all()
80
+
81
+
82
+ def test_bogus_string():
83
+ assert_raises(ValueError, np.longdouble, "spam")
84
+ assert_raises(ValueError, np.longdouble, "1.0 flub")
85
+
86
+
87
+ @pytest.mark.skipif(string_to_longdouble_inaccurate, reason="Need strtold_l")
88
+ def test_fromstring():
89
+ o = 1 + LD_INFO.eps
90
+ s = (" " + str(o)) * 5
91
+ a = np.array([o] * 5)
92
+ assert_equal(np.fromstring(s, sep=" ", dtype=np.longdouble), a,
93
+ err_msg=f"reading '{s}'")
94
+
95
+
96
+ def test_fromstring_complex():
97
+ for ctype in ["complex", "cdouble"]:
98
+ # Check spacing between separator
99
+ assert_equal(np.fromstring("1, 2 , 3 ,4", sep=",", dtype=ctype),
100
+ np.array([1., 2., 3., 4.]))
101
+ # Real component not specified
102
+ assert_equal(np.fromstring("1j, -2j, 3j, 4e1j", sep=",", dtype=ctype),
103
+ np.array([1.j, -2.j, 3.j, 40.j]))
104
+ # Both components specified
105
+ assert_equal(np.fromstring("1+1j,2-2j, -3+3j, -4e1+4j", sep=",", dtype=ctype),
106
+ np.array([1. + 1.j, 2. - 2.j, - 3. + 3.j, - 40. + 4j]))
107
+ # Spaces at wrong places
108
+ with assert_raises(ValueError):
109
+ np.fromstring("1+2 j,3", dtype=ctype, sep=",")
110
+ with assert_raises(ValueError):
111
+ np.fromstring("1+ 2j,3", dtype=ctype, sep=",")
112
+ with assert_raises(ValueError):
113
+ np.fromstring("1 +2j,3", dtype=ctype, sep=",")
114
+ with assert_raises(ValueError):
115
+ np.fromstring("1+j", dtype=ctype, sep=",")
116
+ with assert_raises(ValueError):
117
+ np.fromstring("1+", dtype=ctype, sep=",")
118
+ with assert_raises(ValueError):
119
+ np.fromstring("1j+1", dtype=ctype, sep=",")
120
+
121
+
122
+ def test_fromstring_bogus():
123
+ with assert_raises(ValueError):
124
+ np.fromstring("1. 2. 3. flop 4.", dtype=float, sep=" ")
125
+
126
+
127
+ def test_fromstring_empty():
128
+ with assert_raises(ValueError):
129
+ np.fromstring("xxxxx", sep="x")
130
+
131
+
132
+ def test_fromstring_missing():
133
+ with assert_raises(ValueError):
134
+ np.fromstring("1xx3x4x5x6", sep="x")
135
+
136
+
137
+ class TestFileBased:
138
+
139
+ ldbl = 1 + LD_INFO.eps
140
+ tgt = np.array([ldbl] * 5)
141
+ out = ''.join([str(t) + '\n' for t in tgt])
142
+
143
+ def test_fromfile_bogus(self):
144
+ with temppath() as path:
145
+ with open(path, 'w') as f:
146
+ f.write("1. 2. 3. flop 4.\n")
147
+
148
+ with assert_raises(ValueError):
149
+ np.fromfile(path, dtype=float, sep=" ")
150
+
151
+ def test_fromfile_complex(self):
152
+ for ctype in ["complex", "cdouble"]:
153
+ # Check spacing between separator and only real component specified
154
+ with temppath() as path:
155
+ with open(path, 'w') as f:
156
+ f.write("1, 2 , 3 ,4\n")
157
+
158
+ res = np.fromfile(path, dtype=ctype, sep=",")
159
+ assert_equal(res, np.array([1., 2., 3., 4.]))
160
+
161
+ # Real component not specified
162
+ with temppath() as path:
163
+ with open(path, 'w') as f:
164
+ f.write("1j, -2j, 3j, 4e1j\n")
165
+
166
+ res = np.fromfile(path, dtype=ctype, sep=",")
167
+ assert_equal(res, np.array([1.j, -2.j, 3.j, 40.j]))
168
+
169
+ # Both components specified
170
+ with temppath() as path:
171
+ with open(path, 'w') as f:
172
+ f.write("1+1j,2-2j, -3+3j, -4e1+4j\n")
173
+
174
+ res = np.fromfile(path, dtype=ctype, sep=",")
175
+ assert_equal(res, np.array([1. + 1.j, 2. - 2.j, - 3. + 3.j, - 40. + 4j]))
176
+
177
+ # Spaces at wrong places
178
+ with temppath() as path:
179
+ with open(path, 'w') as f:
180
+ f.write("1+2 j,3\n")
181
+
182
+ with assert_raises(ValueError):
183
+ np.fromfile(path, dtype=ctype, sep=",")
184
+
185
+ # Spaces at wrong places
186
+ with temppath() as path:
187
+ with open(path, 'w') as f:
188
+ f.write("1+ 2j,3\n")
189
+
190
+ with assert_raises(ValueError):
191
+ np.fromfile(path, dtype=ctype, sep=",")
192
+
193
+ # Spaces at wrong places
194
+ with temppath() as path:
195
+ with open(path, 'w') as f:
196
+ f.write("1 +2j,3\n")
197
+
198
+ with assert_raises(ValueError):
199
+ np.fromfile(path, dtype=ctype, sep=",")
200
+
201
+ # Wrong sep
202
+ with temppath() as path:
203
+ with open(path, 'w') as f:
204
+ f.write("1+j\n")
205
+
206
+ with assert_raises(ValueError):
207
+ np.fromfile(path, dtype=ctype, sep=",")
208
+
209
+ # Wrong sep
210
+ with temppath() as path:
211
+ with open(path, 'w') as f:
212
+ f.write("1+\n")
213
+
214
+ with assert_raises(ValueError):
215
+ np.fromfile(path, dtype=ctype, sep=",")
216
+
217
+ # Wrong sep
218
+ with temppath() as path:
219
+ with open(path, 'w') as f:
220
+ f.write("1j+1\n")
221
+
222
+ with assert_raises(ValueError):
223
+ np.fromfile(path, dtype=ctype, sep=",")
224
+
225
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
226
+ reason="Need strtold_l")
227
+ def test_fromfile(self):
228
+ with temppath() as path:
229
+ with open(path, 'w') as f:
230
+ f.write(self.out)
231
+ res = np.fromfile(path, dtype=np.longdouble, sep="\n")
232
+ assert_equal(res, self.tgt)
233
+
234
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
235
+ reason="Need strtold_l")
236
+ def test_genfromtxt(self):
237
+ with temppath() as path:
238
+ with open(path, 'w') as f:
239
+ f.write(self.out)
240
+ res = np.genfromtxt(path, dtype=np.longdouble)
241
+ assert_equal(res, self.tgt)
242
+
243
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
244
+ reason="Need strtold_l")
245
+ def test_loadtxt(self):
246
+ with temppath() as path:
247
+ with open(path, 'w') as f:
248
+ f.write(self.out)
249
+ res = np.loadtxt(path, dtype=np.longdouble)
250
+ assert_equal(res, self.tgt)
251
+
252
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
253
+ reason="Need strtold_l")
254
+ def test_tofile_roundtrip(self):
255
+ with temppath() as path:
256
+ self.tgt.tofile(path, sep=" ")
257
+ res = np.fromfile(path, dtype=np.longdouble, sep=" ")
258
+ assert_equal(res, self.tgt)
259
+
260
+
261
+ # Conversions long double -> string
262
+
263
+
264
+ def test_str_exact():
265
+ o = 1 + LD_INFO.eps
266
+ assert_(str(o) != '1')
267
+
268
+
269
+ @pytest.mark.skipif(longdouble_longer_than_double, reason="BUG #2376")
270
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
271
+ reason="Need strtold_l")
272
+ def test_format():
273
+ assert_(f"{1 + LD_INFO.eps:.40g}" != '1')
274
+
275
+
276
+ @pytest.mark.skipif(longdouble_longer_than_double, reason="BUG #2376")
277
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
278
+ reason="Need strtold_l")
279
+ def test_percent():
280
+ o = 1 + LD_INFO.eps
281
+ assert_(f"{o:.40g}" != '1')
282
+
283
+
284
+ @pytest.mark.skipif(longdouble_longer_than_double,
285
+ reason="array repr problem")
286
+ @pytest.mark.skipif(string_to_longdouble_inaccurate,
287
+ reason="Need strtold_l")
288
+ def test_array_repr():
289
+ o = 1 + LD_INFO.eps
290
+ a = np.array([o])
291
+ b = np.array([1], dtype=np.longdouble)
292
+ if not np.all(a != b):
293
+ raise ValueError("precision loss creating arrays")
294
+ assert_(repr(a) != repr(b))
295
+
296
+ #
297
+ # Locale tests: scalar types formatting should be independent of the locale
298
+ #
299
+
300
+ class TestCommaDecimalPointLocale(CommaDecimalPointLocale):
301
+
302
+ def test_str_roundtrip_foreign(self):
303
+ o = 1.5
304
+ assert_equal(o, np.longdouble(str(o)))
305
+
306
+ def test_fromstring_foreign_repr(self):
307
+ f = 1.234
308
+ a = np.fromstring(repr(f), dtype=float, sep=" ")
309
+ assert_equal(a[0], f)
310
+
311
+ def test_fromstring_foreign(self):
312
+ s = "1.234"
313
+ a = np.fromstring(s, dtype=np.longdouble, sep=" ")
314
+ assert_equal(a[0], np.longdouble(s))
315
+
316
+ def test_fromstring_foreign_sep(self):
317
+ a = np.array([1, 2, 3, 4])
318
+ b = np.fromstring("1,2,3,4,", dtype=np.longdouble, sep=",")
319
+ assert_array_equal(a, b)
320
+
321
+ def test_fromstring_foreign_value(self):
322
+ with assert_raises(ValueError):
323
+ np.fromstring("1,234", dtype=np.longdouble, sep=" ")
324
+
325
+
326
+ @pytest.mark.parametrize("int_val", [
327
+ # cases discussed in gh-10723
328
+ # and gh-9968
329
+ 2 ** 1024, 0])
330
+ def test_longdouble_from_int(int_val):
331
+ # for issue gh-9968
332
+ str_val = str(int_val)
333
+ # we'll expect a RuntimeWarning on platforms
334
+ # with np.longdouble equivalent to np.double
335
+ # for large integer input
336
+ with warnings.catch_warnings(record=True) as w:
337
+ warnings.filterwarnings('always', '', RuntimeWarning)
338
+ # can be inf==inf on some platforms
339
+ assert np.longdouble(int_val) == np.longdouble(str_val)
340
+ # we can't directly compare the int and
341
+ # max longdouble value on all platforms
342
+ if np.allclose(np.finfo(np.longdouble).max,
343
+ np.finfo(np.double).max) and w:
344
+ assert w[0].category is RuntimeWarning
345
+
346
+ @pytest.mark.parametrize("bool_val", [
347
+ True, False])
348
+ def test_longdouble_from_bool(bool_val):
349
+ assert np.longdouble(bool_val) == np.longdouble(int(bool_val))
350
+
351
+
352
+ @pytest.mark.skipif(
353
+ not (IS_MUSL and platform.machine() == "x86_64"),
354
+ reason="only need to run on musllinux_x86_64"
355
+ )
356
+ def test_musllinux_x86_64_signature():
357
+ # this test may fail if you're emulating musllinux_x86_64 on a different
358
+ # architecture, but should pass natively.
359
+ known_sigs = [b'\xcd\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xfb\xbf']
360
+ sig = (np.longdouble(-1.0) / np.longdouble(10.0))
361
+ sig = sig.view(sig.dtype.newbyteorder('<')).tobytes()[:10]
362
+ assert sig in known_sigs
363
+
364
+
365
+ def test_eps_positive():
366
+ # np.finfo('g').eps should be positive on all platforms. If this isn't true
367
+ # then something may have gone wrong with the MachArLike, e.g. if
368
+ # np._core.getlimits._discovered_machar didn't work properly
369
+ assert np.finfo(np.longdouble).eps > 0.
@@ -0,0 +1,30 @@
1
+ """
2
+ Test machar. Given recent changes to hardcode type data, we might want to get
3
+ rid of both MachAr and this test at some point.
4
+
5
+ """
6
+ import numpy._core.numerictypes as ntypes
7
+ from numpy import array, errstate
8
+ from numpy._core._machar import MachAr
9
+
10
+
11
+ class TestMachAr:
12
+ def _run_machar_highprec(self):
13
+ # Instantiate MachAr instance with high enough precision to cause
14
+ # underflow
15
+ try:
16
+ hiprec = ntypes.float96
17
+ MachAr(lambda v: array(v, hiprec))
18
+ except AttributeError:
19
+ # Fixme, this needs to raise a 'skip' exception.
20
+ "Skipping test: no ntypes.float96 available on this platform."
21
+
22
+ def test_underlow(self):
23
+ # Regression test for #759:
24
+ # instantiating MachAr for dtype = np.float96 raises spurious warning.
25
+ with errstate(all='raise'):
26
+ try:
27
+ self._run_machar_highprec()
28
+ except FloatingPointError as e:
29
+ msg = f"Caught {e} exception, should not have been raised."
30
+ raise AssertionError(msg)