U ʗRe?#@sddlZddlZddlZddlmZmZmZmZddlm Z Gddde j e j e j e je jZeejZededZGd d d eZGd d d eZGd ddeZGdddeZGdddeZdS)N)collinelineno_collapse_string_to_ranges)pyparsing_unicodec@s eZdZdS)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 srz([z ]{1,16})|.c@seZdZdZd eeejedddZe d!dd Z e d d Z e ed d dZe ed ddZe ed ddZe ed ddZed ddZddZd"ddeedddZd#ed ddZeZdS)$ParseBaseExceptionz7base exception class for all parsing runtime exceptionsrN)pstrlocmsgcCsD||_|dkr||_d|_n ||_||_||_|_|||f|_dS)N)rrrparser_element parserElementargs)selfrrrelemr r r __init__s zParseBaseException.__init__c Csddl}ddlm}|dkr$t}g}t|trV||j|d|j dd|d t |j ||dkrz|j |j|d}t}t|| dD]\}}|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}|sqzqd|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. rNr) ParserElement ^z{}: {})contextr) parseImpl _parseNoCachez {}.{} - {}z{}.{})wrapperzz{} )inspectcorersysgetrecursionlimit isinstancerappendrcolumnformattyper getinnerframes __traceback__set enumeratef_localsgetf_codeco_nameidaddr join) excdepthr"rretcallersseenifffrmf_self self_typecoder r r explain_exception)sP         z$ParseBaseException.explain_exceptioncCs||j|j|j|jS)z internal factory method to simplify creating one type of ParseException from another - avoids having __init__ signature conflicts among subclasses )rrrr)clsper r r _from_exceptionksz"ParseBaseException._from_exceptionreturncCst|j|jS)zG Return the line of text where the exception occurred. )rrrrr r r rsszParseBaseException.linecCst|j|jS)zV Return the 1-based line number of text where the exception occurred. )rrrrGr r r rzszParseBaseException.linenocCst|j|jSz] Return the 1-based column on the line of text where the exception occurred. rrrrGr r r rszParseBaseException.colcCst|j|jSrHrIrGr r r r(szParseBaseException.columncCs|jrh|jt|jkrd}qlt|j|j}|dk r@|d}n|j|j|jd}d|dd}nd}d|j||j|j |j S) Nz, found end of textrrz , found %rz\\\rz%{}{} (at char {}), (line:{}, col:{})) rrlen_exception_word_extractormatchgroupreplacer)rrr()rfoundstr found_matchfoundr r r __str__s  zParseBaseException.__str__cCst|SN)strrGr r r __repr__szParseBaseException.__repr__z>!<) markerString) marker_stringrFcCsL|dk r |n|}|j}|jd}|rDd|d||||df}|S)z Extracts the exception line from the input string, and marks the location of the exception with a special symbol. Nrr)rr(r5strip)rrXrWline_str line_columnr r r mark_input_lines z"ParseBaseException.mark_input_linecCs |||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)rr7r r r explains%zParseBaseException.explain)rNN)r)N)r)r r r __doc__rUinttypingOptionalr staticmethodrA classmethodrDpropertyrrrr(rSrVr\r] markInputliner r r r rs4  A 'rc@seZdZdZdS)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 rfsrfc@seZdZdZdS)ParseFatalExceptionzu User-throwable exception thrown when inconsistent parse content is found; stops all parsing immediately Nrgr r r r rhsrhc@seZdZdZdS)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. Nrgr r r r risric@s&eZdZdZddZedddZdS)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` cCs ||_dSrT)parseElementTrace)rparseElementListr r r rsz"RecursiveGrammarException.__init__rEcCs d|jS)NzRecursiveGrammarException: {})r)rkrGr r r rS sz!RecursiveGrammarException.__str__N)r r r r^rrUrSr r r r rjsrj)rer$r`utilrrrrunicoderppuLatin1LatinALatinBGreekCyrillicr alphanums_extract_alphanumscompilerL Exceptionrrfrhrirjr r r r s " J