Source code for langdash.chains.typing
import dataclasses
from typing import Any, Callable, Dict, ItemsView
from typing import Type as _Type
from typing import Union, cast
Type = Callable[[str], Any]
TypeDict = Dict[str, Type]
TypeDictView = ItemsView[str, Type]
TypeDictOrDataclass = Union[TypeDict, _Type]
def _to_typedict(val: TypeDictOrDataclass) -> TypeDict:
if isinstance(val, dict):
return val
assert dataclasses.is_dataclass(val)
newval = {}
for field in dataclasses.fields(val):
newval[field.name] = cast(Type, field.type)
return newval
[docs]class Mapping:
"""
Helper type for mapping string into value.
"""
def __init__(self, mapping: Dict[str, Any]):
self.mapping = mapping
def __call__(self, input: str):
return self.mapping[input]