mirror of
https://github.com/echemdata/galvani.git
synced 2025-12-14 01:15:34 +00:00
Factor the date parsing code out to a separate function
This commit is contained in:
@@ -244,6 +244,26 @@ VMPdata_colID_flag_map = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def parse_BioLogic_date(date_text):
|
||||||
|
"""Parse a date from one of the various formats used by Bio-Logic files."""
|
||||||
|
date_formats = ['%m/%d/%y', '%m-%d-%y', '%m.%d.%y']
|
||||||
|
if isinstance(date_text, bytes):
|
||||||
|
date_string = date_text.decode('ascii')
|
||||||
|
else:
|
||||||
|
date_string = date_text
|
||||||
|
for date_format in date_formats:
|
||||||
|
try:
|
||||||
|
tm = time.strptime(date_string, date_format)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise ValueError(f'Could not parse timestamp {date_string!r}'
|
||||||
|
f' with any of the formats {date_formats}')
|
||||||
|
return date(tm.tm_year, tm.tm_mon, tm.tm_mday)
|
||||||
|
|
||||||
|
|
||||||
def VMPdata_dtype_from_colIDs(colIDs):
|
def VMPdata_dtype_from_colIDs(colIDs):
|
||||||
"""Get a numpy record type from a list of column ID numbers.
|
"""Get a numpy record type from a list of column ID numbers.
|
||||||
|
|
||||||
@@ -397,12 +417,7 @@ class MPRfile:
|
|||||||
self.version = int(data_module['version'])
|
self.version = int(data_module['version'])
|
||||||
self.cols = column_types
|
self.cols = column_types
|
||||||
self.npts = n_data_points
|
self.npts = n_data_points
|
||||||
|
self.startdate = parse_BioLogic_date(settings_mod['date'])
|
||||||
try:
|
|
||||||
tm = time.strptime(settings_mod['date'].decode('ascii'), '%m/%d/%y')
|
|
||||||
except ValueError:
|
|
||||||
tm = time.strptime(settings_mod['date'].decode('ascii'), '%m-%d-%y')
|
|
||||||
self.startdate = date(tm.tm_year, tm.tm_mon, tm.tm_mday)
|
|
||||||
|
|
||||||
if maybe_loop_module:
|
if maybe_loop_module:
|
||||||
loop_module, = maybe_loop_module
|
loop_module, = maybe_loop_module
|
||||||
@@ -416,19 +431,7 @@ class MPRfile:
|
|||||||
|
|
||||||
if maybe_log_module:
|
if maybe_log_module:
|
||||||
log_module, = maybe_log_module
|
log_module, = maybe_log_module
|
||||||
date_string = log_module['date'].decode('ascii')
|
self.enddate = parse_BioLogic_date(log_module['date'])
|
||||||
date_formats = ['%m/%d/%y', '%m-%d-%y', '%m.%d.%y']
|
|
||||||
for date_format in date_formats:
|
|
||||||
try:
|
|
||||||
tm = time.strptime(date_string, date_format)
|
|
||||||
except ValueError:
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise ValueError(f'Could not parse timestamp {date_string!r}'
|
|
||||||
f' with any of the formats {date_formats}')
|
|
||||||
self.enddate = date(tm.tm_year, tm.tm_mon, tm.tm_mday)
|
|
||||||
|
|
||||||
# There is a timestamp at either 465 or 469 bytes
|
# There is a timestamp at either 465 or 469 bytes
|
||||||
# I can't find any reason why it is one or the other in any
|
# I can't find any reason why it is one or the other in any
|
||||||
|
|||||||
Reference in New Issue
Block a user