Source code for montage_wrapper.status
from __future__ import print_function
import hashlib
from astropy import log
[docs]def simplify(value):
try:
return int(value)
except:
return float(value)
[docs]class MontageError(Exception):
pass
[docs]def parse_struct(command, string):
# Convert bytes to string
string = string.decode('ascii')
if "\n" in string:
result = []
for substring in string.splitlines():
if 'struct' in substring:
result.append(Struct(command, substring))
else:
print(substring)
else:
if 'struct' in string:
result = Struct(command, string)
else:
print(string)
result = None
if result:
return result
else:
return
[docs]class Struct(object):
def __init__(self, command, string):
string = string[8:-1]
strings = {}
while True:
try:
p1 = string.index('"')
p2 = string.index('"', p1 + 1)
substring = string[p1 + 1:p2]
key = hashlib.md5(substring.encode('ascii')).hexdigest()
strings[key] = substring
string = string[:p1] + key + string[p2 + 1:]
except:
break
for pair in string.split(', '):
key, value = pair.split('=')
if value in strings:
self.__dict__[key] = strings[value]
else:
self.__dict__[key] = simplify(value)
if self.stat == "ERROR":
raise MontageError("%s: %s" % (command, self.msg))
elif self.stat == "WARNING":
log.warn(self.msg)
def __repr__(self):
string = ""
for item in self.__dict__:
string += item + " : " + str(self.__dict__[item]) + "\n"
return string[:-1]