
    j=
                         d dl m Z mZmZ ddlmZmZmZmZ ddlm	Z	  ed          Z
dee         d	ee         fd
Zdee         d	efdZdS )    )datetime	timedeltatimezone   )
DailyStats	P90LimitsSessionBlock
UsageEntry   )calculate_cost   )hoursentriesreturnc                    | sg S t          | d           }g }d }|D ]U}||j        |j        k    r|rd|j        |j        k    rT|j        |j        z
  }|t          d          k    r1t	          |j        |j        d          }|                    |           t	          |j        |j        t          z             }|                    |           t          |          }|j                            |           |xj	        |j	        z  c_	        |xj
        |j
        z  c_
        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |z  c_        Wt          j        t"          j                  }|D ]W}	|	j        r
|	j        |k    rB|	j        r;d|	_        ||	j        z
                                  dz  }
|
d	k    r|	j        |
z  |	_        X|S )
Nc                     | j         S N)	timestamp)es    gC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\src/analyzer/blocks.py<lambda>z analyze_blocks.<locals>.<lambda>   s    1;     )keyr   )minutesT)
start_timeend_timeis_gap)r   r   <   r   )sortedr   r   r   r	   appendBLOCK_DURATIONr   r   input_tokensoutput_tokenscache_creation_tokenscache_read_tokenstotal_tokenscost_usdr   nowr   utcr   	is_activer   total_seconds	burn_rate)r   sorted_entriesblockscurrent_blockentrygap_durationgapcostr(   blockelapseds              r   analyze_blocksr6   	   s=    	G)>)>???N!#F)-M ' ' 	)EO}7M$M 	) 'M4J!J '$1GG)A"6"6"66 '&#0#9!&#  C
 MM#&&&( ?>9  M MM-(((e$$$$U+++""e&88""##u'::##++u/JJ++''5+BB''""e&88""$&
,x|
$
$C ? ?< 	>C 	?EM 	?"EOU--<<>>CG{ ?"'"4w">Mr   daily_statsc           	         t          |           dk     rt                      S t          d | D                       }t          d | D                       }t          d | D                       }dt          dt          fd}t          t           ||                    t           ||          d          t           ||                    	          S )
N   c              3   $   K   | ]}|j         V  d S r   )r&   .0ds     r   	<genexpr>z calculate_p90.<locals>.<genexpr>=   s$      >>Q!.>>>>>>r   c              3   $   K   | ]}|j         V  d S r   )r'   r;   s     r   r>   z calculate_p90.<locals>.<genexpr>>   s$      99999999r   c              3   $   K   | ]}|j         V  d S r   )message_countr;   s     r   r>   z calculate_p90.<locals>.<genexpr>?   s$      ==A======r   valuesr   c                     t          t          |           dz            }| t          |t          |           dz
                     S )Ng?r   )intlenmin)rB   idxs     r   p90zcalculate_p90.<locals>.p90A   s9    #f++#$$c#s6{{Q//00r   r   )token_limit
cost_limitmessage_limit)rE   r   r   listfloatrD   round)r7   token_valuescost_values
msg_valuesrH   s        r   calculate_p90rR   9   s    
;! {{>>+>>>>>L99[99999K=======J1D 1U 1 1 1 1 L))**[))1--##j//**   r   N)r   r   r   adapters.typesr   r   r	   r
   r3   r   r!   rL   r6   rR    r   r   <module>rU      s    2 2 2 2 2 2 2 2 2 2 L L L L L L L L L L L L            ###-D, -l1C - - - -`tJ/ I      r   