o
    QDi	                     @  s   d dl mZ d dlmZ d dl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r@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)deepcopy)TYPE_CHECKINGOptionalN   )errorshelpers)FrictionlessException)Step)types)Package)ResourceTF)kw_onlyreprc                   @  s\   e Zd ZU dZdZdZded< 	 ded< 	 dd
dZdddZdgddiddiddZ	dS )resource_updatezpUpdate resource.

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

    zresource-updateNzOptional[str]nameztypes.IDescriptor
descriptorpackager   c                 C  s6   | j sd}ttj|dt| j}|| j | d S )NzBProperty "name" is required for "resource_update" within a package)note)r   r	   r   	StepErrorr   r   update_resource)selfr   r   r    r   d/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/steps/resource/resource_update.pytransform_package)   s
   
z!resource_update.transform_packageresourcer   c           
      C  s   t | j}| D ]
\}}t||| q
|jr|jjng }|d}|r_|| jkra|D ]&}t	|j
jD ]\}}	|	d d | jkrK||j
j| d d< q4|j
j|j
_q,|jrc|j |j_d S d S d S d S )Nr   	referencer   )r   create_optionsr   itemssetattrr   	resourcesgetr   	enumerateschemaforeign_keysto_descriptormetadata_descriptor_initial)
r   r   optionsr   valuer    new_namepackage_resourceindexfkr   r   r   transform_resource2   s*   

z"resource_update.transform_resourcetypestringobject)r   r   )required
properties)r   r   )r   r   )
__name__
__module____qualname____doc__r.   r   __annotations__r   r-   metadata_profile_patchr   r   r   r   r      s   
 

	
r   )
__future__r   copyr   typingr   r   attrs r   r   	exceptionr	   pipeliner
   r   r   r   r   r   definer   r   r   r   r   <module>   s    