o
    û›hû9  ã                   @   sœ  d Z ddlmZmZmZmZmZ ddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlmZ ddlmZ G dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZde_G dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zej  !de"e#ƒ e$ƒ e#dgƒe$dgƒe#dd gƒe$dd gƒe#g d!¢ƒgg d"¢ƒ¡d#d$„ ƒZ%d%d&„ Z&d'd(„ Z'd)d*„ Z(d+d,„ Z)d-d.„ Z*G d/d0„ d0e+ƒZ,G d1d2„ d2eƒZ-d3d4„ Z.G d5d6„ d6eƒZ/G d7d8„ d8e/ƒZ0G d9d:„ d:ej1ƒZ2G d;d<„ d<e3ƒZ4e4d=ƒZ5d>d?„ Z6d@dA„ Z7dBdC„ Z8dDdE„ Z9dFdG„ Z:dHdI„ Z;dJdK„ Z<dLdM„ Z=dNdO„ Z>dPdQ„ Z?dRdS„ Z@dTdU„ ZAG dVdW„ dWeeƒZBG dXdY„ dYe#ƒZCdZd[„ ZDdS )\zTests for IPython.lib.pretty.é    )ÚCounterÚdefaultdictÚdequeÚOrderedDictÚUserListN©Úpretty)ÚStringIOc                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚMyListc                 C   s
   || _ d S ©N)Úcontent)Úselfr   © r   úSc:\Users\shubh\Videos\agent\nova\Lib\site-packages\IPython/lib/tests/test_pretty.pyÚ__init__   ó   
zMyList.__init__c                 C   s†   |r	|  d¡ d S | ddd¡�) t| jƒD ]\}}|r&|  d¡ | ¡  n| d¡ | |¡ qW d   ƒ d S 1 s<w   Y  d S )NzMyList(...)é   zMyList(ú)ú,Ú )ÚtextÚgroupÚ	enumerater   Z	breakabler   )r   ÚpÚcycleÚiÚchildr   r   r   Ú_repr_pretty_   s   


ú"ÿzMyList._repr_pretty_N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   ó   e Zd Zdd„ ZdS )ÚMyDictc                 C   ó   |  d¡ d S )NúMyDict(...)©r   ©r   r   r   r   r   r   r   )   ó   zMyDict._repr_pretty_N©r   r    r!   r   r   r   r   r   r#   (   ó    r#   c                   @   r"   )ÚMyObjc                 C   s   d S r   r   ©r   r   r   r   Ú
somemethod-   ó   úMyObj.somemethodN)r   r    r!   r-   r   r   r   r   r+   ,   r*   r+   c                   @   r"   )ÚDummy1c                 C   r$   )NúDummy1(...)r&   r'   r   r   r   r   2   r(   zDummy1._repr_pretty_Nr)   r   r   r   r   r0   1   r*   r0   c                   @   s   e Zd ZdZdS )ÚDummy2Nr)   r   r   r   r   r2   5   s    r2   c                   @   ó   e Zd ZdS )ÚNoModuleN©r   r    r!   r   r   r   r   r4   8   ó    r4   c                   @   r"   )ÚBreakingc                 C   sP   |  ddd¡� | d¡ | ¡  | d¡ W d   ƒ d S 1 s!w   Y  d S )Né   zTG: ú:z	Breaking(r   )r   r   Zbreak_r'   r   r   r   r   >   s
   
"ýzBreaking._repr_pretty_Nr)   r   r   r   r   r7   =   r*   r7   c                   @   r"   )ÚBreakingReprc                 C   ó   dS )NzBreaking(
)r   r,   r   r   r   Ú__repr__E   r.   zBreakingRepr.__repr__N©r   r    r!   r<   r   r   r   r   r:   D   r*   r:   c                   @   r"   )ÚBadReprc                 C   s   dd S )Né   r   r   r,   r   r   r   r<   I   s   zBadRepr.__repr__Nr=   r   r   r   r   r>   H   r*   r>   c                  C   sF   d} t   tt| ƒƒ¡}dd dd„ t| ƒD ƒ¡ d }||ks!J ‚dS )z"Test correct indentation in groupsé(   zMyList(
z,
c                 s   s   � | ]}d | V  qdS )z   %dNr   ©Ú.0r   r   r   r   Ú	<genexpr>Q   ó   € z#test_indentation.<locals>.<genexpr>r   N)r   r   ÚrangeÚjoin)ÚcountÚ	gotoutputÚexpectedoutputr   r   r   Útest_indentationM   s    rJ   c                  C   ó    t   tƒ ¡} d}| |ksJ ‚dS )z�
    Test correct dispatching: The _repr_pretty_ method for MyDict
    must be found before the registered printer for dict.
    r%   N)r   r#   ©rH   rI   r   r   r   Útest_dispatchV   ó   rM   c                  C   rK   )z^
    Test that the _repr_pretty_ method is tested for callability and skipped if
    not.
    r1   N)r   r2   rL   r   r   r   Útest_callability_checkinga   rN   rO   zobj,expected_outputr?   é   )éÿÿÿÿéþÿÿÿéýÿÿÿ)zset()zfrozenset()z{1}zfrozenset({1})z{1, 2}zfrozenset({1, 2})z{-3, -2, -1}c                 C   s   t   | ¡}||ksJ ‚dS )z>
    Test that set and frozenset use Python 3 formatting.
    Nr   )ÚobjÚexpected_outputZ
got_outputr   r   r   Ú	test_setsl   s   
rV   c                  C   s<   d} t jdk r	dnd}t | ¡}t |j¡}||ksJ ‚dS )z:
    Test that pprint works for heap allocated types.
    Zxxlimited_35)r   é
   é   zxxlimited.Nullzxxlimited_35.NullN)ÚsysÚversion_infoÚpytestZimportorskipr   ZNull)Úmodule_namerU   Z	xxlimitedÚoutputr   r   r   Útest_pprint_heap_allocated_type‹   s   ÿ
r^   c                  C   s   t   t¡} | dksJ ‚dS )z@
    Test that pprint works for classes with no __module__.
    r4   N)r   r4   ©r]   r   r   r   Útest_pprint_nomod˜   s   
r`   c                  C   rK   )z5
    Test that p.break_ produces expected output
    zTG: Breaking(
    ):N)r   r7   ©r]   Úexpectedr   r   r   Útest_pprint_break    s   rc   c                  C   sH   t   tƒ gg¡} d}| |ksJ ‚t   tƒ gd g¡} d}| |ks"J ‚dS )z,
    Test that p.break_ is used in repr
    z[[Breaking(
  )]]rP   z"[[Breaking(
  ),
  Breaking(
  )]]N)r   r:   ra   r   r   r   Útest_pprint_break_repr¨   s   rd   c                   C   s<   t  t¡� t tƒ ¡ W d  ƒ dS 1 sw   Y  dS )zDon't catch bad repr errorsN)r[   ÚraisesÚZeroDivisionErrorr   r>   r   r   r   r   Útest_bad_repr´   s   "ÿrg   c                   @   r"   )ÚBadExceptionc                 C   r;   )NrQ   r   r,   r   r   r   Ú__str__º   r.   zBadException.__str__N)r   r    r!   ri   r   r   r   r   rh   ¹   r*   rh   c                   @   s$   e Zd ZdZedd„ ƒZdd„ ZdS )ÚReallyBadReprr?   c                 C   s   t dƒ‚)NzI am horrible)Ú
ValueErrorr,   r   r   r   Ú	__class__¿   s   zReallyBadRepr.__class__c                 C   s   t ƒ ‚r   )rh   r,   r   r   r   r<   Ã   s   zReallyBadRepr.__repr__N)r   r    r!   Úpropertyrl   r<   r   r   r   r   rj   ½   s
    
rj   c                   C   s<   t  t¡� t tƒ ¡ W d   ƒ d S 1 sw   Y  d S r   )r[   re   rh   r   rj   r   r   r   r   Útest_really_bad_reprÆ   s   "ÿrn   c                   @   r3   )ÚSANr5   r   r   r   r   ro   Ë   r6   ro   c                   @   r3   )ÚSBNr5   r   r   r   r   rp   Î   r6   rp   c                       sD   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡  Z	S )ÚTestsPrettyc                    s@   t   ttƒ¡}|  |d¡ tƒ }t   tt|ƒ¡}|  |d¡ d S )Nz<super: \S+.SA, None>z$<super: \S+.SA,\s+<\S+.SB at 0x\S+>>)r   Úsuperro   ÚassertRegexrp   )r   r]   Úsb©rl   r   r   Útest_super_reprÓ   s
   zTestsPretty.test_super_reprc                 C   ó>   t tdƒƒ}t |¡}| dd¡dd … }|  |ddg¡ d S )Né'  Ú
rP   rR   ú 999,z ...])ÚlistrE   r   ÚrsplitÚassertEqual)r   Zlisr   Úlast2r   r   r   Útest_long_listÞ   ó   
zTestsPretty.test_long_listc                 C   rw   )Nrx   ry   rP   rR   rz   ú ...})ÚsetrE   r   r|   r}   )r   Úsr   r~   r   r   r   Útest_long_setä   r€   zTestsPretty.test_long_setc                 C   rw   )Nrx   ry   rP   rR   rz   z ...))ÚtuplerE   r   r|   r}   )r   Útupr   r~   r   r   r   Útest_long_tupleê   r€   zTestsPretty.test_long_tuplec                 C   sD   dd„ t dƒD ƒ}t |¡}| dd¡dd … }|  |ddg¡ d S )	Nc                 S   s   i | ]}||“qS r   r   )rB   Únr   r   r   Ú
<dictcomp>ñ   s    z.TestsPretty.test_long_dict.<locals>.<dictcomp>rx   ry   rP   rR   z
 999: 999,r�   )rE   r   r|   r}   )r   Údr   r~   r   r   r   Útest_long_dictð   s   
zTestsPretty.test_long_dictc                 C   s   t   tj¡}|  d|¡ d S )Nr/   )r   r+   r-   ZassertIn)r   r]   r   r   r   Útest_unbound_methodö   s   zTestsPretty.test_unbound_method)
r   r    r!   rv   r   r„   r‡   r‹   rŒ   Ú__classcell__r   r   ru   r   rq   Ñ   s    rq   c                   @   r
   )Ú	MetaClassc                 C   s   t  | |tfd|i¡S )NÚname)ÚtypeÚ__new__Úobject)Úclsr�   r   r   r   r‘   ü   s   zMetaClass.__new__c                 C   s
   d| j  S )Nz[CUSTOM REPR FOR CLASS %s])r�   r,   r   r   r   r<   ÿ   r   zMetaClass.__repr__N)r   r    r!   r‘   r<   r   r   r   r   rŽ   û   s    rŽ   ÚClassWithMetac                  C   s   t   t¡} | dksJ ‚d S )Nz%[CUSTOM REPR FOR CLASS ClassWithMeta])r   r”   r_   r   r   r   Útest_metaclass_repr  s   
r•   c                     sX   d} | ‰ G ‡ fdd„dt ƒ}|ƒ }t |¡}|| ksJ ‚t |g¡}|d|  ks*J ‚d S )Nu
   Ã¼niÃ§odÃ©c                       s   e Zd Z‡ fdd„ZdS )ztest_unicode_repr.<locals>.Cc                    s   ˆ S r   r   r,   ©Zustrr   r   r<     r.   z%test_unicode_repr.<locals>.C.__repr__Nr=   r   r–   r   r   ÚC  s    r—   z[%s])r’   r   )Úur—   Úcr   r   r–   r   Útest_unicode_repr  s   
rš   c                     sh   ‡ fdd„‰ dˆ _ tƒ } t | ¡}ˆ |jt< | t¡ | ¡  |  ¡ }|dt	 ks+J ‚ˆ j du s2J ‚d S )Nc                    s   | t u rdˆ _t | ||¡S )NT)r+   Úcalledr   Z_type_pprint)rT   r   r   ©Útype_pprint_wrapperr   r   r�     s   z-test_basic_class.<locals>.type_pprint_wrapperFz%s.MyObjT)
r›   r	   r   ZRepresentationPrinterZtype_pprintersr�   r+   ÚflushÚgetvaluer   )ÚstreamÚprinterr]   r   rœ   r   Útest_basic_class  s   


r¢   c                  C   ó`   t ƒ } |  | ¡ t ƒ dft dd„ tddƒD ƒƒdf| dfg}|D ]\}}t |¡|ks-J ‚q d S )NzUserList([])c                 s   ó   � | ]}|V  qd S r   r   rA   r   r   r   rC   4  ó   € z,test_collections_userlist.<locals>.<genexpr>éè  éü  a@  UserList([1000,
          1001,
          1002,
          1003,
          1004,
          1005,
          1006,
          1007,
          1008,
          1009,
          1010,
          1011,
          1012,
          1013,
          1014,
          1015,
          1016,
          1017,
          1018,
          1019])zUserList([UserList(...)]))r   ÚappendrE   r   ©ÚaÚcasesrT   rb   r   r   r   Útest_collections_userlist,  s   
þçÿr¬   c                  C   sj   t ƒ } | | _t tƒ}||d< t tƒdft tddiƒdf| df|dfg}|D ]\}}t |¡|ks2J ‚q%d S )NÚkeyzdefaultdict(list, {})z2--------------------------------------------------z\defaultdict(list,
            {'key': '--------------------------------------------------'})z!defaultdict(defaultdict(...), {})z,defaultdict(list, {'key': defaultdict(...)}))r   Údefault_factoryr{   r   )rª   Úbr«   rT   rb   r   r   r   Útest_collections_defaultdictQ  s   
ÿúÿr°   c                  C   s^   t ƒ } | | d< t ƒ dft dd„ tddƒD ƒƒdf| dfg}|D ]\}}t |¡|ks,J ‚qd S )	Nr­   zOrderedDict()c                 s   s   � | ]}||fV  qd S r   r   rA   r   r   r   rC   m  rD   z/test_collections_ordereddict.<locals>.<genexpr>r¦   iò  a  OrderedDict([(1000, 1000),
             (1001, 1001),
             (1002, 1002),
             (1003, 1003),
             (1004, 1004),
             (1005, 1005),
             (1006, 1006),
             (1007, 1007),
             (1008, 1008),
             (1009, 1009)])z(OrderedDict([('key', OrderedDict(...))]))r   rE   r   r©   r   r   r   Útest_collections_ordereddictf  s   ÿóÿr±   c                  C   r£   )Nz	deque([])c                 s   r¤   r   r   rA   r   r   r   rC   †  r¥   z)test_collections_deque.<locals>.<genexpr>r¦   r§   a  deque([1000,
       1001,
       1002,
       1003,
       1004,
       1005,
       1006,
       1007,
       1008,
       1009,
       1010,
       1011,
       1012,
       1013,
       1014,
       1015,
       1016,
       1017,
       1018,
       1019])zdeque([deque(...)]))r   r¨   rE   r   r©   r   r   r   Útest_collections_deque  s   
ÿéÿr²   c                  C   sf   G dd„ dt ƒ} t ƒ dft dd�df| dd�dft ddd	�d
fg}|D ]\}}t |¡|ks0J ‚q#d S )Nc                   @   r3   )z+test_collections_counter.<locals>.MyCounterNr5   r   r   r   r   Ú	MyCounter£  r6   r³   z	Counter()r?   )rª   zCounter({'a': 1})zMyCounter({'a': 1})é   )rª   r™   zCounter({'c': 22, 'a': 1}))r   r   )r³   r«   rT   rb   r   r   r   Útest_collections_counter¢  s   üÿrµ   c                  C   sˆ   t j} i }| |ƒ}||d< ||d< | i ƒdf| d | i ƒiƒdf| dd„ tjD ƒƒdf|df|d	fg}|D ]\}}t |¡|ksAJ ‚q4d S )
NrP   r   zmappingproxy({})z&mappingproxy({None: mappingproxy({})})c                 S   s   i | ]}||  ¡ “qS r   )Úupper)rB   Úkr   r   r   r‰   ¹  s    z%test_mappingproxy.<locals>.<dictcomp>ap  mappingproxy({'a': 'A',
              'b': 'B',
              'c': 'C',
              'd': 'D',
              'e': 'E',
              'f': 'F',
              'g': 'G',
              'h': 'H',
              'i': 'I',
              'j': 'J',
              'k': 'K',
              'l': 'L',
              'm': 'M',
              'n': 'N',
              'o': 'O',
              'p': 'P',
              'q': 'Q',
              'r': 'R',
              's': 'S',
              't': 'T',
              'u': 'U',
              'v': 'V',
              'w': 'W',
              'x': 'X',
              'y': 'Y',
              'z': 'Z'})z1mappingproxy({2: {...}, 3: {2: {...}, 3: {...}}})z1{2: mappingproxy({2: {...}, 3: {...}}), 3: {...}})ÚtypesÚMappingProxyTypeÚstringÚascii_lowercaser   )ZMPZunderlying_dictZmp_recursiver«   rT   rb   r   r   r   Útest_mappingproxy¯  s$   
ÿÿá"ÿr¼   c                  C   sx   t j} | ƒ }||_||_| ƒ df| | ƒ d�df| | tjd�gd d d�df|dfg}|D ]\}}t |¡|ks9J ‚q,d S )	Nznamespace())Úxznamespace(x=namespace()))rƒ   r   )Za_long_nameZa_short_namezãnamespace(a_long_name=[namespace(s='abcdefghijklmnopqrstuvwxyz'),
                       namespace(s='abcdefghijklmnopqrstuvwxyz'),
                       namespace(s='abcdefghijklmnopqrstuvwxyz')],
          a_short_name=None)z6namespace(first=namespace(...), second=namespace(...)))r¸   ÚSimpleNamespaceÚfirstÚsecondrº   r»   r   )ZSNZsn_recursiver«   rT   rb   r   r   r   Útest_simplenamespaceÝ  s   ÿø
ÿrÁ   c                  C   sH   t   ttjƒ¡} |  dddtdƒ  ¡}t   tj¡}|d| ks"J ‚d S )Nry   ú Úenviron)r   ÚdictÚosrÃ   ÚreplaceÚlen)Z	dict_reprZdict_indentedZenv_reprr   r   r   Útest_pretty_environñ  s   rÈ   c                  C   s<   ddl } t | j¡dksJ ‚ddd„}dt |¡v sJ ‚dS )zTest pretty print of functionr   Nz <function posixpath.join(a, *p)>c                 S   s   | rdS dS )Né*   zDon't panicr   )Úquestionr   r   r   Úmeaning_of_life  s   z-test_function_pretty.<locals>.meaning_of_lifezmeaning_of_life(question=None)r   )Ú	posixpathr   rF   )rÌ   rË   r   r   r   Útest_function_prettyù  s   
rÍ   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚOrderedCounterz?Counter that remembers the order elements are first encounteredc                 C   s   d| j jt| ƒf S )Nz%s(%r))rl   r   r   r,   r   r   r   r<     s   zOrderedCounter.__repr__c                 C   s   | j t| ƒffS r   )rl   r   r,   r   r   r   Ú
__reduce__  s   zOrderedCounter.__reduce__N)r   r    r!   Ú__doc__r<   rÏ   r   r   r   r   rÎ   
  s    rÎ   c                   @   r"   )ÚMySetc                 C   r;   )NÚminer   r,   r   r   r   r<     r.   zMySet.__repr__Nr=   r   r   r   r   rÑ     r*   rÑ   c                  C   s2   t dƒ} dt | ¡v sJ ‚t tƒ ¡dksJ ‚dS )z@A custom repr should override a pretty printer for a parent typeZabracadabrazOrderedCounter(OrderedDictrÒ   N)rÎ   r   rÑ   )Úocr   r   r   Útest_custom_repr  s   rÔ   )ErÐ   Úcollectionsr   r   r   r   r   rÅ   r[   r¸   rº   rY   ZunittestZIPython.libr   Úior	   r’   r   rÄ   r#   r+   r0   r2   r4   r    r7   r:   r>   rJ   rM   rO   ÚmarkZparametrizeÚzipr‚   Ú	frozensetrV   r^   r`   rc   rd   rg   Ú	Exceptionrh   rj   rn   ro   rp   ZTestCaserq   r�   rŽ   r”   r•   rš   r¢   r¬   r°   r±   r²   rµ   r¼   rÁ   rÈ   rÍ   rÎ   rÑ   rÔ   r   r   r   r   Ú<module>   s†   	


ù	öþ
	*%#.	