2015-03-09 01:01:39 +03:00
|
|
|
"""Injections module."""
|
2015-01-10 12:24:25 +03:00
|
|
|
|
2015-03-11 16:18:42 +03:00
|
|
|
from .utils import is_provider
|
|
|
|
|
2015-01-10 12:24:25 +03:00
|
|
|
|
|
|
|
class Injection(object):
|
2015-03-09 01:01:39 +03:00
|
|
|
|
|
|
|
"""Base injection class."""
|
2015-01-10 12:24:25 +03:00
|
|
|
|
2015-03-11 16:18:42 +03:00
|
|
|
__IS_OBJECTS_INJECTION__ = True
|
|
|
|
__slots__ = ('__IS_OBJECTS_INJECTION__', 'name', 'injectable')
|
|
|
|
|
2015-01-10 12:24:25 +03:00
|
|
|
def __init__(self, name, injectable):
|
2015-03-09 01:01:39 +03:00
|
|
|
"""Initializer."""
|
2015-01-10 12:24:25 +03:00
|
|
|
self.name = name
|
|
|
|
self.injectable = injectable
|
|
|
|
|
2015-01-11 16:03:45 +03:00
|
|
|
@property
|
|
|
|
def value(self):
|
2015-03-09 01:01:39 +03:00
|
|
|
"""Return injectable value."""
|
2015-03-11 16:18:42 +03:00
|
|
|
if is_provider(self.injectable):
|
2015-01-11 16:03:45 +03:00
|
|
|
return self.injectable()
|
|
|
|
return self.injectable
|
2015-01-10 12:24:25 +03:00
|
|
|
|
|
|
|
|
|
|
|
class InitArg(Injection):
|
2015-03-09 01:01:39 +03:00
|
|
|
|
|
|
|
"""Init argument injection."""
|
2015-01-10 12:24:25 +03:00
|
|
|
|
2015-03-11 16:18:42 +03:00
|
|
|
__IS_OBJECTS_INIT_ARG_INJECTION__ = True
|
|
|
|
__slots__ = ('__IS_OBJECTS_INIT_ARG_INJECTION__',)
|
|
|
|
|
2015-01-10 12:24:25 +03:00
|
|
|
|
|
|
|
class Attribute(Injection):
|
2015-03-09 01:01:39 +03:00
|
|
|
|
|
|
|
"""Attribute injection."""
|
2015-01-10 12:24:25 +03:00
|
|
|
|
2015-03-11 16:18:42 +03:00
|
|
|
__IS_OBJECTS_ATTRIBUTE_INJECTION__ = True
|
|
|
|
__slots__ = ('__IS_OBJECTS_ATTRIBUTE_INJECTION__',)
|
|
|
|
|
2015-01-10 12:24:25 +03:00
|
|
|
|
|
|
|
class Method(Injection):
|
2015-03-09 01:01:39 +03:00
|
|
|
|
|
|
|
"""Method injection."""
|
2015-03-11 16:18:42 +03:00
|
|
|
|
|
|
|
__IS_OBJECTS_METHOD_INJECTION__ = True
|
|
|
|
__slots__ = ('__IS_OBJECTS_METHOD_INJECTION__',)
|