Example #1
0
    def set_parameter(self, name, value, allow_override=False):
        self.logger.debug('[container#{id}] {cls}.set_parameter({name!r}, {value!r}, {allow_override!r})'.format(cls=type(self).__name__, id=id(self), **locals()))

        if not allow_override and name in self.refs:
            raise KeyError('Service container already have a definition for "{0}".'.format(name))

        self.parameters[name] = value
        self.refs[name] = reference(self.parameters.get, name)
        self.refs[name].repr = repr(value)
        return self.refs[name]
Example #2
0
    def __init__(self, *args, **kwargs):
        self.refs = {
            'container': reference(self)
        }
        self.parameters = {}
        self.scopes = {
            'prototype': Scope(),
            'container': CachedScope(),
            'thread': ThreadLocalScope(),
            }

        if callable(self.configure):
            self.configure(self, *args, **kwargs)
        elif len(args) or len(kwargs):
            raise TypeError('Container of type {0} takes no arguments ({1} given)'.format(type(self), len(args) + len(kwargs)))
Example #3
0
 def ref(self, name, repr=None):
     ref = reference(self.get, name)
     if repr is not None:
         ref.repr = repr
     return ref