� J�gM%����ddlmZmZddlmZddlmZddlmZddl m Z m Z m Z m Z Gd�de��ZGd�d e��Zed � ��Gd �d ����ZGd�d��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd �d!e��Zd"S)#�)�ABC�abstractmethod)� OrderedDict)� dataclass)�Enum)�Any�List�Optional�Unionc��eZdZdZdZdS)�CacheEntryStatus�VALID� IN_PROGRESSN)�__name__� __module__� __qualname__rr���[/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/redis/cache.pyr r s������ �E��K�K�Krr c��eZdZdZdZdS)�EvictionPolicyType� time_based�frequency_basedN)rrrrrrrrrr s�������J�'�O�O�OrrT)�frozenc�$�eZdZUeed<eed<dS)�CacheKey�command� redis_keysN)rrr�str�__annotations__�tuplerrrrrs'������� �L�L�L������rrc�.�eZdZdededefd�Zd�Zd�ZdS)� CacheEntry� cache_key� cache_value�statusc�>�||_||_||_||_dS�N)r$r%r&�connection_ref)�selfr$r%r&r)s r�__init__zCacheEntry.__init__s(��#���&����� �,����rc�P�t|j|j|j|jf��Sr()�hashr$r%r&r)�r*s r�__hash__zCacheEntry.__hash__%s*��� �^�T�-�t�{�D�<O� P� � � rc�B�t|��t|��kSr()r-)r*�others r�__eq__zCacheEntry.__eq__*s���D�z�z�T�%�[�[�(�(rN) rrrr�bytesr r+r/r2rrrr#r#sb������ -�� -�� -�!� -� -� -� -� � � � )�)�)�)�)rr#c���eZdZeed�����Zejd���Zeedefd�����Zede fd���Z ede de e fd���Z ede dd fd ���Zd S) �EvictionPolicyInterfacec��dSr(rr.s r�cachezEvictionPolicyInterface.cache/� �� �rc��dSr(r)r*�values rr7zEvictionPolicyInterface.cache4��� �r�returnc��dSr(rr.s r�typezEvictionPolicyInterface.type8r8rc��dSr(rr.s r� evict_nextz"EvictionPolicyInterface.evict_next=r;r�countc��dSr(r�r*rAs r� evict_manyz"EvictionPolicyInterface.evict_manyAr;rr$Nc��dSr(r�r*r$s r�touchzEvictionPolicyInterface.touchEr;r)rrr�propertyrr7�setterrr>rr@�intr rDrGrrrr5r5.s ������ �� � ��^��X� � �\� � ��\� ��� �(� � � ��^��X� �� �H� � � ��^� �� �� ��X�� � � ��^� �� �x� �D� � � ��^� � � rr5c��eZdZed���Zedefd���Zed���Zededefd���Z ede defd���Z d S) �CacheConfigurationInterfacec��dSr(rr.s r�get_cache_classz+CacheConfigurationInterface.get_cache_classKr;rr<c��dSr(rr.s r� get_max_sizez(CacheConfigurationInterface.get_max_sizeOr;rc��dSr(rr.s r�get_eviction_policyz/CacheConfigurationInterface.get_eviction_policySr;rrAc��dSr(rrCs r�is_exceeds_max_sizez/CacheConfigurationInterface.is_exceeds_max_sizeWr;rrc��dSr(r�r*rs r�is_allowed_to_cachez/CacheConfigurationInterface.is_allowed_to_cache[r;rN) rrrrrNrJrPrR�boolrTrrWrrrrLrLJs�������� � ��^� �� �c� � � ��^� �� � ��^� �� �� �� � � ��^� �� �3� �4� � � ��^� � � rrLc��eZdZeedefd�����Zeedefd�����Zeede fd�����Z eede fd�����Z ede deedffd���Zed edefd ���Zed ee deefd ���Zed eedeefd���Zede fd���Zede defd���ZdS)�CacheInterfacer<c��dSr(rr.s r� collectionzCacheInterface.collectionar8rc��dSr(rr.s r�configzCacheInterface.configfr8rc��dSr(rr.s r�eviction_policyzCacheInterface.eviction_policykr8rc��dSr(rr.s r�sizezCacheInterface.sizepr8r�keyNc��dSr(r�r*rcs r�getzCacheInterface.getur;r�entryc��dSr(r�r*rgs r�setzCacheInterface.setyr;r� cache_keysc��dSr(r)r*rks r�delete_by_cache_keysz#CacheInterface.delete_by_cache_keys}r;rrc��dSr(r)r*rs r�delete_by_redis_keysz#CacheInterface.delete_by_redis_keys�r;rc��dSr(rr.s r�flushzCacheInterface.flush�r;rc��dSr(rres r� is_cachablezCacheInterface.is_cachable�r;r)rrrrHrrr\rLr^r5r`rJrbrr r#rfrXrjr rmr3rorqrsrrrrZrZ`s������� �� �K� � � ��^��X� ��� �3� � � ��^��X� ��� �!8� � � ��^��X� ��� �c� � � ��^��X� �� �x� �E�*�d�*:�$;� � � ��^� �� �� �� � � ��^� �� �t�H�~� �$�t�*� � � ��^� �� �t�E�{� �t�D�z� � � ��^� �� �s� � � ��^� �� �x� �D� � � ��^� � � rrZc�*�eZdZdeddfd�Zedefd���Zedefd���Zede fd���Z ede fd���Z d e defd �Zd edee dffd �Zd eedeefd�Zdeedeefd�Zde fd�Zd edefd�ZdS)� DefaultCache� cache_configr<Nc��t��|_||_|j������|_||j_dSr()r�_cache� _cache_configrRr:�_eviction_policyr7�r*rvs rr+zDefaultCache.__init__�sK��"�m�m�� �)��� $� 2� F� F� H� H� N� N� P� P���&*���#�#�#rc��|jSr(�rxr.s rr\zDefaultCache.collection�� ���{�rc��|jSr()ryr.s rr^zDefaultCache.config�s ���!�!rc��|jSr(�rzr.s rr`zDefaultCache.eviction_policy�s ���$�$rc�*�t|j��Sr()�lenrxr.s rrbzDefaultCache.size�s���4�;���rrgc�$�|�|j��sdS||j|j<|j�|j��|j�t|j����r|j���dS)NFT) rsr$rxrzrGryrTr�r@ris rrjzDefaultCache.set�s��������0�0� ��5�',�� �E�O�$� ��#�#�E�O�4�4�4� � � 1� 1�#�d�k�2B�2B� C� C� /� � !� ,� ,� .� .� .��trrcc�x�|j�|d��}|�dS|j�|��|Sr()rxrfrzrG)r*rcrgs rrfzDefaultCache.get�s=��� ����T�*�*�� �=��4� ��#�#�C�(�(�(�� rrkc���g}|D]\}|�|���0|j�|��|�d���G|�d���]|S)NTF)rfrx�pop�append)r*rk�responsercs rrmz!DefaultCache.delete_by_cache_keys�si����� '� '�C��x�x��}�}�(�� ����$�$�$�����%�%�%�%�����&�&�&�&��rrc�"�g}g}|D]h}t|t��r|���}|jD]5}||jvr*|�|��|�d���6�i|D]}|j�|���|S)NT)� isinstancer3�decoderxrr�r�)r*rr��keys_to_delete� redis_keyr$rcs rroz!DefaultCache.delete_by_redis_keys�s�������#� *� *�I��)�U�+�+� /�%�,�,�.�.� �!�[� *� *� �� � 4�4�4�"�)�)�)�4�4�4��O�O�D�)�)�)�� *� "� !� !�C� �K�O�O�C� � � � ��rc�`�t|j��}|j���|Sr()r�rx�clear)r*� elem_counts rrqzDefaultCache.flush�s+�����%�%� � � �������rc�@�|j�|j��Sr()ryrWrres rrszDefaultCache.is_cachable�s���!�5�5�c�k�B�B�Br)rrrrLr+rHrr\r^r5r`rJrbr#rXrjrr rfr rmr3rorqrsrrrruru�s�������+�1�+� �+�+�+�+���K�����X���"�3�"�"�"��X�"��%�!8�%�%�%��X�%�� �c� � � ��X� � �� �� � � � ��x��E�*�d�*:�$;����� �t�H�~� �$�t�*� � � � ��t�E�{��t�D�z�����"�s����� C�x�C�D�C�C�C�C�C�Crruc��eZdZd�Zed���Zejdefd���Zedefd���Z de fd�Z de de e fd �Zd e dd fd �Zd �Zd S)� LRUPolicyc��d|_dSr()r7r.s rr+zLRUPolicy.__init__�s ���� � � rc��|jSr(r}r.s rr7zLRUPolicy.cache�r~rr7c��||_dSr(r})r*r7s rr7zLRUPolicy.cache�s ���� � � rr<c��tjSr()rrr.s rr>zLRUPolicy.type�s ��!�,�,rc�z�|���|jj�d���}|dS)NF��lastr)� _assert_cacherxr\�popitem)r*� popped_entrys rr@zLRUPolicy.evict_next�s9�� �������{�-�5�5�5�5�A�A� ��A��rrAc�$�|���|t|jj��krt d���g}t |��D]=}|jj�d���}|�|d���>|S)Nz#Evictions count is above cache sizeFr�r)r�r�rxr\� ValueError�ranger�r�)r*rA� popped_keys�_r�s rrDzLRUPolicy.evict_many�s��� ������ �3�t�{�-�.�.� .� .��B�C�C� C�� ��u��� 0� 0�A��;�1�9�9�u�9�E�E�L� � � �|�A�� /� /� /� /��rr$Nc���|���|jj�|���t d���|jj�|��dS)Nz(Given entry does not belong to the cache)r�rxr\rfr�� move_to_endrFs rrGzLRUPolicy.touchs[�� ������ �;� !� %� %�i� 0� 0� 8��G�H�H� H� � ��*�*�9�5�5�5�5�5rc�f�|j�t|jt��std���dS)Nz6Eviction policy should be associated with valid cache.)r7r�rZr�r.s rr�zLRUPolicy._assert_cache s2�� �:� �Z�� �N�%K�%K� ��U�V�V� V� � r)rrrr+rHr7rIrZrr>rr@rJr rDrGr�rrrr�r��s�������������X�� �\��>�����\���-�(�-�-�-��X�-��H����� �� ��X�� � � � �6�x�6�D�6�6�6�6�W�W�W�W�Wrr�c��eZdZeZdS)�EvictionPolicyN)rrrr��LRUrrrr�r�s������ �C�C�Crr�c��eZdZeZejZdZgd�Z eeefde de defd�Z d�Z de fd �Zdefd �Zd e defd �Zd edefd�ZdS)� CacheConfigi')J�BITCOUNT� BITFIELD_RO�BITPOS�EXISTS�GEODIST�GEOHASH�GEOPOS�GEORADIUSBYMEMBER_RO� GEORADIUS_RO� GEOSEARCH�GET�GETBIT�GETRANGE�HEXISTS�HGET�HGETALL�HKEYS�HLEN�HMGET�HSTRLEN�HVALSz JSON.ARRINDEXz JSON.ARRLENzJSON.GETz JSON.MGETz JSON.OBJKEYSz JSON.OBJLENz JSON.RESPz JSON.STRLENz JSON.TYPE�LCS�LINDEX�LLEN�LPOS�LRANGE�MGET�SCARD�SDIFF�SINTER� SINTERCARD� SISMEMBER�SMEMBERS� SMISMEMBER�SORT_RO�STRLEN�SUBSTR�SUNIONzTS.GETzTS.INFOzTS.RANGEz TS.REVRANGE�TYPE�XLEN�XPENDING�XRANGE�XREAD� XREVRANGE�ZCARD�ZCOUNT�ZDIFF�ZINTER� ZINTERCARD� ZLEXCOUNT�ZMSCORE�ZRANGE� ZRANGEBYLEX� ZRANGEBYSCORE�ZRANK� ZREVRANGE�ZREVRANGEBYLEX�ZREVRANGEBYSCORE�ZREVRANK�ZSCORE�ZUNION�max_size� cache_classr`c�0�||_||_||_dSr()� _cache_class� _max_sizerz)r*r�r�r`s rr+zCacheConfig.__init__hs!�� (���!��� /����rc��|jSr()r�r.s rrNzCacheConfig.get_cache_classrs ��� � rr<c��|jSr(�r�r.s rrPzCacheConfig.get_max_sizeus ���~�rc��|jSr(r�r.s rrRzCacheConfig.get_eviction_policyxs ���$�$rrAc��||jkSr(r�rCs rrTzCacheConfig.is_exceeds_max_size{s���t�~�%�%rrc��||jvSr()�DEFAULT_ALLOW_LISTrVs rrWzCacheConfig.is_allowed_to_cache~s���$�1�1�1rN)rrrru�DEFAULT_CACHE_CLASSr�r��DEFAULT_EVICTION_POLICY�DEFAULT_MAX_SIZEr�rJrr+rNrPrRrXrTrrWrrrr�r�s������&��,�0����K�K�K��^)�.�*A� 0�0��0��0�(� 0�0�0�0�!�!�!��c�����%�^�%�%�%�%�&��&��&�&�&�&�2�3�2�4�2�2�2�2�2�2rr�c�*�eZdZedefd���ZdS)�CacheFactoryInterfacer<c��dSr(rr.s r� get_cachezCacheFactoryInterface.get_cache�r;rN)rrrrrZr�rrrr�r��s9������� �>� � � ��^� � � rr�c�4�eZdZddeefd�Zdefd�ZdS)� CacheFactoryNrvc�L�||_|j�t��|_dSdSr()�_configr�r{s rr+zCacheFactory.__init__�s(��#�� � �<� �&�=�=�D�L�L�L� � rr<c�V�|j���}||j���S)N)rv)r�rN)r*r�s rr�zCacheFactory.get_cache�s*���l�2�2�4�4� ��{�� �5�5�5�5rr()rrrr r�r+rZr�rrrr�r��sT������)�)�X�k�%:�)�)�)�)� 6�>�6�6�6�6�6�6rr�N)�abcrr� collectionsr� dataclassesr�enumr�typingrr r r r rrr#r5rLrZrur�r�r�r�r�rrr�<module>rs���#�#�#�#�#�#�#�#�#�#�#�#�#�#�!�!�!�!�!�!�������-�-�-�-�-�-�-�-�-�-�-�-� � � � � �t� � � � (�(�(�(�(��(�(�(�  ��$�������������� )�)�)�)�)�)�)�)�, � � � � �c� � � �8 � � � � �#� � � �,+ �+ �+ �+ �+ �S�+ �+ �+ �\RC�RC�RC�RC�RC�>�RC�RC�RC�j,W�,W�,W�,W�,W�'�,W�,W�,W�^�����T����i2�i2�i2�i2�i2�-�i2�i2�i2�X � � � � �C� � � � 6� 6� 6� 6� 6�(� 6� 6� 6� 6� 6r
Memory