� 2��g&��,�ddlZddlZddlZddlZddlmZmZddlmZddl m Z m Z m Z ddl Z d�Zd�Zd�ZGd�d e��ZGd �d e��ZGd �d ��ZGd�de��ZGd�de��Zeadadefd�Zdefd�Zdefd�Zd�ZdS)�N)�ABC�abstractmethod)�Path)�Dict�List�Optionalc�f�tj�tj��dd��S)N�.triton�cache��os�path�joinr�home���d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/triton/runtime/cache.py�default_cache_dirr s �� �7�<�<�� � � �Y�� 8� 8�8rc�f�tj�tj��dd��S)Nr �overrider rrr�default_override_dirrs �� �7�<�<�� � � �Y� � ;� ;�;rc�f�tj�tj��dd��S)Nr �dumpr rrr�default_dump_dirrs �� �7�<�<�� � � �Y�� 7� 7�7rc���eZdZd�Zedeefd���Zed defd���Zededee eeffd���Z edede eeffd ���Z d S) � CacheManagerc��dS�Nr��self�keys r�__init__zCacheManager.__init__��� �r�returnc��dSrr�r �filenames r�get_filezCacheManager.get_file��� �rTc��dSrr�r �datar'�binarys r�putzCacheManager.put r)rr'c��dSrrr&s r� get_groupzCacheManager.get_group$r)r�groupc��dSrr)r r'r1s r� put_groupzCacheManager.put_group(r)rN�T) �__name__� __module__� __qualname__r"rr�strr(r.rr0r3rrrrrs������� � � �� �H�S�M� � � ��^� �� � �#� � � ��^� �� �#� �(�4��S��>�*B� � � ��^� �� �#� �d�3��8�n� � � ��^� � � rrc��eZdZdd�Zdefd�Zdefd�Zdeefd�Z dedee eeffd�Z ded e eefdefd �Z ddefd �Z d S)�FileCacheManagerFc�L�||_d|_|r�t��|_tj�|j|j��|_tj�|jd��|_t j|jd���dS|rDt��|_tj�|j|j��|_dSt j dd��� ��p t��|_|jrvtj�|j|j��|_tj�|jd��|_t j|jd���dStd���)N�lockT)�exist_ok�TRITON_CACHE_DIR��$Could not create or locate cache dir) r!� lock_pathr� cache_dirr rr�makedirsr�getenv�stripr� RuntimeError)r r!rrs rr"zFileCacheManager.__init__/sE�������� � K�-�/�/�D�N��W�\�\�$�.�$�(�C�C�D�N��W�\�\�$�.�&�A�A�D�N� �K���� 6� 6� 6� 6� 6� 6� � K�1�3�3�D�N��W�\�\�$�.�$�(�C�C�D�N�N�N� �Y�'9�2�>�>�D�D�F�F�]�J[�J]�J]�D�N��~� K�!#����d�n�d�h�!G�!G���!#����d�n�f�!E�!E���� �D�N�T�:�:�:�:�:�:�"�#I�J�J�Jrr$c�L�tj�|j|��Sr)r rrrBr&s r� _make_pathzFileCacheManager._make_pathDs���w�|�|�D�N�H�5�5�5rc��|jstd���tj�|�|����S)Nr@)rBrFr r�existsrHr&s r�has_filezFileCacheManager.has_fileGs<���~� G��E�F�F� F��w�~�~�d�o�o�h�7�7�8�8�8rc�Z�|�|��r|�|��SdSr)rKrHr&s rr(zFileCacheManager.get_fileLs-�� �=�=�� "� "� ��?�?�8�,�,� ,��4rr'c��d|��}|�|��sdS|�|��}t|��5}tj|��}ddd��n #1swxYwY|�dd��}|�dSi}|���D])\}} tj� | ��r| ||<�*|S�N�__grp__� child_paths) rKrH�open�json�load�get�itemsr rrJ) r r'� grp_filename� grp_filepath�f�grp_datarP�result�c�ps rr0zFileCacheManager.get_groupRs ��+��+�+� ��}�}�\�*�*� ��4����|�4�4� � �,� � � $�1��y��|�|�H� $� $� $� $� $� $� $� $� $� $� $���� $� $� $� $��l�l�=�$�7�7� � � ��4����%�%�'�'� � �D�A�q��w�~�~�a� � � ���q� ��� s�A"�"A&�)A&r1c��|jstd���tjd|i��}d|��}|�||d���S)Nr@rPrOF�r-)rBrFrR�dumpsr.�r r'r1� grp_contentsrVs rr3zFileCacheManager.put_groupdsU���~� G��E�F�F� F��z�=�%�"8�9�9� �+��+�+� ��x�x� �l�5�x�A�A�ArTc���|jstd���t|t��}|st |��}|j�J�|�|��}t tj����}tj ��}|�d|�d|��}|rdnd}t||��5} | � |��ddd��n #1swxYwYtj ||��|S)Nr@z .tmp.pid_�_�wb�w)rBrF� isinstance�bytesr8rArH�uuid�uuid4r �getpidrQ�write�replace) r r,r'r-�filepath�rnd_id�pid� temp_path�moderXs rr.zFileCacheManager.putks.���~� G��E�F�F� F��D�%�(�(��� ��t�9�9�D��~�)�)�)��?�?�8�,�,���T�Z�\�\�"�"���i�k�k���8�8�#�8�8��8�8� ��&�t�t�3�� �)�T� "� "� �a� �G�G�D�M�M�M� � � � � � � � � � � ���� � � � � � �9�h�'�'�'��s�.C�C�CN�FFr4)r5r6r7r"r8rH�boolrKrr(rr0r3r.rrrr:r:-s������K�K�K�K�*6�c�6�6�6�6�9�D�9�9�9�9� �H�S�M����� �#��(�4��S��>�*B�����$B�#�B�d�3��8�n�B��B�B�B�B���#������rr:c�z�eZdZdZdefd�Zedeedeee ffd���Z edede fd ���Z d S) �RemoteCacheBackendzL A backend implementation for accessing a remote/distributed cache. r!c��dSrrrs rr"zRemoteCacheBackend.__init__�r#r� filenamesr$c��dSrr)r rws rrTzRemoteCacheBackend.get�r)rr'r,c��dSrr�r r'r,s rr.zRemoteCacheBackend.put�r)rN) r5r6r7�__doc__r8r"rrrrgrTr.rrrruru�s��������� �C� � � � �� �T�#�Y� �4��U� �+;� � � ��^� �� �C� �u� � � ��^� � � rruc�t�eZdZd�Zdedefd�Zdeedeeeffd�Zdede deee ffd�Z d S) �RedisRemoteCacheBackendc �0�ddl}||_tj�dd��|_|�tj�dd��ttj�dd�������|_dS) Nr�TRITON_REDIS_KEY_FORMATztriton:{key}:{filename}�TRITON_REDIS_HOST� localhost�TRITON_REDIS_PORTi�)�host�port) �redis�_keyr �environrT�_key_fmt�Redis�int�_redis)r r!r�s rr"z RedisRemoteCacheBackend.__init__�sy��� � � ��� �� ���'@�B[�\�\�� ��k�k����� 3�[�A�A��R�Z�^�^�$7��>�>�?�?�"� � �� � � rr'r$c�D�|j�|j|���S)N)r!r')r��formatr�r&s r�_get_keyz RedisRemoteCacheBackend._get_key�s���}�#�#�� �H�#�E�E�Errwc����j��fd�|D����}d�t||��D��S)Nc�:��g|]}��|����Sr)r�)�.0rXr s �r� <listcomp>z/RedisRemoteCacheBackend.get.<locals>.<listcomp>�s%���#H�#H�#H��D�M�M�!�$4�$4�#H�#H�#Hrc��i|] \}}|�||�� Srr)r�r'rZs r� <dictcomp>z/RedisRemoteCacheBackend.get.<locals>.<dictcomp>�s%��g�g�g�%5�X�v�TZ�Tf��&�Tf�Tf�Tfr)r��mget�zip)r rw�resultss` rrTzRedisRemoteCacheBackend.get�sK����+�"�"�#H�#H�#H�#H�i�#H�#H�#H�I�I��g�g��Y��9P�9P�g�g�g�grr,c�b�|j�|�|��|��dSr)r��setr�rzs rr.zRedisRemoteCacheBackend.put�s*�� � ���� � �h�/�/��6�6�6�6�6rN) r5r6r7r"r8r�rrrTrgr.rrrr}r}�s������� � � �F��F��F�F�F�F�h�T�#�Y�h�4��S��>�h�h�h�h�7�C�7�u�7��c�5�j�1A�7�7�7�7�7�7rr}c��eZdZdd�Zdedefd�Zdedeefd�Zddedefd �Z dedee eeffd �Z ded e eeffd �Z d S)�RemoteCacheManagerFc� �tjd}|�d��\}}tj|��}t ||��}||��|_||_||_t|||���|_ dS)N�TRITON_REMOTE_CACHE_BACKEND�:)rr) r r��split� importlib� import_module�getattr�_backend� _override�_dumpr:�_file_cache_manager) r r!rr�remote_cache_manager� module_path�clz_nme�module�remote_cache_clss rr"zRemoteCacheManager.__init__�s���!�z�*G�H��3�9�9�#�>�>�� �W��(��5�5��"�6�7�3�3��(�(��-�-�� �!����� �$4�C�(�QU�#V�#V�#V�� � � rr'r,c�<�|j�||d���S)NTr^)r�r.rzs r� _materializezRemoteCacheManager._materialize�s ���'�+�+�D�(�4�+�H�H�Hrr$c��|js|jr|j�|��S|j�|g��}t |��dkrdS|���\\}}|�||��S)Nr) r�r�r�r(r�rT�lenrUr�)r r'r�rcr,s rr(zRemoteCacheManager.get_file�s��� �:� ?��� ?��+�4�4�X�>�>� >� �-�#�#�X�J�/�/�� �w�<�<�1� � ��4��]�]�_�_� � ��D�� � ��4�0�0�0rTc�(�|js|jr|j�|||���St |t ��s"t |���d��}|j�||��|� ||��S)Nr^�utf-8) r�r�r�r.rfrgr8�encoder�r�r+s rr.zRemoteCacheManager.put�s��� �:� O��� O��+�/�/��h�v�/�N�N� N��$��&�&� -��t�9�9�#�#�G�,�,�D� � ���(�D�)�)�)�� � ��4�0�0�0rc���|js|jr|j�|��Sd|��}|�|��}|�dSt |��5}t j|��}ddd��n #1swxYwY|�dd��}d}|�Mi}|j �|��� ��D]\}} |� || ��||<�|SrN) r�r�r�r0r(rQrRrSrTr�rUr�) r r'rVrWrXrYrPrZ� child_pathr,s rr0zRemoteCacheManager.get_group�s=�� �:� @��� @��+�5�5�h�?�?� ?�+��+�+� ��}�}�\�2�2� � � ��4� �,� � � $�1��y��|�|�H� $� $� $� $� $� $� $� $� $� $� $���� $� $� $� $��l�l�=�$�7�7� ��� � "��F�$(�M�$5�$5�k�$B�$B�$H�$H�$J�$J� I� I� � �D�%)�%6�%6�z�4�%H�%H��z�"�"�� s�A7�7A;�>A;r1c ��|js|jr|j�||��St jdt t|�������i��}d|��}|� ||��S)NrPrO) r�r�r�r3rRr_�sorted�list�keysr.r`s rr3zRemoteCacheManager.put_group�s}�� �:� G��� G��+�5�5�h��F�F� F��z�=�&��e�j�j�l�l�9K�9K�2L�2L�"M�N�N� �+��+�+� ��x�x� �l�3�3�3rNrrr4) r5r6r7r"r8rgr�rr(r.rr0r3rrrr�r��s������� W� W� W� W�I�S�I��I�I�I�I� 1�� 1��#�� 1� 1� 1� 1�1�1�#�1�s�1�1�1�1��#��(�4��S��>�*B�����.4�#�4�d�3��8�n�4�4�4�4�4�4rr��DEFAULTr$c���ddl}|j�dd��}|�I|tkr>|�d��\}}t j|��}t||��a|at|��S)Nr�TRITON_CACHE_MANAGERr�) r r�rT�__cache_cls_nmer�r�r�r�� __cache_cls)r!r �user_cache_managerr�r�r�s r�get_cache_managerr��s�� �I�I�I�����(>��E�E���%�*<��*O�*O�1�7�7��<�<�� �W��(��5�5���f�g�.�.� �,�� �s� � �rc�$�t|d���S)NT)r�r��r!s r�get_override_managerr� s�� �s�T� *� *� *�*rc�$�t|d���S)NT)rr�r�s r�get_dump_managerr�s�� �s�� &� &� &�&rc �V�d�|���D��}|�dd�|������d|�d|��}|D]}|�d|�|����}�t j|�d�������}|S)Nc�6�i|]\}}||ddkrdn|��S)r�*�ptrr)r��k�vs rr�z%make_so_cache_key.<locals>.<dictcomp>s.��N�N�N�D�A�q��Q�q�T�S�[�[�E�E�a�N�N�Nr�-r?r�)rUr�valuesrT�hashlib�sha256r�� hexdigest)� version_hash� signature� constants�ids�kwargsr!�kws r�make_so_cache_keyr�s���N�N�I�O�O�<M�<M�N�N�N�I� � K� K�B�G�G�I�$4�$4�$6�$6�7�7� K� K�)� K� K�c� K� K�C��(�(���'�'�v�z�z�"�~�~�'�'��� �.����G�,�,� -� -� 7� 7� 9� 9�C� �Jr)r�rRr rh�abcrr�pathlibr�typingrrrr�rrrrr:rur}r�r�r�r�r�r�r�rrr�<module>r�s������ � � � � � � � � � � � �#�#�#�#�#�#�#�#�������'�'�'�'�'�'�'�'�'�'�����9�9�9�<�<�<�8�8�8� � � � � �3� � � �,R�R�R�R�R�|�R�R�R�j � � � � � � � �"7�7�7�7�7�0�7�7�7�,J4�J4�J4�J4�J4��J4�J4�J4�Z� ��� �l� � � � � +��+�+�+�+�'�\�'�'�'�'�����r
Memory