o
    QDiV                     @  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
 ddlmZ er8d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)TYPE_CHECKINGAnyIterableListSetN   )errors)Check)Error)Resource)RowTF)kw_onlyreprc                      s~   e Zd ZU dZdZejgZded< 	 ded< 	 d fd	d
Z	dddZ
dddZdddZddgddiddiddZ  ZS )required_valuez%Check for required values in a field.zrequired-valuestr
field_namez	List[Any]valuesresourcer   c                   s   t  | t | _d S N)superconnectset(_required_value__required_values_in_cell)selfr   	__class__ `/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/checks/cell/required_value.pyr   %   s   zrequired_value.connectreturnIterable[Error]c                 c  s2    | j | jjjvrd}tj|| j  dV  d S d S )Nz1required value check requires field "%s" to existnote)r   r   schemafield_namesr	   
CheckError)r   r"   r   r   r   validate_start+   s
   zrequired_value.validate_startrowr   c                 c  s0    || j  }|| jv r| j| g E d H  d S r   )r   r   r   add)r   r'   cellr   r   r   validate_row0   s
   

zrequired_value.validate_rowc                 c  sH    t | j| j }|r |D ]}d}||| jf }tj|dV  qd S d S )NzKThe value "%s" is required to be present in field "%s" in at least one row.r!   )r   r   r   r   r	   RequiredValueError)r   required_values_not_foundmissing_required_valuer"   r   r   r   validate_end6   s   zrequired_value.validate_end	fieldNametypestringarray)r/   r   )required
properties)r   r   )r   r    )r'   r   r   r    )__name__
__module____qualname____doc__r0   r	   r+   Errors__annotations__r   r&   r*   r.   metadata_profile_patch__classcell__r   r   r   r   r      s"   
 


r   )
__future__r   typingr   r   r   r   r   attrs r	   	checklistr
   errorr   r   r   tabler   definer   r   r   r   r   <module>   s    