o
    !2gU
                     @   s`   d dl Z d dlZd dlmZ d dlmZmZmZmZ ddl	m
Z
 ddl	mZ G dd	 d	eZdS )
    N)Path)BinaryIOIteratorOptionalSequence   )
SourceHash   )AbstractBackendc                   @   s   e Zd ZU eed< eed< ee ed< ee ed< dedejddfd	d
Z	dddZ
d ddZdee fddZdee fddZdee fddZdefddZdeddfddZdee ddfddZdeddfddZdS )!FileBackendjsonl	jsonl_tmpjsonl_frjsonl_tmp_fw
cache_pathloggerreturnNc                C   s0   || _ || _tt| jd | _d | _d | _d S )Nz.tmp)r   r   r   strr   r   r   )selfr   r    r   K/home/garg/my-data/venv/lib/python3.10/site-packages/cachew/backend/file.py__init__   s
   
zFileBackend.__init__c                 C   s0   z
| j d| _W | S  ty   d | _Y | S w )Nrb)r   openr   FileNotFoundErrorr   r   r   r   	__enter__   s   zFileBackend.__enter__c                 G   s>   | j d ur| jjdd | j   | jd ur| j  d S d S )NT)
missing_ok)r   r   unlinkcloser   )r   argsr   r   r   __exit__$   s   


zFileBackend.__exit__c                 C   s(   | j d u rd S | j  d}|dS )N   
utf8)r   readlinerstripdecode)r   	hash_liner   r   r   get_old_hash0   s   

zFileBackend.get_old_hashc                 C   s   d S Nr   r   r   r   r   cached_blobs_total6   s   zFileBackend.cached_blobs_totalc                 c   s     | j d usJ | j E d H  d S r)   )r   r   r   r   r   cached_blobs;   s   zFileBackend.cached_blobsc                 C   s0   z
| j d| _W dS  ty   d | _Y dS w )NxbFT)r   r   r   FileExistsErrorr   r   r   r   get_exclusive_write?   s   zFileBackend.get_exclusive_writenew_hashc                 C   s(   | j d usJ | j |dd  d S )Nr#   r"   )r   writeencoder   r/   r   r   r   write_new_hashI   s   zFileBackend.write_new_hashchunkc                 C   s4   | j }|d us	J |D ]}|| |d qd S )Nr"   )r   r0   )r   r4   fwblobr   r   r   flush_blobsM   s   
zFileBackend.flush_blobsc                 C   s   | j | j d S r)   )r   renamer   r2   r   r   r   finalizeT   s   zFileBackend.finalize)r   r   )r   N)__name__
__module____qualname__r   __annotations__r   r   loggingLoggerr   r   r!   r   r(   intr*   r   bytesr+   boolr.   r3   r   r7   r9   r   r   r   r   r      s   
 


r   )r>   ospathlibr   typingr   r   r   r   commonr   r
   r   r   r   r   r   <module>   s    