o
    QDiK                     @  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 ddlmZ er8d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)Field)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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iddZdS )	field_addziAdd field.

    This step can be added using the `steps` parameter
    for the `transform` function.
    z	field-addstrnameNzOptional[Any]valueformulafunctionzOptional[int]positionzOptional[types.IDescriptor]
descriptorFboolincrementalresourcer   c           	        s    j } j} j}| }t jpi } jr j|d< |dd  jr-|p(d}d|d< t	
|}|r8|d nd }|jj||d  jrO|j jd|_d S  jrX fdd	}|p[|}|j j||d
|_d S )Nr   typeany   integer)r   )fieldc                   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_add.py<lambda>W   s    z.field_add.transform_resource.<locals>.<lambda>)r   index)r   r   r   to_petlr   r   r   
setdefaultr   r	   from_descriptorschema	add_fieldaddrownumbersdatar   addfield)	r#   r   r   r   r   tabler   r   r'   r$   r"   r%   transform_resourceD   s(   

zfield_add.transform_resourcer   stringr   objectboolean)r   r   r   r   r   r   )required
properties)r   r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r1   metadata_profile_patchr$   r$   r$   r%   r      s6   
 

r   )
__future__r   copyr   typingr   r   r   attrsr   pipeliner   r+   r	    r
   r   r   definer   r$   r$   r$   r%   <module>   s    