o
    i^                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
 dd ZG dd deZG d	d
 d
eZeadadefddZdS )    N)ABCabstractmethod)Path)DictOptionalc                   C   s   t jt ddS )Nz.tritoncache)ospathjoinr   home r   r   c/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/triton/runtime/cache.pydefault_cache_dir	   s   r   c                   @   s   e Zd Zdd Zedee fddZedefddZ	eddefd	d
Z
ededeeeef  fddZededeeef fddZdS )CacheManagerc                 C      d S Nr   selfkeyr   r   r   __init__   s   zCacheManager.__init__returnc                 C   r   r   r   r   filenamer   r   r   get_file      zCacheManager.get_filec                 C   r   r   r   r   r   r   r   has_file   r   zCacheManager.has_fileTc                 C   r   r   r   )r   datar   binaryr   r   r   put   r   zCacheManager.putr   c                 C   r   r   r   r   r   r   r   	get_group   r   zCacheManager.get_groupgroupc                 C   r   r   r   )r   r   r    r   r   r   	put_group!   r   zCacheManager.put_groupNT)__name__
__module____qualname__r   r   r   strr   boolr   r   r   r   r!   r   r   r   r   r      s      r   c                   @   s   e Zd Zdd ZdefddZdd Zdee fdd	Zd
edee	eef  fddZ
d
ede	eef fddZddefddZdS )FileCacheManagerc                 C   sb   || _ d | _tjdt | _| jr/tj| j| j | _tj| jd| _tj	| jdd d S d S )NZTRITON_CACHE_DIRlockT)exist_ok)
r   	lock_pathr   environgetr   	cache_dirr	   r
   makedirsr   r   r   r   r   '   s   zFileCacheManager.__init__r   c                 C   s   t j| j|S r   )r   r	   r
   r.   r   r   r   r   
_make_path1   s   zFileCacheManager._make_pathc                 C   s   | j sdS tj| |S )NF)r.   r   r	   existsr0   r   r   r   r   r   4   s   zFileCacheManager.has_filec                 C   s   |  |r
| |S d S r   )r   r0   r   r   r   r   r   9   s   

zFileCacheManager.get_filer   c           
      C   s   d| }|  |sd S | |}t|}t|}W d    n1 s%w   Y  |dd }|d u r6d S i }|D ]}| |}	tj|	sRt	d|	 d| d|	||< q:|S )N__grp__child_pathszGroup file z does not exist from group  )
r   r0   openjsonloadr-   r   r	   r1   	Exception)
r   r   grp_filenameZgrp_filepathfZgrp_datar3   resultcpr   r   r   r   ?   s"   





zFileCacheManager.get_groupr    c                 C   s>   | j sd S tdtt| i}d| }| j||ddS )Nr3   r2   F)r   )r.   r6   dumpssortedlistkeysr   )r   r   r    Zgrp_contentsr9   r   r   r   r!   S   s
   
zFileCacheManager.put_groupTc           
      C   s   | j sd S t|t}|st|}| jd usJ | |}tdd}t	 }| d| d| }|r4dnd}t
||}	|	| W d    n1 sKw   Y  t|| |S )Nr   i@B z	.tmp.pid__wbw)r.   
isinstancebytesr&   r+   r0   randomrandintr   getpidr5   writereplace)
r   r   r   r   filepathZrnd_idpidZ	temp_pathmoder:   r   r   r   r   Z   s    

zFileCacheManager.putNr"   )r#   r$   r%   r   r&   r0   r   r   r   r   r   r!   r   r   r   r   r   r(   &   s    
r(   DEFAULTr   c                 C   s\   dd l }|jdd }|d ur*|tkr*dd l}|d\}}||}t||a|at| S )Nr   ZTRITON_CACHE_MANAGER:)	r   r,   r-   __cache_cls_nme	importlibsplitimport_modulegetattr__cache_cls)r   r   Zuser_cache_managerrR   module_pathZclz_nmemoduler   r   r   get_cache_manageru   s   

rY   )r6   r   rG   abcr   r   pathlibr   typingr   r   r   r   r(   rV   rQ   rY   r   r   r   r   <module>   s    K