o
    RDiq                     @  s   d dl m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
mZ ddlmZ ddlmZ er8dd	lmZ eeZG d
d deZdS )    )annotationsN)	getLogger)TYPE_CHECKINGAny   )
FileHeaderResultStatus)SnowflakeStorageClient)requests)SnowflakeFileMetac                      sl   e Zd Z	d$d% fddZd&ddZd'ddZd(ddZd)ddZd( fddZd*d d!Z	d(d"d#Z
  ZS )+SnowflakeLocalStorageClientFmetar   
stage_infodict[str, Any]
chunk_sizeintunsafe_file_writeboolreturnNonec                   s   t  j||||d |j| _tj|d tj|j| _	|j
rH| j}|dr.|dd  }tj|d || _tj|j
tj|j| _	d S d S )N)r   location/r   )super__init__src_file_name	data_fileospathjoinbasenamedst_file_namefull_dst_file_namelocal_location
startswithstage_file_name)selfr   r   r   r   r   	__class__ a/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/connector/local_storage_client.pyr      s$   

z$SnowflakeLocalStorageClient.__init__filenamestrFileHeader | Nonec                 C  s$   t j|rtdt |jdS dS )zu
        Notes:
            Checks whether the file exits in specified directory, does not return FileHeader
        N)r   r   isfiler   statst_size)r%   r*   r(   r(   r)   get_file_header-   s   z+SnowflakeLocalStorageClient.get_file_headerchunk_idc              	   C  s   t | jdX}t tj| jjtj| jd.}| j	dkr&|
|  n||| j  ||| j  |
|| j W d    n1 sIw   Y  W d    d S W d    d S 1 saw   Y  d S )Nrbrb+r   )openr$   r   r   r   r   r"   r   intermediate_dst_pathnum_of_chunkswritereadseekr   )r%   r1   sfdtfdr(   r(   r)   download_chunk6   s&   
"z*SnowflakeLocalStorageClient.download_chunkc                 C  s0   t | j| j t| jj| j_t	j
| j_d S N)shutilmover5   r!   r   r.   r/   r   dst_file_sizer   
DOWNLOADEDresult_statusr%   r(   r(   r)   finish_downloadF   s   z+SnowflakeLocalStorageClient.finish_downloadresponserequests.Responsec                 C  s   dS )NFr(   )r%   rE   r(   r(   r)   _has_expired_tokenK   s   z.SnowflakeLocalStorageClient._has_expired_tokenc                   sJ   t    t| jd}|| jj W d    d S 1 sw   Y  d S )Nzwb+)r   prepare_uploadr4   r!   truncater   upload_size)r%   fdr&   r(   r)   rH   N   s   
"z*SnowflakeLocalStorageClient.prepare_uploadchunkbytesc                 C  sL   t | jd}||| j  || W d    d S 1 sw   Y  d S )Nr3   )r4   r!   r9   r   r7   )r%   r1   rL   r;   r(   r(   r)   _upload_chunkS   s   "z)SnowflakeLocalStorageClient._upload_chunkc                 C  s   t j| j_| jj| j_d S r=   )r   UPLOADEDr   rB   rJ   r@   rC   r(   r(   r)   finish_uploadX   s   
z)SnowflakeLocalStorageClient.finish_upload)F)
r   r   r   r   r   r   r   r   r   r   )r*   r+   r   r,   )r1   r   r   r   )r   r   )rE   rF   r   r   )r1   r   rL   rM   r   r   )__name__
__module____qualname__r   r0   r<   rD   rG   rH   rN   rP   __classcell__r(   r(   r&   r)   r      s    

	


r   )
__future__r   r   r>   loggingr   typingr   r   	constantsr   r   storage_clientr	   vendoredr
   file_transfer_agentr   rQ   loggerr   r(   r(   r(   r)   <module>   s   