Source code for hgraph._wiring._helper_functions

"""
Provide helper functions for wiring.
"""

from typing import Callable, TypeVar

from hgraph._types import OUT, HgTypeMetaData
from hgraph._wiring._wiring_errors import CustomMessageWiringError

__all__ = ("get_service_inputs", "set_service_output")


[docs] def get_service_inputs( path: str | None, service: Callable, __pre_resolved_types__: dict[TypeVar, HgTypeMetaData | Callable] = None, **kwargs, ): """ Extract the service inputs from a service interface. This is used when implementing a service with multiple interfaces, for example: :: @service_impl(interfaces=(submit, receive, subscribe)) def impl(path: str): submissions: TSD[int, TS[int]] = get_service_inputs(path, submit).ts """ try: return service.wire_impl_inputs_stub(path, __pre_resolved_types__=__pre_resolved_types__, **kwargs) except AttributeError: raise CustomMessageWiringError( f"The provided service for path: '{path}', does not appear to be a service interface: {service}" )
[docs] def set_service_output(path: str | None, service: Callable, out: OUT, __pre_resolved_types__=None, **kwargs): """ Extract the service inputs from a service interface. This is used when implementing a service with multiple interfaces, for example: :: @service_impl(interfaces=(submit, receive, subscribe)) def impl(path: str): ... set_service_output(path, receive, items) """ try: service.wire_impl_out_stub(path, out, __pre_resolved_types__=None, **kwargs) except AttributeError: raise CustomMessageWiringError( f"The provided service for path: '{path}', does not appear to be a service interface: {service}" )