o
    QDi
                     @  s   d dl mZ d dlZd dlmZmZ ddlmZ ddlmZ ddl	m
Z
m	Z	 dd	lmZ er4d d
lmZ G dd de
ZG dd dZdS )    )annotationsN)TYPE_CHECKINGOptional   )types)platform)Loadersystem   )RemoteControl)Sessionc                   @  s&   e Zd ZdZdZdd Zd
ddZd	S )RemoteLoaderzRemote loader implementation.Tc                 C  s|   | j jsJ tj| j j}t| j j}tj	}|j
}t|||d }|jr<tt }||  |d |}|S )N)sessiontimeoutr   )resourcenormpathr   requests_utilsrequote_urir   from_dialectdialectr	   http_sessionhttp_timeoutRemoteByteStreamopenhttp_preloadioBufferedRandomBytesIOwritereadseek)selfpathcontrolr   r   byte_streambuffer r&   [/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/schemes/remote/loader.pyread_byte_stream_create   s   
z$RemoteLoader.read_byte_stream_creater$   types.IByteStreamc                 C  sR   | j jsJ | j j d| j j }| j j|d}tjj|||id}|  |S )N. )files)	r   r   nameformatreplacer	   r   postraise_for_status)r!   r$   fileurlresponser&   r&   r'   write_byte_stream_save&   s   z#RemoteLoader.write_byte_stream_saveN)r$   r)   )__name__
__module____qualname____doc__remoter(   r5   r&   r&   r&   r'   r      s
    r   c                   @  s   e Zd Zd(ddZd	d
 Zdd Zdd Zdd Zedd Z	dd Z
dd Zdd Zdd Zd)d*ddZd)d+d d!Zd,d-d%d&Zd'S ).r   sourcestrr   r   r   intc                C  s   || _ || _|| _d S N)_RemoteByteStream__source_RemoteByteStream__session_RemoteByteStream__timeout)r!   r;   r   r   r&   r&   r'   __init__3   s   
zRemoteByteStream.__init__c                 c  s*    	 |  d}|sd S |jddE d H  q)NTi    )keepends)r   
splitlines)r!   bytesr&   r&   r'   __iter__8   s   
zRemoteByteStream.__iter__c                 C     dS NTr&   r!   r&   r&   r'   readable?      zRemoteByteStream.readablec                 C  rG   )NFr&   rI   r&   r&   r'   writableB   rK   zRemoteByteStream.writablec                 C  rG   rH   r&   rI   r&   r&   r'   seekableE   rK   zRemoteByteStream.seekablec                 C  s   | j S r>   _RemoteByteStream__closedrI   r&   r&   r'   closedH   s   zRemoteByteStream.closedc                 C  s   d| _ | d | S )NFr   )rO   r    rI   r&   r&   r'   r   L   s   
zRemoteByteStream.openc                 C  s
   d| _ d S rH   rN   rI   r&   r&   r'   closeQ      
zRemoteByteStream.closec                 C  s   | j j S r>   )_RemoteByteStream__responserawtellrI   r&   r&   r'   rU   T   s   zRemoteByteStream.tellc                 C  s   d S r>   r&   rI   r&   r&   r'   flushW   rK   zRemoteByteStream.flushsizeOptional[int]c                 C  s   |dkrd }| j j|S )NrW   )rS   rT   r   r!   rX   r&   r&   r'   r   Z   s   zRemoteByteStream.readc                 C  s
   |  |S r>   )r   rZ   r&   r&   r'   read1_   rR   zRemoteByteStream.read1r   offsetwhencec                 C  sH   |dksJ |dksJ | j j| jd| jd| _| j  d| jj_d S )Nr   T)streamr   )r@   getr?   rA   rS   r1   rT   decode_content)r!   r\   r]   r&   r&   r'   r    b   s   

zRemoteByteStream.seekN)r;   r<   r   r   r   r=   )rW   )rX   rY   )rX   r=   )r   )r\   r=   r]   r=   )r6   r7   r8   rB   rF   rJ   rL   rM   propertyrP   r   rQ   rU   rV   r   r[   r    r&   r&   r&   r'   r   2   s    

r   )
__future__r   r   typingr   r   r+   r   r   r	   r   r#   r   requestsr   r   r   r&   r&   r&   r'   <module>   s    #