Skip to content

Commit 5ed9a21

Browse files
authored
Merge pull request #460 from raysect/development
Release v0.9.1
2 parents 2487a86 + 6ff591c commit 5ed9a21

File tree

7 files changed

+97
-2
lines changed

7 files changed

+97
-2
lines changed

CHANGELOG.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
Raysect Changelog
22
=================
33

4+
Release 0.9.1 (25 Aug 2025)
5+
---------------------------
6+
7+
Bug fixes:
8+
* Fixed a typo in the meson.build files that was not caught by meson, due to a bug in meson's option handling.
9+
- Versions of meson < 1.8.4 suffered regressions in option handling that were fixed in v1.8.4.
10+
- Attempting to build Raysect with meson v1.8.4 resulted in an error.
11+
12+
New:
13+
* Added pickle support to Interpolate1DArray, Interpolate2DArray and Interpolate3DArray.
14+
15+
416
Release 0.9.0 (30 Jul 2025)
517
---------------------------
618

dev/root-meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
project('raysect', 'cython',
2-
default_options: ['python.install-env=auto'],
2+
default_options: ['python.install_env=auto'],
33
version: run_command(['dev/build/update_version.sh'], check: true).stdout().strip()
44
)
55

meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# The template file used to generate this file is dev/root-meson.build.
33

44
project('raysect', 'cython',
5-
default_options: ['python.install-env=auto'],
5+
default_options: ['python.install_env=auto'],
66
version: run_command(['dev/build/update_version.sh'], check: true).stdout().strip()
77
)
88

raysect/core/math/function/float/function1d/interpolate.pxd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ cdef class _Extrapolator1D:
7575
cdef double evaluate(self, double px, int index) except? -1e999
7676
# cdef double _analytic_gradient(self, double px, int index, int order)
7777

78+
7879
cdef class _Extrapolator1DNone(_Extrapolator1D):
7980
pass
8081

raysect/core/math/function/float/function1d/interpolate.pyx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,24 @@ cdef class Interpolator1DArray(Function1D):
148148
self._interpolator = id_to_interpolator[interpolation_type](self._x_mv, self._f_mv)
149149
self._extrapolator = id_to_extrapolator[extrapolation_type](self._x_mv, self._f_mv)
150150

151+
def __getstate__(self):
152+
return self.x, self.f, self._interpolator.ID, self._extrapolator.ID, self._last_index, self._extrapolation_range
153+
154+
def __setstate__(self, state):
155+
156+
# Unpack.
157+
self.x, self.f, interpolation_type, extrapolation_type, self._last_index, self._extrapolation_range = state
158+
159+
# Rebuild memory views.
160+
self._x_mv, self._f_mv = self.x, self.f
161+
162+
# Recreate the interpolator and extrapolator objects.
163+
self._interpolator = id_to_interpolator[interpolation_type](self._x_mv, self._f_mv)
164+
self._extrapolator = id_to_extrapolator[extrapolation_type](self._x_mv, self._f_mv)
165+
166+
def __reduce__(self):
167+
return self.__new__, (self.__class__, ), self.__getstate__()
168+
151169
@cython.boundscheck(False)
152170
@cython.wraparound(False)
153171
@cython.initializedcheck(False)

raysect/core/math/function/float/function2d/interpolate/interpolator2darray.pyx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ cdef class Interpolator2DArray(Function2D):
195195

196196
self.x = x
197197
self.y = y
198+
self.f = f
198199

199200
# obtain memory views for fast data access
200201
self._x_mv = x
@@ -231,6 +232,37 @@ cdef class Interpolator2DArray(Function2D):
231232
self._x_mv, self._y_mv, self._f_mv, self._interpolator, extrapolation_range_x, extrapolation_range_y
232233
)
233234

235+
def __getstate__(self):
236+
return (
237+
self.x, self.y, self.f,
238+
self._interpolator.ID, self._extrapolator.ID,
239+
self._last_index_x, self._last_index_y,
240+
self._extrapolation_range_x, self._extrapolation_range_y
241+
)
242+
243+
def __setstate__(self, state):
244+
245+
# Unpack.
246+
(
247+
self.x, self.y, self.f,
248+
interpolation_type, extrapolation_type,
249+
self._last_index_x, self._last_index_y,
250+
self._extrapolation_range_x, self._extrapolation_range_y
251+
) = state
252+
253+
# Rebuild memory views.
254+
self._x_mv, self._y_mv, self._f_mv = self.x, self.y, self.f
255+
256+
# Recreate the interpolator and extrapolator objects.
257+
self._interpolator = id_to_interpolator[interpolation_type](self._x_mv, self._y_mv, self._f_mv)
258+
self._extrapolator = id_to_extrapolator[extrapolation_type](
259+
self._x_mv, self._y_mv, self._f_mv, self._interpolator,
260+
self._extrapolation_range_x, self._extrapolation_range_y
261+
)
262+
263+
def __reduce__(self):
264+
return self.__new__, (self.__class__, ), self.__getstate__()
265+
234266
@cython.boundscheck(False)
235267
@cython.wraparound(False)
236268
@cython.initializedcheck(False)

raysect/core/math/function/float/function3d/interpolate/interpolator3darray.pyx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ cdef class Interpolator3DArray(Function3D):
214214
self.x = x
215215
self.y = y
216216
self.z = z
217+
self.f = f
217218

218219
# obtain memory views for fast data access
219220
self._x_mv = x
@@ -259,6 +260,37 @@ cdef class Interpolator3DArray(Function3D):
259260
extrapolation_range_y, extrapolation_range_z
260261
)
261262

263+
def __getstate__(self):
264+
return (
265+
self.x, self.y, self.z, self.f,
266+
self._interpolator.ID, self._extrapolator.ID,
267+
self._last_index_x, self._last_index_y, self._last_index_z,
268+
self._extrapolation_range_x, self._extrapolation_range_y, self._extrapolation_range_z
269+
)
270+
271+
def __setstate__(self, state):
272+
273+
# Unpack.
274+
(
275+
self.x, self.y, self.z, self.f,
276+
interpolation_type, extrapolation_type,
277+
self._last_index_x, self._last_index_y, self._last_index_z,
278+
self._extrapolation_range_x, self._extrapolation_range_y, self._extrapolation_range_z
279+
) = state
280+
281+
# Rebuild memory views.
282+
self._x_mv, self._y_mv, self._z_mv, self._f_mv = self.x, self.y, self.z, self.f
283+
284+
# Recreate the interpolator and extrapolator objects.
285+
self._interpolator = id_to_interpolator[interpolation_type](self._x_mv, self._y_mv, self._z_mv, self._f_mv)
286+
self._extrapolator = id_to_extrapolator[extrapolation_type](
287+
self._x_mv, self._y_mv, self._z_mv, self._f_mv, self._interpolator,
288+
self._extrapolation_range_x, self._extrapolation_range_y, self._extrapolation_range_z
289+
)
290+
291+
def __reduce__(self):
292+
return self.__new__, (self.__class__, ), self.__getstate__()
293+
262294
@cython.boundscheck(False)
263295
@cython.wraparound(False)
264296
@cython.initializedcheck(False)

0 commit comments

Comments
 (0)