U
    祡cH                  
   @   sF  d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZ edZeeee	e e	eef e	eeef f  ZeZG dd deZeee
e  e
e ddd	Zed
deee
e ge
e f ddd	Zdddee
e  ee ee
e ee
e ge
e f f ddd	Zeee
e  e
e dddZed
deee
e ge
e f dddZdd
dee
e  eee
e ee
e ge
e f f dddZedkrBeG dd dZe Zd dlmZ e Zed ee ejedd ejedd ed dej_ ee ejedd ejedd dS )     N)partial)
AnyCallableIterableListOptionalTupleTypeTypeVarUnionoverloadTc                   @   s   e Zd ZdZdS )	ReprErrorz2An error occurred when attempting to build a repr.N)__name__
__module____qualname____doc__ r   r   -/tmp/pip-unpacked-wheel-qkhzhrww/rich/repr.pyr      s   r   )clsreturnc                 C   s   d S Nr   r   r   r   r   auto   s    r   Fangular)r   r   c                 C   s   d S r   r   r   r   r   r   r       s    r   r   r   c                C   sD   dt t tt t t ddd}| dkr4t||dS || |dS dS )z5Class decorator to create __repr__ from __rich_repr__Nr   c                 S   sZ   t tddd}tt  tddd}t| ds:d|_|| _d|_|| _|d k	rV|| j_| S )	N)selfr   c                 S   s   g }|j }t| jdd}|  D ]}t|trt|dkrL|t|d  q|^}}}|dkrl|t| qt|r|d |krq || d| q |t| q |rd| jj dd	| d	S | jj d
d	| dS dS )z%Create repr string from __rich_repr__r   F   r   N=< >(z, ))
appendgetattr__rich_repr__
isinstancetuplelenrepr	__class__r   join)r   repr_strr%   r   argkeyvaluedefaultr   r   r   	auto_repr+   s"    

z+auto.<locals>.do_replace.<locals>.auto_reprc              
   s   s   zt | j}|j D ]h\}}|j|jkr:t| |V  q|j|j|j	fkr|j
|jkrht| |jV  q|jt| |j|j
fV  qW n2 tk
r } ztd| dW 5 d}~X Y nX dS )z5Auto generate __rich_rep__ from signature of __init__z'Failed to auto generate __rich_repr__; N)inspect	signature__init__
parametersitemskindPOSITIONAL_ONLYr&   POSITIONAL_OR_KEYWORDKEYWORD_ONLYr2   emptyname	Exceptionr   )r   r5   r>   paramerrorr   r   r   auto_rich_reprD   s$    z0auto.<locals>.do_replace.<locals>.auto_rich_reprr'   zBuild a rich reprzReturn repr(self))	r   strr	   Resulthasattrr   r'   __repr__r   )r   r   r3   rB   r   r   r   
do_replace*   s    
zauto.<locals>.do_replacer   )N)r	   r   r   boolr   )r   r   rG   r   r   r   r   %   s     8c                 C   s   d S r   r   r   r   r   r   	rich_reprh   s    rI   c                 C   s   d S r   r   r   r   r   r   rI   m   s    c                C   s   | d krt |dS t | S d S )Nr   )r   )r   r   r   r   r   rI   r   s    
__main__c                   @   s   e Zd ZedddZdS )Foo)r   c                 c   s$   dV  dddddgifV  dV  d S )NfoobarZshoppingeggsZhamZ	pineapple)Zbuyzhand sanitizerr   )r   r   r   r   r'      s    zFoo.__rich_repr__N)r   r   r   rD   r'   r   r   r   r   rK   }   s   rK   )ConsolezStandard repr<   )width   zAngular reprT)N)N)!r4   	functoolsr   typingr   r   r   r   r   r   r	   r
   r   r   r   rC   rD   ZRichReprResultr?   r   r   rH   rI   r   rK   rL   Zrich.consolerO   consoleZruleprintr'   r   r   r   r   r   <module>   sZ   0** 
  C* 
  	




