o
    QDi                     @  s   d dl mZ d dlZd dlmZmZmZmZ d dlZddl	m
Z
 ddlmZ er:ddlmZ ddlmZ dd	lmZ dZejd
ddG dd deZdS )    )annotationsN)TYPE_CHECKINGDictIterableList   )errors)Check)Error)Resource)RowTF)kw_onlyreprc                      s~   e Zd ZU dZdZejgZeZ	de
d< 	 ejedZde
d< 	 d fd
dZdddZdddZdddiddidiZ  ZS )deviated_cellz"Check if the cell size is deviatedzdeviated-cellintinterval)factoryz	List[str]ignore_fieldsresourcer   c                   s   t  | i | _i | _d S )N)superconnect_deviated_cell__cell_sizes_deviated_cell__fields)selfr   	__class__ _/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/checks/cell/deviated_cell.pyr   *   s   
zdeviated_cell.connectrowr   returnIterable[Error]c                 c  s    t |jD ]8\}}||j }| jr|j| jv rq|r>|jdkr>|| jvr*i | j|< |r0t|nd| j| |j< |j| j|< qg E d H  d S )Nstringr   )		enumeratefieldsnamer   typer   len
row_numberr   )r   r   	field_idxfieldcellr   r   r   validate_row1   s   


zdeviated_cell.validate_rowc                 c  s    | j  D ]h\}}d}t|dk rqz>t| }t| }||| j  }||kr/|n|}| D ]\}}||krOd}	|	|| j| f }	t	j
|	dV  q5W q tyn }
 zd|
 }	t	j
|	dV  W Y d }
~
qd }
~
ww d S )Ni     z1cell at row "%s" and field "%s" has deviated size)notezcalculation issue "%s")r   itemsr&   
statisticsstdevvaluesmedianr   r   r   DeviatedCellError	Exception)r   r(   col_cell_sizes	thresholdr0   averagemaximumr'   r*   r-   	exceptionr   r   r   validate_end=   s.   zdeviated_cell.validate_end
propertiesr%   numberarray)r   ignoreFields)r   r   )r   r   r   r    )r   r    )__name__
__module____qualname____doc__r%   r   r3   ErrorsDEFAULT_INTERVALr   __annotations__attrsr)   listr   r   r+   r:   metadata_profile_patch__classcell__r   r   r   r   r      s    
 

r   )
__future__r   r/   typingr   r   r   r   rF    r   	checklistr	   errorr
   r   r   tabler   rD   definer   r   r   r   r   <module>   s    