� K�g�(����UddlmZmZmZmZmZmZmZddlm Z m Z m Z ddl m Z mZddlmZmZmZmZddlmZmZmZddlmZddlmZdd lmZmZmZm Z erdd l!m"Z"d �Z#d �Z$iZ%d e&d<Gd�de��Z'd*d�Z(d�Z)Gd�d��Z*defd�Z+dedefd�Z,d+dededefd�Z-e-e%d<Gd�d��Z.dedefd�Z/d �Z0dedefd!�Z1dededej2fd"�Z3Gd#�d$��Z4e3e%d%<e4e%d&<d'ed(e fd)�Z5dS),�)�Any�Callable�Dict�Optional� Collection�Union� TYPE_CHECKING�)�ConfigurationError� GrammarError� assert_config)�get_regexp_width� Serialize)� LexerThread� BasicLexer�ContextualLexer�Lexer)�earley�xearley�cyk)� LALR_Parser)�Tree)� LexerConf� ParserConf�_ParserArgType� _LexerArgType)�ParseTableBasec�\��t�dd��}|r�SG�fd�dt��}|S)N�__future_interface__Fc� ��eZdZ�fd�Zd�ZdS)�'_wrap_lexer.<locals>.CustomLexerWrapperc�(���|��|_dS�N)�lexer)�self� lexer_conf� lexer_classs ��e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/lark/parser_frontends.py�__init__z0_wrap_lexer.<locals>.CustomLexerWrapper.__init__s���(�[��4�4�� � � �c�@�|j�|j��Sr#)r$�lex�text)r%� lexer_state� parser_states r(r,z+_wrap_lexer.<locals>.CustomLexerWrapper.lexs���z�~�~�k�&6�7�7�7r*N��__name__� __module__� __qualname__r)r,)r's�r(�CustomLexerWrapperr!s=������� 5� 5� 5� 5� 5� 8� 8� 8� 8� 8r*r4)�getattrr)r'�future_interfacer4s` r(� _wrap_lexerr7s`����{�,B�E�J�J���"��� 8� 8� 8� 8� 8� 8� 8�� 8� 8� 8� "�!r*c���tj|d|��}|r|j�d��pt}|�|d|||j��}||_t||||���S)N� parser_confr�parser)r:)r� deserialize�_plugins�getr�debug� callbacks�ParsingFrontend)�data�memor&r?�optionsr9�clsr:s r(�_deserialize_parsing_frontendrEsu���(��m�)<�d�C�C�K� � :�w�'�+�+�M�:�:� J�{�C� �_�_�T�(�^�T�9�g�m� L� L�F�%�K�� �:�{�G�F� K� K� K�Kr*z/Dict[str, Callable[[LexerConf, Any, Any], Any]]�_parser_creatorsc��eZdZUdZeed<eed<eed<d dedefd�Zd d�Z de d e e e ffd �Z dde fd �Zddee fd �ZdS)r@)r&r9r:r&r9rCNc���||_||_||_|r||_nUt�|j��}|�"Jd�|j�����||||��|_|j}d|_ |dvr|j �J�d|_ dSt|t��r5t|t��sJ�t|��|��|_nWt|t"��r3t$t&d�|}|||j|j |��|_nt)d���|j r!t+|j|j ��|_dSdS)Nz&{} is not supported in standalone modeF)�dynamic�dynamic_completeT��basic� contextualz&Bad value for lexer_type: {lexer_type})r9r&rCr:rFr=� parser_type�format� lexer_type� skip_lexer�postlex� isinstance�type� issubclassrr7r$�str�create_basic_lexer�create_contextual_lexer� TypeError�PostLexConnector)r%r&r9rCr:� create_parserrP� create_lexers r(r)zParsingFrontend.__init__0s���&���$����� � � J� �D�K�K�,�0�0��1H�I�I�M� �,�,�.V�.]�.]��+�/�/�,�,�,�(�-� �K��I�I�D�K� �*� ���� �8� 8� 8��%�-�-�-�"�D�O� �F� �j�$� '� '� F��j�%�0�0� 0� 0�0�0��Z�0�0��<�<�D�J�J� � �C� (� (� F�+�5�����L�&��j�$�+�z�?Q�SZ�[�[�D�J�J��D�E�E� E� � � J�)�$�*�j�6H�I�I�D�J�J�J� J� Jr*c���|�4|jj}t|��dkrtd|���|\}n-||jjvrtd|�d|jj�����|S)Nr z]Lark initialized with more than 1 possible start rule. Must specify which start rule to parsezUnknown start rule z. Must be one of )r9�start�lenr )r%r^� start_declss r(� _verify_startzParsingFrontend._verify_startVs��� �=��*�0�K��;���!�#�#�(�*I�KV�W�W�W� �G�E�E� �$�*�0� 0� 0�$�$�SX�SX�SX�Z^�Zj�Zp�Zp�%q�r�r� r�� r*r-�returnc��|jr|jj�d��pt}|jr|n|�|j|��S)Nr)rCr<r=rrQ� from_textr$)r%r-rDs r(�_make_lexer_threadz"ParsingFrontend._make_lexer_thread`sG���|�H�� � 5� 9� 9�-� H� H�X�[����K�t�t�C�M�M�$�*�d�,K�,K�Kr*c��|�|��}|�ind|i}|�|��}|jj||fi|��S)N�on_error)rarer:�parse)r%r-r^rg� chosen_start�kw�streams r(rhzParsingFrontend.parsedsZ���)�)�%�0�0� ��#�R�R�*�h�)?���(�(��.�.�� �t�{� ���<�<��<�<�<r*c���|�|��}|jjdkrtd���|�|��}|j�||��S)N�lalrz<parse_interactive() currently only works with parser='lalr' )rar9rNr rer:�parse_interactive)r%r-r^rirks r(rnz!ParsingFrontend.parse_interactivejsb���)�)�%�0�0� � � � '�6� 1� 1�$�%c�d�d� d��(�(��.�.���{�,�,�V�\�B�B�Br*r#)NN)r1r2r3�__serialize_fields__r�__annotations__rrr)rarVrrrerhrrn�r*r(r@r@)s��������@���������� �L�L�L�$J�$J�9�$J�:�$J�$J�$J�$J�L����L�s�L�u�S�+�5E�/F�L�L�L�L�=�=�#�=�=�=�=� C�C�h�s�m�C�C�C�C�C�Cr*r@rbNc��t|d��t|t��s"dddd�|}t||d|z��dSdS)N)rmrrrK)rLrIrJ)rLz9Parser %r does not support lexer %%r, expected one of %%s)r rSrT)r:r$�expecteds r(�_validate_frontend_argsrttsr���&�3�4�4�4� �e�T� "� "�m�+�>�� � � � �� �e�X�'b�ek�'k�l�l�l�l�l� m�mr*c�X�i}|D]$}t||jd��}|� |||j<�%|Sr#)r5�name)� transformer� terminals�result�terminal�callbacks r(�_get_lexer_callbacksr|sA�� �F��-�-���;�� �t�<�<�� � �$,�F�8�=� !�� �Mr*c��eZdZd�Zd�ZdS)rZc�"�||_||_dSr#)r$� postlexer)r%r$rs r(r)zPostLexConnector.__init__�s���� �"����r*c�l�|j�||��}|j�|��Sr#)r$r,r�process)r%r.r/�is r(r,zPostLexConnector.lex�s-�� �J�N�N�;� � 5� 5���~�%�%�a�(�(�(r*Nr0rqr*r(rZrZ�s2������#�#�#�)�)�)�)�)r*rZc�^�|r|j�d��pt}||��S)Nr)r<r=r)r&r:rRrCrDs r(rWrW�s0�� � 9�w�'�+�+�L�9�9� H�j�C� �3�z�?�?�r*r&c���|r|j�d��pt}|j}d�|j���D��}|r|jnd}||||���S)Nrc�X�i|]'\}}|t|�������(Srq)�list�keys)�.0�idx�ts r(� <dictcomp>z+create_contextual_lexer.<locals>.<dictcomp>�s,��)f�)f�)f���a�#�d�1�6�6�8�8�n�n�)f�)f�)fr*rq)� always_accept)r<r=r� _parse_table�states�itemsr�)r&r:rRrCrD� parse_tabler�r�s r(rXrX�sv�� � >�w�'�+�+�,=�>�>� R�?�C�'-�':�K�)f�)f�;�K]�Kc�Kc�Ke�Ke�)f�)f�)f�F�>E�%M�W�%:�%:�2�M� �3�z�6�� ?� ?� ?�?r*r9c��|r|jnd}|r|jnd}|r|j�d��pt}||||���S)NFr)r>�strict)r>r�r<r=r)r&r9rCr>r�rDs r(�create_lalr_parserr��sY��$� /�G�M�M�%�E�&� 1�W�^�^�E�F� � :�w�'�+�+�M�:�:� J�{�C� �3�{�%�� 7� 7� 7�7r*rmc��eZdZd�Zdd�ZdS)�EarleyRegexpMatcherc��i|_|jD]�}|j���} t |��d}|dkrt d|���n(#t $rt d|j�d|�����wxYw|jr|� d��}|j � ||j ��|j|j<��dS)Nrz/Dynamic Earley doesn't allow zero-width regexpszBad regexp in token z: zutf-8) �regexpsrx�pattern� to_regexprr � ValueErrorrv� use_bytes�encode� re_module�compile� g_regex_flags)r%r&r��regexp�widths r(r)zEarleyRegexpMatcher.__init__�s����� ��%� b� b�A��Y�(�(�*�*�F� ]�(��0�0��3���A�:�:�&�'X�Z[�\�\�\���� T� T� T�"�l�1�6�6�6�6�6�#R�S�S�S� T���� �#� 0����w�/�/��#-�#7�#?�#?�� �H`�#a�#a�D�L��� � � b� bs �A�%A<rc�N�|j|j�||��Sr#)r�rv�match)r%�termr-�indexs r(r�zEarleyRegexpMatcher.match�s!���|�D�I�&�,�,�T�5�9�9�9r*N)r)r1r2r3r)r�rqr*r(r�r��s:������b�b�b� :�:�:�:�:�:r*r�c �~�|jrtd���t|��}tj|||jfi|��S)Nz7Earley's dynamic lexer doesn't support lexer_callbacks.)r?r r�r�Parserr�)r&r9rj�earley_matchers r(�create_earley_parser__dynamicr��sI����V��T�U�U�U�(��4�4�N� �>�*�k�>�3G� N� N�2� N� N�Nr*c�"�|j|jkSr#)rvrT)r��tokens r(�_match_earley_basicr��s�� �9�� � "�"r*c �4�tj||tfi|��Sr#)rr�r�)r&r9rjs r(�create_earley_parser__basicr��s�� �=��[�2E� L� L�� L� L�Lr*c���|jdk}|r|jnd}|jdkr|jptnd}i}|jdkrt }n|jdkr d|d<t }nt }|||f||||jd�|��S) N�resolveF�forestrIrJT� complete_lex)�resolve_ambiguityr>� tree_class� ordered_sets)� ambiguityr>r�rrPr�r�r�)r&r9rCr�r>r��extra�fs r(�create_earley_parserr��s����)�Y�6��$� /�G�M�M�%�E�/6�/@�H�/L�/L��#�+�t��RV�J� �E��� �)�)� )��� � �"4� 4� 4� $��n�� )��� '�� �1�Z�� ]�8I��Z�g�>R� ]� ]�V[� ]� ]�]r*c�(�eZdZdd�Zd�Zd�Zd�ZdS)� CYK_FrontEndNc�Z�tj|j��|_|j|_dSr#)rr��rulesr:r?)r%r&r9rCs r(r)zCYK_FrontEnd.__init__�s$���j��!2�3�3�� �$�.����r*c��t|�d����}|j�||��}|�|��Sr#)r�r,r:rh� _transform)r%� lexer_threadr^�tokens�trees r(rhzCYK_FrontEnd.parse�sF���l�&�&�t�,�,�-�-���{� � ���/�/�����t�$�$�$r*c���t|�����}|D]}�fd�|jD��|_���|��S)Nc�h��g|].}t|t��r��|��n|��/Srq)rSr�_apply_callback)r��cr%s �r(� <listcomp>z+CYK_FrontEnd._transform.<locals>.<listcomp>�s=���p�p�p�Z[�:�a��;N�;N� U�� 4� 4�Q� 7� 7� 7�TU�p�p�pr*)r�� iter_subtrees�childrenr�)r%r��subtrees�subtrees` r(r�zCYK_FrontEnd._transform�sd�����*�*�,�,�-�-��� q� q�G�p�p�p�p�_f�_o�p�p�p�G� � ��#�#�D�)�)�)r*c�B�|j|j|j��Sr#)r?�ruler�)r%r�s r(r�zCYK_FrontEnd._apply_callback�s��(�t�~�d�i�(���7�7�7r*r#)r1r2r3r)rhr�r�rqr*r(r�r��sU������/�/�/�/� %�%�%� *�*�*�8�8�8�8�8r*r�rrrNrPc��t|t��sJ�t|t��sJ�||_||_t |||��Sr#)rSrrrNrPr@)rNrPr&r9rCs r(�_construct_parsing_frontendr��sR�� �j�)� ,� ,�,�,� ,� �k�:� .� .�.�.� .�)�K��&�J�� �:�{�G� <� <�<r*)rbNr#)6�typingrrrrrrr � exceptionsr r r �utilsrrr$rrrr�parsersrrr�parsers.lalr_parserrr�r�commonrrrr�parsers.lalr_analysisrr7rErFrpr@rtr|rZrWrXr�r�r�r�r�r�r�r�r�rqr*r(�<module>r�s���R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�G�G�G�G�G�G�G�G�G�G�.�.�.�.�.�.�.�.�B�B�B�B�B�B�B�B�B�B�B�B�)�)�)�)�)�)�)�)�)�)�,�,�,�,�,�,�������H�H�H�H�H�H�H�H�H�H�H�H��6�5�5�5�5�5�5� "� "� "�L�L�L�GI��C�H�H�H�HC�HC�HC�HC�HC�i�HC�HC�HC�Vm�m�m�m����)�)�)�)�)�)�)�)�� �����@� �@�P_�@�@�@�@�8�8�9�8�:�8�Xc�8�8�8�8� .����:�:�:�:�:�:�:�:�*O�i�O�j�O�O�O�O�#�#�#�M�I�M�J�M�M�M�M�]�Y�]�Z�]�U[�Ub�]�]�]�]�&8�8�8�8�8�8�8�8�,2����&���� =�#� =�!� =� =� =� =� =� =r*
Memory