
    Rh^^                         d 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 g dZddddddZdddddd	Zdd
dZd Zd Zd Z G d d      Zd Z G d d      Z eeeeeee ed      h      Zd Z d Z!y)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          	      J    t        |||||||      }|j                  |        y)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.12/pprint.pyr   r   0   s-     fEJ-/G NN6    c                B    t        ||||||      j                  |       S )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*     e5!(Z,>@@GPr   )r   c                &    t        | g|d|i| y)zPretty-print a Python objectr   N)r   )r   r   argskwargss       r   r
   r
   @   s    
6:D:Z:6:r   c                 @    t               j                  | i dd      d   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                 @    t               j                  | i dd      d   S )z4Determine if saferepr(object) is readable by eval().Nr      r   r   s    r   r   r   H   r    r   c                 @    t               j                  | i dd      d   S )z8Determine if object requires a recursive representation.Nr      r   r   s    r   r   r   L   r    r   c                   "    e Zd ZdZdgZd Zd Zy)	_safe_keyaU  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                     || _         y N)r'   )selfr'   s     r   __init__z_safe_key.__init__\   s	    r   c                 "   	 | j                   |j                   k  S # t        $ rj t        t        | j                               t	        | j                         ft        t        |j                               t	        |j                         fk  cY S w xY wr)   )r'   	TypeErrorstrtypeid)r*   others     r   __lt__z_safe_key.__lt___   sm    	;88eii'' 	;dhh("TXX,7eii)2eii=9: ;	;s    A0BBN)__name__
__module____qualname____doc__	__slots__r+   r2    r   r   r&   r&   P   s     I;r   r&   c                 :    t        | d         t        | d         fS )z&Helper function for comparing 2-tuplesr   r"   )r&   )ts    r   _safe_tupler;   f   s    QqT?IadO++r   c                      e Zd Zd#dddddZd Zd Zd Zd	 Zd
 Zd Z	i Z
d Zee
ej                  <   d Zee
ej                   j                  <   d Zee
ej                  <   d Zee
ej                  <   d Zee
ej                  <   ee
ej                  <   d Zee
ej                  <   d Zee
ej                  <   d Zee
ej                  <   d Zee
ej@                  j                  <   d Z!e!e
ejD                  j                  <   d Z#d Z$d Z%d Z&d Z'd Z(e(e
ejR                  j                  <   d Z*e*e
ejV                  j                  <   d Z,e,e
ejZ                  j                  <   d Z.e.e
ej^                  j                  <   d Z0e0e
ejb                  j                  <   d  Z2e2e
ejf                  j                  <   d! Z4e4e
ejj                  j                  <   d" Z6y)$r	   NFTr   c                2   t        |      }t        |      }|dk  rt        d      ||dk  rt        d      |st        d      || _        || _        || _        ||| _        nt        j                  | _        t        |      | _	        || _
        || _        y)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.

        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+   zPrettyPrinter.__init__k   s    8 VE
A:233!011122!'!DL;;DLW%#5 r   c                     | j                   <| j                  || j                   ddi d       | j                   j                  d       y y )Nr   
)rC   _formatwriter*   r   s     r   r   zPrettyPrinter.pprint   s=    <<#LLq!R;LLt$ $r   c                 b    t               }| j                  ||ddi d       |j                         S Nr   )	_StringIOrL   getvalue)r*   r   sios      r   r   zPrettyPrinter.pformat   s+    kVS!QA.||~r   c                 0    | j                  |i dd      d   S )Nr   r$   formatrN   s     r   r   zPrettyPrinter.isrecursive   s    {{62q!,Q//r   c                 @    | j                  |i dd      \  }}}|xr | S rP   rU   )r*   r   sreadable	recursives        r   r   zPrettyPrinter.isreadable   s*    !%VRA!>8Y)	M)r   c           
         t        |      }||v r)|j                  t        |             d| _        d| _        y | j                  |||      }| j                  |z
  |z
  }	t        |      |	kD  r| j                  j                  t        |      j                  d       }
|
d||<    |
| ||||||dz          ||= y t        j                  |      rt        |t              sp|j                  j                   rZt#        |j                  d      rDd|j                  j$                  j&                  v r"d||<   | j)                  ||||||dz          ||= y |j                  |       y )NTFr"   __wrapped____create_fn__)r0   rM   
_recursion
_recursive	_readable_reprrB   len	_dispatchgetr/   __repr___dataclassesis_dataclass
isinstance__dataclass_params__reprhasattrr\   r5   _pprint_dataclass)r*   r   r   r   	allowancecontextlevelobjidrep	max_widthps              r   rL   zPrettyPrinter._format   sA   6
GLLF+,"DO"DNjj%0KK&(94	s8i""4<#8#8$?A}!"$	7EAINEN++F3 .--22&//=9!V__%@%@%M%MM!"&&vvvy'SX[\S\]ENSr   c                 p   |j                   j                  }|t        |      dz   z  }t        j                  |      D cg c]1  }|j
                  s|j                  t        ||j                        f3 }	}|j                  |dz          | j                  |	|||||       |j                  d       y c c}w )Nr"   ())
	__class__r3   rb   rf   fieldsrj   namegetattrrM   _format_namespace_items)
r*   r   r   r   rm   rn   ro   cls_namefitemss
             r   rl   zPrettyPrinter._pprint_dataclass   s    ##,,#h-!##<H<O<OPV<Wbq[\[a[a!&&'&!&&12bbX^$$$UFFIwPUVS cs   B3$B3c                 N   |j                   } |d       | j                  dkD  r || j                  dz
  dz         t        |      }|rU| j                  r t	        |j                         t              }	n|j                         }	| j                  |	|||dz   ||        |d       y )N{r"    key})rM   rA   rb   rH   sortedr~   r;   _format_dict_items)
r*   r   r   r   rm   rn   ro   rM   lengthr~   s
             r   _pprint_dictzPrettyPrinter._pprint_dict   s    c
!!A%4))A-45Vv||~;?##E669q=$+U4c
r   c                 X   t        |      s|j                  t        |             y |j                  }|j                  |j                  dz          | j                  t        |j                               ||t        |j                        z   dz   |dz   ||       |j                  d       y )Nru   r"   rv   )rb   rM   rj   rw   r3   rL   listr~   )r*   r   r   r   rm   rn   ro   clss           r   _pprint_ordered_dictz"PrettyPrinter._pprint_ordered_dict   s    6{LLf&S\\C'(T&,,.)6c#,,//!3Y]e	% 	Sr   c                 z    |j                  d       | j                  ||||dz   ||       |j                  d       y )N[r"   ])rM   _format_itemsr*   r   r   r   rm   rn   ro   s          r   _pprint_listzPrettyPrinter._pprint_list   s9    S6669q="E	+Sr   c           	          |j                  d       t        |      dk(  rdnd}| j                  ||||t        |      z   ||       |j                  |       y )Nru   r"   z,)rv   )rM   rb   r   )r*   r   r   r   rm   rn   ro   endchars           r   _pprint_tuplezPrettyPrinter._pprint_tuple   sP    Sf+*$6669s7|3K"E	+Wr   c           	         t        |      s|j                  t        |             y |j                  }|t        u r|j                  d       d}n;|j                  |j
                  dz          d}|t        |j
                        dz   z  }t        |t              }| j                  ||||t        |      z   ||       |j                  |       y )Nr   r   ({})r"   r   )	rb   rM   rj   rw   setr3   r   r&   r   )	r*   r   r   r   rm   rn   ro   typr   s	            r   _pprint_setzPrettyPrinter._pprint_set   s    6{LLf&#:LLGLL,-Gc#,,'!++FI.6669s7|3K"E	+Wr   c                    |j                   }t        |      s |t        |             y g }|j                  d      }	|dk(  r
|dz  }|dz  }| j                  |z
  x}
}t        |	      D ]  \  }}t        |      }|t        |	      dz
  k(  r|
|z  }
t        |      |
k  r|j                  |       Ht        j                  d|      }|sJ |d   rJ |j                          |}d}t        |      D ]i  \  }}||z   }|t        |      dz
  k(  r|t        |	      dz
  k(  r||z  }t        t        |            |kD  r|r|j                  t        |             |}h|}k |s|j                  t        |              t        |      dk(  r	 |       y |dk(  r |d       t        |      D ]   \  }}|dkD  r |dd	|z  z           ||       " |dk(  r	 |d
       y y )NTr"   z\S*\s* ru   r   rK   r   rv   )
rM   rb   rj   
splitlinesrB   	enumerateappendrefindallpop)r*   r   r   r   rm   rn   ro   rM   chunkslines
max_width1rr   ilinerq   parts
max_width2currentjpart	candidates                        r   _pprint_strzPrettyPrinter._pprint_str  s   6{$v,!!$'A:aKFNI!%v!55
Y ' 	1GAtt*CCJN"i'
3x:%c" 

9d3u 9$}		&
(/ 	,GAt '$ICJN*qCJN/B"i/
4	?+j8""MM$w-8"&"+	, MM$w-03	14 v;!#JA:#J' 	FAs1udSZ'(#J	 A:#J r   c                    |j                   }t        |      dk  r |t        |             y |dk(  }|r|dz  }|dz  } |d       d}	t        || j                  |z
  |      D ]  }
 ||	        ||
       |	rdd|z  z   }	 |r	 |d       y y )N   r"   ru   r   rK   r   rv   )rM   rb   rj   _wrap_bytes_reprrB   )r*   r   r   r   rm   rn   ro   rM   parensdelimrq   s              r   _pprint_byteszPrettyPrinter._pprint_bytesG  s    v;!$v,!aKFNI#J#FDKK&,@)L 	*C%L#Js6z)		*
 #J r   c           	          |j                   } |d       | j                  t        |      ||dz   |dz   ||dz           |d       y )Nz
bytearray(
   r"   rv   )rM   r   bytes)r*   r   r   r   rm   rn   ro   rM   s           r   _pprint_bytearrayzPrettyPrinter._pprint_bytearray\  sE    l5=&&2+$q='519	>c
r   c                     |j                  d       | j                  |j                         ||dz   |dz   ||       |j                  d       y )Nzmappingproxy(   r"   rv   )rM   rL   copyr   s          r   _pprint_mappingproxyz"PrettyPrinter._pprint_mappingproxye  sA    _%V[[]FFRKQe	%Sr   c                 8   t        |      t        j                  u rd}n|j                  j                  }|t        |      dz   z  }|j                  j                         }|j                  |dz          | j                  ||||||       |j                  d       y )N	namespacer"   ru   rv   )
r/   _typesSimpleNamespacerw   r3   rb   __dict__r~   rM   r{   )	r*   r   r   r   rm   rn   ro   r|   r~   s	            r   _pprint_simplenamespacez%PrettyPrinter._pprint_simplenamespacem  s    <6111 #H''00H#h-!##%%'X^$$$UFFIwPUVSr   c           	      J   |j                   }|| j                  z  }dd|z  z   }t        |      dz
  }	t        |      D ]d  \  }
\  }}|
|	k(  }| j	                  |||      } ||        |d       | j                  |||t        |      z   dz   |r|nd||       |r] ||       f y )N,
r   r"   : r$   )rM   rA   rb   r   ra   rL   )r*   r~   r   r   rm   rn   ro   rM   delimnl
last_indexr   r   entlastrq   s                  r   r   z PrettyPrinter._format_dict_items|  s    $(((#,&Z!^
&u- 		MAzS
?D**S'51C#J$KLLffs3x&7!&;&* %) g		r   c           	      2   |j                   }dd|z  z   }t        |      dz
  }	t        |      D ]g  \  }
\  }}|
|	k(  } ||        |d       t        |      |v r	 |d       n)| j	                  |||t        |      z   dz   |r|nd||       |r` ||       i y )Nr   r   r"   =...)rM   rb   r   r0   rL   )r*   r~   r   r   rm   rn   ro   rM   r   r   r   r   r   r   s                 r   r{   z%PrettyPrinter._format_namespace_items  s    #,&Z!^
&u- 	MAzS
?D#J#J#w'! eS&&3s8*;a*?*.YA$e- g	r   c                 d   |j                   }|| j                  z  }| j                  dkD  r || j                  dz
  dz         dd|z  z   }d}	| j                  |z
  dz   x}
}t        |      }	 t	        |      }d}|s|}	 t	        |      }| j                  rI| j                  |||      }t        |      dz   }|
|k  r|}
|	r|}	|
|k\  r|
|z  }
 ||	       d}	 ||       e ||	       |}	| j                  ||||r|nd||       |sy y # t
        $ r Y y w xY w# t
        $ r d}||z  }|
|z  }
Y w xY w)	Nr"   r   r   r   FTr$   , )
rM   rA   rB   iternextStopIterationrG   ra   rb   rL   )r*   r~   r   r   rm   rn   ro   rM   r   r   r   rr   itnext_entr   r   rq   ws                     r   r   zPrettyPrinter._format_items  sn   $(((!!A%4))A-45#,& KK&0144	%[	BxH C#8
 }}jjgu5HqL19%E 'A:QJE%L E#J%LELLff&* %)/   		 ! #Y&	"#s$   -D ?D 	DDD/.D/c                     | j                  ||j                         | j                  |      \  }}}|sd| _        |rd| _        |S )NFT)rV   r   r@   r`   r_   )r*   r   rn   ro   rj   rY   rZ   s          r   ra   zPrettyPrinter._repr  sD    $(KK04U%D!h	"DN"DOr   c                 *    | j                  ||||      S )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   rn   	maxlevelsro   s        r   rV   zPrettyPrinter.format  s    
 vw	5AAr   c                 x   t        |      s|j                  t        |             y | j                  |j                  ||      }|j
                  }|t        |j                        dz   z  }|j                  |j                  d|dd|z         | j                  ||||dz   ||       |j                  d       y )Nr"   ru   r   r   rv   )rb   rM   rj   ra   default_factoryrw   r3   r   )	r*   r   r   r   rm   rn   ro   rdfr   s	            r   _pprint_default_dictz"PrettyPrinter._pprint_default_dict  s    6{LLf&jj//%@#cll#a''S\\3fEF&&&)a-%PSr   c                    t        |      s|j                  t        |             y |j                  }|j                  |j                  dz          | j
                  dkD  r!|j                  | j
                  dz
  dz         |j                         }| j                  |||t        |j                        z   dz   |dz   ||       |j                  d       y )Nr   r"   r   r$   r   )rb   rM   rj   rw   r3   rA   most_commonr   )	r*   r   r   r   rm   rn   ro   r   r~   s	            r   _pprint_counterzPrettyPrinter._pprint_counter  s    6{LLf&S\\D()!!A%LL$0014;<""$v &S\\): :Q >	A '	0 	Tr   c           	         t        |j                        s|j                  t        |             y |j                  }|j                  |j
                  dz          |t        |j
                        dz   z  }t        |j                        D ]x  \  }}	|t        |j                        dz
  k(  r+| j                  |	|||dz   ||       |j                  d       L| j                  |	||d||       |j                  dd|z  z          z y )Nru   r"   rv   r   r   )rb   mapsrM   rj   rw   r3   r   rL   )
r*   r   r   r   rm   rn   ro   r   r   ms
             r   _pprint_chain_mapzPrettyPrinter._pprint_chain_map  s    6;;LLf&S\\C'(#cll#a''fkk* 	3DAqC$q((Q	AwNS!Q7EBUS6\12	3r   c                    t        |      s|j                  t        |             y |j                  }|j                  |j                  dz          |t        |j                        dz   z  }|j                  d       |j
                  +| j                  ||||dz   ||       |j                  d       y | j                  |||d||       | j                  |j
                  ||      }|j                  dd|z  d|d	       y )
Nru   r"   r   r$   z])z],
r   zmaxlen=rv   )rb   rM   rj   rw   r3   maxlenr   ra   )	r*   r   r   r   rm   rn   ro   r   rmls	            r   _pprint_dequezPrettyPrinter._pprint_deque  s    6{LLf&S\\C'(#cll#a''S== vvvy1}&/LLvvvq&/**V]]GU;CLLsV|SABr   c           	      J    | j                  |j                  |||||dz
         y Nr"   rL   datar   s          r   _pprint_user_dictzPrettyPrinter._pprint_user_dict       V[[&&)WeaiPr   c           	      J    | j                  |j                  |||||dz
         y r   r   r   s          r   _pprint_user_listzPrettyPrinter._pprint_user_list   r   r   c           	      J    | j                  |j                  |||||dz
         y r   r   r   s          r   _pprint_user_stringz!PrettyPrinter._pprint_user_string%  r   r   c                 j   t        |      }|t        v rt        |      ddfS t        |dd       }t	        |t
              r3|t
        j                  u r!| j                  r|dddfS t        |      ddfS t	        |t              r
|t        j                  u r|syt        |      }|r||k\  rdd||v fS ||v rt        |      ddfS d||<   d}d}	g }
|
j                  }|dz  }| j                  r t        |j                         t              }n|j                         }|D ]S  \  }}| j!                  ||||      \  }}}| j!                  ||||      \  }}} ||d	|       |xr |xr |}|s|sRd}	U ||= d
dj#                  |
      z  ||	fS t	        |t$              r|t$        j                  u s"t	        |t&              r|t&        j                  u rt	        |t$              r|syd}nt)        |      dk(  rd}n|syd}t        |      }|r||k\  r
|dz  d||v fS ||v rt        |      ddfS d||<   d}d}	g }
|
j                  }|dz  }|D ]+  }| j!                  ||||      \  }}} ||       |sd}|s*d}	- ||= |dj#                  |
      z  ||	fS t        |      }||xr |j+                  d       dfS )NTFre   _d)z{}TFz{...}r"   r   r   z{%s}r   )z[]TFz[%s]z(%s,))z()TFz(%s)r   <)r/   _builtin_scalarsrj   rz   
issubclassr>   re   rI   dictr0   r^   r   rH   r   r~   r;   rV   joinr   tuplerb   
startswith)r*   r   rn   r   ro   r   rrp   rY   rZ   
componentsr   r~   kvkrepr	kreadablekrecurvrepr	vreadablevrecurrV   oorepr	oreadableorecurrq   s                              r   r   zPrettyPrinter._safe_repr*  s   6l""<u,,CT*c3A$5'' tU22F|T500c4 Q$--%7(vJEUi/u'777!&)5$66GENHIJ&&FQJEv||~;? %1+/;;w	5,2(y&+/;;w	5,2(y&5%01#?	?iV $I% DIIj118YFFsD!a4==&8sE"qENN':#t$,V! ,vJEUi/~uew.>>>!&)5$66GENHIJ&&FQJE %+/;;w	5,2(y&u $H $I% DIIj118YFF6lS4!44u<<r   )r"   P   NN)7r3   r4   r5   r+   r   r   r   r   rL   rl   rc   r   r   re   r   _collectionsOrderedDictr   r   r   r   r   r   	frozensetr   r.   r   r   r   	bytearrayr   r   MappingProxyTyper   r   r   r{   r   ra   rV   r   defaultdictr   Counterr   ChainMapr   dequer   UserDictr   UserListr   
UserStringr   r8   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                 L    dt        |       j                  dt        |       dS )Nz<Recursion on z	 with id=>)r/   r3   r0   r   s    r   r^   r^   ~  s    F|$$bj2 3r   c              #     K   d}t        |       dz  dz  }t        dt        |       d      D ]D  }| ||dz    }||z   }||k(  r||z  }t        t        |            |kD  r|rt        |       |}C|}F |rt        |       y y w)Nr   r   r   )rb   rangerj   )r   r   rm   r   r   r   r   r   s           r   r   r     s     Gv;!aD1c&k1% 
 a1~dN	9YEtI%'7m#GG
  7m s   BB)Nr"   r
  N)r"   r
  N)"r6   collectionsr  dataclassesrf   r   sysrD   typesr   ior   rQ   __all__r   r   r
   r   r   r   r&   r;   r	   r  r.   r   r  floatcomplexrF   r/   r   r^   r   r8   r   r   <module>r#     s   4 # " 	   $"TePduP "' ;>>>; ;,,O= O=b c5)UG"DJ0 1 3
r   