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)