Skip to content
Snippets Groups Projects
Commit 1f16f050 authored by Zineb Aly's avatar Zineb Aly
Browse files

correct HEader

parent 42a590cc
No related branches found
No related tags found
2 merge requests!25Test refactor offline,!24Refactor offline
This commit is part of merge request !24. Comments created here will be created in the context of that merge request.
......@@ -177,23 +177,20 @@ class Usr:
def _to_num(value):
"""Convert a value to a numerical one if possible"""
if value is None:
return
try:
return int(value)
except ValueError:
for converter in (int, float):
try:
return float(value)
except ValueError:
return converter(value)
except (ValueError, TypeError):
pass
else:
return value
return value
class Header:
"""The header"""
def __init__(self, header):
self._data = {}
self._missing_keys = list(set(header.keys()) - set(mc_header.keys()))
for attribute, fields in mc_header.items():
values = header.get(attribute, '').split()
if not values:
......@@ -201,17 +198,26 @@ class Header:
Constructor = namedtuple(attribute, fields)
if len(values) < len(fields):
values += [None] * (len(fields) - len(values))
print(attribute, fields, values)
self._data[attribute] = Constructor(
**{f: _to_num(v)
for (f, v) in zip(fields, values)})
# quick fix while waiting for additional definitions in mc_header
for key in self._missing_keys:
self._data[key] = _to_num(header[key])
for attribute, value in self._data.items():
setattr(self, attribute, value)
def __str__(self):
lines = ["MC Header:"]
for value in self._data.values():
lines.append(" {}".format(value))
keys = set(mc_header.keys())
for key, value in self._data.items():
if key in keys:
lines.append(" {}".format(value))
else:
lines.append(" {}: {}".format(key, value))
return "\n".join(lines)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment