o
    Uhb                     @   sL   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 deZ
dS )zStorage of repositories on GCS.    N   )BucketBasedObjectStore)PACK_SPOOL_FILE_MAX_SIZEPackPackDataload_pack_index_filec                       sb   e Zd Zdd fddZdefddZddd	Zd
d Zdd Zdd Z	dd Z
dddZ  ZS )GcsObjectStore returnNc                    s   t    || _|| _d S N)super__init__bucketsubpath)selfr   r   	__class__ e/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/dulwich/cloud/gcs.pyr   #   s   

zGcsObjectStore.__init__c                 C   s    t | j d| jd| jdS )N(z
, subpath=))type__name__r   r   )r   r   r   r   __repr__(   s    zGcsObjectStore.__repr__c                    s    j  fdddD  d S )Nc                    s"   g | ]}t j d  | qS ).)	posixpathjoinr   ).0extnamer   r   r   
<listcomp>-   s   " z/GcsObjectStore._remove_pack.<locals>.<listcomp>)packidx)r   delete_blobsr   r    r   r   r   _remove_pack+   s   zGcsObjectStore._remove_packc                 c   sn    i }| j j| jdD ]}tt|j\}}||t 	| q|
 D ]\}}|ddhkr4|V  q'd S )N)prefix.pack.idx)r   
list_blobsr   r   splitextbasenamer    
setdefaultsetadditems)r   packsblobr    r   extsr   r   r   _iter_pack_names0   s   zGcsObjectStore._iter_pack_namesc                 C   H   | j t| j|d }tjtd}|| |	d t
|d |S )Nr(   max_sizer   )r   r2   r   r   r   tempfileSpooledTemporaryFiler   download_to_fileseekr   r   r    bfr   r   r   _load_pack_data9   
   

zGcsObjectStore._load_pack_datac                 C   r5   )Nr)   r6   r   )r   r2   r   r   r   r8   r9   r   r:   r;   r   r<   r   r   r   _load_pack_index@   r@   zGcsObjectStore._load_pack_indexc                    s    t  fdd fddS )Nc                      
     S r   )r?   r   r   r   r   <lambda>I      
 z*GcsObjectStore._get_pack.<locals>.<lambda>c                      rB   r   )rA   r   r   r   r   rC   I   rD   )r   from_lazy_objectsr%   r   r   r   	_get_packG   s   zGcsObjectStore._get_packc                 C   sL   | j t| j|d }| j t| j|d }|| || d S )Nr)   r(   )r   r2   r   r   r   upload_from_file)r   r,   	pack_file
index_fileidxblobdatablobr   r   r   _upload_packL   s   
zGcsObjectStore._upload_pack)r	   )r
   N)r   
__module____qualname__r   strr   r&   r4   r?   rA   rF   rL   __classcell__r   r   r   r   r   "   s    
	r   )__doc__r   r8   object_storer   r"   r   r   r   r   r   r   r   r   r   <module>   s   