
    -`iK                        U d dl Z d dlZd dlmZmZ d dlmZ d dlmZ dZ		 e G d de                      Z
e G d d	e
                      Ze G d
 de
                      Ze G d de
                      Ze G d de
                      ZeeeedZeeee
         f         ed<    G d ded                   Z G d deee
f                   ZdS )    N)ABCabstractmethod)	dataclass)overrideg:0yE>c                   ~    e Zd ZU eed<   ededefd            Zededefd            Zde	eef         dedefd	Z
d
S )SLACriterionBasetargetactualreturnc                     t           )z
        Return a negative value or `0` if this criterion is met;
        otherwise a positive value indicating the distance to the target.
        NotImplementedErrorselfr
   s     s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/benchmarks/sweep/sla_sweep.pycompute_marginzSLACriterionBase.compute_margin   s
     "!    lhsc                     t           Nr   r   r   s     r   format_condzSLACriterionBase.format_cond   s    !!r   metricsmetrics_keyc                     ||         }|                      |          }|                     | d|d          }t          d| d|dk    rdndz              |S )Nz = .2fzValidating SLA: z | r   PASSEDFAILED)r   r   print)r   r   r   metricmarginconds         r   print_and_compute_marginz)SLACriterionBase.print_and_compute_margin   su    
 %$$V,,; ? ?6 ? ? ?@@****&A++hh8TUUUr   N)__name__
__module____qualname__float__annotations__r   r   strr   dictr#    r   r   r   r      s         MMM"U "u " " " ^" "s "s " " " ^"c5j!  
	     r   r   c                   N    e Zd Zededefd            Zededefd            ZdS )SLALessThanr
   r   c                 &    |t           z   | j        z
  S r   )SLA_EPSr	   r   s     r   r   zSLALessThan.compute_margin.   s    $+--r   r   c                     | d| j         dS )N<r   r	   r   s     r   r   zSLALessThan.format_cond2       ))))))r   Nr$   r%   r&   r   r'   r   r)   r   r+   r   r   r-   r-   ,   n        .U .u . . . X. *s *s * * * X* * *r   r-   c                   N    e Zd Zededefd            Zededefd            ZdS )SLALessThanOrEqualTor
   r   c                     || j         z
  S r   r2   r   s     r   r   z#SLALessThanOrEqualTo.compute_margin9   s    ##r   r   c                     | d| j         dS )N<=r   r2   r   s     r   r   z SLALessThanOrEqualTo.format_cond=       ******r   Nr4   r+   r   r   r7   r7   7   n        $U $u $ $ $ X$ +s +s + + + X+ + +r   r7   c                   N    e Zd Zededefd            Zededefd            ZdS )SLAGreaterThanr
   r   c                 &    | j         t          z   |z
  S r   )r	   r/   r   s     r   r   zSLAGreaterThan.compute_marginD   s    {W$v--r   r   c                     | d| j         dS )N>r   r2   r   s     r   r   zSLAGreaterThan.format_condH   r3   r   Nr4   r+   r   r   r>   r>   B   r5   r   r>   c                   N    e Zd Zededefd            Zededefd            ZdS )SLAGreaterThanOrEqualTor
   r   c                     | j         |z
  S r   r2   r   s     r   r   z&SLAGreaterThanOrEqualTo.compute_marginO   s    {V##r   r   c                     | d| j         dS )N>=r   r2   r   s     r   r   z#SLAGreaterThanOrEqualTo.format_condS   r;   r   Nr4   r+   r   r   rC   rC   M   r<   r   rC   )r:   rF   r1   rA   SLA_CRITERIAc                   l    e Zd Zedej        fd            Zedeee	e	f                  fd            Z
dS )SLASweepfilepathc                     t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   |                     |          S )Nrb)openjsonloadfrom_records)clsrJ   frecordss       r   	read_jsonzSLASweep.read_jsonb   s    (D!! 	#QillG	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# (((s   266rS   c                     t          |t                    st          dt          |                      | d |D                       S )Nz@The SLA sweep should be a list of dictionaries, but found type: c              3   J   K   | ]}t                               |          V  d S r   )SLASweepItemfrom_record).0records     r   	<genexpr>z(SLASweep.from_records.<locals>.<genexpr>q   s0      JJ<++F33JJJJJJr   )
isinstancelist	TypeErrortype)rQ   rS   s     r   rP   zSLASweep.from_recordsi   s_    '4(( 	3#'==3 3  
 sJJ'JJJJJJr   N)r$   r%   r&   classmethodosPathLikerT   r]   r*   r)   rP   r+   r   r   rI   rI   a   sv        ) ) ) ) [) K4S#X#7 K K K [K K Kr   rI   rW   c                   L    e Zd Zedeeef         fd            ZddedefdZdS )	rW   rZ   c                 V   i }|                                 D ]\  }}t          D ]Q}|                    |          r:t          |         t          |                    |                              ||<    n+Rt          d| d| dt          t                                | |          S )Nz%Invalid operator for SLA constraint '=z'. Valid operators are: )itemsrG   
startswithr'   removeprefix
ValueErrorsorted)rQ   rZ   sla_criteria
metric_keymetric_valueop_keys         r   rX   zSLASweepItem.from_recordu   s    46(. 	 	$J&  **622 /;F/Cl77??@@0 0L, E	 !C'1C C4@C C,2<,@,@C C    s<   r   , sepr   c                 d    |                     d |                                 D                       S )Nc              3   F   K   | ]\  }}|                     |          V  d S r   )r   )rY   kvs      r   r[   z'SLASweepItem.as_text.<locals>.<genexpr>   s2      BBTQa((BBBBBBr   )joinrf   )r   rp   s     r   as_textzSLASweepItem.as_text   s+    xxBBTZZ\\BBBBBBr   N)ro   )r$   r%   r&   r`   r*   r)   rX   rv   r+   r   r   rW   rW   t   sq        !c3h ! ! ! [!&C C3 C# C C C C C Cr   )rN   ra   abcr   r   dataclassesr   typing_extensionsr   r/   r   r-   r7   r>   rC   rG   r*   r)   r_   r(   r]   rI   rW   r+   r   r   <module>rz      s,    				 # # # # # # # # ! ! ! ! ! ! & & & & & &
 ?     s   : * * * * *" * * * + + + + ++ + + + * * * * *% * * * + + + + +. + + + 
!			3 3d3-../   K K K K KtN# K K K&C C C C C4--. C C C C Cr   