
    j                         d dl mZ d dlmZ ddlmZmZmZmZmZ ddl	m
Z
 dee         dee         fd	Zdee         dee         fd
Zdee         dee         fdZdee         dee         fdZdS )    )defaultdict)datetime   )
DailyStatsMonthlyStatsSessionStats
UsageEntryWeeklyStats   )calculate_costentriesreturnc                 B   i }t          t                    }| D ].}|j                            d          }||vrt	          |          ||<   ||         }t          |          }|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_        |xj        |j        z  c_        |j                            |j        d          |j
        z   |j        |j        <   ||                             |j                   0|                                D ]\  }}t'          |          ||         _         t+          |                                d           S )Nz%Y-%m-%ddater   c                     | j         S Nr   ss    kC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\src/analyzer/aggregator.py<lambda>z!aggregate_daily.<locals>.<lambda>       !&     key)r   set	timestampstrftimer   r   input_tokensoutput_tokenscache_creation_tokenscache_read_tokenstotal_tokenscost_usdmessage_countmodelsgetmodeladd
session_iditemslensession_countsortedvalues)r   by_datesessions_by_dateedate_strr   costsessionss           r   aggregate_dailyr6      s   %'G,7,<,< 5 5;''
337" 	: * 9 9 9GHHa  	!.(	1?*	1#::	q22	!.(	

d

	1?*HLL!44q~E"&&q|4444.4466 8 8(*-h--'''..""(8(89999r   c                 B   i }t          t                    }| D ].}|j                            d          }||vrt	          |          ||<   ||         }t          |          }|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_        |xj        |j        z  c_        |j                            |j        d          |j
        z   |j        |j        <   ||                             |j                   0|                                D ]\  }}t'          |          ||         _         t+          |                                d           S )Nz%Y-%mmonthr   c                     | j         S r   r8   r   s    r   r   z#aggregate_monthly.<locals>.<lambda>9   s    17 r   r   )r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   )r   by_monthsessions_by_monthr2   	month_strr   r4   r5   s           r   aggregate_monthlyr>   "   s   (*H-8-=-= 7 7K((11	H$ 	@".Y"?"?"?HYYa  	!.(	1?*	1#::	q22	!.(	

d

	1?*HLL!44q~E)$((666606688 : :	8,/MM))(//##):):;;;;r   c                 *   ddl m} i }t          t                    }| D ]}|j                                         ||j                                                  z
  }| |d          z   }|                                }||vr;t          ||	                    d          |	                    d                    ||<   ||         }t          |          }	|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_        |xj        |j        z  c_        |j                            |j        d          |j        z   |j        |j        <   ||                             |j                   |                                D ]\  }}
t1          |
          ||         _         t5          |                                d           S )	Nr   )	timedelta)days   z%m-%d)week
week_startweek_endc                     | j         S r   )rC   r   s    r   r   z"aggregate_weekly.<locals>.<lambda>[   r   r   r   )r   r@   r   r   r   r   weekday	isoformatr
   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   )r   r@   by_weeksessions_by_weekr2   mondaysundayweek_keyr   r4   r5   s              r   aggregate_weeklyrN   <   s   """"""&(G,7,<,< 5 5!!##iiQ[5H5H5J5J&K&K&KK))++++##%%7" 	 +!??73311! ! !GH
 Ha  	!.(	1?*	1#::	q22	!.(	

d

	1?*HLL!44q~E"&&q|4444.4466 8 8(*-h--'''..""(8(89999r   c                    t          t                    }| D ]"}||j                                     |           #g }|                                D ]\  }}|                    d            |d         }|d         }|j        |j        z
                                  dz  }t          t                    }	|D ]}|	|j	        xx         |j
        z  cc<   |	rt          |	|	j                  nd}
t          ||j        |
|j        |j        t          |d                    }|D ]}t!          |          }|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_        |xj        |j        z  c_        |                    |           |                    d	 d
           |S )Nc                     | j         S r   )r   )r2   s    r   r   z$aggregate_sessions.<locals>.<lambda>f   s    1; r   r   r   <   unknownr   )r*   projectr(   
start_timeend_timeduration_minutesc                     | j         S r   )rU   r   s    r   r   z$aggregate_sessions.<locals>.<lambda>   s     r   T)r   reverse)r   listr*   appendr+   sortr   total_secondsintr(   r#   maxr'   r   rT   roundr   r   r    r!   r"   r$   r%   )r   
by_sessionr2   r5   r*   session_entriesfirstlastdurationr&   primary_modelr   r4   s                r   aggregate_sessionsrg   ^   s   .9$.?.?J + +1< ''****#%H'1'7'7'9'9  #
O!6!6777"r"NU_4CCEEJ!,S!1!1  	. 	.A17OOOq~-OOOO7=LF
33339!M^"8Q//
 
 
 ! 	/ 	/A!!$$DNNan,NNOOq.OO##q'>>##1#66NNan,NNJJ$JJOOq.OOOMM,,dM;;;Or   N)collectionsr   r   adapters.typesr   r   r   r	   r
   r4   r   rZ   r6   r>   rN   rg    r   r   <module>rk      s    # # # # # #       \ \ \ \ \ \ \ \ \ \ \ \ \ \            :T*- :$z2B : : : :4<tJ/ <D4F < < < <4:d:. :43D : : : :D'Z 0 'T,5G ' ' ' ' ' 'r   