
    (ph@                        S r SSKrSSKrSSKrSSKrSSKJrJrJrJ	r	J
r
Jr  SSKrSSKrSSK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) z6Tests for Terminal() sequences and sequence-awareness.    N   )	all_termsas_subprocessTestTerminalunicode_parmmany_columnsunicode_capc                  *    [         S 5       n U " 5         g)z#Check that capability lookup works.c                  v    [        5       n [        S5      nU R                  U:X  d   eU R                  U:X  d   eg )Nsc)r   r	   save)tr   s     O/var/www/html/venv/lib/python3.13/site-packages/blessed/tests/test_sequences.pychildtest_capability.<locals>.child   s5     Nvv||vv||    Nr   r   s    r   test_capabilityr      s      
Gr   c                  *    [         S 5       n U " 5         g)z<Assert capability templates are '' when stream is not a tty.c                      [        [        R                  " 5       S9n U R                  S:X  d   eU R                  S:X  d   eg )N)stream )r   sixStringIOr   redr   s    r   r   *test_capability_without_tty.<locals>.child)   s2    /vv}}uu||r   Nr   r   s    r   test_capability_without_ttyr   '   s     
 
Gr   c                  *    [         S 5       n U " 5         g)z8force styling should return sequences even for non-ttys.c                  t    [        [        R                  " 5       SS9n U R                  [	        S5      :X  d   eg )NTr   force_stylingr   )r   r   r   r   r	   r   s    r   r   .test_capability_with_forced_tty.<locals>.child4   s+    dCvvT****r   Nr   r   s    r   test_capability_with_forced_ttyr%   2   s    + + 
Gr   c                  *    [         S 5       n U " 5         g)z!Test parameterizing a capability.c                  Z    [        5       R                  SS5      [        SSS5      :X  d   eg )N      cup)r   r*   r    r   r   r   #test_parametrization.<locals>.child>   s(    ~!!!Q'<q!+DDDDr   Nr   r   s    r   test_parametrizationr-   <   s    E E 
Gr   c                  *    [         S 5       n U " 5         g)z9Assert that ``height_and_width()`` returns full integers.c                      [        5       n [        U R                  [        5      (       d   e[        U R                  [        5      (       d   eg N)r   
isinstanceheightintwidthr   s    r   r   $test_height_and_width.<locals>.childG   s7    N!((C((((!''3''''r   Nr   r   s    r   test_height_and_widthr6   E   s    ( (
 
Gr   c                  *    [         S 5       n U " 5         g)z3Make sure Terminal ``stream`` is stdout by default.c                  T    [        5       R                  [        R                  :X  d   eg r0   )r   r   sys
__stdout__r+   r   r   r   test_stream_attr.<locals>.childR   s    ~$$666r   Nr   r   s    r   test_stream_attrr<   P   s    7 7 
Gr   c                 ,    [         S 5       nU" U 5        g)z0Make sure ``location()`` works on all terminals.c                    [        U [        R                  " 5       SS9nUR                  SS5         UR                  R                  S5        S S S 5        SR                  [        S5      =(       d    S[        S	SS5      S[        S
5      =(       d    S45      nUR                  R                  5       U:X  d   eg ! , (       d  f       Ns= f)NTkindr   r#   r(   r)   hir   r   [sr*   rc[u)
r   r   r   locationr   writejoinr	   r   getvaluer@   r   expected_outputs      r   child_with_styling6test_location_with_styling.<locals>.child_with_styling[   s    d3<<>NZZ1HHNN5! ((+)%A&+)-.
 !!#676 s   B::
CNr   )r   rK   s     r   test_location_with_stylingrM   Y   s    	8 	8 y!r   c                  *    [         S 5       n U " 5         g)z9Make sure ``location()`` silently passes without styling.c                     [        [        R                  " 5       SS9n U R                  SS5         U R                  R                  S5        SSS5        U R                  R                  5       S:X  d   eg! , (       d  f       N/= f)zANo side effect for location as a context manager without styling.Nr"   r(   r)   rA   )r   r   r   rE   r   rF   rH   r   s    r   child_without_styling<test_location_without_styling.<locals>.child_without_stylingl   s_     dCZZ1HHNN5!  xx  "e+++ s   A55
BNr   )rP   s    r   test_location_without_stylingrR   j   s    , , r   c                 ,    [         S 5       nU" U 5        g)DMake sure we can move the cursor horizontally without changing rows.c                 (   [        U [        R                  " 5       SS9nUR                  SS9    S S S 5        [	        SS5      nU(       d.  U R                  S5      (       d  U R                  S5      (       a  SnS	R                  [        S
5      =(       d    SU[        S5      =(       d    S45      nUR                  R                  5       U:X  d3   [        UR                  R                  5       5      [        U5      45       eg ! , (       d  f       N= f)NTr?      xhpascreenansiz[6Gr   r   rB   rC   rD   )r   r   r   rE   r   
startswithrG   r	   r   rH   repr)r@   r   _hparJ   s       r   r   'test_horizontal_location.<locals>.child{   s    d3<<>NZZ!Z_ E1%2200D((+)+)-. !!#6 	>""$%tO'<:> 	>6 _s   D
DNr   r   r   s     r   test_horizontal_locationra   y   s    > > 
)r   c                 ,    [         S 5       nU" U 5        g)rT   c                    [        U [        R                  " 5       SS9nUR                  SS9    S S S 5        [	        SS5      nU(       d.  U R                  S5      (       d  U R                  S5      (       a  SnS	R                  [        S
5      =(       d    SU[        S5      =(       d    S45      nUR                  R                  5       U:X  d   eg ! , (       d  f       N= f)NTr?   rV   yvparZ   r[   z[6dr   r   rB   rC   rD   )
r   r   r   rE   r   r\   rG   r	   r   rH   )r@   r   _vparJ   s       r   r   %test_vertical_location.<locals>.child   s    d3<<>NZZ!Z_ E1%2200D((+)+)-. !!#676 _s   C
C Nr   r`   s     r   test_vertical_locationri      s    8 8 
)r   c                  L    [         S 5       n U " S5        U " S5        U " S5        g)z<Test injection of hpa attribute for screen/ansi (issue #55).c                    [        U [        R                  " 5       SS9nSnUR                  US9    S S S 5        SR	                  [        S5      =(       d    SSR                  US	-   5      [        S
5      =(       d    S45      nUR                  R                  5       U:X  d   eUR                  U5      SR                  US	-   5      :X  d   eg ! , (       d  f       N= f)NTr?   rV   rW   r   r   rB   z[{0}Gr   rC   rD   )
r   r   r   rE   rG   r	   formatr   rH   move_x)r@   r   COLrJ   s       r   r   !test_inject_move_x.<locals>.child       d3<<>NZZ#Z ((+)  q)+)-. !!#676!4!4S1W!==>=    C
CrZ   screen-256colorr[   Nr   r   s    r   test_inject_move_xrs      -    
? 
? 
(O	
	&Mr   c                  L    [         S 5       n U " S5        U " S5        U " S5        g)z<Test injection of vpa attribute for screen/ansi (issue #55).c                    [        U [        R                  " 5       SS9nSnUR                  US9    S S S 5        SR	                  [        S5      =(       d    SSR                  US	-   5      [        S
5      =(       d    S45      nUR                  R                  5       U:X  d   eUR                  U5      SR                  US	-   5      :X  d   eg ! , (       d  f       N= f)NTr?   rV   rd   r   r   rB   z[{0}dr   rC   rD   )
r   r   r   rE   rG   r	   rl   r   rH   move_y)r@   r   ROWrJ   s       r   r   !test_inject_move_y.<locals>.child   rp   rq   rZ   rr   r[   Nr   r   s    r   test_inject_move_yrz      rt   r   c                  ,    [         S 5       n U " S5        g)z*Test injection of cvis attribute for ansi.c                     [        U [        R                  " 5       SS9nUR                  5           S S S 5        SnUR                  R                  5       U:X  d   eg ! , (       d  f       N1= f)NTr?   z[?25l[?25h)r   r   r   hidden_cursorr   rH   rI   s      r   r   3test_inject_civis_and_cnorm_for_ansi.<locals>.child   sQ    d3<<>N__ /!!#676    A
A*r[   Nr   r   s    r   $test_inject_civis_and_cnorm_for_ansir          8 8 
&Mr   c                  ,    [         S 5       n U " S5        g)z?Test injection of sc and rc (save and restore cursor) for ansi.c                     [        U [        R                  " 5       SS9nUR                  5           S S S 5        SnUR                  R                  5       U:X  d   eg ! , (       d  f       N1= f)NTr?   z[s[u)r   r   r   rE   r   rH   rI   s      r   r   -test_inject_sc_and_rc_for_ansi.<locals>.child   sO    d3<<>NZZ\ )!!#676 \r   r[   Nr   r   s    r   test_inject_sc_and_rc_for_ansir      r   r   c                 ,    [         S 5       nU" U 5        g)z9Make sure ``location()`` pays attention to 0-valued args.c                 `   [        U [        R                  " 5       SS9nUR                  SS5          S S S 5        SR	                  [        S5      =(       d    S[        SSS5      [        S5      =(       d    S	45      nUR                  R                  5       U:X  d   eg ! , (       d  f       Nr= f)
NTr?   r   r   r   rB   r*   rC   rD   )	r   r   r   rE   rG   r	   r   r   rH   rI   s      r   r   !test_zero_location.<locals>.child   s    d3<<>NZZ1 ((+)%A&+)-. !!#676 s   B
B-Nr   r`   s     r   test_zero_locationr      s    8 8 
)r   c                 ,    [         S 5       nU" U 5        g)zMake sure color shortcuts work.c                    S nS n[        U S9nUR                  U" US5      :X  d   eUR                  U" US5      :X  d   eUR                  U" US5      :X  d   eUR                  U" US5      :X  d   eUR
                  U" US5      :X  d   eUR                  U" US5      :X  d   eUR                  U" US5      :X  d   eUR                  U" US5      :X  d   eg )	Nc                 R    U R                   =(       a    [        SU5      =(       d    S$ )Nsetafr   number_of_colorsr   r   nums     r   color2test_mnemonic_colors.<locals>.child.<locals>.color       %%D,w*DJJr   c                 R    U R                   =(       a    [        SU5      =(       d    S$ )Nsetabr   r   r   s     r   on_color5test_mnemonic_colors.<locals>.child.<locals>.on_color   r   r   r@         r      
   )	r   whitegreenon_blackon_greenbright_blackbright_greenon_bright_blackon_bright_green)r@   r   r   r   s       r   r   #test_mnemonic_colors.<locals>.child   s    	K	K
 d#5A;&'&5A;&'&

hq!n,-,

hq!n,-,%1+-.-%2,./.!!Xa^343!!Xa_454r   Nr   r`   s     r   test_mnemonic_colorsr      s    6 6& 
)r   c                 ,    [         S 5       nU" U 5        g)z0``color(n)`` should return a formatting wrapper.c                 :   [        U S9nUR                  (       a8  UR                  S5      " S5      UR                  S-   UR                  -   :X  d   eOUR                  S5      " S5      S:X  d   eUR                  (       a8  UR                  S5      " S5      UR                  S-   UR                  -   :X  d   eOUR                  S5      " S5      S:X  d   eUR                  S5      (       a=  UR                  S5      " S5      UR                  S5      S-   UR                  -   :X  d   eOUR                  S5      " S5      S:X  d   eUR                  (       a8  UR                  S5      " S5      UR                  S-   UR                  -   :X  d   eOUR                  S5      " S5      S:X  d   eUR                  S5      (       a=  UR                  S5      " S5      UR                  S5      S-   UR                  -   :X  d   eg UR                  S5      " S5      S:X  d   eg )Nr   rV   smoor)   r      )r   magentar   normal
on_magentar   r   r@   r   s     r   r   +test_callable_numeric_colors.<locals>.child  s   d#99771:f%V);ahh)FFFF771:f%///<<::a=(ALL6,AAHH,LLLL771:g&&000771::771:g&!''!*w*>*IIII771:g&&000::::a=(AJJ,@188,KKKK::a=(F222::a==::a=(AJJqMG,Cahh,NNNN::a=(F222r   Nr   r`   s     r   test_callable_numeric_colorsr     s    3 36 
)r   c                 ,    [         S 5       nU" U 5        g)z1``color(n)`` should be a no-op on null terminals.c                     [        [        R                  " 5       U S9nUR                  S5      " S5      S:X  d   eUR	                  S5      " S5      S:X  d   eg )Nr   r@   rV   r   r   )r   r   r   r   r   r   s     r   r   0test_null_callable_numeric_colors.<locals>.child1  sJ    T:
6"f,-,

1f%/0/r   Nr   r`   s     r   !test_null_callable_numeric_colorsr   /  s    1 1
 
)r   c                 ,    [         S 5       nU" U 5        g)z5``term.color`` should return a stringlike capability.c                 Z    [        U S9nUR                  S-   UR                  S-   :X  d   eg )Nr   r   )r   r   r   r   s     r   r   #test_naked_color_cap.<locals>.child<  s*    d#"",-,r   Nr   r`   s     r   test_naked_color_capr   :  s    . . 
)r   c                 ,    [         S 5       nU" U 5        g)-Test simple and compound formatting wrappers.c                    [        U S9nUR                  (       a)  SR                  UR                  SUR                  45      nOSnUR                  S5      U:X  d   eUR                  (       a)  SR                  UR                  SUR                  45      nOSnUR	                  S5      U:X  d   eUR
                  (       a)  SR                  UR
                  SUR                  45      nOSnUR                  S5      U:X  d   eUR                  (       a)  SR                  UR                  SUR                  45      nOSnUR                  S5      U:X  d   eg )Nr   r   rA      boöz[1])r   boldrG   r   r   	underline	subscriptrI   s      r   r   (test_formatting_functions.<locals>.childF  s
   d#66!hhqxx'@AO#Ovve}///77!hhqxx'@AO#Owwt}///;;!hhWahh'GHO%OG$787;;!hhVQXX'FGO$OF#676r   Nr   r`   s     r   test_formatting_functionsr   D  s    8 88 
)r   c                 ,    [         S 5       nU" U 5        g)r   c                 :   [        U S9n[        UR                  UR                  45      (       a4  SR	                  UR                  UR                  SUR
                  45      nOSnUR                  S5      U:X  d   e[        UR                  UR                  UR                  UR                  45      (       aJ  SR	                  UR                  UR                  UR                  UR                  SUR
                  45      nOSnUR                  S5      U:X  d   eg )Nr   r   r   meh)r   anyr   r   rG   r   
bold_greenon_bright_redr   r   )on_bright_red_bold_bright_green_underlinerI   s      r   r   'test_compound_formatting.<locals>.childh  s    d# !!!hh!(('KLO%O||G$777EFF!hh!&&!..!++vO %O;;EB"# 	$ #r   Nr   r`   s     r   test_compound_formattingr   f  s    $ $" 
)r   c                     [         S 5       ng)z-Test complex nested compound formatting, wow!c                    [        U S9nUR                  SUR                  SUR                  S5      S5      S5      nSR	                  UR                  SUR                  SUR                  SUR
                  UR                  UR                  SUR
                  UR                  SUR
                  45      nX#:X  d   eUR                  SUR                  S	5      S
UR                  S	5      S5      nSR	                  UR                  SUR                  S	UR
                  UR                  S
UR                  S	UR
                  UR                  SUR
                  45      nX#:X  d   eg )Nr   -a--b--c--d--e-r   off ON off  off)r   r   r   r   rG   r   r@   r   givenexpecteds       r   r   %test_nested_formatting.<locals>.child  s0   d# qvveQ[[-?&+ - 88GGUAFFE1;;qxxGGQVVUHHagguahh0 1     D 1T!2  88GGVQ[[$HHaggdHHaggvqxx1 2    r   Nr   r`   s     r   test_nested_formattingr   }  s    ! !r   c                 ,    [         S 5       nU" U 5        g)z7Test crazy-ass formatting wrappers when there's no tty.c           	         [        U [        R                  " 5       SS9nUR                  S5      S:X  d   eUR	                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR	                  SUR                  SUR                  S5      S	5      S
5      nSnX#:X  d   eUR	                  SUR                  S5      SUR                  S5      S5      nSnX#:X  d   eUR                  S5      S:X  d   eg )NFr?   rA   r   loor   r   r   r   r   z-a--b--c--d--e-r   r   r   r   zoff ON off ON offr   )	r   r   r   r   r   r   bold_underline_green_on_redr   r   r   s       r   r   4test_formatting_functions_without_tty.<locals>.child  s   d3<<>Ou&'&&'&W%010--e4>?> qvveQ[[-?&+ - &    D 1T!2  (   ;;EBfLMLr   Nr   r`   s     r   %test_formatting_functions_without_ttyr     s     N N. 
)r   c                 ,    [         S 5       nU" U 5        g)zBMake sure you get nice hints if you misspell a formatting wrapper.c                    [        U S9n UR                  S5        UR                  (       a   S5       e UR                  S5        UR                  (       a   S5       e UR                  S 5        UR                  (       a   S5       e[        R                  " 5       S:w  a,   UR                  SS	5        UR                  (       a   S5       eg g ! [         a0    [        R
                  " 5       S   nSUR                  S   ;   d   e Nf = f! [         a0    [        R
                  " 5       S   nSUR                  S   ;   d   e Nf = f! [         a0    [        R
                  " 5       S   nSUR                  S   ;  d   e Nf = f! [         a?    [        R
                  " 5       S   nSUR                  S   ;   d   UR                  5       e g f = f)
Nr   heyzShould have thrown exceptionr   zprobably misspelledr   PyPyab)	r   bold_misspelledis_a_tty	TypeErrorr9   exc_infoargsplatformpython_implementation)r@   r   es      r   r   *test_nice_formatting_errors.<locals>.child  s   d#	6e$zzJ,JJ*	6f%zzJ,JJ*
	:d#zzJ,JJ*
 ))+v5B!!#s+::N0NN.:	 6#  	6q!A(AFF1I555	6  	6q!A(AFF1I555	6  	:q!A(q	999	:  BLLN1%,q	9A166A9BsG   )C )D )E "*F 7DD7EE7FFAGGNr   r`   s     r   test_nice_formatting_errorsr     s     B B> 
)r   c                 ,    [         S 5       nU" U 5        g)z9Make sure NullCallableString tolerates all kinds of args.c                 P   [        [        R                  " 5       U S9nUR                  S:X  d   eUR	                  SS:H  5      S:X  d   eUR                  S5      S:X  d   eUR                  5       S:X  d   eUR                  SSS5      S:X  d   eUR                  S5      S:X  d   eg )Nr   r   r   r   rX   zhuh?zxhuh?)r   r   r   clearmoverm   r   r   s     r   r   (test_null_callable_string.<locals>.child  s    T:2qAv"$%$r!"!Br3'7232#$#r   Nr   r`   s     r   test_null_callable_stringr     s    % % 
)r   c                  *    [         S 5       n U " 5         g)zTest Terminal.padd(seq). c                     SSK Jn   SSKJn  U" S5      nU " SU5      R	                  5       S:X  d   eU " SU5      R	                  5       S:X  d   eU " S	U5      R	                  5       S
:X  d   eU " SU5      R	                  5       S:X  d   eg )Nr   )SequenceTerminalzxterm-256colorzxyzxyzxyz-zxy-z
xxxx[3Dzzxzzz[3Dr   )blessed.sequencesr   blessedr   padd)r   r   terms      r   r   test_padd.<locals>.child  s    .$()&++-666$',,.&888.335???	4(--/3666r   Nr   r   s    r   	test_paddr    s    7 7 
Gr   c                 ,    [         S 5       nU" U 5        g)zTest Terminal.split_seqs.c                    SSK Jn  U" U 5      nUR                  (       am  UR                  (       a\  UR                  S-   UR                  -   S-   nUR                  SSUR                  SS/n[	        UR                  U5      5      nXT:X  d   eUR                  (       aA  UR                  S	-   nUR                  S
S
S/n[	        UR                  U5      5      nXT:X  d   eg g )Nr   r   ABCDABCDbbqr   q)r  r   r   rC   list
split_seqsr   )r@   r   r  
given_textr   results         r   r   test_split_seqs.<locals>.child  s    $~77tww4$''1D8Jc477C=H$//*56F%%%99U*J		3S1H$//*56F%%%	 r   Nr   r`   s     r   test_split_seqsr    s    & &  
)r   )*__doc__r   randomr9   osaccessoriesr   r   r   r   r   r	   pytestmockr   r   r   r%   r-   r6   r<   rM   rR   ra   ri   rs   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r+   r   r   <module>r     s    <   
 	    
""**((

 2BD.!6:"Jr   