� K�g�/� �x�UddlZddlZddlmZddlmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZddlZddlZddlZejd��Zejed<e�ej����e�ej��e��Z e d��Z!d:ded e ed e ed efd �Z"d edee#efded efd�Z$e dd���Z%Gd�d��Z&Gd�de&��Z' ddl(Z(dZ)n #e*$rdZ)YnwxYwej+dkr ddl,m-Z.ddl/m0Z1nddl.Z.ddl1Z1ej2d��Z3de#d ee e4e4fe e4ffd�Z5dZ6e6dzZ7de#d ee#d e8fd!�Z9de#d e8fd"�Z:de#d e8fd#�Z;d$ee!d e e!fd%�Z<Gd&�d'e&��Z=d(�Z> ddl?Z?dZ@n #e*$rdZ@YnwxYwGd)�d*��ZAde#d e8fd+�ZBGd,�d-eC��ZDded.ed efd/�ZEd0ed1ed efd2�ZFd3�ZGd ede e'd efd4�ZHd5e4d6e4d e e e4e4ffd7�ZIGd8�d9ee!��ZJdS);�N)�product)�deque) �Callable�Iterator�List�Optional�Tuple�Type�TypeVar�Union�Dict�Any�Sequence�Iterable� AbstractSet�lark�logger�T�seq�key�value�returnc��i}|D]R}|� ||��n|}|� ||��n|} ||�|���=#t$r |g||<Y�OwxYw|S�N)�append�KeyError)rrr�d�item�k�vs �Z/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/lark/utils.py�classifyr"s����A������/�C�C��I�I�I���!�-�E�E�$�K�K�K�D�� � �a�D�K�K��N�N�N�N��� � � ��3�A�a�D�D�D� ���� �Hs�A�A�A�data� namespace�memoc�2���t|t��r[d|vr$�|d}|�|���Sd|vr�|dS��fd�|���D��St|t��r��fd�|D��S|S)N�__type__�@c�:��i|]\}}|t|������S��� _deserialize)�.0rrr%r$s ��r!� <dictcomp>z _deserialize.<locals>.<dictcomp>*s+���X�X�X�Z�S�%��L�� �4�8�8�X�X�X�c�2��g|]}t|������Sr*r+)r-rr%r$s ��r!� <listcomp>z _deserialize.<locals>.<listcomp>,s%���G�G�G�� �U�I�t�4�4�G�G�Gr/)� isinstance�dict� deserialize�items�list)r#r$r%�class_s `` r!r,r,#s������$����H� �� � ��t�J�/�0�F��%�%�d�D�1�1� 1� �D�[�[���S� �?� "�X�X�X�X�X�4�:�:�<�<�X�X�X�X� �D�$� � �H�G�G�G�G�G�$�G�G�G�G� �Kr/�_T� Serialize)�boundc ��eZdZdZdedefd�Zd deeeffd�Z e de e deeefd ee efde fd ���ZdS) r9alSafe-ish serialization interface that doesn't rely on Pickle Attributes: __serialize_fields__ (List[str]): Fields (aka attributes) to serialize. __serialize_namespace__ (list): List of classes that deserialization is allowed to instantiate. Should include all field types that aren't builtin types. �types_to_memoizerc�r�t|��}|�|��|���fSr)�SerializeMemoizer� serialize)�selfr<r%s r!�memo_serializezSerialize.memo_serialize;s1�� �!1�2�2���~�~�d�#�#�T�^�^�%5�%5�5�5r/Nc�(����r1�����rd�j����iSt�d��}��fd�|D��}t ���j|d<t �d��r��|���|S)Nr(�__serialize_fields__c �N��i|]!}|tt�|�������"Sr*)� _serialize�getattr)r-�fr%r@s ��r!r.z'Serialize.serialize.<locals>.<dictcomp>Ds/���E�E�E��q�*�W�T�1�-�-�t�4�4�E�E�Er/r'rE)�in_types�memoized�getrF�type�__name__�hasattrrE)r@r%�fields�ress`` r!r?zSerialize.serialize?s����� � 2�D�M�M�$�'�'� 2����*�*�4�0�0�1� 1���5�6�6��E�E�E�E�E�f�E�E�E���t�*�*�-��J�� �4�� &� &� '� �O�O�C�� &� &� &�� r/�clsr#r%c ��t|dg��}d�|D��}t|d��}d|vr||dS|�|��}|D]L} t||t||||�����*#t$r}t d||���d}~wwxYwt |d��r|���|S)N�__serialize_namespace__c��i|] }|j|�� Sr*)rL)r-�cs r!r.z)Serialize.deserialize.<locals>.<dictcomp>Ms��5�5�5�a�Q�Z��5�5�5r/rCr(zCannot find key for classr,)rF�__new__�setattrr,rrM)rPr#r%r$rN�instrG�es r!r4zSerialize.deserializeJs����C�!:�B�?�?� �5�5�9�5�5�5� ���4�5�5�� �$�;�;���S� �?� "��{�{�3����� D� D�A� D���a��d�1�g�y�$�!G�!G�H�H�H�H��� D� D� D��:�C��C�C�C����� D���� �4�� (� (� � � � � � � �� s�&B� B!� B�B!r)rL� __module__� __qualname__�__doc__rrrAr �strr?� classmethodr r8�intr4r*r/r!r9r92s���������6�t�6��6�6�6�6� � ��S�#�X�� � � � ����b����c�3�h���t�C��H�~��RT�����[���r/c ��eZdZdZdZdeddfd�Zdedefd�Z de e e ffd �Z ed e e e fd e ee fd e e e fde e e ffd ���ZdS)r>z<A version of serialize that memoizes objects to reduce space)rIr<rNc�T�t|��|_t��|_dSr)�tupler<� EnumeratorrI)r@r<s r!�__init__zSerializeMemoizer.__init__fs"�� %�&6� 7� 7���"� � �� � � r/rc�,�t||j��Sr)r2r<)r@rs r!rHzSerializeMemoizer.in_typesjs���%��!6�7�7�7r/c�P�t|j���d��Sr)rErI�reversed�r@s r!r?zSerializeMemoizer.serializems ���$�-�0�0�2�2�D�9�9�9r/r#r$r%c�$�t|||��Srr+)rPr#r$r%s r!r4zSerializeMemoizer.deserializeps���D�)�T�2�2�2r/)rLrYrZr[rCrrcr9�boolrHr r^rr?r]r\r4r*r/r!r>r>as�������B�B�&��%��%�$�%�%�%�%�8�i�8�D�8�8�8�8�:�4��S��>�:�:�:�:��3�t�C��H�~�3�$�s�C�x�.�3�PT�UX�Z]�U]�P^�3�cg�hk�mp�hp�cq�3�3�3��[�3�3�3r/r>TF)�� z\\p{[A-Za-z_]+}�exprc�2�trtjtd|��}n,tjt|��rt d|���|} d�t j|�����D��S#tj $r�tst|���tj |��}tt dtj��}|�d���dt#|��fcYSdt#|��fcYSwxYw)N�AzD`regex` module must be installed in order to use Unicode categories.c�,�g|]}t|����Sr*)r^)r-�xs r!r1z$get_regexp_width.<locals>.<listcomp>�s��I�I�I�1��A���I�I�Ir/�MAXWIDTH��r)� _has_regex�re�sub� categ_pattern�search� ImportError� sre_parse�parse�getwidth� sre_constants�error� ValueError�regex�compilerF� MAXREPEAT�matchr^)rl� regexp_finalrTrqs r!�get_regexp_widthr��s�����v�m�S�$�7�7� � � �9�]�D� )� )� l��d�fj�k�k� k�� �(�I�I� �� � =� =� F� F� H� H�I�I�I�I�� � �(�(�(�� (��T�"�"� "�� �l�+�+�A��y�*�m�6M�N�N�H��w�w�r�{�{�"��#�h�-�-�'�'�'�'��#�h�-�-�'�'�'�'�(���s�/B�A?D�D�D)�Lu�Ll�Lt�Lm�Lo�Mn�Mc�Pc)�Nd�Nl�s� categoriesc���t|��dkrt�fd�|D����S|dkptj|���vS)Nrsc3�8�K�|]}t|���V��dSr)�_test_unicode_category)r-�charr�s �r!� <genexpr>z)_test_unicode_category.<locals>.<genexpr>�s.�����J�J��)�$� �;�;�J�J�J�J�J�Jr/�_)�len�all� unicodedata�category)r�r�s `r!r�r��sT��� �1�v�v��{�{��J�J�J�J��J�J�J�J�J�J� ��8� <�{�+�A�.�.�*�<�<r/c�,�t|t��S)z� Checks if all characters in `s` are alphanumeric characters (Unicode standard, so diacritics, indian vowels, non-latin numbers, etc. all pass). Synonymous with a Python `ID_CONTINUE` identifier. See PEP 3131 for details. )r�� _ID_CONTINUE�r�s r!�is_id_continuer��s�� "�!�\� 2� 2�2r/c�,�t|t��S)z� Checks if all characters in `s` are alphabetic characters (Unicode standard, so diacritics, indian vowels, non-latin numbers, etc. all pass). Synonymous with a Python `ID_START` identifier. See PEP 3131 for details. )r�� _ID_STARTr�s r!� is_id_startr��s�� "�!�Y� /� /�/r/�lc�<��t����fd�|D��S)z�Given a list (l) will removing duplicates from the list, preserving the original order of the list. Assumes that the list entries are hashable.c�F��g|]}|�v���|���|��Sr*)�add)r-rp�dedups �r!r1zdedup_list.<locals>.<listcomp>�s,��� =� =� =�!��e���u�y�y��|�|��A���r/)�set)r�r�s @r!� dedup_listr��s(��� �E�E�E� =� =� =� =�q� =� =� =�=r/c�D�eZdZdd�Zdefd�Zd�Zdeeeffd�Z dS)rbrNc��i|_dSr)�enumsrgs r!rczEnumerator.__init__�s ��%'�� � � r/c�f�||jvrt|j��|j|<|j|Sr)r�r��r@rs r!rJzEnumerator.get�s0�� �t�z� !� !�"�4�:���D�J�t� ��z�$��r/c�*�t|j��Sr)r�r�rgs r!�__len__zEnumerator.__len__�s���4�:���r/c��d�|j���D��}t|��t|j��ksJ�|S)Nc��i|]\}}||�� Sr*r*)r-rr s r!r.z'Enumerator.reversed.<locals>.<dictcomp>�s�� 1� 1� 1�d�a��Q�� 1� 1� 1r/)r�r5r�)r@�rs r!rfzEnumerator.reversed�sG�� 1� 1�d�j�.�.�0�0� 1� 1� 1���1�v�v��T�Z���(�(�(�(��r/)rN) rLrYrZrcr^rJr�r rrfr*r/r!rbrb�su������(�(�(�(� �3� � � � � ����$�s�C�x�.������r/rbc�~�|sggStd�|D����s J|���tt|���S)a� Accepts a list of alternatives, and enumerates all their possible concatenations. Examples: >>> combine_alternatives([range(2), [4,5]]) [[0, 4], [0, 5], [1, 4], [1, 5]] >>> combine_alternatives(["abc", "xy", '$']) [['a', 'x', '$'], ['a', 'y', '$'], ['b', 'x', '$'], ['b', 'y', '$'], ['c', 'x', '$'], ['c', 'y', '$']] >>> combine_alternatives([]) [[]] c3�K�|]}|V��dSrr*)r-r�s r!r�z'combine_alternatives.<locals>.<genexpr>�s"���� � �Q�q� � � � � � r/)r�r6r)�listss r!�combine_alternativesr��sP�� ���t� � � � �%� � � � � �'�'�%�'�'� � ���� � � r/c�P�eZdZeejj��Zedd���ZdS)�FSr�c �^�trd|vrtj|f|dd�|��St||fi|��S)N�wT)�mode� overwrite)�_has_atomicwrites� atomicwrites� atomic_write�open)�namer��kwargss r!r�zFS.open�sK�� � .������,�T�W���W�W�PV�W�W� W���d�-�-�f�-�-� -r/N)r�)rLrYrZ� staticmethod�os�path�existsr�r*r/r!r�r��sE������ �\�"�'�.� )� )�F��.�.�.��\�.�.�.r/r�c��tjdkr|���S |�d��dS#tt f$rYdSwxYw)z' str.isascii only exists in python3.7+ )rj��asciiTF)�sys� version_info�isascii�encode�UnicodeDecodeError�UnicodeEncodeErrorr�s r!r�r��sb�� ��6�!�!��y�y�{�{�� � �H�H�W� � � ��4��"�$6�7� � � ��5�5� ���s�=�A�Ac��eZdZd�ZdS)�fzsetc�X�dd�tt|����zS)Nz{%s}z, )�join�map�reprrgs r!�__repr__zfzset.__repr__ s!���� � �#�d�D�/�/�2�2�2�2r/N)rLrYrZr�r*r/r!r�r� s#������3�3�3�3�3r/r��predc�0���g���fd�|D��}|�fS)Nc�T��g|]$}�|��s��|���"|��%Sr*)r)r-�elem� false_elemsr�s ��r!r1z!classify_bool.<locals>.<listcomp>s9���Q�Q�Q�4�$�$�t�*�*�Q� �8J�8J�4�8P�8P�Q�$�Q�Q�Qr/r*)rr�� true_elemsr�s ` @r!� classify_boolr�s0�����K�Q�Q�Q�Q�Q�3�Q�Q�Q�J� �{� "�"r/�initial�expandc#�K�tt|����}t|��}|rX|���}|V�||��D]0}||vr*|�|��|�|���1|�VdSdSr)rr6r��popleftr�r)r�r��open_q�visited�node� next_nodes r!�bfsr�s����� �4��=�=� !� !�F��&�k�k�G� �)��~�~����� � � ������ )� )�I���'�'�� � �I�&�&�&�� � �i�(�(�(�� �)�)�)�)�)r/c#�K�tt|����}|r*|���}|V�|||��z }|�(dSdS)zVbfs, but doesn't keep track of visited (aka seen), because there can be no repetitionsN)rr6r�)r�r�r�r�s r!�bfs_all_uniquer�!si���� �4��=�=� !� !�F� ���~�~����� � � ��&�&��,�,��� �����r/c�T��t|t��r|����St|t��r�fd�|D��St|t��rt|��St|t ��r �fd�|���D��S|S)Nc�0��g|]}t|�����Sr*�rE)r-r�r%s �r!r1z_serialize.<locals>.<listcomp>.s#���9�9�9�4� �4��&�&�9�9�9r/c�8��i|]\}}|t|�����Sr*r�)r-rr�r%s �r!r.z_serialize.<locals>.<dictcomp>2s)���J�J�J�y�s�D��J�t�T�*�*�J�J�Jr/)r2r9r?r6� frozensetr3r5)rr%s `r!rErE*s�����%��#�#�K����t�$�$�$� �E�4� � �K�9�9�9�9�5�9�9�9�9� �E�9� %� %�K��E�{�{�� �E�4� � �K�J�J�J�J�E�K�K�M�M�J�J�J�J� �Lr/�n� max_factorc���|dksJ�|dksJ�||kr|dfgSt|dd��D]6}t||��\}}||z|krt||��||fgzcS�7Jd|z���)a Splits n up into smaller factors and summands <= max_factor. Returns a list of [(a, b), ...] so that the following code returns n: n = 1 for a, b in values: n = n * a + b Currently, we also keep a + b <= max_factor, but that might change r�rs�����FzFailed to factorize %s)�range�divmod� small_factors)r�r��ar��bs r!r�r�9s��� ��6�6�6�6� ��>�>�>�>��J����A��x�� �:�q�"� %� %�;�;���a��|�|���1� �q�5�J� � � ��J�/�/�A�q�6�(�:� :� :� :� �.�*�Q�.�.�.�5r/c�~�eZdZdZddeefd�Zdedefd�Z defd�Z de efd �Z defd �Z d �Zdefd �Zd S)� OrderedSetzkA minimal OrderedSet implementation, using a dictionary. (relies on the dictionary being ordered) r*r5c�D�t�|��|_dSr)r3�fromkeysr)r@r5s r!rczOrderedSet.__init__Vs�����u�%�%����r/rrc��||jvSr�rr�s r!� __contains__zOrderedSet.__contains__Ys���t�v�~�r/c��d|j|<dSrr�r�s r!r�zOrderedSet.add\s�����t� � � r/c�*�t|j��Sr)�iterrrgs r!�__iter__zOrderedSet.__iter___����D�F�|�|�r/c��|j|=dSrr�r�s r!�removezOrderedSet.removebs�� �F�4�L�L�Lr/c�*�t|j��Sr)rirrgs r!�__bool__zOrderedSet.__bool__err/c�*�t|j��Sr)r�rrgs r!r�zOrderedSet.__len__hs���4�6�{�{�r/N)r*)rLrYrZr[rrrcrrir�r�rrrrr^r�r*r/r!r�r�Qs���������&�&�h�q�k�&�&�&�&����������������(�1�+������1���������������r/r�)NN)Kr�r�� itertoolsr� collectionsr�typingrrrrr r r r r rrrrr�ru�logging� getLoggerr�Logger�__annotations__� addHandler� StreamHandler�setLevel�CRITICAL�object�NO_VALUErr"r\r,r8r9r>r�rtryr�� re._parser�_parserrz� re._constants� _constantsr}r�rwr^r�r�r�rir�r�r�r�rbr�r�r�r�r�r�r�r�r�r�rEr�r�r*r/r!�<module>rss������� � � � �������������~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�~�������������*��*�6�2�2����2�2�2����'�'�'�)�)�*�*�*����� �!�!�!� �6�8�8�� �G�C�L�L��  �  �(�  ��(�!3�  �8�H�CU�  �ae�  �  �  �  � �s� �t�C��H�~� �T� �c� � � � � �W�T��%�%�%��,�,�,�,�,�,�,�,�^3�3�3�3�3� �3�3�3�(��L�L�L��J�J�������J�J�J�������w���"�"�"�"�"�"�)�)�)�)�)�)�)����������� �-�.�.� �(�3�(�5��s�C�x��$�s�)�)C�#D�(�(�(�(�@>� ��=�(� �=�c�=�x��}�=��=�=�=�=� 3�c�3�d�3�3�3�3�0�3�0�4�0�0�0�0�>�(�1�+�>�$�q�'�>�>�>�>����������&!�!�!�&���������������������.�.�.�.�.�.�.�.� �s� �t� � � � �3�3�3�3�3�I�3�3�3� #�x�#�x�#�C�#�#�#�#� )�� )�8� )�� )� )� )� )���� �c� ��*;�!<� �� � � � �/�S�/�c�/�d�5��c��?�.C�/�/�/�/�0������Q������s$�D�D�D�0F7�7G�G
Memory