o
    ưi
                     @   sF   d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 G dd dZ
dS )z6
Utility class for getting routes from a FastAPI app.
    )AnyDictListOptional)	BaseRoute)verbose_loggerc                
   @   sn   e Zd Zedededeeeef  fddZ	ededeeeef  fddZ
ededee fd	d
ZdS )	GetRoutesrouteendpoint_routereturnc                 C   sJ   g }t | ddt | ddt | ddt | ddr|jndd}|| |S )z1
        Get routes for a regular route.
        pathNmethodsnameendpoint)r   r   r   r   )getattr__name__append)r	   r
   routes
route_info r   \/home/app/Keep/.python/lib/python3.10/site-packages/litellm/proxy/common_utils/get_routes.pyget_app_routes   s   





zGetRoutes.get_app_routesc           	      C   s   g }t | dd}t | dd}|rRt|drR|jD ]9}t |ddp%t |dd}|durQt |dd}|d| }|t |dd	d
gt |ddt|dd}|| q|S )z;
        Get routes for a mounted sub-application.
        r    appNr   r   /r   GETPOSTr   T)r   r   r   r   Zmounted_app)r   hasattrr   rstripr   _safe_get_endpoint_namer   )	r	   r   Z
mount_pathZsub_appZ	sub_routeZendpoint_funcZsub_route_path	full_pathr   r   r   r   get_routes_for_mounted_app#   s$   


z$GetRoutes.get_routes_for_mounted_appendpoint_functionc                 C   sf   z t | drt| dW S t | drt | jdrt| jdW S W dS  ty2   td|   Y dS w )z?
        Safely get the name of the endpoint function.
        r   	__class__Nz'Error getting endpoint name for route: )r   r   r#   	Exceptionr   	exception)r"   r   r   r   r   A   s   
z!GetRoutes._safe_get_endpoint_nameN)r   
__module____qualname__staticmethodr   r   r   r   strr   r!   r   r   r   r   r   r   r      s"    r   N)__doc__typingr   r   r   r   Zstarlette.routingr   Zlitellm._loggingr   r   r   r   r   r   <module>   s
    