
    ?gL                        S SK Jr  S SKrS SKrS SKJr  S SK	r	S SK
rS SKJr  S SKJr  S SKJr  S SKJr   " S S	5      rS
 r " S S5      r\" \\\\\\\" S5      \15      rSS jrSS jrg)    )annotationsN)StringIO)Any)Callable)IO)Iteratorc                  *    \ rS rSrSrS/rS rS rSrg)	_safe_key   aA  Helper function for key functions when sorting unorderable objects.

The wrapped-object will fallback to a Py2.x style comparison for
unorderable types (sorting first comparing the type name and then by
the obj ids).  Does not work recursively, so dict.items() must have
_safe_key applied to both the key and the value.

objc                    Xl         g Nr   )selfr   s     4/usr/lib/python3/dist-packages/_pytest/_io/pprint.py__init___safe_key.__init__)   s        c                $    U R                   UR                   :  $ ! [         aj    [        [        U R                   5      5      [	        U R                   5      4[        [        UR                   5      5      [	        UR                   5      4:  s $ f = fr   )r   	TypeErrorstrtypeid)r   others     r   __lt___safe_key.__lt__,   sp    	88eii'' 	TXX'DHH6DO$599:  	s    A1BBr   N)	__name__
__module____qualname____firstlineno____doc__	__slots__r   r   __static_attributes__ r   r   r
   r
      s     Ir   r
   c                :    [        U S   5      [        U S   5      4$ )z&Helper function for comparing 2-tuplesr      )r
   )ts    r   _safe_tupler(   6   s    QqT?IadO++r   c                     \ rS rSr%    S        S!S jjrS"S jr              S#S jr              S#S jr0 rS\	S'                 S#S	 jr
\
\\R                  '                 S#S
 jr\\\R                  R                  '                 S#S jr\\\R                  '                 S#S jr\\\R                  '                 S#S jr\\\R                  '   \\\R                  '                 S#S jr\\\R                  '                 S#S jr\\\R                  '                 S#S jr\\\R                  '                 S#S jr\\\R>                  R                  '                 S#S jr \ \\RB                  R                  '                 S$S jr"              S$S jr#              S%S jr$S&S jr%              S#S jr&\&\\RN                  R                  '                 S#S jr(\(\\RR                  R                  '                 S#S jr*\*\\RV                  R                  '                 S#S jr,\,\\RZ                  R                  '                 S#S jr.\.\\R^                  R                  '                 S#S jr0\0\\Rb                  R                  '                 S#S jr2\2\\Rf                  R                  '             S'S jr4Sr5g)(PrettyPrinter;   Nc                    US:  a  [        S5      eUb  US::  a  [        S5      eU(       d  [        S5      eX0l        Xl        X l        g)a  Handle pretty printing operations onto a stream using a set of
configured parameters.

indent
    Number of spaces to indent for each level of nesting.

width
    Attempted maximum number of columns in the output.

depth
    The maximum depth to print out nested structures.

r   zindent must be >= 0Nzdepth must be > 0zwidth must be != 0)
ValueError_depth_indent_per_level_width)r   indentwidthdepths       r   r   PrettyPrinter.__init__<   sN    & A:233!011122!'r   c                p    [        5       nU R                  XSS[        5       S5        UR                  5       $ )Nr   )	_StringIO_formatsetgetvalue)r   objectsios      r   pformatPrettyPrinter.pformatY   s+    kV!Qq1||~r   c           
        [        U5      nXu;   a  UR                  [        U5      5        g U R                  R	                  [        U5      R                  S 5      nUb1  UR                  U5        U" XX#XEUS-   5        UR                  U5        g [        R                  " U5      (       a  [        U[
        5      (       d  UR                  R                  (       ax  [        UR                  S5      (       a]  SUR                  R                  R                   ;   a9  UR                  U5        U R#                  XX4XVS-   5        UR                  U5        g UR                  U R%                  XU5      5        g )Nr&   __wrapped____create_fn__)r   write
_recursion	_dispatchgetr   __repr__addremove_dataclassesis_dataclass
isinstance__dataclass_params__reprhasattrr?   r   _pprint_dataclass_repr)	r   r:   streamr1   	allowancecontextlevelobjidps	            r   r7   PrettyPrinter._format^   s    6
LLF+,NNtF|44d;=KKdFI	JNN5!%%f--vt,,++00 FOO]336??#>#>#K#KKKK""7AI NN5!LLFU;<r   c                Z   UR                   R                  n[        R                  " U5       Vs/ s H7  nUR                  (       d  M  UR
                  [        XR
                  5      4PM9     n	nUR                  US-   5        U R                  XX4XV5        UR                  S5        g s  snf N())		__class__r   rH   fieldsrL   namegetattrrA   _format_namespace_items)
r   r:   rP   r1   rQ   rR   rS   cls_namefitemss
             r   rN   PrettyPrinter._pprint_dataclass   s     ##,, "((0
0vv .QVVWVVV,-0 	 

 	X^$$$UFwVS
s   B(%B(z`dict[Callable[..., str], Callable[[PrettyPrinter, Any, IO[str], int, int, set[int], int], None]]rC   c                    UR                   nU" S5        [        UR                  5       [        S9nU R	                  XX4XV5        U" S5        g )N{key})rA   sortedrb   r(   _format_dict_items)	r   r:   rP   r1   rQ   rR   rS   rA   rb   s	            r   _pprint_dictPrettyPrinter._pprint_dict   s?     c
v||~;7v'Qc
r   c                    [        U5      (       d  UR                  [        U5      5        g UR                  nUR                  UR                  S-   5        U R                  XX4XV5        UR                  S5        g rX   )lenrA   rL   r[   r   rk   )r   r:   rP   r1   rQ   rR   rS   clss           r   _pprint_ordered_dict"PrettyPrinter._pprint_ordered_dict   s^     6{{LLf&S\\C'(&&WLSr   c                n    UR                  S5        U R                  XX4XV5        UR                  S5        g )N[]rA   _format_itemsr   r:   rP   r1   rQ   rR   rS   s          r   _pprint_listPrettyPrinter._pprint_list   .     	S66gMSr   c                n    UR                  S5        U R                  XX4XV5        UR                  S5        g rX   ru   rw   s          r   _pprint_tuplePrettyPrinter._pprint_tuple   rz   r   c                P   [        U5      (       d  UR                  [        U5      5        g UR                  nU[        L a  UR                  S5        SnO UR                  UR
                  S-   5        Sn[        U[        S9nU R                  XX4XV5        UR                  U5        g )Nre   rh   z({z})rf   )	rn   rA   rL   r[   r8   r   ri   r
   rv   )	r   r:   rP   r1   rQ   rR   rS   typendchars	            r   _pprint_setPrettyPrinter._pprint_set   s     6{{LLf&#:LLGLL,-GI.66gMWr   c                   UR                   n[        U5      (       d  U" [        U5      5        g / nUR                  S5      n	US:X  a
  US-  nUS-  nU R                  U-
  =p[        U	5       GH/  u  p[        U5      nU[        U	5      S-
  :X  a  X-  n
[        U5      U
::  a  UR                  U5        MI  [        R                  " SU5      nU(       d   eUS   (       a   eUR                  5         UnSn[        U5       Hs  u  nnUU-   nU[        U5      S-
  :X  a  U[        U	5      S-
  :X  a  UU-  n[        [        U5      5      U:  a%  U(       a  UR                  [        U5      5        UnMq  UnMu     U(       d  GM  UR                  [        U5      5        GM2     [        U5      S:X  a	  U" W5        g US:X  a  U" S5        [        U5       H!  u  pUS:  a  U" SS	U-  -   5        U" U5        M#     US:X  a	  U" S
5        g g )NTr&   z\S*\s* rY   r   
 rZ   )
rA   rn   rL   
splitlinesr0   	enumerateappendrefindallpop)r   r:   rP   r1   rQ   rR   rS   rA   chunkslines
max_width1	max_widthilinerepparts
max_width2currentjpart	candidates                        r   _pprint_strPrettyPrinter._pprint_str   s    6{{$v,!!$'A:aKFNI!%v!55
 'GAt*CCJN"'
3x:%c" 

9d3u 9$}		&
(/GAt '$ICJN*qCJN/B"i/
4	?+j8""MM$w-8"&"+  0 7MM$w-03 (4 v;!#JA:#J'FA1udS6\)*#J ( A:#J r   c                @   UR                   n[        U5      S::  a  U" [        U5      5        g US:H  nU(       a  US-  nUS-  nU" S5        Sn	[        XR                  U-
  U5       H$  n
U" U	5        U" U
5        U	(       a  M  SSU-  -   n	M&     U(       a	  U" S5        g g )N   r&   rY   r   r   r   rZ   )rA   rn   rL   _wrap_bytes_reprr0   )r   r:   rP   r1   rQ   rR   rS   rA   parensdelimr   s              r   _pprint_bytesPrettyPrinter._pprint_bytes1  s     v;!$v,!aKFNI#J#FKK&,@)LC%L#J5sV|+	 M
 #J r   c           	         UR                   nU" S5        U R                  [        U5      X#S-   US-   XVS-   5        U" S5        g )Nz
bytearray(
   r&   rZ   )rA   r   bytes)r   r:   rP   r1   rQ   rR   rS   rA   s           r   _pprint_bytearrayPrettyPrinter._pprint_bytearrayN  sF     l&M6B;	AwPQ		
 	c
r   c                    UR                  S5        U R                  UR                  5       X#XEU5        UR                  S5        g )Nzmappingproxy(rZ   )rA   r7   copyrw   s          r   _pprint_mappingproxy"PrettyPrinter._pprint_mappingproxy`  s4     	_%V[[]FINSr   c                   [        U5      [        R                  L a  SnOUR                  R                  nUR
                  R                  5       nUR                  US-   5        U R                  XX4XV5        UR                  S5        g )N	namespacerY   rZ   )	r   _typesSimpleNamespacer[   r   __dict__rb   rA   r_   )	r   r:   rP   r1   rQ   rR   rS   r`   rb   s	            r   _pprint_simplenamespace%PrettyPrinter._pprint_simplenamespaceo  sn     <6111 #H''00H%%'X^$$$UFwVSr   c           	        U(       d  g UR                   nX0R                  -   nSSU-  -   n	U HI  u  pU" U	5        U" U R                  XU5      5        U" S5        U R                  XUSXV5        U" S5        MK     U" SSU-  -   5        g )Nr   r   : r&   ,)rA   r/   rO   r7   r   rb   rP   r1   rQ   rR   rS   rA   item_indentdelimnlrg   ents               r   rj    PrettyPrinter._format_dict_items  s     555{**HC'N$**S512$KLLk1gE#J  	dS6\!"r   c           	     D   U(       d  g UR                   nX0R                  -   nSSU-  -   n	U Hb  u  pU" U	5        U" U
5        U" S5        [        U5      U;   a	  U" S5        O%U R                  UUU[	        U
5      -   S-   SUU5        U" S5        Md     U" SSU-  -   5        g )Nr   r   =...r&   r   )rA   r/   r   r7   rn   r   s               r   r_   %PrettyPrinter._format_namespace_items  s     555{**HC'N#J#J#w'! e#c(*Q. #J% ( 	dS6\!"r   c           	         U(       d  g UR                   nX0R                  -   nSSU-  -   n	U H'  n
U" U	5        U R                  XUSXV5        U" S5        M)     U" SSU-  -   5        g )Nr   r   r&   r   )rA   r/   r7   )r   rb   rP   r1   rQ   rR   rS   rA   r   r   items              r   rv   PrettyPrinter._format_items  sm     555{**D'NLL{AwF#J 
 	dS6\!"r   c                X    U R                  XR                  5       U R                  U5      $ r   )
_safe_reprr   r.   )r   r:   rR   rS   s       r   rO   PrettyPrinter._repr  s    v||~t{{EJJr   c                    U R                  UR                  XV5      nUR                  UR                  R                   SU S35        U R                  XX4XV5        UR                  S5        g )NrY   , rZ   )rO   default_factoryrA   r[   r   rk   )r   r:   rP   r1   rQ   rR   rS   rdfs           r   _pprint_default_dict"PrettyPrinter._pprint_default_dict  s^     jj//@((112!C5;<&&WLSr   c                   UR                  UR                  R                  S-   5        U(       aE  UR                  S5        UR                  5       nU R	                  XrX4XV5        UR                  S5        UR                  S5        g )NrY   re   rh   rZ   )rA   r[   r   most_commonrj   )r   r:   rP   r1   rQ   rR   rS   rb   s           r   _pprint_counterPrettyPrinter._pprint_counter  sh     	V%%..45LL&&(E##E6gULLSr   c                   [        UR                  5      (       a6  [        UR                  5      S:X  a8  [        UR                  S   5      (       d  UR                  [        U5      5        g UR                  UR                  R
                  S-   5        U R                  UR                  X#XEU5        UR                  S5        g )Nr&   r   rY   rZ   )rn   mapsrA   rL   r[   r   rv   rw   s          r   _pprint_chain_mapPrettyPrinter._pprint_chain_map  s     6;;C$4$9#fkkRSnBUBULLf&V%%..456;;	ERSr   c                   UR                  UR                  R                  S-   5        UR                  b  UR                  SUR                  -  5        UR                  S5        U R	                  XX4S-   XV5        UR                  S5        g )NrY   zmaxlen=%d, rs   r&   z]))rA   r[   r   maxlenrv   rw   s          r   _pprint_dequePrettyPrinter._pprint_deque  sn     	V%%..45==$LL67S66q='QTr   c           	     F    U R                  UR                  X#XEUS-
  5        g Nr&   r7   datarw   s          r   _pprint_user_dictPrettyPrinter._pprint_user_dict'       	V[[&)eaiPr   c           	     F    U R                  UR                  X#XEUS-
  5        g r   r   rw   s          r   _pprint_user_listPrettyPrinter._pprint_user_list4  r   r   c           	     F    U R                  UR                  X#XEUS-
  5        g r   r   rw   s          r   _pprint_user_string!PrettyPrinter._pprint_user_stringA  r   r   c                   [        U5      nU[        ;   a  [        U5      $ [        USS 5      n[	        U[
        5      (       a  U[
        R                  L a  U(       d  g[        U5      nU(       a  XC:  a  gXr;   a  [        U5      $ UR                  U5        / nUR                  n	US-  n[        UR                  5       [        S9 H6  u  pU R                  XX45      nU R                  XX45      nU	" U SU 35        M8     UR                  U5        SR!                  SR#                  U5      5      $ [	        U[$        5      (       a  U[$        R                  L d(  [	        U[&        5      (       a  U[&        R                  L a  [	        U[$        5      (       a  U(       d  g	S
nO[)        U5      S:X  a  SnO
U(       d  gSn[        U5      nU(       a
  XC:  a  US-  $ Xr;   a  [        U5      $ UR                  U5        / nUR                  n	US-  nU H  nU R                  XX45      nU	" U5        M     UR                  U5        USR#                  U5      -  $ [        U5      $ )NrE   z{}z{...}r&   rf   r   z{{{}}}r   z[]z[%s]z(%s,)z()z(%s)r   )r   _builtin_scalarsrL   r^   
issubclassdictrE   r   rB   rF   r   ri   rb   r(   r   rG   formatjoinlisttuplern   )r   r:   rR   	maxlevelsrS   r   rrT   
componentsr   kvkreprvreprr   ooreprs                    r   r   PrettyPrinter._safe_reprN  s    6l""<CT*c4  Q$--%7vJEU/!&))KK$&J&&FQJEv||~;?IEIE%5'*+ @ NN5!??499Z#899sD!!a4==&8sE""qENN':#t$$V! vJEU/~%!&))KKJ&&FQJEIEu  NN5!DIIj111F|r   )r.   r/   r0   )r   P   N)r1   intr2   r   r3   
int | NonereturnNoner:   r   r   r   )r:   r   rP   IO[str]r1   r   rQ   r   rR   set[int]rS   r   r   r   )rb   zlist[tuple[Any, Any]]rP   r   r1   r   rQ   r   rR   r   rS   r   r   r   )rb   z	list[Any]rP   r   r1   r   rQ   r   rR   r   rS   r   r   r   )r:   r   rR   r   rS   r   r   r   )
r:   r   rR   r   r   r   rS   r   r   r   )6r   r   r   r    r   r<   r7   rN   rC   __annotations__rk   r   rE   rp   _collectionsOrderedDictrx   r   r|   r   r   r8   	frozensetr   r   r   r   r   	bytearrayr   r   MappingProxyTyper   r   rj   r_   rv   rO   r   defaultdictr   Counterr   ChainMapr   dequer   UserDictr   UserListr   
UserStringr   r#   r$   r   r   r*   r*   ;   s_     	  	
 
:
"="= "= 	"=
 "= "= "= 
"=H  	
    
, 	   
  	
    
  ,Idmm  	
    
" 4HIl&&//0  	
    
  ,Idmm  	
    
 !.Ienn  	
    
. *Icll$/Ii  !77 7 	7
 7 7 7 
7r *Icll  	
    
6 !.Ienn  	
    
  %6Ii  !  	
    
 3GIf%%../  	
    
( 2IIf$$--.#$# # 	#
 # # # 
#0##$## ## 	##
 ## ## ## 
##J## # 	#
 # # # 
#.K  	
    
 4HIl&&//0  	
    
& 0?Il""++,  	
    
" 1BIl##,,-  	
    
" .;Il  ))*	Q	Q 	Q 		Q
 	Q 	Q 	Q 
	Q 1BIl##,,-	Q	Q 	Q 		Q
 	Q 	Q 	Q 
	Q 1BIl##,,-	Q	Q 	Q 		Q
 	Q 	Q 	Q 
	Q 3FIl%%../88$,89C8LO8	8r   r*   c                L    S[        U 5      R                   S[        U 5       S3$ )Nz<Recursion on z	 with id=>)r   r   r   )r:   s    r   rB   rB     s&    DL112)BvJ<qIIr   c              #  "  #    Sn[        U 5      S-  S-  n[        S[        U 5      S5       HI  nXUS-    nX6-   nXT:X  a  X-  n[        [        U5      5      U:  a  U(       a  [        U5      v   UnMG  UnMK     U(       a  [        U5      v   g g 7f)Nr   r   r   )rn   rangerL   )r:   r2   rQ   r   lastr   r   r   s           r   r   r     s     Gv;!aD1c&k1%!a% N	9EtI%'7m#GG & 7m s   BBr   )r:   r   r2   r   rQ   r   r   zIterator[str]) 
__future__r   collectionsr   dataclassesrH   ior   r6   r   typesr   typingr   r   r   r   r
   r(   r*   r  r   r   r  floatcomplexboolr   r   r   rB   r   r$   r   r   <module>r     sq     # " " $ 	      2,
K	 K	\ %E7D$t*cB 
Jr   