a
    zeW                  
   @   s   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dZdd Zdd Zdd ZG dd dZdd ZG dd dZdd ZeeeeeeeeedhZdd Zd'd d!Z d"d# Z!e"d$kre   dS )(    N)StringIO)pprintpformat
isreadableisrecursivesafereprPrettyPrinterpp   P   FTcompact
sort_dictsc                C   s"   t ||||||d}||  d S )N)streamindentwidthdepthr   r   )r   r   )objectr   r   r   r   r   r   Zprinter r   /usr/lib/python3.9/pprint.pyr   /   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   7   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d S )Nr   T
_safe_reprr   r   r   r   r   A   s    r   c                 C   s   t | i d ddd S )Nr   Tr
   r   r   r   r   r   r   E   s    r   c                 C   s   t | i d ddd S )Nr   T   r   r   r   r   r   r   I   s    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__Y   s    z_safe_key.__init__c                 C   sV   z| j |j k W S  tyP   tt| j t| j ftt|j t|j fk  Y S 0 d S 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   M   s   
r   c                 C   s   t | d t | d fS )Nr   r
   )r   )tr   r   r   _safe_tuplec   s    r,   c                   @   s  e Zd Zd=ddd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-d. Z%d/d0 Z&e&e	ej'j< d1d2 Z(e(e	ej)j< d3d4 Z*e*e	ej+j< d5d6 Z,e,e	ej-j< d7d8 Z.e.e	ej/j< d9d: Z0e0e	ej1j< d;d< Z2e2e	ej3j< dS )>r   r
   r   NFTr   c                C   s   t |}t |}|dk r td|d ur8|dkr8td|sDtd|| _|| _|| _|d urf|| _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)r   r   r   r   r   r   r   r   r   r   r    h   s     
zPrettyPrinter.__init__c                 C   s&   |  || jddi d | jd d S )Nr   
)_formatr2   writer   r   r   r   r   r      s    zPrettyPrinter.pprintc                 C   s"   t  }| ||ddi d | S Nr   )	_StringIOr9   getvalue)r   r   sior   r   r   r      s    zPrettyPrinter.pformatc                 C   s   |  |i ddd S )Nr   r   formatr;   r   r   r   r      s    zPrettyPrinter.isrecursivec                 C   s    |  |i dd\}}}|o| S r<   r@   )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rd||< |
| ||||||d  ||= d S t|trd||< | ||||||d  ||= d S || d S )NTFr
   )r$   r:   
_recursion
_recursive	_readable_reprr1   len	_dispatchgetr#   __repr__
isinstancedict_pprint_dict)r   r   r   r   	allowancecontextlevelobjidrep	max_widthpr   r   r   r9      s.    
zPrettyPrinter._formatc           
      C   sz   |j }|d | jdkr*|| jd d  t|}|rn| jrNt| td}	n| }	| |	|||d || |d d S )N{r
    key})r:   r0   rI   r7   sorteditemsr,   _format_dict_items)
r   r   r   r   rP   rQ   rR   r:   lengthr]   r   r   r   rO      s    
zPrettyPrinter._pprint_dictc                 C   sl   t |s|t| d S |j}||jd  | t| ||t |j d |d || |d d S )N(r
   ))rI   r:   repr	__class__r'   r9   listr]   )r   r   r   r   rP   rQ   rR   clsr   r   r   _pprint_ordered_dict   s    z"PrettyPrinter._pprint_ordered_dictc                 C   s0   | d | ||||d || | d d S )N[r
   ])r:   _format_itemsr   r   r   r   rP   rQ   rR   r   r   r   _pprint_list   s
    
zPrettyPrinter._pprint_listc                 C   sH   | d t|dkrdnd}| ||||t| || | | d S )Nr`   r
   z,)ra   )r:   rI   ri   )r   r   r   r   rP   rQ   rR   endcharr   r   r   _pprint_tuple   s    
zPrettyPrinter._pprint_tuplec           	      C   s   t |s|t| d S |j}|tu r8|d d}n&||jd  d}|t |jd 7 }t|td}| ||||t | || || d S )NrW   r[   ({})r
   rY   )	rI   r:   rb   rc   setr'   r\   r   ri   )	r   r   r   r   rP   rQ   rR   typrl   r   r   r   _pprint_set   s    
zPrettyPrinter._pprint_setc                 C   s  |j }t|s|t| d S g }|d}	|dkrD|d7 }|d7 }| j|  }
}t|	D ]\}}t|}|t|	d kr|
|8 }
t||
kr|| qZtd|}|	  |}d}t|D ]h\}}|| }|t|d kr|t|	d kr||8 }tt||kr"|r|t| |}q|}q|rZ|t| qZt|dkrV|| d S |dkrh|d t|D ],\}}|dkr|dd|   || qp|dkr|d	 d S )
NTr
   z\S*\s* r`   r   r8   rX   ra   )
r:   rI   rb   
splitlinesr1   	enumerateappendrefindallpop)r   r   r   r   rP   rQ   rR   r:   chunkslinesZ
max_width1rU   ilinerT   partsZ
max_width2currentjpart	candidater   r   r   _pprint_str   sT    
 


zPrettyPrinter._pprint_strc                 C   s   |j }t|dkr"|t| d S |dk}|rF|d7 }|d7 }|d d}	t|| j| |D ]$}
||	 ||
 |	s\dd|  }	q\|r|d d S )N   r
   r`   rs   r8   rX   ra   )r:   rI   rb   _wrap_bytes_reprr1   )r   r   r   r   rP   rQ   rR   r:   ZparensdelimrT   r   r   r   _pprint_bytes3  s"    zPrettyPrinter._pprint_bytesc              	   C   s>   |j }|d | t|||d |d ||d  |d d S )Nz
bytearray(
   r
   ra   )r:   r   bytes)r   r   r   r   rP   rQ   rR   r:   r   r   r   _pprint_bytearrayH  s    zPrettyPrinter._pprint_bytearrayc                 C   s8   | d | | ||d |d || | d d S )Nzmappingproxy(   r
   ra   )r:   r9   copyrj   r   r   r   _pprint_mappingproxyQ  s
    
z"PrettyPrinter._pprint_mappingproxyc              	   C   s   t |tju rd}n|jj}|t|d 7 }dd|  }|j }	t|	d }
||d  t	|	D ]^\}\}}|| |d ||
k}| 
|||t| d |r|nd|| |sd|| qd|d d S )N	namespacer
   ,
rX   r`   =ra   )r#   _typesSimpleNamespacerc   r'   rI   __dict__r]   r:   ru   r9   )r   r   r   r   rP   rQ   rR   cls_namedelimnlr]   
last_indexr|   rZ   entlastr   r   r   _pprint_simplenamespaceY  s&    



z%PrettyPrinter._pprint_simplenamespacec              	   C   s   |j }|| j7 }dd|  }t|d }	t|D ]f\}
\}}|
|	k}| |||}|| |d | |||t| d |r|nd|| |s0|| q0d S )Nr   rX   r
   z: r   )r:   r0   rI   ru   rH   r9   )r   r]   r   r   rP   rQ   rR   r:   r   r   r|   rZ   r   r   rT   r   r   r   r^   t  s    

z PrettyPrinter._format_dict_itemsc                 C   sH  |j }|| j7 }| jdkr,|| jd d  dd|  }d}	| j| d  }
}t|}zt|}W n tyv   Y d S 0 d}|sD|}zt|}W n& ty   d}||8 }|
|8 }
Y n0 | jr| |||}t|d }|
|k r|}
|	r|}	|
|kr|
|8 }
||	 d}	|| q|||	 |}	| 	||||r8|nd|| q|d S )	Nr
   rX   r   rs   FTr   , )
r:   r0   r1   iternextStopIterationr6   rH   rI   r9   )r   r]   r   r   rP   rQ   rR   r:   r   r   r   rU   itZnext_entr   r   rT   wr   r   r   ri     sP    



zPrettyPrinter._format_itemsc                 C   s4   |  || | j|\}}}|s&d| _|r0d| _|S )NFT)rA   r   r/   rG   rF   )r   r   rQ   rR   rb   rC   rD   r   r   r   rH     s    
zPrettyPrinter._reprc                 C   s   t ||||| jS r   )r   r7   )r   r   rQ   	maxlevelsrR   r   r   r   rA     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,
%srX   ra   )rI   r:   rb   rH   default_factoryrc   r'   rO   )	r   r   r   r   rP   rQ   rR   Zrdfre   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rN|| jd d  | }| |||t |j d |d || |d d S )Nrn   r
   rX   r   ro   )rI   r:   rb   rc   r'   r0   most_commonr^   )	r   r   r   r   rP   rQ   rR   re   r]   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 ]d\}}	|t |jd kr| |	|||d || |d qN| |	||d|| |dd|   qNd S )Nr`   r
   ra   r   rX   )rI   mapsr:   rb   rc   r'   ru   r9   )
r   r   r   r   rP   rQ   rR   re   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 rz| ||||d || |d n:| |||d|| | |j||}|dd| |f  d S )Nr`   r
   rg   r   z])z],
%smaxlen=%s)rX   )rI   r:   rb   rc   r'   maxlenri   rH   )	r   r   r   r   rP   rQ   rR   re   Zrmlr   r   r   _pprint_deque  s"    

zPrettyPrinter._pprint_dequec              	   C   s   |  |j|||||d  d S Nr
   r9   datarj   r   r   r   _pprint_user_dict   s    zPrettyPrinter._pprint_user_dictc              	   C   s   |  |j|||||d  d S r   r   rj   r   r   r   _pprint_user_list  s    zPrettyPrinter._pprint_user_listc              	   C   s   |  |j|||||d  d S r   r   rj   r   r   r   _pprint_user_string
  s    z!PrettyPrinter._pprint_user_string)r
   r   NN)4r'   r(   r)   r    r   r   r   r   r9   rJ   rO   rN   rL   rf   _collectionsOrderedDictrk   rd   rm   tuplerr   rp   	frozensetr   r"   r   r   r   	bytearrayr   r   MappingProxyTyper   r   r^   ri   rH   rA   r   defaultdictr   Counterr   ChainMapr   dequer   UserDictr   UserListr   
UserStringr   r   r   r   r   g   s`   +




1


)	r   c                 C   s  t | }|tv rt| ddfS t|dd }t|trD|tju rD| sJdS t| }|rl||krldd||v fS ||v rt| ddfS d||< d}d}	g }
|
j	}|d7 }|rt
|  td}n|  }|D ]b\}}t|||||\}}}t|||||\}}}|d||f  |o|o|}|s$|rd}	q||= d	d
|
 ||	fS t|tr\|tju stt|trn|tju rnt|tr| sdS d}n"t| dkrd}n| sdS d}t| }|r||kr|d d||v fS ||v rt| ddfS d||< d}d}	g }
|
j	}|d7 }| D ]8}t|||||\}}}|| |sFd}|rd}	q||= |d
|
 ||	fS t| }||o|d dfS )NTFrL   )z{}TFz{...}r
   rY   z%s: %sz{%s}r   )z[]TFz[%s]z(%s,))z()TFz(%s)z...<)r#   _builtin_scalarsrb   getattr
issubclassrN   rL   r$   rE   rv   r\   r]   r,   r   joinrd   r   rI   
startswith)r   rQ   r   rR   r   rq   rrS   rC   rD   
componentsrv   r]   kvZkreprZ	kreadableZkrecurZvreprZ	vreadableZvrecurrA   oZoreprZ	oreadableZorecurrT   r   r   r   r     s    

r   c                 C   s   dt | jt| f S )Nz<Recursion on %s with id=%s>)r#   r'   r$   r   r   r   r   rE   Z  s    rE   c                 C   s   dd l }| d u r,ddddgdddfgd	 } t }| }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   rV   t1t2Zt3r   r   r   
_perfcheck_  s    
r   c                 c   s   d}t | d d }tdt | dD ]T}| ||d  }|| }||krP||8 }t t||krt|rnt|V  |}q$|}q$|rt|V  d S )N    r   r   )rI   rangerb   )r   r   rP   r   r   r|   r   r   r   r   r   r   l  s    
r   __main__)Nr
   r   N)r
   r   N)N)#collectionsr   rw   sysr3   typesr   ior   r=   __all__r   r   r	   r   r   r   r   r,   r   r   r   r"   r   r   r-   floatcomplexr5   r#   r   rE   r   r   r'   r   r   r   r   <module>%   s<      -F
