Source code for autowire.context.provider
"""
context.provider
================
Interface for providing resource's implementations.
"""
import abc
from autowire.base import BaseResource
from autowire.impl import Implementable, Implementation
[docs]class ImplementationConsumer(object, metaclass=abc.ABCMeta):
@abc.abstractmethod
[docs] def set_implementation(self, resource: BaseResource,
implementation: Implementation):
pass
[docs]class Provider(Implementable):
def __init__(self,
resource: BaseResource,
consumer: ImplementationConsumer):
super().__init__()
self.resource = resource
self.consumer = consumer
[docs] def implement(self, implementation: Implementation):
"""Set implementation of implementable."""
self.consumer.set_implementation(self.resource, implementation)