o
    Ëý°j  ã                   @   sØ   d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
mZmZmZ ddlmZ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mZ dedefdd„Zdedefdd„Z G dd„ deƒZ!dS )é    )Úabsolute_import)ÚcleandocÚgetdocÚgetfileÚisclassÚismoduleÚ	signature)ÚAnyÚIterableÚOptionalÚTupleé   )ÚRenderableTypeÚGroup)ÚReprHighlighter)ÚJupyterMixin)ÚPanel)ÚPretty)ÚTable)ÚTextÚTextTypeÚdocÚreturnc                 C   s   |   d¡\}}}|S )z)Get the first paragraph from a docstring.z

)Ú	partition)r   Ú	paragraphÚ_© r   úŒ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.pyÚ_first_paragraph   s   r   c                 C   s   t | ƒ ¡ } | S )zReformat docstring.)r   Ústrip)r   r   r   r   Ú_reformat_doc   s   r    c                   @   s¬   e Zd ZdZddddddddddœ	dedee ded	ed
ededededededdfdd„Zdede	fdd„Z
defdd„Zdededee	 fdd„Zdee fdd„ZdS )ÚInspecta‰  A renderable to inspect any Python Object.

    Args:
        obj (Any): An object to inspect.
        title (str, optional): Title to display over inspect result, or None use type. Defaults to None.
        help (bool, optional): Show full help text rather than just first paragraph. Defaults to False.
        methods (bool, optional): Enable inspection of callables. Defaults to False.
        docs (bool, optional): Also render doc strings. Defaults to True.
        private (bool, optional): Show private attributes (beginning with underscore). Defaults to False.
        dunder (bool, optional): Show attributes starting with double underscore. Defaults to False.
        sort (bool, optional): Sort attributes alphabetically. Defaults to True.
        all (bool, optional): Show all attributes. Defaults to False.
        value (bool, optional): Pretty print value of object. Defaults to True.
    NFT)	ÚtitleÚhelpÚmethodsÚdocsÚprivateÚdunderÚsortÚallÚvalueÚobjr"   r#   r$   r%   r&   r'   r(   r)   r*   r   c       	         C   sd   t ƒ | _|| _|p|  |¡| _|	rd } }}|| _|| _|p || _|p%|| _|| _	|| _
|
| _d S )NT)r   Úhighlighterr+   Ú_make_titler"   r#   r$   r%   r&   r'   r(   r*   )Úselfr+   r"   r#   r$   r%   r&   r'   r(   r)   r*   r   r   r   Ú__init__+   s   


zInspect.__init__c                 C   s:   t |ƒst|ƒst|ƒrt|ƒntt|ƒƒ}|  |¡}|S )zMake a default title.)r   Úcallabler   ÚstrÚtyper,   )r.   r+   Ú	title_strÚ
title_textr   r   r   r-   F   s   ÿÿ
ÿ
ý
zInspect._make_titlec                 C   s   t jt|  ¡ Ž | jddd�S )Nzscope.border©r   r   )r"   Úborder_styleÚpadding)r   Úfitr   Ú_renderr"   )r.   r   r   r   Ú__rich__P   s   
üzInspect.__rich__Únamec           	      C   s²   z
t t|ƒƒd }W n ty   d}Y n
 ty   Y dS w d}zt|ƒ}W n	 ty0   Y nw t|dd�}|rA| d|› �¡ |  |¡}|pMt|d|ƒ}t 	d|df|¡}|S )	zGet a signature for a callable.ú:z(...)Nzinspect.callable©Ústylezlink file://Ú__qualname__)zdef zinspect.def)
r1   r   Ú
ValueErrorÚ	TypeErrorr   r   Ústylizer,   ÚgetattrÚassemble)	r.   r;   r+   Ú
_signatureÚsource_filenameÚcallable_nameÚsignature_textÚqualnameÚqual_signaturer   r   r   Ú_get_signatureX   s,   ÿÿ

ÿzInspect._get_signaturec                 #   sÐ  � dt ttf dt ttf fdd„}dtdt ttf f‡ fdd„‰| j‰ tˆ ƒ}t|ƒ}| js6dd	„ |D ƒ}| js@d
d	„ |D ƒ}|t|ƒ }‡fdd	„|D ƒ}| j	rX|j	|d� t
jddd�}|jdd� |j}| j}tˆ ƒr|  dˆ ¡}	|	dur|	V  dV  | jr£tˆ ƒ}
|
dur£| js‘t|
ƒ}
tt|
ƒdd�}||ƒ}|V  dV  | jrÂtˆ ƒsÂtˆ ƒsÂtˆ ƒsÂttˆ dddd�dd�V  dV  |D ]Ž\}\}}t || d¡rÔdndfd¡}|durð| ¡ }| d ¡ |||t |ƒƒƒ qÄt|ƒ�rI| j!sùqÄ|  ||¡}|du �r||t||d!�ƒ qÄ| j�rCt|ƒ}|du�rCtt|ƒƒ}
| j�s)t|
ƒ}
| "d"|
v �r2d"nd#¡ ||
ƒ}| d$¡ | "|¡ |||ƒ qÄ||t||d!�ƒ qÄ|j#�r\|V  dS t $d%|› d&�¡V  dS )'zRender object.Úitemr   c                 S   s"   | \}\}}t |ƒ| d¡ ¡ fS )Nr   )r0   r   Úlower)rL   ÚkeyÚ_errorr*   r   r   r   Ú
sort_itemsv   s   z#Inspect._render.<locals>.sort_itemsÚ	attr_namec              
      s>   zdt ˆ | ƒfW S  ty } z
|dfW  Y d}~S d}~ww )zGet attribute or any exception.N)rC   Ú	Exception)rQ   Úerror)r+   r   r   Úsafe_getattrz   s   €ÿz%Inspect._render.<locals>.safe_getattrc                 S   ó   g | ]	}|  d ¡s|‘qS )Ú__©Ú
startswith©Ú.0rN   r   r   r   Ú
<listcomp>…   ó    z#Inspect._render.<locals>.<listcomp>c                 S   rU   )r   rW   rY   r   r   r   r[   ‡   r\   c                    s   g | ]}|ˆ |ƒf‘qS r   r   rY   )rT   r   r   r[   ‰   s    )rN   r5   F)r7   ÚexpandÚright)ÚjustifyÚ Nzinspect.helpr=   Té
   é<   )Úindent_guidesÚ
max_lengthÚ
max_stringzinspect.value.border)r6   rV   zinspect.attr.dunderzinspect.attr)z =zinspect.equalszinspect.error)r,   Ú
ú zinspect.docz[b cyan]za[/][i] attribute(s) not shown.[/i] Run [b][magenta]inspect[/]([not b]inspect[/])[/b] for options.)%r   r1   r	   Úboolr+   ÚdirÚlenr'   r&   r(   r   ÚgridÚ
add_columnÚadd_rowr,   r0   rK   r%   r   r#   r   r   r    r*   r   r   r   r   rD   rX   ÚcopyrB   Úreprr$   ÚappendÚ	row_countÚfrom_markup)r.   rP   ÚkeysÚtotal_itemsÚnot_shown_countÚitemsÚitems_tablerm   r,   r   Ú_docÚdoc_textrN   rS   r*   Úkey_textÚwarningÚ_signature_textr%   r   r   )r+   rT   r   r9   s   s’   €"þþû








ÿzInspect._render)Ú__name__Ú
__module__r?   Ú__doc__r	   r   r   rh   r/   r   r-   r   r:   r1   rK   r
   r   r9   r   r   r   r   r!      sL    ôþüûúùø	÷
öõô
ó
r!   N)"Ú
__future__r   Úinspectr   r   r   r   r   r   Útypingr	   r
   r   r   Úconsoler   r   r,   r   Újupyterr   Úpanelr   Úprettyr   Útabler   Útextr   r   r1   r   r    r!   r   r   r   r   Ú<module>   s     