
    6\h                         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                     dS dS )	    N)patch)MISSING_C_DOCSTRINGSc                       e Zd ZdZdZdZdS )
CompleteMez6 Trivial class used in testing rlcompleter.Completer.       N)__name__
__module____qualname____doc__spam_ham     ?/opt/python-3.11.14/usr/lib/python3.11/test/test_rlcompleter.pyr   r      s        @@DDDDr   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            dd	          d
             Zd ZdS )TestRlcompleterc                     t          j                    | _        t          j        t          t          t
          t                              | _        | j                            dd           d S )N)r   eggr    r   )	rlcompleter	Completerstdcompleterdictintstrr   	completercompleteselfs    r   setUpzTestRlcompleter.setUp   sf    '133$.t8;?I0K 0K 0K L L
 	""2q)))))r   c                     G d dt                     } G d dt                    }|                     | j        j                   |                     | j        j                   |                     t          j         |                      j                   | 	                    t          t          j         |d                     d S )Nc                       e Zd ZdS ))TestRlcompleter.test_namespace.<locals>.ANr	   r
   r   r   r   r   Ar$              Dr   r&   c                       e Zd ZdS ))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6663444.qqss33?@@@)[%:AAdGGDDDDDr   c                    |                      t          | j                            d                    d t	          t
                    D                        |                      t          | j                            d                    d t	          t
                    D                        |                      | j                            d          g            |                      | j                            d          t          rdndg           |                      | j                            d	          d
g           |                      | j                            d          t          rdndg           d S )Ndic                 B    g | ]}|                     d           |dz   S )r3   (
startswith.0xs     r   
<listcomp>z7TestRlcompleter.test_global_matches.<locals>.<listcomp>%   -    MMMA!,,t:L:LM!C%MMMr   stc                 B    g | ]}|                     d           |dz   S )r=   r5   r6   r8   s     r   r;   z7TestRlcompleter.test_global_matches.<locals>.<listcomp>'   r<   r   akaksajadhak	CompleteMzCompleteMe(zCompleteMe()egzegg()assertEqualsortedr   global_matchesdirbuiltinsr   r   r   s    r   test_global_matchesz#TestRlcompleter.test_global_matches"   sz    1 @ @ F FGGMMXMMM	O 	O 	O 1 @ @ F FGGMMXMMM	O 	O 	O*99.II2NNN 	66{CC"6JNK	M 	M 	M66t<< 	# 	# 	# 	66{CC"6JNK	M 	M 	M 	M 	Mr   c                    |                      | j                            d          d t          t                    D                        |                      | j                            d          g            t          d t          d           D                       }|                      | j                            d          |           |                      | j                            d          |           |                      | j                            d          |           |                      | j                            d          d	g           |                      | j                            d
          g            |                      | j                            d          dd	g           |                      | j                            d          dg           | j                            d          }|D ]+}|                     |                    d          |           ,| 	                    d|           | 	                    d|           t          j        t          dt          d          5  |                      | j                            d          dg           |                      | j                            d          d t          t                    D                        d d d            d S # 1 swxY w Y   d S )Nzstr.sc                 b    g | ],}|                     d           d                    |          -S )szstr.{}(r7   formatr8   s     r   r;   z5TestRlcompleter.test_attr_matches.<locals>.<listcomp>6   sF     0 0 0!\\#..0)**1-- 0 0 0r   ztuple.foospameggc                 ,    h | ]}d ||dk    rdndS )None.r   r5   r   r   r8   s     r   	<setcomp>z4TestRlcompleter.test_attr_matches.<locals>.<setcomp>9   s@     / / / q +,!ANNSS-JK / / /r   rN   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.sc                 b    g | ],}|                     d           d                    |          -S )rJ   zegg.{}(rK   r8   s     r   r;   z5TestRlcompleter.test_attr_matches.<locals>.<listcomp>Q   sF     4 4 4a!"c!2!24i..q11 4 4 4r   )rB   r   attr_matchesrE   r   rC   r   r,   r7   assertInr   objectr   )r    expectedmatchesr:   s       r   test_attr_matchesz!TestRlcompleter.test_attr_matches3   sG   *77@@0 0s3xx 0 0 0	1 	1 	1 	*778JKKRPPP / /$'II/ / / 0 0*77@@(KKK*77AA8LLL*77	BBHMMM 	44_EE+,	. 	. 	.445EFFKKK44]CC,.?@	B 	B 	B44^DD+,	. 	. 	..--o>> 	> 	>AOOALL991====+W555+W555\*dJtDDD 	5 	5T^889NOO568 8 8T^88AA4 43s88 4 4 45 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   ;A:LL	Lc                     G d d          } |            }t          j        t          |                    }|                     |                    dd          d           |                     |j        d           dS )	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                 v    |dk    r| xj         dz  c_         d S t                                          |          S )Nbarr   )callssuper__getattribute__)r    name	__class__s     r   r`   zDTestRlcompleter.test_excessive_getattr.<locals>.Foo.__getattribute__^   s8    5==JJ!OJJ4ww//555r   )r	   r
   r   r^   r]   r`   __classcell__)rb   s   @r   Foor[   [   sB        EC6 6 6 6 6 6 6 6 6r   rd   ff.br   f.barr   N)r   r   r   rB   r   r^   r    rd   rf   r   s       r   test_excessive_getattrz&TestRlcompleter.test_excessive_getattrT   s    	6 	6 	6 	6 	6 	6 	6 	6 CEE)$)))44	++E155w???!$$$$$r   c                      G d d          } |            }t          j        t          |                    }|                     |                    dd          d           |                     |j                   d S )Nc                   ,    e Zd ZdZdZed             ZdS )<TestRlcompleter.test_property_method_not_called.<locals>.Foor   Fc                     d| _         | j        S )NT)property_called_barr   s    r   r]   z@TestRlcompleter.test_property_method_not_called.<locals>.Foo.barn   s    '+$y r   N)r	   r
   r   rp   ro   propertyr]   r   r   r   rd   rm   j   s7        D#O! ! X! ! !r   rd   re   rg   r   rh   )r   r   r   rB   r   r.   ro   ri   s       r   test_property_method_not_calledz/TestRlcompleter.test_property_method_not_calledi   s    	! 	! 	! 	! 	! 	! 	! 	! CEE)$)))44	++E155w???*+++++r   c                      G d d          }t          j        t           |                                }|                     |                    dd          d           d S )Nc                       e Zd ZdZdS )0TestRlcompleter.test_uncreated_attr.<locals>.Foo)r]   N)r	   r
   r   	__slots__r   r   r   rd   ru   |   s         IIIr   rd   re   zf.r   rh   )r   r   r   rB   r   )r    rd   r   s      r   test_uncreated_attrz#TestRlcompleter.test_uncreated_attry   st    	! 	! 	! 	! 	! 	! 	! 	!)$---88	++D!44g>>>>>r   zrlcompleter._readline_availableFc                 p   t          j                    }|                     |                    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 S )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   rB   r   )r    r   s     r   test_completezTestRlcompleter.test_complete   s   )++	++B22D999++C33V<<<++C33U;;;++D!44i@@@++D!44f===++D!44f===++D!44g>>>++D!44g>>>++D!44f===++D!44f===++C33S999++GQ77BBB++FA66@@@@@r   c                    d d d d d d}t          j        |          }|                     |                    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 S )Nc                      d S Nr   r   r   r   <lambda>z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>   s    4 r   c                      d S r   r   r   r   r   r   z8TestRlcompleter.test_duplicate_globals.<locals>.<lambda>   s     r   )r   asserttry
memoryviewEllipsisr   r   r   r   r|   r   r   r   r   z
Ellipsis())r   r   rB   r   assertIsNone)r    	namespacer   s      r   test_duplicate_globalsz&TestRlcompleter.test_duplicate_globals   s   <$
 
	  ))44	++GQ77AAA),,Wa88999++Ha88)DDD),,Xq99:::++E155v>>>),,UA66777++L!<<lKKK),,\1==>>>++J::LIII),,Z;;<<<<<r   N)r	   r
   r   r!   r1   rG   rX   rj   rr   rw   unittestmockr   r   r   r   r   r   r   r      s        * * *	E 	E 	EM M M"5 5 5B% % %*, , , ? ? ? ]:EBBA A CBA = = = = =r   r   __main__)r   unittest.mockr   rF   r   test.supportr   r   TestCaser   r	   mainr   r   r   <module>r      s                - - - - - -       Y= Y= Y= Y= Y=h' Y= Y= Y=v zHMOOOOO r   