
    <i)                     T   U 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mZ  G d d          Z G d d          Zd eeed	 ed
 d ej        ej        ej        ej        d dZeeeee         gef         f         ed<   deeeef                  dedededef
dZ G d d          ZdS )    )ListDictTupleUnionOptionalCallable)_msgs)DatabaseSimpleErrorc                       e Zd Z	 	 	 	 	 	 	 	 d-dededed	ed
ededededeeeef                  dee         f fdZd.dede	dee         de
edf         fdZdede	de
edf         fdZdeee
ee	f                           fdZdededefdZdeded         fdZd/dZd/dZdeded ee	         d!ee	         d"ee         d#eee                  d$edeeee	f                  fd%Zdeded&ed ee	         d!ee	         d"ee         d#eee                  d'ee         d(ed)ed*ee         d+ee         d$edeeee	f                  fd,Z xZS )0
TimeSeriesr   
   compressed      blockNnamedatabase	retentionencoding
chunk_sizeduplicate_policyignore_max_time_diffignore_max_val_difflabels
source_keyc                    t                                                       || _        || _        || _        || _        || _        || _        i | _        g | _	        d| _
        |	pi | _        |
| _        || _        || _        g | _        d S Nr   )super__init__r   _dbr   r   r   r   
ts_ind_mapsorted_listmax_timestampr   r   r   r   rules)selfr   r   r   r   r   r   r   r   r   r   	__class__s              /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/fakeredis/model/_timeseries_model.pyr   zTimeSeries.__init__   s     		" $ 0*,46"#*0,B$$8!#6 +-


    	timestampvaluereturnc                      j         dk    r, j        |z
   j         k    rt          t          j                  | j        }| j        v r|dk    rt          t          j                  |dk    r|S  j        |         } j        |         d         }|dk    rt          ||          }n|dk    rt          ||          }||f j        |<   |S  j                            ||f           t           j                  dz
   j        |<    fd j        D              _         j        D ]}|                    ||f           t           j        |           _        |S )Nr   r      first      max   minc                 :    g | ]}|j         j        j        v |S  )dest_keyr   r   ).0ruler$   s     r&   
<listcomp>z"TimeSeries.add.<locals>.<listcomp>9   s*    TTTtT]5G485S5Sd5S5S5Sr'   )r   r"   r   msgs)TIMESERIES_TIMESTAMP_OLDER_THAN_RETENTIONr   r    !TIMESERIES_DUPLICATE_POLICY_BLOCKr!   maxminappendlenr#   
add_record)r$   r(   r)   r   ind
curr_valuer4   s   `      r&   addzTimeSeries.add%   s   >Q4#5	#ADN#R#RdLMMM##4''8++!$"HIII8++  /),C)#.q1J6))J..!V++J..%.$6DS!E 2333%()9%:%:Q%>	"TTTTtzTTT
J 	0 	0DOOY.//// !3Y??r'   c                    t          | j                  dk    r|                     ||          S || j        k    r.| j        |         }|| j        |         d         |z   f| j        |<   nV|| j        k    r=| j        | j                 }|                     || j        |         d         |z              nt                      |S Nr   r-   )r<   r!   r@   r"   r    
ValueError)r$   r(   r)   r>   s       r&   incrbyzTimeSeries.incrby?   s    t  A%%88Iu---***/),C%.0@0Ea0H50P$QDS!!+++/$"45CHHY 0 5a 85 @AAAA,,r'   c                     t          | j                  dk    rd S | j        | j                 }| j        |         d         | j        |         d         gS rB   )r<   r!   r    r"   )r$   r>   s     r&   getzTimeSeries.getM   sQ    t  A%%4od01 %a($*:3*?*BCCr'   from_tsto_tsc                     t          | j                  }fd| j        D             | _        fd| j                                        D             | _        |t          | j                  z
  S )Nc                 >    g | ]}|d          cxk    rk    n |S r   r1   )r3   xrG   rH   s     r&   r5   z%TimeSeries.delete.<locals>.<listcomp>U   s<    ZZZ!1Q4@X@X@X@XSX@X@X@X@XA@X@X@Xr'   c                 :    i | ]\  }}|cxk    rk    n ||S r1   r1   )r3   kvrG   rH   s      r&   
<dictcomp>z%TimeSeries.delete.<locals>.<dictcomp>V   s?    cccDAqGWXLaLaLaLa\aLaLaLaLa1aLaLaLar'   )r<   r!   r    items)r$   rG   rH   	prev_sizes    `` r&   deletezTimeSeries.deleteS   sx    ())	ZZZZZt'7ZZZcccccDO,A,A,C,Cccc3t/0000r'   r2   TimeSeriesRulec                 B    | j         D ]}|j        j        |k    r|c S d S N)r#   r2   r   )r$   r2   r4   s      r&   get_rulezTimeSeries.get_ruleY   s6    J 	 	D}!X-- .tr'   r4   c                 :    | j                             |           d S rV   )r#   r;   r$   r4   s     r&   add_rulezTimeSeries.add_rule_   s    
$r'   c                 R    | j                             |           d |j        _        d S rV   )r#   remover2   r   rY   s     r&   delete_rulezTimeSeries.delete_ruleb   s(    
$#'   r'   	value_min	value_maxcount	filter_tsreversec                     pt          d          pt          d          fd| j        D             }|r|                                 |
|d |         S |S )N-infinfc                     g | ]<}|d          cxk    rk    r'n n$|d         cxk    rk    rn n
|d          v :|=S )r   r-   r1   )r3   rL   ra   rG   rH   r_   r^   s     r&   r5   z$TimeSeries.range.<locals>.<listcomp>r   s     (
 (
 (
1Q4((((5(((((QqT....Y....."adi&7&7	  '8&7&7r'   )floatr!   rb   )	r$   rG   rH   r^   r_   r`   ra   rb   ress	    ```` `  r&   rangezTimeSeries.rangef   s     .v	-u	(
 (
 (
 (
 (
 (
 (
 (
%(
 (
 (
  	KKMMMvv;
r'   latestalign
aggregatorbucket_durationbucket_timestampemptyc                 ^   |pd}|pt          d          }|pt          d          }t          | t          d| j                  |	|
          }| j        D ]^}||d         cxk    r|k    rIn ||d         cxk    r|k    r3n .|
|d         |v r$|                    |d         |d         f|           _|r-t          |j                  dk    r|                    |           |r|j	        j        d         d         }t          ||j        |
          D ]8}||j	        j        vr(|j	                            |t          d                     9t          |j	        j                  |j	        _        |r|j	        j                                         |r|j	        j        d |         S |j	        j        S )Nr   rd   re   r'   r-   nan)rg   rT   r   r   r!   r=   r<   current_bucketapply_curr_bucketr2   ri   current_bucket_start_tsr    r@   sortedrb   )r$   rG   rH   rj   r^   r_   r`   ra   rk   rl   rm   rn   ro   rb   r4   rL   min_bucket_tstss                     r&   	aggregatezTimeSeries.aggregate   s     
.v	-u	dJsDH$=$=z?[[! 	@ 	@A!A$''''%'''''I1,J,J,J,J,J,J,J,J,JPYPaefgheimvevev1qt.>??? 	5c$-..22""#3444 	J M5a8;MM4+GYY 8 8T]555M%%b%,,777(.t}/H(I(IDM% 	0M%--/// 	5=,VeV44}((r'   )r   r   r   r   r   r   NNrV   )r4   rT   r*   N)__name__
__module____qualname__bytesr
   intr   r   r   rg   r   r@   rD   r   rF   rS   rW   rZ   r]   boolr   ri   rx   __classcell__)r%   s   @r&   r   r      sF       
 '"*$%#$/3&*. .. . 	.
 . .  . ". !. eUl+,. UO. . . . . .: S  (5/ ]bcfhlcl]m    4 E eCI6F    DXd5e#456 D D D D1c 1# 1# 1 1 1 1 84D+E           ( ( ( (  E?	
 E? } DI&  
eCJ	    2$)$) $) 	$)
 E?$) E?$) }$) DI&$) }$) $) $) #5/$) ~$) $) 
eCJ	 $) $) $) $) $) $) $) $)r'   r   c                       e Zd Zedee         defd            Zedee         defd            Zedee         defd            Zedee         defd            Z	dS )Aggregatorsvaluesr*   c                     t          |           dk    rdS t          |           t          |           z  t          fd| D                       t          |           z  S )Nr   c              3   (   K   | ]}|z
  d z  V  dS    Nr1   r3   rL   avgs     r&   	<genexpr>z$Aggregators.var_p.<locals>.<genexpr>   +      22aAG>222222r'   r<   sumr   r   s    @r&   var_pzAggregators.var_p   s]    v;;!1&kkCKK'2222622222S[[@@r'   c                     t          |           dk    rdS t          |           t          |           z  t          fd| D                       t          |           dz
  z  S )Nr   c              3   (   K   | ]}|z
  d z  V  dS r   r1   r   s     r&   r   z$Aggregators.var_s.<locals>.<genexpr>   r   r'   r-   r   r   s    @r&   var_szAggregators.var_s   sa    v;;!1&kkCKK'2222622222c&kkAoFFr'   c                 V    t          t                              |           dz            S Ng      ?)rg   r   r   r   s    r&   std_pzAggregators.std_p   #    [&&v..#5666r'   c                 V    t          t                              |           dz            S r   )rg   r   r   r   s    r&   std_szAggregators.std_s   r   r'   N)
ry   rz   r{   staticmethodr   rg   r   r   r   r   r1   r'   r&   r   r      s        Ad5k Ae A A A \A Gd5k Ge G G G \G 7d5k 7e 7 7 7 \7 7d5k 7e 7 7 7 \7 7 7r'   r   c                 @    t          |           t          |           z  S rV   )r   r<   rL   s    r&   <lambda>r      s    c!ffs1vvo r'   c                 @    t          |           t          |           z
  S rV   )r9   r:   r   s    r&   r   r      s    AQ r'   c                     | d         S r   r1   r   s    r&   r   r      s
    ! r'   c                     | d         S )Nr1   r   s    r&   r   r      s
    qu r'   c                     dS r   r1   r   s    r&   r   r      s    a r'   )s   avgs   sumr/   r.   s   ranges   countr,   s   lasts   std.ps   std.ss   var.ps   var.s   twaAGGREGATORSbucketbucket_start_tsrm   rl   r*   c                     t          |           dk    rdS |dk    r<d}|}t          |           D ]\  }\  }}|||z
  |z  z  }|}||||z   |z
  z  z  }||z  S d | D             }	t          |         |	          S )Nr   g        r   c                     g | ]
}|d          S )r-   r1   )r3   rL   s     r&   r5   z$apply_aggregator.<locals>.<listcomp>   s    #9#9#9QAaD#9#9#9r'   )r<   	enumerater   )
r   r   rm   rl   totalcurr_tsirw   valrelevant_valuess
             r&   apply_aggregatorr      s     6{{asV!%f-- 	 	LAyCb7lc))EGG/9GCDD&&#9#9&#9#9#9Oz"?333r'   c                   ~    e Zd Z	 ddededededef
dZdd	eeef         d
e	e         de
fdZdd
e	e         ddfdZdS )rT   r   r   r2   rl   rm   align_timestampc                     || _         || _        |                                | _        || _        || _        d| _        g | _        |j        | j        _         d S r   )	r   r2   lowerrl   rm   r   rt   rr   r   )r$   r   r2   rl   rm   r   s         r&   r   zTimeSeriesRule.__init__   sW     % $**,,..,-$79#-?   r'   Nrecordrn   r*   c                    |\  }}||| j         z  z
  | j        z   }| j        |k    r| j                            |           | j        |k    s|| j        | j         z   dz
  k    r_| j        |k    }|                     |           | j        |k    r|n| j        | j         z   | _        |r| j                            |           dS dS )Nr-   TF)rm   r   rt   rr   r;   rs   )r$   r   rn   rw   r   r   
should_adds          r&   r=   zTimeSeriesRule.add_record   s    CT%9 9:T=QQ'?::&&v...(O;;T1D4HH1LLL5HJ""#3444 /?BB  1D4HH (
  3#**62224ur'   c                 h   t          | j                  dk    rd S t          | j        | j        | j        | j                  }g | _        | j        }|dk    rt          | j        | j        z             }n%|dk    rt          | j        | j        dz  z             }| j                            ||           d S )Nr      +   ~r   )	r<   rr   r   rt   rm   rl   r}   r2   r@   )r$   rn   r)   r(   s       r&   rs   z TimeSeriesRule.apply_curr_bucket
  s    t"##q((F !=t?SUYUd
 
 !0	t##D84;OOPPII%%D84;ORS;SSTTI)U+++++r'   rK   rV   )ry   rz   r{   r   r|   r}   r   r   rg   r   r~   r=   rs   r1   r'   r&   rT   rT      s          !3 33 3 	3
 3 3 3 3 3" sEz!2 huo ae    *, ,(5/ ,T , , , , , ,r'   rT   N)typingr   r   r   r   r   r   	fakeredisr	   r6   fakeredis._helpersr
   r   r   r   r   r:   r9   r<   r   r   r   r   r   r|   rg   __annotations__r}   r   rT   r1   r'   r&   <module>r      s   ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # # # # # # 4 4 4 4 4 4 4 4\) \) \) \) \) \) \) \)~7 7 7 7 7 7 7 72 &%''n_K< <T%4;-"6778   "4sEz"#4694LO4]b4
4 4 4 4(3, 3, 3, 3, 3, 3, 3, 3, 3, 3,r'   