
    &`i%                         d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ erddlmZ  G d de          Z e
d	e
          Z G d deee                   Z G d dee	eef                            ZdS )z>Ranker component for operator selection in streaming executor.    )ABCabstractmethod)TYPE_CHECKINGGenericListProtocolTupleTypeVar)PhysicalOperator)ResourceManager)Topologyc                   b    e Zd ZdZdd defdZdd defdZdd defdZdd defdZdd defdZ	d	S )

Comparablez4Protocol for types that can be compared for ranking.otherreturnc                     d S N selfr   s     w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/execution/ranker.py__lt__zComparable.__lt__           c                     d S r   r   r   s     r   __le__zComparable.__le__   r   r   c                     d S r   r   r   s     r   __gt__zComparable.__gt__   r   r   c                     d S r   r   r   s     r   __ge__zComparable.__ge__   r   r   c                     d S r   r   r   s     r   __eq__zComparable.__eq__   r   r   N)
__name__
__module____qualname____doc__boolr   r   r   r    r"   r   r   r   r   r      s        >>L T    L T    L T    L T    L T      r   r   RankingValue)boundc            	       j    e Zd ZdZededddedefd            Zde	e         dddede	e         fd	Z
d
S )Rankerz4Abstract base class for operator ranking strategies.optopologyr   resource_managerr   c                     dS )a  Rank operator for execution priority.

        Operator to run next is selected as the one with the *smallest* value
        of the lexicographically ordered ranks composed of (in order):

        Args:
            op: Operator to rank
            topology: Current execution topology
            resource_manager: Resource manager for usage information

        Returns:
            Rank (tuple) for operator
        Nr   )r   r,   r-   r.   s       r   rank_operatorzRanker.rank_operator'   s	    ( 	r   opsc                 R     t          |          dk    sJ  fd|D             S )Nr   c                 >    g | ]}                     |          S r   )r0   ).0r,   r.   r   r-   s     r   
<listcomp>z)Ranker.rank_operators.<locals>.<listcomp>E   s,    QQQr""2x1ABBQQQr   )len)r   r1   r-   r.   s   ` ``r   rank_operatorszRanker.rank_operators=   s:     3xx!||||QQQQQQSQQQQr   N)r#   r$   r%   r&   r   r   r   r(   r0   r   r7   r   r   r   r+   r+   $   s        >>  *	
 
   ^*R"#R R *	R
 
l	R R R R R Rr   r+   c            
       :    e Zd ZdZdedddedeeef         fdZdS )	DefaultRankerzRanker implementation.r,   r-   r   r.   r   c                 j    |                                 rdnd}||                    |          j        fS )a  Computes rank for op. *Lower means better rank*

            1. Whether operator's could be throttled (int)
            2. Operators' object store utilization

        Args:
            op: Operator to rank
            topology: Current execution topology
            resource_manager: Resource manager for usage information

        Returns:
            Rank (tuple) for operator
        r      )throttling_disabledget_op_usageobject_store_memory)r   r,   r-   r.   r<   s        r   r0   zDefaultRanker.rank_operatorK   sB    ( $&#9#9#;#;Baa  ))"--A
 	
r   N)	r#   r$   r%   r&   r   r   r	   intr0   r   r   r   r9   r9   H   s\          

 
 *	

 
sCx
 
 
 
 
 
r   r9   N)r&   abcr   r   typingr   r   r   r   r	   r
   'ray.data._internal.execution.interfacesr   -ray.data._internal.execution.resource_managerr   5ray.data._internal.execution.streaming_executor_stater   r   r(   r+   r?   r9   r   r   r   <module>rE      sM   D D # # # # # # # # I I I I I I I I I I I I I I I I D D D D D D I I I I I I ONNNNNN       ( w~Z888!R !R !R !R !RS',' !R !R !RH
 
 
 
 
F5c?+ 
 
 
 
 
r   