o
    QDi                     @  sn   d dl mZ d dlmZmZ d dlZddlmZ ddlmZ ddl	m
Z
 dZejd	d
dG dd deZdS )    )annotations)OptionalUnionN   )Step)platformResourceinnerTF)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
< 	 eZ	ded< 	 dddZ
dgdddgiddidg ddi ddZedddZdS )
table_joinzlJoin tables.

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

    z
table-joinzUnion[Resource, str]resourceNzOptional[str]
field_nameFbooluse_hashstrmoder	   c                 C  s  |}| j }t|tr|jsJ |j|}|  | }| }| jdvr<|jj	D ]}|j
| jkr;|jj	|  q*| jdkrV| jrHtjjntjj}|||| j|_d S | jdkrp| jrbtjjntjj}|||| j|_d S | jdkr| jr|tjjntjj}	|	||| j|_d S | jdkrtj||| j|_d S | jdkrtj|||_d S | jdkr| jrtjjntjj}
|
||| j|_d S d S )N)negater
   leftrightoutercrossr   )r   
isinstancer   packageget_resourceinferto_petlr   schemafieldsnamer   appendto_copyr   r   petlhashjoinjoindatahashleftjoinleftjoinhashrightjoin	rightjoin	outerjoin	crossjoinhashantijoinantijoin)selfr   targetsourceview1view2fieldr%   r(   r*   r.    r5   \/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/steps/table/table_join.pytransform_resource2   sB   








ztable_join.transform_resourcetypeobjectstring)r
   r   r   r   r   r   )r8   enum)r   	fieldNamer   hash)required
propertiesr    c                 C  s   |dkrt S d S )Nr   r   )clsr    r5   r5   r6   metadata_select_property_classe   s   z)table_join.metadata_select_property_class)r   r	   )r    r   )__name__
__module____qualname____doc__r8   __annotations__r   r   DEFAULT_MODEr   r7   metadata_profile_patchclassmethodrA   r5   r5   r5   r6   r      s.   
 
'
r   )
__future__r   typingr   r   attrspipeliner   r   r   r	   rG   definer   r5   r5   r5   r6   <module>   s    