�
,�Re?# � �p � d dl Z d dlZd dlZddlmZmZmZmZ ddlm Z
G d� de
j e
j e
j
e
j e
j � � Z eej � � Z e j dez dz � � Z G d � d
e� � Z G d� de� � Z G d
� de� � Z G d� de� � Z G d� de� � ZdS )� N� )�col�line�lineno�_collapse_string_to_ranges)�pyparsing_unicodec � � e Zd ZdS )�ExceptionWordUnicodeN)�__name__�
__module__�__qualname__� � ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/_vendor/pyparsing/exceptions.pyr
r
s � � � � � ��Dr r
z([z
]{1,16})|.c � � e Zd ZdZ ddededej e fd�Ze dd �� � Z
ed
� � � Ze
defd�� � Ze
defd
�� � Ze
defd�� � Ze
defd�� � Zdefd�Zd� Zddd�dedefd�Zddefd�ZeZdS )�ParseBaseExceptionz7base exception class for all parsing runtime exceptionsr N�pstr�loc�msgc � � || _ |�|| _ d| _ n|| _ || _ |x| _ | _ |||f| _ d S )N� )r r r �parser_element�
parserElement�args)�selfr r r �elems r �__init__zParseBaseException.__init__ sP � � ����;��D�H��D�I�I��D�H��D�I�37�7���d�0��3��$�� � � r � c � � ddl }ddlm} |�t j � � }g }t | t � � r=|� | j � � |� d| j dz
z dz � � |� d�
t | � � j | � � � � |dk �r�|�
| j |�� � }t � � }t! || d� � � D �]M\ }}|d } | j � d d� � }
t |
|� � r�| j j d
vr�Ht+ |
� � |v r�Z|� t+ |
� � � � t |
� � }|� d�
|j |j |
� � � � n�|
�Ct |
� � }|� d�
|j |j � � � � n?| j }|j d
v r��|� d�
|j � � � � |dz }|s n��Od� |� � S )a�
Method to take an exception and translate the Python internal traceback into a list
of the pyparsing expressions that caused the exception to be raised.
Parameters:
- exc - exception raised during parsing (need not be a ParseException, in support
of Python exceptions that might be raised in a parse action)
- depth (default=16) - number of levels back in the stack trace to list expression
and function names; if None, the full stack trace names will be listed; if 0, only
the failing input line, marker, and exception string will be shown
Returns a multi-line string listing the ParserElements and/or function names in the
exception's stack trace.
r Nr )�
ParserElement� �^z{}: {})�contextr )� parseImpl�
_parseNoCachez
{}.{} - {}z{}.{})�wrapperzz{}�
)�inspect�corer �sys�getrecursionlimit�
isinstancer �appendr �column�format�typer �getinnerframes�
__traceback__�set� enumerate�f_locals�get�f_code�co_name�id�addr �join)
�exc�depthr( r �ret�callers�seen�i�ff�frm�f_self� self_type�codes
r �explain_exceptionz$ParseBaseException.explain_exception) sW � �" ����'�'�'�'�'�'��=��)�+�+�E����c�-�.�.� 5��J�J�s�x� � � ��J�J�s�c�j�1�n�-��3�4�4�4��
�
�8�?�?�4��9�9�#5�s�;�;�<�<�<��1�9�9��,�,�S�->��,�N�N�G��5�5�D�"�7�E�6�7�7�#3�4�4�
�
���2���e����)�)�&�$�7�7���f�m�4�4� :��z�)�1O�O�O� ��&�z�z�T�)�)� ��H�H�R��Z�Z�(�(�(� $�V���I��J�J�$�+�+�%�0�)�2D�f�� �� � � � �'� $�V���I��J�J�w�~�~�i�.B�I�DV�W�W�X�X�X�X� �:�D��|�'>�>�>� ��J�J�t�{�{�4�<�8�8�9�9�9���
��� ��E�� �y�y��~�~�r c �F � | |j |j |j |j � � S )z�
internal factory method to simplify creating one type of ParseException
from another - avoids having __init__ signature conflicts among subclasses
)r r r r )�cls�pes r �_from_exceptionz"ParseBaseException._from_exceptionk s# � � �s�2�7�B�F�B�F�B�,<�=�=�=r �returnc �6 � t | j | j � � S )zG
Return the line of text where the exception occurred.
)r r r �r s r r zParseBaseException.lines s � �
�D�H�d�i�(�(�(r c �6 � t | j | j � � S )zV
Return the 1-based line number of text where the exception occurred.
)r r r rN s r r zParseBaseException.linenoz s � �
�d�h�� �*�*�*r c �6 � t | j | j � � S �z]
Return the 1-based column on the line of text where the exception occurred.
�r r r rN s r r zParseBaseException.col� � � �
�4�8�T�Y�'�'�'r c �6 � t | j | j � � S rQ rR rN s r r. zParseBaseException.column� rS r c � � | j r�| j t | j � � k rd}nut � | j | j � � }|�|� d� � }n| j | j | j dz � }d|z � dd� � }nd}d� | j || j | j | j
� � S ) Nz, found end of textr r z
, found %rz\\�\r z%{}{} (at char {}), (line:{}, col:{}))r r �len�_exception_word_extractor�match�group�replacer/ r r r. )r �foundstr�found_match�founds r �__str__zParseBaseException.__str__� s� � ��9� ��x�3�t�y�>�>�)�)�0��� 8�=�=�d�i���R�R���*�'�-�-�a�0�0�E�E� �I�d�h���A��&=�>�E�(�5�0�9�9�%��F�F����H�6�=�=��H�h���$�+�t�{�
�
�
r c � � t | � � S �N)�strrN s r �__repr__zParseBaseException.__repr__� s � ��4�y�y�r z>!<)�markerString�
marker_stringc � � |�|n|}| j }| j dz
}|r(d� |d|� |||d� f� � }|� � � S )z�
Extracts the exception line from the input string, and marks
the location of the exception with a special symbol.
Nr r )r r. r; �strip)r re rd �line_str�line_columns r �mark_input_linez"ParseBaseException.mark_input_line� sm � �
)6�(A�}�}�|���9���k�A�o��� ��w�w��,�;�,�'��x����7M�N�� �H� �~�~���r c �. � | � | |� � S )a
Method to translate the Python internal traceback into a list
of the pyparsing expressions that caused the exception to be raised.
Parameters:
- depth (default=16) - number of levels back in the stack trace to list expression
and function names; if None, the full stack trace names will be listed; if 0, only
the failing input line, marker, and exception string will be shown
Returns a multi-line string listing the ParserElements and/or function names in the
exception's stack trace.
Example::
expr = pp.Word(pp.nums) * 3
try:
expr.parse_string("123 456 A789")
except pp.ParseException as pe:
print(pe.explain(depth=0))
prints::
123 456 A789
^
ParseException: Expected W:(0-9), found 'A' (at char 8), (line:1, col:9)
Note: the diagnostic output will include string representations of the expressions
that failed to parse. These representations will be more helpful if you use `set_name` to
give identifiable names to your expressions. Otherwise they will use the default string
forms, which may be cryptic to read.
Note: pyparsing's default truncation of exception tracebacks may also truncate the
stack of expressions that are displayed in the ``explain`` output. To get the full listing
of parser expressions, you may have to set ``ParserElement.verbose_stacktrace = True``
)rG )r r= s r �explainzParseBaseException.explain� s � �J �%�%�d�E�2�2�2r )r NN)r ra )r r r
�__doc__rb �int�typing�Optionalr �staticmethodrG �classmethodrK �propertyr r r r. r_ rc rj rl �
markInputliner r r r r s� � � � � � �A�A� �$(�
�%� %��%� �%� �_�S�
!� %� %� %� %�" �?� ?� ?� �\�?�B �>� >� �[�>� �)�c� )� )� )� �X�)� �+�� +� +� +� �X�+� �(�S� (� (� (� �X�(� �(�� (� (� (� �X�(�
��
�
�
�
�$� � � �� � � �S� �SV� � � � �%3� %3�3� %3� %3� %3� %3�N $�M�M�Mr r c � � e Zd ZdZdS )�ParseExceptionaq
Exception thrown when a parse expression doesn't match the input string
Example::
try:
Word(nums).set_name("integer").parse_string("ABC")
except ParseException as pe:
print(pe)
print("column: {}".format(pe.column))
prints::
Expected integer (at char 0), (line:1, col:1)
column: 1
N�r r r
rm r r r rv rv � s � � � � � �� � � r rv c � � e Zd ZdZdS )�ParseFatalExceptionzu
User-throwable exception thrown when inconsistent parse content
is found; stops all parsing immediately
Nrw r r r ry ry � s � � � � � �� � � r ry c � � e Zd ZdZdS )�ParseSyntaxExceptionz�
Just like :class:`ParseFatalException`, but thrown internally
when an :class:`ErrorStop` ('-' operator) indicates
that parsing is to stop immediately because an unbacktrackable
syntax error has been found.
Nrw r r r r{ r{ � s � � � � � �� � � r r{ c �$ � e Zd ZdZd� Zdefd�ZdS )�RecursiveGrammarExceptionz�
Exception thrown by :class:`ParserElement.validate` if the
grammar could be left-recursive; parser may need to enable
left recursion using :class:`ParserElement.enable_left_recursion`
c � � || _ d S ra )�parseElementTrace)r �parseElementLists r r z"RecursiveGrammarException.__init__ s � �!1����r rL c �6 � d� | j � � S )NzRecursiveGrammarException: {})r/ r rN s r r_ z!RecursiveGrammarException.__str__
s � �.�5�5�d�6L�M�M�Mr N)r r r
rm r rb r_ r r r r} r} sO � � � � � �� �2� 2� 2�N�� N� N� N� N� N� Nr r} )�rer* ro �utilr r r r �unicoder �ppu�Latin1�LatinA�LatinB�Greek�Cyrillicr
� alphanums�_extract_alphanums�compilerX � Exceptionr rv ry r{ r} r r r �r� s� ��
� � � �
�
�
�
�
�
�
�
� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?� ?� -� -� -� -� -� -� � � � � �3�:�s�z�3�:�s�y�#�,� � � � 0�/�0D�0N�O�O� �&�B�J�t�.@�'@�<�'O�P�P� �F$� F$� F$� F$� F$�� F$� F$� F$�R� � � � �'� � � �(� � � � �,� � � �� � � � �.� � � �N� N� N� N� N� � N� N� N� N� Nr