� J�g����ddlZddlmZddlmZddlmZmZmZm Z  ddl Z e e j � d��d��dkZes ed���n #e$rdZYnwxYw ddlZd Zn #e$rdZYnwxYw ddlZd Zn #e$rdZYnwxYwdd lmZd �Zed ���Zd e eefdefd�Zd�Zdeeefdeeeffd�Zd�Zd�Zd"d�Zd#d�Z d�Z!d�Z"dede#defd�Z$dedede fd �Z%d!�Z&dS)$�N)�contextmanager��wraps)�Any�Dict�Mapping�Union�.�z"hiredis package should be >= 3.0.0FT)�metadatac �*�ddlm}|j|fi|��S)z� Returns an active Redis client generated from the given database URL. Will attempt to extract the database id from the path url fragment, if none is provided. r)�Redis)� redis.clientr�from_url)�url�kwargsrs �[/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/redis/utils.pyrr!s0��#�"�"�"�"�"� �5�>�#� (� (�� (� (�(�c#�bK�|���}|V�|���dS�N)�pipeline�execute)� redis_obj�ps rrr-s1���������A� �G�G�G��I�I�K�K�K�K�Kr�value�returnc�^�t|t��r|�dd���n|S)N�utf-8�replace)�errors)� isinstance�bytes�decode�rs r� str_if_bytesr%4s/��3=�e�U�3K�3K�V�� � �W�Y� �/�/�/�QV�rc�:�tt|����Sr)�strr%r$s r�safe_strr(:s�� �|�E�"�"� #� #�#r�dictsc�>�i}|D]}|�|���|S)za Merge all provided dicts into 1 dict. *dicts : `dict` dictionaries to merge )�update)r)�merged�ds r� dict_merger.>s2�� �F� ����� � �a����� �Mrc�8�t�||��Sr)�dict�fromkeys)�key_list�callbacks r�list_keys_to_dictr4Ls�� �=�=��8� ,� ,�,rc��t��}|���D]}|D]}|�|����t|��S)z� Merge all items in `res` into a list. This command is used when sending a command to multiple nodes and the result from each node should be merged into a single list. res : 'dict' )�set�values�add�list)�command�res�result�vrs r� merge_resultr>Ps[���U�U�F� �Z�Z�\�\����� � �E� �J�J�u� � � � � � ��<�<�r��c��ddl}d|�d�}|r |d|�d�z }|r |d|�d�z }|�|t|���dS)NrzCall to deprecated r z (�)z -- Deprecated since version )�category� stacklevel)�warnings�warn�DeprecationWarning)�name�reason�versionrDrE�msgs r�warn_deprecatedrLbsr���O�O�O� '�� '� '� '�C� �� �~�F�~�~�~����:� �9�w�9�9�9�9�� �M�M�#� 2�z�M�J�J�J�J�Jrc��������fd�}|S)z5 Decorator to mark a function as deprecated. c�D���t�������fd���}|S)Nc�H��t�p�j��d����|i|��S)Nr )rD)rL�__name__)�argsr�funcrHrIrJs ����r�wrapperz7deprecated_function.<locals>.decorator.<locals>.wrapperss6��� �D�1�D�M�6�7�q� Q� Q� Q� Q��4��(��(�(� (rr)rRrSrHrIrJs` ���r� decoratorz&deprecated_function.<locals>.decoratorrsC���� �t��� )� )� )� )� )� )� )� �� )��r�)rIrJrHrTs``` r�deprecated_functionrVms0����� ������� �rc�R�dtjjj���vr|tjd��}|�tj��tj��}|�tj��|� |��dSdS)zo Set up a logger that log info logs to stdout. (This is used by the default push response handler) � push_responseN) �logging�root�manager� loggerDict�keys� getLogger�setLevel�INFO� StreamHandler� addHandler)�logger�handlers r�_set_info_loggerre}s��� �g�l�2�=�B�B�D�D�D�D��"�?�3�3������ �%�%�%��'�)�)�������&�&�&����'�"�"�"�"�"� E�Drc�`� tjd��}n#tj$rd}YnwxYw|S)N�redisz99.99.99)r rJ�PackageNotFoundError)�libvers r�get_lib_versionrj�sE����!�'�*�*���� � (������������ �Ms ��+�+� host_error� exceptionc��|jsd|�d�St|j��dkrd|jd�d|�d�Sd|jd�d|�d|jd�d�S)NzError connecting to r �zError rz connecting to z. )rQ�len)rkrls r�format_error_messagerp�s��� �>� �3�j�3�3�3�3� �Y�^� � �� !� !�G� ��q�)�G�G�*�G�G�G�G� $�Y�^�A�&� $� $�z� $� $��~�a� � $� $� $� r�version1�version2c���ttt|�d������}ttt|�d������}t |��t |��krGt |��t |��z }t |��D]}|�d���nft |��t |��krFt |��t |��z }t |��D]}|�d���t|��D]/\}}||||krdS||||krdS�0dS)z� Compare two versions. :return: -1 if version1 > version2 0 if both versions are equal 1 if version1 < version2 r r�����rn)r9�map�int�splitro�range�append� enumerate)rqrr� num_versions1� num_versions2�diff�_�i�vers r�compare_versionsr��sp����S�(�.�.��"5�"5�6�6�7�7�M���S�(�.�.��"5�"5�6�6�7�7�M� �=���C� �.�.�.�.��=�!�!�C� �$6�$6�6���t��� $� $�A� � � �� #� #� #� #� $� �]� � �c�-�0�0� 0� 0��=�!�!�C� �$6�$6�6���t��� $� $�A� � � �� #� #� #� #��M�*�*�����3� �� �m�A�.� .� .��2�2� �1� � �a� 0� 0� 0��1�1�1� �1rc��t|t��r|�d��St|t��r|St d���)Nrz$Key must be either a string or bytes)r!r"r#r'� TypeError)�keys r� ensure_stringr��sN���#�u���@��z�z�'�"�"�"� �C�� � �@�� ��>�?�?�?r)r?r?r@)r?r?N)'rY� contextlibr� functoolsr�typingrrrr �hiredisrv� __version__rw�HIREDIS_AVAILABLE� ImportError�ssl� SSL_AVAILABLE� cryptography�CRYPTOGRAPHY_AVAILABLE� importlibr rrr'r"r%r(r.r4r>rLrVrerj� BaseExceptionrpr�r�rUrr�<module>r�s�������%�%�%�%�%�%�������,�,�,�,�,�,�,�,�,�,�,�,���N�N�N���G�/�5�5�c�:�:�1�=�>�>�!�C�� �@��k�>�?�?�?�@����������������J�J�J��M�M�������M�M�M�����#�����!�����#�#�#�"����#���������� )� )� )������� ��c�5�j�)��c����� $�$�$� �w�s�C�x�(� �T�#�s�(�^� � � � �-�-�-����$K�K�K�K� � � � � #� #� #����  �S�  �]�  �s�  �  �  �  � �s� �c� �c� � � � �<@�@�@�@�@s5�>A�A'�&A'�+A2�2A<�;A<�B�B�B
Memory