def __new__(mcls, name, bases, dictionary): settings = {} # copy all settings defined by parents unless also defined in the class being constructed for name, setting in chain(*(cls.__settings__.iteritems() for cls in bases if isinstance(cls, ConfigSectionType))): if name not in dictionary and name not in settings: settings[name] = ConfigSetting(type=setting.type, value=setting.value) for attr, value in dictionary.iteritems(): if isinstance(value, ConfigSetting): settings[attr] = value elif attr.startswith('__') or isdescriptor( value) or type(value) is BuiltinFunctionType: continue else: if type(value) is bool: data_type = datatypes.Boolean else: data_type = type(value) settings[attr] = ConfigSetting(type=data_type, value=value) dictionary.update(settings) cls = super(ConfigSectionType, mcls).__new__(mcls, name, bases, dictionary) cls.__settings__ = settings cls.__defaults__ = SaveState(cls) return cls
def __init__(cls, name, bases, dic): if not (cls.__id__ is None or isinstance(cls.__id__, str) or isdescriptor(cls.__id__)): raise TypeError( "%s.__id__ must be None, a string instance or a descriptor" % name) super(SettingsObjectMeta, cls).__init__(name, bases, dic)
def __new__(clstype, clsname, bases, dct): settings = {} # copy all settings defined by parents unless also defined in the class being constructed for name, setting in chain(*(cls.__settings__.iteritems() for cls in bases if isinstance(cls, ConfigSectionMeta))): if name not in dct and name not in settings: settings[name] = ConfigSetting(type=setting.type, value=setting.value) for attr, value in dct.iteritems(): if isinstance(value, ConfigSetting): settings[attr] = value elif attr.startswith('__') or isdescriptor(value) or type(value) is types.BuiltinFunctionType: continue else: if type(value) is bool: data_type = datatypes.Boolean else: data_type = type(value) settings[attr] = ConfigSetting(type=data_type, value=value) dct.update(settings) dct['__settings__'] = settings if dct.get('__tracing__', None) not in (log.level.INFO, log.level.DEBUG, None): raise ValueError("__tracing__ must be one of log.level.INFO, log.level.DEBUG or None") return type.__new__(clstype, clsname, bases, dct)
def __new__(mcls, name, bases, dictionary): settings = {} # copy all settings defined by parents unless also defined in the class being constructed for name, setting in chain(*(cls.__settings__.iteritems() for cls in bases if isinstance(cls, ConfigSectionType))): if name not in dictionary and name not in settings: settings[name] = ConfigSetting(type=setting.type, value=setting.value) for attr, value in dictionary.iteritems(): if isinstance(value, ConfigSetting): settings[attr] = value elif attr.startswith('__') or isdescriptor(value) or type(value) is BuiltinFunctionType: continue else: if type(value) is bool: data_type = datatypes.Boolean else: data_type = type(value) settings[attr] = ConfigSetting(type=data_type, value=value) dictionary.update(settings) cls = super(ConfigSectionType, mcls).__new__(mcls, name, bases, dictionary) cls.__settings__ = settings cls.__defaults__ = SaveState(cls) return cls
def __init__(cls, name, bases, dic): if not (cls.__id__ is None or isinstance(cls.__id__, basestring) or isdescriptor(cls.__id__)): raise TypeError("%s.__id__ must be None, a string instance or a descriptor" % name) super(SettingsObjectMeta, cls).__init__(name, bases, dic)