diff options
Diffstat (limited to 'venv/lib/python3.11/site-packages/litestar/_openapi/path_item.py')
| -rw-r--r-- | venv/lib/python3.11/site-packages/litestar/_openapi/path_item.py | 137 | 
1 files changed, 0 insertions, 137 deletions
| diff --git a/venv/lib/python3.11/site-packages/litestar/_openapi/path_item.py b/venv/lib/python3.11/site-packages/litestar/_openapi/path_item.py deleted file mode 100644 index 74a04ce..0000000 --- a/venv/lib/python3.11/site-packages/litestar/_openapi/path_item.py +++ /dev/null @@ -1,137 +0,0 @@ -from __future__ import annotations - -from inspect import cleandoc -from typing import TYPE_CHECKING - -from litestar._openapi.parameters import create_parameters_for_handler -from litestar._openapi.request_body import create_request_body -from litestar._openapi.responses import create_responses_for_handler -from litestar._openapi.utils import SEPARATORS_CLEANUP_PATTERN -from litestar.enums import HttpMethod -from litestar.openapi.spec import Operation, PathItem -from litestar.utils.helpers import unwrap_partial - -if TYPE_CHECKING: -    from litestar._openapi.datastructures import OpenAPIContext -    from litestar.handlers.http_handlers import HTTPRouteHandler -    from litestar.routes import HTTPRoute - -__all__ = ("create_path_item_for_route",) - - -class PathItemFactory: -    """Factory for creating a PathItem instance for a given route.""" - -    def __init__(self, openapi_context: OpenAPIContext, route: HTTPRoute) -> None: -        self.context = openapi_context -        self.route = route -        self._path_item = PathItem() - -    def create_path_item(self) -> PathItem: -        """Create a PathItem for the given route parsing all http_methods into Operation Models. - -        Returns: -            A PathItem instance. -        """ -        for http_method, handler_tuple in self.route.route_handler_map.items(): -            route_handler, _ = handler_tuple - -            if not route_handler.resolve_include_in_schema(): -                continue - -            operation = self.create_operation_for_handler_method(route_handler, HttpMethod(http_method)) - -            setattr(self._path_item, http_method.lower(), operation) - -        return self._path_item - -    def create_operation_for_handler_method( -        self, route_handler: HTTPRouteHandler, http_method: HttpMethod -    ) -> Operation: -        """Create an Operation instance for a given route handler and http method. - -        Args: -            route_handler: A route handler instance. -            http_method: An HttpMethod enum value. - -        Returns: -            An Operation instance. -        """ -        operation_id = self.create_operation_id(route_handler, http_method) -        parameters = create_parameters_for_handler(self.context, route_handler, self.route.path_parameters) -        signature_fields = route_handler.parsed_fn_signature.parameters - -        request_body = None -        if data_field := signature_fields.get("data"): -            request_body = create_request_body( -                self.context, route_handler.handler_id, route_handler.resolve_data_dto(), data_field -            ) - -        raises_validation_error = bool(data_field or self._path_item.parameters or parameters) -        responses = create_responses_for_handler( -            self.context, route_handler, raises_validation_error=raises_validation_error -        ) - -        return route_handler.operation_class( -            operation_id=operation_id, -            tags=route_handler.resolve_tags() or None, -            summary=route_handler.summary or SEPARATORS_CLEANUP_PATTERN.sub("", route_handler.handler_name.title()), -            description=self.create_description_for_handler(route_handler), -            deprecated=route_handler.deprecated, -            responses=responses, -            request_body=request_body, -            parameters=parameters or None,  # type: ignore[arg-type] -            security=route_handler.resolve_security() or None, -        ) - -    def create_operation_id(self, route_handler: HTTPRouteHandler, http_method: HttpMethod) -> str: -        """Create an operation id for a given route handler and http method. - -        Adds the operation id to the context's operation id set, where it is checked for uniqueness. - -        Args: -            route_handler: A route handler instance. -            http_method: An HttpMethod enum value. - -        Returns: -            An operation id string. -        """ -        if isinstance(route_handler.operation_id, str): -            operation_id = route_handler.operation_id -        elif callable(route_handler.operation_id): -            operation_id = route_handler.operation_id(route_handler, http_method, self.route.path_components) -        else: -            operation_id = self.context.openapi_config.operation_id_creator( -                route_handler, http_method, self.route.path_components -            ) -        self.context.add_operation_id(operation_id) -        return operation_id - -    def create_description_for_handler(self, route_handler: HTTPRouteHandler) -> str | None: -        """Produce the operation description for a route handler. - -        Args: -            route_handler: A route handler instance. - -        Returns: -            An optional description string -        """ -        handler_description = route_handler.description -        if handler_description is None and self.context.openapi_config.use_handler_docstrings: -            fn = unwrap_partial(route_handler.fn) -            return cleandoc(fn.__doc__) if fn.__doc__ else None -        return handler_description - - -def create_path_item_for_route(openapi_context: OpenAPIContext, route: HTTPRoute) -> PathItem: -    """Create a PathItem for the given route parsing all http_methods into Operation Models. - -    Args: -        openapi_context: The OpenAPIContext instance. -        route: The route to create a PathItem for. - -    Returns: -        A PathItem instance. -    """ -    path_item_factory = PathItemFactory(openapi_context, route) -    return path_item_factory.create_path_item() | 
