interpn 0.8.0__tar.gz → 0.8.2__tar.gz

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 (119) hide show
  1. {interpn-0.8.0 → interpn-0.8.2}/.cargo/config.toml +1 -1
  2. interpn-0.8.2/.github/workflows/release-python.yml +363 -0
  3. {interpn-0.8.0 → interpn-0.8.2}/.github/workflows/test-python.yml +2 -2
  4. {interpn-0.8.0 → interpn-0.8.2}/.gitignore +3 -2
  5. {interpn-0.8.0 → interpn-0.8.2}/CHANGELOG.md +21 -0
  6. {interpn-0.8.0 → interpn-0.8.2}/Cargo.lock +1 -1
  7. {interpn-0.8.0 → interpn-0.8.2}/Cargo.toml +1 -1
  8. {interpn-0.8.0 → interpn-0.8.2}/PKG-INFO +1 -1
  9. {interpn-0.8.0 → interpn-0.8.2}/benches/bench_cpu.py +1 -1
  10. {interpn-0.8.0 → interpn-0.8.2}/docs/1d_quality_of_fit_Rectilinear.html +1 -1
  11. {interpn-0.8.0 → interpn-0.8.2}/docs/1d_quality_of_fit_Rectilinear.svg +1 -1
  12. {interpn-0.8.0 → interpn-0.8.2}/docs/1d_quality_of_fit_Regular.html +1 -1
  13. {interpn-0.8.0 → interpn-0.8.2}/docs/1d_quality_of_fit_Regular.svg +1 -1
  14. {interpn-0.8.0 → interpn-0.8.2}/docs/2d_quality_of_fit_Rectilinear.html +1 -1
  15. {interpn-0.8.0 → interpn-0.8.2}/docs/2d_quality_of_fit_Rectilinear.svg +1 -1
  16. {interpn-0.8.0 → interpn-0.8.2}/docs/2d_quality_of_fit_Regular.html +1 -1
  17. {interpn-0.8.0 → interpn-0.8.2}/docs/2d_quality_of_fit_Regular.svg +1 -1
  18. {interpn-0.8.0 → interpn-0.8.2}/docs/3d_throughput_vs_nobs.html +1 -1
  19. interpn-0.8.2/docs/3d_throughput_vs_nobs.svg +1 -0
  20. interpn-0.8.0/docs/4d_throughput_vs_nobs_prealloc.html → interpn-0.8.2/docs/3d_throughput_vs_nobs_prealloc.html +1 -1
  21. interpn-0.8.2/docs/3d_throughput_vs_nobs_prealloc.svg +1 -0
  22. interpn-0.8.0/docs/3d_throughput_vs_nobs_prealloc.html → interpn-0.8.2/docs/4d_throughput_vs_nobs.html +1 -1
  23. interpn-0.8.2/docs/4d_throughput_vs_nobs.svg +1 -0
  24. interpn-0.8.2/docs/4d_throughput_vs_nobs_prealloc.html +2 -0
  25. interpn-0.8.2/docs/4d_throughput_vs_nobs_prealloc.svg +1 -0
  26. {interpn-0.8.0 → interpn-0.8.2}/docs/nearest_quality_of_fit.html +1 -1
  27. {interpn-0.8.0 → interpn-0.8.2}/docs/nearest_quality_of_fit.svg +1 -1
  28. interpn-0.8.2/docs/speedup_vs_dims_1000_obs_cubic.html +2 -0
  29. interpn-0.8.2/docs/speedup_vs_dims_1000_obs_cubic.svg +1 -0
  30. interpn-0.8.2/docs/speedup_vs_dims_1000_obs_linear.html +2 -0
  31. interpn-0.8.2/docs/speedup_vs_dims_1000_obs_linear.svg +1 -0
  32. {interpn-0.8.0 → interpn-0.8.2}/docs/speedup_vs_dims_1_obs_cubic.html +1 -1
  33. interpn-0.8.2/docs/speedup_vs_dims_1_obs_cubic.svg +1 -0
  34. interpn-0.8.2/docs/speedup_vs_dims_1_obs_linear.html +2 -0
  35. interpn-0.8.2/docs/speedup_vs_dims_1_obs_linear.svg +1 -0
  36. interpn-0.8.2/docs/throughput_vs_dims_1000_obs.html +2 -0
  37. interpn-0.8.2/docs/throughput_vs_dims_1000_obs.svg +1 -0
  38. interpn-0.8.2/docs/throughput_vs_dims_1_obs.html +2 -0
  39. interpn-0.8.2/docs/throughput_vs_dims_1_obs.svg +1 -0
  40. {interpn-0.8.0 → interpn-0.8.2}/pyproject.toml +1 -1
  41. {interpn-0.8.0 → interpn-0.8.2}/scripts/distr_pgo_profile.sh +3 -0
  42. interpn-0.8.2/scripts/install_llvm.sh +11 -0
  43. {interpn-0.8.0 → interpn-0.8.2}/scripts/native_pgo_profile.sh +3 -0
  44. {interpn-0.8.0 → interpn-0.8.2}/uv.lock +1 -1
  45. interpn-0.8.0/.github/workflows/release-python.yml +0 -183
  46. interpn-0.8.0/docs/3d_throughput_vs_nobs.svg +0 -1
  47. interpn-0.8.0/docs/3d_throughput_vs_nobs_prealloc.svg +0 -1
  48. interpn-0.8.0/docs/4d_throughput_vs_nobs.html +0 -2
  49. interpn-0.8.0/docs/4d_throughput_vs_nobs.svg +0 -1
  50. interpn-0.8.0/docs/4d_throughput_vs_nobs_prealloc.svg +0 -1
  51. interpn-0.8.0/docs/speedup_vs_dims_1000_obs_cubic.html +0 -2
  52. interpn-0.8.0/docs/speedup_vs_dims_1000_obs_linear.html +0 -2
  53. interpn-0.8.0/docs/speedup_vs_dims_1_obs_linear.html +0 -2
  54. interpn-0.8.0/docs/throughput_vs_dims_1000_obs.html +0 -2
  55. interpn-0.8.0/docs/throughput_vs_dims_1000_obs.svg +0 -1
  56. interpn-0.8.0/docs/throughput_vs_dims_1_obs.html +0 -2
  57. interpn-0.8.0/docs/throughput_vs_dims_1_obs.svg +0 -1
  58. interpn-0.8.0/scripts/pgo-profiles/pgo.profdata +0 -0
  59. {interpn-0.8.0 → interpn-0.8.2}/.github/workflows/release-rust.yml +0 -0
  60. {interpn-0.8.0 → interpn-0.8.2}/.github/workflows/test-rust.yml +0 -0
  61. {interpn-0.8.0 → interpn-0.8.2}/.readthedocs.yml +0 -0
  62. {interpn-0.8.0 → interpn-0.8.2}/LICENSE-APACHE +0 -0
  63. {interpn-0.8.0 → interpn-0.8.2}/LICENSE-MIT +0 -0
  64. {interpn-0.8.0 → interpn-0.8.2}/README.md +0 -0
  65. {interpn-0.8.0 → interpn-0.8.2}/benches/bench.rs +0 -0
  66. {interpn-0.8.0 → interpn-0.8.2}/benches/bench_mem.py +0 -0
  67. {interpn-0.8.0 → interpn-0.8.2}/docs/API_Docs.md +0 -0
  68. {interpn-0.8.0 → interpn-0.8.2}/docs/index.md +0 -0
  69. {interpn-0.8.0 → interpn-0.8.2}/docs/perf.md +0 -0
  70. {interpn-0.8.0 → interpn-0.8.2}/docs/ram_vs_dims.svg +0 -0
  71. {interpn-0.8.0 → interpn-0.8.2}/docs/requirements.txt +0 -0
  72. {interpn-0.8.0 → interpn-0.8.2}/examples/cubic_comparison.py +0 -0
  73. {interpn-0.8.0 → interpn-0.8.2}/examples/nearest_comparison.py +0 -0
  74. {interpn-0.8.0 → interpn-0.8.2}/mkdocs.yml +0 -0
  75. {interpn-0.8.0 → interpn-0.8.2}/scripts/distr_pgo.sh +0 -0
  76. {interpn-0.8.0 → interpn-0.8.2}/scripts/distr_pgo_install.sh +0 -0
  77. {interpn-0.8.0 → interpn-0.8.2}/scripts/native_pgo.sh +0 -0
  78. {interpn-0.8.0 → interpn-0.8.2}/scripts/native_pgo_install.sh +0 -0
  79. {interpn-0.8.0 → interpn-0.8.2}/scripts/profile_workload.py +0 -0
  80. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/__init__.py +0 -0
  81. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/multicubic_rectilinear.py +0 -0
  82. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/multicubic_regular.py +0 -0
  83. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/multilinear_rectilinear.py +0 -0
  84. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/multilinear_regular.py +0 -0
  85. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/nearest_rectilinear.py +0 -0
  86. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/nearest_regular.py +0 -0
  87. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/py.typed +0 -0
  88. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/raw.py +0 -0
  89. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/raw.pyi +0 -0
  90. {interpn-0.8.0 → interpn-0.8.2}/src/interpn/serialization.py +0 -0
  91. {interpn-0.8.0 → interpn-0.8.2}/src/lib.rs +0 -0
  92. {interpn-0.8.0 → interpn-0.8.2}/src/multicubic/mod.rs +0 -0
  93. {interpn-0.8.0 → interpn-0.8.2}/src/multicubic/rectilinear.rs +0 -0
  94. {interpn-0.8.0 → interpn-0.8.2}/src/multicubic/rectilinear_recursive.rs +0 -0
  95. {interpn-0.8.0 → interpn-0.8.2}/src/multicubic/regular.rs +0 -0
  96. {interpn-0.8.0 → interpn-0.8.2}/src/multicubic/regular_recursive.rs +0 -0
  97. {interpn-0.8.0 → interpn-0.8.2}/src/multilinear/mod.rs +0 -0
  98. {interpn-0.8.0 → interpn-0.8.2}/src/multilinear/rectilinear.rs +0 -0
  99. {interpn-0.8.0 → interpn-0.8.2}/src/multilinear/rectilinear_recursive.rs +0 -0
  100. {interpn-0.8.0 → interpn-0.8.2}/src/multilinear/regular.rs +0 -0
  101. {interpn-0.8.0 → interpn-0.8.2}/src/multilinear/regular_recursive.rs +0 -0
  102. {interpn-0.8.0 → interpn-0.8.2}/src/nearest/mod.rs +0 -0
  103. {interpn-0.8.0 → interpn-0.8.2}/src/nearest/rectilinear.rs +0 -0
  104. {interpn-0.8.0 → interpn-0.8.2}/src/nearest/regular.rs +0 -0
  105. {interpn-0.8.0 → interpn-0.8.2}/src/one_dim/hold.rs +0 -0
  106. {interpn-0.8.0 → interpn-0.8.2}/src/one_dim/linear.rs +0 -0
  107. {interpn-0.8.0 → interpn-0.8.2}/src/one_dim/mod.rs +0 -0
  108. {interpn-0.8.0 → interpn-0.8.2}/src/python.rs +0 -0
  109. {interpn-0.8.0 → interpn-0.8.2}/src/testing.rs +0 -0
  110. {interpn-0.8.0 → interpn-0.8.2}/src/utils.rs +0 -0
  111. {interpn-0.8.0 → interpn-0.8.2}/test/test_docs.py +0 -0
  112. {interpn-0.8.0 → interpn-0.8.2}/test/test_examples.py +0 -0
  113. {interpn-0.8.0 → interpn-0.8.2}/test/test_interpn.py +0 -0
  114. {interpn-0.8.0 → interpn-0.8.2}/test/test_multicubic_rectilinear.py +0 -0
  115. {interpn-0.8.0 → interpn-0.8.2}/test/test_multicubic_regular.py +0 -0
  116. {interpn-0.8.0 → interpn-0.8.2}/test/test_multilinear_rectilinear.py +0 -0
  117. {interpn-0.8.0 → interpn-0.8.2}/test/test_multilinear_regular.py +0 -0
  118. {interpn-0.8.0 → interpn-0.8.2}/test/test_nearest_rectilinear.py +0 -0
  119. {interpn-0.8.0 → interpn-0.8.2}/test/test_nearest_regular.py +0 -0
@@ -1,2 +1,2 @@
1
1
  [target.'cfg(any(target_arch = "x86_64", target_arch = "x64"))']
2
- rustflags = ["-C", "target-feature=+avx2,+fma"]
2
+ rustflags = ["-C", "target-cpu=x86-64-v3"]
@@ -0,0 +1,363 @@
1
+ # This file is autogenerated by maturin v1.8.3
2
+ # To update, run
3
+ #
4
+ # maturin generate-ci github
5
+ #
6
+ name: release-python
7
+
8
+ on:
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ jobs:
15
+ test_python:
16
+ uses: ./.github/workflows/test-python.yml
17
+
18
+ linux_pgo:
19
+ runs-on: ${{ matrix.platform.runner }}
20
+ strategy:
21
+ matrix:
22
+ platform:
23
+ - runner: ubuntu-22.04
24
+ target: x86_64
25
+ # Exclude 32-bit linux due to OOM issues during compilation & no demand
26
+ # - runner: ubuntu-22.04
27
+ # target: x86
28
+ - runner: ubuntu-22.04-arm
29
+ target: aarch64
30
+ steps:
31
+ - uses: actions/checkout@v4
32
+ - uses: actions/setup-python@v5
33
+ with:
34
+ architecture: ${{ matrix.platform.target }}
35
+
36
+ - name: Install LLVM
37
+ run: bash ./scripts/install_llvm.sh
38
+
39
+ - name: Clear profiles
40
+ run: rm -rf ./scripts/pgo-profiles; mkdir ./scripts/pgo-profiles; mkdir ./scripts/pgo-profiles/pgo.profraw
41
+
42
+ - name: Instrumented build
43
+ uses: PyO3/maturin-action@v1
44
+ with:
45
+ target: ${{ matrix.platform.target }}
46
+ args: --release --out dist --find-interpreter --verbose -- "-Cprofile-generate=${PWD}/scripts/pgo-profiles/pgo.profraw"
47
+ manylinux: auto
48
+
49
+ - name: Install instrumented
50
+ run: |
51
+ # Need recent pip for dep groups
52
+ python -m pip install -U pip
53
+
54
+ # Try each wheel until we find the right one
55
+ for whl in $(find dist/ -type f -name '*.whl'); do
56
+ echo "Trying $whl"
57
+ if ! python -m pip install "$whl"[pydantic] --group test; then
58
+ echo "Failed to install $whl"
59
+ else
60
+ echo "Installed $whl"
61
+ break
62
+ fi
63
+ done
64
+
65
+ - name: Instrumented profile workload
66
+ run: |
67
+ # Run profile workload
68
+ LLVM_PROFILE_FILE=scripts/pgo-profiles/pgo.profraw/pgo-%p-%m.profraw python ./scripts/profile_workload.py
69
+
70
+ # Remove instrumented wheel
71
+ rm -rf ./dist/
72
+
73
+ # Merge profiles
74
+ PROFILES=$(find scripts/pgo-profiles/pgo.profraw -name '*.profraw')
75
+ echo "Profiles to merge: $PROFILES"
76
+ /usr/lib/llvm-21/bin/llvm-profdata merge -o scripts/pgo-profiles/pgo.profdata $PROFILES
77
+
78
+ - name: Build wheels optimized
79
+ uses: PyO3/maturin-action@v1
80
+ with:
81
+ target: ${{ matrix.platform.target }}
82
+ args: --release --out dist --find-interpreter --verbose -- "-Cprofile-use=${{github.workspace}}/scripts/pgo-profiles/pgo.profdata" "-Cllvm-args=-pgo-warn-missing-function"
83
+ manylinux: auto
84
+
85
+ - name: Upload wheels
86
+ uses: actions/upload-artifact@v4
87
+ with:
88
+ name: wheels-linux-${{ matrix.platform.target }}-${{ matrix.python-version }}
89
+ path: dist
90
+
91
+ linux_cross:
92
+ runs-on: ${{ matrix.platform.runner }}
93
+ strategy:
94
+ matrix:
95
+ platform:
96
+ - runner: ubuntu-22.04
97
+ target: armv7
98
+ - runner: ubuntu-22.04
99
+ target: s390x
100
+ - runner: ubuntu-22.04
101
+ target: ppc64le
102
+ steps:
103
+ - uses: actions/checkout@v4
104
+ - uses: actions/setup-python@v5
105
+ - name: Build wheels
106
+ uses: PyO3/maturin-action@v1
107
+ with:
108
+ target: ${{ matrix.platform.target }}
109
+ args: --release --out dist --find-interpreter
110
+ manylinux: auto
111
+
112
+ - name: Upload wheels
113
+ uses: actions/upload-artifact@v4
114
+ with:
115
+ name: wheels-linux-${{ matrix.platform.target }}-${{ matrix.python-version }}
116
+ path: dist
117
+
118
+ musllinux:
119
+ runs-on: ${{ matrix.platform.runner }}
120
+ strategy:
121
+ matrix:
122
+ platform:
123
+ - runner: ubuntu-22.04
124
+ target: x86_64
125
+ - runner: ubuntu-22.04
126
+ target: x86
127
+ - runner: ubuntu-22.04
128
+ target: aarch64
129
+ - runner: ubuntu-22.04
130
+ target: armv7
131
+ steps:
132
+ - uses: actions/checkout@v4
133
+ - uses: actions/setup-python@v5
134
+ - name: Build wheels
135
+ uses: PyO3/maturin-action@v1
136
+ with:
137
+ target: ${{ matrix.platform.target }}
138
+ args: --release --out dist --find-interpreter --verbose
139
+
140
+ manylinux: musllinux_1_2
141
+ - name: Upload wheels
142
+ uses: actions/upload-artifact@v4
143
+ with:
144
+ name: wheels-musllinux-${{ matrix.platform.target }}-${{ matrix.python-version }}
145
+ path: dist
146
+
147
+ windows_pgo:
148
+ runs-on: ${{ matrix.platform.runner }}
149
+ strategy:
150
+ matrix:
151
+ platform:
152
+ - runner: windows-latest
153
+ target: x64
154
+ steps:
155
+ - uses: actions/checkout@v4
156
+
157
+ # Install Rust and Python separate from maturin and uv actions
158
+ # to try to avoid ending up with one or the other end up with
159
+ # the 32-bit version
160
+ - name: Install Rust toolchain
161
+ uses: dtolnay/rust-toolchain@stable
162
+ - uses: actions/setup-python@v5
163
+ with:
164
+ python-version: "3.12"
165
+
166
+ - name: Install LLVM
167
+ run: choco install llvm --version="21.1.0" -y; llvm-profdata --version
168
+
169
+ - name: Clear profiles
170
+ shell: bash
171
+ run: rm -rf ./scripts/pgo-profiles; mkdir ./scripts/pgo-profiles; mkdir ./scripts/pgo-profiles/pgo.profraw
172
+
173
+ - name: Instrumented build
174
+ uses: PyO3/maturin-action@v1
175
+ with:
176
+ target: ${{ matrix.platform.target }}
177
+ args: --release --out dist --verbose -- "-Cprofile-generate=${PWD}/scripts/pgo-profiles/pgo.profraw"
178
+
179
+ - name: Install instrumented
180
+ shell: bash
181
+ run: |
182
+ # Need recent pip for dep groups
183
+ python -m pip install -U pip
184
+
185
+ # Try each wheel until we find the right one
186
+ for whl in $(find dist/ -type f -name '*.whl'); do
187
+ echo "Trying $whl"
188
+ if ! python -m pip install "$whl"[pydantic] --group test; then
189
+ echo "Failed to install $whl"
190
+ else
191
+ echo "Installed $whl"
192
+ break
193
+ fi
194
+ done
195
+
196
+ - name: Instrumented profile workload
197
+ shell: bash
198
+ run: |
199
+ # Run profile workload
200
+ LLVM_PROFILE_FILE=scripts/pgo-profiles/pgo.profraw/pgo-%p-%m.profraw python ./scripts/profile_workload.py
201
+
202
+ # Remove instrumented wheel
203
+ rm -rf ./dist/
204
+
205
+ # Merge profiles
206
+ PROFILES=$(find scripts/pgo-profiles/pgo.profraw -name '*.profraw')
207
+ echo "Profiles to merge: $PROFILES"
208
+ llvm-profdata merge -o scripts/pgo-profiles/pgo.profdata $PROFILES
209
+
210
+ - name: Build wheels optimized
211
+ uses: PyO3/maturin-action@v1
212
+ with:
213
+ target: ${{ matrix.platform.target }}
214
+ args: --release --out dist --verbose -- "-Cprofile-use=${{github.workspace}}/scripts/pgo-profiles/pgo.profdata" "-Cllvm-args=-pgo-warn-missing-function"
215
+
216
+ - name: Upload wheels
217
+ uses: actions/upload-artifact@v4
218
+ with:
219
+ name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.python-version }}
220
+ path: dist
221
+
222
+ windows_cross:
223
+ runs-on: ${{ matrix.platform.runner }}
224
+ strategy:
225
+ matrix:
226
+ platform:
227
+ - runner: windows-latest
228
+ target: x86
229
+ steps:
230
+ - uses: actions/checkout@v4
231
+
232
+ # Install Rust and Python separate from maturin and uv actions
233
+ # to try to avoid ending up with one or the other end up with
234
+ # the 32-bit version
235
+ - name: Install Rust toolchain
236
+ uses: dtolnay/rust-toolchain@stable
237
+ - uses: actions/setup-python@v5
238
+ with:
239
+ architecture: ${{ matrix.platform.target }}
240
+
241
+
242
+ - name: Build wheels
243
+ uses: PyO3/maturin-action@v1
244
+ with:
245
+ target: ${{ matrix.platform.target }}
246
+ args: --release --out dist --verbose
247
+
248
+ - name: Upload wheels
249
+ uses: actions/upload-artifact@v4
250
+ with:
251
+ name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.python-version }}
252
+ path: dist
253
+
254
+ macos_pgo:
255
+ runs-on: ${{ matrix.platform.runner }}
256
+ strategy:
257
+ matrix:
258
+ platform:
259
+ - runner: macos-15-intel
260
+ target: x86_64
261
+ # macos-15 runner is arm64
262
+ - runner: macos-15
263
+ target: aarch64
264
+ steps:
265
+ - uses: actions/checkout@v4
266
+ - uses: actions/setup-python@v5
267
+ with:
268
+ python-version: "3.12"
269
+
270
+ - name: Install LLVM
271
+ run: bash ./scripts/install_llvm.sh
272
+
273
+ - name: Clear profiles
274
+ run: rm -rf ./scripts/pgo-profiles; mkdir ./scripts/pgo-profiles; mkdir ./scripts/pgo-profiles/pgo.profraw
275
+
276
+ - name: Instrumented build
277
+ uses: PyO3/maturin-action@v1
278
+ with:
279
+ target: ${{ matrix.platform.target }}
280
+ args: --release --out dist --find-interpreter --verbose -- "-Cprofile-generate=${PWD}/scripts/pgo-profiles/pgo.profraw"
281
+
282
+ - name: Install instrumented
283
+ run: |
284
+ # Need recent pip for dep groups
285
+ pip install -U pip
286
+
287
+ # Try each wheel until we find the right one
288
+ for whl in $(find dist/ -type f -name '*.whl'); do
289
+ echo "Trying $whl"
290
+ if ! python -m pip install "$whl"[pydantic] --group test; then
291
+ echo "Failed to install $whl"
292
+ else
293
+ echo "Installed $whl"
294
+ break
295
+ fi
296
+ done
297
+
298
+ - name: Instrumented profile workload
299
+ run: |
300
+ # Run profile workload
301
+ LLVM_PROFILE_FILE=scripts/pgo-profiles/pgo.profraw/pgo-%p-%m.profraw python ./scripts/profile_workload.py
302
+
303
+ # Remove instrumented wheel
304
+ rm -rf ./dist/
305
+
306
+ # Merge profiles
307
+ PROFILES=$(find scripts/pgo-profiles/pgo.profraw -name '*.profraw')
308
+ echo "Profiles to merge: $PROFILES"
309
+ $(brew --prefix llvm@21)/bin/llvm-profdata merge -o scripts/pgo-profiles/pgo.profdata $PROFILES
310
+
311
+ - name: Build wheels optimized
312
+ uses: PyO3/maturin-action@v1
313
+ with:
314
+ target: ${{ matrix.platform.target }}
315
+ args: --release --out dist --find-interpreter --verbose -- "-Cprofile-use=${{github.workspace}}/scripts/pgo-profiles/pgo.profdata" "-Cllvm-args=-pgo-warn-missing-function"
316
+
317
+ - name: Upload wheels
318
+ uses: actions/upload-artifact@v4
319
+ with:
320
+ name: wheels-macos-${{ matrix.platform.target }}-${{ matrix.python-version }}
321
+ path: dist
322
+
323
+ sdist:
324
+ runs-on: ubuntu-latest
325
+ steps:
326
+ - uses: actions/checkout@v4
327
+ - name: Build sdist
328
+ uses: PyO3/maturin-action@v1
329
+ with:
330
+ command: sdist
331
+ args: --out dist
332
+ - name: Upload sdist
333
+ uses: actions/upload-artifact@v4
334
+ with:
335
+ name: wheels-sdist
336
+ path: dist
337
+
338
+ release:
339
+ name: Release
340
+ runs-on: ubuntu-latest
341
+ # if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
342
+ needs: [test_python, linux_pgo, linux_cross, musllinux, windows_pgo, windows_cross, macos_pgo, sdist]
343
+ permissions:
344
+ # Use to sign the release artifacts
345
+ id-token: write
346
+ # Used to upload release artifacts
347
+ contents: write
348
+ # Used to generate artifact attestation
349
+ attestations: write
350
+ steps:
351
+ - uses: actions/download-artifact@v4
352
+ - name: Generate artifact attestation
353
+ uses: actions/attest-build-provenance@v2
354
+ with:
355
+ subject-path: 'wheels-*/*'
356
+ - name: Publish to PyPI
357
+ if: github.ref == 'refs/heads/main'
358
+ uses: PyO3/maturin-action@v1
359
+ env:
360
+ MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
361
+ with:
362
+ command: upload
363
+ args: --non-interactive --skip-existing wheels-*/*
@@ -54,7 +54,7 @@ jobs:
54
54
  # - runner: ubuntu-latest
55
55
  - runner: ubuntu-24.04-arm # aarch64
56
56
  - runner: macos-15-intel # x86_64
57
- - runner: macos-14 # aarch64
57
+ - runner: macos-15 # aarch64
58
58
  steps:
59
59
  - uses: actions/checkout@v3
60
60
  - name: Install uv
@@ -88,7 +88,7 @@ jobs:
88
88
  - name: Profile-Guided Optimization (PGO)
89
89
  shell: bash
90
90
  run: |
91
- sh ./scripts/distr_pgo_install.sh
91
+ sh ./scripts/distr_pgo.sh
92
92
 
93
93
  - name: Test (with PGO)
94
94
  run: |
@@ -74,9 +74,10 @@ docs/_build/
74
74
  # Extra
75
75
  *.svg
76
76
 
77
- # Unmerged PGO profiles
77
+ # PGO profiles
78
78
  *.profraw
79
79
  *native.profdata
80
+ *pgo-profiles/
80
81
 
81
82
  # cargo-semver-checks
82
- semver-checks/
83
+ semver-checks/
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.2 2025-11-12
4
+
5
+ ### Changed
6
+
7
+ * Use `x86-64-v3` reference CPU as compilation target instead of manually specifying features
8
+ * Includes AVX2 and vector FMA
9
+
10
+ ## 0.8.1 2025-11-10
11
+
12
+ ### Added
13
+
14
+ * Python
15
+ * Implement PGO for mac intel/aarch64, linux aarch64, and windows x64
16
+ * Add script for installing llvm on linux and mac to support PGO
17
+
18
+ ### Changed
19
+
20
+ * Python
21
+ * Remove stored pgo profiles
22
+ * Update PGO scripts
23
+
3
24
  ## 0.8.0 2025-11-08
4
25
 
5
26
  Support ndarray inputs for python interpn function, require kwargs for most inputs,
@@ -221,7 +221,7 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
221
221
 
222
222
  [[package]]
223
223
  name = "interpn"
224
- version = "0.8.0"
224
+ version = "0.8.2"
225
225
  dependencies = [
226
226
  "criterion",
227
227
  "crunchy",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "interpn"
3
- version = "0.8.0"
3
+ version = "0.8.2"
4
4
  edition = "2024"
5
5
  authors = ["James Logan <jlogan03@gmail.com>"]
6
6
  license = "MIT OR Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: interpn
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -469,7 +469,7 @@ def _plot_speedup_vs_dims(
469
469
  yanchor="top",
470
470
  ),
471
471
  height=450,
472
- margin=dict(t=60, l=60, r=200, b=90),
472
+ margin=dict(t=60, l=60, r=20, b=90),
473
473
  # legend=dict(
474
474
  # orientation="v",
475
475
  # yanchor="top",