
    .Phb                     Z    d Z ddlZddlZddlmZ ddlmZmZmZm	Z	  G d de          Z
dS )zStorage of repositories on GCS.    N   )BucketBasedObjectStore)PACK_SPOOL_FILE_MAX_SIZEPackPackDataload_pack_index_filec                   V     e Zd Zdd fdZdefdZddZd Zd Zd	 Z	d
 Z
ddZ xZS )GcsObjectStore returnNc                 d    t                                                       || _        || _        d S N)super__init__bucketsubpath)selfr   r   	__class__s      Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/dulwich/cloud/gcs.pyr   zGcsObjectStore.__init__#   s+        c                 P    t          |           j         d| j        d| j        dS )N(z
, subpath=))type__name__r   r   )r   s    r   __repr__zGcsObjectStore.__repr__(   s.    t**%RRRRRRRRr   c                 X      j                              fddD                        d S )Nc                 P    g | ]"}t          j        j                  d z   |z   #S ).)	posixpathjoinr   ).0extnamer   s     r   
<listcomp>z/GcsObjectStore._remove_pack.<locals>.<listcomp>-   s1    WWWY^DL$//#5;WWWr   )packidx)r   delete_blobsr   r$   s   ``r   _remove_packzGcsObjectStore._remove_pack+   sB      WWWWWWWW	
 	
 	
 	
 	
r   c              #   f  K   i }| j                             | j                  D ]e}t          j        t          j        |j                            \  }}|                    |t                                	                    |           f|
                                D ]\  }}|ddhk    r|V  d S )N)prefix.pack.idx)r   
list_blobsr   r    splitextbasenamer$   
setdefaultsetadditems)r   packsblobr$   r#   extss         r   _iter_pack_nameszGcsObjectStore._iter_pack_names0   s      K**$,*?? 	3 	3D!*9+=di+H+HIIID#T355))--c2222++-- 	 	JD$(((


	 	r   c                    | j                             t          j        | j        |dz                       }t          j        t                    }|                    |           |	                    d           t          |dz   |          S )Nr-   max_sizer   )r   r7   r    r!   r   tempfileSpooledTemporaryFiler   download_to_fileseekr   r   r$   bfs       r   _load_pack_datazGcsObjectStore._load_pack_data9   st    KY^DL$.IIJJ)3KLLL	1	q			w***r   c                    | j                             t          j        | j        |dz                       }t          j        t                    }|                    |           |	                    d           t          |dz   |          S )Nr.   r;   r   )r   r7   r    r!   r   r=   r>   r   r?   r@   r   rA   s       r   _load_pack_indexzGcsObjectStore._load_pack_index@   st    KY^DL$-HHII)3KLLL	1	q			#D6M1555r   c                 @     t          j         fd fd          S )Nc                  .                                    S r   )rD   r$   r   s   r   <lambda>z*GcsObjectStore._get_pack.<locals>.<lambda>I   s    D((.. r   c                  .                                    S r   )rF   rI   s   r   rJ   z*GcsObjectStore._get_pack.<locals>.<lambda>I   s    8M8Md8S8S r   )r   from_lazy_objectsr)   s   ``r   	_get_packzGcsObjectStore._get_packG   s7    %.....0S0S0S0S0S
 
 	
r   c                 .   | j                             t          j        | j        |dz                       }| j                             t          j        | j        |dz                       }|                    |           |                    |           d S )Nr.   r-   )r   r7   r    r!   r   upload_from_file)r   r1   	pack_file
index_fileidxblobdatablobs         r   _upload_packzGcsObjectStore._upload_packL   s    +""9>$,6@Q#R#RSS;##IN4<GAS$T$TUU  ,,,!!),,,,,r   )r   )r   N)r   
__module____qualname__r   strr   r*   r9   rD   rF   rM   rT   __classcell__)r   s   @r   r
   r
   "   s              
S# S S S S
 
 
 

  + + +6 6 6
 
 

- - - - - - - -r   r
   )__doc__r    r=   object_storer   r&   r   r   r   r   r
    r   r   <module>r\      s   . & %      1 1 1 1 1 1 Q Q Q Q Q Q Q Q Q Q Q Q
.- .- .- .- .-+ .- .- .- .- .-r   