
    &`i              	           d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZ d dlmZmZmZ  ej        e          Z G d de j                  Zd Z	 dd	ed
ededej        j        fdZdS )    N)Any)PathLikeRouteDefaiohttphdrs)CustomEncoderHTTPStatusCodeto_google_stylec            	          e Zd ZdZ G d d          Zeeej        d                                     Z	eeej        d                                     Z
eej        d                         Zeej        d                         Zed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zededededdfd            ZdS )BaseRouteTablea  A base class to bind http route to a target instance. Subclass should implement
    the _register_route method. It should define how the handler interacts with
    _BindInfo.instance.

    Subclasses must declare their own _bind_map and _routes properties to avoid
    conflicts.
    c                       e Zd Zd ZdS )BaseRouteTable._BindInfoc                 0    || _         || _        || _        d S N)filenamelinenoinstance)selfr   r   r   s       h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/dashboard/routes.py__init__z!BaseRouteTable._BindInfo.__init__   s    $DM DK$DMMM    N)__name__
__module____qualname__r    r   r   	_BindInfor      s#        	% 	% 	% 	% 	%r   r   c                     d S r   r   clss    r   	_bind_mapzBaseRouteTable._bind_map    	     	r   c                     d S r   r   r   s    r   _routeszBaseRouteTable._routes&   r!   r   c                     d S r   r   )r   methodpathkwargss       r   _register_routezBaseRouteTable._register_route,   	     	r   c                     d S r   r   )r   r   s     r   bindzBaseRouteTable.bind1   r)   r   c                     | j         S r   )r#   r   s    r   routeszBaseRouteTable.routes6   s
    {r   c                 V   g }| j         j        D ]t}t          |t                    rH|j        j        }|j        j        }| j        |         |         j        }||	                    |           _|	                    |           ut          j                                        }||_        |S r   )r#   _items
isinstancer   handler__route_method____route_path__r    r   appendr   webRouteTableDef)r   bound_itemsrroute_method
route_pathr   r-   s          r   bound_routeszBaseRouteTable.bound_routes:   s    # 	& 	&A!X&& & y9Y5
=6zBK'&&q)))""1%%%%**,,#r   c                 4     | j         t          j        |fi |S r   )r(   r   	METH_HEADr   r&   r'   s      r   headzBaseRouteTable.headJ   !    "s"4>4BB6BBBr   c                 4     | j         t          j        |fi |S r   )r(   r   METH_GETr>   s      r   getzBaseRouteTable.getN   !    "s"4=$AA&AAAr   c                 4     | j         t          j        |fi |S r   )r(   r   	METH_POSTr>   s      r   postzBaseRouteTable.postR   r@   r   c                 4     | j         t          j        |fi |S r   )r(   r   METH_PUTr>   s      r   putzBaseRouteTable.putV   rD   r   c                 4     | j         t          j        |fi |S r   )r(   r   
METH_PATCHr>   s      r   patchzBaseRouteTable.patchZ   s!    "s"4?DCCFCCCr   c                 4     | j         t          j        |fi |S r   )r(   r   METH_DELETEr>   s      r   deletezBaseRouteTable.delete^   s"    "s"4#3TDDVDDDr   c                 4     | j         t          j        |fi |S r   )r(   r   METH_ANYr>   s      r   viewzBaseRouteTable.viewb   rD   r   prefixr&   r'   returnNc                 .     | j         j        ||fi | d S r   )r#   static)r   rT   r&   r'   s       r   rW   zBaseRouteTable.staticf   s'    6422622222r   )r   r   r   __doc__r   classmethodpropertyabcabstractmethodr    r#   r(   r+   r-   r;   r?   rC   rG   rJ   rM   rP   rS   strr   r   rW   r   r   r   r   r      sB        % % % % % % % %    X [    X [    [    [   [   [ C C [C B B [B C C [C B B [B D D [D E E [E B B [B 3C 3x 33 34 3 3 3 [3 3 3r   r   c                  ,     G d dt                     } | S )zU
    Return a method-based route table class, for in-process HeadModule objects.
    c                       e Zd ZdZ ej        e          Zej	        
                                Zed             Zed             ZdS )4method_route_table_factory.<locals>.MethodRouteTablezA helper class to bind http route to class method. Each _BindInfo.instance
        is a class instance, and for an inbound request, we invoke the async handler
        method.c                       fd}|S )Nc                     j                  v r5j                           t          d dj         dj                                        j        j         j        j        d           t          j	                   dt          j        j        f fd            }j                  <   |_        |_          j        j        fi |          S )NzDuplicated route path: z, previous one registered at :rU   c                     K   	 | d         } j         |           d {V S # t          $ rK t                              d           t	          t
          j        t          j                              cY S w xY w)NzHandle %s %s failed.)status_codemessage)	r   	Exceptionlogger	exceptionrest_responser	   INTERNAL_ERROR	traceback
format_exc)argsreq	bind_infor1   r%   r&   s     r   _handler_routeznmethod_route_table_factory.<locals>.MethodRouteTable._register_route.<locals>._wrapper.<locals>._handler_route   s      
 #2h%,WY-?%E%EEEEEEEE$   (()?NNN,(6(E$-$8$:$:        s   $ AA98A9)r    rh   r   r   r   __code__co_filenameco_firstlineno	functoolswrapsr   r5   Responser2   r3   r#   route)r1   rr   rq   r   r'   r%   r&   s   ` @r   _wrapperzVmethod_route_table_factory.<locals>.MethodRouteTable._register_route.<locals>._wrapperz   s8   3=000 #f 5d ;I#C$ C C$-C C090@C C    MM$0'2B2QSW 	 ))7;3G         *) /8f%d+28/04-@(s{(@@@@PPPr   r   )r   r%   r&   r'   rz   s   ```` r   r(   zDmethod_route_table_factory.<locals>.MethodRouteTable._register_routex   s>     Q  Q  Q  Q  Q  Q  Q  QD Or   c                     d }t          j        ||          }|D ]1\  }}|| j        |j        j                 |j        j                 _        2d S )Nc                 n    t          j        |           r t          | d          ot          | d          S dS )Nr2   r3   F)inspectismethodhasattr)os    r   	predicatezLmethod_route_table_factory.<locals>.MethodRouteTable.bind.<locals>.predicate   sF    #A&& "1&899 g+? ?  ur   )r}   
getmembersr    __func__r2   r3   r   )r   r   r   handler_routes_hs         r   r+   z9method_route_table_factory.<locals>.MethodRouteTable.bind   sj       %/)DDN& & &1 & aj9:J-(& &r   N)r   r   r   rX   collectionsdefaultdictdictr    r   r5   r6   r#   rY   r(   r+   r   r   r   MethodRouteTabler`   p   sz        	 	 ,K+D11	+++--	#	 #	 
#	J 
	& 	& 
	& 	& 	&r   r   )r   )r   s    r   method_route_table_factoryr   k   s5    
;& ;& ;& ;& ;&> ;& ;& ;&z r   Trf   rg   convert_google_stylerU   c                 ,   t           j                            d          dk    rddi}ni }| t          j        k    }t
          j                            |||rt          |          n|dt          j
        t          j        t                    ||           S )a.  
    Args:
        status_code: HTTPStatusCode
            The HTTP status code of the response.
        message: str
            The message of the response.
        convert_google_style: bool
            Whether to convert the response to google style.

    Returns:
        aiohttp.web.Response
    RAY_DASHBOARD_DEV1zAccess-Control-Allow-Origin*)resultmsgdatar   )dumpsheadersstatus)osenvironrC   r	   OKr   r5   json_responser
   rv   partialjsonr   r   )rf   rg   r   r'   r   successs         r   rk   rk      s    * 
z~~)**c110#6^..G;$$/COOF+++	
 	

 
>>> % 	 	 	r   )T)r[   r   rv   r}   r   loggingr   rm   typingr   ray.dashboard.optional_depsr   r   r   r   ray.dashboard.utilsr   r	   r
   	getLoggerr   ri   ABCr   r   r]   boolr5   rx   rk   r   r   r   <module>r      sU   



            				           I I I I I I I I I I I I N N N N N N N N N N		8	$	$W3 W3 W3 W3 W3SW W3 W3 W3tB B BP "&$ $$$ $
 [$ $ $ $ $ $r   