o
    QDi                     @  s   d dl mZ d dlZd dlmZmZmZmZ d dlZddl	m
Z
mZm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 )    )annotationsN)ClassVarListOptionalUnion   )errorssettingstypes)FrictionlessException)Metadata   StepTF)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< 	 e	j
ed	Zd
ed< 	 ed/ddZd0ddZd1ddZd2ddZd3ddZd2ddZd4d d!Zd"ZejZd#dgd$ejd%d$ejd%dd$idd$idd&id'd(Zed5d)d*Zed6 fd-d.Z  Z S )7PipelinezPipeline representationNzOptional[str]namezClassVar[Union[str, None]]typetitledescription)factoryz
List[Step]stepsreturn	List[str]c                 C  s   dd | j D S )zReturn type list of the stepsc                 S  s   g | ]}|j qS  )r   ).0stepr   r   W/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/pipeline/pipeline.py
<listcomp>1   s    z'Pipeline.step_types.<locals>.<listcomp>r   selfr   r   r   
step_types.   s   zPipeline.step_typesr   r   Nonec                 C  s   | j | dS )zAdd new step to the schemaN)r   append)r"   r   r   r   r   add_step5   s   zPipeline.add_stepstrboolc                 C  s    | j D ]
}|j|kr dS qdS )zCheck if a step is presentTF)r   r   r"   r   r   r   r   r   has_step9   s
   

zPipeline.has_stepc                 C  s:   | j D ]}|j|kr|  S qtjd| dd}t|)zGet step by typezstep "z" does not exist)note)r   r   r   PipelineErrorr   )r"   r   r   errorr   r   r   get_step@   s   

zPipeline.get_stepOptional[Step]c                 C  s@   |  |jr| |j}| j|}|| j|< |S | | dS )zSet step by typeN)r*   r   r.   r   indexr&   )r"   r   	prev_stepr0   r   r   r   set_stepH   s   
zPipeline.set_stepc                 C  s   |  |}| j| |S )zRemove step by type)r.   r   remover)   r   r   r   remove_stepQ   s   
zPipeline.remove_stepc                 C  s
   g | _ dS )zRemove all the stepsNr    r!   r   r   r   clear_stepsW   s   
zPipeline.clear_stepspipelineobjectstring)r   patternarray)r   r   r   r   r   )r   required
propertiesc                 C  s   |dkrt S d S )Nr   r   )clsr   r   r   r   metadata_select_property_classk   s   z'Pipeline.metadata_select_property_class
descriptortypes.IDescriptorc                   sd   t  | |dg }|r.t|d tr0|d|d d d}|d7 }t|t	 d S d S d S )Ntasksr   r   z:Pipeline "tasks[].steps" is deprecated in favor of "steps"z.(it will be removed in the next major version))
supermetadata_transformpop
isinstancedict
setdefaultgetwarningswarnUserWarning)r=   r?   rA   r+   	__class__r   r   rC   p   s   zPipeline.metadata_transform)r   r   )r   r   r   r$   )r   r'   r   r(   )r   r'   r   r   )r   r   r   r/   )r   r$   )r   r'   )r?   r@   )!__name__
__module____qualname____doc__r   __annotations__r   r   r   attrsfieldlistr   propertyr#   r&   r*   r.   r2   r4   r5   metadata_typer   r,   metadata_Errorr	   NAME_PATTERNTYPE_PATTERNmetadata_profileclassmethodr>   rC   __classcell__r   r   rL   r   r      sF   
 




	


r   )
__future__r   rI   typingr   r   r   r   rS    r   r	   r
   	exceptionr   metadatar   r   r   definer   r   r   r   r   <module>   s    