
    F\h^^                         S r SSKrSSKrSSKrSSKrSSKr	SSK
Jr  / SQrSSSSS.S jjrSSSSS.S	 jjrSS
.S jrS rS rS r " S S5      rS r " S S5      r\" \\\\\\\" S5      15      rS r S r!g)a/  Support to pretty-print lists, tuples, & dictionaries recursively.

Very simple, but useful, especially in debugging data structures.

Classes
-------

PrettyPrinter()
    Handle pretty-printing operations onto a stream using a configured
    set of formatting parameters.

Functions
---------

pformat()
    Format a Python object into a pretty-printed representation.

pprint()
    Pretty-print a Python object to a stream [default is sys.stdout].

saferepr()
    Generate a 'standard' repr()-like value, but protect against recursive
    data structures.

    N)StringIO)pprintpformat
isreadableisrecursivesafereprPrettyPrinterppFTcompact
sort_dictsunderscore_numbersc          
      >    [        XX4XVUS9nUR                  U 5        g)zAPretty-print a Python object to a stream [default is sys.stdout].)streamindentwidthdepthr   r   r   N)r	   r   )	objectr   r   r   r   r   r   r   printers	            /usr/lib/python3.13/pprint.pyr   r   0   s'     E-/G NN6    c          	      8    [        XUXEUS9R                  U 5      $ )z<Format a Python object into a pretty-printed representation.)r   r   r   r   r   r   )r	   r   )r   r   r   r   r   r   r   s          r   r   r   9   s&     5!(,>@@GPr   )r   c                &    [        U /UQ7SU0UD6  g)zPretty-print a Python objectr   N)r   )r   r   argskwargss       r   r
   r
   @   s    
6:D:Z:6:r   c                 @    [        5       R                  U 0 SS5      S   $ )z=Version of repr() which can handle recursive data structures.Nr   r	   
_safe_reprr   s    r   r   r   D        ?%%fb$:1==r   c                 @    [        5       R                  U 0 SS5      S   $ )z4Determine if saferepr(object) is readable by eval().Nr      r   r   s    r   r   r   H   r    r   c                 @    [        5       R                  U 0 SS5      S   $ )z8Determine if object requires a recursive representation.Nr      r   r   s    r   r   r   L   r    r   c                   *    \ rS rSrSrS/rS rS rSrg)	_safe_keyP   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     r   __init___safe_key.__init__\   s    r   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___   sm    	;88eii'' 	;dhh("TXX,7eii)2eii=9: ;	;s    A1BBr+   N)	__name__
__module____qualname____firstlineno____doc__	__slots__r-   r5   __static_attributes__ r   r   r&   r&   P   s     I;r   r&   c                 :    [        U S   5      [        U S   5      4$ )z&Helper function for comparing 2-tuplesr   r"   )r&   )ts    r   _safe_tuplerA   f   s    QqT?IadO++r   c                      \ rS rSrS%SSSS.S jjrS rS rS	 rS
 rS r	S r
0 rS r\\\R                  '   S r\\\R"                  R                  '   S r\\\R                  '   S r\\\R                  '   S r\\\R                  '   \\\R                  '   S r\\\R                  '   S r\\\R                  '   S r\\\R                  '   S r\\\ RB                  R                  '   S r"\"\\ RF                  R                  '   S r$S r%S r&S r'S r(S r)\)\\RT                  R                  '   S r+\+\\RX                  R                  '   S r-\-\\R\                  R                  '   S r/\/\\R`                  R                  '   S  r1\1\\Rd                  R                  '   S! r3\3\\Rh                  R                  '   S" r5\5\\Rl                  R                  '   S# r7S$r8g)&r	   j   NFTr   c                8   [        U5      n[        U5      nUS:  a  [        S5      eUb  US::  a  [        S5      eU(       d  [        S5      eX0l        Xl        X l        Ub  X@l        O[        R                  U l        [        U5      U l	        X`l
        Xpl        g)aY  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.

stream
    The desired output stream.  If omitted (or false), the standard
    output stream available at construction will be used.

compact
    If true, several items will be combined in one line.

sort_dicts
    If true, dict keys are sorted.

underscore_numbers
    If true, digit groups are separated with underscores.

r   zindent must be >= 0Nzdepth must be > 0zwidth must be != 0)int
ValueError_depth_indent_per_level_width_stream_sysstdoutbool_compact_sort_dicts_underscore_numbers)r,   r   r   r   r   r   r   r   s           r   r-   PrettyPrinter.__init__k   s    8 VE
A:233!011122!'!L;;DLW%#5 r   c                     U R                   b;  U R                  XR                   SS0 S5        U R                   R                  S5        g g )Nr   
)rJ   _formatwriter,   r   s     r   r   PrettyPrinter.pprint   s;    <<#LLq!R;LLt$ $r   c                 `    [        5       nU R                  XSS0 S5        UR                  5       $ Nr   )	_StringIOrT   getvalue)r,   r   sios      r   r   PrettyPrinter.pformat   s)    kV!QA.||~r   c                 0    U R                  U0 SS5      S   $ )Nr   r$   formatrV   s     r   r   PrettyPrinter.isrecursive   s    {{62q!,Q//r   c                 P    U R                  U0 SS5      u  p#nU=(       a    U(       + $ rY   r_   )r,   r   sreadable	recursives        r   r   PrettyPrinter.isreadable   s(    !%VRA!>Y)	M)r   c           
         [        U5      nXu;   a)  UR                  [        U5      5        SU l        SU l        g U R                  XU5      nU R                  U-
  U-
  n	[        U5      U	:  a  U R                  R                  [        U5      R                  S 5      n
U
b  SXW'   U
" XX#XEUS-   5        XW	 g [        R                  " U5      (       a  [        U[        5      (       dw  UR                  R                   (       a\  [#        UR                  S5      (       aA  SUR                  R$                  R&                  ;   a  SXW'   U R)                  XX4XVS-   5        XW	 g UR                  U5        g )NTFr"   __wrapped____create_fn__)r3   rU   
_recursion
_recursive	_readable_reprrI   len	_dispatchgetr2   __repr___dataclassesis_dataclass
isinstance__dataclass_params__reprhasattrrh   r9   _pprint_dataclass)r,   r   r   r   	allowancecontextlevelobjidrep	max_widthps              r   rT   PrettyPrinter._format   s1   6
LLF+,"DO"DNjj%0KK&(94	s8i""4<#8#8$?A}!"$	EAINN++F33 ..--22&//=99!V__%@%@%M%MM!"&&vv'[\S\]NSr   c                 z   UR                   R                  nU[        U5      S-   -  n[        R                  " U5       Vs/ s H6  oR
                  (       d  M  UR                  [        XR                  5      4PM8     n	nUR                  US-   5        U R                  XX4XV5        UR                  S5        g s  snf )Nr"   ())
	__class__r7   rn   rr   fieldsrv   namegetattrrU   _format_namespace_items)
r,   r   r   r   ry   rz   r{   cls_namefitemss
             r   rx   PrettyPrinter._pprint_dataclass   s    ##,,#h-!##<H<O<OPV<Wb<Wq[a[a2!&&'&&&12<WbX^$$$UFwVS cs    B8%B8c                 X   UR                   nU" S5        U R                  S:  a  U" U R                  S-
  S-  5        [        U5      nU(       aT  U R                  (       a  [	        UR                  5       [        S9n	OUR                  5       n	U R                  XX4S-   XV5        U" S5        g )N{r"    key})rU   rH   rn   rO   sortedr   rA   _format_dict_items)
r,   r   r   r   ry   rz   r{   rU   lengthr   s
             r   _pprint_dictPrettyPrinter._pprint_dict   s    c
!!A%4))A-45Vv||~;?##E6q=$+4c
r   c                 `   [        U5      (       d  UR                  [        U5      5        g UR                  nUR                  UR                  S-   5        U R                  [        UR                  5       5      UU[        UR                  5      -   S-   US-   XV5        UR                  S5        g )Nr   r"   r   )rn   rU   rv   r   r7   rT   listr   )r,   r   r   r   ry   rz   r{   clss           r   _pprint_ordered_dict"PrettyPrinter._pprint_ordered_dict   s    6{{LLf&S\\C'(T&,,.)6c#,,//!3Y]	% 	Sr   c                 t    UR                  S5        U R                  XX4S-   XV5        UR                  S5        g )N[r"   ])rU   _format_itemsr,   r   r   r   ry   rz   r{   s          r   _pprint_listPrettyPrinter._pprint_list   s3    S66q="	+Sr   c           	          UR                  S5        [        U5      S:X  a  SOSnU R                  XX4[        U5      -   XV5        UR                  U5        g )Nr   r"   z,)r   )rU   rn   r   )r,   r   r   r   ry   rz   r{   endchars           r   _pprint_tuplePrettyPrinter._pprint_tuple   sJ    Sf+*$66s7|3K"	+Wr   c           	         [        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[        UR
                  5      S-   -  n[        U[        S9nU R                  XX4[        U5      -   XV5        UR                  U5        g )Nr   r   ({})r"   r   )	rn   rU   rv   r   setr7   r   r&   r   )	r,   r   r   r   ry   rz   r{   typr   s	            r   _pprint_setPrettyPrinter._pprint_set   s    6{{LLf&#:LLGLL,-Gc#,,'!++FI.66s7|3K"	+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* r   r   rS   r   r   )
rU   rn   rv   
splitlinesrI   	enumerateappendrefindallpop)r,   r   r   r   ry   rz   r{   rU   chunkslines
max_width1r~   iliner}   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dSZ'(#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"   r   r   rS   r   r   )rU   rn   rv   _wrap_bytes_reprrI   )r,   r   r   r   ry   rz   r{   rU   parensdelimr}   s              r   _pprint_bytesPrettyPrinter._pprint_bytesG  s    v;!$v,!aKFNI#J#FKK&,@)LC%L#J5s6z)	 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"   r   )rU   r   bytes)r,   r   r   r   ry   rz   r{   rU   s           r   _pprint_bytearrayPrettyPrinter._pprint_bytearray\  sA    l5=&2+$q='19	>c
r   c                     UR                  S5        U R                  UR                  5       X#S-   US-   XV5        UR                  S5        g )Nzmappingproxy(   r"   r   )rU   rT   copyr   s          r   _pprint_mappingproxy"PrettyPrinter._pprint_mappingproxye  s=    _%V[[]FRKQ	%Sr   c                 4   [        U5      [        R                  L a  SnOUR                  R                  nU[        U5      S-   -  nUR                  R                  5       nUR                  US-   5        U R                  XX4XV5        UR                  S5        g )N	namespacer"   r   r   )
r2   _typesSimpleNamespacer   r7   rn   __dict__r   rU   r   )	r,   r   r   r   ry   rz   r{   r   r   s	            r   _pprint_simplenamespace%PrettyPrinter._pprint_simplenamespacem  s    <6111 #H''00H#h-!##%%'X^$$$UFwVSr   c           	      X   UR                   nX0R                  -  nSSU-  -   n[        U5      S-
  n	[        U5       Hk  u  n
u  pX:H  nU R	                  XU5      nU" U5        U" S5        U R                  XU[        U5      -   S-   U(       a  UOSXV5        U(       a  Mc  U" U5        Mm     g )N,
r   r"   : r$   )rU   rH   rn   r   rm   rT   )r,   r   r   r   ry   rz   r{   rU   delimnl
last_indexr   r   entlastr}   s                  r   r    PrettyPrinter._format_dict_items|  s    (((#,&Z!^
&u-MAz?D**S51C#J$KLLfs3x&7!&;&* ) 4g .r   c           	      H   UR                   nSSU-  -   n[        U5      S-
  n	[        U5       Hq  u  n
u  pX:H  nU" U5        U" S5        [        U5      U;   a	  U" S5        O,U R	                  XU[        U5      -   S-   U(       a  UOSXV5        U(       a  Mi  U" U5        Ms     g )Nr   r   r"   =...)rU   rn   r   r3   rT   )r,   r   r   r   ry   rz   r{   rU   r   r   r   r   r   r   s                 r   r   %PrettyPrinter._format_namespace_items  s    #,&Z!^
&u-MAz?D#J#J#w'! eS&3s8*;a*?*.YA$- 4g .r   c                    UR                   nX0R                  -  nU R                  S:  a  U" U R                  S-
  S-  5        SSU-  -   nSn	U R                  U-
  S-   =p[        U5      n [	        U5      nSnU(       d  Un [	        U5      nU R                  (       aP  U R                  XU5      n[        U5      S-   nU
U:  a  Un
U	(       a  Un	U
U:  a  U
U-  n
U" U	5        Sn	U" U5        Mv  U" U	5        Un	U R                  XUU(       a  UOSXV5        U(       d  M  g g ! [
         a     g f = f! [
         a    SnX-  nX-  n
 Nf = f)	Nr"   r   r   r   FTr$   , )
rU   rH   rI   iternextStopIterationrN   rm   rn   rT   )r,   r   r   r   ry   rz   r{   rU   r   r   r   r~   itnext_entr   r   r}   ws                     r   r   PrettyPrinter._format_items  sb   (((!!A%4))A-45#,& KK&0144%[	BxH C#8
 }}jju5HqL19%E 'A:QJE%L E#J%LELLf&* )/ $  		 ! #&	"#s$   ,D! D1 !
D.-D.1EEc                     U R                  XR                  5       U R                  U5      u  pEnU(       d  SU l        U(       a  SU l        U$ )NFT)r`   r   rG   rl   rk   )r,   r   rz   r{   rv   rd   re   s          r   rm   PrettyPrinter._repr  s@    $(KK04U%D!	"DN"DOr   c                 &    U R                  XX45      $ )zFormat object for a specific context, returning a string
and flags indicating whether the representation is 'readable'
and whether the object represents a recursive construct.
)r   )r,   r   rz   	maxlevelsr{   s        r   r`   PrettyPrinter.format  s    
 v	AAr   c                    [        U5      (       d  UR                  [        U5      5        g U R                  UR                  XV5      nUR
                  nU[        UR                  5      S-   -  nUR                  UR                  < SU< SSU-  < 35        U R                  XX4S-   XV5        UR                  S5        g )Nr"   r   r   r   r   )rn   rU   rv   rm   default_factoryr   r7   r   )	r,   r   r   r   ry   rz   r{   rdfr   s	            r   _pprint_default_dict"PrettyPrinter._pprint_default_dict  s    6{{LLf&jj//@#cll#a''S\\3fEF&&a-PSr   c                    [        U5      (       d  UR                  [        U5      5        g UR                  nUR                  UR                  S-   5        U R
                  S:  a!  UR                  U R
                  S-
  S-  5        UR                  5       nU R                  XU[        UR                  5      -   S-   US-   XV5        UR                  S5        g )Nr   r"   r   r$   r   )rn   rU   rv   r   r7   rH   most_commonr   )	r,   r   r   r   ry   rz   r{   r   r   s	            r   _pprint_counterPrettyPrinter._pprint_counter  s    6{{LLf&S\\D()!!A%LL$0014;<""$ &S\\): :Q >	A '	0 	Tr   c           	         [        UR                  5      (       d  UR                  [        U5      5        g UR                  nUR                  UR
                  S-   5        U[        UR
                  5      S-   -  n[        UR                  5       Hu  u  pU[        UR                  5      S-
  :X  a)  U R                  XX4S-   XV5        UR                  S5        MJ  U R                  XUSXV5        UR                  SSU-  -   5        Mw     g )Nr   r"   r   r   r   )rn   mapsrU   rv   r   r7   r   rT   )
r,   r   r   r   ry   rz   r{   r   r   ms
             r   _pprint_chain_mapPrettyPrinter._pprint_chain_map  s    6;;LLf&S\\C'(#cll#a''fkk*DAC$q((QAwNS!Q7BUS6\12 +r   c                 
   [        U5      (       d  UR                  [        U5      5        g UR                  nUR                  UR                  S-   5        U[        UR                  5      S-   -  nUR                  S5        UR
                  c(  U R                  XX4S-   XV5        UR                  S5        g U R                  XUSXV5        U R                  UR
                  XV5      nUR                  SSU-  < SU< S	35        g )
Nr   r"   r   r$   z])z],
r   zmaxlen=r   )rn   rU   rv   r   r7   maxlenr   rm   )	r,   r   r   r   ry   rz   r{   r   rmls	            r   _pprint_dequePrettyPrinter._pprint_deque  s    6{{LLf&S\\C'(#cll#a''S== vv1}&/LLvvq&/**V]]G;CLLsV|SABr   c           	      F    U R                  UR                  X#XEUS-
  5        g Nr"   rT   datar   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  r   s          r   _pprint_user_listPrettyPrinter._pprint_user_list   r  r   c           	      F    U R                  UR                  X#XEUS-
  5        g r  r  r   s          r   _pprint_user_string!PrettyPrinter._pprint_user_string%  r  r   c                 6   [        U5      nU[        ;   a  [        U5      SS4$ [        USS 5      n[	        U[
        5      (       a9  U[
        R                  L a&  U R                  (       a  US SS4$ [        U5      SS4$ [	        U[        5      (       Ga*  U[        R                  L Ga  U(       d  g[        U5      nU(       a  XC:  a  SSXr;   4$ Xr;   a  [        U5      SS4$ SX''   SnSn	/ n
U
R                  nUS-  nU R                  (       a  [        UR                  5       [        S9nOUR                  5       nU Hf  u  pU R!                  XX45      u  nnnU R!                  XX45      u  nnnU" U< S	U< 35        U=(       a    U=(       a    UnU(       d	  U(       d  Md  Sn	Mh     X'	 S
SR#                  U
5      -  X4$ [	        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-  SXr;   4$ Xr;   a  [        U5      SS4$ SX''   SnSn	/ n
U
R                  nUS-  nU H6  nU R!                  UX#U5      u  nnnU" U5        U(       d  SnU(       d  M4  Sn	M8     X'	 USR#                  U
5      -  X4$ [        U5      nUU=(       a    UR+                  S5      (       + S4$ )NTFrq   _d)z{}TFz{...}r"   r   r   z{%s}r   )z[]TFz[%s]z(%s,))z()TFz(%s)r   <)r2   _builtin_scalarsrv   r   
issubclassrE   rq   rP   dictr3   rj   r   rO   r   r   rA   r`   joinr   tuplern   
startswith)r,   r   rz   r   r{   r   rr|   rd   re   
componentsr   r   kvkrepr	kreadablekrecurvrepr	vreadablevrecurr`   oorepr	oreadableorecurr}   s                              r   r   PrettyPrinter._safe_repr*  s   6l""<u,,CT*c3A$5'' tU22F|T500c4  Q$--%7(vJEU/u'777!&)5$66GNHIJ&&FQJEv||~;?+/;;	,2(y&+/;;	,2(y&5%01#?	?iVV $I  DIIj118FFsD!!a4==&8sE""qENN':#t$$,V! ,vJEU/~ue.>>>!&)5$66GNHIJ&&FQJE+/;;w5,2(y&u $H6 $I  DIIj118FF6lS4!44u<<r   )	rN   rG   rH   rl   rk   rO   rJ   rP   rI   )r"   r'   NN)9r7   r8   r9   r:   r-   r   r   r   r   rT   rx   ro   r   r  rq   r   _collectionsOrderedDictr   r   r   r  r   r   	frozensetr   r1   r   r   r   	bytearrayr   r   MappingProxyTyper   r   r   r   r   rm   r`   r   defaultdictr   Counterr  ChainMapr  dequer  UserDictr  UserListr  
UserStringr   r=   r>   r   r   r	   r	   j   s.   -64E-6^%

0*8 I  ,Idmm	 4HIl&&//0  ,Idmm !.Ienn" *Icll$/Ii  !/b *Icll& !.Ienn %6Ii  ! 3GIf%%../ 2IIf$$--."&')RB	 4HIl&&//0 0?Il""++,3 1BIl##,,-C$ .;Il  ))*Q 1BIl##,,-Q 1BIl##,,-Q 3FIl%%../O=r   r	   c                 P    S[        U 5      R                  < S[        U 5      < S3$ )Nz<Recursion on z	 with id=>)r2   r7   r3   r   s    r   rj   rj   ~  s    F|$$bj2 3r   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   rangerv   )r   r   ry   r   r   r   r   r   s           r   r   r     s     Gv;!aD1c&k1%1~N	9EtI%'7m#GG & 7m s   BB)Nr"   r'   N)r"   r'   N)"r;   collectionsr/  dataclassesrr   r   sysrK   typesr   ior   rZ   __all__r   r   r
   r   r   r   r&   rA   r	   r1  r1   r   r2  floatcomplexrM   r2   r  rj   r   r>   r   r   <module>rG     s   4 # " 	   $"TePduP "' ;>>>; ;,,O= O=b c5)UG"DJ0 1 3
r   