Ë
    âß²jÅ  ã                  ór   — U d Z ddlmZ ddlZdd„Zdaded<   dd„Zdaded<   dd	„Z	dd
„Z
dd„Zdd„Zdd„Zy)zFCached runtime-environment predicates for WSL, containers, and Termux.é    )ÚannotationsNc                 óv   — t        j                  dd«      } t        t        j                  d«      xs d| v «      S )z/Return whether this process runs inside Termux.ÚPREFIXÚ ÚTERMUX_VERSIONzcom.termux/files/usr)ÚosÚgetenvÚbool)Úprefixs    úA/home/ubuntu/.hermes/hermes-agent/hermes_platform/host/runtime.pyÚ	is_termuxr      s2   € ä�Y‰Y�x Ó$€FÜ”—	‘	Ð*Ó+ÒOÐ/EÈÐ/OÓPÐPó    zbool | NoneÚ_wsl_detectedc                 óä   — t         €>	 t        ddd¬«      5 } d| j                  «       j                  «       v a ddd«       t         S t         S # 1 sw Y   t         S xY w# t        $ r
 da Y t         S w xY w)z,Return whether this process runs inside WSL.Nz/proc/versionÚrúutf-8©ÚencodingÚ	microsoftF)r   ÚopenÚreadÚlowerÚ	Exception)Úfs    r   Úis_wslr      sw   € ô Ðð	"Ü�o s°WÔ=ð @ÀØ +¨q¯v©v«x¯~©~Ó/?Ð ?�÷@ô ÐŒ=Ð÷	@ô Ðûô ò 	"Ø!‰MÜÐð	"ús-   ˆA –!A·A ÁAÁA ÁA ÁA/Á.A/Ú_container_detectedc                 ó.   — t         €
t        «       a t         S )z4Return whether this process runs inside a container.)r   Ú_detect_container© r   r   Úis_containerr        s   € ô Ð"Ü/Ó1ÐÜÐr   c                óŠ   — 	 t        | dd¬«      5 }|j                  «       cd d d «       S # 1 sw Y   y xY w# t        $ r Y yw xY w)Nr   r   r   r   )r   r   ÚOSError)Úpathr   s     r   Ú
_read_procr$   (   sD   € ðÜ�$˜ gÔ.ð 	°!Ø—6‘6“8÷	÷ 	ò 	ûäò Ùðús#   ‚6 �* 	6 ª3¯6 ³6 ¶	AÁAc                óB   ‡— t        | «      Št        ˆfd„|D «       «      S )Nc              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­w©Nr   )Ú.0ÚmarkerÚcontents     €r   ú	<genexpr>z(_proc_file_has_marker.<locals>.<genexpr>2   s   øè ø€ Ò7 Vˆv˜Ô Ñ7ùs   ƒ)r$   Úany)r#   Úmarkersr*   s     @r   Ú_proc_file_has_markerr.   0   s   ø€ Ü˜Ó€GÜÓ7¨wÔ7Ó7Ð7r   c                 óî   — t         j                  j                  d«      sJt         j                  j                  d«      s+t         j                  j	                  d«      st        dd«      ryt        dd«      S )	Nz/.dockerenvz/run/.containerenvÚKUBERNETES_SERVICE_HOSTz/proc/1/cgroup)ÚdockerÚpodmanz/lxc/ÚkubepodsÚ
containerdÚcrioTz/proc/self/mountinfo)r3   r4   r5   )r   r#   ÚexistsÚenvironÚgetr.   Ú_root_mount_has_markerr   r   r   r   r   5   sT   € ä
�‰�‰�}Ô%Ü�7‰7�>‰>Ð.Ô/Ü�:‰:�>‰>Ð3Ô4Ü Ð!1Ð3rÔsàô "Ð"8Ð:\Ó]Ð]r   c                óÒ   ‡— t        | «      j                  «       D �cg c],  }t        |j                  «       x}«      dk\  sŒ"|d   dk(  sŒ+|‘Œ. }}t	        ˆfd„|D «       «      S c c}w )z2Return whether the root mount contains any marker.é   é   ú/c              3  ó4   •K  — | ]  }‰D ]  }||v –— Œ
 Œ y ­wr'   r   )r(   Úliner)   r-   s      €r   r+   z)_root_mount_has_marker.<locals>.<genexpr>E   s!   øè ø€ ÒK $À7ÒK¸ˆv˜Œ~ÐKˆ~ÑKùs   ƒ)r$   Ú
splitlinesÚlenÚsplitr,   )r#   r-   r?   r   Ú
root_liness    `   r   r9   r9   B   sb   ø€ ä#-¨dÓ#3×#>Ñ#>Ó#@Öp˜4ÄCÈTÏZÉZË\ÐHYÈÓDZÐ^_ÓD_ÐdeÐfgÑdhÐloÓdo’$Ðp€JÐpÜÓK¨*ÔKÓKÐKùò qs   �#A$ÁA$Á
A$)Úreturnr
   )r#   ÚstrrD   rE   )r#   rE   r-   ztuple[str, ...]rD   r
   )Ú__doc__Ú
__future__r   r   r   r   Ú__annotations__r   r   r    r$   r.   r   r9   r   r   r   ú<module>rI      sM   ðÚ Lå "ã 	óQð "€ˆ{Ó !ó	ð $(Ð �[Ó 'óóó8ó

^ôLr   