o
     JAf|_                  	   @   s   	 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	d
Zd$ddddddZddddZdd Zdd Zdd ZG dd dZdd ZG dd dZeeeeeeeedhZdd Zd%ddZ d d! Z!e"d"kr{e   dS dS )&    N)StringIO)pprintpformat
isreadableisrecursivesafereprPrettyPrinterpp   P   FTcompact
sort_dictsunderscore_numbersc          	   	   C   s&   	 t |||||||d}||  d S )N)streamindentwidthdepthr   r   r   )r   r   )	objectr   r   r   r   r   r   r   Zprinter r   /usr/lib/python3.10/pprint.pyr   0   s   r   c                C   s   	 t ||||||d| S )N)r   r   r   r   r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   r   9   s   r   )r   c                O   s    	 t | g|R d|i| d S )Nr   )r   )r   r   argskwargsr   r   r   r	   @   s   r	   c                 C   s   	 t  | i d dd S Nr   r   
_safe_reprr   r   r   r   r   D      r   c                 C      	 t  | i d dd S Nr   r
   r   r   r   r   r   r   H   r   r   c                 C   r   Nr      r   r   r   r   r   r   L   r   r   c                   @   s$   e Zd Z	 dgZdd Zdd ZdS )	_safe_keyobjc                 C   s
   || _ d S N)r#   )selfr#   r   r   r   __init__\   s   
z_safe_key.__init__c                 C   sR   z| j |j k W S  ty(   tt| j t| j ftt|j t|j fk  Y S w r$   )r#   	TypeErrorstrtypeid)r%   otherr   r   r   __lt___   s   z_safe_key.__lt__N)__name__
__module____qualname__	__slots__r&   r,   r   r   r   r   r"   P   s
    	r"   c                 C   s   	 t | d t | d fS r   )r"   )tr   r   r   _safe_tuplef   s   r2   c                   @   s  e Zd ZdCddddddZd	d
 Zdd Zdd Zdd Zdd Zdd Z	i Z
dd Zee
ej< dd Zee
ejj< dd Zee
ej< dd Zee
ej< dd Zee
ej< ee
ej< dd  Zee
ej< d!d" Zee
ej< d#d$ Zee
ej< d%d& Zee
ej j< d'd( Z!e!e
ej"j< d)d* Z#d+d, Z$d-d. Z%d/d0 Z&d1d2 Z'd3d4 Z(e(e
ej)j< d5d6 Z*e*e
ej+j< d7d8 Z,e,e
ej-j< d9d: Z.e.e
ej/j< d;d< Z0e0e
ej1j< d=d> Z2e2e
ej3j< d?d@ Z4e4e
ej5j< dAdB Z6dS )Dr   r
   r   NFTr   c                C   s   	 t |}t |}|dk rtd|d ur|dkrtd|s#td|| _|| _|| _|d ur4|| _ntj| _t|| _	|| _
|| _d S )Nr   zindent must be >= 0z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   r   r   r   r&   k   s$   

zPrettyPrinter.__init__c                 C   s&   |  || jddi d | jd d S )Nr   
)_formatr8   writer%   r   r   r   r   r      s   zPrettyPrinter.pprintc                 C   s"   t  }| ||ddi d | S r   )	_StringIOr@   getvalue)r%   r   sior   r   r   r      s   zPrettyPrinter.pformatc                 C   s   |  |i ddd S r    formatrB   r   r   r   r      s   zPrettyPrinter.isrecursivec                 C   s    |  |i dd\}}}|o| S r   rF   )r%   r   sreadable	recursiver   r   r   r      s   
zPrettyPrinter.isreadablec              	   C   s
  t |}||v r|t| d| _d| _d S | |||}| j| | }	t||	kr~| j	t
|jd }
|
d urNd||< |
| ||||||d  ||= d S t|r~t|t
s~|jjr~t|jdr~d|jjjv r~d||< | ||||||d  ||= d S || d S )NTFr
   __wrapped__Z__create_fn__)r*   rA   
_recursion
_recursive	_readable_reprr7   len	_dispatchgetr)   __repr___dataclassesZis_dataclass
isinstanceZ__dataclass_params__reprhasattrrK   r/   _pprint_dataclass)r%   r   r   r   	allowancecontextlevelobjidrep	max_widthpr   r   r   r@      s8   

zPrettyPrinter._formatc           	         s`    j j}|t|d 7 } fddt D }||d  | |||||| |d d S )Nr
   c                    s$   g | ]}|j r|jt |jfqS r   )rV   namegetattr).0fr   r   r   
<listcomp>   s   $ z3PrettyPrinter._pprint_dataclass.<locals>.<listcomp>())	__class__r-   rP   rT   fieldsrA   _format_namespace_items	r%   r   r   r   rY   rZ   r[   cls_nameitemsr   r   r   rX      s   zPrettyPrinter._pprint_dataclassc           
      C   sz   |j }|d | jdkr|| jd d  t|}|r7| jr't| td}	n| }	| |	|||d || |d d S )N{r
    key})rA   r6   rP   r=   sortedrl   r2   _format_dict_items)
r%   r   r   r   rY   rZ   r[   rA   lengthrl   r   r   r   _pprint_dict   s   
zPrettyPrinter._pprint_dictc                 C   sl   t |s|t| d S |j}||jd  | t| ||t |j d |d || |d d S )Nre   r
   rf   )rP   rA   rV   rg   r-   r@   listrl   )r%   r   r   r   rY   rZ   r[   clsr   r   r   _pprint_ordered_dict   s   z"PrettyPrinter._pprint_ordered_dictc                 C   s0   | d | ||||d || | d d S )N[r
   ])rA   _format_itemsr%   r   r   r   rY   rZ   r[   r   r   r   _pprint_list   s
   
zPrettyPrinter._pprint_listc                 C   sH   | d t|dkrdnd}| ||||t| || | | d S )Nre   r
   z,)rf   )rA   rP   r{   )r%   r   r   r   rY   rZ   r[   endcharr   r   r   _pprint_tuple   s   
zPrettyPrinter._pprint_tuplec           	      C   s   t |s|t| d S |j}|tu r|d d}n||jd  d}|t |jd 7 }t|td}| ||||t | || || d S )Nrm   rq   ({})r
   ro   )	rP   rA   rV   rg   setr-   rr   r"   r{   )	r%   r   r   r   rY   rZ   r[   typr~   r   r   r   _pprint_set   s   
zPrettyPrinter._pprint_setc                 C   s  |j }t|s|t| d S g }|d}	|dkr"|d7 }|d7 }| j|  }
}t|	D ]n\}}t|}|t|	d krA|
|8 }
t||
krM|| q-td|}|	  |}d}t|D ]2\}}|| }|t|d kr{|t|	d kr{||8 }tt||kr|r|t| |}q_|}q_|r|t| q-t|dkr|| d S |dkr|d t|D ]\}}|dkr|dd|   || q|dkr|d	 d S d S )
NTr
   z\S*\s* re   r   r?   rn   rf   )
rA   rP   rV   
splitlinesr7   	enumerateappendrefindallpop)r%   r   r   r   rY   rZ   r[   rA   chunkslinesZ
max_width1r^   iliner]   partsZ
max_width2currentjpart	candidater   r   r   _pprint_str  sX   
 
zPrettyPrinter._pprint_strc                 C   s   |j }t|dkr|t| d S |dk}|r#|d7 }|d7 }|d d}	t|| j| |D ]}
||	 ||
 |	s@dd|  }	q.|rI|d d S d S )N   r
   re   r   r?   rn   rf   )rA   rP   rV   _wrap_bytes_reprr7   )r%   r   r   r   rY   rZ   r[   rA   Zparensdelimr]   r   r   r   _pprint_bytesC  s&   zPrettyPrinter._pprint_bytesc              	   C   s>   |j }|d | t|||d |d ||d  |d d S )Nz
bytearray(
   r
   rf   )rA   r   bytes)r%   r   r   r   rY   rZ   r[   rA   r   r   r   _pprint_bytearrayX  s   zPrettyPrinter._pprint_bytearrayc                 C   s8   | d | | ||d |d || | d d S )Nzmappingproxy(   r
   rf   )rA   r@   copyr|   r   r   r   _pprint_mappingproxya  s
   
z"PrettyPrinter._pprint_mappingproxyc           	      C   sf   t |tju r
d}n|jj}|t|d 7 }|j }||d  | 	|||||| |d d S )N	namespacer
   re   rf   )
r)   _typesSimpleNamespacerg   r-   rP   __dict__rl   rA   ri   rj   r   r   r   _pprint_simplenamespacei  s   
z%PrettyPrinter._pprint_simplenamespacec              	   C   s   |j }|| j7 }dd|  }t|d }	t|D ]3\}
\}}|
|	k}| |||}|| |d | |||t| d |r@|nd|| |sK|| qd S )N,
rn   r
   z: r!   )rA   r6   rP   r   rO   r@   )r%   rl   r   r   rY   rZ   r[   rA   delimnl
last_indexr   rp   entlastr]   r   r   r   rs   x  s"   

z PrettyPrinter._format_dict_itemsc              	   C   s   |j }dd|  }t|d }	t|D ]7\}
\}}|
|	k}|| |d t||v r0|d n| |||t| d |r?|nd|| |sJ|| qd S )Nr   rn   r
   =...)rA   rP   r   r*   r@   )r%   rl   r   r   rY   rZ   r[   rA   r   r   r   rp   r   r   r   r   r   ri     s"   

z%PrettyPrinter._format_namespace_itemsc                 C   sF  |j }|| j7 }| jdkr|| jd d  dd|  }d}	| j| d  }
}t|}zt|}W n
 ty;   Y d S w d}|s|}zt|}W n ty[   d}||8 }|
|8 }
Y nw | jr| |||}t|d }|
|k rv|}
|	rv|}	|
|kr|
|8 }
||	 d}	|| q>||	 |}	| 	||||r|nd|| |r@d S d S )	Nr
   rn   r   r   FTr!   , )
rA   r6   r7   iternextStopIterationr<   rO   rP   r@   )r%   rl   r   r   rY   rZ   r[   rA   r   r   r   r^   itZnext_entr   r   r]   wr   r   r   r{     sV   



zPrettyPrinter._format_itemsc                 C   s4   |  || | j|\}}}|sd| _|rd| _|S )NFT)rG   r   r5   rN   rM   )r%   r   rZ   r[   rV   rI   rJ   r   r   r   rO     s   
zPrettyPrinter._reprc                 C   s   	 |  ||||S r$   )r   )r%   r   rZ   	maxlevelsr[   r   r   r   rG     s   zPrettyPrinter.formatc           	      C   s   t |s|t| d S | |j||}|j}|t |jd 7 }|d|j|d| f  | ||||d || |d d S )Nr
   z	%s(%s,
%srn   rf   )rP   rA   rV   rO   default_factoryrg   r-   ru   )	r%   r   r   r   rY   rZ   r[   Zrdfrw   r   r   r   _pprint_default_dict  s   z"PrettyPrinter._pprint_default_dictc           	      C   s   t |s|t| d S |j}||jd  | jdkr'|| jd d  | }| |||t |j d |d || |d d S )Nr   r
   rn   r!   r   )rP   rA   rV   rg   r-   r6   most_commonrs   )	r%   r   r   r   rY   rZ   r[   rw   rl   r   r   r   _pprint_counter  s   
zPrettyPrinter._pprint_counterc           
   	   C   s   t |js|t| d S |j}||jd  |t |jd 7 }t|jD ]2\}}	|t |jd krF| |	|||d || |d q'| |	||d|| |dd|   q'd S )Nre   r
   rf   r   rn   )rP   mapsrA   rV   rg   r-   r   r@   )
r%   r   r   r   rY   rZ   r[   rw   r   mr   r   r   _pprint_chain_map  s   
zPrettyPrinter._pprint_chain_mapc           	      C   s   t |s|t| d S |j}||jd  |t |jd 7 }|d |jd u r>| ||||d || |d d S | |||d|| | |j||}|dd| |f  d S )Nre   r
   ry   r!   z])z],
%smaxlen=%s)rn   )rP   rA   rV   rg   r-   maxlenr{   rO   )	r%   r   r   r   rY   rZ   r[   rw   Zrmlr   r   r   _pprint_deque  s"   

zPrettyPrinter._pprint_dequec              	   C      |  |j|||||d  d S Nr
   r@   datar|   r   r   r   _pprint_user_dict     zPrettyPrinter._pprint_user_dictc              	   C   r   r   r   r|   r   r   r   _pprint_user_list  r   zPrettyPrinter._pprint_user_listc              	   C   r   r   r   r|   r   r   r   _pprint_user_string!  r   z!PrettyPrinter._pprint_user_stringc                 C   s  t |}|tv rt|ddfS t|dd }t|tr0|tju r0| jr)|dddfS t|ddfS t|tr|tju r|s>dS t	|}|rO||krOdd||v fS ||v rZt
|ddfS d||< d}d}	g }
|
j}|d7 }| jrwt| td}n| }|D ].\}}| ||||\}}}| ||||\}}}|d	||f  |o|o|}|s|rd}	q}||= d
d|
 ||	fS t|tr|tju st|trF|tju rFt|tr|sdS d}nt|dkrd}n|sdS d}t	|}|r||kr|d d||v fS ||v r	t
|ddfS d||< d}d}	g }
|
j}|d7 }|D ]}| ||||\}}}|| |s2d}|r7d}	q||= |d|
 ||	fS t|}||oS|d dfS )NTFrS   Z_d)z{}TFz{...}r
   ro   z%s: %sz{%s}r   )z[]TFz[%s]z(%s,))z()TFz(%s)r   <)r)   _builtin_scalarsrV   ra   
issubclassr3   rS   r>   dictr*   rL   r   r=   rr   rl   r2   rG   joinrv   tuplerP   
startswith)r%   r   rZ   r   r[   r   rr\   rI   rJ   
componentsr   rl   kvZkreprZ	kreadableZkrecurZvreprZ	vreadableZvrecurrG   oZoreprZ	oreadableZorecurr]   r   r   r   r   &  s   




zPrettyPrinter._safe_repr)r
   r   NN)7r-   r.   r/   r&   r   r   r   r   r@   rX   rQ   ru   r   rS   rx   _collectionsOrderedDictr}   rv   r   r   r   r   	frozensetr   r(   r   r   r   	bytearrayr   r   MappingProxyTyper   r   rs   ri   r{   rO   rG   r   defaultdictr   Counterr   ChainMapr   dequer   UserDictr   UserListr   
UserStringr   r   r   r   r   r   j   sh    ,





1

)	r   c                 C   s   dt | jt| f S )Nz<Recursion on %s with id=%s>)r)   r-   r*   r   r   r   r   rL   z  s   rL   c                 C   s   dd l }| d u rddddgdddfgd	 } t }| }|| i d dd
 | }||  | }td||  td||  d S )Nr   string)r
   r!      r         )      i Tz_safe_repr:zpformat:)timer   perf_counterr   r   print)r   r   r_   t1t2Zt3r   r   r   
_perfcheck  s   
r   c                 c   s    d}t | d d }tdt | dD ]*}| ||d  }|| }||kr)||8 }t t||kr;|r8t|V  |}q|}q|rGt|V  d S d S )N    r   r   )rP   rangerV   )r   r   rY   r   r   r   r   r   r   r   r   r     s    
r   __main__)Nr
   r   N)r
   r   Nr$   )#collectionsr   ZdataclassesrT   r   sysr9   typesr   ior   rC   __all__r   r   r	   r   r   r   r"   r2   r   r   r(   r   r   floatcomplexr;   r)   r   rL   r   r   r-   r   r   r   r   <module>   sD   
	    

