o
    QDi!                     @  s"  d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
mZ ddlmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' er|ddlm(Z( e
dedZ)G dd de#Z*G dd de*Z+G dd de*Z,G dd de*Z-G dd  d e*Z.G d!d" d"e*ee) Z/G d#d$ d$e/e Z0G d%d& d&e/e Z1G d'd( d(e/e% Z2G d)d* d*e/e Z3G d+d, d,e/e Z4G d-d. d.e/e! Z5G d/d0 d0e/e# Z6G d1d2 d2e/e Z7G d3d4 d4e/e Z8dS )5    )annotationsN)TYPE_CHECKINGAnyGenericListOptionalTypeTypeVarUnion   )helperssettings)Catalog)	Checklist)Dialect)FrictionlessException)Inquiry)Metadata)Package)Pipeline)platform)Report)Resource)Schema   )TableResource)typesT)boundc                   @  s,   e Zd ZdZdZdddZ	ddd
dZdS )JsonResourcejsonreturnr   c                 C  sh   | j dur| j S t|  |  }| jdkrtj|nt	|	 W  d   S 1 s-w   Y  dS )zPRead json data into memory

        Returns:
            any: json data
        Nyaml)
datar   ensure_open	read_textformatr   r"   	safe_loadr    loads)selftext r+   T/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/resources/json.py	read_json$   s   

$zJsonResource.read_jsonNtarget"Optional[Union[JsonResource, Any]]optionsc                 K  s|   |}t |tst|fi |}t |tstd|  }|jdkr$tjntj}||	d}|j
s3J tj|j
|dd |S )zWrite json data to the targetztarget must be a json resourcer"   zutf-8wb)mode)
isinstancer   r   r   r-   r&   r   to_yamlto_jsonencodenormpath
write_file)r)   r.   r0   resourcer#   dumpbytesr+   r+   r,   
write_json7   s   


zJsonResource.write_json)r!   r   N)r.   r/   r0   r   )__name__
__module____qualname__typedatatyper-   r<   r+   r+   r+   r,   r      s    
r   c                   @     e Zd ZdZdS )ChartResourcechartNr>   r?   r@   rB   r+   r+   r+   r,   rD   H       rD   c                   @  rC   )JsonschemaResource
jsonschemaNrF   r+   r+   r+   r,   rH   L   rG   rH   c                   @  rC   )MapResourcemapNrF   r+   r+   r+   r,   rJ   P   rG   rJ   c                   @  rC   )ViewResourceviewNrF   r+   r+   r+   r,   rL   T   rG   rL   c                   @  sL   e Zd ZU ded< edddZddd	Z	
dd
d
dd
ejddddZ	d
S ) MetadataResourcezType[T]	dataclassr!   Union[types.IDescriptor, str]c                 C  s,   | j d ur| j n| j}t|ttfsJ |S r=   )r#   pathr3   strdict)r)   
descriptorr+   r+   r,   rT   [   s   zMetadataResource.descriptorr   c                 C  s   | j j| j| jdS )N)basepath)rO   from_descriptorrT   rU   r)   r+   r+   r,   read_metadatac   s   zMetadataResource.read_metadataNFnameon_rowparallel
limit_rowslimit_errors	checklistOptional[Checklist]rZ   Optional[str]r[   !Optional[types.ICallbackFunction]r\   boolr]   Optional[int]r^   intr   c          
   
   C  sh   g }t  }z|   W n ty( }	 z|	jr|	jn|	jg}W Y d }	~	nd }	~	ww tjjj	| |j
|dS )N)timeerrors)r   TimerrX   r   reasonserrorr   frictionlessr   from_validation_taskrf   )
r)   r_   rZ   r[   r\   r]   r^   rg   timer	exceptionr+   r+   r,   validateh   s   
 zMetadataResource.validate)r!   rP   )r!   r   r=   r_   r`   rZ   ra   r[   rb   r\   rc   r]   rd   r^   re   r!   r   )
r>   r?   r@   __annotations__propertyrT   rX   r   DEFAULT_LIMIT_ERRORSro   r+   r+   r+   r,   rN   X   s   
 
rN   c                   @     e Zd ZdZeZdS )CatalogResourcecatalogN)r>   r?   r@   rB   r   rO   r+   r+   r+   r,   ru   }       ru   c                   @  rt   )DialectResourcedialectN)r>   r?   r@   rB   r   rO   r+   r+   r+   r,   rx      rw   rx   c                   @  rt   )SchemaResourceschemaN)r>   r?   r@   rB   r   rO   r+   r+   r+   r,   rz      rw   rz   c                   @  rt   )ChecklistResourcer_   N)r>   r?   r@   rB   r   rO   r+   r+   r+   r,   r|      rw   r|   c                   @  rt   )PipelineResourcepipelineN)r>   r?   r@   rB   r   rO   r+   r+   r+   r,   r}      rw   r}   c                   @  rt   )ReportResourcereportN)r>   r?   r@   rB   r   rO   r+   r+   r+   r,   r      rw   r   c                   @  sb   e Zd ZdZeZd$ddZdddddd%ddZddd&ddZ	d'dddde	j
dd(d"d#ZdS ))ResourceResourcer9   r!   r   c                 C  $   | j j| j| j| jpd | jpd dS N)rU   ry   detectorrO   rV   rT   rU   ry   r   rW   r+   r+   r,   rX         zResourceResource.read_metadataNrZ   filterprocessr]   rZ   ra   r   Optional[types.IFilterFunction]r    Optional[types.IProcessFunction]r]   rd   types.ITabularDatac                C  s(   |   }t|tsi S |j||||dS Nr   )rX   r3   r   extract)r)   rZ   r   r   r]   r9   r+   r+   r,   r      s   
zResourceResource.extractrZ   List[Resource]c                C  s   |   }|gS )zList dataset resources)rX   )r)   rZ   r9   r+   r+   r,   list   s   zResourceResource.listFrY   r_   r`   r[   rb   r\   rc   r^   re   r   c          	   
   C  sT   z|   }W n ty  } ztj| dW  Y d }~S d }~ww |j||||dS )Nrg   )r^   r]   r[   rX   r   r   from_validation	to_errorsro   )	r)   r_   rZ   r[   r\   r]   r^   r9   rn   r+   r+   r,   ro      s   
zResourceResource.validate)r!   r   
rZ   ra   r   r   r   r   r]   rd   r!   r   rZ   ra   r!   r   r=   rp   )r>   r?   r@   rB   r   rO   rX   r   r   r   rs   ro   r+   r+   r+   r,   r      s$    
	r   c                   @  sv   e Zd ZdZeZd/ddZdddddd0ddZd1ddZddd2ddZ		d3dddde
jdd4d)d*Zd5d-d.ZdS )6PackageResourcepackager!   r   c                 C  r   r   r   rW   r+   r+   r,   rX      r   zPackageResource.read_metadataNr   rZ   ra   r   r   r   r   r]   rd   r   c                C  s   |   }|j||||dS r   )rX   r   )r)   rZ   r   r   r]   r   r+   r+   r,   r      s   zPackageResource.extractdatabase_urlrR   r0   r   	List[str]c                 K  s   |   }|j|fi |S r=   )rX   index)r)   r   r0   r   r+   r+   r,   r      s   zPackageResource.indexr   r   c                C  s"   |   }|d u r|jS ||gS r=   )rX   	resourcesget_resource)r)   rZ   r   r+   r+   r,   r      s   zPackageResource.listFrY   r_   r`   r[   rb   r\   rc   r^   re   r   c          	   
   C  sV   z|   }W n ty  } ztj| dW  Y d }~S d }~ww |j|||||dS )Nr   )rZ   r\   r]   r^   r   )	r)   r_   rZ   r[   r\   r]   r^   r   rn   r+   r+   r,   ro     s   
zPackageResource.validater~   r   c                 C  s   |   }||S r=   )rX   	transform)r)   r~   r   r+   r+   r,   r     s   
zPackageResource.transform)r!   r   r   )r   rR   r0   r   r!   r   r   r=   rp   )r~   r   )r>   r?   r@   rB   r   rO   rX   r   r   r   r   rs   ro   r   r+   r+   r+   r,   r      s(    

r   c                   @  s2   e Zd ZdZeZ	dddddejddddZdS )InquiryResourceinquiryNFrY   r_   r`   rZ   ra   r[   rb   r\   rc   r]   rd   r^   re   r!   r   c          	   
   C  sN   z|   }W n ty  } ztj| dW  Y d }~S d }~ww |j|dS )Nr   )r\   r   )	r)   r_   rZ   r[   r\   r]   r^   r   rn   r+   r+   r,   ro   $  s   
zInquiryResource.validater=   rp   )	r>   r?   r@   rB   r   rO   r   rs   ro   r+   r+   r+   r,   r     s    r   )9
__future__r   r    typingr   r   r   r   r   r   r	   r
    r   r   rv   r   r_   r   ry   r   rn   r   r   r   metadatar   r   r   r~   r   r   r   r   r9   r   r{   r   tabler   r   r   r   rD   rH   rJ   rL   rN   ru   rx   rz   r|   r}   r   r   r   r   r+   r+   r+   r,   <module>   sF    (+%;H