
    daf                         d dl Z d dlmZ d dlZd dlZd dlmZ  G d d      Z G d de j                        Z	e
dk(  r e j                          yy)	    N)patch)MISSING_C_DOCSTRINGSc                       e Zd ZdZdZdZy)
CompleteMez6 Trivial class used in testing rlcompleter.Completer.       N)__name__
__module____qualname____doc__spam_ham     0/root/Python-3.12.4/Lib/test/test_rlcompleter.pyr   r      s    @DDr   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  dd	      d
        Zd Zy)TestRlcompleterc                     t        j                         | _        t        j                  t        t        t
        t                    | _        | j                  j                  dd       y )N)r   eggr    r   )	rlcompleter	Completerstdcompleterdictintstrr   	completercompleteselfs    r   setUpzTestRlcompleter.setUp   sN    '113$..t8;?I0K L
 	""2q)r   c                     G d dt               } G d dt              }| j                  | j                  j                         | j                  | j                  j                         | j                  t        j                   |             j                         | j                  t        t        j                   |d             y )Nc                       e Zd Zy))TestRlcompleter.test_namespace.<locals>.ANr	   r
   r   r   r   r   Ar$          r   r&   c                       e Zd Zy))TestRlcompleter.test_namespace.<locals>.BNr%   r   r   r   Br)      r'   r   r*   )r   )r   list
assertTruer   use_main_nsassertFalser   r   r   assertRaises	TypeError)r    r&   r*   s      r   test_namespacezTestRlcompleter.test_namespace   s    	 		 	 	))556334..qs3??@)[%:%:AdGDr   c           	      2   | j                  t        | j                  j                  d            t	        t
              D cg c]  }|j                  d      s|dz    c}       | j                  t        | j                  j                  d            t	        t
              D cg c]  }|j                  d      s|dz    c}       | j                  | j                  j                  d      g        | j                  | j                  j                  d      t        rdndg       | j                  | j                  j                  d      d	g       | j                  | j                  j                  d      t        rdg       y dg       y c c}w c c}w )
Ndi(stakaksajadhak	CompleteMzCompleteMe(zCompleteMe()egzegg()	assertEqualsortedr   global_matchesdirbuiltins
startswithr   r   )r    xs     r   test_global_matchesz#TestRlcompleter.test_global_matches"   sB    1 1 @ @ FG),XMA!,,t:L!C%M	O 1 1 @ @ FG),XMA!,,t:L!C%M	O**99.I2N 	66{C"6NK	M66t< 	# 	66{C"6K	M<JK	M NMs    F
F
$F
;F
c           
      `   | j                  | j                  j                  d      t        t              D cg c]$  }|j                  d      rdj                  |      & c}       | j                  | j                  j                  d      g        t        t        d       D ch c]  }d||dk7  rdnd c}      }| j                  | j                  j                  d      |       | j                  | j                  j                  d	      |       | j                  | j                  j                  d
      |       | j                  | j                  j                  d      dg       | j                  | j                  j                  d      g        | j                  | j                  j                  d      ddg       | j                  | j                  j                  d      dg       | j                  j                  d      }|D ]#  }| j                  |j                  d      |       % | j                  d|       | j                  d|       t        j                  t        dt        d      5  | j                  | j                  j                  d      dg       | j                  | j                  j                  d      t        t              D cg c]$  }|j                  d      rdj                  |      & c}       d d d        y c c}w c c}w c c}w # 1 sw Y   y xY w)Nzstr.sszstr.{}(ztuple.foospameggzNone.r   r4   r   zNone._zNone.__zCompleteMe.spzCompleteMe.spamzCompleteme.eggzCompleteMe.zCompleteMe.mro()zCompleteMe._zCompleteMe._hamzCompleteMe.__zCompleteMe.__name__zCompleteMe.__new__(meT)createzCompleteMe.me.me.spzCompleteMe.me.me.spamzegg.szegg.{}()r9   r   attr_matchesr<   r   r>   formatr:   r   r,   assertInr   objectr   )r    r?   expectedmatchess       r   test_attr_matchesz!TestRlcompleter.test_attr_matches3   s   **77@7:3x 0!\\#. $**1- 0	1 	**778JKRP$'I/  +,ANS-JK / 0**77@(K**77A8L**77	BHM 	44_E+,	.445EFK44]C,.?@	B44^D+,	...--o> 	>AOOALL91=	>+W5+W5\\*dJtD 	5T^^889NO568T^^88A;>s8 4a!"c!2 (..q1 45	5 	5/0/04		5 	5s*   )L
$L9A#L$)LL$L$$L-c                      G d d      } |       }t        j                  t        |            }| j                  |j	                  dd      d       | j                  |j
                  d       y)	z;Ensure getattr() is invoked no more than once per attributec                   &     e Zd ZdZdZ fdZ xZS )3TestRlcompleter.test_excessive_getattr.<locals>.Foor   r   c                 X    |dk(  r| xj                   dz  c_         y t        | 	  |      S )Nbarr   )callssuper__getattribute__)r    name	__class__s     r   rS   zDTestRlcompleter.test_excessive_getattr.<locals>.Foo.__getattribute__^   s*    5=JJ!OJw/55r   )r	   r
   r   rQ   rP   rS   __classcell__)rU   s   @r   FoorN   [   s    EC6 6r   rW   ff.br   f.barr   N)r   r   r   r9   r   rQ   r    rW   rY   r   s       r   test_excessive_getattrz&TestRlcompleter.test_excessive_getattrT   sZ    	6 	6 E))$)4	++E15w?!$r   c                      G d d      } |       }t        j                  t        |            }| j                  |j	                  dd      d       | j                  |j                         y )Nc                   $    e Zd ZdZdZed        Zy)<TestRlcompleter.test_property_method_not_called.<locals>.Foor   Fc                 (    d| _         | j                  S )NT)property_called_barr   s    r   rP   z@TestRlcompleter.test_property_method_not_called.<locals>.Foo.barn   s    '+$yy r   N)r	   r
   r   rc   rb   propertyrP   r   r   r   rW   r`   j   s    D#O! !r   rW   rX   rZ   r   r[   )r   r   r   r9   r   r.   rb   r\   s       r   test_property_method_not_calledz/TestRlcompleter.test_property_method_not_calledi   sZ    	! 	! E))$)4	++E15w?**+r   c                      G d d      }t        j                  t         |                   }| j                  |j	                  dd      d       y )Nc                       e Zd ZdZy)0TestRlcompleter.test_uncreated_attr.<locals>.Foo)rP   N)r	   r
   r   	__slots__r   r   r   rW   rh   |   s     Ir   rW   rX   zf.r   r[   )r   r   r   r9   r   )r    rW   r   s      r   test_uncreated_attrz#TestRlcompleter.test_uncreated_attry   s?    	! 	!))$-8	++D!4g>r   zrlcompleter._readline_availableFc                    t        j                         }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd	      d
       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       y )Nr   r   	azand r   zas asr   assert anpapassFaFalseelzelif elsetrtry:_matchzmatch casezcase )r   r   r9   r   )r    r   s     r   test_completezTestRlcompleter.test_complete   s   ))+	++B2D9++C3V<++C3U;++D!4i@++D!4f=++D!4f=++D!4g>++D!4g>++D!4f=++D!4f=++C3S9++GQ7B++FA6@r   c                    d d d d d d}t        j                  |      }| j                  |j                  dd      d       | j	                  |j                  dd             | j                  |j                  dd      d       | j	                  |j                  dd             | j                  |j                  d	d      d
       | j	                  |j                  d	d             | j                  |j                  dd      d       | j	                  |j                  dd             | j                  |j                  dd      d       | j	                  |j                  dd             y )Nc                       y Nr   r   r   r   <lambda>z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>       r   c                       y r   r   r   r   r   r   z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>   r   r   )rt   asserttry
memoryviewEllipsisrt   r   r   r   ro   r   rx   r   r   z
Ellipsis())r   r   r9   r   assertIsNone)r    	namespacer   s      r   test_duplicate_globalsz&TestRlcompleter.test_duplicate_globals   sB   $
	  )))4	++GQ7A),,Wa89++Ha8)D),,Xq9:++E15v>),,UA67++L!<lK),,\1=>++J:LI),,Z;<r   N)r	   r
   r   r!   r1   r@   rK   r]   re   rj   unittestmockr   r|   r   r   r   r   r   r      sV    *	EM"5B%*, ? ]]:EBA CA =r   r   __main__)r   unittest.mockr   r=   r   test.supportr   r   TestCaser   r	   mainr   r   r   <module>r      sM        - Y=h'' Y=v zHMMO r   