o
    QDi                     @   s   d dl Z d dlZd dlZd dlZd dlZd dl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mZ dd	lmZmZ d
dlmZ G dd deZdS )    N)Optional   )errorshelpers)FrictionlessException)Package)platform)FileResourceTableResource)AdapterPublishResult   )
ZipControlc                   @   s>   e Zd Zdddedee fddZdd Zd	efd
dZ	dS )
ZipAdapterN)controlsourcer   c                C   s   || _ |pt | _d S )N)r   r   r   )selfr   r    r   Y/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/formats/zip/adapter.py__init__   s   zZipAdapter.__init__c              	   C   s   | j j}t| jd}d |_|P |j}|jr&t }t	
|j| |d tj|d}t }|| tt	j| |pAd}W d    n1 sLw   Y  tj||}W d    n1 sbw   Y  t|S )Npathr   rdatapackage.json)r   	innerpathr	   r   compressionbyte_streamremotetempfileTemporaryFileshutilcopyfileobjseekr   zipfileZipFilemkdtemp
extractallatexitregisterrmtreeosr   joinr   from_descriptor)r   r   resourcer   ziptempdir
descriptorr   r   r   read_package   s$   



zZipAdapter.read_packagepackagec              
   C   sH  | j }| jj}| jj}z|ptjj}tjj|d|d}| }t	|j
D ]\}}|d | }	|jrt|jts|j d}|	dd  ||	d< d|	d< d	|	d
< d|	d< t|ts[J t }
t|
jd	d}|| ||
j| W d    n1 s}w   Y  q%|jrt|j|jD ]%\}}tj|rt|sd| d}tj|d}t |||| qq%|j!r|j"dkr|j}|j!}tj|rt|sd| d}tj|d}t |||| q%|#dt$j%|dd|d W d    n1 sw   Y  W n t&y } ztjt'|d}t ||d }~ww t(t)|ddS )Nw)r   	resourcesz.csvdatar   fileschemecsvformatztext/csv	mediatype)r   r9   zZipping usafe "z" is not supported)noter      F)indentensure_asciiclsr   )context)*r   r   r   encoder_classr   r#   ZIP_DEFLATEDr$   to_descriptor	enumerater4   memory
isinstancer5   listnamepopr
   r   NamedTemporaryFilewrite	multipartr.   paths	normpathsr*   r   isfiler   is_safe_pathr   PackageErrorr   normpathr7   writestrjsondumps	Exceptionstrr   dict)r   r2   r   r   rA   archivepackage_descriptorindexr-   r0   r6   targetrR   r;   error	exceptionr   r   r   write_package1   s|   


	

6
zZipAdapter.write_package)
__name__
__module____qualname__rW   r   r   r   r1   r   r_   r   r   r   r   r      s    r   )r'   rT   r*   r    r   typingr    r   r   r^   r   r2   r   r   r4   r	   r
   systemr   r   r   r   r   r   r   r   r   <module>   s    