bgZ4PddlmZddlZddlmZmZmZmZmZGddZ dS))contextmanagerN) ParserElementParseExceptionKeyword__diag__ __compat__ceZdZdZGddZGddZe dd ed ej e d ej e d e d edej edej edefdZ dS)pyparsing_testzB namespace class for classes useful in writing unit tests c6eZdZdZdZdZdZdZdZdZ dS) &pyparsing_test.reset_pyparsing_contexta Context manager to be used when writing unit tests that modify pyparsing config values: - packrat parsing - bounded recursion parsing - default whitespace characters. - default keyword characters - literal string auto-conversion class - __diag__ settings Example:: with reset_pyparsing_context(): # test that literals used to construct a grammar are automatically suppressed ParserElement.inlineLiteralsUsing(Suppress) term = Word(alphas) | Word(nums) group = Group('(' + term[...] + ')') # assert that the '()' characters are not included in the parsed tokens self.assertParseAndCheckList(group, "(abc 123 def)", ['abc', '123', 'def']) # after exiting context manager, literals are converted to Literal expressions again ci|_dSN) _save_contextselfs b/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pyparsing/testing.py__init__z/pyparsing_test.reset_pyparsing_context.__init__-s!#D   ctj|jd<tj|jd<tj|jd<tj|jd<tj|jd<tjrtjj |jd<n d|jd<tj |jd<tj |jd<d tj D|jd <d tji|jd <|S) Ndefault_whitespacedefault_keyword_charsliteral_string_classverbose_stacktracepackrat_enabledpackrat_cache_size packrat_parserecursion_enabledc:i|]}|tt|S)getattrr).0names r z?pyparsing_test.reset_pyparsing_context.save..Fs1...26gh--...rrcollect_all_And_tokensr )rDEFAULT_WHITE_CHARSrrDEFAULT_KEYWORD_CHARS_literalStringClassr_packratEnabled packrat_cachesize_parse_left_recursion_enabledr _all_namesr r%rs rsavez+pyparsing_test.reset_pyparsing_context.save0s7D7XD 3 4:A:WD 6 71  & 8E7WD 3 44A4QD 0 1, @"/4"(<@"#782?2FD  /5  # ..:B:M...D z * )**K0D | ,Krctj|jdkrtj|jd|jdt_|jdt _tj|jd|jdD](\}}|r tj n tj |)dt_ |jdr tj |jdn|jd t_|jd t_|jd t _|S) NrrrrrFrrrrr )rr&rset_default_whitespace_charsrrr'inlineLiteralsUsingitemsrenabledisabler)enable_packratr,r-r r%)rr#values rrestorez.pyparsing_test.reset_pyparsing_context.restorePsE1%&:;<<:&';<04/ABV/WM ,,0,>?V,WG )  -"#9:    $1*=CCEE G G e?E?x/?FFFF,1M )!"34 K,T-?@T-UVVVV'+'9/'J $484F#5M 1150B<0PJ -Krcrt|}|j|j|Sr)typerupdate)rrets rcopyz+pyparsing_test.reset_pyparsing_context.copyqs2$t**,,C   $ $T%7 8 8 8Jrc*|Sr)r/rs r __enter__z0pyparsing_test.reset_pyparsing_context.__enter__vs99;; rc.|dSr)r8)rargss r__exit__z/pyparsing_test.reset_pyparsing_context.__exit__ys LLNNNNNrN) __name__ __module__ __qualname____doc__rr/r8r=r?rBr rrreset_pyparsing_contextr sz  0 $ $ $   @   B            rrGcVeZdZdZ d dZ d dZ d dZ d dZee dfdZ dS) &pyparsing_test.TestParseResultsAssertszk A mixin class to add parse results assertion methods to normal unittest.TestCase classes. Nc|*|||||,||||dSdS)z Unit test assertion to compare a :class:`ParseResults` object with an optional ``expected_list``, and compare any defined results names with an optional ``expected_dict``. Nmsg) assertEqualas_listas_dict)rresult expected_list expected_dictrLs rassertParseResultsEqualsz?pyparsing_test.TestParseResultsAsserts.assertParseResultsEqualssh(  0@0@c JJJ(  0@0@c JJJJJ)(rTc||d}|r"t|n!t|||||dS)z Convenience wrapper assert to test a parser element and input string, and assert that the resulting ``ParseResults.asList()`` is equal to the ``expected_list``. T) parse_all)rQrLN parse_stringprintdumprNrS)rexpr test_stringrQrLverboserPs rassertParseAndCheckListz>pyparsing_test.TestParseResultsAsserts.assertParseAndCheckListsw&&{d&CCF (fkkmm$$$$fnn&&'''  ) )& SV ) W W W W Wrc||d}|r"t|n!t|||||dS)z Convenience wrapper assert to test a parser element and input string, and assert that the resulting ``ParseResults.asDict()`` is equal to the ``expected_dict``. T)parseAll)rRrLNrV)rrZr[rRrLr\rPs rassertParseAndCheckDictz>pyparsing_test.TestParseResultsAsserts.assertParseAndCheckDictsw&&{T&BBF (fkkmm$$$$fnn&&'''  ) )& SV ) W W W W Wrc|\}}|dt||D}|D]\}}} td| Dd} td| Dd} | J|| | p|5t|tr| dddn #1swxYwYtd| Dd} td| Dd} | | fdkr||| | | p| t d |||||nd dS) ah Unit test assertion to evaluate output of ``ParserElement.runTests()``. If a list of list-dict tuples is given as the ``expected_parse_results`` argument, then these are zipped with the report tuples returned by ``runTests`` and evaluated using ``assertParseResultsEquals``. Finally, asserts that the overall ``runTests()`` success value is ``True``. :param run_tests_report: tuple(bool, [tuple(str, ParseResults or Exception)]) returned from runTests :param expected_parse_results (optional): [tuple(str, list, dict, Exception)] Nc"g|] \}}g||R Sr r )r"rptexpecteds r zOpyparsing_test.TestParseResultsAsserts.assertRunTestResults..s9%X%c$8$$rc3DK|]}t|t|VdSr) isinstancestrr"exps r zNpyparsing_test.TestParseResultsAsserts.assertRunTestResults..s1IIJsC4H4HIIIIIIIrc3nK|]0}t|tt|t,|V1dSr)rgr: issubclass Exceptionris rrkzNpyparsing_test.TestParseResultsAsserts.assertRunTestResults..s[ #)#t44:DC9S9Sr)expected_exceptionrLc3DK|]}t|t|VdSr)rglistris rrkzNpyparsing_test.TestParseResultsAsserts.assertRunTestResults..1NNS 38M8MNSNNNNNNrc3DK|]}t|t|VdSr)rgdictris rrkzNpyparsing_test.TestParseResultsAsserts.assertRunTestResults..rrrNN)rQrRrLzno validation for {!r}zfailed runTestsrK) zipnext assertRaisesrgrnrSrXformat assertTrue)rrun_tests_reportexpected_parse_resultsrLrun_test_successrun_test_resultsmergedr[rPrdfail_msgrorQrRs rassertRunTestResultsz;pyparsing_test.TestParseResultsAsserts.assertRunTestResultss82B . .%1),-=?U)V)V6<%P%P1K $IIIII4  H*.'/  **&*5!../AxSV/-- *&)<<-&, ---------------- )-NNHNNNPT)) )-NNHNNNPT)) *=9\II 99 &.;.;$,O :"":"A"A+"N"NOOOO OO S_ccBS      s;B  B$ 'B$ c#rK|||5dVddddS#1swxYwYdS)NrK)rx)rexc_typerLs rassertRaisesParseExceptionzApyparsing_test.TestParseResultsAsserts.assertRaisesParseExceptions""8"55                    s ,00)NNN)NTru) rCrDrErFrSr]r`rrrrr rrTestParseResultsAssertsrI|s  GK K K K KGK X X X XGK X X X XFJ= = = = ~ 6D$       rrNT|s start_lineend_line expand_tabseol_mark mark_spaces mark_controlreturnc |r|}dkrVtdtt ddt ddDdd iz}d nEtfd t t dd dgzD}||}|U|d krO|dkr3tddd}||}n|d |}|d}|t|}t|t|}ttd||}dkr | |dz |}n*d| d|dz |D}|sd Stt|td|D} d dzz} | dkrD| d dt t| dzdDzdz} nd } | | zd dt | dz Dzdz} | d| dz zzdz} | | zd fdt||DzdzS)u  Helpful method for debugging a parser - prints a string with line and column numbers. (Line and column numbers are 1-based.) :param s: tuple(bool, str - string to be printed with line and column numbers :param start_line: int - (optional) starting line number in s to print (default=1) :param end_line: int - (optional) ending line number in s to print (default=len(s)) :param expand_tabs: bool - (optional) expand tabs to spaces, to match the pyparsing default :param eol_mark: str - (optional) string to mark the end of lines, helps visualize trailing spaces (default="|") :param mark_spaces: str - (optional) special character to display in place of spaces :param mark_control: str - (optional) convert non-printing control characters to a placeholding character; valid values: - "unicode" - replaces control chars with Unicode symbols, such as "␍" and "␊" - any single character string - replace control characters with given string - None (default) - string is displayed as-is :return: str - input string with leading line numbers and column number headers Nunicodeci|]\}}|| Sr r )r"cus rr$z4pyparsing_test.with_line_numbers..sOOOdaQOOOrr!i$i3$i!$ci|]}|Sr r )r"rrs rr$z4pyparsing_test.with_line_numbers..sIIIQ IIIr  i $i#$) rrcg|]}|dzS)␊r r"lines rrez4pyparsing_test.with_line_numbers..'sZZZte|ZZZrrc34K|]}t|VdSr)lenrs rrkz3pyparsing_test.with_line_numbers..,s(993t99999999rcc3NK|] }dd|dzdzV!dS)z{}{}zc rdNryr"is rrkz3pyparsing_test.with_line_numbers..1sLMM(QUcM::rr c3LK|]}d|dzdzV dS)z {}r Nrrs rrkz3pyparsing_test.with_line_numbers..<sL$$a!er\22rr 1234567890c3NK|]\}}d||V dS)z {:{}d}:{}{}Nr)r"rrr lineno_widths rrkz3pyparsing_test.with_line_numbers..FsOAt$$Q dHEEr)start) expandtabsrh maketransrvrangerq translatereplacerminmax splitlinessplitjoin enumerate)rrrrrrrtbls_lines max_line_lenleadheader0header1header2rs ` ` @rwith_line_numbersz pyparsing_test.with_line_numberssn8   A  #y((mmOOc%2,,ff8M8M&N&NOOOFm$mmIIIId5B<<.@.@C5.HIII C  A  "{c'9'9i''mmF$;$;<<KK$$IIc;//  J  1vvHxQ((Q ++X66 9 $ $llnnZ!^h%>?GGZZzA~PX?X0YZZZG 23x==)) 9999999 lQ&' 2  ''"3|s':A#>#>??   GG  gg,"!4566     L=B+>)?@@4G  ii( CCC     r)NNTrNN) rCrDrErFrGr staticmethodrhtypingOptionalintboolrr rrr r s0ffffffffPoooooooob,0)- ,0-1] ] ] OC(] /#&]  ]  ] _S) ] oc*]  ] ] ] \] ] ] rr ) contextlibrrcorerrrrr r r rrrs&%%%%% | | | | | | | | | | r