def register_interface(self, iface, omit=(), prefix=None): proxy = RecordsProxy(self, iface, prefix) for name in iface.names(): if name in omit: continue field = iface[name] if field.defaultFactory is not None: if IContextAwareDefaultFactory.providedBy(field.defaultFactory): # noqa proxy[name] = field.defaultFactory(self) else: proxy[name] = field.defaultFactory() elif field.default is not None: proxy[name] = field.default
def __get__(self, inst, owner): name, check = self._info default_factory = inst.__dict__.get('defaultFactory') # If there is no default factory, simply return the default. if default_factory is None: return inst.__dict__[name] # Get the default value by calling the factory. Some factories might # require a context to produce a value. if IContextAwareDefaultFactory.providedBy(default_factory): value = default_factory(inst.context) else: value = default_factory() # Check that the created value is valid. if check is not None: check(inst, value) elif value != inst.missing_value: inst.validate(value) return value