o
    QDi                     @  sz   d dl mZ d dlZd dl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 G d
d deZG dd dZdS )    )annotationsN)AnyList   )helperstypes)FileResource)Loader   )MultipartControlc                   @  s"   e Zd ZdZdd Zd	ddZdS )
MultipartLoaderz Multipart loader implementation.c                 C  sD   | j jsJ | j j}| j jjdu }|p| j jdk}t| j j||dS )NFcsv)remoteheadless)resourcenormpathr   dialectheaderformatMultipartByteStream	normpaths)selfr   r    r   ^/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/schemes/multipart/loader.pyread_byte_stream_create   s   z'MultipartLoader.read_byte_stream_createbyte_streamtypes.IByteStreamc                 C  s   | j jsJ t| j j}d}	 ||j}|sd S |d7 }| j jj|d}tj	dd}|
| W d    n1 s<w   Y  t|j| q)Nr   Tr
   )numberF)delete)r   r   r   from_dialectr   read
chunk_sizer   tempfileNamedTemporaryFilewriter   	move_filename)r   r   controlr   bytespathfiler   r   r   write_byte_stream_save"   s   z&MultipartLoader.write_byte_stream_saveN)r   r   )__name__
__module____qualname____doc__r   r+   r   r   r   r   r      s    r   c                   @  s   e Zd Zd)ddZdd	 Zd*ddZedd Zedd Zdd Z	dd Z
dd Zdd Zdd Zd+dd Zd,d"d#Zd+d$d%Zd&d' Zd(S )-r   paths	List[str]r   boolr   c                C  s    || _ || _|| _|  | _d S N)_MultipartByteStream__paths_MultipartByteStream__remote_MultipartByteStream__headlessread_line_stream!_MultipartByteStream__line_stream)r   r0   r   r   r   r   r   __init__5   s   zMultipartByteStream.__init__c                 C  s   | S r3   r   r   r   r   r   	__enter__;      zMultipartByteStream.__enter__argsr   kwargsc                 O     d S r3   r   )r   r=   r>   r   r   r   __exit__>   r<   zMultipartByteStream.__exit__c                 C  s   | j S r3   )r5   r:   r   r   r   r   A   s   zMultipartByteStream.remotec                 C     dS NFr   r:   r   r   r   closedE   s   zMultipartByteStream.closedc                 C  rA   NTr   r:   r   r   r   readableI   r<   zMultipartByteStream.readablec                 C  rA   rD   r   r:   r   r   r   seekableL   r<   zMultipartByteStream.seekablec                 C  rA   rB   r   r:   r   r   r   writableO   r<   zMultipartByteStream.writablec                 C  r?   r3   r   r:   r   r   r   closeR   r<   zMultipartByteStream.closec                 C  r?   r3   r   r:   r   r   r   flushU   r<   zMultipartByteStream.flushsizeintc                 C  s
   |  |S r3   )r    )r   rJ   r   r   r   read1X   s   
zMultipartByteStream.read1offsetc                 C  s   |dksJ |   | _d S )Nr   )r7   r8   )r   rM   r   r   r   seek[   s   zMultipartByteStream.seekc                 C  sB   d}	 z	|t | j7 }W n
 ty   Y |S w t||kr 	 |S q)N    )nextr8   StopIterationlen)r   rJ   resr   r   r   r    _   s   zMultipartByteStream.readc              	   c  s~    t | jddD ]4\}}t|d#}t |jddD ]\}}| js)|dkr)|dkr)q|V  qW d    n1 s7w   Y  qd S )Nr
   )start)r)   )	enumerater4   r   r   r6   )r   r   r)   r   line_numberliner   r   r   r7   j   s   z$MultipartByteStream.read_line_streamN)r0   r1   r   r2   r   r2   )r=   r   r>   r   )rJ   rK   )rM   rK   )r,   r-   r.   r9   r;   r@   propertyr   rC   rE   rF   rG   rH   rI   rL   rN   r    r7   r   r   r   r   r   4   s"    






r   )
__future__r   r"   typingr   r    r   r   	resourcesr   systemr	   r'   r   r   r   r   r   r   r   <module>   s    $