You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

base.py 1023B

123456789101112131415161718192021222324252627
  1. from collections.abc import Generator, Mapping
  2. from typing import Generic, Optional, TypeVar
  3. from pydantic import BaseModel
  4. class BaseBackwardsInvocation:
  5. @classmethod
  6. def convert_to_event_stream(cls, response: Generator[BaseModel | Mapping | str, None, None] | BaseModel | Mapping):
  7. if isinstance(response, Generator):
  8. try:
  9. for chunk in response:
  10. if isinstance(chunk, BaseModel | dict):
  11. yield BaseBackwardsInvocationResponse(data=chunk).model_dump_json().encode()
  12. except Exception as e:
  13. error_message = BaseBackwardsInvocationResponse(error=str(e)).model_dump_json()
  14. yield error_message.encode()
  15. else:
  16. yield BaseBackwardsInvocationResponse(data=response).model_dump_json().encode()
  17. T = TypeVar("T", bound=dict | Mapping | str | bool | int | BaseModel)
  18. class BaseBackwardsInvocationResponse(BaseModel, Generic[T]):
  19. data: Optional[T] = None
  20. error: str = ""