o
    >e                     @  s*   d dl mZ d dlZG dd dZeZdS )    )annotationsNc                   @  sf   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )StatNc                 C  sn   z|r
| || _n|  | _W n ty   || _Y nw t| jts)d}t|ttt| jd | _d S )Nz$first argument must be image or list   )		histogramhAttributeError
isinstancelist	TypeErrorrangelenbands)selfimage_or_listmaskmsg r   N/var/www/html/humari/django-venv/lib/python3.10/site-packages/PIL/ImageStat.py__init__   s   

zStat.__init__c                 C  s8   |dd dkrt |t| d|  }t| || |S )zCalculate missing attributeN   _get)r   getattrsetattr)r   idvr   r   r   __getattr__*   s
   zStat.__getattr__c                   s*   dd   fddt dtjdD S )z-Get min/max values for each band in the imagec                 S  sV   d\}}t dD ]
}| | r|} nqt dddD ]}| | r&|} ||fS q||fS )N)   r   r   r   )r   )r   res_minres_maxir   r   r   minmax6   s   z Stat._getextrema.<locals>.minmaxc                   s   g | ]} j |d  qS N)r   .0r    r!   r   r   r   
<listcomp>B   s    z$Stat._getextrema.<locals>.<listcomp>r   r   r   r   r   r   r   r%   r   _getextrema3   s   "zStat._getextremac                   s     fddt dt jdD S )z(Get total number of pixels in each layerc                   s"   g | ]}t  j||d   qS )r   )sumr   r#   r(   r   r   r&   F   s   " z"Stat._getcount.<locals>.<listcomp>r   r   r'   r(   r   r(   r   	_getcountD   s    zStat._getcountc                 C  sR   g }t dt| jdD ]}d}t dD ]}||| j||   7 }q|| q|S )z#Get sum of all pixels in each layerr   r           )r   r   r   append)r   r   r    	layer_sumjr   r   r   _getsumH   s   zStat._getsumc                 C  sZ   g }t dt| jdD ]}d}t dD ]}||d t| j||   7 }q|| q|S )z+Get squared sum of all pixels in each layerr   r   r,      )r   r   r   floatr-   )r   r   r    sum2r/   r   r   r   _getsum2S   s    zStat._getsum2c                       fdd j D S )z&Get average pixel level for each layerc                   s    g | ]} j |  j|  qS r   )r*   countr#   r(   r   r   r&   `   s     z!Stat._getmean.<locals>.<listcomp>r   r(   r   r(   r   _getmean^      zStat._getmeanc                 C  sd   g }| j D ]*}d}| j| d }|d }tdD ]}|| j||   }||kr) nq|| q|S )z%Get median pixel level for each layerr   r1   r   )r   r6   r   r   r-   )r   r   r    shalfbr/   r   r   r   
_getmedianb   s   
zStat._getmedianc                   r5   )zGet RMS for each layerc                   s&   g | ]}t  j|  j|  qS r   )mathsqrtr3   r6   r#   r(   r   r   r&   s   s   & z Stat._getrms.<locals>.<listcomp>r7   r(   r   r(   r   _getrmsq   r9   zStat._getrmsc                   r5   )zGet variance for each layerc                   s8   g | ]} j |  j| d   j|    j|  qS )g       @)r3   r*   r6   r#   r(   r   r   r&   w   s    *z Stat._getvar.<locals>.<listcomp>r7   r(   r   r(   r   _getvaru   s   
zStat._getvarc                   r5   )z%Get standard deviation for each layerc                   s   g | ]
}t  j| qS r   )r>   r?   varr#   r(   r   r   r&   ~   s    z#Stat._getstddev.<locals>.<listcomp>r7   r(   r   r(   r   
_getstddev|   r9   zStat._getstddevr"   )__name__
__module____qualname__r   r   r)   r+   r0   r4   r8   r=   r@   rA   rC   r   r   r   r   r      s    
	r   )
__future__r   r>   r   Globalr   r   r   r   <module>   s   e