o
    Ni                     @   s   d 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 dd	lmZ d
dlmZ ddlmZ G dd deZedejfddZdS )z
Google Cloud Storage.
    N)cache)OptionalTuple)NotFound)DefaultCredentialsError)storage)Blob)DEFAULT_RETRY   _split_cloud_path   )SchemeClientc                       s   e Zd ZdZdeddf fddZdd Zdee fd	d
Zdee	 fddZ
dejddfddZde	de	defddZededeeef fddZededefddZ  ZS )GsClientgsresourcereturnNc                    s"   t  | t|| _d| _d S )NF)super__init__r   get_gcs_blobblob_loaded)selfr   	__class__ J/home/ubuntu/.local/lib/python3.10/site-packages/cached_path/schemes/gs.pyr      s   
zGsClient.__init__c              
   C   sF   | j s!z| j  d| _ W d S  ty  } zt| j|d }~ww d S )NT)r   r   reloadr   FileNotFoundErrorr   )r   excr   r   r   load   s   
zGsClient.loadc                 C   s   |    | jjp| jjS N)r    r   etagmd5_hashr   r   r   r   get_etag#   s   zGsClient.get_etagc                 C   s   |    | jjS r!   )r    r   sizer$   r   r   r   get_size'   s   zGsClient.get_size	temp_filec                 C   s   |    | jj|dtd d S )Nmd5)checksumretry)r    r   download_to_filer	   )r   r(   r   r   r   get_resource+   s   zGsClient.get_resourceindexlengthc                 C   s    |    | jj||| d dS )Nr   )startend)r    r   download_as_bytes)r   r.   r/   r   r   r   get_bytes_range/   s   zGsClient.get_bytes_rangec                 C   s
   t | dS )Nr   r   )r   r   r   r   split_gcs_path3   s   
zGsClient.split_gcs_pathc                 C   s,   t  }t| \}}||}||}|S r!   )_get_gcs_clientr   r4   bucketr   )r   
gcs_clientbucket_namegcs_pathr6   r   r   r   r   r   7   s
   

zGsClient.get_gcs_blob)__name__
__module____qualname__schemestrr   r    r   r%   intr'   ioBufferedWriterr-   bytesr3   staticmethodr   r4   r   r   __classcell__r   r   r   r   r      s    r   r   c                  C   s.   zt  } W | S  ty   t j } Y | S w r!   )r   Clientr   create_anonymous_client)clientr   r   r   r5   @   s   
r5   )__doc__r@   	functoolsr   typingr   r   google.api_core.exceptionsr   google.auth.exceptionsr   google.cloudr   google.cloud.storage.blobr   google.cloud.storage.retryr	   commonr   scheme_clientr   r   rE   r5   r   r   r   r   <module>   s    -