clearml/trains/utilities/enum.py
2019-06-10 20:02:11 +03:00

25 lines
922 B
Python

""" Enum utilities """
class EnumOptions(object):
""" Base class for enum-like classes using class-attributes with string values to represent enum key/value pairs """
__cache = None
@classmethod
def values(cls):
""" Extract list of enum-like options based on the derived classes' attributes.
Any class attribute who's key doesn't start with an underscore and who's value is not a class method
or callable is considered an option.
Returns a list of attribute names representing the options.
"""
if cls.__cache is None:
cls.__cache = [v for k, v in vars(cls).items() if
not k.startswith('_') and not callable(v) and not isinstance(v, classmethod)]
return cls.__cache
class Options(object):
@classmethod
def _all(cls):
return {k: v for k, v in vars(cls) if not k.startswith('_')}