U
    9%e^                     @   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ed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   S/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/triton/runtime/cache.pydefault_cache_dir	   s    r   c                   @   s   e Zd Zdd Zeee dddZeedddZ	ededd	d
Z
eeeeeef  dddZeeeeef dddZdS )CacheManagerc                 C   s   d S Nr   selfkeyr   r   r   __init__   s    zCacheManager.__init__returnc                 C   s   d S r   r   r   filenamer   r   r   get_file   s    zCacheManager.get_filec                 C   s   d S r   r   r   r   r   r   has_file   s    zCacheManager.has_fileTc                 C   s   d S r   r   )r   datar   binaryr   r   r   put   s    zCacheManager.putr   r   c                 C   s   d S r   r   r   r   r   r   	get_group   s    zCacheManager.get_groupr   groupc                 C   s   d S r   r   )r   r   r!   r   r   r   	put_group!   s    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edddZdd Zee ddd	Zeee	eef  d
ddZ
ee	eef dddZdedddZdS )FileCacheManagerc                 C   s^   || _ d | _tjdt | _| jrZtj| j| j | _tj| jd| _tj	| jdd 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 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 5 Q R X |dd }|d krXd S i }|D ]8}| |}	tj|	st	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 k	s.t| |}tdd}t	
 }| d| d| }|rhdnd}t||}	|	| W 5 Q R X t	|| |S )Nr   i@B z	.tmp.pid__wbw)r.   
isinstancebytesr&   r+   AssertionErrorr0   randomrandintr   getpidr5   writereplace)
r   r   r   r   filepathZrnd_idpidZ	temp_pathmoder:   r   r   r   r   Z   s    

zFileCacheManager.putN)T)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 k	rT|tkrTd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_managerrS   module_pathZclz_nmemoduler   r   r   get_cache_manageru   s    

rZ   )r6   r   rH   abcr   r   pathlibr   typingr   r   r   r   r(   rW   rR   rZ   r   r   r   r   <module>   s   K