mirror of
https://github.com/clearml/clearml
synced 2025-01-31 09:07:00 +00:00
25 lines
922 B
Python
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('_')}
|