ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙfrom typing import Any, cast, Set, TYPE_CHECKING from inspect import isclass if TYPE_CHECKING: from pip._vendor.rich.console import RenderableType _GIBBERISH = """aihwerij235234ljsdnp34ksodfipwoe234234jlskjdf""" def is_renderable(check_object: Any) -> bool: """Check if an object may be rendered by Rich.""" return ( isinstance(check_object, str) or hasattr(check_object, "__rich__") or hasattr(check_object, "__rich_console__") ) def rich_cast(renderable: object) -> "RenderableType": """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__. """ from pip._vendor.rich.console import RenderableType rich_visited_set: Set[type] = set() # Prevent potential infinite loop while hasattr(renderable, "__rich__") and not isclass(renderable): # Detect object which claim to have all the attributes if hasattr(renderable, _GIBBERISH): return repr(renderable) cast_method = getattr(renderable, "__rich__") renderable = cast_method() renderable_type = type(renderable) if renderable_type in rich_visited_set: break rich_visited_set.add(renderable_type) return cast(RenderableType, renderable)