ó
    jñ:iq;  ã                   óP   • S SK Jr  S SKrS SKrSSKJrJrJrJrJ	r	   " S S5      r
g)é    )ÚcontextmanagerNé   )ÚParserElementÚParseExceptionÚKeywordÚ__diag__Ú
__compat__c                   ó  • \ rS rSrSr " S S5      r " S S5      r\      SS	SS
.S\S\	R                  \   S\	R                  \   S\S\S\	R                  \   S\	R                  \   S\	R                  \\4   S\S\4S jjj5       rSrg)Úpyparsing_testé   z:
namespace class for classes useful in writing unit tests
c                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)Ú&pyparsing_test.reset_pyparsing_contexté   a_  
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:

.. testcode::

    ppt = pyparsing.pyparsing_test

    class MyTestClass(ppt.TestParseResultsAsserts):
        def test_literal(self):
            with ppt.reset_pyparsing_context():
                # test that literals used to construct
                # a grammar are automatically suppressed
                ParserElement.inline_literals_using(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
c                 ó   • 0 U l         g ©N©Ú_save_context©Úselfs    ÚT/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/pyparsing/testing.pyÚ__init__Ú/pyparsing_test.reset_pyparsing_context.__init__<   s
   € Ø!#ˆDÕó    c                 óô  • [         R                  U R                  S'   [        R                  U R                  S'   [         R
                  U R                  S'   [         R                  U R                  S'   [         R                  U R                  S'   [         R                  (       a(  [         R                  R                  U R                  S'   OS U R                  S'   [         R                  U R                  S'   [         R                  U R                  S'   [        R                   Vs0 s H  o[        [        U5      _M     snU R                  S	'   S
[        R                   0U R                  S'   U $ s  snf )NÚdefault_whitespaceÚdefault_keyword_charsÚliteral_string_classÚverbose_stacktraceÚpackrat_enabledÚpackrat_cache_sizeÚpackrat_parseÚrecursion_enabledr   Úcollect_all_And_tokensr	   )r   ÚDEFAULT_WHITE_CHARSr   r   ÚDEFAULT_KEYWORD_CHARSÚ_literalStringClassr   Ú_packratEnabledÚpackrat_cacheÚsizeÚ_parseÚ_left_recursion_enabledr   Ú
_all_namesÚgetattrr	   r#   )r   Únames     r   ÚsaveÚ+pyparsing_test.reset_pyparsing_context.save?   sM  € Ü7D×7XÑ7XˆD×ÑÐ3Ñ4Ü:A×:WÑ:WˆD×ÑÐ6Ñ7ô ×1Ñ1ð ×ÑÐ5Ñ6ô 8E×7WÑ7WˆD×ÑÐ3Ñ4ä4A×4QÑ4QˆD×ÑÐ0Ñ1Ü×,×,ä!×/Ñ/×4Ñ4ð ×"Ñ"Ð#7Ò8ð <@�×"Ñ"Ð#7Ñ8Ü2?×2FÑ2FˆD×Ñ˜Ñ/ä×5Ñ5ð ×ÑÐ2Ñ3ô
 ;C×:MÒ:Mó.Ú:M°$”gœh¨Ó-Ò-Ñ:Mñ.ˆD×Ñ˜zÑ*ð
 )¬*×*KÑ*Kð0ˆD×Ñ˜|Ñ,ð ˆKùò.s   Ä*E5c                 óð  • [         R                  U R                  S   :w  a#  [         R                  " U R                  S   5        U R                  S   [         l        U R                  S   [
        l        [         R                  " U R                  S   5        U R                  S   R                  5        H2  u  pU(       a  [        R                  O[        R                  " U5        M4     S[         l        U R                  S   (       a$  [         R                  " U R                  S   5        OU R                  S	   [         l        U R                  S
   [         l        U R                  S   [         l        U $ )Nr   r   r   r   r   Fr   r    r!   r"   r	   )r   r$   r   Úset_default_whitespace_charsr   r   r%   ÚinlineLiteralsUsingÚitemsr   ÚenableÚdisabler'   Úenable_packratr*   r+   r	   r#   )r   r.   Úvalues      r   ÚrestoreÚ.pyparsing_test.reset_pyparsing_context.restore_   s9  € ô ×1Ñ1Ø×%Ñ%Ð&:Ñ;ó<ô ×:Ò:Ø×&Ñ&Ð';Ñ<ôð 04×/AÑ/AÐBVÑ/WŒMÔ,à,0×,>Ñ,>Ð?VÑ,WŒGÔ)Ü×-Ò-Ø×"Ñ"Ð#9Ñ:ôð  $×1Ñ1°*Ñ=×CÑCÖE‘�Þ$)”—’¬x×/?Ñ/?Ð?ÀÖFñ  Fð -2ŒMÔ)Ø×!Ñ!Ð"3×4Ü×,Ò,¨T×-?Ñ-?Ð@TÑ-UÕVà'+×'9Ñ'9¸/Ñ'J”Ô$Ø48×4FÑ4FØ#ñ5ŒMÔ1ð 15×0BÑ0BÀ<Ñ0PŒJÔ-àˆKr   c                 óp   • [        U 5      " 5       nUR                  R                  U R                  5        U$ r   )Útyper   Úupdate)r   Úrets     r   ÚcopyÚ+pyparsing_test.reset_pyparsing_context.copy€   s,   € Ü�t”*“,ˆCØ×Ñ×$Ñ$ T×%7Ñ%7Ô8ØˆJr   c                 ó"   • U R                  5       $ r   )r/   r   s    r   Ú	__enter__Ú0pyparsing_test.reset_pyparsing_context.__enter__…   s   € Ø—9‘9“;Ðr   c                 ó$   • U R                  5         g r   )r9   )r   Úargss     r   Ú__exit__Ú/pyparsing_test.reset_pyparsing_context.__exit__ˆ   s   € Ø�L‰L�Nr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r/   r9   r?   rB   rF   Ú__static_attributes__© r   r   Úreset_pyparsing_contextr      s(   † ñ#	òJ	$ò	ò@	òB	ò
	õ	r   rO   c                   ób   • \ rS rSrSr S
S jr SS jr SS jr SS jr\	\
SS4S j5       rS	rg)Ú&pyparsing_test.TestParseResultsAssertsé‹   z[
A mixin class to add parse results assertion methods to normal unittest.TestCase classes.
Nc                 óŠ   • Ub  U R                  X!R                  5       US9  Ub  U R                  X1R                  5       US9  gg)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``.
N©Úmsg)ÚassertEqualÚas_listÚas_dict)r   ÚresultÚexpected_listÚexpected_dictrU   s        r   ÚassertParseResultsEqualsÚ?pyparsing_test.TestParseResultsAsserts.assertParseResultsEquals�   sI   € ð Ñ(Ø× Ñ  ·±Ó0@ÀcÐ ÑJØÑ(Ø× Ñ  ·±Ó0@ÀcÐ ÒJð )r   c                 ó¸   • UR                  USS9nU(       a  [        UR                  5       5        O[        UR                  5       5        U R	                  XcUS9  g)z¥
Convenience wrapper assert to test a parser element and input string, and assert that
the resulting :meth:`ParseResults.as_list` is equal to the ``expected_list``.
T)Ú	parse_all)rZ   rU   N©Úparse_stringÚprintÚdumprW   r\   )r   ÚexprÚtest_stringrZ   rU   ÚverboserY   s          r   ÚassertParseAndCheckListÚ>pyparsing_test.TestParseResultsAsserts.assertParseAndCheckListœ   sM   € ð ×&Ñ& {¸dÐ&ÐCˆFÞÜ�f—k‘k“mÕ$ä�f—n‘nÓ&Ô'Ø×)Ñ)¨&ÐSVÐ)ÒWr   c                 ó¸   • UR                  USS9nU(       a  [        UR                  5       5        O[        UR                  5       5        U R	                  XcUS9  g)z¥
Convenience wrapper assert to test a parser element and input string, and assert that
the resulting :meth:`ParseResults.as_dict` is equal to the ``expected_dict``.
T)ÚparseAll)r[   rU   Nr`   )r   rd   re   r[   rU   rf   rY   s          r   ÚassertParseAndCheckDictÚ>pyparsing_test.TestParseResultsAsserts.assertParseAndCheckDictª   sM   € ð ×&Ñ& {¸TÐ&ÐBˆFÞÜ�f—k‘k“mÕ$ä�f—n‘nÓ&Ô'Ø×)Ñ)¨&ÐSVÐ)ÒWr   c                 ón  • Uu  pEUc  U R                  XCb  UOSS9  g[        XR5       VVs/ s H  u  pg/ UQUP7PM     nnnU HÃ  u  pšn[        S U 5       S5      n[        S U 5       S5      nUb;  U R                  XË=(       d    US9   [	        U
[
        5      (       a  U
e SSS5        Mj  [        S U 5       S5      n[        S U 5       S5      nXÞ4S	:w  a  U R                  U
UUU=(       d    US
9  M´  [        SU	< 35        MÅ     U R                  XCb  UOSS9  gs  snnf ! , (       d  f       Mñ  = f)a–  
Unit test assertion to evaluate output of
:meth:`~ParserElement.run_tests`.

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 ``run_tests()``
and evaluated using :meth:`assertParseResultsEquals`.
Finally, asserts that the overall
`:meth:~ParserElement.run_tests` success value is ``True``.

:param run_tests_report: the return value from :meth:`ParserElement.run_tests`
:type run_tests_report: tuple[bool, list[tuple[str, ParseResults | Exception]]]
:param expected_parse_results: (optional)
:type expected_parse_results: list[tuple[str | list | dict | Exception, ...]]
Nzfailed runTestsrT   c              3   óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7fr   )Ú
isinstanceÚstr©Ú.0Úexps     r   Ú	<genexpr>ÚNpyparsing_test.TestParseResultsAsserts.assertRunTestResults.<locals>.<genexpr>Û   s   é € Ð Q²¨¼JÀsÌC×<P§¡²ùó   ‚(Ÿ	(c              3   ó‚   #   • U  H5  n[        U[        5      (       d  M  [        U[        5      (       d  M1  Uv •  M7     g 7fr   )ro   r<   Ú
issubclassÚ	Exceptionrq   s     r   rt   ru   Ý   s2   é € ð â#+˜CÜ% c¬4×0ó ä5?ÀÄY×5O÷ ™Ú#+ùs   ‚?Ÿ?¶	?)Úexpected_exceptionrU   c              3   óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7fr   )ro   Úlistrq   s     r   rt   ru   ì   ó   é € ÐJª ´J¸sÄD×4IŸ™ªùrv   c              3   óT   #   • U  H  n[        U[        5      (       d  M  Uv •  M      g 7fr   )ro   Údictrq   s     r   rt   ru   ï   r}   rv   ©NN)rZ   r[   rU   zno validation for )Ú
assertTrueÚzipÚnextÚassertRaisesro   ry   r\   rb   )r   Úrun_tests_reportÚexpected_parse_resultsrU   Úrun_test_successÚrun_test_resultsÚrptÚexpectedÚmergedre   rY   Úfail_msgrz   rZ   r[   s                  r   ÚassertRunTestResultsÚ;pyparsing_test.TestParseResultsAsserts.assertRunTestResults¸   sŽ  € ð& 2BÑ.Ðà%Ñ-Ø—‘Ø$±©#ÐFWð  ñ ð ô &)Ð)9Ô%Rôâ%R‘M�Cð !�#Ð �xÔ Ù%Rð ñ ó 28Ñ-� Xô  Ñ Q±Ó QÐSWÓX�Ü%)ñá#+óð
 ó&Ð"ð &Ñ1Ø×*Ñ*Ø+=Ç?Èsð +ò ô & f¬i×8Ñ8Ø"(˜Lð 9÷ñ ô %)ÙJ©ÓJÈDó%�Mô %)ÙJ©ÓJÈDó%�Mð &Ð5¸ÓEØ×5Ñ5Ø"Ø*7Ø*7Ø (§¨Cð	 6ó ô Ð 2°;±/ÐBÖCñG 28ðL �O‰OØ ©_¡cÐBSð ò ùóU÷$ö ús   «DÂ
D%Ä%
D4	c              #   ó   #   • UbI  [        U[        5      (       a  [        R                  " U5      nU R	                  XUS9 nUv •  S S S 5        g U R                  XS9 nUv •  S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f7f)NrT   )ro   rp   ÚreÚescapeÚassertRaisesRegexr„   )r   Úexc_typeÚexpected_msgrU   Úctxs        r   ÚassertRaisesParseExceptionÚApyparsing_test.TestParseResultsAsserts.assertRaisesParseException  s€   é € ð Ñ'Ü˜l¬C×0Ñ0Ü#%§9¢9¨\Ó#:�LØ×+Ñ+¨HÈÐ+ÑLÐPSØ’I÷ MÐLð ×&Ñ& xÐ&Ñ9¸SØ’I÷ :Ð9÷	 MÕLú÷ :Õ9üs5   ‚?BÁA,ÁBÁA=Á#	BÁ,
A:Á6BÁ=
BÂBrN   )NNN)NTr€   )rH   rI   rJ   rK   rL   r\   rg   rk   r�   r   r   r–   rM   rN   r   r   ÚTestParseResultsAssertsrQ   ‹   sW   † ñ	ð
 GKô
	Kð GKô	Xð GKô	Xð FJôG	ðR 
à)¸À$ó	ó 
ó	r   r˜   NTÚ )ÚindentÚbase_1ÚsÚ
start_lineÚend_lineÚexpand_tabsÚeol_markÚmark_spacesÚmark_controlrš   r›   Úreturnc                ó  ^^^• U(       a  U R                  5       n [        T[        5      (       a  ST-  mTR                  5       mUbË  [        R                  " [
        U5      nUS:X  aQ  [        [        SS5      [        SS5      5       V	V
s0 s H  u  pšXš_M	     nn	n
SUS'   [
        R                  U5      nS	mOH[        U5      n[
        R                  [        [        SS
5      5      S/-    V	s0 s H  o™U_M     sn	5      nU R                  U5      n UbH  US:w  aB  US:X  a*  [
        R                  SSS.5      nU R                  U5      n OU R                  SU5      n Uc  SnUc  [        U 5      n[        U[        U 5      5      n[        [        SU5      U5      nUS:w  a  U R!                  5       X-
  U nO(U R#                  S5      X-
  U  Vs/ s H  oÿS-   PM	     nnU(       d  g	[        [        U5      5      m[        S U 5       5      nTSTS-   -  -   nUS:¼  aK  UU(       a  S	OS-   S	R%                  S [        U(       a  SOS[        US-  S5      5       5       5      -   S-   nOS	nU(       a  S	OSU-   S	R%                  S [        U* S-  * 5       5       5      -   S-   nSnUU(       a  S	OS-   UU* S-  * -  -   S-   nUU-   SR%                  UUU4S j['        XáU-   S9 5       5      -   S-   $ s  sn
n	f s  sn	f s  snf )uÇ  
Helpful method for debugging a parser - prints a string with line and column numbers.
(Line and column numbers are 1-based by default - if debugging a parse action,
pass base_1=False, to correspond to the loc value passed to the parse action.)

:param s: string to be printed with line and column numbers
:param start_line: starting line number in s to print (default=1)
:param end_line: ending line number in s to print (default=len(s))
:param expand_tabs: expand tabs to spaces, to match the pyparsing default
:param eol_mark: string to mark the end of lines, helps visualize trailing spaces
:param mark_spaces: special character to display in place of spaces
:param mark_control: 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


:param indent: string to indent with line and column numbers; if an int
               is passed, converted to ``" " * indent``
:param base_1: whether to label string using base 1; if False, string will be
               labeled based at 0

:returns: input string with leading line numbers and column number headers

.. versionchanged:: 3.2.0
   New ``indent`` and ``base_1`` arguments.
Ú Úunicoder   é!   i $  i3$  i!$  é   r™   é    i	$  i#$  )é	   r©   u   â�Šc              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Úlen)rr   Úlines     r   rt   Ú3pyparsing_test.with_line_numbers.<locals>.<genexpr>d  s   é € Ð9²¨œ3˜tŸ9˜9²ùó   ‚r   éc   c              3   ó:   #   • U  H  nS  US-   S-   3v •  M     g7f)zc                                                                                                   r   éd   NrN   ©rr   Úis     r   rt   r®   j  s(   é € ð âS˜ð  �j ! a¡%¨3¡ Õ0ÚSùs   ‚r²   Ú
c              3   ó8   #   • U  H  nS US-   S-   3v •  M     g7f)z	         r   é
   NrN   r³   s     r   rt   r®   u  s!   é € ÐXÒ:W°Q˜	 1 q¡5¨B¡, Õ0Ò:Wùr¯   r·   Ú
1234567890Ú0c              3   óF   >#   • U  H  u  pT UT S 3 SU T 3v •  M     g7f)ÚdÚ:NrN   )rr   r´   r­   r    rš   Úlineno_widths      €€€r   rt   r®     s7   øé € ð âL‘G�Að �(˜1˜l˜^¨1Ð,Ð-¨Q¨t¨f°X°JÕ?ÚLùs   ƒ!)Ústart)Ú
expandtabsro   ÚintÚtypingÚcastrp   r‚   ÚrangeÚ	maketransÚordr|   Ú	translateÚreplacer¬   ÚminÚmaxÚ
splitlinesÚsplitÚjoinÚ	enumerate)rœ   r�   rž   rŸ   r    r¡   r¢   rš   r›   ÚcÚuÚtranstable_mapÚtblÚord_mark_controlÚs_linesr­   Úmax_line_lenÚleadÚheader0Úheader1ÚdigitsÚheader2r½   s       `  `              @r   Úwith_line_numbersÚ pyparsing_test.with_line_numbers  s:  ú€ öT Ø—‘“ˆAÜ�fœc×"Ñ"Ø˜6‘\ˆFØ×"Ñ"Ó$ˆØÑ#Ü!Ÿ;š;¤s¨LÓ9ˆLØ˜yÓ(ä%(¬¨q°"«´u¸VÀVÓ7LÔ%Mô"Ú%M™T˜Q�A’DÑ%Mð ñ "ð '-�˜sÑ#Ü—m‘m NÓ3�Ø‘ä#& |Ó#4Ð Ü—m‘mÜ26´u¸QÀ³|Ó2DÈÀuÒ2LÓMÒ2L¨QÐ(Ò(Ñ2LÑMó�ð —‘˜CÓ ˆAØÑ" {°cÓ'9Ø˜iÓ'Ü—m‘m¨°FÑ$;Ó<�Ø—K‘K Ó$‘à—I‘I˜c ;Ó/�ØÑØˆJØÑÜ˜1“vˆHÜ�x¤ Q£Ó(ˆÜœ˜Q 
Ó+¨XÓ6ˆ
à˜9Ó$Ø—l‘l“n ZÑ%8¸8ÐD‰Gð *+¯©°«¸
Ñ8KÈhÑ)WóÚ)W �u”Ñ)Wð ð ö Øäœ3˜x›=Ó)ˆÜÑ9±Ó9Ó9ˆØ˜˜|¨aÑ/Ñ0Ñ0ˆØ˜2ÓàÞ‘2 Sñ*à—'‘'ñ ä"®¡1°A´s¸<È3Ñ;NÐPQÓ7RÔSóó ñð ññ ð ˆGæ‰R˜sØñà�g‰gÑX¼%À<À-ÐSUÑBUÐ@VÔ:WÓXÓXñYð ñð 	ð ˆàž&‘B cÑ*¨V¸,¸È"Ñ9LÐ7MÑ-NÑNÐQUÑUð 	ð Øñà�i‰iö ä(¨ÀVÑ8KÒLóó ñð ñð	
ùów"ùò Nùò&s   ÂK2Ã/K8ÇK=rN   )NNTÚ|NN)rH   rI   rJ   rK   rL   rO   r˜   Ústaticmethodrp   rÁ   ÚOptionalrÀ   ÚboolÚUnionrÚ   rM   rN   r   r   r   r      sô   † ñ÷sñ s÷jBñ BðH ð ,0Ø)-Ø ØØ,0Ø-1ðt
ð *,Øòt
Øðt
à—O‘O CÑ(ðt
ð —/‘/ #Ñ&ðt
ð ð	t
ð
 ðt
ð —_‘_ SÑ)ðt
ð —o‘o cÑ*ðt
ð —‘˜S #˜XÑ&ðt
ð ðt
ð 
õt
ó ót
r   r   )Ú
contextlibr   r�   rÁ   Úcorer   r   r   r   r	   r   rN   r   r   Ú<module>rã      s&   ðõ &Û 	Û ÷õ ÷s
ò s
r   