o
    Uh
                     @   s*   d dl Z d dlZd dlZG dd dZdS )    Nc                   @   sL   e Zd ZdZdddZedd Zedd	d
Zdd Zdd Z	dd Z
dS )LFSStorez*Stores objects on disk, indexed by SHA256.returnNc                 C   s
   || _ d S )N)path)selfr    r   _/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/dulwich/lfs.py__init__   s   
zLFSStore.__init__c                 C   sF   t j|st | t t j|d t t j|d | |S )Ntmpobjects)osr   isdirmkdirjoin)clslfs_dirr   r   r   create!   s
   
zLFSStore.createFc                 C   s&   t j|jd}|r| |S | |S )Nlfs)r   r   r   
controldirr   )r   repor   r   r   r   r   	from_repo)   s   
zLFSStore.from_repoc                 C   s&   t j| jd|dd |dd |S )Nr
   r         )r   r   r   )r   shar   r   r   	_sha_path0   s   &zLFSStore._sha_pathc              
   C   s6   z	t | |dW S  ty } zt||d}~ww )zOpen an object by sha.rbN)openr   FileNotFoundErrorKeyError)r   r   excr   r   r   open_object3   s   
zLFSStore.open_objectc                 C   s   t  }tj| jd}tj|ddd}|D ]}|| || q|	  |j
}W d   n1 s5w   Y  | | }tjtj|sTttj| t|| | S )z6Write an object.

        Returns: object SHA
        r	   wbF)dirmodedeleteN)hashlibsha256r   r   r   tempfileNamedTemporaryFileupdatewriteflushnamer   	hexdigestexistsdirnamemakedirsrename)r   chunksr   tmpdirfchunktmppathr   r   r   r   write_object:   s   
zLFSStore.write_object)r   N)F)__name__
__module____qualname____doc__r   classmethodr   r   r   r   r6   r   r   r   r   r      s    

r   )r$   r   r&   r   r   r   r   r   <module>   s   