Ë
    #´˜j¥K  ã                   ó®   — d Z ddlmZ ddlZddlmZ  G d„ dej                  «      Z G d„ dej                  «      Ze	d	k(  r ej                  d
¬«       yy)zTest pyparse, coverage 96%.é    )ÚpyparseN)Ú
namedtuplec                   ó   — e Zd Zd„ Zd„ Zy)ÚParseMapTestc                 óT  — dD �ci c]  }t        |«      t        |«      “Œ }}t        j                  |«      }| j                  |t        d«         t        d«      «       | j                  |t        d«         t        d«      «       | j                  |d   t        d«      «       y c c}w )Nz 	
Ú	ÚaÚxiè  )Úordr   ÚParseMapÚassertEqual)ÚselfÚcÚ	keepwhiteÚmappings       ú0lib/python3.12/idlelib/idle_test/test_pyparse.pyÚtest_parsemapzParseMapTest.test_parsemap
   s‰   € Ù-6Ó7©Y¨”S˜“VœS ›V‘^¨Yˆ	Ð7Ü×"Ñ" 9Ó-ˆØ×Ñ˜¤ T£Ñ+¬S°«YÔ7Ø×Ñ˜¤ S£Ñ*¬C°«HÔ5Ø×Ñ˜ ™¬¨C«Õ1ùò	 8s   …B%c                 óŽ   — t        j                  dd«      }| j                  dj                  t         j                  «      d«       y )Né   z	 a([{b}])b"c'd
zxxx(((x)))x"x'x
)r   ÚParserr   Ú	translateÚtrans)r   Úparsers     r   Ú
test_transzParseMapTest.test_trans   s5   € ä—‘  1Ó%ˆØ×ÑÐ.×8Ñ8¼¿¹ÓGØ-õ	/ó    N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r      s   „ ò2ó/r   r   c                   ó€   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚPyParseTestc                 ó<   — t        j                  dd¬«      | _        y )Nr   )ÚindentwidthÚtabwidth)r   r   r   ©Úclss    r   Ú
setUpClasszPyParseTest.setUpClass   s   € ä—^‘^°¸AÔ>ˆ�
r   c                 ó   — | ` y ©N)r   r%   s    r   ÚtearDownClasszPyParseTest.tearDownClass   s   € à‰Jr   c                 óœ   — | j                  | j                  j                  d«       | j                  | j                  j                  d«       y )Nr   )r   r   r#   r$   )r   s    r   Ú	test_initzPyParseTest.test_init"   s6   € Ø×Ñ˜Ÿ™×0Ñ0°!Ô4Ø×Ñ˜Ÿ™×-Ñ-¨qÕ1r   c                 ól  — | j                   }| j                  }|j                  }| j                  t        «      5   |d«       d d d «       d}|D ]K  }| j                  |¬«      5   ||«        ||j                  |«        ||j                  d«       d d d «       ŒM y # 1 sw Y   Œ\xY w# 1 sw Y   ŒdxY w)Nr	   )Ú úa
©Ústringr   )r   r   Úset_codeÚassertRaisesÚAssertionErrorÚsubTestÚcodeÚstudy_level)r   ÚeqÚpÚsetcodeÚtestsr1   s         r   Útest_set_codezPyParseTest.test_set_code&   s™   € Ø×ÑˆØ�K‰KˆØ—*‘*ˆð ×Ñœ~Õ.Ù�CŒL÷ /ðˆó ˆFØ—‘ V�Õ,Ù˜”Ù�1—6‘6˜6Ô"Ù�1—=‘= !Ô$÷ -Ð,ñ ÷ /Ð.ú÷ -Ð,ús   º	BÁ$/B*ÂB'Â*B3	c                 ó
  ‡— | j                   }| j                  }|j                  }|j                  }d„ } |d«        | ||«      d«        |d«        | ||«      d«        |d«       d\  }Š| j	                  t
        «      5   |«        d d d «       | j	                  t
        «      5   |d«       d d d «       | j                   |d„ ¬	«      «        | ||«      ‰«        | |ˆfd
„¬	«      ‰«        | |ˆfd„¬	«      |«        | |ˆfd„¬	«      d «        |d«        | ||«      ‰«        | |ˆfd„¬	«      ‰«        | |ˆfd„¬	«      |«        | |ˆfd„¬	«      ‰«       y # 1 sw Y   ŒáxY w# 1 sw Y   ŒÇxY w)Nc                  ó   — y)NFr   ©Úindexs    r   Úchar_in_string_falsezDPyParseTest.test_find_good_parse_start.<locals>.char_in_string_false=   s   € °r   zdef spam():
r   zclass spam(  
úk"""This is a module docstring"""
class C:
    def __init__(self, a,
                 b=True):
        pass
)é!   é*   Fc                  ó   — y)NTr   r?   s    r   Ú<lambda>z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>[   s   € Àr   )Úis_char_in_stringc                 ó   •— | ‰kD  S r)   r   ©r@   Úposs    €r   rF   z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>c   ó	   ø€ °¸²r   c                 ó   •— | ‰k\  S r)   r   rI   s    €r   rF   z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>f   ó	   ø€ °¸#²r   c                 ó   •— | ‰k  S r)   r   rI   s    €r   rF   z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>i   rK   r   zZ"""This is a module docstring"""
class C:
    def __init__(self, a, b=True):
        pass
c                 ó   •— | ‰kD  S r)   r   rI   s    €r   rF   z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>s   rK   r   c                 ó   •— | ‰k\  S r)   r   rI   s    €r   rF   z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>t   rM   r   c                 ó   •— | ‰k  S r)   r   rI   s    €r   rF   z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>w   rK   r   )r   r   r2   Úfind_good_parse_startr3   Ú	TypeErrorÚassertIsNone)r   r8   r9   r:   ÚstartrA   Úpos0rJ   s          @r   Útest_find_good_parse_startz&PyParseTest.test_find_good_parse_start8   ss  ø€ Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×'Ñ'ˆÚ5ñ 	�Ô Ù
‰5Ð%Ó&¨Ô*ñ 	Ð&Ô'Ù
‰5Ð%Ó&¨Ô*ñ 	ð !ô 	ð ‰	ˆˆcð ×ÑœyÕ)ÙŒG÷ *à×ÑœyÕ)Ù�%ŒL÷ *ð
 	×Ñ™%Ñ2DÔEÔFñ 	‰5Ð%Ó&¨Ô,ñ 	‰5Ó#<Ô=¸sÔCñ 	‰5Ó#=Ô>ÀÔEñ 	‰5Ó#<Ô=¸tÔDñ 	ð !ô 	ñ
 	‰5Ð%Ó&¨Ô,Ù
‰5Ó#<Ô=¸sÔCÙ
‰5Ó#=Ô>ÀÔEñ 	‰5Ó#<Ô=¸sÕC÷G *Ð)úç)Ð)ús   ÂE-Â*	E9Å-E6Å9Fc                 óv  — d}d}| j                   }|j                  |«       | j                  t        «      5  |j	                  d«       d d d «       |j	                  d«       | j                  |j                  |«       |j	                  |«       | j                  |j                  ||d  «       y # 1 sw Y   ŒgxY w)NrB   rD   é   r   )r   r2   r3   r4   Úset_lor   r6   )r   r6   rJ   r9   s       r   Útest_set_lozPyParseTest.test_set_loy   s™   € ð!ð 	ð ˆØ�K‰KˆØ	�
‰
�4Ôð ×Ñœ~Õ.Ø�H‰H�QŒK÷ /ð 	
�‰�ŒØ×Ñ˜Ÿ™ Ô&ð 	
�‰�ŒØ×Ñ˜Ÿ™  c d Õ,÷ /Ð.ús   ·B/Â/B8c                 óÚ  — | j                   }| j                  }|j                  }|j                  }t	        d«      \  }}}}}	t        dg d¢«      }
 |
ddg|«       |
dddg|«       |
dddg|«       |
d	ddg|«       |
d
ddg|«       |
dddg|«       |
dddg|«       |
dddg|«       |
dddg|«       |
dddg|«       |
dg d¢|«       |
dddg|«       |
dddg|	«       |
dddg|«       |
dddg|«       |
dg d¢|«       |
dg d¢|	«       |
dg d¢|	«       |
dddg|«       |
dddg|	«       |
dddg|«      f}|D ]�  }| j                  |j                  ¬«      5   ||j                  «        |«         ||j                  d«        ||j                  |j                  «        ||j                  |j                  «       d d d «       Œ� | j                   |«       «       y # 1 sw Y   Œ°xY w)NrY   ÚTestInfo)r1   Ú	goodlinesÚcontinuationr.   r   z$"""This is a complete docstring."""
é   z$'''This is a complete docstring.'''
z""""This is a continued docstring.
z"'''This is a continued docstring.
z""""Closing quote does not match."
z"""Bracket in docstring [
z#'''Incomplete two line docstring.

é   z"This is a complete string."
z"This is an incomplete string.
z'This is more incomplete.

)r   r`   ra   z# Comment\
z"("""Complete string in bracket"""
z("""Open string in bracket
úa = (1 + 2) - 5 *\
ú0
   def function1(self, a,
                 b):
)r   r`   é   ú
   def function1(self, a,\
ú
   def function1(self, a,
ú())
ú)(
ú{)(]
r0   )r   r   r2   Ú_study1Úranger   r5   r1   r7   r^   r_   rT   )r   r8   r9   r:   ÚstudyÚNONEÚ	BACKSLASHÚFIRSTÚNEXTÚBRACKETr]   r;   Útests                r   Útest_study1zPyParseTest.test_study1‘   s-  € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ—	‘	ˆä27¸³(Ñ/ˆˆy˜%  wÜ˜jò +;ó <ˆñ �R˜!˜˜dÓ#áÐ<¸qÀ!¸fÀdÓKÙÐ<¸qÀ!¸fÀdÓKÙÐ:¸QÀ¸FÀEÓJÙÐ:¸QÀ¸FÀEÓJÙÐ:¸QÀ¸FÀEÓJÙÐ2°Q¸°F¸EÓBÙÐ<¸qÀ!¸fÀdÓKáÐ5¸¸1°v¸tÓDÙÐ7¸!¸Q¸ÀÓFÙÐ4²iÀÓFá�_ q¨! f¨dÓ3áÐ:¸QÀ¸FÀGÓLÙÐ3°a¸°V¸UÓCÙÐ,¨q°!¨f°iÓ@ÙÐJÚ ó&áÐ6º	À7ÓKÙÐ4²iÀÓIÙ�W˜q !˜f dÓ+Ù�V˜a ˜V WÓ-á�X  1˜v tÓ,ð7ˆó< ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù”Ù�1—=‘= !Ô$Ù�1—;‘; §¡Ô/Ù�1—>‘> 4×#4Ñ#4Ô5÷ 2Ð1ð ð 	×Ñ™%›'Õ"÷ 2Ð1ús   ÅA'G!Ç!G*	c                 óº  — | j                   }| j                  }|j                  }|j                  }t	        d«      \  }}}}}	t        dddg«      }
 |
d|«       |
d|«       |
d|«       |
d|«       |
d	|	«      f}|D ]Q  }| j                  |j                  ¬
«      5   ||j                  «        | |«       |j                  «       d d d «       ŒS y # 1 sw Y   Œ^xY w)NrY   r]   r1   r_   r.   z%"""This is a continuation docstring.
z-'''This is a multiline-continued docstring.

rb   re   r0   )	r   r   r2   Úget_continuation_typerk   r   r5   r1   r_   )r   r8   r9   r:   Úgettyperm   rn   ro   rp   rq   r]   r;   rr   s                r   Útest_get_continuation_typez&PyParseTest.test_get_continuation_typeÃ   s×   € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×)Ñ)ˆä27¸³(Ñ/ˆˆy˜%  wÜ˜j¨8°^Ð*DÓEˆá�R˜ÓÙÐ=¸uÓEÙÐFÈÓMÙÐ,¨iÓ8ÙÐ6¸Ó@ðˆó ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù‘7“9˜d×/Ñ/Ô0÷ 2Ð1ñ ß1Ð1ús   Â+CÃC	c                 ó  — | j                   }| j                  }|j                  }|j                  }t	        dg d¢«      } |ddddd d«       |ddddd d	«       |d
dddd d«       |ddddd d«       |ddddd d«       |ddddd d«       |dddddd«       |dddddd«       |dddddd«       |d dd!dd"d#«       |d$dd%d&d d'«       |d(dd)d*dd+«       |d,dd-d.d d/«       |d0dd%d1d d«       |d2dddd d«      f}|D ]ä  }| j                  |j                  ¬3«      5   ||j                  «        |«         ||j                  d4«        ||j                  |j                  «        ||j                  |j                  «        ||j                  |j                  «        ||j                  |j                  «        ||j                  |j                   «       d d d «       Œæ | j#                   |«       «       y # 1 sw Y   �ŒxY w)5Nr]   )r1   rU   ÚendÚlastchÚopenbracketÚ
bracketingr.   r   ©©r   r   z0'''This is a multiline continuation docstring.

é0   Ú')r~   ©r   r`   )r   r   z # Comment\
é   )r~   ©r`   r`   )r‚   r   z #Comment\
rb   é   Ú*)r~   ©r   r`   )é   r   rc   r`   Ú:)©r`   r   ©é   r`   )é.   r   re   é   Ú,r‹   )r‰   rŠ   rf   é   z3
   def function1(self, a,  # End of line comment.
é3   )r‰   rŠ   )r�   ra   )r�   r`   z7  a = ["first item",
  # Comment line
    "next item",
é7   é   )r~   )r’   r`   )é   ra   )r„   r`   )é   ra   )é&   r`   )rD   ra   )é5   r`   rg   r   Ú))r~   r�   ©ra   r   ©rd   r   rh   rd   Ú()r~   r‰   rƒ   ri   rY   Ú]©r~   r�   r˜   ©ra   r`   ©r   r   z:\a
z\aÚ
r0   ra   )r   r   r2   Ú_study2r   r5   r1   r7   Ú
stmt_startrU   Ústmt_endry   rz   Úlastopenbracketposr{   Ústmt_bracketingr|   rT   )r   r8   r9   r:   rl   r]   r;   rr   s           r   Útest_study2zPyParseTest.test_study2Ø   se  € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ—	‘	ˆä˜jò +Hó Iˆñ �R˜˜A˜r 4¨Ó3ÙÐIØ˜˜C Ð'@óBáÐ%Ø˜˜B Ð&?óAñ �_Ø˜˜2˜t Yó0ñ Ð,Ø˜˜C Ð'@óBñ ÐJØ˜˜C Ð'AóCñ Ð6Ø˜˜C Ð%6ó8ñ Ð4Ø˜˜C Ð%6ó8ñ ÐLØ˜˜C Ð%HóJñ ÐQØ˜˜C ð %IóJñ �WØ˜˜3 Ð&FóHá�V˜Q  3¨Ð+CÓDá�XØ˜˜3 Ð&NóPñ �X˜q ! U¨D°)Ó<Ù�T˜1˜a  T¨9Ó5ðI%ˆóN ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù”Ù�1—=‘= !Ô$Ù�1—<‘< §¡Ô,Ù�1—:‘:˜tŸx™xÔ(Ù�1—8‘8˜TŸ[™[Ô)Ù�1×'Ñ'¨×)9Ñ)9Ô:Ù�1×$Ñ$ d§o¡oÔ6÷ 2Ð1ð ð 	×Ñ™%›'Õ"÷ 2Ñ1ús   ÄB>G5Ç5G?	c                 ó:  — | j                   }| j                  }|j                  }|j                  }t	        dddg«      } |dd«       |dd«       |dd«       |d	d
«       |dd«       |dd«       |dd«       |dd«      f} |d«       | j                  t        «      5   |«        d d d «       |D ]Q  }| j                  |j                  ¬«      5   ||j                  «        | |«       |j                  «       d d d «       ŒS y # 1 sw Y   Œ`xY w# 1 sw Y   ŒjxY w)Nr]   r1   Úlinesz[x for x in a]
r`   z[x
for x in a
ra   z[x\
for x in a\
z[x
for x in a
]
rd   z%
"""Docstring comment L1"""
L2
L3
L4
z%
"""Docstring comment L1
L2"""
L3
L4
z&
"""Docstring comment L1\
L2\
L3\
L4\
r   z+

"""Docstring comment L1\
L2\
L3\
L4\
"""
rY   r.   r0   )
r   r   r2   Úget_num_lines_in_stmtr   r3   Ú
IndexErrorr5   r1   r§   )r   r8   r9   r:   Úgetlinesr]   r;   rr   s           r   Útest_get_num_lines_in_stmtz&PyParseTest.test_get_num_lines_in_stmt  s  € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×*Ñ*ˆä˜j¨8°WÐ*=Ó>ˆáÐ'¨Ó+ÙÐ'¨Ó+ÙÐ+¨QÓ/ÙÐ*¨AÓ.ÙÐAÀ1ÓEÙÐAÀ1ÓEÙÐFÈÓJÙÐMÈqÓQð	ˆñ 	�ŒØ×ÑœzÕ*ÙŒJ÷ +ó ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù‘8“:˜tŸz™zÔ*÷ 2Ð1ñ ÷ +Ð*ú÷ 2Ð1ús   ÂDÃ+DÄDÄD	c                 ó  — | j                   }| j                  }|j                  }|j                  }t	        dddg«      } |dd«       |dd«       |dd«       |d	d
«       |dd
«       |dd
«       |dd«       |dd«       |dd«       |dd«       |dd«      f} |d«       | j                  t        «      5   |«        d d d «       |D ],  } ||j                  «        | |«       |j                  «       Œ. y # 1 sw Y   Œ;xY w)Nr]   r1   Úspaceszdef function1(self, a,
é   z
    def function1(self, a,
é   z
	def function1(self, a,
z
    def function1(
é   z
	def function1(
z
    def function1(  
z2[
"first item",
  # Comment line
    "next item",
r   z4[
  "first item",
  # Comment line
    "next item",
ra   z1["first item",
  # Comment line
    "next item",
r`   z(
r   z(a
zdef function1(self, a, b):
)	r   r   r2   Úcompute_bracket_indentr   r3   r4   r1   r­   )r   r8   r9   r:   Úindentr]   r;   rr   s           r   Útest_compute_bracket_indentz'PyParseTest.test_compute_bracket_indent1  s  € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×)Ñ)ˆä˜j¨8°XÐ*>Ó?ˆáÐ/°Ó4áÐ5°rÓ:ÙÐ3°RÓ8áÐ-¨qÓ1ÙÐ+¨QÓ/ÙÐ/°Ó3ÙÐMÈqÓQÙÐOÐQRÓSÙÐKÈQÓOÙ�U˜AÓÙ�V˜QÓðˆñ" 	Ð.Ô/Ø×Ñœ~Õ.ÙŒH÷ /ó ˆDÙ�D—K‘KÔ Ù‰v‹x˜Ÿ™Õ%ñ ÷ /Ð.ús   Â6C8Ã8Dc                 óø  — | j                   }| j                  }|j                  }|j                  }d}|D ]J  }| j	                  |¬«      5   ||«       | j                  t        «      5   |«        d d d «       d d d «       ŒL t        dd«      } |dd«       |dd«       |dd	«       |d
d«       |dd«       |dd«       |dd«       |dd«       |dd«       |dd«       |dd«       |dd«       |dd«       |dd«      f}|D ]Q  }	| j	                  |	j                  ¬«      5   ||	j                  «        | |«       |	j                  «       d d d «       ŒS y # 1 sw Y   ŒèxY w# 1 sw Y   �Œ8xY w# 1 sw Y   ŒwxY w)N)zdef function1(self, a, b\
z    """ (\
za = #\
r0   r]   )r1   r­   rb   r   za = 1 + 2 - 5 *\
z    a = 1 + 2 - 5 *\
r°   z  a = "spam"\
r’   z  a = \
"a"\
z  a = #\
"a"\
rY   za == \
ra   za != \
z\
z    \
z	\
za\
rd   z{}\
z(1 + 2) - 5 *\
)
r   r   r2   Úcompute_backslash_indentr5   r3   r4   r   r1   r­   )
r   r8   r9   r:   r²   Úerrorsr1   r]   r;   rr   s
             r   Útest_compute_backslash_indentz)PyParseTest.test_compute_backslash_indentQ  sx  € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×+Ñ+ˆðˆó ˆFØ—‘ V�Õ,Ù˜”Ø×&Ñ&¤~Õ6Ù”H÷ 7÷ -Ð,ð ô ˜jÐ*>Ó?ˆÙÐ1°1Ó5ÙÐ/°Ó3ÙÐ3°QÓ7ÙÐ,¨aÓ0ÙÐ-¨qÓ1ÙÐ.°Ó2Ù˜+ qÓ)Ù˜+ qÓ)á˜& !Ó$Ù˜* aÓ(Ù˜( AÓ&Ù˜' 1Ó%Ù˜( AÓ&ÙÐ-¨qÓ1ðˆó  ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù‘6“8˜TŸ[™[Ô)÷ 2Ð1ñ ÷) 7Ð6ú÷ -Ñ,ú÷. 2Ð1ús0   Á
E#Á(EÁ0E#Ä!+E0ÅE ÅE#Å#E-	Å0E9	c           
      ó¸  — | j                   }| j                  }|j                  }|j                  }t	        dddg«      } |dd«       |dd«       |dd«       |dd	«       |d
d	«       |dd	«       |dd	«      f}|D ]Q  }| j                  |j                  ¬«      5   ||j                  «        | |«       |j                  «       d d d «       ŒS y # 1 sw Y   Œ^xY w)Nr]   r1   r²   r.   ú	def a():
z
	def a():
r   z    def a():
z    z    def a(
z	
    def a(
z	
    # Comment.
r0   )r   r   r2   Úget_base_indent_stringr   r5   r1   r²   )r   r8   r9   r:   Ú
baseindentr]   r;   rr   s           r   Útest_get_base_indent_stringz'PyParseTest.test_get_base_indent_stringx  sÔ   € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×-Ñ-ˆ
ä˜j¨8°XÐ*>Ó?ˆÙ˜"˜bÓ!Ù˜,¨Ó+Ù˜.¨$Ó/ÙÐ*¨FÓ3Ù˜.¨&Ó1ÙÐ,¨fÓ5ÙÐ0°&Ó9ðˆó ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù‘:“< §¡Ô-÷ 2Ð1ñ ß1Ð1ús   Â+CÃC	c                 ó  — | j                   }| j                  }| j                  }|j                  }|j                  }t        dddg«      } |d|«       |d|«       |d|«       |d|«       |d|«       |d	|«       |d
|«       |d|«       |d|«       |d|«       |d|«       |d|«      f}|D ]O  }| j                  |j                  ¬«      5   ||j                  «       |j                   |«       «       d d d «       ŒQ y # 1 sw Y   Œ\xY w)Nr]   r1   Úassert_r¹   rc   z:
za:
z):
z(:
z":
rf   ú!def function1(self, a):
    pass
z# A comment:
z"""A docstring:
r0   )	Ú
assertTrueÚassertFalser   r2   Úis_block_openerr   r5   r1   r¾   )	r   ÚyesÚnor9   r:   Úopenerr]   r;   rr   s	            r   Útest_is_block_openerz PyParseTest.test_is_block_opener�  s  € Ø�o‰oˆØ×ÑˆØ�K‰KˆØ—*‘*ˆØ×"Ñ"ˆä˜j¨8°YÐ*?Ó@ˆá�\ 3Ó'ÙÐJÈCÓPÙ�U˜CÓ Ù�V˜SÓ!Ù�V˜SÓ!Ù�V˜SÓ!Ù�V˜RÓ ÙÐ4°bÓ9ÙÐ:¸BÓ?ÙÐ% rÓ*ÙÐ(¨"Ó-ÙÐ(¨"Ó-ðˆó ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ø—‘™V›XÔ&÷ 2Ð1ñ ß1Ð1ús   Ã)DÄD	c                 ó,  — | j                   }| j                  }| j                  }|j                  }|j                  }t        dddg«      } |d|«       |d|«       |d|«       |d|«       |d|«       |d	|«       |d
|«       |d|«       |d|«       |d|«       |d|«       |d|«       |d|«      f}|D ]O  }| j                  |j                  ¬«      5   ||j                  «       |j                   |«       «       d d d «       ŒQ y # 1 sw Y   Œ\xY w)Nr]   r1   r¾   zreturn
z	break
z  continue
z     raise
z	pass    
zpass	
z	return #
zraised
z
returning
z	# return
z	"""break
z
"continue
r¿   r0   )	rÀ   rÁ   r   r2   Úis_block_closerr   r5   r1   r¾   )	r   rÃ   rÄ   r9   r:   Úcloserr]   r;   rr   s	            r   Útest_is_block_closerz PyParseTest.test_is_block_closer©  s  € Ø�o‰oˆØ×ÑˆØ�K‰KˆØ—*‘*ˆØ×"Ñ"ˆä˜j¨8°YÐ*?Ó@ˆá�Z Ó%Ù�[ #Ó&Ù�^ SÓ)Ù�^ SÓ)Ù�\ 3Ó'Ù�Z Ó%Ù�\ 3Ó'Ù�Z Ó$Ù�] BÓ'Ù�\ 2Ó&Ù�\ 2Ó&Ù�] BÓ'ÙÐ:¸CÓ@ðˆó  ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ø—‘™V›XÔ&÷ 2Ð1ñ ß1Ð1ús   Ã)D
Ä
D	c                 óè  — | j                   }| j                  }|j                  }|j                  }t	        dddg«      } |dd«       |dd«       |dd«       |d	d
«       |dd«       |dd«       |dd«       |dd«       |dd«       |dd«      f
}|D ]Q  }| j                  |j                  ¬«      5   ||j                  «        | |«       |j                  «       d d d «       ŒS y # 1 sw Y   Œ^xY w)Nr]   r1   Úbracketr.   r}   r/   z()()
rœ   z(
)()
)r~   r�   r™   ©rd   r`   ©rY   r   z()
()
)r™   rÍ   rÎ   z()(
)
)r~   r�   r˜   r�   rÎ   z(())
)r~   r�   ©r`   ra   rÍ   rž   z(
())
)r~   r�   )ra   ra   r†   rÎ   ri   z(((())
)r~   r�   rÏ   )ra   rd   )rd   r   )rY   rd   )r’   ra   r0   )r   r   r2   Úget_last_stmt_bracketingr   r5   r1   rÌ   )r   r8   r9   r:   r|   r]   r;   rr   s           r   Útest_get_last_stmt_bracketingz)PyParseTest.test_get_last_stmt_bracketingÆ  sú   € Ø×ÑˆØ�K‰KˆØ—*‘*ˆØ×/Ñ/ˆ
ä˜j¨8°YÐ*?Ó@ˆá�R˜Ó#Ù�U˜IÓ&Ù�XÐGÓHÙ�ZÐ!IÓJÙ�ZÐ!9Ó:Ù�ZÐ!IÓJÙ�XÐGÓHÙ�ZÐ!IÓJá�XÐGÓHÙ�ZØMóOðˆó ˆDØ—‘ T§[¡[�Õ1Ù˜Ÿ™Ô$Ù‘:“< §¡Ô.÷ 2Ð1ñ ß1Ð1ús   Â2+C(Ã(C1	N)r   r   r   Úclassmethodr'   r*   r,   r<   rW   r[   rs   rw   r¥   r«   r³   r·   r¼   rÆ   rÊ   rÑ   r   r   r   r!   r!      st   „ àñ?ó ð?ð ñó ðò2ò%ò$?DòB-ò00#òd1ò*;#òz+ò8&ò@%*òN.ò*'ò8'ó:/r   r!   Ú__main__ra   )Ú	verbosity)Ú__doc__Úidlelibr   ÚunittestÚcollectionsr   ÚTestCaser   r!   r   Úmainr   r   r   Ú<module>rÛ      sU   ðÙ å Û Ý "ô/�8×$Ñ$ô /ô G/�(×#Ñ#ô G/ðT ˆzÒØ€H‡M�M˜AÖð r   