numpy 2.4.0__cp313-cp313t-musllinux_1_2_aarch64.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.
Files changed (915) hide show
  1. numpy/__config__.py +170 -0
  2. numpy/__config__.pyi +108 -0
  3. numpy/__init__.cython-30.pxd +1242 -0
  4. numpy/__init__.pxd +1155 -0
  5. numpy/__init__.py +942 -0
  6. numpy/__init__.pyi +6202 -0
  7. numpy/_array_api_info.py +346 -0
  8. numpy/_array_api_info.pyi +206 -0
  9. numpy/_configtool.py +39 -0
  10. numpy/_configtool.pyi +1 -0
  11. numpy/_core/__init__.py +201 -0
  12. numpy/_core/__init__.pyi +666 -0
  13. numpy/_core/_add_newdocs.py +7151 -0
  14. numpy/_core/_add_newdocs.pyi +2 -0
  15. numpy/_core/_add_newdocs_scalars.py +381 -0
  16. numpy/_core/_add_newdocs_scalars.pyi +16 -0
  17. numpy/_core/_asarray.py +130 -0
  18. numpy/_core/_asarray.pyi +43 -0
  19. numpy/_core/_dtype.py +366 -0
  20. numpy/_core/_dtype.pyi +56 -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 +54 -0
  25. numpy/_core/_internal.py +968 -0
  26. numpy/_core/_internal.pyi +61 -0
  27. numpy/_core/_methods.py +252 -0
  28. numpy/_core/_methods.pyi +22 -0
  29. numpy/_core/_multiarray_tests.cpython-313t-aarch64-linux-musl.so +0 -0
  30. numpy/_core/_multiarray_umath.cpython-313t-aarch64-linux-musl.so +0 -0
  31. numpy/_core/_operand_flag_tests.cpython-313t-aarch64-linux-musl.so +0 -0
  32. numpy/_core/_rational_tests.cpython-313t-aarch64-linux-musl.so +0 -0
  33. numpy/_core/_simd.cpython-313t-aarch64-linux-musl.so +0 -0
  34. numpy/_core/_simd.pyi +35 -0
  35. numpy/_core/_string_helpers.py +100 -0
  36. numpy/_core/_string_helpers.pyi +12 -0
  37. numpy/_core/_struct_ufunc_tests.cpython-313t-aarch64-linux-musl.so +0 -0
  38. numpy/_core/_type_aliases.py +131 -0
  39. numpy/_core/_type_aliases.pyi +86 -0
  40. numpy/_core/_ufunc_config.py +515 -0
  41. numpy/_core/_ufunc_config.pyi +69 -0
  42. numpy/_core/_umath_tests.cpython-313t-aarch64-linux-musl.so +0 -0
  43. numpy/_core/_umath_tests.pyi +47 -0
  44. numpy/_core/arrayprint.py +1779 -0
  45. numpy/_core/arrayprint.pyi +158 -0
  46. numpy/_core/cversions.py +13 -0
  47. numpy/_core/defchararray.py +1414 -0
  48. numpy/_core/defchararray.pyi +1150 -0
  49. numpy/_core/einsumfunc.py +1650 -0
  50. numpy/_core/einsumfunc.pyi +184 -0
  51. numpy/_core/fromnumeric.py +4233 -0
  52. numpy/_core/fromnumeric.pyi +1735 -0
  53. numpy/_core/function_base.py +547 -0
  54. numpy/_core/function_base.pyi +276 -0
  55. numpy/_core/getlimits.py +462 -0
  56. numpy/_core/getlimits.pyi +124 -0
  57. numpy/_core/include/numpy/__multiarray_api.c +376 -0
  58. numpy/_core/include/numpy/__multiarray_api.h +1628 -0
  59. numpy/_core/include/numpy/__ufunc_api.c +55 -0
  60. numpy/_core/include/numpy/__ufunc_api.h +349 -0
  61. numpy/_core/include/numpy/_neighborhood_iterator_imp.h +90 -0
  62. numpy/_core/include/numpy/_numpyconfig.h +33 -0
  63. numpy/_core/include/numpy/_public_dtype_api_table.h +86 -0
  64. numpy/_core/include/numpy/arrayobject.h +7 -0
  65. numpy/_core/include/numpy/arrayscalars.h +198 -0
  66. numpy/_core/include/numpy/dtype_api.h +547 -0
  67. numpy/_core/include/numpy/halffloat.h +70 -0
  68. numpy/_core/include/numpy/ndarrayobject.h +304 -0
  69. numpy/_core/include/numpy/ndarraytypes.h +1982 -0
  70. numpy/_core/include/numpy/npy_2_compat.h +249 -0
  71. numpy/_core/include/numpy/npy_2_complexcompat.h +28 -0
  72. numpy/_core/include/numpy/npy_3kcompat.h +374 -0
  73. numpy/_core/include/numpy/npy_common.h +989 -0
  74. numpy/_core/include/numpy/npy_cpu.h +126 -0
  75. numpy/_core/include/numpy/npy_endian.h +79 -0
  76. numpy/_core/include/numpy/npy_math.h +602 -0
  77. numpy/_core/include/numpy/npy_no_deprecated_api.h +20 -0
  78. numpy/_core/include/numpy/npy_os.h +42 -0
  79. numpy/_core/include/numpy/numpyconfig.h +185 -0
  80. numpy/_core/include/numpy/random/LICENSE.txt +21 -0
  81. numpy/_core/include/numpy/random/bitgen.h +20 -0
  82. numpy/_core/include/numpy/random/distributions.h +209 -0
  83. numpy/_core/include/numpy/random/libdivide.h +2079 -0
  84. numpy/_core/include/numpy/ufuncobject.h +343 -0
  85. numpy/_core/include/numpy/utils.h +37 -0
  86. numpy/_core/lib/libnpymath.a +0 -0
  87. numpy/_core/lib/npy-pkg-config/mlib.ini +12 -0
  88. numpy/_core/lib/npy-pkg-config/npymath.ini +20 -0
  89. numpy/_core/lib/pkgconfig/numpy.pc +7 -0
  90. numpy/_core/memmap.py +363 -0
  91. numpy/_core/memmap.pyi +3 -0
  92. numpy/_core/multiarray.py +1740 -0
  93. numpy/_core/multiarray.pyi +1316 -0
  94. numpy/_core/numeric.py +2758 -0
  95. numpy/_core/numeric.pyi +1276 -0
  96. numpy/_core/numerictypes.py +633 -0
  97. numpy/_core/numerictypes.pyi +196 -0
  98. numpy/_core/overrides.py +188 -0
  99. numpy/_core/overrides.pyi +47 -0
  100. numpy/_core/printoptions.py +32 -0
  101. numpy/_core/printoptions.pyi +28 -0
  102. numpy/_core/records.py +1088 -0
  103. numpy/_core/records.pyi +340 -0
  104. numpy/_core/shape_base.py +996 -0
  105. numpy/_core/shape_base.pyi +182 -0
  106. numpy/_core/strings.py +1813 -0
  107. numpy/_core/strings.pyi +536 -0
  108. numpy/_core/tests/_locales.py +72 -0
  109. numpy/_core/tests/_natype.py +144 -0
  110. numpy/_core/tests/data/astype_copy.pkl +0 -0
  111. numpy/_core/tests/data/generate_umath_validation_data.cpp +170 -0
  112. numpy/_core/tests/data/recarray_from_file.fits +0 -0
  113. numpy/_core/tests/data/umath-validation-set-README.txt +15 -0
  114. numpy/_core/tests/data/umath-validation-set-arccos.csv +1429 -0
  115. numpy/_core/tests/data/umath-validation-set-arccosh.csv +1429 -0
  116. numpy/_core/tests/data/umath-validation-set-arcsin.csv +1429 -0
  117. numpy/_core/tests/data/umath-validation-set-arcsinh.csv +1429 -0
  118. numpy/_core/tests/data/umath-validation-set-arctan.csv +1429 -0
  119. numpy/_core/tests/data/umath-validation-set-arctanh.csv +1429 -0
  120. numpy/_core/tests/data/umath-validation-set-cbrt.csv +1429 -0
  121. numpy/_core/tests/data/umath-validation-set-cos.csv +1375 -0
  122. numpy/_core/tests/data/umath-validation-set-cosh.csv +1429 -0
  123. numpy/_core/tests/data/umath-validation-set-exp.csv +412 -0
  124. numpy/_core/tests/data/umath-validation-set-exp2.csv +1429 -0
  125. numpy/_core/tests/data/umath-validation-set-expm1.csv +1429 -0
  126. numpy/_core/tests/data/umath-validation-set-log.csv +271 -0
  127. numpy/_core/tests/data/umath-validation-set-log10.csv +1629 -0
  128. numpy/_core/tests/data/umath-validation-set-log1p.csv +1429 -0
  129. numpy/_core/tests/data/umath-validation-set-log2.csv +1629 -0
  130. numpy/_core/tests/data/umath-validation-set-sin.csv +1370 -0
  131. numpy/_core/tests/data/umath-validation-set-sinh.csv +1429 -0
  132. numpy/_core/tests/data/umath-validation-set-tan.csv +1429 -0
  133. numpy/_core/tests/data/umath-validation-set-tanh.csv +1429 -0
  134. numpy/_core/tests/examples/cython/checks.pyx +373 -0
  135. numpy/_core/tests/examples/cython/meson.build +43 -0
  136. numpy/_core/tests/examples/cython/setup.py +39 -0
  137. numpy/_core/tests/examples/limited_api/limited_api1.c +17 -0
  138. numpy/_core/tests/examples/limited_api/limited_api2.pyx +11 -0
  139. numpy/_core/tests/examples/limited_api/limited_api_latest.c +19 -0
  140. numpy/_core/tests/examples/limited_api/meson.build +59 -0
  141. numpy/_core/tests/examples/limited_api/setup.py +24 -0
  142. numpy/_core/tests/test__exceptions.py +90 -0
  143. numpy/_core/tests/test_abc.py +54 -0
  144. numpy/_core/tests/test_api.py +655 -0
  145. numpy/_core/tests/test_argparse.py +90 -0
  146. numpy/_core/tests/test_array_api_info.py +113 -0
  147. numpy/_core/tests/test_array_coercion.py +928 -0
  148. numpy/_core/tests/test_array_interface.py +222 -0
  149. numpy/_core/tests/test_arraymethod.py +84 -0
  150. numpy/_core/tests/test_arrayobject.py +75 -0
  151. numpy/_core/tests/test_arrayprint.py +1324 -0
  152. numpy/_core/tests/test_casting_floatingpoint_errors.py +154 -0
  153. numpy/_core/tests/test_casting_unittests.py +955 -0
  154. numpy/_core/tests/test_conversion_utils.py +209 -0
  155. numpy/_core/tests/test_cpu_dispatcher.py +48 -0
  156. numpy/_core/tests/test_cpu_features.py +450 -0
  157. numpy/_core/tests/test_custom_dtypes.py +393 -0
  158. numpy/_core/tests/test_cython.py +352 -0
  159. numpy/_core/tests/test_datetime.py +2792 -0
  160. numpy/_core/tests/test_defchararray.py +858 -0
  161. numpy/_core/tests/test_deprecations.py +460 -0
  162. numpy/_core/tests/test_dlpack.py +190 -0
  163. numpy/_core/tests/test_dtype.py +2110 -0
  164. numpy/_core/tests/test_einsum.py +1351 -0
  165. numpy/_core/tests/test_errstate.py +131 -0
  166. numpy/_core/tests/test_extint128.py +217 -0
  167. numpy/_core/tests/test_finfo.py +86 -0
  168. numpy/_core/tests/test_function_base.py +504 -0
  169. numpy/_core/tests/test_getlimits.py +171 -0
  170. numpy/_core/tests/test_half.py +593 -0
  171. numpy/_core/tests/test_hashtable.py +36 -0
  172. numpy/_core/tests/test_indexerrors.py +122 -0
  173. numpy/_core/tests/test_indexing.py +1692 -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 +370 -0
  177. numpy/_core/tests/test_mem_overlap.py +933 -0
  178. numpy/_core/tests/test_mem_policy.py +453 -0
  179. numpy/_core/tests/test_memmap.py +248 -0
  180. numpy/_core/tests/test_multiarray.py +11008 -0
  181. numpy/_core/tests/test_multiprocessing.py +55 -0
  182. numpy/_core/tests/test_multithreading.py +353 -0
  183. numpy/_core/tests/test_nditer.py +3533 -0
  184. numpy/_core/tests/test_nep50_promotions.py +287 -0
  185. numpy/_core/tests/test_numeric.py +4295 -0
  186. numpy/_core/tests/test_numerictypes.py +650 -0
  187. numpy/_core/tests/test_overrides.py +800 -0
  188. numpy/_core/tests/test_print.py +202 -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 +2677 -0
  192. numpy/_core/tests/test_scalar_ctors.py +203 -0
  193. numpy/_core/tests/test_scalar_methods.py +328 -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 +1168 -0
  197. numpy/_core/tests/test_scalarprint.py +403 -0
  198. numpy/_core/tests/test_shape_base.py +904 -0
  199. numpy/_core/tests/test_simd.py +1345 -0
  200. numpy/_core/tests/test_simd_module.py +105 -0
  201. numpy/_core/tests/test_stringdtype.py +1855 -0
  202. numpy/_core/tests/test_strings.py +1515 -0
  203. numpy/_core/tests/test_ufunc.py +3405 -0
  204. numpy/_core/tests/test_umath.py +4962 -0
  205. numpy/_core/tests/test_umath_accuracy.py +132 -0
  206. numpy/_core/tests/test_umath_complex.py +631 -0
  207. numpy/_core/tests/test_unicode.py +369 -0
  208. numpy/_core/umath.py +60 -0
  209. numpy/_core/umath.pyi +232 -0
  210. numpy/_distributor_init.py +15 -0
  211. numpy/_distributor_init.pyi +1 -0
  212. numpy/_expired_attrs_2_0.py +78 -0
  213. numpy/_expired_attrs_2_0.pyi +61 -0
  214. numpy/_globals.py +121 -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 +6 -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 +173 -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 +39 -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 +975 -0
  239. numpy/_utils/__init__.py +95 -0
  240. numpy/_utils/__init__.pyi +28 -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 +70 -0
  245. numpy/_utils/_pep440.py +486 -0
  246. numpy/_utils/_pep440.pyi +118 -0
  247. numpy/char/__init__.py +2 -0
  248. numpy/char/__init__.pyi +111 -0
  249. numpy/conftest.py +248 -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 +15 -0
  275. numpy/ctypeslib/_ctypeslib.py +603 -0
  276. numpy/ctypeslib/_ctypeslib.pyi +236 -0
  277. numpy/doc/ufuncs.py +138 -0
  278. numpy/dtypes.py +41 -0
  279. numpy/dtypes.pyi +630 -0
  280. numpy/exceptions.py +246 -0
  281. numpy/exceptions.pyi +27 -0
  282. numpy/f2py/__init__.py +86 -0
  283. numpy/f2py/__init__.pyi +5 -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 +244 -0
  294. numpy/f2py/_backends/_meson.pyi +62 -0
  295. numpy/f2py/_backends/meson.build.template +58 -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 +28 -0
  300. numpy/f2py/auxfuncs.py +1004 -0
  301. numpy/f2py/auxfuncs.pyi +262 -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 +266 -0
  312. numpy/f2py/diagnose.py +149 -0
  313. numpy/f2py/diagnose.pyi +1 -0
  314. numpy/f2py/f2py2e.py +788 -0
  315. numpy/f2py/f2py2e.pyi +74 -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 +41 -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 +1518 -0
  326. numpy/f2py/symbolic.pyi +219 -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 +66 -0
  435. numpy/f2py/tests/test_f2cmap.py +17 -0
  436. numpy/f2py/tests/test_f2py2e.py +983 -0
  437. numpy/f2py/tests/test_isoc.py +56 -0
  438. numpy/f2py/tests/test_kind.py +52 -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 +500 -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 +213 -0
  460. numpy/fft/__init__.pyi +38 -0
  461. numpy/fft/_helper.py +235 -0
  462. numpy/fft/_helper.pyi +44 -0
  463. numpy/fft/_pocketfft.py +1693 -0
  464. numpy/fft/_pocketfft.pyi +137 -0
  465. numpy/fft/_pocketfft_umath.cpython-313t-aarch64-linux-musl.so +0 -0
  466. numpy/fft/tests/__init__.py +0 -0
  467. numpy/fft/tests/test_helper.py +167 -0
  468. numpy/fft/tests/test_pocketfft.py +589 -0
  469. numpy/lib/__init__.py +97 -0
  470. numpy/lib/__init__.pyi +52 -0
  471. numpy/lib/_array_utils_impl.py +62 -0
  472. numpy/lib/_array_utils_impl.pyi +10 -0
  473. numpy/lib/_arraypad_impl.py +926 -0
  474. numpy/lib/_arraypad_impl.pyi +88 -0
  475. numpy/lib/_arraysetops_impl.py +1158 -0
  476. numpy/lib/_arraysetops_impl.pyi +462 -0
  477. numpy/lib/_arrayterator_impl.py +224 -0
  478. numpy/lib/_arrayterator_impl.pyi +45 -0
  479. numpy/lib/_datasource.py +700 -0
  480. numpy/lib/_datasource.pyi +30 -0
  481. numpy/lib/_format_impl.py +1036 -0
  482. numpy/lib/_format_impl.pyi +56 -0
  483. numpy/lib/_function_base_impl.py +5758 -0
  484. numpy/lib/_function_base_impl.pyi +2324 -0
  485. numpy/lib/_histograms_impl.py +1085 -0
  486. numpy/lib/_histograms_impl.pyi +40 -0
  487. numpy/lib/_index_tricks_impl.py +1048 -0
  488. numpy/lib/_index_tricks_impl.pyi +267 -0
  489. numpy/lib/_iotools.py +900 -0
  490. numpy/lib/_iotools.pyi +116 -0
  491. numpy/lib/_nanfunctions_impl.py +2001 -0
  492. numpy/lib/_nanfunctions_impl.pyi +48 -0
  493. numpy/lib/_npyio_impl.py +2583 -0
  494. numpy/lib/_npyio_impl.pyi +299 -0
  495. numpy/lib/_polynomial_impl.py +1465 -0
  496. numpy/lib/_polynomial_impl.pyi +338 -0
  497. numpy/lib/_scimath_impl.py +642 -0
  498. numpy/lib/_scimath_impl.pyi +93 -0
  499. numpy/lib/_shape_base_impl.py +1289 -0
  500. numpy/lib/_shape_base_impl.pyi +236 -0
  501. numpy/lib/_stride_tricks_impl.py +582 -0
  502. numpy/lib/_stride_tricks_impl.pyi +73 -0
  503. numpy/lib/_twodim_base_impl.py +1201 -0
  504. numpy/lib/_twodim_base_impl.pyi +408 -0
  505. numpy/lib/_type_check_impl.py +710 -0
  506. numpy/lib/_type_check_impl.pyi +348 -0
  507. numpy/lib/_ufunclike_impl.py +199 -0
  508. numpy/lib/_ufunclike_impl.pyi +60 -0
  509. numpy/lib/_user_array_impl.py +310 -0
  510. numpy/lib/_user_array_impl.pyi +226 -0
  511. numpy/lib/_utils_impl.py +784 -0
  512. numpy/lib/_utils_impl.pyi +22 -0
  513. numpy/lib/_version.py +153 -0
  514. numpy/lib/_version.pyi +17 -0
  515. numpy/lib/array_utils.py +7 -0
  516. numpy/lib/array_utils.pyi +6 -0
  517. numpy/lib/format.py +24 -0
  518. numpy/lib/format.pyi +24 -0
  519. numpy/lib/introspect.py +94 -0
  520. numpy/lib/introspect.pyi +3 -0
  521. numpy/lib/mixins.py +180 -0
  522. numpy/lib/mixins.pyi +78 -0
  523. numpy/lib/npyio.py +1 -0
  524. numpy/lib/npyio.pyi +5 -0
  525. numpy/lib/recfunctions.py +1681 -0
  526. numpy/lib/recfunctions.pyi +444 -0
  527. numpy/lib/scimath.py +13 -0
  528. numpy/lib/scimath.pyi +12 -0
  529. numpy/lib/stride_tricks.py +1 -0
  530. numpy/lib/stride_tricks.pyi +4 -0
  531. numpy/lib/tests/__init__.py +0 -0
  532. numpy/lib/tests/data/py2-np0-objarr.npy +0 -0
  533. numpy/lib/tests/data/py2-objarr.npy +0 -0
  534. numpy/lib/tests/data/py2-objarr.npz +0 -0
  535. numpy/lib/tests/data/py3-objarr.npy +0 -0
  536. numpy/lib/tests/data/py3-objarr.npz +0 -0
  537. numpy/lib/tests/data/python3.npy +0 -0
  538. numpy/lib/tests/data/win64python2.npy +0 -0
  539. numpy/lib/tests/test__datasource.py +328 -0
  540. numpy/lib/tests/test__iotools.py +358 -0
  541. numpy/lib/tests/test__version.py +64 -0
  542. numpy/lib/tests/test_array_utils.py +32 -0
  543. numpy/lib/tests/test_arraypad.py +1427 -0
  544. numpy/lib/tests/test_arraysetops.py +1302 -0
  545. numpy/lib/tests/test_arrayterator.py +45 -0
  546. numpy/lib/tests/test_format.py +1054 -0
  547. numpy/lib/tests/test_function_base.py +4705 -0
  548. numpy/lib/tests/test_histograms.py +855 -0
  549. numpy/lib/tests/test_index_tricks.py +693 -0
  550. numpy/lib/tests/test_io.py +2857 -0
  551. numpy/lib/tests/test_loadtxt.py +1099 -0
  552. numpy/lib/tests/test_mixins.py +215 -0
  553. numpy/lib/tests/test_nanfunctions.py +1438 -0
  554. numpy/lib/tests/test_packbits.py +376 -0
  555. numpy/lib/tests/test_polynomial.py +325 -0
  556. numpy/lib/tests/test_recfunctions.py +1042 -0
  557. numpy/lib/tests/test_regression.py +231 -0
  558. numpy/lib/tests/test_shape_base.py +813 -0
  559. numpy/lib/tests/test_stride_tricks.py +655 -0
  560. numpy/lib/tests/test_twodim_base.py +559 -0
  561. numpy/lib/tests/test_type_check.py +473 -0
  562. numpy/lib/tests/test_ufunclike.py +97 -0
  563. numpy/lib/tests/test_utils.py +80 -0
  564. numpy/lib/user_array.py +1 -0
  565. numpy/lib/user_array.pyi +1 -0
  566. numpy/linalg/__init__.py +95 -0
  567. numpy/linalg/__init__.pyi +71 -0
  568. numpy/linalg/_linalg.py +3657 -0
  569. numpy/linalg/_linalg.pyi +548 -0
  570. numpy/linalg/_umath_linalg.cpython-313t-aarch64-linux-musl.so +0 -0
  571. numpy/linalg/_umath_linalg.pyi +60 -0
  572. numpy/linalg/lapack_lite.cpython-313t-aarch64-linux-musl.so +0 -0
  573. numpy/linalg/lapack_lite.pyi +143 -0
  574. numpy/linalg/tests/__init__.py +0 -0
  575. numpy/linalg/tests/test_deprecations.py +21 -0
  576. numpy/linalg/tests/test_linalg.py +2442 -0
  577. numpy/linalg/tests/test_regression.py +182 -0
  578. numpy/ma/API_CHANGES.txt +135 -0
  579. numpy/ma/LICENSE +24 -0
  580. numpy/ma/README.rst +236 -0
  581. numpy/ma/__init__.py +53 -0
  582. numpy/ma/__init__.pyi +458 -0
  583. numpy/ma/core.py +8929 -0
  584. numpy/ma/core.pyi +3720 -0
  585. numpy/ma/extras.py +2266 -0
  586. numpy/ma/extras.pyi +297 -0
  587. numpy/ma/mrecords.py +762 -0
  588. numpy/ma/mrecords.pyi +96 -0
  589. numpy/ma/tests/__init__.py +0 -0
  590. numpy/ma/tests/test_arrayobject.py +40 -0
  591. numpy/ma/tests/test_core.py +6008 -0
  592. numpy/ma/tests/test_deprecations.py +65 -0
  593. numpy/ma/tests/test_extras.py +1945 -0
  594. numpy/ma/tests/test_mrecords.py +495 -0
  595. numpy/ma/tests/test_old_ma.py +939 -0
  596. numpy/ma/tests/test_regression.py +83 -0
  597. numpy/ma/tests/test_subclassing.py +469 -0
  598. numpy/ma/testutils.py +294 -0
  599. numpy/ma/testutils.pyi +69 -0
  600. numpy/matlib.py +380 -0
  601. numpy/matlib.pyi +580 -0
  602. numpy/matrixlib/__init__.py +12 -0
  603. numpy/matrixlib/__init__.pyi +3 -0
  604. numpy/matrixlib/defmatrix.py +1119 -0
  605. numpy/matrixlib/defmatrix.pyi +218 -0
  606. numpy/matrixlib/tests/__init__.py +0 -0
  607. numpy/matrixlib/tests/test_defmatrix.py +455 -0
  608. numpy/matrixlib/tests/test_interaction.py +360 -0
  609. numpy/matrixlib/tests/test_masked_matrix.py +240 -0
  610. numpy/matrixlib/tests/test_matrix_linalg.py +110 -0
  611. numpy/matrixlib/tests/test_multiarray.py +17 -0
  612. numpy/matrixlib/tests/test_numeric.py +18 -0
  613. numpy/matrixlib/tests/test_regression.py +31 -0
  614. numpy/polynomial/__init__.py +187 -0
  615. numpy/polynomial/__init__.pyi +31 -0
  616. numpy/polynomial/_polybase.py +1191 -0
  617. numpy/polynomial/_polybase.pyi +262 -0
  618. numpy/polynomial/_polytypes.pyi +501 -0
  619. numpy/polynomial/chebyshev.py +2001 -0
  620. numpy/polynomial/chebyshev.pyi +180 -0
  621. numpy/polynomial/hermite.py +1738 -0
  622. numpy/polynomial/hermite.pyi +106 -0
  623. numpy/polynomial/hermite_e.py +1640 -0
  624. numpy/polynomial/hermite_e.pyi +106 -0
  625. numpy/polynomial/laguerre.py +1673 -0
  626. numpy/polynomial/laguerre.pyi +100 -0
  627. numpy/polynomial/legendre.py +1603 -0
  628. numpy/polynomial/legendre.pyi +100 -0
  629. numpy/polynomial/polynomial.py +1625 -0
  630. numpy/polynomial/polynomial.pyi +109 -0
  631. numpy/polynomial/polyutils.py +759 -0
  632. numpy/polynomial/polyutils.pyi +307 -0
  633. numpy/polynomial/tests/__init__.py +0 -0
  634. numpy/polynomial/tests/test_chebyshev.py +618 -0
  635. numpy/polynomial/tests/test_classes.py +613 -0
  636. numpy/polynomial/tests/test_hermite.py +553 -0
  637. numpy/polynomial/tests/test_hermite_e.py +554 -0
  638. numpy/polynomial/tests/test_laguerre.py +535 -0
  639. numpy/polynomial/tests/test_legendre.py +566 -0
  640. numpy/polynomial/tests/test_polynomial.py +691 -0
  641. numpy/polynomial/tests/test_polyutils.py +123 -0
  642. numpy/polynomial/tests/test_printing.py +557 -0
  643. numpy/polynomial/tests/test_symbol.py +217 -0
  644. numpy/py.typed +0 -0
  645. numpy/random/LICENSE.md +71 -0
  646. numpy/random/__init__.pxd +14 -0
  647. numpy/random/__init__.py +213 -0
  648. numpy/random/__init__.pyi +124 -0
  649. numpy/random/_bounded_integers.cpython-313t-aarch64-linux-musl.so +0 -0
  650. numpy/random/_bounded_integers.pxd +29 -0
  651. numpy/random/_bounded_integers.pyi +1 -0
  652. numpy/random/_common.cpython-313t-aarch64-linux-musl.so +0 -0
  653. numpy/random/_common.pxd +107 -0
  654. numpy/random/_common.pyi +16 -0
  655. numpy/random/_examples/cffi/extending.py +44 -0
  656. numpy/random/_examples/cffi/parse.py +53 -0
  657. numpy/random/_examples/cython/extending.pyx +77 -0
  658. numpy/random/_examples/cython/extending_distributions.pyx +117 -0
  659. numpy/random/_examples/cython/meson.build +53 -0
  660. numpy/random/_examples/numba/extending.py +86 -0
  661. numpy/random/_examples/numba/extending_distributions.py +67 -0
  662. numpy/random/_generator.cpython-313t-aarch64-linux-musl.so +0 -0
  663. numpy/random/_generator.pyi +862 -0
  664. numpy/random/_mt19937.cpython-313t-aarch64-linux-musl.so +0 -0
  665. numpy/random/_mt19937.pyi +27 -0
  666. numpy/random/_pcg64.cpython-313t-aarch64-linux-musl.so +0 -0
  667. numpy/random/_pcg64.pyi +41 -0
  668. numpy/random/_philox.cpython-313t-aarch64-linux-musl.so +0 -0
  669. numpy/random/_philox.pyi +36 -0
  670. numpy/random/_pickle.py +88 -0
  671. numpy/random/_pickle.pyi +43 -0
  672. numpy/random/_sfc64.cpython-313t-aarch64-linux-musl.so +0 -0
  673. numpy/random/_sfc64.pyi +25 -0
  674. numpy/random/bit_generator.cpython-313t-aarch64-linux-musl.so +0 -0
  675. numpy/random/bit_generator.pxd +35 -0
  676. numpy/random/bit_generator.pyi +123 -0
  677. numpy/random/c_distributions.pxd +119 -0
  678. numpy/random/lib/libnpyrandom.a +0 -0
  679. numpy/random/mtrand.cpython-313t-aarch64-linux-musl.so +0 -0
  680. numpy/random/mtrand.pyi +759 -0
  681. numpy/random/tests/__init__.py +0 -0
  682. numpy/random/tests/data/__init__.py +0 -0
  683. numpy/random/tests/data/generator_pcg64_np121.pkl.gz +0 -0
  684. numpy/random/tests/data/generator_pcg64_np126.pkl.gz +0 -0
  685. numpy/random/tests/data/mt19937-testset-1.csv +1001 -0
  686. numpy/random/tests/data/mt19937-testset-2.csv +1001 -0
  687. numpy/random/tests/data/pcg64-testset-1.csv +1001 -0
  688. numpy/random/tests/data/pcg64-testset-2.csv +1001 -0
  689. numpy/random/tests/data/pcg64dxsm-testset-1.csv +1001 -0
  690. numpy/random/tests/data/pcg64dxsm-testset-2.csv +1001 -0
  691. numpy/random/tests/data/philox-testset-1.csv +1001 -0
  692. numpy/random/tests/data/philox-testset-2.csv +1001 -0
  693. numpy/random/tests/data/sfc64-testset-1.csv +1001 -0
  694. numpy/random/tests/data/sfc64-testset-2.csv +1001 -0
  695. numpy/random/tests/data/sfc64_np126.pkl.gz +0 -0
  696. numpy/random/tests/test_direct.py +595 -0
  697. numpy/random/tests/test_extending.py +131 -0
  698. numpy/random/tests/test_generator_mt19937.py +2825 -0
  699. numpy/random/tests/test_generator_mt19937_regressions.py +221 -0
  700. numpy/random/tests/test_random.py +1724 -0
  701. numpy/random/tests/test_randomstate.py +2099 -0
  702. numpy/random/tests/test_randomstate_regression.py +213 -0
  703. numpy/random/tests/test_regression.py +175 -0
  704. numpy/random/tests/test_seed_sequence.py +79 -0
  705. numpy/random/tests/test_smoke.py +882 -0
  706. numpy/rec/__init__.py +2 -0
  707. numpy/rec/__init__.pyi +23 -0
  708. numpy/strings/__init__.py +2 -0
  709. numpy/strings/__init__.pyi +97 -0
  710. numpy/testing/__init__.py +22 -0
  711. numpy/testing/__init__.pyi +107 -0
  712. numpy/testing/_private/__init__.py +0 -0
  713. numpy/testing/_private/__init__.pyi +0 -0
  714. numpy/testing/_private/extbuild.py +250 -0
  715. numpy/testing/_private/extbuild.pyi +25 -0
  716. numpy/testing/_private/utils.py +2830 -0
  717. numpy/testing/_private/utils.pyi +505 -0
  718. numpy/testing/overrides.py +84 -0
  719. numpy/testing/overrides.pyi +10 -0
  720. numpy/testing/print_coercion_tables.py +207 -0
  721. numpy/testing/print_coercion_tables.pyi +26 -0
  722. numpy/testing/tests/__init__.py +0 -0
  723. numpy/testing/tests/test_utils.py +2123 -0
  724. numpy/tests/__init__.py +0 -0
  725. numpy/tests/test__all__.py +10 -0
  726. numpy/tests/test_configtool.py +51 -0
  727. numpy/tests/test_ctypeslib.py +383 -0
  728. numpy/tests/test_lazyloading.py +42 -0
  729. numpy/tests/test_matlib.py +59 -0
  730. numpy/tests/test_numpy_config.py +47 -0
  731. numpy/tests/test_numpy_version.py +54 -0
  732. numpy/tests/test_public_api.py +804 -0
  733. numpy/tests/test_reloading.py +76 -0
  734. numpy/tests/test_scripts.py +48 -0
  735. numpy/tests/test_warnings.py +79 -0
  736. numpy/typing/__init__.py +233 -0
  737. numpy/typing/__init__.pyi +3 -0
  738. numpy/typing/mypy_plugin.py +200 -0
  739. numpy/typing/tests/__init__.py +0 -0
  740. numpy/typing/tests/data/fail/arithmetic.pyi +126 -0
  741. numpy/typing/tests/data/fail/array_constructors.pyi +34 -0
  742. numpy/typing/tests/data/fail/array_like.pyi +15 -0
  743. numpy/typing/tests/data/fail/array_pad.pyi +6 -0
  744. numpy/typing/tests/data/fail/arrayprint.pyi +15 -0
  745. numpy/typing/tests/data/fail/arrayterator.pyi +14 -0
  746. numpy/typing/tests/data/fail/bitwise_ops.pyi +17 -0
  747. numpy/typing/tests/data/fail/char.pyi +63 -0
  748. numpy/typing/tests/data/fail/chararray.pyi +61 -0
  749. numpy/typing/tests/data/fail/comparisons.pyi +27 -0
  750. numpy/typing/tests/data/fail/constants.pyi +3 -0
  751. numpy/typing/tests/data/fail/datasource.pyi +16 -0
  752. numpy/typing/tests/data/fail/dtype.pyi +17 -0
  753. numpy/typing/tests/data/fail/einsumfunc.pyi +12 -0
  754. numpy/typing/tests/data/fail/flatiter.pyi +38 -0
  755. numpy/typing/tests/data/fail/fromnumeric.pyi +148 -0
  756. numpy/typing/tests/data/fail/histograms.pyi +12 -0
  757. numpy/typing/tests/data/fail/index_tricks.pyi +14 -0
  758. numpy/typing/tests/data/fail/lib_function_base.pyi +60 -0
  759. numpy/typing/tests/data/fail/lib_polynomial.pyi +29 -0
  760. numpy/typing/tests/data/fail/lib_utils.pyi +3 -0
  761. numpy/typing/tests/data/fail/lib_version.pyi +6 -0
  762. numpy/typing/tests/data/fail/linalg.pyi +52 -0
  763. numpy/typing/tests/data/fail/ma.pyi +155 -0
  764. numpy/typing/tests/data/fail/memmap.pyi +5 -0
  765. numpy/typing/tests/data/fail/modules.pyi +17 -0
  766. numpy/typing/tests/data/fail/multiarray.pyi +52 -0
  767. numpy/typing/tests/data/fail/ndarray.pyi +11 -0
  768. numpy/typing/tests/data/fail/ndarray_misc.pyi +49 -0
  769. numpy/typing/tests/data/fail/nditer.pyi +8 -0
  770. numpy/typing/tests/data/fail/nested_sequence.pyi +17 -0
  771. numpy/typing/tests/data/fail/npyio.pyi +24 -0
  772. numpy/typing/tests/data/fail/numerictypes.pyi +5 -0
  773. numpy/typing/tests/data/fail/random.pyi +62 -0
  774. numpy/typing/tests/data/fail/rec.pyi +17 -0
  775. numpy/typing/tests/data/fail/scalars.pyi +86 -0
  776. numpy/typing/tests/data/fail/shape.pyi +7 -0
  777. numpy/typing/tests/data/fail/shape_base.pyi +8 -0
  778. numpy/typing/tests/data/fail/stride_tricks.pyi +9 -0
  779. numpy/typing/tests/data/fail/strings.pyi +52 -0
  780. numpy/typing/tests/data/fail/testing.pyi +28 -0
  781. numpy/typing/tests/data/fail/twodim_base.pyi +39 -0
  782. numpy/typing/tests/data/fail/type_check.pyi +12 -0
  783. numpy/typing/tests/data/fail/ufunc_config.pyi +21 -0
  784. numpy/typing/tests/data/fail/ufunclike.pyi +21 -0
  785. numpy/typing/tests/data/fail/ufuncs.pyi +17 -0
  786. numpy/typing/tests/data/fail/warnings_and_errors.pyi +5 -0
  787. numpy/typing/tests/data/misc/extended_precision.pyi +9 -0
  788. numpy/typing/tests/data/mypy.ini +8 -0
  789. numpy/typing/tests/data/pass/arithmetic.py +614 -0
  790. numpy/typing/tests/data/pass/array_constructors.py +138 -0
  791. numpy/typing/tests/data/pass/array_like.py +43 -0
  792. numpy/typing/tests/data/pass/arrayprint.py +37 -0
  793. numpy/typing/tests/data/pass/arrayterator.py +28 -0
  794. numpy/typing/tests/data/pass/bitwise_ops.py +131 -0
  795. numpy/typing/tests/data/pass/comparisons.py +316 -0
  796. numpy/typing/tests/data/pass/dtype.py +57 -0
  797. numpy/typing/tests/data/pass/einsumfunc.py +36 -0
  798. numpy/typing/tests/data/pass/flatiter.py +26 -0
  799. numpy/typing/tests/data/pass/fromnumeric.py +272 -0
  800. numpy/typing/tests/data/pass/index_tricks.py +62 -0
  801. numpy/typing/tests/data/pass/lib_user_array.py +22 -0
  802. numpy/typing/tests/data/pass/lib_utils.py +19 -0
  803. numpy/typing/tests/data/pass/lib_version.py +18 -0
  804. numpy/typing/tests/data/pass/literal.py +52 -0
  805. numpy/typing/tests/data/pass/ma.py +199 -0
  806. numpy/typing/tests/data/pass/mod.py +149 -0
  807. numpy/typing/tests/data/pass/modules.py +45 -0
  808. numpy/typing/tests/data/pass/multiarray.py +77 -0
  809. numpy/typing/tests/data/pass/ndarray_conversion.py +81 -0
  810. numpy/typing/tests/data/pass/ndarray_misc.py +199 -0
  811. numpy/typing/tests/data/pass/ndarray_shape_manipulation.py +47 -0
  812. numpy/typing/tests/data/pass/nditer.py +4 -0
  813. numpy/typing/tests/data/pass/numeric.py +90 -0
  814. numpy/typing/tests/data/pass/numerictypes.py +17 -0
  815. numpy/typing/tests/data/pass/random.py +1498 -0
  816. numpy/typing/tests/data/pass/recfunctions.py +164 -0
  817. numpy/typing/tests/data/pass/scalars.py +249 -0
  818. numpy/typing/tests/data/pass/shape.py +19 -0
  819. numpy/typing/tests/data/pass/simple.py +170 -0
  820. numpy/typing/tests/data/pass/ufunc_config.py +64 -0
  821. numpy/typing/tests/data/pass/ufunclike.py +52 -0
  822. numpy/typing/tests/data/pass/ufuncs.py +16 -0
  823. numpy/typing/tests/data/pass/warnings_and_errors.py +6 -0
  824. numpy/typing/tests/data/reveal/arithmetic.pyi +719 -0
  825. numpy/typing/tests/data/reveal/array_api_info.pyi +70 -0
  826. numpy/typing/tests/data/reveal/array_constructors.pyi +277 -0
  827. numpy/typing/tests/data/reveal/arraypad.pyi +27 -0
  828. numpy/typing/tests/data/reveal/arrayprint.pyi +25 -0
  829. numpy/typing/tests/data/reveal/arraysetops.pyi +74 -0
  830. numpy/typing/tests/data/reveal/arrayterator.pyi +27 -0
  831. numpy/typing/tests/data/reveal/bitwise_ops.pyi +166 -0
  832. numpy/typing/tests/data/reveal/char.pyi +225 -0
  833. numpy/typing/tests/data/reveal/chararray.pyi +138 -0
  834. numpy/typing/tests/data/reveal/comparisons.pyi +264 -0
  835. numpy/typing/tests/data/reveal/constants.pyi +14 -0
  836. numpy/typing/tests/data/reveal/ctypeslib.pyi +81 -0
  837. numpy/typing/tests/data/reveal/datasource.pyi +23 -0
  838. numpy/typing/tests/data/reveal/dtype.pyi +132 -0
  839. numpy/typing/tests/data/reveal/einsumfunc.pyi +39 -0
  840. numpy/typing/tests/data/reveal/emath.pyi +54 -0
  841. numpy/typing/tests/data/reveal/fft.pyi +37 -0
  842. numpy/typing/tests/data/reveal/flatiter.pyi +86 -0
  843. numpy/typing/tests/data/reveal/fromnumeric.pyi +347 -0
  844. numpy/typing/tests/data/reveal/getlimits.pyi +53 -0
  845. numpy/typing/tests/data/reveal/histograms.pyi +25 -0
  846. numpy/typing/tests/data/reveal/index_tricks.pyi +70 -0
  847. numpy/typing/tests/data/reveal/lib_function_base.pyi +409 -0
  848. numpy/typing/tests/data/reveal/lib_polynomial.pyi +147 -0
  849. numpy/typing/tests/data/reveal/lib_utils.pyi +17 -0
  850. numpy/typing/tests/data/reveal/lib_version.pyi +20 -0
  851. numpy/typing/tests/data/reveal/linalg.pyi +154 -0
  852. numpy/typing/tests/data/reveal/ma.pyi +1098 -0
  853. numpy/typing/tests/data/reveal/matrix.pyi +73 -0
  854. numpy/typing/tests/data/reveal/memmap.pyi +19 -0
  855. numpy/typing/tests/data/reveal/mod.pyi +178 -0
  856. numpy/typing/tests/data/reveal/modules.pyi +51 -0
  857. numpy/typing/tests/data/reveal/multiarray.pyi +197 -0
  858. numpy/typing/tests/data/reveal/nbit_base_example.pyi +20 -0
  859. numpy/typing/tests/data/reveal/ndarray_assignability.pyi +82 -0
  860. numpy/typing/tests/data/reveal/ndarray_conversion.pyi +83 -0
  861. numpy/typing/tests/data/reveal/ndarray_misc.pyi +246 -0
  862. numpy/typing/tests/data/reveal/ndarray_shape_manipulation.pyi +47 -0
  863. numpy/typing/tests/data/reveal/nditer.pyi +49 -0
  864. numpy/typing/tests/data/reveal/nested_sequence.pyi +25 -0
  865. numpy/typing/tests/data/reveal/npyio.pyi +83 -0
  866. numpy/typing/tests/data/reveal/numeric.pyi +170 -0
  867. numpy/typing/tests/data/reveal/numerictypes.pyi +16 -0
  868. numpy/typing/tests/data/reveal/polynomial_polybase.pyi +217 -0
  869. numpy/typing/tests/data/reveal/polynomial_polyutils.pyi +218 -0
  870. numpy/typing/tests/data/reveal/polynomial_series.pyi +138 -0
  871. numpy/typing/tests/data/reveal/random.pyi +1546 -0
  872. numpy/typing/tests/data/reveal/rec.pyi +171 -0
  873. numpy/typing/tests/data/reveal/scalars.pyi +191 -0
  874. numpy/typing/tests/data/reveal/shape.pyi +13 -0
  875. numpy/typing/tests/data/reveal/shape_base.pyi +52 -0
  876. numpy/typing/tests/data/reveal/stride_tricks.pyi +27 -0
  877. numpy/typing/tests/data/reveal/strings.pyi +196 -0
  878. numpy/typing/tests/data/reveal/testing.pyi +198 -0
  879. numpy/typing/tests/data/reveal/twodim_base.pyi +225 -0
  880. numpy/typing/tests/data/reveal/type_check.pyi +67 -0
  881. numpy/typing/tests/data/reveal/ufunc_config.pyi +29 -0
  882. numpy/typing/tests/data/reveal/ufunclike.pyi +31 -0
  883. numpy/typing/tests/data/reveal/ufuncs.pyi +142 -0
  884. numpy/typing/tests/data/reveal/warnings_and_errors.pyi +11 -0
  885. numpy/typing/tests/test_isfile.py +38 -0
  886. numpy/typing/tests/test_runtime.py +110 -0
  887. numpy/typing/tests/test_typing.py +205 -0
  888. numpy/version.py +11 -0
  889. numpy/version.pyi +9 -0
  890. numpy-2.4.0.dist-info/METADATA +139 -0
  891. numpy-2.4.0.dist-info/RECORD +915 -0
  892. numpy-2.4.0.dist-info/WHEEL +5 -0
  893. numpy-2.4.0.dist-info/entry_points.txt +13 -0
  894. numpy-2.4.0.dist-info/licenses/LICENSE.txt +935 -0
  895. numpy-2.4.0.dist-info/licenses/numpy/_core/include/numpy/libdivide/LICENSE.txt +21 -0
  896. numpy-2.4.0.dist-info/licenses/numpy/_core/src/common/pythoncapi-compat/COPYING +14 -0
  897. numpy-2.4.0.dist-info/licenses/numpy/_core/src/highway/LICENSE +371 -0
  898. numpy-2.4.0.dist-info/licenses/numpy/_core/src/multiarray/dragon4_LICENSE.txt +27 -0
  899. numpy-2.4.0.dist-info/licenses/numpy/_core/src/npysort/x86-simd-sort/LICENSE.md +28 -0
  900. numpy-2.4.0.dist-info/licenses/numpy/_core/src/umath/svml/LICENSE +30 -0
  901. numpy-2.4.0.dist-info/licenses/numpy/fft/pocketfft/LICENSE.md +25 -0
  902. numpy-2.4.0.dist-info/licenses/numpy/linalg/lapack_lite/LICENSE.txt +48 -0
  903. numpy-2.4.0.dist-info/licenses/numpy/ma/LICENSE +24 -0
  904. numpy-2.4.0.dist-info/licenses/numpy/random/LICENSE.md +71 -0
  905. numpy-2.4.0.dist-info/licenses/numpy/random/src/distributions/LICENSE.md +61 -0
  906. numpy-2.4.0.dist-info/licenses/numpy/random/src/mt19937/LICENSE.md +61 -0
  907. numpy-2.4.0.dist-info/licenses/numpy/random/src/pcg64/LICENSE.md +22 -0
  908. numpy-2.4.0.dist-info/licenses/numpy/random/src/philox/LICENSE.md +31 -0
  909. numpy-2.4.0.dist-info/licenses/numpy/random/src/sfc64/LICENSE.md +27 -0
  910. numpy-2.4.0.dist-info/licenses/numpy/random/src/splitmix64/LICENSE.md +9 -0
  911. numpy.libs/libgcc_s-2d945d6c-767fb991.so.1 +0 -0
  912. numpy.libs/libgcc_s-2d945d6c.so.1 +0 -0
  913. numpy.libs/libgfortran-67378ab2-e7e7cfab.so.5.0.0 +0 -0
  914. numpy.libs/libscipy_openblas64_-1fc386ee.so +0 -0
  915. numpy.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
numpy/f2py/auxfuncs.py ADDED
@@ -0,0 +1,1004 @@
1
+ """
2
+ Auxiliary functions for f2py2e.
3
+
4
+ Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
5
+ Copyright 2011 -- present NumPy Developers.
6
+ Permission to use, modify, and distribute this software is given under the
7
+ terms of the NumPy (BSD style) LICENSE.
8
+
9
+ NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
10
+ """
11
+ import pprint
12
+ import re
13
+ import sys
14
+ import types
15
+ from functools import reduce
16
+
17
+ from . import __version__, cfuncs
18
+ from .cfuncs import errmess
19
+
20
+ __all__ = [
21
+ 'applyrules', 'debugcapi', 'dictappend', 'errmess', 'gentitle',
22
+ 'getargs2', 'getcallprotoargument', 'getcallstatement',
23
+ 'getfortranname', 'getpymethoddef', 'getrestdoc', 'getusercode',
24
+ 'getusercode1', 'getdimension', 'hasbody', 'hascallstatement', 'hascommon',
25
+ 'hasexternals', 'hasinitvalue', 'hasnote', 'hasresultnote',
26
+ 'isallocatable', 'isarray', 'isarrayofstrings',
27
+ 'ischaracter', 'ischaracterarray', 'ischaracter_or_characterarray',
28
+ 'iscomplex', 'iscstyledirective',
29
+ 'iscomplexarray', 'iscomplexfunction', 'iscomplexfunction_warn',
30
+ 'isdouble', 'isdummyroutine', 'isexternal', 'isfunction',
31
+ 'isfunction_wrap', 'isint1', 'isint1array', 'isinteger', 'isintent_aux',
32
+ 'isintent_c', 'isintent_callback', 'isintent_copy', 'isintent_dict',
33
+ 'isintent_hide', 'isintent_in', 'isintent_inout', 'isintent_inplace',
34
+ 'isintent_nothide', 'isintent_out', 'isintent_overwrite', 'islogical',
35
+ 'islogicalfunction', 'islong_complex', 'islong_double',
36
+ 'islong_doublefunction', 'islong_long', 'islong_longfunction',
37
+ 'ismodule', 'ismoduleroutine', 'isoptional', 'isprivate', 'isvariable',
38
+ 'isrequired', 'isroutine', 'isscalar', 'issigned_long_longarray',
39
+ 'isstring', 'isstringarray', 'isstring_or_stringarray', 'isstringfunction',
40
+ 'issubroutine', 'get_f2py_modulename', 'issubroutine_wrap', 'isthreadsafe',
41
+ 'isunsigned', 'isunsigned_char', 'isunsigned_chararray',
42
+ 'isunsigned_long_long', 'isunsigned_long_longarray', 'isunsigned_short',
43
+ 'isunsigned_shortarray', 'l_and', 'l_not', 'l_or', 'outmess', 'replace',
44
+ 'show', 'stripcomma', 'throw_error', 'isattr_value', 'getuseblocks',
45
+ 'process_f2cmap_dict', 'containscommon', 'containsderivedtypes'
46
+ ]
47
+
48
+
49
+ f2py_version = __version__.version
50
+
51
+
52
+ show = pprint.pprint
53
+
54
+ options = {}
55
+ debugoptions = []
56
+ wrapfuncs = 1
57
+
58
+
59
+ def outmess(t):
60
+ if options.get('verbose', 1):
61
+ sys.stdout.write(t)
62
+
63
+
64
+ def debugcapi(var):
65
+ return 'capi' in debugoptions
66
+
67
+
68
+ def _ischaracter(var):
69
+ return 'typespec' in var and var['typespec'] == 'character' and \
70
+ not isexternal(var)
71
+
72
+
73
+ def _isstring(var):
74
+ return 'typespec' in var and var['typespec'] == 'character' and \
75
+ not isexternal(var)
76
+
77
+
78
+ def ischaracter_or_characterarray(var):
79
+ return _ischaracter(var) and 'charselector' not in var
80
+
81
+
82
+ def ischaracter(var):
83
+ return ischaracter_or_characterarray(var) and not isarray(var)
84
+
85
+
86
+ def ischaracterarray(var):
87
+ return ischaracter_or_characterarray(var) and isarray(var)
88
+
89
+
90
+ def isstring_or_stringarray(var):
91
+ return _ischaracter(var) and 'charselector' in var
92
+
93
+
94
+ def isstring(var):
95
+ return isstring_or_stringarray(var) and not isarray(var)
96
+
97
+
98
+ def isstringarray(var):
99
+ return isstring_or_stringarray(var) and isarray(var)
100
+
101
+
102
+ def isarrayofstrings(var): # obsolete?
103
+ # leaving out '*' for now so that `character*(*) a(m)` and `character
104
+ # a(m,*)` are treated differently. Luckily `character**` is illegal.
105
+ return isstringarray(var) and var['dimension'][-1] == '(*)'
106
+
107
+
108
+ def isarray(var):
109
+ return 'dimension' in var and not isexternal(var)
110
+
111
+
112
+ def isscalar(var):
113
+ return not (isarray(var) or isstring(var) or isexternal(var))
114
+
115
+
116
+ def iscomplex(var):
117
+ return isscalar(var) and \
118
+ var.get('typespec') in ['complex', 'double complex']
119
+
120
+
121
+ def islogical(var):
122
+ return isscalar(var) and var.get('typespec') == 'logical'
123
+
124
+
125
+ def isinteger(var):
126
+ return isscalar(var) and var.get('typespec') == 'integer'
127
+
128
+
129
+ def isreal(var):
130
+ return isscalar(var) and var.get('typespec') == 'real'
131
+
132
+
133
+ def get_kind(var):
134
+ try:
135
+ return var['kindselector']['*']
136
+ except KeyError:
137
+ try:
138
+ return var['kindselector']['kind']
139
+ except KeyError:
140
+ pass
141
+
142
+
143
+ def isint1(var):
144
+ return var.get('typespec') == 'integer' \
145
+ and get_kind(var) == '1' and not isarray(var)
146
+
147
+
148
+ def islong_long(var):
149
+ if not isscalar(var):
150
+ return 0
151
+ if var.get('typespec') not in ['integer', 'logical']:
152
+ return 0
153
+ return get_kind(var) == '8'
154
+
155
+
156
+ def isunsigned_char(var):
157
+ if not isscalar(var):
158
+ return 0
159
+ if var.get('typespec') != 'integer':
160
+ return 0
161
+ return get_kind(var) == '-1'
162
+
163
+
164
+ def isunsigned_short(var):
165
+ if not isscalar(var):
166
+ return 0
167
+ if var.get('typespec') != 'integer':
168
+ return 0
169
+ return get_kind(var) == '-2'
170
+
171
+
172
+ def isunsigned(var):
173
+ if not isscalar(var):
174
+ return 0
175
+ if var.get('typespec') != 'integer':
176
+ return 0
177
+ return get_kind(var) == '-4'
178
+
179
+
180
+ def isunsigned_long_long(var):
181
+ if not isscalar(var):
182
+ return 0
183
+ if var.get('typespec') != 'integer':
184
+ return 0
185
+ return get_kind(var) == '-8'
186
+
187
+
188
+ def isdouble(var):
189
+ if not isscalar(var):
190
+ return 0
191
+ if not var.get('typespec') == 'real':
192
+ return 0
193
+ return get_kind(var) == '8'
194
+
195
+
196
+ def islong_double(var):
197
+ if not isscalar(var):
198
+ return 0
199
+ if not var.get('typespec') == 'real':
200
+ return 0
201
+ return get_kind(var) == '16'
202
+
203
+
204
+ def islong_complex(var):
205
+ if not iscomplex(var):
206
+ return 0
207
+ return get_kind(var) == '32'
208
+
209
+
210
+ def iscomplexarray(var):
211
+ return isarray(var) and \
212
+ var.get('typespec') in ['complex', 'double complex']
213
+
214
+
215
+ def isint1array(var):
216
+ return isarray(var) and var.get('typespec') == 'integer' \
217
+ and get_kind(var) == '1'
218
+
219
+
220
+ def isunsigned_chararray(var):
221
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
222
+ and get_kind(var) == '-1'
223
+
224
+
225
+ def isunsigned_shortarray(var):
226
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
227
+ and get_kind(var) == '-2'
228
+
229
+
230
+ def isunsignedarray(var):
231
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
232
+ and get_kind(var) == '-4'
233
+
234
+
235
+ def isunsigned_long_longarray(var):
236
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
237
+ and get_kind(var) == '-8'
238
+
239
+
240
+ def issigned_chararray(var):
241
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
242
+ and get_kind(var) == '1'
243
+
244
+
245
+ def issigned_shortarray(var):
246
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
247
+ and get_kind(var) == '2'
248
+
249
+
250
+ def issigned_array(var):
251
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
252
+ and get_kind(var) == '4'
253
+
254
+
255
+ def issigned_long_longarray(var):
256
+ return isarray(var) and var.get('typespec') in ['integer', 'logical']\
257
+ and get_kind(var) == '8'
258
+
259
+
260
+ def isallocatable(var):
261
+ return 'attrspec' in var and 'allocatable' in var['attrspec']
262
+
263
+
264
+ def ismutable(var):
265
+ return not ('dimension' not in var or isstring(var))
266
+
267
+
268
+ def ismoduleroutine(rout):
269
+ return 'modulename' in rout
270
+
271
+
272
+ def ismodule(rout):
273
+ return 'block' in rout and 'module' == rout['block']
274
+
275
+
276
+ def isfunction(rout):
277
+ return 'block' in rout and 'function' == rout['block']
278
+
279
+
280
+ def isfunction_wrap(rout):
281
+ if isintent_c(rout):
282
+ return 0
283
+ return wrapfuncs and isfunction(rout) and (not isexternal(rout))
284
+
285
+
286
+ def issubroutine(rout):
287
+ return 'block' in rout and 'subroutine' == rout['block']
288
+
289
+
290
+ def issubroutine_wrap(rout):
291
+ if isintent_c(rout):
292
+ return 0
293
+ return issubroutine(rout) and hasassumedshape(rout)
294
+
295
+ def isattr_value(var):
296
+ return 'value' in var.get('attrspec', [])
297
+
298
+
299
+ def hasassumedshape(rout):
300
+ if rout.get('hasassumedshape'):
301
+ return True
302
+ for a in rout['args']:
303
+ for d in rout['vars'].get(a, {}).get('dimension', []):
304
+ if d == ':':
305
+ rout['hasassumedshape'] = True
306
+ return True
307
+ return False
308
+
309
+
310
+ def requiresf90wrapper(rout):
311
+ return ismoduleroutine(rout) or hasassumedshape(rout)
312
+
313
+
314
+ def isroutine(rout):
315
+ return isfunction(rout) or issubroutine(rout)
316
+
317
+
318
+ def islogicalfunction(rout):
319
+ if not isfunction(rout):
320
+ return 0
321
+ if 'result' in rout:
322
+ a = rout['result']
323
+ else:
324
+ a = rout['name']
325
+ if a in rout['vars']:
326
+ return islogical(rout['vars'][a])
327
+ return 0
328
+
329
+
330
+ def islong_longfunction(rout):
331
+ if not isfunction(rout):
332
+ return 0
333
+ if 'result' in rout:
334
+ a = rout['result']
335
+ else:
336
+ a = rout['name']
337
+ if a in rout['vars']:
338
+ return islong_long(rout['vars'][a])
339
+ return 0
340
+
341
+
342
+ def islong_doublefunction(rout):
343
+ if not isfunction(rout):
344
+ return 0
345
+ if 'result' in rout:
346
+ a = rout['result']
347
+ else:
348
+ a = rout['name']
349
+ if a in rout['vars']:
350
+ return islong_double(rout['vars'][a])
351
+ return 0
352
+
353
+
354
+ def iscomplexfunction(rout):
355
+ if not isfunction(rout):
356
+ return 0
357
+ if 'result' in rout:
358
+ a = rout['result']
359
+ else:
360
+ a = rout['name']
361
+ if a in rout['vars']:
362
+ return iscomplex(rout['vars'][a])
363
+ return 0
364
+
365
+
366
+ def iscomplexfunction_warn(rout):
367
+ if iscomplexfunction(rout):
368
+ outmess("""\
369
+ **************************************************************
370
+ Warning: code with a function returning complex value
371
+ may not work correctly with your Fortran compiler.
372
+ When using GNU gcc/g77 compilers, codes should work
373
+ correctly for callbacks with:
374
+ f2py -c -DF2PY_CB_RETURNCOMPLEX
375
+ **************************************************************\n""")
376
+ return 1
377
+ return 0
378
+
379
+
380
+ def isstringfunction(rout):
381
+ if not isfunction(rout):
382
+ return 0
383
+ if 'result' in rout:
384
+ a = rout['result']
385
+ else:
386
+ a = rout['name']
387
+ if a in rout['vars']:
388
+ return isstring(rout['vars'][a])
389
+ return 0
390
+
391
+
392
+ def hasexternals(rout):
393
+ return 'externals' in rout and rout['externals']
394
+
395
+
396
+ def isthreadsafe(rout):
397
+ return 'f2pyenhancements' in rout and \
398
+ 'threadsafe' in rout['f2pyenhancements']
399
+
400
+
401
+ def hasvariables(rout):
402
+ return 'vars' in rout and rout['vars']
403
+
404
+
405
+ def isoptional(var):
406
+ return ('attrspec' in var and 'optional' in var['attrspec'] and
407
+ 'required' not in var['attrspec']) and isintent_nothide(var)
408
+
409
+
410
+ def isexternal(var):
411
+ return 'attrspec' in var and 'external' in var['attrspec']
412
+
413
+
414
+ def getdimension(var):
415
+ dimpattern = r"\((.*?)\)"
416
+ if 'attrspec' in var.keys():
417
+ if any('dimension' in s for s in var['attrspec']):
418
+ return next(re.findall(dimpattern, v) for v in var['attrspec'])
419
+
420
+
421
+ def isrequired(var):
422
+ return not isoptional(var) and isintent_nothide(var)
423
+
424
+
425
+ def iscstyledirective(f2py_line):
426
+ directives = {"callstatement", "callprotoargument", "pymethoddef"}
427
+ return any(directive in f2py_line.lower() for directive in directives)
428
+
429
+
430
+ def isintent_in(var):
431
+ if 'intent' not in var:
432
+ return 1
433
+ if 'hide' in var['intent']:
434
+ return 0
435
+ if 'inplace' in var['intent']:
436
+ return 0
437
+ if 'in' in var['intent']:
438
+ return 1
439
+ if 'out' in var['intent']:
440
+ return 0
441
+ if 'inout' in var['intent']:
442
+ return 0
443
+ if 'outin' in var['intent']:
444
+ return 0
445
+ return 1
446
+
447
+
448
+ def isintent_inout(var):
449
+ return ('intent' in var and ('inout' in var['intent'] or
450
+ 'outin' in var['intent']) and 'in' not in var['intent'] and
451
+ 'hide' not in var['intent'] and 'inplace' not in var['intent'])
452
+
453
+
454
+ def isintent_out(var):
455
+ return 'out' in var.get('intent', [])
456
+
457
+
458
+ def isintent_hide(var):
459
+ return ('intent' in var and ('hide' in var['intent'] or
460
+ ('out' in var['intent'] and 'in' not in var['intent'] and
461
+ (not l_or(isintent_inout, isintent_inplace)(var)))))
462
+
463
+
464
+ def isintent_nothide(var):
465
+ return not isintent_hide(var)
466
+
467
+
468
+ def isintent_c(var):
469
+ return 'c' in var.get('intent', [])
470
+
471
+
472
+ def isintent_cache(var):
473
+ return 'cache' in var.get('intent', [])
474
+
475
+
476
+ def isintent_copy(var):
477
+ return 'copy' in var.get('intent', [])
478
+
479
+
480
+ def isintent_overwrite(var):
481
+ return 'overwrite' in var.get('intent', [])
482
+
483
+
484
+ def isintent_callback(var):
485
+ return 'callback' in var.get('intent', [])
486
+
487
+
488
+ def isintent_inplace(var):
489
+ return 'inplace' in var.get('intent', [])
490
+
491
+
492
+ def isintent_aux(var):
493
+ return 'aux' in var.get('intent', [])
494
+
495
+
496
+ def isintent_aligned4(var):
497
+ return 'aligned4' in var.get('intent', [])
498
+
499
+
500
+ def isintent_aligned8(var):
501
+ return 'aligned8' in var.get('intent', [])
502
+
503
+
504
+ def isintent_aligned16(var):
505
+ return 'aligned16' in var.get('intent', [])
506
+
507
+
508
+ isintent_dict = {isintent_in: 'INTENT_IN', isintent_inout: 'INTENT_INOUT',
509
+ isintent_out: 'INTENT_OUT', isintent_hide: 'INTENT_HIDE',
510
+ isintent_cache: 'INTENT_CACHE',
511
+ isintent_c: 'INTENT_C', isoptional: 'OPTIONAL',
512
+ isintent_inplace: 'INTENT_INPLACE',
513
+ isintent_aligned4: 'INTENT_ALIGNED4',
514
+ isintent_aligned8: 'INTENT_ALIGNED8',
515
+ isintent_aligned16: 'INTENT_ALIGNED16',
516
+ }
517
+
518
+
519
+ def isprivate(var):
520
+ return 'attrspec' in var and 'private' in var['attrspec']
521
+
522
+
523
+ def isvariable(var):
524
+ # heuristic to find public/private declarations of filtered subroutines
525
+ if len(var) == 1 and 'attrspec' in var and \
526
+ var['attrspec'][0] in ('public', 'private'):
527
+ is_var = False
528
+ else:
529
+ is_var = True
530
+ return is_var
531
+
532
+ def hasinitvalue(var):
533
+ return '=' in var
534
+
535
+
536
+ def hasinitvalueasstring(var):
537
+ if not hasinitvalue(var):
538
+ return 0
539
+ return var['='][0] in ['"', "'"]
540
+
541
+
542
+ def hasnote(var):
543
+ return 'note' in var
544
+
545
+
546
+ def hasresultnote(rout):
547
+ if not isfunction(rout):
548
+ return 0
549
+ if 'result' in rout:
550
+ a = rout['result']
551
+ else:
552
+ a = rout['name']
553
+ if a in rout['vars']:
554
+ return hasnote(rout['vars'][a])
555
+ return 0
556
+
557
+
558
+ def hascommon(rout):
559
+ return 'common' in rout
560
+
561
+
562
+ def containscommon(rout):
563
+ if hascommon(rout):
564
+ return 1
565
+ if hasbody(rout):
566
+ for b in rout['body']:
567
+ if containscommon(b):
568
+ return 1
569
+ return 0
570
+
571
+
572
+ def hasderivedtypes(rout):
573
+ return ('block' in rout) and rout['block'] == 'type'
574
+
575
+
576
+ def containsderivedtypes(rout):
577
+ if hasderivedtypes(rout):
578
+ return 1
579
+ if hasbody(rout):
580
+ for b in rout['body']:
581
+ if hasderivedtypes(b):
582
+ return 1
583
+ return 0
584
+
585
+
586
+ def containsmodule(block):
587
+ if ismodule(block):
588
+ return 1
589
+ if not hasbody(block):
590
+ return 0
591
+ for b in block['body']:
592
+ if containsmodule(b):
593
+ return 1
594
+ return 0
595
+
596
+
597
+ def hasbody(rout):
598
+ return 'body' in rout
599
+
600
+
601
+ def hascallstatement(rout):
602
+ return getcallstatement(rout) is not None
603
+
604
+
605
+ def istrue(var):
606
+ return 1
607
+
608
+
609
+ def isfalse(var):
610
+ return 0
611
+
612
+
613
+ class F2PYError(Exception):
614
+ pass
615
+
616
+
617
+ class throw_error:
618
+
619
+ def __init__(self, mess):
620
+ self.mess = mess
621
+
622
+ def __call__(self, var):
623
+ mess = f'\n\n var = {var}\n Message: {self.mess}\n'
624
+ raise F2PYError(mess)
625
+
626
+
627
+ def l_and(*f):
628
+ l1, l2 = 'lambda v', []
629
+ for i in range(len(f)):
630
+ l1 = '%s,f%d=f[%d]' % (l1, i, i)
631
+ l2.append('f%d(v)' % (i))
632
+ return eval(f"{l1}:{' and '.join(l2)}")
633
+
634
+
635
+ def l_or(*f):
636
+ l1, l2 = 'lambda v', []
637
+ for i in range(len(f)):
638
+ l1 = '%s,f%d=f[%d]' % (l1, i, i)
639
+ l2.append('f%d(v)' % (i))
640
+ return eval(f"{l1}:{' or '.join(l2)}")
641
+
642
+
643
+ def l_not(f):
644
+ return eval('lambda v,f=f:not f(v)')
645
+
646
+
647
+ def isdummyroutine(rout):
648
+ try:
649
+ return rout['f2pyenhancements']['fortranname'] == ''
650
+ except KeyError:
651
+ return 0
652
+
653
+
654
+ def getfortranname(rout):
655
+ try:
656
+ name = rout['f2pyenhancements']['fortranname']
657
+ if name == '':
658
+ raise KeyError
659
+ if not name:
660
+ errmess(f"Failed to use fortranname from {rout['f2pyenhancements']}\n")
661
+ raise KeyError
662
+ except KeyError:
663
+ name = rout['name']
664
+ return name
665
+
666
+
667
+ def getmultilineblock(rout, blockname, comment=1, counter=0):
668
+ try:
669
+ r = rout['f2pyenhancements'].get(blockname)
670
+ except KeyError:
671
+ return
672
+ if not r:
673
+ return
674
+ if counter > 0 and isinstance(r, str):
675
+ return
676
+ if isinstance(r, list):
677
+ if counter >= len(r):
678
+ return
679
+ r = r[counter]
680
+ if r[:3] == "'''":
681
+ if comment:
682
+ r = '\t/* start ' + blockname + \
683
+ ' multiline (' + repr(counter) + ') */\n' + r[3:]
684
+ else:
685
+ r = r[3:]
686
+ if r[-3:] == "'''":
687
+ if comment:
688
+ r = r[:-3] + '\n\t/* end multiline (' + repr(counter) + ')*/'
689
+ else:
690
+ r = r[:-3]
691
+ else:
692
+ errmess(f"{blockname} multiline block should end with `'''`: {repr(r)}\n")
693
+ return r
694
+
695
+
696
+ def getcallstatement(rout):
697
+ return getmultilineblock(rout, 'callstatement')
698
+
699
+
700
+ def getcallprotoargument(rout, cb_map={}):
701
+ r = getmultilineblock(rout, 'callprotoargument', comment=0)
702
+ if r:
703
+ return r
704
+ if hascallstatement(rout):
705
+ outmess(
706
+ 'warning: callstatement is defined without callprotoargument\n')
707
+ return
708
+ from .capi_maps import getctype
709
+ arg_types, arg_types2 = [], []
710
+ if l_and(isstringfunction, l_not(isfunction_wrap))(rout):
711
+ arg_types.extend(['char*', 'size_t'])
712
+ for n in rout['args']:
713
+ var = rout['vars'][n]
714
+ if isintent_callback(var):
715
+ continue
716
+ if n in cb_map:
717
+ ctype = cb_map[n] + '_typedef'
718
+ else:
719
+ ctype = getctype(var)
720
+ if l_and(isintent_c, l_or(isscalar, iscomplex))(var):
721
+ pass
722
+ elif isstring(var):
723
+ pass
724
+ elif not isattr_value(var):
725
+ ctype = ctype + '*'
726
+ if (isstring(var)
727
+ or isarrayofstrings(var) # obsolete?
728
+ or isstringarray(var)):
729
+ arg_types2.append('size_t')
730
+ arg_types.append(ctype)
731
+
732
+ proto_args = ','.join(arg_types + arg_types2)
733
+ if not proto_args:
734
+ proto_args = 'void'
735
+ return proto_args
736
+
737
+
738
+ def getusercode(rout):
739
+ return getmultilineblock(rout, 'usercode')
740
+
741
+
742
+ def getusercode1(rout):
743
+ return getmultilineblock(rout, 'usercode', counter=1)
744
+
745
+
746
+ def getpymethoddef(rout):
747
+ return getmultilineblock(rout, 'pymethoddef')
748
+
749
+
750
+ def getargs(rout):
751
+ sortargs, args = [], []
752
+ if 'args' in rout:
753
+ args = rout['args']
754
+ if 'sortvars' in rout:
755
+ for a in rout['sortvars']:
756
+ if a in args:
757
+ sortargs.append(a)
758
+ for a in args:
759
+ if a not in sortargs:
760
+ sortargs.append(a)
761
+ else:
762
+ sortargs = rout['args']
763
+ return args, sortargs
764
+
765
+
766
+ def getargs2(rout):
767
+ sortargs, args = [], rout.get('args', [])
768
+ auxvars = [a for a in rout['vars'].keys() if isintent_aux(rout['vars'][a])
769
+ and a not in args]
770
+ args = auxvars + args
771
+ if 'sortvars' in rout:
772
+ for a in rout['sortvars']:
773
+ if a in args:
774
+ sortargs.append(a)
775
+ for a in args:
776
+ if a not in sortargs:
777
+ sortargs.append(a)
778
+ else:
779
+ sortargs = auxvars + rout['args']
780
+ return args, sortargs
781
+
782
+
783
+ def getrestdoc(rout):
784
+ if 'f2pymultilines' not in rout:
785
+ return None
786
+ k = None
787
+ if rout['block'] == 'python module':
788
+ k = rout['block'], rout['name']
789
+ return rout['f2pymultilines'].get(k, None)
790
+
791
+
792
+ def gentitle(name):
793
+ ln = (80 - len(name) - 6) // 2
794
+ return f"/*{ln * '*'} {name} {ln * '*'}*/"
795
+
796
+
797
+ def flatlist(lst):
798
+ if isinstance(lst, list):
799
+ return reduce(lambda x, y, f=flatlist: x + f(y), lst, [])
800
+ return [lst]
801
+
802
+
803
+ def stripcomma(s):
804
+ if s and s[-1] == ',':
805
+ return s[:-1]
806
+ return s
807
+
808
+
809
+ def replace(str, d, defaultsep=''):
810
+ if isinstance(d, list):
811
+ return [replace(str, _m, defaultsep) for _m in d]
812
+ if isinstance(str, list):
813
+ return [replace(_m, d, defaultsep) for _m in str]
814
+ for k in 2 * list(d.keys()):
815
+ if k == 'separatorsfor':
816
+ continue
817
+ if 'separatorsfor' in d and k in d['separatorsfor']:
818
+ sep = d['separatorsfor'][k]
819
+ else:
820
+ sep = defaultsep
821
+ if isinstance(d[k], list):
822
+ str = str.replace(f'#{k}#', sep.join(flatlist(d[k])))
823
+ else:
824
+ str = str.replace(f'#{k}#', d[k])
825
+ return str
826
+
827
+
828
+ def dictappend(rd, ar):
829
+ if isinstance(ar, list):
830
+ for a in ar:
831
+ rd = dictappend(rd, a)
832
+ return rd
833
+ for k in ar.keys():
834
+ if k[0] == '_':
835
+ continue
836
+ if k in rd:
837
+ if isinstance(rd[k], str):
838
+ rd[k] = [rd[k]]
839
+ if isinstance(rd[k], list):
840
+ if isinstance(ar[k], list):
841
+ rd[k] = rd[k] + ar[k]
842
+ else:
843
+ rd[k].append(ar[k])
844
+ elif isinstance(rd[k], dict):
845
+ if isinstance(ar[k], dict):
846
+ if k == 'separatorsfor':
847
+ for k1 in ar[k].keys():
848
+ if k1 not in rd[k]:
849
+ rd[k][k1] = ar[k][k1]
850
+ else:
851
+ rd[k] = dictappend(rd[k], ar[k])
852
+ else:
853
+ rd[k] = ar[k]
854
+ return rd
855
+
856
+
857
+ def applyrules(rules, d, var={}):
858
+ ret = {}
859
+ if isinstance(rules, list):
860
+ for r in rules:
861
+ rr = applyrules(r, d, var)
862
+ ret = dictappend(ret, rr)
863
+ if '_break' in rr:
864
+ break
865
+ return ret
866
+ if '_check' in rules and (not rules['_check'](var)):
867
+ return ret
868
+ if 'need' in rules:
869
+ res = applyrules({'needs': rules['need']}, d, var)
870
+ if 'needs' in res:
871
+ cfuncs.append_needs(res['needs'])
872
+
873
+ for k in rules.keys():
874
+ if k == 'separatorsfor':
875
+ ret[k] = rules[k]
876
+ continue
877
+ if isinstance(rules[k], str):
878
+ ret[k] = replace(rules[k], d)
879
+ elif isinstance(rules[k], list):
880
+ ret[k] = []
881
+ for i in rules[k]:
882
+ ar = applyrules({k: i}, d, var)
883
+ if k in ar:
884
+ ret[k].append(ar[k])
885
+ elif k[0] == '_':
886
+ continue
887
+ elif isinstance(rules[k], dict):
888
+ ret[k] = []
889
+ for k1 in rules[k].keys():
890
+ if isinstance(k1, types.FunctionType) and k1(var):
891
+ if isinstance(rules[k][k1], list):
892
+ for i in rules[k][k1]:
893
+ if isinstance(i, dict):
894
+ res = applyrules({'supertext': i}, d, var)
895
+ i = res.get('supertext', '')
896
+ ret[k].append(replace(i, d))
897
+ else:
898
+ i = rules[k][k1]
899
+ if isinstance(i, dict):
900
+ res = applyrules({'supertext': i}, d)
901
+ i = res.get('supertext', '')
902
+ ret[k].append(replace(i, d))
903
+ else:
904
+ errmess(f'applyrules: ignoring rule {repr(rules[k])}.\n')
905
+ if isinstance(ret[k], list):
906
+ if len(ret[k]) == 1:
907
+ ret[k] = ret[k][0]
908
+ if ret[k] == []:
909
+ del ret[k]
910
+ return ret
911
+
912
+
913
+ _f2py_module_name_match = re.compile(r'\s*python\s*module\s*(?P<name>[\w_]+)',
914
+ re.I).match
915
+ _f2py_user_module_name_match = re.compile(r'\s*python\s*module\s*(?P<name>[\w_]*?'
916
+ r'__user__[\w_]*)', re.I).match
917
+
918
+ def get_f2py_modulename(source):
919
+ name = None
920
+ with open(source) as f:
921
+ for line in f:
922
+ m = _f2py_module_name_match(line)
923
+ if m:
924
+ if _f2py_user_module_name_match(line): # skip *__user__* names
925
+ continue
926
+ name = m.group('name')
927
+ break
928
+ return name
929
+
930
+ def getuseblocks(pymod):
931
+ all_uses = []
932
+ for inner in pymod['body']:
933
+ for modblock in inner['body']:
934
+ if modblock.get('use'):
935
+ all_uses.extend([x for x in modblock.get("use").keys() if "__" not in x])
936
+ return all_uses
937
+
938
+ def process_f2cmap_dict(f2cmap_all, new_map, c2py_map, verbose=False):
939
+ """
940
+ Update the Fortran-to-C type mapping dictionary with new mappings and
941
+ return a list of successfully mapped C types.
942
+
943
+ This function integrates a new mapping dictionary into an existing
944
+ Fortran-to-C type mapping dictionary. It ensures that all keys are in
945
+ lowercase and validates new entries against a given C-to-Python mapping
946
+ dictionary. Redefinitions and invalid entries are reported with a warning.
947
+
948
+ Parameters
949
+ ----------
950
+ f2cmap_all : dict
951
+ The existing Fortran-to-C type mapping dictionary that will be updated.
952
+ It should be a dictionary of dictionaries where the main keys represent
953
+ Fortran types and the nested dictionaries map Fortran type specifiers
954
+ to corresponding C types.
955
+
956
+ new_map : dict
957
+ A dictionary containing new type mappings to be added to `f2cmap_all`.
958
+ The structure should be similar to `f2cmap_all`, with keys representing
959
+ Fortran types and values being dictionaries of type specifiers and their
960
+ C type equivalents.
961
+
962
+ c2py_map : dict
963
+ A dictionary used for validating the C types in `new_map`. It maps C
964
+ types to corresponding Python types and is used to ensure that the C
965
+ types specified in `new_map` are valid.
966
+
967
+ verbose : boolean
968
+ A flag used to provide information about the types mapped
969
+
970
+ Returns
971
+ -------
972
+ tuple of (dict, list)
973
+ The updated Fortran-to-C type mapping dictionary and a list of
974
+ successfully mapped C types.
975
+ """
976
+ f2cmap_mapped = []
977
+
978
+ new_map_lower = {}
979
+ for k, d1 in new_map.items():
980
+ d1_lower = {k1.lower(): v1 for k1, v1 in d1.items()}
981
+ new_map_lower[k.lower()] = d1_lower
982
+
983
+ for k, d1 in new_map_lower.items():
984
+ if k not in f2cmap_all:
985
+ f2cmap_all[k] = {}
986
+
987
+ for k1, v1 in d1.items():
988
+ if v1 in c2py_map:
989
+ if k1 in f2cmap_all[k]:
990
+ outmess(
991
+ "\tWarning: redefinition of {'%s':{'%s':'%s'->'%s'}}\n"
992
+ % (k, k1, f2cmap_all[k][k1], v1)
993
+ )
994
+ f2cmap_all[k][k1] = v1
995
+ if verbose:
996
+ outmess(f'\tMapping "{k}(kind={k1})" to "{v1}\"\n')
997
+ f2cmap_mapped.append(v1)
998
+ elif verbose:
999
+ errmess(
1000
+ "\tIgnoring map {'%s':{'%s':'%s'}}: '%s' must be in %s\n"
1001
+ % (k, k1, v1, v1, list(c2py_map.keys()))
1002
+ )
1003
+
1004
+ return f2cmap_all, f2cmap_mapped