
    0FieV                        d dl mZ d dlmZ d dlmZmZmZ 	 d dlm	Z	  G d d          Z
n# e$ r Y nw xY w G d d          Zd	S )
    )annotations)defaultdict)HashableIterableSequenceTDigestc                  R    e Zd ZU ded<   ded<   dZdddZddZddZddZddZ	dS )DigestSequence[float]	intervalszlist[TDigest]
componentsr   r      <   i  c                6    || _         d |D             | _        d S )Nc                *    g | ]}t                      S  r   .0_s     3lib/python3.11/site-packages/distributed/counter.py
<listcomp>z#Digest.__init__.<locals>.<listcomp>   s    <<<Qwyy<<<    r   selfr   s     r   __init__zDigest.__init__   s"    &DN<<)<<<DOOOr   itemfloatreturnNonec                F    | j         d                             |           d S Nr   )r   addr   r   s     r   r%   z
Digest.add   s#    OA""4(((((r   seqIterable[float]c                F    | j         d                             |           d S r$   )r   update)r   r'   s     r   r*   zDigest.update   s#    OA%%c*****r   c                p   t          t          | j                  dz
            D ]}d| j        d         z  | j        |         z  }| j        |                             |          }| j        |                             d|z
            }| j        |dz                                |           || j        |<   d S )N   皙?r   )rangelenr   r   scalemerge)r   ifracpartrests        r   shiftzDigest.shift   s    3t~..233 * *T^A..1BBq)//55q)//D99A&,,T222%)""* *r   c                >    t          d | j        D                       S )Nc              3  >   K   | ]}|                                 V  d S N)sizer   ds     r   	<genexpr>zDigest.size.<locals>.<genexpr>%   s*      99Aqvvxx999999r   sumr   r   s    r   r:   zDigest.size$   s!    99999999r   Nr   r   r   )r   r    r!   r"   )r'   r(   r!   r"   r!   r"   r!   r    )
__name__
__module____qualname____annotations__	__slots__r   r%   r*   r6   r:   r   r   r   r   r      s         """"!!!!/		= 	= 	= 	= 	=	) 	) 	) 	)	+ 	+ 	+ 	+	* 	* 	* 	*	: 	: 	: 	: 	: 	:r   r   c                  J    e Zd ZU ded<   ded<   dZdddZddZddZddZdS )Counterr   r   z"list[defaultdict[Hashable, float]]r   r   r   c                6    || _         d |D             | _        d S )Nc                6    g | ]}t          t                    S r   )r   intr   s     r   r   z$Counter.__init__.<locals>.<listcomp>/   s     ???;s++???r   r   r   s     r   r   zCounter.__init__-   s"    "??Y???r   r   r   r!   r"   c                <    | j         d         |xx         dz  cc<   d S )Nr   r,   )r   r&   s     r   r%   zCounter.add1   s+    4   A%     r   c                   t          t          | j                  dz
            D ]}d| j        d         z  | j        |         z  fd| j        |                                         D             }fd| j        |                                         D             }|                                D ]#\  }}| j        |dz            |xx         |z  cc<   $t          t                    }|                    |           || j        |<   d S )Nr,   r-   r   c                "    i | ]\  }}||z  S r   r   r   kvr3   s      r   
<dictcomp>z!Counter.shift.<locals>.<dictcomp>7   s#    GGGDAqAq4xGGGr   c                (    i | ]\  }}||d z
  z  S )r,   r   rR   s      r   rU   z!Counter.shift.<locals>.<dictcomp>8   s'    MMM$!QAqAH~MMMr   )r.   r/   r   r   itemsr   rN   r*   )r   r2   r4   r5   rS   rT   r<   r3   s          @r   r6   zCounter.shift4   s   s4>**Q.// 		# 		#A**T^A->>DGGGGDOA,>,D,D,F,FGGGDMMMM$/!2D2J2J2L2LMMMD

 / /1A&q)))Q.)))).9#.>.>AHHTNNN!"DOA		# 		#r   r    c                >    t          d | j        D                       S )Nc              3  X   K   | ]%}t          |                                          V  &d S r9   )r?   valuesr;   s     r   r=   zCounter.size.<locals>.<genexpr>A   s0      <<q3qxxzz??<<<<<<r   r>   r@   s    r   r:   zCounter.size@   s!    <<DO<<<<<<r   NrA   rB   )r   r   r!   r"   rC   rD   )	rE   rF   rG   rH   rI   r   r%   r6   r:   r   r   r   rK   rK   (   s         2222+I@ @ @ @ @& & & &
# 
# 
# 
#= = = = = =r   rK   N)
__future__r   collectionsr   collections.abcr   r   r   crickr	   r   ImportErrorrK   r   r   r   <module>r`      s    " " " " " " # # # # # # 8 8 8 8 8 8 8 8 8 8:
: : : : : : : : :	  	 	 	D	@= = = = = = = = = =s   , 44