o
    QDi                     @  s   d dl mZ d dlmZmZmZmZmZ d dlZddl	m
Z
mZ ddlmZ ddlmZ ddlmZ d	d
lmZ er@ddlmZ ejdddG dd deZdS )    )annotations)TYPE_CHECKINGClassVarListOptionalUnionN   )errorssettings)baseline)FrictionlessException)Metadata   Check)ResourceTF)kw_onlyreprc                   @  sD  e Zd ZU dZdZded< 	 dZded< 	 dZded< 	 dZded< 	 e	j
ed	Zd
ed< 	 e	j
ed	Zded< 	 e	j
ed	Zded< 	 ed7ddZed7ddZd8ddZd9ddZd:ddZd;d d!Zd:d"d#Zd<d$d%Zd=d(d)Zd>d,d-Zd.ZejZd/d0ejd1dd0idd0idd2idd2idd2id3d4Z e!d?d5d6Z"dS )@	ChecklistzChecklist representation.

    A class that combines multiple checks to be applied while validating
    a resource or package.

    NzOptional[str]namezClassVar[Union[str, None]]typetitledescription)factoryList[Check]checks	List[str]pick_errorsskip_errorsreturnc                 C  s   dd | j D S )Nc                 S  s   g | ]}|j qS  )r   ).0checkr    r    Y/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/checklist/checklist.py
<listcomp>E   s    z)Checklist.check_types.<locals>.<listcomp>r   selfr    r    r#   check_typesC      zChecklist.check_typesc                 C  s   g }t  g}|| j D ]4}|jD ].}| jr%|j| jvr%t| j|js%q| jr8|j| jv s7t| j|jr8q|	|j qq|S N)
r   r   Errorsr   r   setintersectiontagsr   append)r'   scopebasicsr"   Errorr    r    r#   r0   G   s*   
zChecklist.scoper"   r   Nonec                 C  s   | j | dS )zAdd new check to the schemaN)r   r/   )r'   r"   r    r    r#   	add_check\   r)   zChecklist.add_checkstrboolc                 C  s    | j D ]
}|j|kr dS qdS )zCheck if a check is presentTF)r   r   r'   r   r"   r    r    r#   	has_check`   s
   

zChecklist.has_checkc                 C  s:   | j D ]}|j|kr|  S qtjd| dd}t|)zGet check by typezcheck "z" does not exist)note)r   r   r	   ChecklistErrorr   )r'   r   r"   errorr    r    r#   	get_checkg   s   

zChecklist.get_checkOptional[Check]c                 C  s@   |  |jr| |j}| j|}|| j|< |S | | dS )zSet check by typeN)r8   r   r<   r   indexr4   )r'   r"   
prev_checkr>   r    r    r#   	set_checko   s   
zChecklist.set_checkc                 C  s   |  |}| j| |S )zRemove check by type)r<   r   remover7   r    r    r#   remove_checkx   s   
zChecklist.remove_checkc                 C  s
   g | _ dS )zRemove all the checksNr%   r&   r    r    r#   clear_checks~   s   
zChecklist.clear_checksresourcer   c                 C  s4   g }t  g}|| j D ]}|| || q|S r*   )r   r   connectr/   )r'   rD   r   r1   r"   r    r    r#   rE      s   
zChecklist.connectr;   errors.Errorc                 C  s    t |tjr|j| jvrdS dS )NFT)
isinstancer	   	DataErrorr   r0   )r'   r;   r    r    r#   match   s   zChecklist.match	checklistobjectstring)r   patternarray)r   r   r   r   
skipErrors
pickErrors)r   
propertiesc                 C  s   |dkrt S d S )Nr   r   )clsr   r    r    r#   metadata_select_property_class   s   z(Checklist.metadata_select_property_class)r   r   )r"   r   r   r3   )r   r5   r   r6   )r   r5   r   r   )r"   r   r   r=   )r   r3   )rD   r   r   r   )r;   rF   r   r6   )r   r5   )#__name__
__module____qualname____doc__r   __annotations__r   r   r   attrsfieldlistr   r   r   propertyr(   r0   r4   r8   r<   r@   rB   rC   rE   rI   metadata_typer	   r:   metadata_Errorr
   NAME_PATTERNmetadata_profileclassmethodrS   r    r    r    r#   r      sR   
 




	




r   )
__future__r   typingr   r   r   r   r   rY    r	   r
   r   r   	exceptionr   metadatar   r"   r   rD   r   definer   r    r    r    r#   <module>   s    