o
    QDi                     @  s   d dl mZ d dlmZmZmZmZ d dlZd dlZd dl	m	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddl
mZ ejdddG dd deZdS )    )annotations)AnyDictListOptionalN)tabulate   )settingsError)ReportTaskError)FrictionlessException)Metadata   )typesTF)kw_onlyreprc                   @  sX  e Zd ZU dZded< 	 ded< 	 dZded< 	 dZded< 	 d	ed
< 	 ded< 	 ded< 	 ded< 	 eje	dZ
ded< 	 eje	dZded< 	 edd Zed-ddZg dfd.ddZd/ddZdZeZd g d!d"ejd#d"ejd#dd"idd"idd$idd"id%dd"id&dd id%dd"id&d%dd id&d'
d(Zed0d)d*Zed1d+d,ZdS )2
ReportTaskzReport task representation.strnameOptional[str]typeNtitledescriptionboolvalidplace	List[str]labelsztypes.IReportTaskStatsstats)factorywarningszList[Error]errorsc                 C  s*   t | jdkrtdd}t|| jd S )z%Validation error if there is only oner   z4The "task.error" is available for single error tasks)noter   )lenr"   r   r   )selferror r'   Q/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/report/task.pyr&   I   s   

zReportTask.errorreturnc                 C  s
   | j dkS )z"Whether task's resource is tabulartable)r   )r%   r'   r'   r(   tabularQ   s   
zReportTask.tabular)	rowNumberfieldNumberr   specc                   s>   g }| j D ]}i   |  | fdd|D  q|S )zFlatten the report

        Parameters
            spec (any[]): flatten specification

        Returns:
            any[]: flatten task report
        c                   s   g | ]}  |qS r'   )get).0propcontextr'   r(   
<listcomp>e   s    z&ReportTask.flatten.<locals>.<listcomp>)r"   updateto_descriptorappend)r%   r.   resultr&   r'   r2   r(   flattenX   s   	
zReportTask.flattenc           
      C  s   i }| j D ]}|j }||vrd||< ||  d7  < q| jd}d| jgd|r.t|ndgd| jd d	gd
| jdgg}|rP|dt|	 g |
 D ]\}}|||g qTd}| jD ]
}	|d|	 d7 }qe|t|ddgdd7 }|S )zdGenerate summary for validation task"

        Returns:
            str: validation summary
        r   r   bytesz
File Placez	File Sizez(file not found)z
Total Timesecondsz SecondszRows CheckedrowszTotal Errors z> z

NameValuegrid)headerstablefmt)r"   r   r   r/   r   humanizenaturalsizer7   sumvaluesitemsr!   r   )
r%   
error_listr&   error_titlesizecontentr   countoutputwarningr'   r'   r(   
to_summaryj   s*   

zReportTask.to_summaryzreport-taskobject)r   r   r   r   r!   r"   string)r   patternbooleanarray)r   	arrayItem)
r   r   r   r   r   r   r   r   r!   r"   )r   required
propertiesc                 C  s   t S )N)r   )clsr   r'   r'   r(   metadata_select_class   s   z ReportTask.metadata_select_classc                 C  s   |dkrt S d S )Nr"   r
   )rX   r   r'   r'   r(   metadata_select_property_class   s   z)ReportTask.metadata_select_property_class)r)   r   )r.   r   )r)   r   )r   r   )r   r   )__name__
__module____qualname____doc____annotations__r   r   attrsfieldlistr!   r"   propertyr&   r+   r9   rO   metadata_typer   metadata_Errorr	   NAME_PATTERNTYPE_PATTERNmetadata_profileclassmethodrY   rZ   r'   r'   r'   r(   r      s`   
 


	
r   )
__future__r   typingr   r   r   r   r`   rC   r   r=   r	   r&   r   r"   r   	exceptionr   metadatar   r   definer   r'   r'   r'   r(   <module>   s    