o
    QDi                     @  s   d dl mZ d dlmZ d dlmZmZmZ d dlZd dl	Z	ddl
mZ er2ddlmZ ddlmZ ejd	d
dG dd deZdS )    )annotations)deepcopy)TYPE_CHECKINGAnyOptionalN   )Step)types)ResourceTF)kw_onlyreprc                   @  s   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	< 	 dZ	d
ed< 	 dZ
ded< 	 dddZdgddii ddiddiddiddZdS )field_updatezmUpdate field.

    This step can be added using the `steps` parameter
    for the `transform` function.

    zfield-updatestrnameNzOptional[Any]valueformulafunctionzOptional[types.IDescriptor]
descriptorFboolpass_rowresourcer
   c                   s   j } j}| }t jpi }|d}|j j|  j	r) fdd}d}|r6|j
 j||d|_n jrC| j j|_n|rN| j|i|_|r|jjr|jj j |jj| |jrj|jjng }|D ]M}t|jjD ]>\}	}
|
d d }t|tr j|
d d v r|jj|	 d d  j |jj|	 d d | qv||jj|	 d d< qv|jj|j_qn|jr|j |j_d S d S d S d S )Nr   c                   s   t j j|dS )N)names)
simpleevalsimple_evalr   )_rowself ^/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/steps/field/field_update.py<lambda>E   s    z1field_update.transform_resource.<locals>.<lambda>T)r   	referencefields)r   r   to_petlr   r   getschemaupdate_fieldr   r   convertdatar   updaterenameprimary_keyremoveappendpackage	resources	enumerateforeign_keys
isinstancelistto_descriptormetadata_descriptor_initial)r   r   r   r   tabler   new_namer/   package_resourceindexfkr"   r   r   r   transform_resource=   sX   



zfield_update.transform_resourcetypestringobjectboolean)r   r   r   r   r   )required
properties)r   r
   )__name__
__module____qualname____doc__r<   __annotations__r   r   r   r   r   r;   metadata_profile_patchr   r   r   r   r      s0   
 
0
r   )
__future__r   copyr   typingr   r   r   attrsr   pipeliner    r	   r   r
   definer   r   r   r   r   <module>   s    