def ParsePythonEnum(string: str, enumType: typing.Type[enum_lib.Enum]) -> typing.Any: if not isinstance(string, str): raise Exceptions.IncorrectTypeException(string, "string", (str, )) if not isinstance(enumType, type): raise Exceptions.IncorrectTypeException(enumType, "enumType", (type, )) if not issubclass(enumType, enum_lib.Enum): raise Exceptions.DoesNotInheritException("enumType", (enum_lib.Enum, )) if "." in string: stringSplit = string.split(".") # type: typing.List[str] if len(stringSplit) == 2: if stringSplit[0] == enumType.__name__: string = stringSplit[1] else: raise ValueError("Cannot parse '" + string + "' to '" + Types.GetFullName(enumType) + "'.") else: raise ValueError("Cannot parse '" + string + "' to '" + Types.GetFullName(enumType) + "'.") try: return enumType[string] except KeyError: pass raise ValueError("'" + string + "' is not an attribute of '" + Types.GetFullName(enumType) + "'.")
def __init__(self, setting: typing.Type[AbstractSettings.SettingAbstract]): """ A wrapper for the standard settings system used by NeonOcean """ if not isinstance(setting, type): raise Exceptions.IncorrectTypeException(setting, "setting", (type, )) if not issubclass(setting, AbstractSettings.SettingAbstract): raise Exceptions.DoesNotInheritException( "setting", (AbstractSettings.SettingAbstract, )) super().__init__(setting)
def SetupAnnouncer(announcer: typing.Type[Announcer]) -> None: if not isinstance(announcer, type): raise Exceptions.IncorrectTypeException(announcer, "announcer", (type, )) if not issubclass(announcer, Announcer): raise Exceptions.DoesNotInheritException("announcer", (Announcer, )) if announcer in _announcers: return _Register(announcer) _SortAnnouncer()