scipy 1.16.0rc1__cp311-cp311-win_amd64.whl → 1.16.0rc2__cp311-cp311-win_amd64.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 (253) hide show
  1. scipy/__config__.py +7 -7
  2. scipy/_cyutility.cp311-win_amd64.dll.a +0 -0
  3. scipy/_cyutility.cp311-win_amd64.pyd +0 -0
  4. scipy/_lib/_ccallback_c.cp311-win_amd64.dll.a +0 -0
  5. scipy/_lib/_ccallback_c.cp311-win_amd64.pyd +0 -0
  6. scipy/_lib/_fpumode.cp311-win_amd64.dll.a +0 -0
  7. scipy/_lib/_fpumode.cp311-win_amd64.pyd +0 -0
  8. scipy/_lib/_test_ccallback.cp311-win_amd64.dll.a +0 -0
  9. scipy/_lib/_test_ccallback.cp311-win_amd64.pyd +0 -0
  10. scipy/_lib/_test_deprecation_call.cp311-win_amd64.dll.a +0 -0
  11. scipy/_lib/_test_deprecation_call.cp311-win_amd64.pyd +0 -0
  12. scipy/_lib/_test_deprecation_def.cp311-win_amd64.dll.a +0 -0
  13. scipy/_lib/_test_deprecation_def.cp311-win_amd64.pyd +0 -0
  14. scipy/_lib/_uarray/_uarray.cp311-win_amd64.dll.a +0 -0
  15. scipy/_lib/_uarray/_uarray.cp311-win_amd64.pyd +0 -0
  16. scipy/_lib/messagestream.cp311-win_amd64.dll.a +0 -0
  17. scipy/_lib/messagestream.cp311-win_amd64.pyd +0 -0
  18. scipy/cluster/_hierarchy.cp311-win_amd64.dll.a +0 -0
  19. scipy/cluster/_hierarchy.cp311-win_amd64.pyd +0 -0
  20. scipy/cluster/_optimal_leaf_ordering.cp311-win_amd64.dll.a +0 -0
  21. scipy/cluster/_optimal_leaf_ordering.cp311-win_amd64.pyd +0 -0
  22. scipy/cluster/_vq.cp311-win_amd64.dll.a +0 -0
  23. scipy/cluster/_vq.cp311-win_amd64.pyd +0 -0
  24. scipy/fft/_pocketfft/pypocketfft.cp311-win_amd64.dll.a +0 -0
  25. scipy/fft/_pocketfft/pypocketfft.cp311-win_amd64.pyd +0 -0
  26. scipy/fftpack/convolve.cp311-win_amd64.dll.a +0 -0
  27. scipy/fftpack/convolve.cp311-win_amd64.pyd +0 -0
  28. scipy/integrate/_dop.cp311-win_amd64.dll.a +0 -0
  29. scipy/integrate/_dop.cp311-win_amd64.pyd +0 -0
  30. scipy/integrate/_lsoda.cp311-win_amd64.dll.a +0 -0
  31. scipy/integrate/_lsoda.cp311-win_amd64.pyd +0 -0
  32. scipy/integrate/_odepack.cp311-win_amd64.dll.a +0 -0
  33. scipy/integrate/_odepack.cp311-win_amd64.pyd +0 -0
  34. scipy/integrate/_quadpack.cp311-win_amd64.dll.a +0 -0
  35. scipy/integrate/_quadpack.cp311-win_amd64.pyd +0 -0
  36. scipy/integrate/_test_multivariate.cp311-win_amd64.dll.a +0 -0
  37. scipy/integrate/_test_multivariate.cp311-win_amd64.pyd +0 -0
  38. scipy/integrate/_test_odeint_banded.cp311-win_amd64.dll.a +0 -0
  39. scipy/integrate/_test_odeint_banded.cp311-win_amd64.pyd +0 -0
  40. scipy/integrate/_vode.cp311-win_amd64.dll.a +0 -0
  41. scipy/integrate/_vode.cp311-win_amd64.pyd +0 -0
  42. scipy/interpolate/_dfitpack.cp311-win_amd64.dll.a +0 -0
  43. scipy/interpolate/_dfitpack.cp311-win_amd64.pyd +0 -0
  44. scipy/interpolate/_dierckx.cp311-win_amd64.dll.a +0 -0
  45. scipy/interpolate/_dierckx.cp311-win_amd64.pyd +0 -0
  46. scipy/interpolate/_fitpack.cp311-win_amd64.dll.a +0 -0
  47. scipy/interpolate/_fitpack.cp311-win_amd64.pyd +0 -0
  48. scipy/interpolate/_interpnd.cp311-win_amd64.dll.a +0 -0
  49. scipy/interpolate/_interpnd.cp311-win_amd64.pyd +0 -0
  50. scipy/interpolate/_ppoly.cp311-win_amd64.dll.a +0 -0
  51. scipy/interpolate/_ppoly.cp311-win_amd64.pyd +0 -0
  52. scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.dll.a +0 -0
  53. scipy/interpolate/_rbfinterp_pythran.cp311-win_amd64.pyd +0 -0
  54. scipy/interpolate/_rgi_cython.cp311-win_amd64.dll.a +0 -0
  55. scipy/interpolate/_rgi_cython.cp311-win_amd64.pyd +0 -0
  56. scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.dll.a +0 -0
  57. scipy/io/_fast_matrix_market/_fmm_core.cp311-win_amd64.pyd +0 -0
  58. scipy/io/_test_fortran.cp311-win_amd64.dll.a +0 -0
  59. scipy/io/_test_fortran.cp311-win_amd64.pyd +0 -0
  60. scipy/io/matlab/_mio5_utils.cp311-win_amd64.dll.a +0 -0
  61. scipy/io/matlab/_mio5_utils.cp311-win_amd64.pyd +0 -0
  62. scipy/io/matlab/_mio_utils.cp311-win_amd64.dll.a +0 -0
  63. scipy/io/matlab/_mio_utils.cp311-win_amd64.pyd +0 -0
  64. scipy/io/matlab/_streams.cp311-win_amd64.dll.a +0 -0
  65. scipy/io/matlab/_streams.cp311-win_amd64.pyd +0 -0
  66. scipy/linalg/_cythonized_array_utils.cp311-win_amd64.dll.a +0 -0
  67. scipy/linalg/_cythonized_array_utils.cp311-win_amd64.pyd +0 -0
  68. scipy/linalg/_decomp_interpolative.cp311-win_amd64.dll.a +0 -0
  69. scipy/linalg/_decomp_interpolative.cp311-win_amd64.pyd +0 -0
  70. scipy/linalg/_decomp_lu_cython.cp311-win_amd64.dll.a +0 -0
  71. scipy/linalg/_decomp_lu_cython.cp311-win_amd64.pyd +0 -0
  72. scipy/linalg/_decomp_update.cp311-win_amd64.dll.a +0 -0
  73. scipy/linalg/_decomp_update.cp311-win_amd64.pyd +0 -0
  74. scipy/linalg/_fblas.cp311-win_amd64.dll.a +0 -0
  75. scipy/linalg/_fblas.cp311-win_amd64.pyd +0 -0
  76. scipy/linalg/_flapack.cp311-win_amd64.dll.a +0 -0
  77. scipy/linalg/_flapack.cp311-win_amd64.pyd +0 -0
  78. scipy/linalg/_linalg_pythran.cp311-win_amd64.dll.a +0 -0
  79. scipy/linalg/_linalg_pythran.cp311-win_amd64.pyd +0 -0
  80. scipy/linalg/_matfuncs_expm.cp311-win_amd64.dll.a +0 -0
  81. scipy/linalg/_matfuncs_expm.cp311-win_amd64.pyd +0 -0
  82. scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.dll.a +0 -0
  83. scipy/linalg/_matfuncs_schur_sqrtm.cp311-win_amd64.pyd +0 -0
  84. scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.dll.a +0 -0
  85. scipy/linalg/_matfuncs_sqrtm_triu.cp311-win_amd64.pyd +0 -0
  86. scipy/linalg/_solve_toeplitz.cp311-win_amd64.dll.a +0 -0
  87. scipy/linalg/_solve_toeplitz.cp311-win_amd64.pyd +0 -0
  88. scipy/linalg/cython_blas.cp311-win_amd64.dll.a +0 -0
  89. scipy/linalg/cython_blas.cp311-win_amd64.pyd +0 -0
  90. scipy/linalg/cython_lapack.cp311-win_amd64.dll.a +0 -0
  91. scipy/linalg/cython_lapack.cp311-win_amd64.pyd +0 -0
  92. scipy/ndimage/_ctest.cp311-win_amd64.dll.a +0 -0
  93. scipy/ndimage/_ctest.cp311-win_amd64.pyd +0 -0
  94. scipy/ndimage/_cytest.cp311-win_amd64.dll.a +0 -0
  95. scipy/ndimage/_cytest.cp311-win_amd64.pyd +0 -0
  96. scipy/ndimage/_filters.py +41 -21
  97. scipy/ndimage/_nd_image.cp311-win_amd64.dll.a +0 -0
  98. scipy/ndimage/_nd_image.cp311-win_amd64.pyd +0 -0
  99. scipy/ndimage/_ni_label.cp311-win_amd64.dll.a +0 -0
  100. scipy/ndimage/_ni_label.cp311-win_amd64.pyd +0 -0
  101. scipy/ndimage/_rank_filter_1d.cp311-win_amd64.dll.a +0 -0
  102. scipy/ndimage/_rank_filter_1d.cp311-win_amd64.pyd +0 -0
  103. scipy/ndimage/tests/test_filters.py +42 -9
  104. scipy/odr/__odrpack.cp311-win_amd64.dll.a +0 -0
  105. scipy/odr/__odrpack.cp311-win_amd64.pyd +0 -0
  106. scipy/optimize/_bglu_dense.cp311-win_amd64.dll.a +0 -0
  107. scipy/optimize/_bglu_dense.cp311-win_amd64.pyd +0 -0
  108. scipy/optimize/_direct.cp311-win_amd64.dll.a +0 -0
  109. scipy/optimize/_direct.cp311-win_amd64.pyd +0 -0
  110. scipy/optimize/_group_columns.cp311-win_amd64.dll.a +0 -0
  111. scipy/optimize/_group_columns.cp311-win_amd64.pyd +0 -0
  112. scipy/optimize/_highspy/_core.cp311-win_amd64.dll.a +0 -0
  113. scipy/optimize/_highspy/_core.cp311-win_amd64.pyd +0 -0
  114. scipy/optimize/_highspy/_highs_options.cp311-win_amd64.dll.a +0 -0
  115. scipy/optimize/_highspy/_highs_options.cp311-win_amd64.pyd +0 -0
  116. scipy/optimize/_lbfgsb.cp311-win_amd64.dll.a +0 -0
  117. scipy/optimize/_lbfgsb.cp311-win_amd64.pyd +0 -0
  118. scipy/optimize/_lsap.cp311-win_amd64.dll.a +0 -0
  119. scipy/optimize/_lsap.cp311-win_amd64.pyd +0 -0
  120. scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.dll.a +0 -0
  121. scipy/optimize/_lsq/givens_elimination.cp311-win_amd64.pyd +0 -0
  122. scipy/optimize/_minpack.cp311-win_amd64.dll.a +0 -0
  123. scipy/optimize/_minpack.cp311-win_amd64.pyd +0 -0
  124. scipy/optimize/_moduleTNC.cp311-win_amd64.dll.a +0 -0
  125. scipy/optimize/_moduleTNC.cp311-win_amd64.pyd +0 -0
  126. scipy/optimize/_pava_pybind.cp311-win_amd64.dll.a +0 -0
  127. scipy/optimize/_pava_pybind.cp311-win_amd64.pyd +0 -0
  128. scipy/optimize/_slsqplib.cp311-win_amd64.dll.a +0 -0
  129. scipy/optimize/_slsqplib.cp311-win_amd64.pyd +0 -0
  130. scipy/optimize/_trlib/_trlib.cp311-win_amd64.dll.a +0 -0
  131. scipy/optimize/_trlib/_trlib.cp311-win_amd64.pyd +0 -0
  132. scipy/optimize/_zeros.cp311-win_amd64.dll.a +0 -0
  133. scipy/optimize/_zeros.cp311-win_amd64.pyd +0 -0
  134. scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.dll.a +0 -0
  135. scipy/optimize/cython_optimize/_zeros.cp311-win_amd64.pyd +0 -0
  136. scipy/optimize/tests/test_lsq_linear.py +1 -1
  137. scipy/signal/_max_len_seq_inner.cp311-win_amd64.dll.a +0 -0
  138. scipy/signal/_max_len_seq_inner.cp311-win_amd64.pyd +0 -0
  139. scipy/signal/_peak_finding_utils.cp311-win_amd64.dll.a +0 -0
  140. scipy/signal/_peak_finding_utils.cp311-win_amd64.pyd +0 -0
  141. scipy/signal/_sigtools.cp311-win_amd64.dll.a +0 -0
  142. scipy/signal/_sigtools.cp311-win_amd64.pyd +0 -0
  143. scipy/signal/_sosfilt.cp311-win_amd64.dll.a +0 -0
  144. scipy/signal/_sosfilt.cp311-win_amd64.pyd +0 -0
  145. scipy/signal/_spectral_py.py +9 -0
  146. scipy/signal/_spline.cp311-win_amd64.dll.a +0 -0
  147. scipy/signal/_spline.cp311-win_amd64.pyd +0 -0
  148. scipy/signal/_upfirdn_apply.cp311-win_amd64.dll.a +0 -0
  149. scipy/signal/_upfirdn_apply.cp311-win_amd64.pyd +0 -0
  150. scipy/signal/tests/test_spectral.py +31 -0
  151. scipy/sparse/_base.py +1 -1
  152. scipy/sparse/_csparsetools.cp311-win_amd64.dll.a +0 -0
  153. scipy/sparse/_csparsetools.cp311-win_amd64.pyd +0 -0
  154. scipy/sparse/_sparsetools.cp311-win_amd64.dll.a +0 -0
  155. scipy/sparse/_sparsetools.cp311-win_amd64.pyd +0 -0
  156. scipy/sparse/csgraph/_flow.cp311-win_amd64.dll.a +0 -0
  157. scipy/sparse/csgraph/_flow.cp311-win_amd64.pyd +0 -0
  158. scipy/sparse/csgraph/_matching.cp311-win_amd64.dll.a +0 -0
  159. scipy/sparse/csgraph/_matching.cp311-win_amd64.pyd +0 -0
  160. scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.dll.a +0 -0
  161. scipy/sparse/csgraph/_min_spanning_tree.cp311-win_amd64.pyd +0 -0
  162. scipy/sparse/csgraph/_reordering.cp311-win_amd64.dll.a +0 -0
  163. scipy/sparse/csgraph/_reordering.cp311-win_amd64.pyd +0 -0
  164. scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.dll.a +0 -0
  165. scipy/sparse/csgraph/_shortest_path.cp311-win_amd64.pyd +0 -0
  166. scipy/sparse/csgraph/_tools.cp311-win_amd64.dll.a +0 -0
  167. scipy/sparse/csgraph/_tools.cp311-win_amd64.pyd +0 -0
  168. scipy/sparse/csgraph/_traversal.cp311-win_amd64.dll.a +0 -0
  169. scipy/sparse/csgraph/_traversal.cp311-win_amd64.pyd +0 -0
  170. scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.dll.a +0 -0
  171. scipy/sparse/linalg/_dsolve/_superlu.cp311-win_amd64.pyd +0 -0
  172. scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.dll.a +0 -0
  173. scipy/sparse/linalg/_eigen/arpack/_arpack.cp311-win_amd64.pyd +0 -0
  174. scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.dll.a +0 -0
  175. scipy/sparse/linalg/_propack/_cpropack.cp311-win_amd64.pyd +0 -0
  176. scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.dll.a +0 -0
  177. scipy/sparse/linalg/_propack/_dpropack.cp311-win_amd64.pyd +0 -0
  178. scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.dll.a +0 -0
  179. scipy/sparse/linalg/_propack/_spropack.cp311-win_amd64.pyd +0 -0
  180. scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.dll.a +0 -0
  181. scipy/sparse/linalg/_propack/_zpropack.cp311-win_amd64.pyd +0 -0
  182. scipy/sparse/tests/test_base.py +7 -0
  183. scipy/spatial/_ckdtree.cp311-win_amd64.dll.a +0 -0
  184. scipy/spatial/_ckdtree.cp311-win_amd64.pyd +0 -0
  185. scipy/spatial/_distance_pybind.cp311-win_amd64.dll.a +0 -0
  186. scipy/spatial/_distance_pybind.cp311-win_amd64.pyd +0 -0
  187. scipy/spatial/_distance_wrap.cp311-win_amd64.dll.a +0 -0
  188. scipy/spatial/_distance_wrap.cp311-win_amd64.pyd +0 -0
  189. scipy/spatial/_hausdorff.cp311-win_amd64.dll.a +0 -0
  190. scipy/spatial/_hausdorff.cp311-win_amd64.pyd +0 -0
  191. scipy/spatial/_qhull.cp311-win_amd64.dll.a +0 -0
  192. scipy/spatial/_qhull.cp311-win_amd64.pyd +0 -0
  193. scipy/spatial/_voronoi.cp311-win_amd64.dll.a +0 -0
  194. scipy/spatial/_voronoi.cp311-win_amd64.pyd +0 -0
  195. scipy/spatial/tests/test_distance.py +12 -0
  196. scipy/spatial/transform/_rigid_transform.cp311-win_amd64.dll.a +0 -0
  197. scipy/spatial/transform/_rigid_transform.cp311-win_amd64.pyd +0 -0
  198. scipy/spatial/transform/_rotation.cp311-win_amd64.dll.a +0 -0
  199. scipy/spatial/transform/_rotation.cp311-win_amd64.pyd +0 -0
  200. scipy/special/_comb.cp311-win_amd64.dll.a +0 -0
  201. scipy/special/_comb.cp311-win_amd64.pyd +0 -0
  202. scipy/special/_ellip_harm_2.cp311-win_amd64.dll.a +0 -0
  203. scipy/special/_ellip_harm_2.cp311-win_amd64.pyd +0 -0
  204. scipy/special/_gufuncs.cp311-win_amd64.dll.a +0 -0
  205. scipy/special/_gufuncs.cp311-win_amd64.pyd +0 -0
  206. scipy/special/_specfun.cp311-win_amd64.dll.a +0 -0
  207. scipy/special/_specfun.cp311-win_amd64.pyd +0 -0
  208. scipy/special/_special_ufuncs.cp311-win_amd64.dll.a +0 -0
  209. scipy/special/_special_ufuncs.cp311-win_amd64.pyd +0 -0
  210. scipy/special/_test_internal.cp311-win_amd64.dll.a +0 -0
  211. scipy/special/_test_internal.cp311-win_amd64.pyd +0 -0
  212. scipy/special/_ufuncs.cp311-win_amd64.dll.a +0 -0
  213. scipy/special/_ufuncs.cp311-win_amd64.pyd +0 -0
  214. scipy/special/_ufuncs_cxx.cp311-win_amd64.dll.a +0 -0
  215. scipy/special/_ufuncs_cxx.cp311-win_amd64.pyd +0 -0
  216. scipy/special/cython_special.cp311-win_amd64.dll.a +0 -0
  217. scipy/special/cython_special.cp311-win_amd64.pyd +0 -0
  218. scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.dll.a +0 -0
  219. scipy/stats/_ansari_swilk_statistics.cp311-win_amd64.pyd +0 -0
  220. scipy/stats/_axis_nan_policy.py +1 -9
  221. scipy/stats/_biasedurn.cp311-win_amd64.dll.a +0 -0
  222. scipy/stats/_biasedurn.cp311-win_amd64.pyd +0 -0
  223. scipy/stats/_correlation.py +1 -1
  224. scipy/stats/_entropy.py +2 -2
  225. scipy/stats/_hypotests.py +1 -1
  226. scipy/stats/_levy_stable/levyst.cp311-win_amd64.dll.a +0 -0
  227. scipy/stats/_levy_stable/levyst.cp311-win_amd64.pyd +0 -0
  228. scipy/stats/_morestats.py +7 -7
  229. scipy/stats/_qmc_cy.cp311-win_amd64.dll.a +0 -0
  230. scipy/stats/_qmc_cy.cp311-win_amd64.pyd +0 -0
  231. scipy/stats/_qmvnt_cy.cp311-win_amd64.dll.a +0 -0
  232. scipy/stats/_qmvnt_cy.cp311-win_amd64.pyd +0 -0
  233. scipy/stats/_rcont/rcont.cp311-win_amd64.dll.a +0 -0
  234. scipy/stats/_rcont/rcont.cp311-win_amd64.pyd +0 -0
  235. scipy/stats/_sobol.cp311-win_amd64.dll.a +0 -0
  236. scipy/stats/_sobol.cp311-win_amd64.pyd +0 -0
  237. scipy/stats/_stats.cp311-win_amd64.dll.a +0 -0
  238. scipy/stats/_stats.cp311-win_amd64.pyd +0 -0
  239. scipy/stats/_stats_mstats_common.py +4 -2
  240. scipy/stats/_stats_py.py +18 -18
  241. scipy/stats/_stats_pythran.cp311-win_amd64.dll.a +0 -0
  242. scipy/stats/_stats_pythran.cp311-win_amd64.pyd +0 -0
  243. scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.dll.a +0 -0
  244. scipy/stats/_unuran/unuran_wrapper.cp311-win_amd64.pyd +0 -0
  245. scipy/stats/_variation.py +1 -1
  246. scipy/version.py +2 -2
  247. scipy-1.16.0rc2.dist-info/DELVEWHEEL +2 -0
  248. {scipy-1.16.0rc1.dist-info → scipy-1.16.0rc2.dist-info}/LICENSE.txt +3 -3
  249. {scipy-1.16.0rc1.dist-info → scipy-1.16.0rc2.dist-info}/METADATA +4 -4
  250. {scipy-1.16.0rc1.dist-info → scipy-1.16.0rc2.dist-info}/RECORD +252 -252
  251. scipy-1.16.0rc1.dist-info/DELVEWHEEL +0 -2
  252. /scipy-1.16.0rc1-cp311-cp311-win_amd64.whl → /scipy-1.16.0rc2-cp311-cp311-win_amd64.whl +0 -0
  253. {scipy-1.16.0rc1.dist-info → scipy-1.16.0rc2.dist-info}/WHEEL +0 -0
@@ -239,7 +239,7 @@ class SparseMixin:
239
239
 
240
240
  # Default lsmr arguments should not fully converge the solution
241
241
  default_lsmr_sol = lsq_linear(A, b, lsq_solver='lsmr')
242
- with pytest.raises(AssertionError, match=""):
242
+ with pytest.raises(AssertionError):
243
243
  assert_allclose(exact_sol.x, default_lsmr_sol.x)
244
244
 
245
245
  # By increasing the maximum lsmr iters, it will converge
Binary file
Binary file
Binary file
@@ -897,6 +897,15 @@ def csd(x, y, fs=1.0, window='hann', nperseg=None, noverlap=None, nfft=None,
897
897
  if np.iscomplexobj(x) and return_onesided:
898
898
  return_onesided = False
899
899
 
900
+ if x.shape[axis] < y.shape[axis]: # zero-pad x to shape of y:
901
+ z_shape = list(y.shape)
902
+ z_shape[axis] = y.shape[axis] - x.shape[axis]
903
+ x = np.concatenate((x, np.zeros(z_shape)), axis=axis)
904
+ elif y.shape[axis] < x.shape[axis]: # zero-pad y to shape of x:
905
+ z_shape = list(x.shape)
906
+ z_shape[axis] = x.shape[axis] - y.shape[axis]
907
+ y = np.concatenate((y, np.zeros(z_shape)), axis=axis)
908
+
900
909
  # using cast() to make mypy happy:
901
910
  fft_mode = cast(FFT_MODE_TYPE, 'onesided' if return_onesided else 'twosided')
902
911
  if scaling not in (scales := {'spectrum': 'magnitude', 'density': 'psd'}):
Binary file
Binary file
@@ -8,6 +8,7 @@ import pytest
8
8
  from pytest import raises as assert_raises
9
9
 
10
10
  from scipy import signal
11
+ from scipy._lib._array_api import xp_assert_close
11
12
  from scipy.fft import fftfreq, rfftfreq, fft, irfft
12
13
  from scipy.integrate import trapezoid
13
14
  from scipy.signal import (periodogram, welch, lombscargle, coherence, csd,
@@ -591,6 +592,36 @@ class TestCSD:
591
592
  assert_allclose(f, f1)
592
593
  assert_allclose(c, c1)
593
594
 
595
+ def test_unequal_length_input_1D(self):
596
+ """Test zero-padding for input `x.shape[axis] != y.shape[axis]` for 1d arrays.
597
+
598
+ This test ensures that issue 23036 is fixed.
599
+ """
600
+ x = np.tile([4, 0, -4, 0], 4)
601
+
602
+ kw = dict(fs=len(x), window='boxcar', nperseg=4)
603
+ X0 = signal.csd(x, np.copy(x), **kw)[1] # `x is x` must be False
604
+ X1 = signal.csd(x, x[:8], **kw)[1]
605
+ X2 = signal.csd(x[:8], x, **kw)[1]
606
+ xp_assert_close(X1, X0 / 2)
607
+ xp_assert_close(X2, X0 / 2)
608
+
609
+ def test_unequal_length_input_3D(self):
610
+ """Test zero-padding for input `x.shape[axis] != y.shape[axis]` for 3d arrays.
611
+
612
+ This test ensures that issue 23036 is fixed.
613
+ """
614
+ n = 8
615
+ x = np.zeros(2 * 3 * n).reshape(2, n, 3)
616
+ x[:, 0, :] = n
617
+
618
+ kw = dict(fs=n, window='boxcar', nperseg=n, detrend=None, axis=1)
619
+ X0 = signal.csd(x, x.copy(), **kw)[1] # `x is x` must be False
620
+ X1 = signal.csd(x, x[:, :2, :], **kw)[1]
621
+ X2 = signal.csd(x[:, :2, :], x, **kw)[1]
622
+ xp_assert_close(X1, X0)
623
+ xp_assert_close(X2, X0)
624
+
594
625
  def test_real_onesided_even(self):
595
626
  x = np.zeros(16)
596
627
  x[0] = 1
scipy/sparse/_base.py CHANGED
@@ -658,7 +658,7 @@ class _spbase(SparseABC):
658
658
  # eq and ne return True or False instead of an array when the shapes
659
659
  # don't match. Numpy doesn't do this. Is this what we want?
660
660
  if op in (operator.eq, operator.ne):
661
- return op == operator.eq
661
+ return op is operator.ne
662
662
  raise ValueError("inconsistent shape")
663
663
 
664
664
  csr_self = (self if self.ndim < 3 else self.reshape(1, -1)).tocsr()
@@ -433,6 +433,13 @@ class _TestCommon:
433
433
  for dtype in self.checked_dtypes:
434
434
  check(dtype)
435
435
 
436
+ def test_eq_ne_different_shapes(self):
437
+ if self.datsp.format not in ['bsr', 'csc', 'csr']:
438
+ pytest.skip("Bool comparisons only implemented for BSR, CSC, and CSR.")
439
+ # Is this what we want? numpy raises when shape differs. we return False.
440
+ assert (self.datsp == self.datsp.T) is False
441
+ assert (self.datsp != self.datsp.T) is True
442
+
436
443
  def test_lt(self):
437
444
  sup = suppress_warnings()
438
445
  sup.filter(SparseEfficiencyWarning)
Binary file
Binary file
Binary file
Binary file
@@ -2231,6 +2231,18 @@ def test_immutable_input(metric):
2231
2231
  getattr(scipy.spatial.distance, metric)(x, x, w=x)
2232
2232
 
2233
2233
 
2234
+ def test_gh_23109():
2235
+ a = np.array([0, 0, 1, 1])
2236
+ b = np.array([0, 1, 1, 0])
2237
+ w = np.asarray([1.5, 1.2, 0.7, 1.3])
2238
+ expected = yule(a, b, w=w)
2239
+ assert_allclose(expected, 1.1954022988505748)
2240
+ actual = cdist(np.atleast_2d(a),
2241
+ np.atleast_2d(b),
2242
+ metric='yule', w=w)
2243
+ assert_allclose(actual, expected)
2244
+
2245
+
2234
2246
  class TestJaccard:
2235
2247
 
2236
2248
  def test_pdist_jaccard_random(self):
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -403,17 +403,9 @@ def _axis_nan_policy_factory(tuple_to_result, default_axis=0,
403
403
  override.update(temp)
404
404
 
405
405
  if result_to_tuple is None:
406
- def result_to_tuple(res):
406
+ def result_to_tuple(res, _):
407
407
  return res
408
408
 
409
- # The only `result_to_tuple` that needs the second argument (number of
410
- # outputs) is the one for `moment`, and this was realized very late.
411
- # Rather than changing all `result_to_tuple` definitions, we wrap them
412
- # here to accept a second argument if they don't already.
413
- if len(inspect.signature(result_to_tuple).parameters) == 1:
414
- def result_to_tuple(res, _, f=result_to_tuple):
415
- return f(res)
416
-
417
409
  if not callable(too_small):
418
410
  def is_too_small(samples, *ts_args, axis=-1, **ts_kwargs):
419
411
  for sample in samples:
Binary file
@@ -81,7 +81,7 @@ def _chatterjeexi_iv(y_continuous, method):
81
81
  return y_continuous, method
82
82
 
83
83
 
84
- def _unpack(res):
84
+ def _unpack(res, _):
85
85
  return res.statistic, res.pvalue
86
86
 
87
87
 
scipy/stats/_entropy.py CHANGED
@@ -20,7 +20,7 @@ __all__ = ['entropy', 'differential_entropy']
20
20
  2 if ("qk" in kwgs and kwgs["qk"] is not None)
21
21
  else 1
22
22
  ),
23
- n_outputs=1, result_to_tuple=lambda x: (x,), paired=True,
23
+ n_outputs=1, result_to_tuple=lambda x, _: (x,), paired=True,
24
24
  too_small=-1 # entropy doesn't have too small inputs
25
25
  )
26
26
  def entropy(pk: np.typing.ArrayLike,
@@ -170,7 +170,7 @@ def _differential_entropy_is_too_small(samples, kwargs, axis=-1):
170
170
 
171
171
 
172
172
  @_axis_nan_policy_factory(
173
- lambda x: x, n_outputs=1, result_to_tuple=lambda x: (x,),
173
+ lambda x: x, n_outputs=1, result_to_tuple=lambda x, _: (x,),
174
174
  too_small=_differential_entropy_is_too_small
175
175
  )
176
176
  def differential_entropy(
scipy/stats/_hypotests.py CHANGED
@@ -482,7 +482,7 @@ def _cdf_cvm(x, n=None):
482
482
  return y
483
483
 
484
484
 
485
- def _cvm_result_to_tuple(res):
485
+ def _cvm_result_to_tuple(res, _):
486
486
  return res.statistic, res.pvalue
487
487
 
488
488
 
scipy/stats/_morestats.py CHANGED
@@ -222,7 +222,7 @@ def mvsdist(data):
222
222
 
223
223
 
224
224
  @_axis_nan_policy_factory(
225
- lambda x: x, result_to_tuple=lambda x: (x,), n_outputs=1, default_axis=None
225
+ lambda x: x, result_to_tuple=lambda x, _: (x,), n_outputs=1, default_axis=None
226
226
  )
227
227
  def kstat(data, n=2, *, axis=None):
228
228
  r"""
@@ -327,7 +327,7 @@ def kstat(data, n=2, *, axis=None):
327
327
 
328
328
 
329
329
  @_axis_nan_policy_factory(
330
- lambda x: x, result_to_tuple=lambda x: (x,), n_outputs=1, default_axis=None
330
+ lambda x: x, result_to_tuple=lambda x, _: (x,), n_outputs=1, default_axis=None
331
331
  )
332
332
  def kstatvar(data, n=2, *, axis=None):
333
333
  r"""Return an unbiased estimator of the variance of the k-statistic.
@@ -984,7 +984,7 @@ def boxcox_llf(lmb, data, *, axis=0, keepdims=False, nan_policy='propagate'):
984
984
 
985
985
 
986
986
  @_axis_nan_policy_factory(lambda x: x, n_outputs=1, default_axis=0,
987
- result_to_tuple=lambda x: (x,))
987
+ result_to_tuple=lambda x, _: (x,))
988
988
  def _boxcox_llf(data, axis=0, *, lmb):
989
989
  xp = array_namespace(data)
990
990
  lmb, data = xp_promote(lmb, data, force_floating=True, xp=xp)
@@ -3496,7 +3496,7 @@ def mood(x, y, axis=0, alternative="two-sided"):
3496
3496
  WilcoxonResult = _make_tuple_bunch('WilcoxonResult', ['statistic', 'pvalue'])
3497
3497
 
3498
3498
 
3499
- def wilcoxon_result_unpacker(res):
3499
+ def wilcoxon_result_unpacker(res, _):
3500
3500
  if hasattr(res, 'zstatistic'):
3501
3501
  return res.statistic, res.pvalue, res.zstatistic
3502
3502
  else:
@@ -3993,7 +3993,7 @@ def _circfuncs_common(samples, period, xp=None):
3993
3993
 
3994
3994
  @_axis_nan_policy_factory(
3995
3995
  lambda x: x, n_outputs=1, default_axis=None,
3996
- result_to_tuple=lambda x: (x,)
3996
+ result_to_tuple=lambda x, _: (x,)
3997
3997
  )
3998
3998
  def circmean(samples, high=2*pi, low=0, axis=None, nan_policy='propagate'):
3999
3999
  r"""Compute the circular mean of a sample of angle observations.
@@ -4086,7 +4086,7 @@ def circmean(samples, high=2*pi, low=0, axis=None, nan_policy='propagate'):
4086
4086
 
4087
4087
  @_axis_nan_policy_factory(
4088
4088
  lambda x: x, n_outputs=1, default_axis=None,
4089
- result_to_tuple=lambda x: (x,)
4089
+ result_to_tuple=lambda x, _: (x,)
4090
4090
  )
4091
4091
  def circvar(samples, high=2*pi, low=0, axis=None, nan_policy='propagate'):
4092
4092
  r"""Compute the circular variance of a sample of angle observations.
@@ -4180,7 +4180,7 @@ def circvar(samples, high=2*pi, low=0, axis=None, nan_policy='propagate'):
4180
4180
 
4181
4181
  @_axis_nan_policy_factory(
4182
4182
  lambda x: x, n_outputs=1, default_axis=None,
4183
- result_to_tuple=lambda x: (x,)
4183
+ result_to_tuple=lambda x, _: (x,)
4184
4184
  )
4185
4185
  def circstd(samples, high=2*pi, low=0, axis=None, nan_policy='propagate', *,
4186
4186
  normalize=False):
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -21,7 +21,8 @@ def _n_samples_optional_x(kwargs):
21
21
 
22
22
  @_axis_nan_policy_factory(TheilslopesResult, default_axis=None, n_outputs=4,
23
23
  n_samples=_n_samples_optional_x,
24
- result_to_tuple=tuple, paired=True, too_small=1)
24
+ result_to_tuple=lambda x, _: tuple(x), paired=True,
25
+ too_small=1)
25
26
  def theilslopes(y, x=None, alpha=0.95, method='separate'):
26
27
  r"""
27
28
  Computes the Theil-Sen estimator for a set of points (x, y).
@@ -204,7 +205,8 @@ def _find_repeats(arr):
204
205
 
205
206
  @_axis_nan_policy_factory(SiegelslopesResult, default_axis=None, n_outputs=2,
206
207
  n_samples=_n_samples_optional_x,
207
- result_to_tuple=tuple, paired=True, too_small=1)
208
+ result_to_tuple=lambda x, _: tuple(x), paired=True,
209
+ too_small=1)
208
210
  def siegelslopes(y, x=None, method="hierarchical"):
209
211
  r"""
210
212
  Computes the Siegel estimator for a set of points (x, y).