scipy 1.16.0rc2__cp311-cp311-musllinux_1_2_aarch64.whl → 1.16.2__cp311-cp311-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 (162) hide show
  1. scipy/__config__.py +12 -12
  2. scipy/_cyutility.cpython-311-aarch64-linux-musl.so +0 -0
  3. scipy/_lib/_ccallback_c.cpython-311-aarch64-linux-musl.so +0 -0
  4. scipy/_lib/_fpumode.cpython-311-aarch64-linux-musl.so +0 -0
  5. scipy/_lib/_test_ccallback.cpython-311-aarch64-linux-musl.so +0 -0
  6. scipy/_lib/_test_deprecation_call.cpython-311-aarch64-linux-musl.so +0 -0
  7. scipy/_lib/_test_deprecation_def.cpython-311-aarch64-linux-musl.so +0 -0
  8. scipy/_lib/_uarray/_uarray.cpython-311-aarch64-linux-musl.so +0 -0
  9. scipy/_lib/_util.py +7 -0
  10. scipy/_lib/messagestream.cpython-311-aarch64-linux-musl.so +0 -0
  11. scipy/cluster/_hierarchy.cpython-311-aarch64-linux-musl.so +0 -0
  12. scipy/cluster/_optimal_leaf_ordering.cpython-311-aarch64-linux-musl.so +0 -0
  13. scipy/cluster/_vq.cpython-311-aarch64-linux-musl.so +0 -0
  14. scipy/conftest.py +25 -0
  15. scipy/fft/_pocketfft/pypocketfft.cpython-311-aarch64-linux-musl.so +0 -0
  16. scipy/fftpack/convolve.cpython-311-aarch64-linux-musl.so +0 -0
  17. scipy/integrate/_dop.cpython-311-aarch64-linux-musl.so +0 -0
  18. scipy/integrate/_lsoda.cpython-311-aarch64-linux-musl.so +0 -0
  19. scipy/integrate/_odepack.cpython-311-aarch64-linux-musl.so +0 -0
  20. scipy/integrate/_quadpack.cpython-311-aarch64-linux-musl.so +0 -0
  21. scipy/integrate/_test_multivariate.cpython-311-aarch64-linux-musl.so +0 -0
  22. scipy/integrate/_test_odeint_banded.cpython-311-aarch64-linux-musl.so +0 -0
  23. scipy/integrate/_vode.cpython-311-aarch64-linux-musl.so +0 -0
  24. scipy/interpolate/_dfitpack.cpython-311-aarch64-linux-musl.so +0 -0
  25. scipy/interpolate/_dierckx.cpython-311-aarch64-linux-musl.so +0 -0
  26. scipy/interpolate/_fitpack.cpython-311-aarch64-linux-musl.so +0 -0
  27. scipy/interpolate/_interpnd.cpython-311-aarch64-linux-musl.so +0 -0
  28. scipy/interpolate/_ppoly.cpython-311-aarch64-linux-musl.so +0 -0
  29. scipy/interpolate/_rbfinterp_pythran.cpython-311-aarch64-linux-musl.so +0 -0
  30. scipy/interpolate/_rgi_cython.cpython-311-aarch64-linux-musl.so +0 -0
  31. scipy/io/_fast_matrix_market/_fmm_core.cpython-311-aarch64-linux-musl.so +0 -0
  32. scipy/io/_test_fortran.cpython-311-aarch64-linux-musl.so +0 -0
  33. scipy/io/matlab/_mio5_utils.cpython-311-aarch64-linux-musl.so +0 -0
  34. scipy/io/matlab/_mio_utils.cpython-311-aarch64-linux-musl.so +0 -0
  35. scipy/io/matlab/_streams.cpython-311-aarch64-linux-musl.so +0 -0
  36. scipy/io/matlab/tests/test_streams.py +9 -0
  37. scipy/linalg/_cythonized_array_utils.cpython-311-aarch64-linux-musl.so +0 -0
  38. scipy/linalg/_decomp_interpolative.cpython-311-aarch64-linux-musl.so +0 -0
  39. scipy/linalg/_decomp_lu_cython.cpython-311-aarch64-linux-musl.so +0 -0
  40. scipy/linalg/_decomp_update.cpython-311-aarch64-linux-musl.so +0 -0
  41. scipy/linalg/_fblas.cpython-311-aarch64-linux-musl.so +0 -0
  42. scipy/linalg/_flapack.cpython-311-aarch64-linux-musl.so +0 -0
  43. scipy/linalg/_linalg_pythran.cpython-311-aarch64-linux-musl.so +0 -0
  44. scipy/linalg/_matfuncs_expm.cpython-311-aarch64-linux-musl.so +0 -0
  45. scipy/linalg/_matfuncs_schur_sqrtm.cpython-311-aarch64-linux-musl.so +0 -0
  46. scipy/linalg/_matfuncs_sqrtm_triu.cpython-311-aarch64-linux-musl.so +0 -0
  47. scipy/linalg/_solve_toeplitz.cpython-311-aarch64-linux-musl.so +0 -0
  48. scipy/linalg/blas.py +35 -24
  49. scipy/linalg/cython_blas.cpython-311-aarch64-linux-musl.so +0 -0
  50. scipy/linalg/cython_lapack.cpython-311-aarch64-linux-musl.so +0 -0
  51. scipy/linalg/tests/test_lapack.py +5 -1
  52. scipy/linalg/tests/test_matfuncs.py +7 -0
  53. scipy/ndimage/_ctest.cpython-311-aarch64-linux-musl.so +0 -0
  54. scipy/ndimage/_cytest.cpython-311-aarch64-linux-musl.so +0 -0
  55. scipy/ndimage/_filters.py +11 -2
  56. scipy/ndimage/_nd_image.cpython-311-aarch64-linux-musl.so +0 -0
  57. scipy/ndimage/_ni_label.cpython-311-aarch64-linux-musl.so +0 -0
  58. scipy/ndimage/_rank_filter_1d.cpython-311-aarch64-linux-musl.so +0 -0
  59. scipy/ndimage/tests/test_filters.py +52 -0
  60. scipy/odr/__odrpack.cpython-311-aarch64-linux-musl.so +0 -0
  61. scipy/optimize/_bglu_dense.cpython-311-aarch64-linux-musl.so +0 -0
  62. scipy/optimize/_direct.cpython-311-aarch64-linux-musl.so +0 -0
  63. scipy/optimize/_group_columns.cpython-311-aarch64-linux-musl.so +0 -0
  64. scipy/optimize/_highspy/_core.cpython-311-aarch64-linux-musl.so +0 -0
  65. scipy/optimize/_highspy/_highs_options.cpython-311-aarch64-linux-musl.so +0 -0
  66. scipy/optimize/_lbfgsb.cpython-311-aarch64-linux-musl.so +0 -0
  67. scipy/optimize/_lbfgsb_py.py +25 -10
  68. scipy/optimize/_lsap.cpython-311-aarch64-linux-musl.so +0 -0
  69. scipy/optimize/_lsq/givens_elimination.cpython-311-aarch64-linux-musl.so +0 -0
  70. scipy/optimize/_lsq/least_squares.py +2 -2
  71. scipy/optimize/_minimize.py +0 -1
  72. scipy/optimize/_minpack.cpython-311-aarch64-linux-musl.so +0 -0
  73. scipy/optimize/_moduleTNC.cpython-311-aarch64-linux-musl.so +0 -0
  74. scipy/optimize/_pava_pybind.cpython-311-aarch64-linux-musl.so +0 -0
  75. scipy/optimize/_shgo_lib/_complex.py +2 -2
  76. scipy/optimize/_slsqp_py.py +5 -5
  77. scipy/optimize/_slsqplib.cpython-311-aarch64-linux-musl.so +0 -0
  78. scipy/optimize/_trlib/_trlib.cpython-311-aarch64-linux-musl.so +0 -0
  79. scipy/optimize/_zeros.cpython-311-aarch64-linux-musl.so +0 -0
  80. scipy/optimize/cython_optimize/_zeros.cpython-311-aarch64-linux-musl.so +0 -0
  81. scipy/optimize/tests/test_optimize.py +12 -3
  82. scipy/signal/_filter_design.py +13 -1
  83. scipy/signal/_fir_filter_design.py +1 -1
  84. scipy/signal/_max_len_seq_inner.cpython-311-aarch64-linux-musl.so +0 -0
  85. scipy/signal/_peak_finding_utils.cpython-311-aarch64-linux-musl.so +0 -0
  86. scipy/signal/_polyutils.py +1 -1
  87. scipy/signal/_short_time_fft.py +74 -33
  88. scipy/signal/_sigtools.cpython-311-aarch64-linux-musl.so +0 -0
  89. scipy/signal/_sosfilt.cpython-311-aarch64-linux-musl.so +0 -0
  90. scipy/signal/_spectral_py.py +2 -2
  91. scipy/signal/_spline.cpython-311-aarch64-linux-musl.so +0 -0
  92. scipy/signal/_upfirdn_apply.cpython-311-aarch64-linux-musl.so +0 -0
  93. scipy/signal/tests/test_filter_design.py +19 -0
  94. scipy/signal/tests/test_fir_filter_design.py +5 -0
  95. scipy/signal/tests/test_short_time_fft.py +9 -0
  96. scipy/signal/tests/test_signaltools.py +9 -3
  97. scipy/signal/tests/test_spectral.py +39 -1
  98. scipy/sparse/_base.py +4 -1
  99. scipy/sparse/_csparsetools.cpython-311-aarch64-linux-musl.so +0 -0
  100. scipy/sparse/_sparsetools.cpython-311-aarch64-linux-musl.so +0 -0
  101. scipy/sparse/csgraph/_flow.cpython-311-aarch64-linux-musl.so +0 -0
  102. scipy/sparse/csgraph/_matching.cpython-311-aarch64-linux-musl.so +0 -0
  103. scipy/sparse/csgraph/_min_spanning_tree.cpython-311-aarch64-linux-musl.so +0 -0
  104. scipy/sparse/csgraph/_reordering.cpython-311-aarch64-linux-musl.so +0 -0
  105. scipy/sparse/csgraph/_shortest_path.cpython-311-aarch64-linux-musl.so +0 -0
  106. scipy/sparse/csgraph/_tools.cpython-311-aarch64-linux-musl.so +0 -0
  107. scipy/sparse/csgraph/_traversal.cpython-311-aarch64-linux-musl.so +0 -0
  108. scipy/sparse/linalg/_dsolve/_superlu.cpython-311-aarch64-linux-musl.so +0 -0
  109. scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-311-aarch64-linux-musl.so +0 -0
  110. scipy/sparse/linalg/_propack/_cpropack.cpython-311-aarch64-linux-musl.so +0 -0
  111. scipy/sparse/linalg/_propack/_dpropack.cpython-311-aarch64-linux-musl.so +0 -0
  112. scipy/sparse/linalg/_propack/_spropack.cpython-311-aarch64-linux-musl.so +0 -0
  113. scipy/sparse/linalg/_propack/_zpropack.cpython-311-aarch64-linux-musl.so +0 -0
  114. scipy/sparse/tests/test_base.py +3 -0
  115. scipy/spatial/_ckdtree.cpython-311-aarch64-linux-musl.so +0 -0
  116. scipy/spatial/_distance_pybind.cpython-311-aarch64-linux-musl.so +0 -0
  117. scipy/spatial/_distance_wrap.cpython-311-aarch64-linux-musl.so +0 -0
  118. scipy/spatial/_hausdorff.cpython-311-aarch64-linux-musl.so +0 -0
  119. scipy/spatial/_qhull.cpython-311-aarch64-linux-musl.so +0 -0
  120. scipy/spatial/_voronoi.cpython-311-aarch64-linux-musl.so +0 -0
  121. scipy/spatial/qhull_src/COPYING_QHULL.txt +39 -0
  122. scipy/spatial/tests/test_distance.py +5 -4
  123. scipy/spatial/transform/_rigid_transform.cpython-311-aarch64-linux-musl.so +0 -0
  124. scipy/spatial/transform/_rotation.cpython-311-aarch64-linux-musl.so +0 -0
  125. scipy/special/_comb.cpython-311-aarch64-linux-musl.so +0 -0
  126. scipy/special/_ellip_harm_2.cpython-311-aarch64-linux-musl.so +0 -0
  127. scipy/special/_gufuncs.cpython-311-aarch64-linux-musl.so +0 -0
  128. scipy/special/_specfun.cpython-311-aarch64-linux-musl.so +0 -0
  129. scipy/special/_special_ufuncs.cpython-311-aarch64-linux-musl.so +0 -0
  130. scipy/special/_test_internal.cpython-311-aarch64-linux-musl.so +0 -0
  131. scipy/special/_ufuncs.cpython-311-aarch64-linux-musl.so +0 -0
  132. scipy/special/_ufuncs_cxx.cpython-311-aarch64-linux-musl.so +0 -0
  133. scipy/special/cython_special.cpython-311-aarch64-linux-musl.so +0 -0
  134. scipy/stats/_ansari_swilk_statistics.cpython-311-aarch64-linux-musl.so +0 -0
  135. scipy/stats/_biasedurn.cpython-311-aarch64-linux-musl.so +0 -0
  136. scipy/stats/_continuous_distns.py +19 -16
  137. scipy/stats/_distribution_infrastructure.py +20 -0
  138. scipy/stats/_levy_stable/levyst.cpython-311-aarch64-linux-musl.so +0 -0
  139. scipy/stats/_qmc_cy.cpython-311-aarch64-linux-musl.so +0 -0
  140. scipy/stats/_qmvnt_cy.cpython-311-aarch64-linux-musl.so +0 -0
  141. scipy/stats/_rcont/rcont.cpython-311-aarch64-linux-musl.so +0 -0
  142. scipy/stats/_resampling.py +1 -1
  143. scipy/stats/_sobol.cpython-311-aarch64-linux-musl.so +0 -0
  144. scipy/stats/_stats.cpython-311-aarch64-linux-musl.so +0 -0
  145. scipy/stats/_stats_py.py +1 -1
  146. scipy/stats/_stats_pythran.cpython-311-aarch64-linux-musl.so +0 -0
  147. scipy/stats/_unuran/unuran_wrapper.cpython-311-aarch64-linux-musl.so +0 -0
  148. scipy/stats/tests/test_distributions.py +13 -0
  149. scipy/stats/tests/test_fast_gen_inversion.py +2 -0
  150. scipy/stats/tests/test_morestats.py +4 -4
  151. scipy/version.py +2 -2
  152. {scipy-1.16.0rc2.dist-info → scipy-1.16.2.dist-info}/METADATA +3 -2
  153. {scipy-1.16.0rc2.dist-info → scipy-1.16.2.dist-info}/RECORD +161 -160
  154. scipy.libs/{libgcc_s-7393e603-ec6fbefc.so.1 → libgcc_s-2d945d6c-767fb991.so.1} +0 -0
  155. scipy.libs/{libgcc_s-69c45f16.so.1 → libgcc_s-2d945d6c.so.1} +0 -0
  156. scipy.libs/libgfortran-67378ab2-e7e7cfab.so.5.0.0 +0 -0
  157. scipy.libs/{libgfortran-db0b6589.so.5.0.0 → libgfortran-67378ab2.so.5.0.0} +0 -0
  158. scipy.libs/{libscipy_openblas-3735f320.so → libscipy_openblas-98df47d3.so} +0 -0
  159. scipy.libs/{libstdc++-1f1a71be.so.6.0.33 → libstdc++-85f2cd6d.so.6.0.33} +0 -0
  160. scipy.libs/libgfortran-eb933d8e-d975c928.so.5.0.0 +0 -0
  161. {scipy-1.16.0rc2.dist-info → scipy-1.16.2.dist-info}/LICENSE.txt +0 -0
  162. {scipy-1.16.0rc2.dist-info → scipy-1.16.2.dist-info}/WHEEL +0 -0
@@ -1624,6 +1624,9 @@ class _TestCommon:
1624
1624
  B = array([[0,7,0],[0,-4,0]])
1625
1625
  Asp = self.spcreator(A)
1626
1626
  Bsp = self.spcreator(B)
1627
+ # check output format
1628
+ out_fmt = Asp.format if Asp.format in ('csc', 'dia', 'bsr') else 'csr'
1629
+ assert (Asp.multiply(Bsp)).format == out_fmt
1627
1630
  assert_almost_equal(Asp.multiply(Bsp).toarray(), A*B) # sparse/sparse
1628
1631
  assert_almost_equal(Asp.multiply(B).toarray(), A*B) # sparse/dense
1629
1632
 
@@ -0,0 +1,39 @@
1
+ Qhull, Copyright (c) 1993-2020
2
+
3
+ C.B. Barber
4
+ Arlington, MA
5
+
6
+ and
7
+
8
+ The National Science and Technology Research Center for
9
+ Computation and Visualization of Geometric Structures
10
+ (The Geometry Center)
11
+ University of Minnesota
12
+
13
+ email: qhull@qhull.org
14
+
15
+ This software includes Qhull from C.B. Barber and The Geometry Center.
16
+ Files derived from Qhull 1.0 are copyrighted by the Geometry Center. The
17
+ remaining files are copyrighted by C.B. Barber. Qhull is free software
18
+ and may be obtained via http from www.qhull.org. It may be freely copied,
19
+ modified, and redistributed under the following conditions:
20
+
21
+ 1. All copyright notices must remain intact in all files.
22
+
23
+ 2. A copy of this text file must be distributed along with any copies
24
+ of Qhull that you redistribute; this includes copies that you have
25
+ modified, or copies of programs or other software products that
26
+ include Qhull.
27
+
28
+ 3. If you modify Qhull, you must include a notice giving the
29
+ name of the person performing the modification, the date of
30
+ modification, and the reason for such modification.
31
+
32
+ 4. When distributing modified versions of Qhull, or other software
33
+ products that include Qhull, you must provide notice that the original
34
+ source code may be obtained as noted above.
35
+
36
+ 5. There is no warranty or other guarantee of fitness for Qhull, it is
37
+ provided solely "as is". Bug reports or fixes may be sent to
38
+ qhull_bug@qhull.org; the authors may or may not act on them as
39
+ they desire.
@@ -32,14 +32,14 @@
32
32
  # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33
33
  # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
34
 
35
- import sys
36
- import os.path
37
-
38
35
  from functools import wraps, partial
36
+ import os.path
37
+ import sys
38
+ import sysconfig
39
+ import warnings
39
40
  import weakref
40
41
 
41
42
  import numpy as np
42
- import warnings
43
43
  from numpy.linalg import norm
44
44
  from numpy.testing import (verbose, assert_,
45
45
  assert_array_equal, assert_equal,
@@ -632,6 +632,7 @@ class TestCdist:
632
632
  assert_allclose(y1, y2, rtol=eps, verbose=verbose > 2)
633
633
 
634
634
  @pytest.mark.thread_unsafe
635
+ @pytest.mark.skipif(sysconfig.get_platform() == 'win-arm64', reason="numpy#29442")
635
636
  def test_cdist_out(self, metric):
636
637
  # Test that out parameter works properly
637
638
  eps = 1e-15
@@ -935,23 +935,26 @@ class beta_gen(rv_continuous):
935
935
  log_term = sum_ab*np.log1p(a/b) + np.log(b) - 2*np.log(sum_ab)
936
936
  return t1 + t2 + log_term
937
937
 
938
- def threshold_large(v):
939
- if v == 1.0:
940
- return 1000
941
-
942
- j = np.log10(v)
943
- digits = int(j)
944
- d = int(v / 10 ** digits) + 2
945
- return d*10**(7 + j)
946
-
947
- if a >= 4.96e6 and b >= 4.96e6:
948
- return asymptotic_ab_large(a, b)
949
- elif a <= 4.9e6 and b - a >= 1e6 and b >= threshold_large(a):
950
- return asymptotic_b_large(a, b)
951
- elif b <= 4.9e6 and a - b >= 1e6 and a >= threshold_large(b):
938
+ def asymptotic_a_large(a, b):
952
939
  return asymptotic_b_large(b, a)
953
- else:
954
- return regular(a, b)
940
+
941
+ def threshold_large(v):
942
+ j = np.floor(np.log10(v))
943
+ d = np.floor(v / 10 ** j) + 2
944
+ return xpx.apply_where(v != 1.0, (d, j), lambda d_, j_: d_ * 10**(7 + j_),
945
+ fill_value=1000)
946
+
947
+ threshold_a = threshold_large(a)
948
+ threshold_b = threshold_large(b)
949
+ return _lazyselect([(a >= 4.96e6) & (b >= 4.96e6),
950
+ (a <= 4.9e6) & (b - a >= 1e6) & (b >= threshold_a),
951
+ (b <= 4.9e6) & (a - b >= 1e6) & (a >= threshold_b),
952
+ (a < 4.9e6) & (b < 4.9e6)
953
+ ],
954
+ [asymptotic_ab_large, asymptotic_b_large,
955
+ asymptotic_a_large, regular],
956
+ [a, b]
957
+ )
955
958
 
956
959
 
957
960
  beta = beta_gen(a=0.0, b=1.0, name='beta')
@@ -5100,6 +5100,26 @@ class Mixture(_ProbabilityDistribution):
5100
5100
  .. [1] Mixture distribution, *Wikipedia*,
5101
5101
  https://en.wikipedia.org/wiki/Mixture_distribution
5102
5102
 
5103
+
5104
+ Examples
5105
+ --------
5106
+ A mixture of normal distributions:
5107
+
5108
+ >>> import numpy as np
5109
+ >>> from scipy import stats
5110
+ >>> import matplotlib.pyplot as plt
5111
+ >>> X1 = stats.Normal(mu=-2, sigma=1)
5112
+ >>> X2 = stats.Normal(mu=2, sigma=1)
5113
+ >>> mixture = stats.Mixture([X1, X2], weights=[0.4, 0.6])
5114
+ >>> print(f'mean: {mixture.mean():.2f}, '
5115
+ ... f'median: {mixture.median():.2f}, '
5116
+ ... f'mode: {mixture.mode():.2f}')
5117
+ mean: 0.40, median: 1.04, mode: 2.00
5118
+ >>> x = np.linspace(-10, 10, 300)
5119
+ >>> plt.plot(x, mixture.pdf(x))
5120
+ >>> plt.title('PDF of normal distribution mixture')
5121
+ >>> plt.show()
5122
+
5103
5123
  """
5104
5124
  # Todo:
5105
5125
  # Add support for array shapes, weights
@@ -942,7 +942,7 @@ def monte_carlo_test(data, rvs, statistic, *, vectorized=None,
942
942
  for rvs_i, n_observations_i in zip(rvs, n_observations)]
943
943
  null_distribution.append(statistic(*resamples, axis=-1))
944
944
  null_distribution = xp.concat(null_distribution)
945
- null_distribution = xp.reshape(null_distribution, [-1] + [1]*observed.ndim)
945
+ null_distribution = xp.reshape(null_distribution, (-1,) + (1,)*observed.ndim)
946
946
 
947
947
  # relative tolerance for detecting numerically distinct but
948
948
  # theoretically equal values in the null distribution
scipy/stats/_stats_py.py CHANGED
@@ -10975,7 +10975,7 @@ def _xp_mean(x, /, *, axis=None, weights=None, keepdims=False, nan_policy='propa
10975
10975
  for i in axes:
10976
10976
  final_shape[i] = 1
10977
10977
 
10978
- res = xp.reshape(res, final_shape)
10978
+ res = xp.reshape(res, tuple(final_shape))
10979
10979
 
10980
10980
  return res[()] if res.ndim == 0 else res
10981
10981
 
@@ -5003,6 +5003,19 @@ class TestBeta:
5003
5003
  # return float(entropy)
5004
5004
  assert_allclose(stats.beta(a, b).entropy(), ref, rtol=tol)
5005
5005
 
5006
+ def test_entropy_broadcasting(self):
5007
+ # gh-23127 reported that the entropy method of the beta
5008
+ # distribution did not broadcast correctly.
5009
+ Beta = stats.make_distribution(stats.beta)
5010
+ a = np.asarray([5e6, 100, 1e9, 10])
5011
+ b = np.asarray([5e6, 1e9, 100, 20])
5012
+ res = Beta(a=a, b=b).entropy()
5013
+ ref = np.asarray([Beta(a=a[0], b=b[0]).entropy(),
5014
+ Beta(a=a[1], b=b[1]).entropy(),
5015
+ Beta(a=a[2], b=b[2]).entropy(),
5016
+ Beta(a=a[3], b=b[3]).entropy()])
5017
+ assert_allclose(res, ref)
5018
+
5006
5019
 
5007
5020
  class TestBetaPrime:
5008
5021
  # the test values are used in test_cdf_gh_17631 / test_ppf_gh_17631
@@ -6,6 +6,7 @@ from numpy.testing import (assert_array_equal, assert_allclose,
6
6
  from copy import deepcopy
7
7
  from scipy.stats.sampling import FastGeneratorInversion
8
8
  from scipy import stats
9
+ from scipy._lib._testutils import IS_MUSL
9
10
 
10
11
 
11
12
  def test_bad_args():
@@ -142,6 +143,7 @@ def test_geninvgauss_uerror():
142
143
 
143
144
 
144
145
  # TODO: add more distributions
146
+ @pytest.mark.skipif(IS_MUSL, reason="Hits RecursionError, see gh-23172")
145
147
  @pytest.mark.fail_slow(5)
146
148
  @pytest.mark.parametrize(("distname, args"), [("beta", (0.11, 0.11))])
147
149
  def test_error_extreme_params(distname, args):
@@ -2053,13 +2053,13 @@ class TestBoxcox_llf:
2053
2053
  def test_axis(self, xp):
2054
2054
  data = xp.asarray([[100, 200], [300, 400]])
2055
2055
  llf_axis_0 = stats.boxcox_llf(1, data, axis=0)
2056
- llf_0 = xp.asarray([
2056
+ llf_0 = xp.stack([
2057
2057
  stats.boxcox_llf(1, data[:, 0]),
2058
2058
  stats.boxcox_llf(1, data[:, 1]),
2059
2059
  ])
2060
2060
  xp_assert_close(llf_axis_0, llf_0)
2061
2061
  llf_axis_1 = stats.boxcox_llf(1, data, axis=1)
2062
- llf_1 = xp.asarray([
2062
+ llf_1 = xp.stack([
2063
2063
  stats.boxcox_llf(1, data[0, :]),
2064
2064
  stats.boxcox_llf(1, data[1, :]),
2065
2065
  ])
@@ -2732,11 +2732,11 @@ class TestCircFuncs:
2732
2732
 
2733
2733
  res = circfunc(x, high=360, axis=1)
2734
2734
  ref = [circfunc(x[i, :], high=360) for i in range(x.shape[0])]
2735
- xp_assert_close(res, xp.asarray(ref))
2735
+ xp_assert_close(res, xp.stack(ref))
2736
2736
 
2737
2737
  res = circfunc(x, high=360, axis=0)
2738
2738
  ref = [circfunc(x[:, i], high=360) for i in range(x.shape[1])]
2739
- xp_assert_close(res, xp.asarray(ref))
2739
+ xp_assert_close(res, xp.stack(ref))
2740
2740
 
2741
2741
  @pytest.mark.parametrize("test_func,expected",
2742
2742
  [(stats.circmean, 0.167690146),
scipy/version.py CHANGED
@@ -2,10 +2,10 @@
2
2
  """
3
3
  Module to expose more detailed version info for the installed `scipy`
4
4
  """
5
- version = "1.16.0rc2"
5
+ version = "1.16.2"
6
6
  full_version = version
7
7
  short_version = version.split('.dev')[0]
8
- git_revision = "e0b3e3ff7842025c64b134de740680b8ba9951b9"
8
+ git_revision = "b1296b9b4393e251511fe8fdd3e58c22a1124899"
9
9
  release = 'dev' not in version and '+' not in version
10
10
 
11
11
  if not release:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scipy
3
- Version: 1.16.0rc2
3
+ Version: 1.16.2
4
4
  Summary: Fundamental algorithms for scientific computing in Python
5
5
  Maintainer-Email: SciPy Developers <scipy-dev@python.org>
6
6
  License: Copyright (c) 2001-2002 Enthought, Inc. 2003, SciPy Developers.
@@ -948,6 +948,7 @@ Classifier: Programming Language :: Python :: 3
948
948
  Classifier: Programming Language :: Python :: 3.11
949
949
  Classifier: Programming Language :: Python :: 3.12
950
950
  Classifier: Programming Language :: Python :: 3.13
951
+ Classifier: Programming Language :: Python :: 3.14
951
952
  Classifier: Topic :: Software Development :: Libraries
952
953
  Classifier: Topic :: Scientific/Engineering
953
954
  Classifier: Operating System :: Microsoft :: Windows
@@ -963,7 +964,7 @@ Project-URL: tracker, https://github.com/scipy/scipy/issues
963
964
  Requires-Python: >=3.11
964
965
  Requires-Dist: numpy<2.6,>=1.25.2
965
966
  Provides-Extra: test
966
- Requires-Dist: pytest; extra == "test"
967
+ Requires-Dist: pytest>=8.0.0; extra == "test"
967
968
  Requires-Dist: pytest-cov; extra == "test"
968
969
  Requires-Dist: pytest-timeout; extra == "test"
969
970
  Requires-Dist: pytest-xdist; extra == "test"