U
ʗRe?# @ s d dl Z d dlZd dlZddlmZmZmZmZ ddlm Z
G dd de
je
je
j
e
je
jZeejZe de d ZG d d
d
eZG dd deZG d
d deZG dd deZG dd deZdS ) N )collinelineno_collapse_string_to_ranges)pyparsing_unicodec @ s e Zd ZdS )ExceptionWordUnicodeN)__name__
__module____qualname__ r r /builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_vendor/pyparsing/exceptions.pyr s r z([z
]{1,16})|.c @ s e Zd ZdZd eeeje dddZe d!dd Z
ed
d Ze
edd
dZe
edddZe
edddZe
edddZedddZdd Zd"ddeedddZd#edddZeZdS )$ParseBaseExceptionz7base exception class for all parsing runtime exceptionsr N)pstrlocmsgc C sD || _ |d kr|| _d| _n|| _|| _| | _| _|||f| _d S )N )r r r parser_element
parserElementargs)selfr r r elemr r r
__init__ s zParseBaseException.__init__ c
C s ddl }ddlm} |dkr$t }g }t| trV|| j |d| j d d |d
t| j| |dkrz|j
| j|d}t }t|| d D ]\}}|d } | jd d}
t|
|r| jjd
krqt|
|krq|t|
t|
}|d
|j|j|
nP|
dk r@t|
}|d
|j|j n&| j}|jd
krTq|d
|j |d8 }|s qzqd|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{}
)inspectcorer sysgetrecursionlimit
isinstancer appendr columnformattyper getinnerframes
__traceback__set enumeratef_localsgetf_codeco_nameidaddr
join)
excdepthr" r retcallersseenifffrmf_self self_typecoder r r
explain_exception) sP
z$ParseBaseException.explain_exceptionc C s | |j |j|j|jS )z
internal factory method to simplify creating one type of ParseException
from another - avoids having __init__ signature conflicts among subclasses
)r r r r )clsper r r
_from_exceptionk s z"ParseBaseException._from_exceptionreturnc C s t | j| jS )zG
Return the line of text where the exception occurred.
)r r r r r r r
r s s zParseBaseException.linec C s t | j| jS )zV
Return the 1-based line number of text where the exception occurred.
)r r r rG r r r
r z s zParseBaseException.linenoc C s t | j| jS z]
Return the 1-based column on the line of text where the exception occurred.
r r r rG r r r
r s zParseBaseException.colc C s t | j| jS rH rI rG r r r
r( s zParseBaseException.columnc C s | j rh| jt| j krd}qlt| j | j}|d k r@|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_extractormatchgroupreplacer) r r r( )r foundstrfound_matchfoundr r r
__str__ s zParseBaseException.__str__c C s t | S N)strrG r r r
__repr__ s zParseBaseException.__repr__z>!<)markerString)
marker_stringrF c C sL |dk r|n|}| j }| jd }|rDd|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( r5 strip)r rX rW line_strline_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``
)rA )r r7 r r r
explain s %zParseBaseException.explain)r NN)r )N)r )r r
r __doc__rU inttypingOptionalr staticmethodrA classmethodrD propertyr r r r( rS rV r\ r]
markInputliner r r r
r s4 A
'r c @ s 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
Nr r
r r^ r r r r
rf s rf c @ s e Zd ZdZdS )ParseFatalExceptionzu
User-throwable exception thrown when inconsistent parse content
is found; stops all parsing immediately
Nrg r r r r
rh s rh c @ s 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.
Nrg r r r r
ri s ri c @ s&