
    	                     2    d dl Z d dlZd dlZ G d de      Zy)    Nc                   J    e Zd ZdZd Zed        Zed	d       Zd Zd Z	d Z
y)
LFSStorez*Stores objects on disk, indexed by SHA256.c                     || _         y )N)path)selfr   s     lib/third_party/dulwich/lfs.py__init__zLFSStore.__init__   s	    	    c                 F   t         j                  j                  |      st        j                  |       t        j                  t         j                  j	                  |d             t        j                  t         j                  j	                  |d              | |      S )Ntmpobjects)osr   isdirmkdirjoin)clslfs_dirs     r   createzLFSStore.create    s^    ww}}W%HHW
gu-.
gy127|r
   c                     t         j                  j                  |j                  d      }|r| j	                  |      S  | |      S )Nlfs)r   r   r   
controldirr   )r   repor   r   s       r   	from_repozLFSStore.from_repo(   s6    '',,t6::g&&7|r
   c                 h    t         j                  j                  | j                  d|dd |dd |      S )Nr   r         )r   r   r   r   shas     r   	_sha_pathzLFSStore._sha_path/   s-    ww||DIIy#a(C!HcJJr
   c                 j    	 t        | j                  |      d      S # t        $ r t        |      w xY w)zOpen an object by sha.rb)openr   FileNotFoundErrorKeyErrorr   s     r   open_objectzLFSStore.open_object2   s6    	 s+T22  	 3-	 s    2c                    t        j                         }t        j                  j	                  | j                  d      }t        j                  |dd      5 }|D ]$  }|j                  |       |j                  |       & |j                          |j                  }ddd       | j                  |j                               }t        j                  j                  t        j                  j                  |            s2t        j                  t        j                  j                  |             t        j                   |       |j                         S # 1 sw Y   xY w)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_object9   s    
 nndii/((V$uMQR

5!   GGIffG N ~~cmmo.ww~~bggood34KK-.
		'4 }} NMs   AEE!N)F)__name__
__module____qualname____doc__r	   classmethodr   r   r   r%   r=    r
   r   r   r      sB    4    K r
   r   )r+   r   r-   objectr   rC   r
   r   <module>rE      s   *  	 0v 0r
   