Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
201 commits
Select commit Hold shift + click to select a range
07b7286
ENH: stats: add random variable infrastructure
mdhaber Sep 24, 2023
54d4375
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Jan 23, 2024
78ec647
Fixup infinite support handling of _tanhsinh, add notebook
mdhaber Feb 1, 2024
2ebc84f
MAINT: improve dtypes and shapes
mdhaber Feb 5, 2024
f87dd3d
Improve notebook
mdhaber Feb 14, 2024
6972fa2
TST: test shape, dtype, and nan-pattern of support
mdhaber Feb 5, 2024
5de2fb2
MAINT: remove incorrect use of cached_property
mdhaber Feb 5, 2024
3686008
ENH: rethink fit method
mdhaber Feb 28, 2024
ed6efb1
DOC: fit method example
mdhaber Mar 9, 2024
779ae3d
MAINT: rename variance/standard_deviation, make properties, improve docs
mdhaber Mar 10, 2024
a3854ab
DOC: add docstring to logentropy; fix std->standard_deviation
mdhaber Mar 10, 2024
bfc3a08
DOC: improve documentation
mdhaber Mar 10, 2024
916e84d
DOC: fix doctests
mdhaber Mar 11, 2024
d6cf5eb
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Mar 31, 2024
9826f2e
MAINT: stats: give Normal shape parameters
mdhaber Mar 31, 2024
72a3802
Loosen integration tolerance
mdhaber Mar 31, 2024
dd32dcf
MAINT: stats: consolidate `moment` function
mdhaber Apr 1, 2024
5f613cc
MAINT: stats: remove kwarg 'cache_policy' of public methods
mdhaber Apr 1, 2024
29b61a4
DOC: stats.ContinuousDistribution: add documentation
mdhaber Apr 1, 2024
87902e1
DOC: stats.ContinuousDistribution: doc improvements
mdhaber Apr 1, 2024
c3fe500
DOC: stats.ContinuousDistribution: replace and expand examples; add d…
mdhaber Apr 1, 2024
c955a7a
DOC: stats.ContinuousDistribution: document entropy/logentropy, fix PEP8
mdhaber Apr 1, 2024
84cc3e4
DOC: stats.ContinuousDistribution: document support method
mdhaber Apr 1, 2024
2fdeff4
DOC: stats.ContinuousDistribution: document moment methods
mdhaber Apr 2, 2024
a8e5179
DOC: stats.ContinuousDistribution: document median and mode
mdhaber Apr 2, 2024
b8efd47
DOC: stats.ContinuousDistribution: refinements
mdhaber Apr 2, 2024
6d5efe2
DOC: stats.ContinuousDistribution: document sample method
mdhaber Apr 2, 2024
270638f
DOC: stats.ContinuousDistribution: appease Sphinx
mdhaber Apr 2, 2024
8c788cb
ENH: stats.ContinuousDistribution: rewrite plot method
mdhaber Apr 3, 2024
5a8bd81
ENH: stats.ContinuousDistribution: improve plot
mdhaber Apr 3, 2024
ea28e37
ENH: stats.ContinuousDistribution.fit: draft for real
mdhaber Apr 4, 2024
1c4eeb8
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Apr 12, 2024
5ee1b1f
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Apr 15, 2024
0061c24
DOC: stats.rv_infrastructure: respond to most comments
mdhaber Apr 15, 2024
98ea3c8
DOC: stats.rv_infrastructure: concise links to methods
mdhaber Apr 16, 2024
d6dbed0
DOC: stast.rv_infrastructure: end one-line summaries with periods
mdhaber Apr 16, 2024
9009bc9
DOC: stats.rv_infrastructure: fix broken example
mdhaber Apr 16, 2024
0e5d5e4
MAINT: stats.rv_infrastructure: 'complementarity'->'complement'
mdhaber Apr 16, 2024
508d157
DOC: stats.rv_continuous: add documentation to loggy methods
mdhaber Apr 16, 2024
029a8c7
DOC: stats.rv_infrastructure: change Array -> array
mdhaber Apr 16, 2024
55e9e4c
DOC: stats.rv_infrastructure: revise definition of arguments of pdf/l…
mdhaber Apr 16, 2024
45bbd96
DOC: stats.rv_infrastructure: define 'logarithmic complement'
mdhaber Apr 16, 2024
3cbc267
DOC: stats.rv_infrastructure: add references, document llf
mdhaber Apr 16, 2024
0e07b79
MAINT: stats.rv_infrastructure: make update_parameters private, impro…
mdhaber Apr 16, 2024
be01ed1
DOC: stats.rv_infrastructure: change argument names x -> p / logp
mdhaber Apr 17, 2024
be06459
MAINT: stats.rv_infrastructure: add reminder
mdhaber Apr 17, 2024
2c16794
DOC: stats.rv_infrastructure: many corrections/improvements
mdhaber Apr 18, 2024
bd9867a
MAINT: improve `fit` and much more
mdhaber Apr 18, 2024
a60d3d3
ENH: stats.rv_infrastructure: IDE keyword suggestions, default Normal…
mdhaber Apr 19, 2024
4b84a9d
DOC: stats.rv_continuous: fix typo, remove old comment
mdhaber Apr 19, 2024
c8a1ef4
DOC: stats.rv_continuous: wordsmithing
mdhaber Apr 19, 2024
3d216f0
MAINT: stats.rv_infrastructure: improve mode with _bracket_minimum
mdhaber Apr 20, 2024
cbd9e4e
TST: stats.ContinuousDistribution: test kurtosis IV
mdhaber Apr 20, 2024
48db583
MAINT: stats.ContinuousDistribution: fix one of several draw shortcom…
mdhaber Apr 20, 2024
49c38a6
MAINT: stats.ContinuousDistribution: just saving a few things before …
mdhaber Apr 20, 2024
d036c2d
MAINT: stats.ContinuousDistribution: improve notebook
mdhaber Apr 22, 2024
6d27924
MAINT: stats.ContinuousDistribution: clip CDF results
mdhaber Apr 22, 2024
9a83147
STY: stats.ContinuousDistribution: edit comments
mdhaber Apr 22, 2024
71158b5
MAINT: stats.ContinuousDistribution: simplify iv_policy
mdhaber Apr 22, 2024
a6ba4f5
MAINT: stats.ContinuousDistribution: use tol, simplify cache_policy
mdhaber Apr 22, 2024
09a8b08
MAINT: stats.ContinuousDistribution: rename kwargs -> params checkpoint
mdhaber Apr 22, 2024
b8638b5
MAINT: stats.ContinuousDistribution: rename kwargs -> params II
mdhaber Apr 22, 2024
e68ff38
MAINT: finish renaming kwargs->params
mdhaber Apr 23, 2024
dbb7d12
TST: stats.ContinuousDistribution: basic tol tests
mdhaber Apr 23, 2024
967c8f5
MAINT: stats.Normal: fix __new__
mdhaber Apr 23, 2024
97d5a83
TST: stats.ContinuousDistribution: improve test coverage
mdhaber Apr 23, 2024
9cb9d1d
MAINT: stats.ContinousDistribution: improve starting bracket
mdhaber Apr 23, 2024
d1aafb7
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Apr 25, 2024
4f7fb41
MAINT: stats.ContinuousDistribution: use _chandrupatla_minimum in mod…
mdhaber Apr 25, 2024
159d927
DOC: stats.ContinuousDistribution: generate static docs
mdhaber Apr 25, 2024
2725f45
MAINT: stats.ContinuousDistribution: lower-precision RNG generation, …
mdhaber Apr 26, 2024
34ccfef
Apply suggestions from code review
mdhaber Apr 27, 2024
93a7f47
ENH: stats.ShiftedScaledDistribution: add two-arg distribution functi…
mdhaber Apr 30, 2024
e711c67
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Apr 30, 2024
8f66bd6
MAINT: stats.ContinuousDistribution: update notebook
mdhaber Apr 30, 2024
29543a9
DOC: stats.ContinuousDistribution: correct Uniform/LogUniform doc ren…
mdhaber Apr 30, 2024
e2e1940
ENH: add dtype validation on sparse array/matrix creation.
May 20, 2024
808c82b
ENH: change warning message on validation
May 20, 2024
c3d0eac
Support pydata/sparse for norm and lsqr
mtsokol May 21, 2024
035978d
update grayscale morphology docstrings to make the behavior of struct…
grlee77 May 26, 2024
96be315
TST: optimize.differential_evolution: add fail-slow exception
mdhaber May 28, 2024
2842926
DOC: integrate: odeint user functions must not modify y. (#20815)
WarrenWeckesser May 28, 2024
1308b58
Merge pull request #20814 from mdhaber/gh20806
andyfaff May 28, 2024
8593006
MAINT: stats: make reducing functions emit consistent warning when sa…
mdhaber May 28, 2024
5382a02
MAINT: stats.linregress: remove out of _stats_mstats_common
mdhaber May 25, 2024
37de595
DEP: stats.linregress: deprecate one-arg use
mdhaber May 25, 2024
1ecd8df
Merge pull request #20789 from mdhaber/linregress_onearg
h-vetinari May 28, 2024
ed65b67
MAINT: optimize.isotonic_regression: remove unnecessary copies (#20582)
lorentzenchr May 28, 2024
69cd453
ENH: spatial: serialize concurrent calls to QHull (#20619)
andfoy May 28, 2024
d474026
CI/BLD: use scipy-openblas wheel when building (#20585)
mattip May 28, 2024
6e393bc
ENH: sparse.linalg: speed up `spsolve_triangular` (#17924)
maxaehle May 28, 2024
b05493a
REV: revert `cobyqa` submodule update in gh-17924 (#20819)
lucascolley May 28, 2024
ab78f18
TST: optimize.dual_annealing: add fail_slow exception missing from or…
mdhaber May 28, 2024
c1c3738
Merge pull request #20824 from mdhaber/test_dual_annealing_time_excep…
mdhaber May 28, 2024
c2be1a4
Merge pull request #20799 from grlee77/ndimage-improve-structure-docu…
rgommers May 28, 2024
1326c6a
REL: set version to 1.15.0.dev0
tylerjereddy May 28, 2024
05207a8
BUG: sparse: Fix argmin/max shape diff between axis 0/1. And min/max …
dschult May 28, 2024
3669cef
DOC: SciPy 1.14.0 relnotes
tylerjereddy May 24, 2024
c9ae6f6
Merge pull request #20784 from tylerjereddy/treddy_114_relnotes
tylerjereddy May 28, 2024
834c3bc
Merge pull request #20827 from tylerjereddy/treddy_115_prep
tylerjereddy May 28, 2024
74c13e4
BUG: sparse.csgraph, array types: support non-zero `fill_value`s (#20…
mtsokol May 29, 2024
cd8ba6f
Update _differentialevolution.py
voibit May 29, 2024
bff0bd0
MAINT: special: Fix typo in four_gammas used by hyp2f1 (#20829)
fancidev May 29, 2024
f5c5477
BUG: interpolate: make BSpline.integrate always return an array
ev-br May 29, 2024
dfbbc33
CI: Add Linux workflow to test on free-threaded Python builds (#20822)
andfoy May 30, 2024
63b1115
Merge pull request #20833 from ev-br/bspline_integrate_0D
tupui May 30, 2024
d7bab75
ENH: special.rel_entr: Avoid overflow before computing log (#20816)
nickodell May 30, 2024
7ae3d49
DEV: Add const in function signatures
czgdp1807 May 30, 2024
3535b37
BLD: Warning fix from ``scipy/special/special/gamma.h`` (#20820)
czgdp1807 May 30, 2024
d443759
Merge pull request #20837 from czgdp1807/_lib_pyx
rgommers May 30, 2024
1ead6a9
MAINT: stats._axis_nan_policy: fix `keepdims` when result objects hav…
sdiebolt May 31, 2024
82d9b63
DEP: deprecate trapz alias of `stats.trapezoid` distribution (#20828)
h-vetinari May 31, 2024
4759208
DOC: add cobyqa website reference (#20841)
andyfaff May 31, 2024
5d15fdb
DOC: Wrap long titles in docs pages
melissawm May 31, 2024
389127d
Merge pull request #20846 from melissawm/wrap-titles
tupui May 31, 2024
f54f7d5
BUG: integrate: make `select_initial_step` aware of integration inter…
valentineap May 31, 2024
964458d
DOC: mention -b option in testing doc.
fancidev May 31, 2024
ba7644b
DOC/DEV: mention `-b` option in contributor guide on testing (#20849)
lucascolley Jun 1, 2024
dd836d0
TST: fail_slow bumps to add margin
mdhaber Jun 1, 2024
1f81337
MAINT: stats.bootstrap: FutureWarning about broadcasting
mdhaber Jun 2, 2024
78a67fc
Merge pull request #20855 from mdhaber/fail_slow_updates
rgommers Jun 2, 2024
5ad23a9
DEP: stats: remove `rvs_ratio_uniforms`
j-bowhay Jun 2, 2024
850171a
DEP: signal: remove wavelet functions
j-bowhay Jun 2, 2024
860ede0
DEP: integrate: remove quadrature and romberg
j-bowhay Jun 2, 2024
a38caca
DOC: remove reference to removed functions
j-bowhay Jun 3, 2024
fe9816c
DOC: remove reference to removed functions
j-bowhay Jun 3, 2024
83f8a1b
DOC: Update _differentialevolution.py [docs only]
andyfaff Jun 3, 2024
e567cf4
DOC: Update _differentialevolution.py [docs only]
andyfaff Jun 3, 2024
4944a8f
DOC: Update _differentialevolution.py
andyfaff Jun 3, 2024
2550014
DEP: signal: remove `cmplx_sort` (#20859)
j-bowhay Jun 3, 2024
1f286a6
DEV: Use const wherever possible
czgdp1807 Jun 3, 2024
82a1864
Merge pull request #20865 from j-bowhay/remove_wavlets
tupui Jun 3, 2024
10d2160
DEP: special.factorial: raise error for non-integer scalars and `exac…
j-bowhay Jun 3, 2024
05b9a2f
Merge pull request #20866 from j-bowhay/remove_rvs_ratios_uniform
tupui Jun 3, 2024
2d539eb
Merge pull request #20864 from j-bowhay/int_removal
tupui Jun 3, 2024
656f484
DEV: Use const wherever possible in scipy.sparse.csgraph
czgdp1807 Jun 3, 2024
85865e8
Skip csgraph non-zero fill-value tests for sparse < 0.15.4 (#20871)
mtsokol Jun 3, 2024
1d683b7
DEV: Use const wherever possible in spatial
czgdp1807 Jun 3, 2024
e262f3c
MAINT: special: Add kokkos `mdspan` (#20862)
izaid Jun 3, 2024
be9fd94
Merge pull request #20872 from czgdp1807/interpolate_pyx
ev-br Jun 3, 2024
9e50b78
DOC: use intersphinx_registry for easier intersphinx mapping maintena…
tupui Jun 3, 2024
162a176
MAINT: sparse: fix `__init__` func sig to allow `maxprint` to be set …
dschult Jun 3, 2024
c7558c2
Merge pull request #20874 from czgdp1807/spatial_pyx
rgommers Jun 3, 2024
d6530f3
Merge pull request #20873 from czgdp1807/csgraph_pyx
rgommers Jun 3, 2024
2348397
ENH: `stats.ttest_ind`: add array API support (#20771)
mdhaber Jun 3, 2024
dac3af6
Merge pull request #20830 from voibit/main
andyfaff Jun 4, 2024
028b5d6
ENH: sparse: add axis parameter to `count_nonzero` method (#20857)
dschult Jun 4, 2024
87dd6f8
DOC: mailing list to forum (#20881)
tupui Jun 4, 2024
f9b4962
DOC: stats.bootstrap: warning admonition -> versionchanged
mdhaber Jun 4, 2024
233a8bc
Merge pull request #20876 from tupui/interphinx_mapping
lucascolley Jun 4, 2024
d2b3067
DOC/DEV: add docs for enabling interactive examples (#20843)
steppi Jun 4, 2024
1abe5c1
MAINT: optimize.differential_evolution: add fail_slow exception
mdhaber Jun 4, 2024
0690159
ENH: stats: rewrite `ttest_rel` in terms of `ttest_1samp` (#20883)
j-bowhay Jun 4, 2024
fc02da5
DEP: interpolate: deprecate complex dtypes in `{Akima1D, Pchip}Interp…
j-bowhay Jun 4, 2024
dee9b09
BUG: fix incorrect intersphinx-registry entry in environment.yml
rgommers Jun 4, 2024
4c11b58
Merge pull request #20885 from rgommers/fix-environment-yml
lucascolley Jun 4, 2024
9c14869
DEV: Use const wherever possible in signal
czgdp1807 Jun 4, 2024
84042c7
DEV: Undo const usage for Windows CI
czgdp1807 Jun 4, 2024
74f896f
CI/DEV: fix Node.js 16 warnings by bumping actions (#20886)
lucascolley Jun 4, 2024
919f047
ENH: stats: end-to-end array-API support for NHSTs with beta null dis…
mdhaber Jun 4, 2024
5ffdd8b
DOC: Write API reference titles in monospace font
melissawm Jun 3, 2024
b12bc58
DEV: Use const wherever possible in stats
czgdp1807 Jun 4, 2024
2359b81
Merge pull request #20890 from melissawm/monospace-titles
tupui Jun 4, 2024
1fe14e0
Merge pull request #20858 from mdhaber/gh20850
tupui Jun 4, 2024
9d543ae
Merge pull request #20891 from czgdp1807/stats_pyx
tupui Jun 4, 2024
d070117
ENH: change Warning to ValueError
Jun 4, 2024
b536b40
FIX: removed unnecessary list construction
Jun 4, 2024
4f60de0
ENH: stats: end-to-end array-API support for NHSTs with Student's t n…
mdhaber Jun 4, 2024
f9182b7
Merge pull request #20754 from rmnigm/validate-dtype-sparse
dschult Jun 4, 2024
bb43c85
BLD: test delocate works by removing original lib (#20870)
andyfaff Jun 4, 2024
cfd42a3
Merge pull request #20887 from czgdp1807/signal_pyx
rgommers Jun 4, 2024
297b2c8
DOC: stats: Convert sampling tutorial to MyST-md (#20303)
melissawm Jun 5, 2024
f928e64
DOC: sparse: Correct `todense` documentation (#20242)
henry50 Jun 5, 2024
554b1c0
CI: Add workflow to build and upload free-threaded wheels (#20882)
andfoy Jun 5, 2024
0a43483
DOC: ndimage.convolve: modify `origin` param description (#20408)
m-maggi Jun 5, 2024
d8f9686
MAINT: sparse: Align matmul tests in `test_base.py` for spmatrix and …
dschult Jun 5, 2024
6836e4f
Add test for clang-17 build
steppi Jun 3, 2024
b91c7fb
Don't mix designated and non-designated initializers
steppi Jun 3, 2024
6e57035
CI: Make sure nightly free-threaded wheels are tested with GIL disabl…
andfoy Jun 5, 2024
59d8ebc
Merge pull request #20875 from steppi/special-warning
rgommers Jun 5, 2024
de85b05
DOC Update doc for the argument `sort`in `linalg.schur`. (#20906)
m-maggi Jun 6, 2024
2f930ed
TST: linalg: bump tolerance in TestEig::test_singular
ev-br Jun 6, 2024
0ea108b
BLD: optimize: use hidden visibility for static HiGHS libraries
rgommers Jun 7, 2024
d8301dc
Merge pull request #20914 from ev-br/geneig_tol_tweak
lucascolley Jun 7, 2024
4977ec5
BUG: sparse.csgraph.dijkstra: fix dtype and shape bugs (#20913)
larsoner Jun 7, 2024
491f1d7
BUG: stats.mstats: fix mstats.{ttest_rel, ttest_1samp} when array api is
j-bowhay Jun 7, 2024
abfd277
CI: run array API tests for all of stats
j-bowhay Jun 7, 2024
1e72dea
DOC: update doctests to satisfy scipy-doctests==1.2.0
luxedo Jun 7, 2024
b4c57df
ENH: stats: add array API support to combine_pvalues (#20900)
j-bowhay Jun 7, 2024
7292d58
BUG: ensure reasonable length _deprecate_positional_args messages
cjerdonek Jun 8, 2024
c954e19
Merge pull request #20923 from luxedo/DOC/20921
ev-br Jun 8, 2024
a5a9b4c
MAINT: adapt to a scipy-doctests change
ev-br Jun 8, 2024
7df6e32
DOC: interpolate: fix the example in the tutorial
ev-br Jun 8, 2024
14e5d12
Merge pull request #20927 from ev-br/smoke-docs-test-none
lucascolley Jun 8, 2024
3788f77
Merge pull request #20924 from cjerdonek/issue-20910-pos-arg-deprecat…
tupui Jun 8, 2024
0570c89
Merge pull request #20919 from rgommers/highs-static-nosymbol-export
lucascolley Jun 8, 2024
bef12c0
Merge pull request #20922 from j-bowhay/fix_mstats_tests
lucascolley Jun 8, 2024
3240ece
Merge pull request #20759 from mtsokol/pydata-sparse
lucascolley Jun 8, 2024
283bb6b
MAINT: Defer setting title and key in HBInfo
pavyamsiri Jun 9, 2024
a95defc
Merge pull request #20932 from pavyamsiri/harwell-boeing-constructor
lucascolley Jun 9, 2024
1033ef4
Merge remote-tracking branch 'upstream/main' into rv_infrastructure
mdhaber Jun 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,6 @@ commands:
command: |
echo $(git log -1 --pretty=%B) | tee gitlog.txt
echo ${CI_PULL_REQUEST//*pull\//} | tee merge.txt
if [[ $(cat merge.txt) != "" ]]; then
echo "Merging $(cat merge.txt)";
git remote add upstream https://github.com/scipy/scipy.git;
git pull --ff-only upstream "refs/pull/$(cat merge.txt)/merge";
git fetch upstream main;
fi

jobs:
# Build SciPy from source
Expand Down
6 changes: 3 additions & 3 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ contact_links:
- name: Stack Overflow
url: https://stackoverflow.com/questions/tagged/scipy
about: Please ask and answer usage questions on Stack Overflow
- name: Developer Mailing list
url: https://mail.python.org/mailman3/lists/scipy-dev.python.org/
about: Development discussions and announcements on the mailing list
- name: Developer Forum
url: https://discuss.scientific-python.org/c/contributor/scipy
about: Development discussions and announcements on the forum
- name: Blank issue
url: https://github.com/scipy/scipy/issues/new
about: Please note that other templates should be used in most cases
8 changes: 2 additions & 6 deletions .github/workflows/array_api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
echo "timestamp=${NOW}" >> $GITHUB_OUTPUT

- name: Setup compiler cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache-ccache
with:
path: ${{ steps.prep-ccache.outputs.dir }}
Expand All @@ -100,8 +100,4 @@ jobs:
python dev.py --no-build test -b all -t scipy.special.tests.test_support_alternative_backends -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy._lib.tests.test_array_api -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy._lib.tests.test__util -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy.stats.tests.test_stats -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy.stats.tests.test_morestats -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy.stats.tests.test_variation -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy.stats.tests.test_resampling -- --durations 3 --timeout=60
python dev.py --no-build test -b all -t scipy.optimize.tests.test_chandrupatla -- --durations 3 --timeout=60
python dev.py --no-build test -b all -s stats -- --durations 3 --timeout=60
160 changes: 160 additions & 0 deletions .github/workflows/free_threaded_wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# Workflow to build and test wheels for the free-threaded Python build.
#
# This should be merged back into wheels.yml when free-threaded wheel
# builds can be uploaded to pypi along with the rest of scipy's release
# artifacts.
#
# To work on the wheel building infrastructure on a fork, comment out:
#
# if: github.repository == 'scipy/scipy'
#
# in the get_commit_message job. Be sure to include [wheel build] in your commit
# message to trigger the build. All files related to wheel building are located
# at tools/wheels/
name: Free-Threaded Wheel Builder

on:
schedule:
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# │ │ │ │ │
- cron: "9 9 * * *"
push:
branches:
- maintenance/**
pull_request:
branches:
- main
- maintenance/**
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

permissions:
contents: read # to fetch code (actions/checkout)

jobs:
get_commit_message:
name: Get commit message
runs-on: ubuntu-latest
if: github.repository == 'scipy/scipy'
outputs:
message: ${{ steps.commit_message.outputs.message }}
steps:
- name: Checkout scipy
uses: actions/[email protected]
# Gets the correct commit message for pull request
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Get commit message
id: commit_message
run: |
set -xe
COMMIT_MSG=$(git log --no-merges -1)
RUN="0"
if [[ "$COMMIT_MSG" == *"[wheel build]"* ]]; then
RUN="1"
fi
echo "message=$RUN" >> $GITHUB_OUTPUT
echo github.ref ${{ github.ref }}

build_wheels:
name: Wheel, ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}
${{ matrix.buildplat[2] }} ${{ matrix.buildplat[3] }}
${{ matrix.buildplat[4] }}
needs: get_commit_message
if: >-
contains(needs.get_commit_message.outputs.message, '1') ||
github.event_name == 'schedule' ||
github.event_name == 'workflow_dispatch'
runs-on: ${{ matrix.buildplat[0] }}
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
# Github Actions doesn't support pairing matrix values together, let's improvise
# https://github.com/github/feedback/discussions/7835#discussioncomment-1769026
buildplat:
- [ubuntu-22.04, manylinux, x86_64, "", ""]
- [ubuntu-22.04, musllinux, x86_64, "", ""]
# TODO: build scipy and set up Windows and MacOS
# cibuildwheel does not yet support Mac for free-threaded python
# windows is supported but numpy doesn't build on the image yet
python: [["cp313t", '3.13']]
env:
IS_32_BIT: ${{ matrix.buildplat[2] == 'x86' }}
# upload to staging if it's a push to a maintenance branch and the last
# commit message contains '[wheel build]'
IS_PUSH: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/heads/maintenance') && contains(needs.get_commit_message.outputs.message, '1') }}
IS_SCHEDULE_DISPATCH: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
steps:
- name: Checkout scipy
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: true

# Used to push the built wheels
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0
with:
python-version: "3.x"

- name: Build wheels
uses: pypa/cibuildwheel@ba8be0d98853f5744f24e7f902c8adef7ae2e7f3 # v2.18.1
env:
CIBW_PRERELEASE_PYTHONS: True
CIBW_FREE_THREADED_SUPPORT: True
CIBW_BUILD: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}*
CIBW_ARCHS: ${{ matrix.buildplat[2] }}
# TODO: remove along with installing build deps in
# cibw_before_build.sh when a released cython can build numpy
CIBW_BUILD_FRONTEND: "pip; args: --no-build-isolation"

- uses: actions/upload-artifact@v4
with:
path: ./wheelhouse/*.whl
name: ${{ matrix.python[0] }}-${{ matrix.buildplat[1] }}
${{ matrix.buildplat[2] }} ${{ matrix.buildplat[3] }}
${{ matrix.buildplat[4] }}

- uses: mamba-org/setup-micromamba@422500192359a097648154e8db4e39bdb6c6eed7
with:
# for installation of anaconda-client, required for upload to
# anaconda.org
# Note that this step is *after* specific pythons have been used to
# build and test the wheel
# for installation of anaconda-client, for upload to anaconda.org
# environment will be activated after creation, and in future bash steps
init-shell: bash
environment-name: upload-env
create-args: >-
anaconda-client

- name: Upload wheels
if: success()
shell: bash -el {0}
# see https://github.com/marketplace/actions/setup-miniconda for why
# `-el {0}` is required.
env:
SCIPY_STAGING_UPLOAD_TOKEN: ${{ secrets.SCIPY_STAGING_UPLOAD_TOKEN }}
SCIPY_NIGHTLY_UPLOAD_TOKEN: ${{ secrets.SCIPY_NIGHTLY_UPLOAD_TOKEN }}
run: |
conda install -y anaconda-client
source tools/wheels/upload_wheels.sh
set_upload_vars
# For cron jobs (restricted to main branch) or "Run workflow" trigger
# an upload to:
#
# https://anaconda.org/scientific-python-nightly-wheels/scipy
#
# Pushes to a maintenance branch that contain '[wheel build]' will
# cause wheels to be built and uploaded to:
#
# https://anaconda.org/multibuild-wheels-staging/scipy
#
# The tokens were originally generated at anaconda.org
upload_wheels
2 changes: 1 addition & 1 deletion .github/workflows/issue-labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
# label based on issue title
- uses: github/issue-labeler@v3.3
- uses: github/issue-labeler@v3.4
if: github.repository == 'scipy/scipy'
with:
configuration-path: .github/labeler.yml
Expand Down
121 changes: 107 additions & 14 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:
echo "timestamp=${NOW}" >> $GITHUB_OUTPUT

- name: Setup compiler cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache-ccache
# Reference: https://docs.github.com/en/actions/guides/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
# NOTE: The caching strategy is modeled in a way that it will always have a unique cache key for each workflow run
Expand Down Expand Up @@ -308,7 +308,7 @@ jobs:
sudo apt-get install -y libgmp-dev libmpfr-dev libmpc-dev ccache gfortran

- name: Caching Python dependencies
uses: actions/cache@v3
uses: actions/cache@v4
id: cache
with:
path: ~/.cache/pip
Expand All @@ -321,10 +321,8 @@ jobs:
# (it can be put back after matplotlib has made a 2.0-compatible
# release on PyPI.
python -m pip install --pre --upgrade pytest pytest-cov pytest-xdist mpmath gmpy2 threadpoolctl pooch hypothesis
# TODO: once the scipy_ symbol prefix issue is fixed, install
# scipy-openblas32 from the pre-releases bucket again (see gh-19640)
python -m pip install "scipy-openblas32<=0.3.23.293.2"
# Install numpy last, to ensure we get 2.0.0-dev (avoid possible <2.0 constraints).
python -m pip install -r requirements/openblas.txt
# Install numpy last, to ensure we get nightly (avoid possible <2.0 constraints).
python -m pip install --pre --upgrade --timeout=60 -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy

- name: Prepare compiler cache
Expand All @@ -337,7 +335,7 @@ jobs:
echo "timestamp=${NOW}" >> $GITHUB_OUTPUT

- name: Setup compiler cache
uses: actions/cache@v3
uses: actions/cache@v4
id: cache-ccache
with:
path: ${{ steps.prep-ccache.outputs.dir }}
Expand Down Expand Up @@ -382,20 +380,27 @@ jobs:

- name: build + test
run: |
set -euo pipefail
set -exuo pipefail
docker pull quay.io/pypa/manylinux2014_i686
docker run -v $(pwd):/scipy --platform=linux/i386 quay.io/pypa/manylinux2014_i686 /bin/bash -c "cd /scipy && \
uname -a && \
basedir=\$(python3.10 tools/openblas_support.py) && \
cp -r \$basedir/lib/* /usr/local/lib && \
cp \$basedir/include/* /usr/local/include && \
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig && \
python3.10 -m venv test && \
source test/bin/activate && \
python -m pip install doit click rich_click pydevtool meson ninja && \
python -m pip install -r requirements/openblas.txt && \
# Ensure that scipy-openblas is picked up by the numpy<1.26 build
cat > \$HOME/.numpy-site.cfg <<EOL
[openblas]
libraries = \$(python -c 'import scipy_openblas32; print(scipy_openblas32.get_library())')
library_dirs = \$(python -c 'import scipy_openblas32; print(scipy_openblas32.get_lib_dir())')
include_dirs = \$(python -c 'import scipy_openblas32; print(scipy_openblas32.get_include_dir())')
runtime_library_dirs = \$(python -c 'import scipy_openblas32; print(scipy_openblas32.get_lib_dir())')
symbol_prefix = scipy_
EOL
python -m pip install numpy==1.23.5 cython pybind11 pytest pytest-timeout pytest-xdist pytest-env 'Pillow<10.0.0' mpmath pythran pooch meson hypothesis && \
LD_LIBRARY_PATH=/usr/local/lib python dev.py build && \
LD_LIBRARY_PATH=/usr/local/lib python dev.py test"
python -c 'import numpy as np; np.show_config()' && \
python dev.py build --with-scipy-openblas && \
python dev.py --no-build test"

#################################################################################
distro_multiple_pythons:
Expand Down Expand Up @@ -441,3 +446,91 @@ jobs:
python3.11 -m pytest --pyargs scipy.cluster
python3.11 -m pytest --pyargs scipy.linalg
popd

free-threaded:
needs: get_commit_message
runs-on: ubuntu-latest
if: >
needs.get_commit_message.outputs.message == 1
&& (github.repository == 'scipy/scipy' || github.repository == '')
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: recursive
fetch-tags: true
# TODO: replace with setup-python when there is support
- uses: deadsnakes/action@6c8b9b82fe0b4344f4b98f2775fcc395df45e494 # v3.1.0
with:
python-version: '3.13-dev'
nogil: true
- name: Install Ubuntu dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgmp-dev libmpfr-dev libmpc-dev ccache gfortran
# TODO: remove pip pre-release install after Python 3.13 release
- name: Install pre-release pip
run: |
pip install -U --pre pip
# TODO: remove cython nightly install when cython does a release
- name: Install nightly Cython
run: |
pip install git+https://github.com/cython/cython
- name: Install nightly NumPy
run: |
pip install -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy
- name: Install Python dependencies
run: |
pip install git+https://github.com/serge-sans-paille/pythran
pip install ninja meson-python pybind11 click rich_click pydevtool
pip install --pre --upgrade pytest pytest-xdist gmpy2 threadpoolctl pooch hypothesis
pip install -r requirements/openblas.txt
- name: Build and run tests
env:
PYTHON_GIL: 0
# TODO: For some reason the Meson installation path points to
# python3/site-packages as opposed to python3.13/site-packages,
# then the dev.py scripts do not work as expected.
run: |
# python dev.py build --with-scipy-openblas
# python dev.py --no-build test -j2 --mode full
python -c "import scipy_openblas32; print(scipy_openblas32.get_pkg_config())" > scipy-openblas.pc
PKG_CONFIG_PATH="$PWD" pip install . -vv --no-build-isolation
pushd $RUNNER_TEMP
PYTHON_GIL=0 python -m pytest --pyargs scipy -n2 --durations=10
#################################################################################
clang-17-build-only:
# Purpose is to check for warnings in builds with latest clang.
# We do not run the test suite here.
name: Clang-17 build-only (-Werror)
needs: get_commit_message
if: >
needs.get_commit_message.outputs.message == 1
&& (github.repository == 'scipy/scipy' || github.repository == '')
runs-on: ubuntu-22.04
steps:
- uses: actions/[email protected]
with:
submodules: recursive

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Setup system dependencies
run: |
sudo apt-get -y update
wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 17
sudo apt install -y libopenblas-dev liblapack-dev

- name: Setup Python build deps
run: |
pip install -r requirements/build.txt
pip install build

- name: Build wheel, check for compiler warnings
run: |
# specify which compilers to use using environment variables
CC=clang-17 CXX=clang++-17 FC=gfortran python -m build -wnx -Csetup-args=--werror
Loading