
    0hhoW                         S SK r S SKrS SKJr   " S S\ R                  5      r " S S5      r " S S5      r " S	 S
\ R                  5      r\S:X  a  \ R                  " 5         gg)    N)Templatec                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)
ModuleTest   c                 H   U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R
                  [        R                  [        R                  -   5        U R                  [        R                  S5        U R                  [        R                  [        R                  S-   5        U R                  [        R                  S5        U R                  [        R                  S5        U R                  [        R                  [        R                  [        R                  -   [        R                  -   [        R                  -   [        R                  -   5        g )Nz 	
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789abcdefABCDEF01234567z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)assertEqualstring
whitespaceascii_lowercaseascii_uppercaseascii_lettersdigits	hexdigits	octdigitspunctuation	printableselfs    9/opt/python-3.13.8/usr/lib/python3.13/test/test_string.py
test_attrsModuleTest.test_attrs   s+   
 	**,=>//1MN//1MN--v/E/EH^H^/^_5))6==>+IJ)):6++-QR))6==6;Q;Q+QTZTjTj+jmsmm+  CI  CT  CT  ,T  	U    c                    U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " S	5      S
5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        g )Nzabc def ghizAbc Def Ghizabc	def
ghizabc	   def  
ghizABC DEF GHIzABC-DEF-GHI-zAbc-Def-GhizABC-def DEF-ghi GHIzAbc-def Def-ghi Ghiz   aBc  DeF   zAbc Defz		aBc	DeF		z		Abc	Def	)r   r   capwordsr   s    r   test_capwordsModuleTest.test_capwords   s    7G9=I)=>N7G<mL)>?AVW)9:IF8)D>Or   c                    [         R                  " 5       nU R                  UR                  S5      S5        U R                  UR                  SS5      S5        U R                  UR                  SSS5      S5        U R	                  [
        UR                  5        U R	                  [
        [         R                  R                  5        g )Nfoozfoo{0}barfoobarzfoo{1}{0}-{1}r   z	foo6bar-6)r   	Formatterr   formatassertRaises	TypeErrorr   fmts     r   test_basic_formatterModuleTest.test_basic_formatter"   s     E*E2He4h?OUA>L)SZZ0)V%5%5%<%<=r   c                 4   [         R                  " 5       nU R                  UR                  SSS9S5        U R	                  [
        UR                  S5        U R                  UR                  SSS9S5        U R	                  [
        UR                  S5        U R                  UR                  SSS9S5        U R	                  [
        UR                  S5        U R                  [        S	5         UR                  SSS
9  S S S 5        g ! , (       d  f       g = f)Nz-{arg}-testargz-test-z-{self}-r   z-{format_string}-)format_stringr4   )r4   r3   )r   r(   r   r)   r*   KeyErrorassertRaisesRegexr+   r,   s     r   test_format_keyword_arguments(ModuleTest.test_format_keyword_arguments*   s     I6:HE(CJJ	:JV<hG(CJJ
;$7vN!	#(CJJ0CD##I?JJYFJ; @??s   /D		
Dc           	      0   [         R                  " 5       nU R                  UR                  SSS5      SR                  SS5      5        U R                  UR                  SS SSS9SR                  S SSS95        U R                  UR                  SSS5      SR                  SS5      5        U R                  UR                  SSSS5      SR                  SSS5      5        U R                  UR                  S	S
SSS9S	R                  S
SSS95        U R	                  [
        5         UR                  SSS5        S S S 5        U R	                  [
        5         UR                  SSS5        S S S 5        g ! , (       d  f       N@= f! , (       d  f       g = f)Nzfoo{}{}r&   r   zfoo{1}{num}{1})numz{:^{}}z	{:^{}} {}Xz{:^{pad}}{}r%   )padzfoo{1}{}zfoo{}{1}r   r(   r   r)   r*   
ValueErrorr,   s     r   test_auto_numberingModuleTest.test_auto_numbering6   sg    Iua8"))%3	5$4dEqI)00u!0D	FHeQ7!2	4K3?$++E1c:	<M5%QG&--eU-B	D z*JJz5!, + z*JJz5!, +* +* +*s   (E6F6
F
Fc                 F   [         R                  " 5       nU R                  UR                  SSS9S5        U R                  UR                  SS5      S5        U R	                  [
        UR                  SS5        U R                  UR                  SS5      S	5        U R                  UR                  S[         R                  5      S
5        U R                  UR                  S[        S5      5      S5        U R                  UR                  S[        S5      5      S5        g )Nz	-{arg!r}-r1   r2   z-'test'-z{0!s}z{0!h}z{0!a}*   42z6'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'   z'\xff'   z'\u0100')r   r(   r   r)   r*   r>   r   chrr,   s     r   test_conversion_specifiers%ModuleTest.test_conversion_specifiersI   s     KV<jIGV4f=*cjj'6BGR0$7Gf.B.BCD	FGc#h7CGc#h7Er   c                    [         R                  " 5       n " S S5      nU" 5       nU R                  UR                  SU5      S5        U R	                  [
        5         UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg),ModuleTest.test_name_lookup.<locals>.AnyAttrW   c                     U$ N )r   attrs     r   __getattr__8ModuleTest.test_name_lookup.<locals>.AnyAttr.__getattr__X   s    r   rO   N)__name__
__module____qualname____firstlineno__rQ   __static_attributes__rO   r   r   AnyAttrrK   W   s    r   rX   z{0.lumber}{0.jack}
lumberjack )r   r(   r   r)   r*   AttributeError)r   r-   rX   xs       r   test_name_lookupModuleTest.test_name_lookupU   sh     	 	 I$8!<lK~.JJ+R0 /..s   A::
Bc                 ~   [         R                  " 5       n/ SQnU R                  UR                  SU5      S5        U R	                  [
        5         UR                  S/ 5        S S S 5        U R	                  [        5         UR                  S0 5        S S S 5        g ! , (       d  f       N?= f! , (       d  f       g = f)N)eggsandspamz{0[2]}{0[0]}spameggs)r   r(   r   r)   r*   
IndexErrorr5   )r   r-   lookups      r   test_index_lookupModuleTest.test_index_lookup_   s     (NF;ZHz*JJ~r* +x(JJ~r* )( +*((s   BB.
B+.
B<c                      " S S[         R                  5      nU" SS05      nU R                  UR                  S5      S5        g )Nc                   &    \ rS rSr0 4S jrS rSrg)>ModuleTest.test_override_get_value.<locals>.NamespaceFormatteri   c                 N    [         R                  R                  U 5        Xl        g rN   )r   r(   __init__	namespace)r   rn   s     r   rm   GModuleTest.test_override_get_value.<locals>.NamespaceFormatter.__init__j   s      ))$/!*r   c                     [        U[        5      (       a   X1   $ [        R
                  R                  XU5        g ! [         a    U R                  U   s $ f = frN   )
isinstancestrr5   rn   r   r(   	get_value)r   keyargskwdss       r   rs   HModuleTest.test_override_get_value.<locals>.NamespaceFormatter.get_valuen   sT    c3''3#y( $$..s$? $ 3#~~c223s   < AA)rn   N)rS   rT   rU   rV   rm   rs   rW   rO   r   r   NamespaceFormatterrj   i   s    )+ +@r   rx   greetinghelloz{greeting}, world!zhello, world!r   r(   r   r)   )r   rx   r-   s      r   test_override_get_value"ModuleTest.test_override_get_valueh   sA    	@!1!1 	@ !*W!56$89?Kr   c                      " S S[         R                  5      nU" 5       nU R                  UR                  SS 5      S5        g )Nc                       \ rS rSrS rSrg)<ModuleTest.test_override_format_field.<locals>.CallFormatter}   c                 $    [        U" 5       U5      $ rN   )r)   )r   valueformat_specs      r   format_fieldIModuleTest.test_override_format_field.<locals>.CallFormatter.format_field~   s    eg{33r   rO   N)rS   rT   rU   rV   r   rW   rO   r   r   CallFormatterr   }   s    4r   r   z*{0}*c                      g)NresultrO   rO   r   r   <lambda>7ModuleTest.test_override_format_field.<locals>.<lambda>   s    hr   z*result*r{   )r   r   r-   s      r   test_override_format_field%ModuleTest.test_override_format_field|   s9    	4F,, 	4 oG->?Lr   c                      " S S[         R                  5      nU" 5       nU R                  UR                  SSS5      S5        g )Nc                   (   ^  \ rS rSrU 4S jrSrU =r$ ):ModuleTest.test_override_convert_field.<locals>.XFormatter   c                 0   > US:X  a  g [         TU ]  X5      $ )Nr\   )superconvert_field)r   r   
conversion	__class__s      r   r   HModuleTest.test_override_convert_field.<locals>.XFormatter.convert_field   s    $w,U??r   rO   )rS   rT   rU   rV   r   rW   __classcell__)r   s   @r   
XFormatterr      s    @ @r   r   z{0!r}:{0!x}r%   z
'foo':Noner{   )r   r   r-   s      r   test_override_convert_field&ModuleTest.test_override_convert_field   s<    	@)) 	@ lM5%@,Or   c                      " S S[         R                  5      nU" 5       nU R                  UR                  SS5      S5        g )Nc                       \ rS rSrS rSrg)4ModuleTest.test_override_parse.<locals>.BarFormatter   c              3      #    UR                  S5       H4  nUS   S:X  a   USS  R                  S5      u  p4nSX5S 4v   M,  US S S 4v   M6     g 7f)N|r   +   :rZ   )split	partition)r   r4   field
field_name_r   s         r   parse:ModuleTest.test_override_parse.<locals>.BarFormatter.parse   s\     *005EQx35:12Y5H5H5M2
{ *4??#T455 6s   AArO   N)rS   rT   rU   rV   r   rW   rO   r   r   BarFormatterr      s    6r   r   z*|+0:^10s|*r%   z*   foo    *r{   )r   r   r-   s      r   test_override_parseModuleTest.test_override_parse   s8    
	66++ 
	6 nM59>Jr   c           
      "    " S S[         R                  5      nU" 5       nU R                  UR                  SS5      S5        U R                  UR                  SSSS9S	5        U R                  UR                  S
SSSS9S5        U R	                  [
        UR                  S
SSSSS9  U R	                  [
        UR                  SSS5        U R	                  [
        UR                  SSSSS9  U R	                  [
        UR                  SSSSS9  g )Nc                       \ rS rSrS rSrg)@ModuleTest.test_check_unused_args.<locals>.CheckAllUsedFormatter   c                     [        UR                  5       5      nUR                  [        S[	        U5      5      5        U H  nUR                  U5        M     U(       a  [        S5      eg )Nr   zunused arguments)setkeysupdaterangelenremover>   )r   	used_argsru   kwargsunused_argsr3   s         r   check_unused_argsRModuleTest.test_check_unused_args.<locals>.CheckAllUsedFormatter.check_unused_args   sY    !&++-0""5CI#67$C&&s+ % $%788 r   rO   N)rS   rT   rU   rV   r   rW   rO   r   r   CheckAllUsedFormatterr      s    	9r   r   z{0}
   10z{0}{i}d   i10100z	{0}{i}{1}   1010020r   )r   j{i}r=   )r   r   r-   s      r   test_check_unused_args!ModuleTest.test_check_unused_args   s    
	9F$4$4 
	9 $%E2.5HbC8'BKR3?K*cjj+r2PQR*cjj%R@*cjj%R3G*cjj%R3Gr   c                 $   [         R                  " 5       nSn[        SS9nU R                  [        5       nUR                  SX#[        5       S5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)NrO   r   r   r   	recursion)
r   r(   dictr*   r>   _vformatr   assertInrr   	exception)r   r-   ru   r   errs        r   test_vformat_recursion_limit'ModuleTest.test_vformat_recursion_limit   sg     z*cLLceR8 +k3s}}#56 +*s   B
BrO   N)rS   rT   rU   rV   r   r"   r.   r7   r?   rG   r]   rf   r|   r   r   r   r   r   rW   rO   r   r   r   r      sP    U	P>
<-&
F1+L(MPK H,7r   r   c                       \ rS rSrSrg)Bag   rO   N)rS   rT   rU   rV   rW   rO   r   r   r   r      s    r   r   c                       \ rS rSrS rSrg)Mapping   c                     U nUR                  S5       H  n [        X#5      nM     U$ ! [         a    [        U5      ef = f)N.)r   getattrr[   r5   )r   nameobjparts       r   __getitem__Mapping.__getitem__   sJ    JJsOD%c( $
 
 " %tn$%s   )?rO   N)rS   rT   rU   rV   r   rW   rO   r   r   r   r      s    r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestTemplate   c           	         [        S5      nU R                  UR                  [        SSS95      S5        U R	                  [
        UR                  [        SS95        U R	                  [        [         R                  5        g )Nz,$who likes to eat a bag of $what worth $$100timhamwhowhat(tim likes to eat a bag of ham worth $100r   )r   r   
substituter   r*   r5   r+   )r   ss     r   test_regular_templates#TestTemplate.test_regular_templates   sa    CDdu5&ABC	E(ALL$5/B)X%8%89r   c           	          [        S5      n[        SSSS9nU R                  UR                  U5      S5        U R	                  [
        UR                  [        SSS95        g )N$who likes ${what} for ${meal}r   r   dinnerr   r   mealtim likes ham for dinnerr   )r   r   r   r   r*   r5   r   r   ds      r   "test_regular_templates_with_braces/TestTemplate.test_regular_templates_with_braces   sT    56UX6a*DE(ALL5u5	7r   c                 r    [        S5      n[        SSSS9nU R                  UR                  U5      S5        g )Nz$WHO likes ${WHAT} for ${MEAL}r   r   r   )WHOWHATMEALr   r   r   r   r   r   s      r   &test_regular_templates_with_upper_case3TestTemplate.test_regular_templates_with_upper_case   s4    56UX6a*DEr   c                 r    [        S5      n[        SSSS9nU R                  UR                  U5      S5        g )Nz%$_wh0_ likes ${_w_h_a_t_} for ${mea1}r   r   r   )_wh0_	_w_h_a_t_mea1r   r  r   s      r   'test_regular_templates_with_non_letters4TestTemplate.test_regular_templates_with_non_letters   s4    <=uH=a*DEr   c           	          U R                   n[        S5      nU" UR                  [        SSS95      S5        [        S5      nU" UR                  [        SSS95      S5        g )Nz-$who likes to eat a bag of $$what worth $$100r   r   r   z*tim likes to eat a bag of $what worth $100z$who likes $$ztim likes $r   r   r   r   r   eqr   s      r   test_escapesTestTemplate.test_escapes   sY    DE
1<<U347	9_%
1<<U34mDr   c                     U R                   n[        S5      n[        SS9nU" UR                  U5      S5        U" UR	                  U5      S5        g )Nz%(foo)s $foo ${foo}bazr%   z%(foo)s baz bazr   r   r   r   safe_substituter   r  r   r   s       r   test_percentsTestTemplate.test_percents   sJ    *+UO
1<<?-.
1Q!23r   c                     U R                   n[        S5      n[        SS9nU" UR                  U5      S5        U" UR	                  U5      S5        [        S5      nU" UR                  U5      S5        g )Nz&tim has eaten $count bags of ham today   )countz!tim has eaten 7 bags of ham todayz(tim has eaten ${count} bags of ham todayr  r  s       r   test_stringification!TestTemplate.test_stringification   sh    =>qM
1<<??@
1Q!DE?@
1<<??@r   c                     U R                   n[        S5      n[        SSS9nU" UR                  U5      S5        U" UR	                  U5      S5        g )Nz$who ate ${meal})r   fred)r   kung pao)r   r   z'('tim', 'fred') ate ('ham', 'kung pao')r  r  s       r   test_tupleargsTestTemplate.test_tupleargs   sN    '(_+>?
1<<?EF
1Q!JKr   c           
      p   U R                   n[        S5      nU" UR                  [        SS95      S5        U" UR                  [        SS95      S5        U" UR                  [        SSS	95      S
5        U" UR                  [        SSS95      S5        U" UR                  [        SSSS95      S5        g )Nr   r   r   ztim likes ${what} for ${meal}r   r   z$who likes ham for ${meal}r   )r   r   z$who likes ham for dinnerr   ztim likes ham for ${meal}r   r   )r   r   r  r   r  s      r   test_SafeTemplateTestTemplate.test_SafeTemplate  s    56
1Te_-/NO
1Tu-.0LM
1Tu8<=&	(
1Te%89&	(
1Te%hGH%	'r   c                    U R                   n[        S5      nU" [        UR                  [	        SS95        [        S5      nU" [        UR                  [	        SS95        [        S5      nU" [        UR                  [	        SS95        [        S5      nU" [        UR                  [	        SS95        [        S5      nU" [        UR                  [	        SS95        g )Nz$who likes $r   r   z$who likes ${what)z$who likes $100u   $who likes $ıu   $who likes $İ)r*   r   r>   r   r   )r   raisesr   s      r   test_invalid_placeholders&TestTemplate.test_invalid_placeholders  s    ""^$z1<<%9)*z1<<%9&'z1<<%9 )*z1<<%9)*z1<<%9r   c                 0    " S S[         5      n[        5       n[        5       Ul        [        5       UR                  l        SUR                  R                  l        SUR                  l        U" S5      nU R                  UR                  U5      S5        g )Nc                       \ rS rSrSrSrg)9TestTemplate.test_idpattern_override.<locals>.PathPatterni#  z[_a-z][._a-z0-9]*rO   N)rS   rT   rU   rV   	idpatternrW   rO   r   r   PathPatternr,  #  s    ,Ir   r.  r   r   z,$bag.foo.who likes to eat a bag of $bag.whattim likes to eat a bag of ham)	r   r   r   bagr%   r   r   r   r   )r   r.  mr   s       r   test_idpattern_override$TestTemplate.test_idpattern_override"  si    	-( 	-IE			
FGa*IJr   c                      " S S[         5      nU" S5      n[        SSSSS9nU R                  [        UR                  U5        U R                  UR                  U5      S	5        g )
Nc                       \ rS rSrSrSrg)3TestTemplate.test_flags_override.<locals>.MyPatterni.  r   rO   N)rS   rT   rU   rV   flagsrW   rO   r   r   	MyPatternr6  .  s    Er   r8  z$wHO likes ${WHAT} for ${meal}r   r   r   r  )wHOr   r   wzfredHO likes ${WHAT} for dinner)r   r   r*   r>   r   r   r  )r   r8  r   r   s       r   test_flags_override TestTemplate.test_flags_override-  s[    	 	67UX@*allA6**1-/PQr   c                      " S S[         5      n[        SSS9nU" S5      nU R                  UR                  U5      S5        g )Nc                        \ rS rSrSrSrSrSrg)FTestTemplate.test_idpattern_override_inside_outside.<locals>.MyPatterni8  [a-z]+[A-Z]+r   rO   NrS   rT   rU   rV   r-  braceidpatternr7  rW   rO   r   r   r8  r?  8      !I&NEr   r8  r%   BARr%   rE  z$foo ${BAR}zfoo BARr  r   r8  r1  r   s       r   &test_idpattern_override_inside_outside3TestTemplate.test_idpattern_override_inside_outside5  s>    	 	 U&m$a)4r   c                      " S S[         5      n[        SSS9nU" S5      nU R                  [        UR                  U5        U" S5      nU R                  [        UR                  U5        g )Nc                        \ rS rSrSrSrSrSrg)WTestTemplate.test_idpattern_override_inside_outside_invalid_unbraced.<locals>.MyPatterniC  r@  rA  r   rO   NrB  rO   r   r   r8  rL  C  rD  r   r8  r%   rE  rF  z$FOOz${bar})r   r   r*   r>   r   rG  s       r   7test_idpattern_override_inside_outside_invalid_unbracedDTestTemplate.test_idpattern_override_inside_outside_invalid_unbraced@  s\    	 	 U&f*allA6h*allA6r   c                     " S S[         5      n[        5       n[        5       Ul        [        5       UR                  l        SUR                  R                  l        SUR                  l        U" S5      nU R                  UR                  U5      S5         " S S[         5      nU" S5      nU R                  [        UR                  0 5        U R                  [        UR                  0 5        g )	Nc                       \ rS rSrSrSrg)5TestTemplate.test_pattern_override.<locals>.MyPatterniN  z
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)
            rO   NrS   rT   rU   rV   patternrW   rO   r   r   r8  rQ  N  s	    Gr   r8  r   r   ,@bag.foo.who likes to eat a bag of @bag.whatr/  c                       \ rS rSrSrSrg)6TestTemplate.test_pattern_override.<locals>.BadPatterni]  a  
            (?P<badname>.*)                     |
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)                      |
            rO   NrR  rO   r   r   
BadPatternrV  ]  	    Gr   rW  )r   r   r   r0  r%   r   r   r   r   r*   r>   r  )r   r8  r1  r   rW  s        r   test_pattern_override"TestTemplate.test_pattern_overrideM  s    	 	 IE			
DEa*IJ	 	 EF*allB7*a&7&7<r   c                      " S S[         5      nSnU" U5      nU R                  [        UR                  0 5        UR                  SS05      nU R	                  US5        g )Nc                       \ rS rSrSrSrg)5TestTemplate.test_braced_override.<locals>.MyTemplateij  
            \$(?:
              (?P<escaped>$)                     |
              (?P<named>[_a-z][_a-z0-9]*)        |
              @@(?P<braced>[_a-z][_a-z0-9]*)@@   |
              (?P<invalid>)                      |
           )
           rO   NrR  rO   r   r   
MyTemplater]  j  	    Gr   r_  PyCon in $@@location@@location	ClevelandPyCon in Cleveland)r   r*   r5   r   r   r   r_  tmpltvals        r   test_braced_override!TestTemplate.test_braced_overridei  sY    	 	 (t(ALL"5llJ4523r   c                      " S S[         5      nSnU" U5      nU R                  UR                  5       U5        UR                  SS05      nU R                  US5        g )Nc                       \ rS rSrSrSrg):TestTemplate.test_braced_override_safe.<locals>.MyTemplatei{  r^  rO   NrR  rO   r   r   r_  rm  {  r`  r   r_  ra  rb  rc  rd  )r   r   r  re  s        r   test_braced_override_safe&TestTemplate.test_braced_override_safez  s^    	 	 (t**,d3[ 9:23r   c                      " S S[         5      nU" S5      nU R                  [        5       nUR                  0 5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                       \ rS rSrSrSrg);TestTemplate.test_invalid_with_no_lines.<locals>.MyTemplatei  z
              (?P<invalid>) |
              unreachable(
                (?P<named>)   |
                (?P<braced>)  |
                (?P<escaped>)
              )
            rO   NrR  rO   r   r   r_  rr    s	    Gr   r_  rZ   zline 1, col 1)r   r*   r>   r   r   rr   r   )r   r_  r   r   s       r   test_invalid_with_no_lines'TestTemplate.test_invalid_with_no_lines  sZ    	 	 rNz*cLL +os3=='9: +*s   A--
A;c                 p    [        S5      n[        SSS9nU R                  UR                  U5      S5        g )N$who likes $whatu   tÿmu   fþedr   u   tÿm likes fþedr  r   s      r   test_unicode_values TestTemplate.test_unicode_values  s2    '(XK0a*DEr   c           	         U R                   n[        S5      nU" UR                  SSS9S5        U" UR                  [        SS9SS9S5        U" UR                  [        SS	S9SSS9S5        [        S
5      nU" UR                  [        SS9SS9S5        U" UR                  [        SS9SS9S5        [        S5      nU" UR                  SS9S5        g Nrv  r   r   r   ztim likes hamr   r#  r  r  zthe mapping is $mappingnoner  bozo)mappingzthe mapping is bozoonetwozthe mapping is twozthe self is $selfr   zthe self is bozor  r  s      r   test_keyword_arguments#TestTemplate.test_keyword_arguments  s    '(
1<<E<.@
1<<e<4oF
1<<j9!  /	 ./
1<<(&<9 	"
1<<U+U<;	! ()
1<<V<$&89r   c           	      :   U R                   nU R                  n[        S5      nU" UR                  SSS9S5        U" UR                  [	        SS9SS9S5        U" UR                  [	        SS	S9SSS9S5        [        S
5      nU" UR                  [	        SS9SS9S5        U" UR                  [	        SS9SS9S5        [	        SS9nU" [
        UR                  U0 5        U" [
        UR                  U0 5        [        S5      nU" UR                  SS9S5        g rz  )r   r*   r   r  r   r+   r   )r   r  r'  r   r   s        r   test_keyword_arguments_safe(TestTemplate.test_keyword_arguments_safe  s+   ""'(
1U3_E
1Te_59?K
1Tf:>!  /	 ./
1Tf-v> 	"
1T%0%@	!y!,,2.y!++Q3()
1&)+=>r   c           	         U R                   nU R                  n " S S[        5      nU" S5      nU" UR                  SSS9S5        U" [        UR                  5        U" UR                  SSS9S5        U" UR                  5       S5        U" S5      nU" [        UR                  [        SSS95        U" UR                  5       S5         " S	 S
[        5      nU" S5      nU R                  UR                  [        SSS95      S5        g )Nc                       \ rS rSrSrSrg)?TestTemplate.test_delimiter_override.<locals>.AmpersandTemplatei  &rO   NrS   rT   rU   rV   	delimiterrW   rO   r   r   AmpersandTemplater        Ir   r  zthis &gift is for &{who} &&budyou)giftr   zthis bud is for you &zthis &gift is for &{who} &c                       \ rS rSrSrSrg)7TestTemplate.test_delimiter_override.<locals>.PieDelimsi  @rO   Nr  rO   r   r   	PieDelimsr    r  r   r  z-@who likes to eat a bag of @{what} worth $100r   r   r   r   )r   r*   r   r   r5   r  r>   r   )r   r  r'  r  r   r  s         r   test_delimiter_override$TestTemplate.test_delimiter_override  s    ""	 	;<
1<<U<.0GHx&
1%U35LM
1 <=:;z1<<5e)DE
1 <=	 	EFdu5&ABC	Er   c                 2   U R                   n[        S5      nU R                  UR                  5       5        [        S5      nU R	                  UR                  5       5         " S S[        5      nU" S5      nU R                  [        UR                  5        g )N.$who likes to eat a bag of ${what} worth $$100-$who likes to eat a bag of ${what} worth $100c                       \ rS rSrSrSrg).TestTemplate.test_is_valid.<locals>.BadPatterni    
            (?P<badname>.*)                  |
            (?P<escaped>@{2})                   |
            @(?P<named>[_a-z][._a-z0-9]*)       |
            @{(?P<braced>[_a-z][._a-z0-9]*)}    |
            (?P<invalid>@)                      |
            rO   NrR  rO   r   r   rW  r    rX  r   rW  rT  )r   r   
assertTrueis_validassertFalser*   r>   )r   r  r   rW  s       r   test_is_validTestTemplate.test_is_valid  sv    EF

%DE&	 	 EF*ajj1r   c                    U R                   nU R                  n[        S5      nUR                  5       nU" USS/5        [        S5      nUR                  5       nU" USS/5        [        S5      nUR                  5       nU" USS/5         " S S[        5      nU" S5      nU R                  [        UR                  5        g )	Nr  r   r   z^$who likes to eat a bag of ${what} worth $$100; ${who} likes to eat a bag of $what worth $$100r  c                       \ rS rSrSrSrg)5TestTemplate.test_get_identifiers.<locals>.BadPatterni  r  rO   NrR  rO   r   r   rW  r    rX  r   rW  rT  )r   r*   r   get_identifiersr>   )r   r  r'  r   idsrW  s         r   test_get_identifiers!TestTemplate.test_get_identifiers  s    ""EF!
3  uv!
3  DE!
3 	 	 EF*a&7&78r   rO   N)rS   rT   rU   rV   r   r   r  r  r  r  r  r   r$  r(  r2  r;  rH  rM  rY  ri  rn  rs  rw  r  r  r  r  r  rW   rO   r   r   r   r      s    :7F
F
E4AL
':	KR	57=84"4";(F
:"?*E(2*9r   r   __main__)
unittestr   r   TestCaser   r   r   r   rS   mainrO   r   r   <module>r     sd      v7"" v7v	 	 @98$$ @9F
 zMMO r   