U
    ç¥¡cW  ã                   @   s\   d dl mZmZmZmZ d dlmZ er4d dlmZ dZ	ee
dœdd„Zedd	œd
d„ZdS )é    )ÚAnyÚcastÚSetÚTYPE_CHECKING)Úisclass©ÚRenderableTypeZ-aihwerij235234ljsdnp34ksodfipwoe234234jlskjdf)Úcheck_objectÚreturnc                 C   s   t | tƒpt| dƒpt| dƒS )z+Check if an object may be rendered by Rich.Ú__rich__Z__rich_console__)Ú
isinstanceÚstrÚhasattr)r	   © r   ú1/tmp/pip-unpacked-wheel-qkhzhrww/rich/protocol.pyÚis_renderable
   s
    
ÿýr   r   )Ú
renderabler
   c                 C   sn   ddl m} tƒ }t| dƒrdt| ƒsdt| tƒr6t| ƒS t| dƒ}|ƒ } t| ƒ}||krXqd| 	|¡ qt
|| ƒS )zÕCast an object to a renderable by calling __rich__ if present.

    Args:
        renderable (object): A potentially renderable object

    Returns:
        object: The result of recursively calling __rich__.
    r   r   r   )Úrich.consoler   Úsetr   r   Ú
_GIBBERISHÚreprÚgetattrÚtypeÚaddr   )r   r   Zrich_visited_setZcast_methodZrenderable_typer   r   r   Ú	rich_cast   s    	

r   N)Útypingr   r   r   r   Úinspectr   r   r   r   Úboolr   Úobjectr   r   r   r   r   Ú<module>   s   	