Expand our own enums.

This commit is contained in:
Dave O'Connor 2021-01-31 02:57:00 +00:00 committed by Andrius Štikonas
parent 4792fc8249
commit b55ea393cb
1 changed files with 18 additions and 4 deletions

View File

@ -13,7 +13,7 @@ from functools import partial
from neohubapi.neohub import NeoHub from neohubapi.neohub import NeoHub
from neohubapi.neohub import NeoHubUsageError from neohubapi.neohub import NeoHubUsageError
from neohubapi.neostat import NeoStat from neohubapi.neostat import NeoStat
from neohubapi.enums import ScheduleFormat from neohubapi.enums import ScheduleFormat, Weekday
class Error(Exception): class Error(Exception):
@ -210,18 +210,32 @@ class NeoHubCLI(object):
return f'{raw_result}' return f'{raw_result}'
if type(raw_result) != types.SimpleNamespace: if type(raw_result) != types.SimpleNamespace:
raise NeoHubCLIInternalError( if type(raw_result) == dict:
f'Unexpected type {type(raw_result)} in output()') raw_result = types.SimpleNamespace(**raw_result)
else:
raise NeoHubCLIInternalError(
f'Unexpected type {type(raw_result)} in output()')
return self._output_simplenamespace(raw_result, output_format) return self._output_simplenamespace(raw_result, output_format)
def _resolve_output_val(self, val):
"""Return a readable str version of a value.
This is mainly so our own enums and objects look readable.
"""
if type(val) in (ScheduleFormat, Weekday):
return val.value
elif type(val) == NeoStat:
return f'[NeoStat: {val.name}]'
else:
return val
def _output_simplenamespace(self, obj, output_format): def _output_simplenamespace(self, obj, output_format):
"""Output a types.Simplenamespace object.""" """Output a types.Simplenamespace object."""
if output_format == 'list': if output_format == 'list':
attrs = dict( attrs = dict(
[(a, getattr(obj, a)) for a in dir(obj) [(a, getattr(obj, a)) for a in dir(obj)
if not a.startswith('_')]) if not a.startswith('_')])
return '\n'.join([f'{a}: {attrs[a]}' for a in attrs]) return '\n'.join([f'{a}: {self._resolve_output_val(attrs[a])}' for a in attrs])
else: else:
raise NeoHubCLIUsageError(f'Unknown output format {output_format}') raise NeoHubCLIUsageError(f'Unknown output format {output_format}')