Skip to content

Commit 3d54756

Browse files
authored
Merge pull request #3833 from h-mayorquin/add_del_method_to_binary
Add del dunder to binary recording
2 parents bea1b8e + 1f44331 commit 3d54756

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

src/spikeinterface/core/binaryrecordingextractor.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,18 @@ def get_binary_description(self):
148148
)
149149
return d
150150

151+
def __del__(self):
152+
"""
153+
Ensures that all segment resources are properly cleaned up when this recording extractor is deleted.
154+
Closes any open file handles in the recording segments.
155+
"""
156+
# Close all recording segments
157+
if hasattr(self, "_recording_segments"):
158+
for segment in self._recording_segments:
159+
# This will trigger the __del__ method of the BinaryRecordingSegment
160+
# which will close the file handle
161+
del segment
162+
151163

152164
BinaryRecordingExtractor.write_recording.__doc__ = BinaryRecordingExtractor.write_recording.__doc__.format(
153165
_shared_job_kwargs_doc
@@ -223,6 +235,15 @@ def get_traces(
223235

224236
return traces
225237

238+
def __del__(self):
239+
# Ensure that the file handle is closed when the segment is garbage-collected
240+
try:
241+
if hasattr(self, "file") and self.file and not self.file.closed:
242+
self.file.close()
243+
except Exception as e:
244+
warnings.warn(f"Error closing file handle in BinaryRecordingSegment: {e}")
245+
pass
246+
226247

227248
# For backward compatibility (old good time)
228249
BinDatRecordingExtractor = BinaryRecordingExtractor

src/spikeinterface/preprocessing/preprocessinglist.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
CenterRecording,
2626
center,
2727
)
28+
2829
from .scale import scale_to_uV
2930

3031
from .whiten import WhitenRecording, whiten, compute_whitening_matrix

0 commit comments

Comments
 (0)