o
    QDi
                     @  s   d dl mZ d dl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 er0ddlmZ d	Zejd
ddG dd deZ			
ddddZdS )    )annotations)TYPE_CHECKINGAnyListN)next	text_type   )fields)Step)Resource-TF)kw_onlyreprc                   @  s~   e Zd ZU dZdZded< 	 ded< 	 eZded< 	 dZd	ed
< 	 dddZ	ddgddiddiddiddiddiddZ
dS )field_mergezmMerge fields.

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

    zfield-mergestrname	List[str]
from_names	separatorFboolpreserveresourcer   returnNonec                 C  s^   |  }tj| jd}|j| | js | jD ]}|j| qt	|| j| j| j
| j|_d S )N)r   )to_petlr	   StringFieldr   schema	add_fieldr   r   remove_fieldmerger   data)selfr   tablefieldr    r$   ]/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/steps/field/field_merge.pytransform_resource4   s   

zfield_merge.transform_resource	fromNamestypestringarrayboolean)r   r'   	fieldTyper   r   )required
propertiesN)r   r   r   r   )__name__
__module____qualname____doc__r(   __annotations__DEFAULT_SEPARATORr   r   r&   metadata_profile_patchr$   r$   r$   r%   r      s(   
 

r   sourcer   r   r   r   r   sepr   r   c                 #  s    t | }t|}t  ttt|}t|}|D ]}	||	}
|s'||	  |
 q||g t	|V  |D ]-} fddt
|D }|rNt|}n fddt
|D }|||g t	|V  q:d S )Nc                   s   g | ]
\}}| v r|qS r$   r$   .0ivfield_indexesr$   r%   
<listcomp>m       zmerge.<locals>.<listcomp>c                   s   g | ]
\}}| vr|qS r$   r$   r8   r<   r$   r%   r>   q   r?   )iterr   listmapr   indexremoveappendextendtuple	enumeratejoin)r6   r   r   r7   r   ithdrfldsouthdrr#   field_indexrowvalueout_rowr$   r<   r%   r   T   s*   



r   )r   T)
r6   r   r   r   r   r   r7   r   r   r   )
__future__r   typingr   r   r   attrspetl.compatr   r    r	   pipeliner
   r   r   r4   definer   r   r$   r$   r$   r%   <module>   s   E