File: //usr/lib/python3/dist-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc
o
@%NeF# � @ s� d dl Z d dlZd dlmZ ddlmZmZmZmZ ddl m
Z G dd� dejej
ejejej�Zeej�Ze �de d �ZG d
d� de�ZG dd
� d
e�ZG dd� de�ZG dd� de�ZG dd� de�ZdS )� N)�Optional� )�col�line�lineno�_collapse_string_to_ranges)�pyparsing_unicodec @ s e Zd ZdS )�ExceptionWordUnicodeN)�__name__�
__module__�__qualname__� r
r
�B/usr/lib/python3/dist-packages/pip/_vendor/pyparsing/exceptions.pyr s r z([z
]{1,16})|.c @ s� e Zd ZdZ d"dededee fdd�Zed#d
d��Z e
dd
� �Zedefdd��Z
edefdd��Zedefdd��Zedefdd��Zdefdd�Zdd� Zd$dd�dedefdd�Zd#defd d!�ZeZdS )%�ParseBaseExceptionz7base exception class for all parsing runtime exceptionsr N�pstr�loc�msgc C sD || _ |d u r|| _d| _n|| _|| _| | _| _|||f| _d S )N� )r r r �parser_element�
parserElement�args)�selfr r r �elemr
r
r �__init__ s zParseBaseException.__init__� c
C sz ddl }ddlm} |du rt�� }g }t| t�r+|�| j� |�d| j d d � |�d�
t| �j| �� |dkr�|j
| j|d�}t� }t|| d� �D ]h\}}|d } | j�d d�}
t|
|�r�| jjd
vrjqOt|
�|v rqqO|�t|
�� t|
�}|�d�
|j|j|
�� n&|
dur�t|
�}|�d�
|j|j�� n| j}|jd
v r�qO|�d�
|j�� |d8 }|s� nqOd�|�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{}.{})�wrapperz<module>z{}�
)�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�coder
r
r �explain_exception) sN
��
�
z$ParseBaseException.explain_exceptionc C s | |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�per
r
r �_from_exceptionk s z"ParseBaseException._from_exception�returnc C � t | j| j�S )zG
Return the line of text where the exception occurred.
)r r r �r r
r
r r s � zParseBaseException.linec C rG )zV
Return the 1-based line number of text where the exception occurred.
)r r r rH r
r
r r z rI zParseBaseException.linenoc C rG �z]
Return the 1-based column on the line of text where the exception occurred.
�r r r rH r
r
r r � rI zParseBaseException.colc C rG rJ rK rH r
r
r r) � rI zParseBaseException.columnc C s� | j r4| jt| j �krd}n(t�| j | j�}|d ur |�d�}n| j | j| jd � }d| �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�foundr
r
r �__str__� s �zParseBaseException.__str__c C s t | �S �N)�strrH r
r
r �__repr__� s zParseBaseException.__repr__z>!<)�markerString�
marker_stringc C sL |dur|n|}| j }| jd }|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) r6 �strip)r rZ rY �line_str�line_columnr
r
r �mark_input_line� s
�z"ParseBaseException.mark_input_linec C s | � | |�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``
)rB )r r8 r
r
r �explain� s %zParseBaseException.explain)r NN)r rV )r
r r �__doc__rW �intr r �staticmethodrB �classmethodrE �propertyr r r r) rU rX r^ r_ �
markInputliner
r
r
r r s: ���
�A
'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 r` r
r
r
r rg � � rg c @ rf )�ParseFatalExceptionzu
User-throwable exception thrown when inconsistent parse content
is found; stops all parsing immediately
Nrh r
r
r
r rj � ri rj c @ rf )�ParseSyntaxExceptionz�
Just like :class:`ParseFatalException`, but thrown internally
when an :class:`ErrorStop<And._ErrorStop>` ('-' operator) indicates
that parsing is to stop immediately because an unbacktrackable
syntax error has been found.
Nrh r
r
r
r rk � ri rk c @ s&