Skip to content

Commit 51adb8a

Browse files
author
Ben Cipollini
committed
Properly deprecate Outputter, parse_gifti_file
1 parent 3cdbe63 commit 51adb8a

File tree

2 files changed

+46
-3
lines changed

2 files changed

+46
-3
lines changed

nibabel/gifti/parse_gifti_fast.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616

1717
import numpy as np
1818

19-
from ..nifti1 import data_type_codes, xform_codes, intent_codes
2019
from .gifti import (GiftiMetaData, GiftiImage, GiftiLabel,
2120
GiftiLabelTable, GiftiNVPairs, GiftiDataArray,
2221
GiftiCoordSystem)
2322
from .util import (array_index_order_codes, gifti_encoding_codes,
2423
gifti_endian_codes)
24+
from ..nifti1 import data_type_codes, xform_codes, intent_codes
2525
from ..xmlbasedimages import XmlImageParser
2626

2727
DEBUG_PRINT = False
@@ -94,6 +94,7 @@ def __init__(self):
9494

9595
# Collecting char buffer fragments
9696
self._char_blocks = None
97+
self.buffer_size = None
9798

9899
def StartElementHandler(self, name, attrs):
99100
self.flush_chardata()
@@ -311,3 +312,42 @@ def flush_chardata(self):
311312
def pending_data(self):
312313
" True if there is character data pending for processing "
313314
return not self._char_blocks is None
315+
316+
def _create_parser(self):
317+
parser = super(GiftiImageParser, self)._create_parser()
318+
if self.buffer_size is not None:
319+
parser.buffer_text = True
320+
parser.buffer_size = self.buffer_size
321+
return parser
322+
323+
def parse(self, string=None, fname=None, fptr=None, buffer_size=None):
324+
""" Parse gifti file named `fname`, return image
325+
326+
Parameters
327+
----------
328+
fname : str
329+
filename of gifti file
330+
buffer_size: None or int, optional
331+
size of read buffer. None gives default of 35000000 unless on python <
332+
2.6, in which case it is read only in the parser. In that case values
333+
other than None cause a ValueError on execution
334+
335+
Returns
336+
-------
337+
img : gifti image
338+
"""
339+
self.buffer_size = buffer_size
340+
return super(GiftiImageParser, self).parse(string=string, fname=fname,
341+
fptr=fptr)
342+
343+
344+
class Outputter(GiftiImageParser):
345+
@np.deprecate_with_doc("Use GiftiImageParser instead.")
346+
def __init__(self, *args, **kwargs):
347+
super(Outputter, self).__init__(*args, **kwargs)
348+
self.img = None
349+
350+
351+
@np.deprecate_with_doc("Use GiftiImageParser.parse() instead.")
352+
def parse_gifti_file(fname=None, fptr=None, buffer_size=None):
353+
GiftiImageParser().parse(fname=fname, fptr=fptr, buffer_size=buffer_size)

nibabel/xmlbasedimages.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
Thin layer around xml.etree.ElementTree, to abstract nibabel xml support.
1111
"""
1212
from xml.etree.ElementTree import Element, SubElement, tostring
13-
from xml.parsers.expat import ParserCreate, ExpatError
13+
from xml.parsers.expat import ParserCreate
1414

1515
from .filebasedimages import FileBasedHeader, FileBasedImage
1616

@@ -43,6 +43,9 @@ def __init__(self, encoding=None):
4343
self.encoding = encoding
4444
self.img = None
4545

46+
def _create_parser(self):
47+
return ParserCreate() # from xml package
48+
4649
def parse(self, string=None, fname=None, fptr=None):
4750
"""
4851
Parameters
@@ -68,7 +71,7 @@ def parse(self, string=None, fname=None, fptr=None):
6871
elif fname is not None:
6972
fptr = open(fname, 'r')
7073

71-
parser = ParserCreate() # from xml package
74+
parser = self._create_parser()
7275
for name in self.HANDLER_NAMES:
7376
setattr(parser, name, getattr(self, name))
7477
parser.ParseFile(fptr)

0 commit comments

Comments
 (0)