o
    ZhL                  	   @   s  d dl Zd dlZd dlmZ d dlZd dlZ	d dl
mZ d dl
mZ d dl
mZ d dl
mZ d dl
mZ d dl
mZ d d	l
mZ d d
l
mZ d dl
mZ G dd dZdd ZG dd dZeeeeeeeedehZ dedefddZ!dedededee fddZ"dS )    N)StringIO)Any)Callable)Dict)IO)Iterator)List)Optional)Set)Tuplec                   @   s&   e Zd ZdZdgZdd Zdd ZdS )	_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                 C   s
   || _ d S N)r   )selfr    r   I/var/www/html/lang_env/lib/python3.10/site-packages/_pytest/_io/pprint.py__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____doc__	__slots__r   r   r   r   r   r   r       s
    	r   c                 C   s   t | d t | d fS )z&Helper function for comparing 2-tuplesr      )r   )tr   r   r   _safe_tuple9   s   r    c                   @   s  e Zd ZU 			dEdededee ddfdd	Zd
edefddZd
ede	e dedede
e deddfddZd
ede	e dedede
e deddfddZi Zeedef ed ee	e eee
e egdf f ed< d
ede	e dedede
e deddfddZeeej< d
ede	e dedede
e deddfddZeeejj< d
ede	e dedede
e deddfddZeeej< d
ede	e dedede
e deddfddZeeej< d
ede	e dedede
e deddfdd Zeeej< eeej< d
ede	e dedede
e deddfd!d"Zeeej< d
ede	e dedede
e deddfd#d$Zeee j< d
ede	e dedede
e deddfd%d&Z!e!ee"j< d
ede	e dedede
e deddfd'd(Z#e#ee$j%j< d
ede	e dedede
e deddfd)d*Z&e&ee$j'j< d+e(e)eef  de	e dedede
e deddfd,d-Z*d+e(e)eef  de	e dedede
e deddfd.d/Z+d+e(e de	e dedede
e deddfd0d1Z,d
ede
e dedefd2d3Z-d
ede	e dedede
e deddfd4d5Z.e.eej/j< d
ede	e dedede
e deddfd6d7Z0e0eej1j< d
ede	e dedede
e deddfd8d9Z2e2eej3j< d
ede	e dedede
e deddfd:d;Z4e4eej5j< d
ede	e dedede
e deddfd<d=Z6e6eej7j< d
ede	e dedede
e deddfd>d?Z8e8eej9j< d
ede	e dedede
e deddfd@dAZ:e:eej;j< d
ede
e dBee dedef
dCdDZ<dS )FPrettyPrinter   P   Nindentwidthdepthreturnc                 C   sJ   |dk rt d|dur|dkrt d|st d|| _|| _|| _dS )aT  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   r$   r%   r&   r   r   r   r   ?   s   
zPrettyPrinter.__init__objectc                 C   s$   t  }| ||ddt d | S )Nr   )	_StringIO_formatsetgetvalue)r   r,   sior   r   r   pformat\   s   zPrettyPrinter.pformatstream	allowancecontextlevelc           	   	   C   s   t |}||v r|t| d S | jt|jd }|d ur7|| || ||||||d  || d S t	
|rjt|tsj|jjrjt|jdrjd|jjjv rj|| | ||||||d  || d S || ||| d S )Nr   __wrapped____create_fn__)r   write
_recursion	_dispatchgetr   __repr__addremove_dataclassesis_dataclass
isinstance__dataclass_params__reprhasattrr7   r   _pprint_dataclass_repr)	r   r,   r3   r$   r4   r5   r6   objidpr   r   r   r.   a   s0   	


zPrettyPrinter._formatc           	         sP    j j} fddt D }||d  | |||||| |d d S )Nc                    s$   g | ]}|j r|jt |jfqS r   )rD   namegetattr).0fr,   r   r   
<listcomp>   s    z3PrettyPrinter._pprint_dataclass.<locals>.<listcomp>())	__class__r   r@   fieldsr9   _format_namespace_items	r   r,   r3   r$   r4   r5   r6   cls_nameitemsr   rN   r   rF      s   	
zPrettyPrinter._pprint_dataclass.r;   c           	      C   s>   |j }|d t| td}| |||||| |d d S )N{key})r9   sortedrW   r    _format_dict_items)	r   r,   r3   r$   r4   r5   r6   r9   rW   r   r   r   _pprint_dict   s
   	zPrettyPrinter._pprint_dictc                 C   sR   t |s|t| d S |j}||jd  | |||||| |d d S NrP   rQ   )lenr9   rD   rR   r   r^   )r   r,   r3   r$   r4   r5   r6   clsr   r   r   _pprint_ordered_dict   s   	z"PrettyPrinter._pprint_ordered_dictc                 C   ,   | d | |||||| | d d S )N[]r9   _format_itemsr   r,   r3   r$   r4   r5   r6   r   r   r   _pprint_list      
	zPrettyPrinter._pprint_listc                 C   rc   r_   rf   rh   r   r   r   _pprint_tuple   rj   zPrettyPrinter._pprint_tuplec           	      C   sz   t |s|t| d S |j}|tu r|d d}n
||jd  d}t|td}| |||||| || d S )NrX   r[   z({z})rY   )	r`   r9   rD   rR   r/   r   r\   r   rg   )	r   r,   r3   r$   r4   r5   r6   typZendcharr   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 ]x\}}t|}|t|	d krA|
|8 }
t||
krM|| q-td|}|sWJ |d r]J |	  |}d}t|D ]2\}}|| }|t|d kr|t|	d kr||8 }tt||kr|r|t| |}qi|}qi|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* rP   r   
 rQ   )
r9   r`   rD   
splitlinesr+   	enumerateappendrefindallpop)r   r,   r3   r$   r4   r5   r6   r9   chunkslinesZ
max_width1	max_widthilinereppartsZ
max_width2currentjpart	candidater   r   r   _pprint_str   s\   	
 
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 )Nr"   r   rP   ro   rp   rq   rQ   )r9   r`   rD   _wrap_bytes_reprr+   )r   r,   r3   r$   r4   r5   r6   r9   Zparensdelimr}   r   r   r   _pprint_bytes4  s&   	zPrettyPrinter._pprint_bytesc              	   C   s>   |j }|d | t|||d |d ||d  |d d S )Nz
bytearray(
   r   rQ   )r9   r   bytes)r   r,   r3   r$   r4   r5   r6   r9   r   r   r   _pprint_bytearrayQ  s   	zPrettyPrinter._pprint_bytearrayc                 C   s0   | d | | ||||| | d d S )Nzmappingproxy(rQ   )r9   r.   copyrh   r   r   r   _pprint_mappingproxyc  s   
	z"PrettyPrinter._pprint_mappingproxyc           	      C   sV   t |tju r
d}n|jj}|j }||d  | |||||| |d d S )N	namespacerP   rQ   )	r   _typesSimpleNamespacerR   r   __dict__rW   r9   rT   rU   r   r   r   _pprint_simplenamespacer  s   	
z%PrettyPrinter._pprint_simplenamespacerW   c              	   C   s   |sd S |j }|| j }dd|  }	|D ]#\}
}||	 || |
|| |d | |||d|| |d q|dd|   d S )Nrp   rq   : r   ,)r9   r*   rG   r.   r   rW   r3   r$   r4   r5   r6   r9   item_indentdelimnlrZ   Zentr   r   r   r]     s   	

z PrettyPrinter._format_dict_itemsc              	   C   s   |sd S |j }|| j }dd|  }	|D ]/\}
}||	 ||
 |d t||v r/|d n| |||t|
 d d|| |d q|dd|   d S )Nrp   rq   =...r   r   )r9   r*   r   r.   r`   r   r   r   r   rT     s*   	


	z%PrettyPrinter._format_namespace_itemsc              	   C   sf   |sd S |j }|| j }dd|  }	|D ]}
||	 | |
||d|| |d q|dd|   d S )Nrp   rq   r   r   )r9   r*   r.   )r   rW   r3   r$   r4   r5   r6   r9   r   r   itemr   r   r   rg     s   	

zPrettyPrinter._format_itemsc                 C   s   |  || | j|S r   )
_safe_reprr   r)   )r   r,   r5   r6   r   r   r   rG     s   zPrettyPrinter._reprc                 C   sL   |  |j||}||jj d| d | |||||| |d d S )NrP   , rQ   )rG   default_factoryr9   rR   r   r^   )r   r,   r3   r$   r4   r5   r6   Zrdfr   r   r   _pprint_default_dict  s   	z"PrettyPrinter._pprint_default_dictc                 C   sT   | |jjd  |r#| d | }| |||||| | d | d d S )NrP   rX   r[   rQ   )r9   rR   r   most_commonr]   )r   r,   r3   r$   r4   r5   r6   rW   r   r   r   _pprint_counter  s   	

zPrettyPrinter._pprint_counterc                 C   sn   t |jrt |jdkrt |jd s|t| d S ||jjd  | |j||||| |d d S )Nr   r   rP   rQ   )r`   mapsr9   rD   rR   r   rg   rh   r   r   r   _pprint_chain_map  s   &	zPrettyPrinter._pprint_chain_mapc                 C   s\   | |jjd  |jd ur| d|j  | d | ||||d || | d d S )NrP   zmaxlen=%d, rd   r   z]))r9   rR   r   maxlenrg   rh   r   r   r   _pprint_deque  s   	

zPrettyPrinter._pprint_dequec              	   C      |  |j|||||d  d S Nr   r.   datarh   r   r   r   _pprint_user_dict*     	zPrettyPrinter._pprint_user_dictc              	   C   r   r   r   rh   r   r   r   _pprint_user_list7  r   zPrettyPrinter._pprint_user_listc              	   C   r   r   r   rh   r   r   r   _pprint_user_stringD  r   z!PrettyPrinter._pprint_user_string	maxlevelsc                 C   s  t |}|tv rt|S t|dd }t|trt|tju rt|s dS t|}|r,||kr,dS ||v r4t|S |	| g }|j
}	|d7 }t| tdD ]\}
}| |
|||}| ||||}|	| d|  qJ|| dd| S t|tr~|tju st|tr|tju rt|tr|sd	S d
}nt|dkrd}n|sdS d}t|}|r||kr|d S ||v rt|S |	| g }|j
}	|d7 }|D ]}| ||||}|	| q|| |d| S t|S )Nr=   z{}z{...}r   rY   r   z{%s}r   z[]z[%s]z(%s,)z()z(%s)r   )r   _builtin_scalarsrD   rK   
issubclassdictr=   r   r:   r>   rt   r\   rW   r    r   r?   joinlisttupler`   )r   r,   r5   r   r6   rl   rrH   
componentsrt   kvZkreprZvreprformatoZoreprr   r   r   r   Q  sd   






zPrettyPrinter._safe_repr)r"   r#   N)=r   r   r   intr	   r   r   r   r2   r   r
   r.   rF   r;   r   r   __annotations__r^   r   r=   rb   _collectionsOrderedDictri   r   rk   r   rm   r/   	frozensetr   r   r   r   	bytearrayr   r   MappingProxyTyper   r   r   r   r]   rT   rg   rG   r   defaultdictr   Counterr   ChainMapr   dequer   UserDictr   UserListr   
UserStringr   r   r   r   r   r!   >   s  
 

$

 











9







%







r!   r,   r'   c                 C   s   dt | j dt|  dS )Nz<Recursion on z	 with id=>)r   r   r   rN   r   r   r   r:     s   r:   r%   r4   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   )r`   rangerD   )r,   r%   r4   r   lastr{   r   r   r   r   r   r     s    
r   )#collectionsr   dataclassesr@   ior   r-   ru   typesr   typingr   r   r   r   r   r   r	   r
   r   r   r    r!   r   r   r   r   floatcomplexboolr   r   r   r:   r   r   r   r   r   <module>   s4       R"