MCPcopy
hub / github.com/fastapi/fastapi / _build_effective_context

Method _build_effective_context

fastapi/routing.py:1626–1699  ·  view source on GitHub ↗
(
        self, route: BaseRoute
    )

Source from the content-addressed store, hash-verified

1624 return self._effective_low_priority_routes
1625
1626 def _build_effective_context(
1627 self, route: BaseRoute
1628 ) -> _EffectiveRouteContext | None:
1629 if isinstance(route, APIRoute):
1630 return _EffectiveRouteContext.from_api_route(
1631 original_route=route,
1632 include_context=self.include_context,
1633 )
1634 if isinstance(route, _FrontendRouteGroup):
1635 return _EffectiveRouteContext.from_frontend_route_group(
1636 original_route=route,
1637 include_context=self.include_context,
1638 )
1639 if isinstance(route, routing.Route):
1640 starlette_route: BaseRoute = routing.Route(
1641 self.include_context.path_for(route),
1642 endpoint=route.endpoint,
1643 methods=list(route.methods or []),
1644 name=route.name,
1645 include_in_schema=route.include_in_schema,
1646 )
1647 return _EffectiveRouteContext(
1648 original_route=route,
1649 starlette_route=starlette_route,
1650 )
1651 if isinstance(route, APIWebSocketRoute):
1652 starlette_route = APIWebSocketRoute(
1653 self.include_context.path_for(route),
1654 endpoint=route.endpoint,
1655 name=route.name,
1656 dependencies=[*self.include_context.dependencies, *route.dependencies],
1657 dependency_overrides_provider=(
1658 self.include_context.dependency_overrides_provider
1659 ),
1660 )
1661 return _EffectiveRouteContext(
1662 original_route=route,
1663 starlette_route=starlette_route,
1664 )
1665 if isinstance(route, routing.WebSocketRoute):
1666 starlette_route = routing.WebSocketRoute(
1667 self.include_context.path_for(route), route.endpoint, name=route.name
1668 )
1669 return _EffectiveRouteContext(
1670 original_route=route,
1671 starlette_route=starlette_route,
1672 )
1673 if isinstance(route, routing.Mount):
1674 starlette_route = copy.copy(route)
1675 starlette_route.path = self.include_context.path_for(route).rstrip("/")
1676 (
1677 starlette_route.path_regex,
1678 starlette_route.path_format,
1679 starlette_route.param_convertors,
1680 ) = compile_path(starlette_route.path + "/{path:path}")
1681 return _EffectiveRouteContext(
1682 original_route=route,
1683 starlette_route=starlette_route,

Callers 2

effective_candidatesMethod · 0.95

Calls 5

APIWebSocketRouteClass · 0.85
from_api_routeMethod · 0.80
path_forMethod · 0.80

Tested by

no test coverage detected