Includes a router in the API.
( # type: ignore[override]
self,
router: Union["StreamRouter[MsgType]", "BrokerRouter[MsgType]"],
*,
prefix: str = "",
tags: list[str | Enum] | None = None,
dependencies: Sequence["params.Depends"] | None = None,
default_response_class: type[Response] = Default(JSONResponse),
responses: dict[int | str, dict[str, Any]] | None = None,
callbacks: list["BaseRoute"] | None = None,
deprecated: bool | None = None,
include_in_schema: bool = True,
generate_unique_id_function: Callable[["APIRoute"], str] = Default(
generate_unique_id,
),
)
| 474 | return docs_router |
| 475 | |
| 476 | def include_router( # type: ignore[override] |
| 477 | self, |
| 478 | router: Union["StreamRouter[MsgType]", "BrokerRouter[MsgType]"], |
| 479 | *, |
| 480 | prefix: str = "", |
| 481 | tags: list[str | Enum] | None = None, |
| 482 | dependencies: Sequence["params.Depends"] | None = None, |
| 483 | default_response_class: type[Response] = Default(JSONResponse), |
| 484 | responses: dict[int | str, dict[str, Any]] | None = None, |
| 485 | callbacks: list["BaseRoute"] | None = None, |
| 486 | deprecated: bool | None = None, |
| 487 | include_in_schema: bool = True, |
| 488 | generate_unique_id_function: Callable[["APIRoute"], str] = Default( |
| 489 | generate_unique_id, |
| 490 | ), |
| 491 | ) -> None: |
| 492 | """Includes a router in the API.""" |
| 493 | if isinstance(router, BrokerRouter): |
| 494 | for sub in router.subscribers: |
| 495 | sub._call_decorators = ( |
| 496 | self._subscriber_compatibility_wrapper(), |
| 497 | *sub._call_decorators, |
| 498 | ) |
| 499 | |
| 500 | self.broker.include_router(router) |
| 501 | return |
| 502 | |
| 503 | msg = ( |
| 504 | "Including a StreamRouter into another StreamRouter is not supported " |
| 505 | "and may cause subtle context issues (e.g. message dependencies " |
| 506 | "returning EmptyPlaceholder). " |
| 507 | "Use a regular broker router (e.g. KafkaRouter, RabbitRouter, etc.) " |
| 508 | "for grouping subscribers and include that into the StreamRouter instead. " |
| 509 | "See: https://faststream.ag2.ai/latest/getting-started/integrations/fastapi/#multiple-routers" |
| 510 | ) |
| 511 | raise TypeError(msg) |