
    Rf                    8    d dl mZ d dlZ G d d          ZeZdS )    )annotationsNc                  R    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd ZdS )StatNc                f   	 |r|                     |          | _        n|                                 | _        n# t          $ r
 || _        Y nw xY wt          | j        t                    sd}t          |          t	          t          t          | j                  dz                      | _        d S )Nz$first argument must be image or list   )		histogramhAttributeError
isinstancelist	TypeErrorrangelenbands)selfimage_or_listmaskmsgs       ?/var/www/html/env/lib/python3.11/site-packages/PIL/ImageStat.py__init__zStat.__init__   s    	# 3&0066&0022 	# 	# 	#"DFFF	#$&$'' 	!8CC.. %DFs 23344


s   69 AAc                    |dd         dk    rt          |           t          | d|z                         }t          | ||           |S )zCalculate missing attributeN   _get)r
   getattrsetattr)r   idvs      r   __getattr__zStat.__getattr__*   sU    bqb6V $$$&GD&2+&&((b!    c                l     d  fdt          dt           j                  d          D             S )z-Get min/max values for each band in the imagec                    d\  }}t          d          D ]}| |         r|} nt          ddd          D ]}| |         r|} n||fS )N)   r   r   r"   )r   )r   res_minres_maxis       r   minmaxz Stat._getextrema.<locals>.minmax6   s    %GW3ZZ  Q< GE 3B''  Q< GE G##r   c                @    g | ]} j         |d                    S N)r	   ).0r&   r'   r   s     r   
<listcomp>z$Stat._getextrema.<locals>.<listcomp>B   s-    GGGqtvabbz""GGGr   r   r   r   r   r	   )r   r'   s   `@r   _getextremazStat._getextrema3   sG    
	$ 
	$ 
	$ HGGGGE!S[[#,F,FGGGGr   c                b      fdt          dt           j                  d          D             S )z(Get total number of pixels in each layerc                N    g | ]!}t          j        ||d z                      "S )r   )sumr	   r*   r&   r   s     r   r+   z"Stat._getcount.<locals>.<listcomp>F   s0    MMMQDF1q3w;'((MMMr   r   r   r,   r   s   `r   	_getcountzStat._getcountD   s1    MMMM%3tv;;2L2LMMMMr   c                    g }t          dt          | j                  d          D ]A}d}t          d          D ]}||| j        ||z            z  z  }|                    |           B|S )z#Get sum of all pixels in each layerr   r           )r   r   r	   append)r   r   r&   	layer_sumjs        r   _getsumzStat._getsumH   s{     q#df++s++ 	  	 AI3ZZ / /QA..		HHYr   c           	         g }t          dt          | j                  d          D ]Q}d}t          d          D ](}||dz  t          | j        ||z                      z  z  })|                    |           R|S )z+Get squared sum of all pixels in each layerr   r   r5      )r   r   r	   floatr6   )r   r   r&   sum2r8   s        r   _getsum2zStat._getsum2S   s     q#df++s++ 	 	AD3ZZ 6 6Atva!e}!5!555HHTNNNNr   c                *      fd j         D             S )z&Get average pixel level for each layerc                F    g | ]}j         |         j        |         z  S  )r0   countr1   s     r   r+   z!Stat._getmean.<locals>.<listcomp>`   s*    @@@djm+@@@r   r   r2   s   `r   _getmeanzStat._getmean^   s    @@@@TZ@@@@r   c                    g }| j         D ][}d}| j        |         dz  }|dz  }t          d          D ]}|| j        ||z            z   }||k    r n|                    |           \|S )z%Get median pixel level for each layerr   r;   r   )r   rB   r   r	   r6   )r   r   r&   shalfbr8   s          r   
_getmedianzStat._getmedianb   s      	 	AA:a=A%DCA3ZZ  q1u%t88E HHQKKKKr   c                *      fd j         D             S )zGet RMS for each layerc                j    g | ]/}t          j        j        |         j        |         z            0S rA   )mathsqrtr=   rB   r1   s     r   r+   z Stat._getrms.<locals>.<listcomp>s   s4    LLLA	$)A,A677LLLr   rC   r2   s   `r   _getrmszStat._getrmsq   s    LLLLLLLLr   c                *      fd j         D             S )zGet variance for each layerc                    g | ]<}j         |         j        |         d z  j        |         z  z
  j        |         z  =S )g       @)r=   r0   rB   r1   s     r   r+   z Stat._getvar.<locals>.<listcomp>w   sU     
 
 
 Yq\TXa[C/4:a=@@DJqMQ
 
 
r   rC   r2   s   `r   _getvarzStat._getvaru   s0    
 
 
 
Z
 
 
 	
r   c                *      fd j         D             S )z%Get standard deviation for each layerc                N    g | ]!}t          j        j        |                   "S rA   )rL   rM   varr1   s     r   r+   z#Stat._getstddev.<locals>.<listcomp>~   s)    ;;;1	$(1+&&;;;r   rC   r2   s   `r   
_getstddevzStat._getstddev|   s    ;;;;
;;;;r   r)   )__name__
__module____qualname__r   r   r-   r3   r9   r>   rD   rI   rN   rQ   rU   rA   r   r   r   r      s        5 5 5 5  H H H"N N N	 	 		 	 	A A A  M M M
 
 
< < < < <r   r   )
__future__r   rL   r   GlobalrA   r   r   <module>r[      s^   . # " " " " " b< b< b< b< b< b< b< b<J 
r   