o
    QDiO                     @  sn   d dl mZ d dlmZmZmZ d dlZd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)ListOptionalUnionN   )Step)platformResourceTF)kw_onlyreprc                   @  s   e Zd ZU dZdZded< 	 ejedZ	ded< 	 dZ
d	ed
< 	 dZded< 	 dddZdgdddgiddiddiddiddZedddZdS )table_mergezmMerge tables.

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

    ztable-mergezUnion[Resource, str]resource)factoryz	List[str]field_namesNzOptional[str]sort_by_fieldFboolignore_fieldsr
   c           	      C  s,  |}| j }t|tr|jsJ |j|}|  | }| }| jrC|jj	t
|jj	d  D ]}|j| q0tj|||_d S |jj	D ]}|j|jsX|j|  qG| jrrt|jj	D ]}|j| jvrq|j|j qb| jpvd }| jr| j}tjj||||d|_d S tjj|||d|_d S )N)keyheader)r   )r   
isinstancestrpackageget_resourceinferto_petlr   schemafieldslen	add_fieldr   petlstackdata	has_fieldnameto_copyr   listremove_fieldr   	mergesortcat)	selfr   targetsourceview1view2fieldr   r    r0   ]/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/steps/table/table_merge.pytransform_resource.   s>   


ztable_merge.transform_resourcetypeobjectstringarrayboolean)r   
fieldNamessortByFieldignoreFields)required
propertiesr$   r   c                 C  s   |dkrt S d S )Nr   r	   )clsr$   r0   r0   r1   metadata_select_property_class_   s   z*table_merge.metadata_select_property_class)r   r
   )r$   r   )__name__
__module____qualname____doc__r3   __annotations__attrsr/   r&   r   r   r   r2   metadata_profile_patchclassmethodr>   r0   r0   r0   r1   r      s*   
 
(

r   )
__future__r   typingr   r   r   rD   pipeliner   r   r   r
   definer   r0   r0   r0   r1   <module>   s    