in gridengine/src/gridengine/complex.py [0:0]
def parse(self, value: str) -> Optional[Any]:
try:
if value.upper() == "NONE":
return None
if value.lower() == "infinity":
return float("inf")
if self.complex_type in ["INT", "RSMAP"]:
return int(value)
elif self.complex_type == "BOOL":
try:
return bool(float(value))
except ValueError:
if value.lower() in ["true", "false"]:
return value.lower() == "true"
else:
logging.warning(
"Could not parse '%s' for complex type %s - treating as string.",
value,
self.complex_type,
)
return value
elif self.complex_type == "DOUBLE":
return float(value)
elif self.complex_type in ["RESTRING", "TIME", "STRING", "HOST"]:
return value
elif self.complex_type == "CSTRING":
# TODO test
return value.lower() # case insensitve - we will just always lc
elif self.complex_type == "MEMORY":
size = value[-1]
if size.isdigit():
mem = ht.Memory(float(value), "b")
else:
mem = ht.Memory(float(value[:-1]), size)
return mem.convert_to("g")
else:
if not self.__logged_type_warning:
logging.warning(
"Unknown complex type %s - treating as string.",
self.complex_type,
)
self.__logged_type_warning = True
return value
except Exception:
if not self.__logged_parse_warning:
logging.warning(
"Could not parse complex %s with value '%s'. Treating as string",
self,
value,
)
self.__logged_parse_warning = True
return value