o
    QDi+                     @  s*  d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	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 erZd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)d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$e%e&d(Z'dS )-    )annotationsN)partial)TYPE_CHECKINGAnyCallableClassVarDictListOptionalPattern   )errorssettings)FrictionlessException)Metadata)system)IDescriptor   )types)SchemaTF)kw_onlyreprc                      s  e Zd ZU dZded< 	 ded< 	 dZded< 	 dZded	< 	 ejZ	ded
< 	 e
jejjdZded< 	 e
jedZded< 	 dZded< 	 dZded< 	 dZded< 	 dZded< 	 g Zded< 	 dI fddZedd ZejdJd dZdKd"d#ZdLd&d'ZdMd)d*Zdd+dNd-d.ZdOd0d1ZdPd3d4Zd5Z e!j"Z#d6dgdd7id7ej$d8dd7idd7idd7id9dd7id:d6dd;idd;idd7idd9idd<idd<ii i d=d>dd7ii d?	d@Z%e&dQdAdBZ'e&dR fdEdFZ(e&dR fdGdHZ)  Z*S )SFieldzField representationstrnamezClassVar[str]typeNOptional[str]titledescriptionformat)factoryz	List[str]missing_valueszDict[str, Any]constraintsrdf_typeexamplezOptional[Schema]schemaFzClassVar[bool]builtinzClassVar[List[str]]supported_constraintsvaluer   c                   s*   |dkrd}t tj|dt ||S )Nr   z=Use "schema.set_field_type()" to update the type of the fieldnote)r   r   
FieldErrorsuper__setattr__)selfr   r(   r*   	__class__ R/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/schema/field.pyr-   [   s   zField.__setattr__c                 C  s   | j ddS )z Indicates if field is mandatory.requiredF)r"   get)r.   r1   r1   r2   r3   a   s   zField.requiredboolc                 C  s   || j d< d S )Nr3   )r"   )r.   r(   r1   r1   r2   r3   f   s   cellc                 C  s   |   }||S N)create_cell_reader)r.   r6   cell_readerr1   r1   r2   	read_celll   s   zField.read_cellreturntypes.ICellReaderc                   s     jdsjrjji  jD ]9}j|}|d urQ|dv r,|}|dkr8td	|}|dkrCt
t|}tt d| | |< qd fd	d
}|S )Nr!   )minimummaximumpatternz^{0}$enumcheck_r6   r   c                   s   d }t | v r
d } | d ur'| } | d u r'|pi }dj dj d|d< |sL rL  D ]\}}|| sK|p:i }j| }d| d| d||< q/| |fS )N	type is "/"r   constraint "z" is ")r   r   r   itemsr"   )r6   notesr   check
constraintchecksr!   r.   value_readerr1   r2   r9      s    
z-Field.create_cell_reader.<locals>.cell_readerr6   r   )create_value_readerr!   has_definedr%   r'   r"   r4   recompiler   listmapr   globals)r.   r   rI   r9   r1   rJ   r2   r8   p   s$   
zField.create_cell_readertypes.IValueReaderc                 C     ddd}|S )Nr6   r   c                 S  s   | S r7   r1   r6   r1   r1   r2   rL      s   z/Field.create_value_reader.<locals>.value_readerrM   r1   )r.   rL   r1   r1   r2   rN         
zField.create_value_readerignore_missingrZ   c                C  s   |   }|||dS )NrY   )create_cell_writer)r.   r6   rZ   cell_writerr1   r1   r2   
write_cell   s   zField.write_celltypes.ICellWriterc                   sl     zjd  dsjrjjd  W n ty'   tjd  Y nw ddd fd	d
}|S )Nr   r!   FrY   r6   r   rZ   r5   c                  sZ   d }| d u r|r
| n } | |fS | } | d u r)|pi }dj  dj d|d< | |fS )NrB   rC   rD   r   )r   r   )r6   rZ   rG   missing_valuer.   value_writerr1   r2   r\      s   z-Field.create_cell_writer.<locals>.cell_writerr6   r   rZ   r5   )create_value_writerr!   rO   r%   
IndexErrorr   DEFAULT_MISSING_VALUES)r.   r\   r1   r_   r2   r[      s   
zField.create_cell_writertypes.IValueWriterc                 C  rV   )Nr6   r   c                 S  s   t | S r7   )r   rW   r1   r1   r2   ra      s   z/Field.create_value_writer.<locals>.value_writerrM   r1   )r.   ra   r1   r1   r2   rc      rX   zField.create_value_writerfieldobjectstring)r   r?   array)r   rF   booleaninteger)r3   uniquer?   r@   	minLength	maxLengthr=   r>   )r   
properties)	r   r   r   r   r   missingValuesr"   rdfTyper$   )r   r3   rp   c                 C  s   t |ptjS r7   )r   select_field_classr   DEFAULT_FIELD_TYPE_SPECS_V1)clsr   r1   r1   r2   metadata_select_class   s   zField.metadata_select_class
descriptorr   c                   sN   t  | |d}|r!t|tr#|dr%|dd|d< d S d S d S d S )Nr   zfmt: )r,   metadata_transformr4   
isinstancer   
startswithreplace)ru   rw   r   r/   r1   r2   ry      s
   
zField.metadata_transformc                 #  sF   t t |}|r|E d H  d S |di D ]}|| jdg vr3d| d| j d}tj|dV  q|d}|r|d}t	|}||d	|d
dd}|dkrld|
 v ra|d |_d|
 v rl|d |_||\}	}
|
d urd| d|j d}tj|dV  dD ]}||v rd| d| d}tj|dV  qd S )Nr"   rm   rE   z" is not supported by type "rD   r)   r$   r   r   r   default)r   r   rk   
trueValuesfalseValueszexample value "z" for field "z" is not valid)r3   z " should be set as "constraints.)rR   r,   metadata_validater4   r'   r   r   r+   r   rs   keystrue_valuesfalse_valuesr:   r   )ru   rw   metadata_errorsr   r*   r$   r   Classrg   _rG   r/   r1   r2   r      sD   






zField.metadata_validate)r   r   r(   r   )r(   r5   rM   )r;   r<   )r;   rU   rb   )r;   r^   )r;   rf   )r   r   )rw   r   )+__name__
__module____qualname____doc____annotations__r   r   r   DEFAULT_FIELD_FORMATr   attrsrg   re   copyr!   dictr"   r#   r$   r%   r&   r'   r-   propertyr3   setterr:   r8   rN   r]   r[   rc   metadata_typer   r+   metadata_ErrorTYPE_PATTERNmetadata_profileclassmethodrv   ry   r   __classcell__r1   r1   r/   r2   r      s   
 



*	

	
r   rI   r5   r6   r   c                 C  s   | r|d u sdS dS NTFr1   rI   r6   r1   r1   r2   check_required&  s   r   c                 C  s    |d u rdS t || krdS dS r   lenr   r1   r1   r2   check_minLength,  
   r   c                 C  s    |d u rdS t || krdS dS r   r   r   r1   r1   r2   check_maxLength4  r   r   c                 C  s8   |d u rdS z
|| krW dS W dS  t jy   Y dS w r   decimalInvalidOperationr   r1   r1   r2   check_minimum<     r   c                 C  s8   |d u rdS z
|| krW dS W dS  t jy   Y dS w r   r   r   r1   r1   r2   check_maximumI  r   r   Pattern[str]r   c                 C  s"   |d u rdS |  |}|rdS dS r   )match)rI   r6   r   r1   r1   r2   check_patternV  s   
r   	List[Any]c                 C  s   |d u rdS || v rdS dS r   r1   r   r1   r1   r2   
check_enum_  s
   r   rx   )rI   r5   r6   r   )rI   r   r6   r   )rI   r   r6   r   )rI   r   r6   r   )(
__future__r   r   rP   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   rx   r   r   	exceptionr   metadatar   r   r   r   r%   r   definer   r   r   r   r   r   r   r   r   rQ   COMPILED_REr1   r1   r1   r2   <module>   s4    (  






	