Esempio n. 1
0
 def configure_custom(self, config):
     """Configure an object with a user-supplied factory."""
     c = config.pop('()')
     if not callable(c):
         c = self.resolve(c)
     props = config.pop('.', None)
     # Check for valid identifiers
     kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
     result = c(**kwargs)
     if props:
         for name, value in props.items():
             setattr(result, name, value)
     return result
Esempio n. 2
0
 def configure_custom(self, config):
     """Configure an object with a user-supplied factory."""
     c = config.pop('()')
     if not callable(c):
         c = self.resolve(c)
     props = config.pop('.', None)
     # Check for valid identifiers
     kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
     result = c(**kwargs)
     if props:
         for name, value in props.items():
             setattr(result, name, value)
     return result
Esempio n. 3
0
    def _resolve_queue(q):
        if not isinstance(q, ConvertingDict):
            return q
        if '__resolved_value__' in q:
            return q['__resolved_value__']

        cname = q.pop('class')
        klass = q.configurator.resolve(cname)
        props = q.pop('.', None) or {}
        kwargs = {k: q[k] for k in q if valid_ident(k)}
        result = klass(**kwargs)
        for name, value in props.items():
            setattr(result, name, value)

        q['__resolved_value__'] = result
        return result