27 lines
754 B
Python
27 lines
754 B
Python
from typing import Generic, TypeVar
|
|
|
|
from rainbowadn.flow.core import *
|
|
from ._sequencedispatch import *
|
|
from ._sequencedispatcher import *
|
|
|
|
__all__ = ('DispatchMapper',)
|
|
|
|
Element = TypeVar('Element')
|
|
Out = TypeVar('Out')
|
|
|
|
|
|
class DispatchMapper(
|
|
Mapper[SequenceDispatcher[Element, Out], Out],
|
|
Generic[Out, Element]
|
|
):
|
|
def __init__(self, dispatch: SequenceDispatch[Element, Out]):
|
|
assert isinstance(dispatch, SequenceDispatch)
|
|
self.dispatch = dispatch
|
|
|
|
async def map(self, element: SequenceDispatcher[Element, Out]) -> Out:
|
|
assert isinstance(element, SequenceDispatcher)
|
|
return await element.dispatch(self.dispatch)
|
|
|
|
def loose(self) -> Mapper[SequenceDispatcher[Element, Out], Out]:
|
|
return self
|