
    .Ph
                     8    d dl Z d dlZd dlZ G d d          ZdS )    Nc                   Z    e Zd ZdZddZed             Zedd            Zd Zd	 Z	d
 Z
dS )LFSStorez*Stores objects on disk, indexed by SHA256.returnNc                     || _         d S )N)path)selfr   s     K/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/dulwich/lfs.py__init__zLFSStore.__init__   s    			    c                 F   t           j                            |          st          j        |           t          j        t           j                            |d                     t          j        t           j                            |d                      | |          S )Ntmpobjects)osr   isdirmkdirjoin)clslfs_dirs     r	   createzLFSStore.create!   sv    w}}W%% 	HW
gu--...
gy11222s7||r   Fc                     t           j                            |j        d          }|r|                     |          S  | |          S )Nlfs)r   r   r   
controldirr   )r   repor   r   s       r	   	from_repozLFSStore.from_repo)   sA    ',,t66 	'::g&&&s7||r   c                 r    t           j                            | j        d|dd         |dd         |          S )Nr   r         )r   r   r   )r   shas     r	   	_sha_pathzLFSStore._sha_path0   s0    w||DIy#ac(C!HcJJJr   c                     	 t          |                     |          d          S # t          $ r}t          |          |d}~ww xY w)zOpen an object by sha.rbN)openr   FileNotFoundErrorKeyError)r   r   excs      r	   open_objectzLFSStore.open_object3   sP    	)s++T222  	) 	) 	)3--S(	)s   "% 
A?Ac                    t          j                    }t          j                            | j        d          }t          j        |dd          5 }|D ],}|                    |           |                    |           -|	                                 |j
        }ddd           n# 1 swxY w Y   |                     |                                          }t          j                            t          j                            |                    s1t          j        t          j                            |                     t          j        ||           |                                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   s           r	   write_objectzLFSStore.write_object:   sV   
 ndi//(V$uMMM 	QR  

5!!!GGIIIfG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ~~cmmoo..w~~bgood3344 	/K--...
	'4   }}s   AB''B+.B+)r   N)F)__name__
__module____qualname____doc__r
   classmethodr   r   r   r&   r>    r   r	   r   r      s        44      [    [K K K) ) )    r   r   )r,   r   r.   r   rD   r   r	   <module>rE      sT   ,  				 0 0 0 0 0 0 0 0 0 0r   