From 251c89951d80e1d217c1ed09658830c54d73e2e9 Mon Sep 17 00:00:00 2001 From: Matthew Brett Date: Fri, 29 Mar 2024 17:23:44 +0000 Subject: [PATCH] WIP: generalize class for opening image Allow FileHolder subclasses to change the ImageOpener class. --- nibabel/fileholders.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/nibabel/fileholders.py b/nibabel/fileholders.py index a27715350..00c329d5d 100644 --- a/nibabel/fileholders.py +++ b/nibabel/fileholders.py @@ -23,6 +23,9 @@ class FileHolderError(Exception): class FileHolder: """class to contain filename, fileobj and file position""" + # Default image opener class / callable + make_image_opener = ImageOpener + def __init__( self, filename: str | None = None, @@ -68,10 +71,11 @@ def get_prepare_fileobj(self, *args, **kwargs) -> ImageOpener: ``self.pos`` """ if self.fileobj is not None: - obj = ImageOpener(self.fileobj) # for context manager + # for context manager + obj = self.make_image_opener(self.fileobj) obj.seek(self.pos) elif self.filename is not None: - obj = ImageOpener(self.filename, *args, **kwargs) + obj = self.make_image_opener(self.filename, *args, **kwargs) if self.pos != 0: obj.seek(self.pos) else: