Exemplo n.º 1
0
    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
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
 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)