§
    òyIfp  ã                  óB  — U d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ  e¦   «         Z e¦   «         e e
ej        ¦  «        <   dd„Zdd„Zd„ ZdZded<   d„ Zd„ Z  G d„ d¦  «        Z!d„ Z"g d¢Z#dS )zê

We acquire the python information by running an interrogation script via subprocess trigger. This operation is not
cheap, especially not on Windows. To not have to pay this hefty cost every time we apply multiple levels of
caching.
é    )ÚannotationsN)ÚOrderedDict)ÚPath)Úquote)Úascii_lowercaseÚascii_uppercaseÚdigits)ÚPopen)ÚAppDataDisabled)Ú
PythonInfo)Ú
subprocessTFc                ó®   — |€t           j        n|}t          | ||||¬¦  «        }t          |t          ¦  «        r|r|‚t          j        d|¦  «         d }|S )N)Úignore_cachez%s)ÚosÚenvironÚ_get_from_cacheÚ
isinstanceÚ	ExceptionÚloggingÚinfo)ÚclsÚapp_dataÚexeÚenvÚraise_on_errorr   Úresults          úW/var/www/piapp/venv/lib/python3.11/site-packages/virtualenv/discovery/cached_py_info.pyÚfrom_exer      sd   € Ø˜�"Œ*ˆ*¨€CÝ˜S (¨C°À<ÐPÑPÔP€FÝ�&�)Ñ$Ô$ð Øð 	ØˆLÝŒ�T˜6Ñ"Ô"Ð"ØˆØ€Mó    c                óÌ   — t          |¦  «        }|s|t          v rt          |         }nt          | ||||¦  «        }|x}t          |<   t          |t          ¦  «        r||_        |S ©N)r   Ú_CACHEÚ_get_via_file_cacher   r   Ú
executable)r   r   r   r   r   Úexe_pathr   Úpy_infos           r   r   r   '   sp   € õ �C‰yŒy€HØð ,˜H­Ð.Ð.Ý˜Ô!ˆˆå% c¨8°X¸sÀCÑHÔHˆØ$+Ð+ˆ•˜Ñ!å�&�*Ñ%Ô%ð  ØˆÔØ€Mr   c                óB  — t          |¦  «        }	 |                     ¦   «         j        }n# t          $ r d}Y nw xY w|€t	          ¦   «         }d |                     |¦  «        }}|                     ¦   «         5  |                     ¦   «         r²|                     ¦   «         }	|	d         |	d         |	d         }}}
|
|k    rl||k    rf|  	                    | 
                    ¦   «         ¦  «        }|j        }|�5t          j                             |¦  «        s|                     ¦   «          d }n|                     ¦   «          |€Gt          | |||¦  «        \  }}|€.|||                     ¦   «         dœ}	|                     |	¦  «         n|}d d d ¦  «         n# 1 swxY w Y   |S )NéÿÿÿÿÚpathÚst_mtimeÚcontent)r*   r)   r+   )ÚstrÚstatr*   ÚOSErrorr   r&   ÚlockedÚexistsÚreadÚ
_from_dictÚcopyÚsystem_executabler   r)   ÚremoveÚ_run_subprocessÚ_to_dictÚwrite)r   r   r)   r   r   Ú	path_textÚpath_modifiedr&   Úpy_info_storeÚdataÚof_pathÚof_st_mtimeÚ
of_contentÚsys_exeÚfailures                  r   r#   r#   6   só  € Ý�D‘	”	€IðØŸ	š	™œÔ,ˆˆøÝð ð ð ØˆˆˆðøøøàÐÝ"Ñ$Ô$ˆØ! 8×#3Ò#3°DÑ#9Ô#9ˆ]€GØ	×	Ò	Ñ	Ô	ð "ð "Ø×ÒÑ!Ô!ð 
	'Ø ×%Ò%Ñ'Ô'ˆDØ/3°F¬|¸TÀ*Ô=MÈtÐT]Ì *�[ˆGØ˜)Ò#Ð#¨°}Ò(DÐ(DØŸ.š.¨¯ªÑ):Ô):Ñ;Ô;�Ø!Ô3�ØÐ&­r¬w¯~ª~¸gÑ/FÔ/FÐ&Ø!×(Ò(Ñ*Ô*Ð*Ø"�Gøà×$Ò$Ñ&Ô&Ð&Øˆ?Ý.¨s°C¸À3ÑGÔGÑˆG�WØˆØ$1¸9ÐQX×QaÒQaÑQcÔQcÐdÐd�Ø×#Ò# DÑ)Ô)Ð)Ð)à!�ð%"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð& €Ns   ‘+ «:¹:Á8DFÆFÆFé    ÚintÚCOOKIE_LENGTHc                 ód   — d                      d„ t          t          ¦  «        D ¦   «         ¦  «        S )NÚ c              3  óh   K  — | ]-}t          j        t          › t          › t          › �¦  «        V — Œ.d S r!   )ÚrandomÚchoicer   r   r	   )Ú.0Ú_s     r   ú	<genexpr>zgen_cookie.<locals>.<genexpr>Y   sP   è è € ð ð àõ 	Œ�ÐC­/ÐC½6ÐCÐCÑDÔDðð ð ð ð ð r   )ÚjoinÚrangerD   © r   r   Ú
gen_cookierP   X   s<   € Ø�7Š7ð ð å•}Ñ%Ô%ðñ ô ñ ô ð r   c           
     óì  — t          t          j                             t          ¦  «        ¦  «        j        dz  }t          ¦   «         }t          ¦   «         }|                     |¦  «        5 }|t          |¦  «        ||g}| 	                    ¦   «         }| 
                    dd ¦  «         t          j        dt          |¦  «        ¦  «         	 t          |dt          j        t          j        t          j        |d¬¦  «        }|                     ¦   «         \  }	}
|j        }n'# t&          $ r}d|j        |j        }}
}	Y d }~nd }~ww xY wd d d ¦  «         n# 1 swxY w Y   d\  }}|d	k    rß|	                     |d d d
…         ¦  «        }|d
k    r=|	d |…         }|rt.          j                             |¦  «         |	|t4          z   d …         }	|	                     |d d d
…         ¦  «        }|d
k    r=|	|t4          z   d …         }|rt.          j                             |¦  «         |	d |…         }	|                      |	¦  «        }||_        n+|› d|› |	rd|	›�nd› |
rd|
›�nd› �}t;          d|› �¦  «        }||fS )Nz
py_info.pyÚ__PYVENV_LAUNCHER__z get interpreter info via cmd: %sTzutf-8)Úuniversal_newlinesÚstdinÚstderrÚstdoutr   ÚencodingrF   )NNr   r(   z with code z out: z err: zfailed to query )r   r   r)   ÚabspathÚ__file__ÚparentrP   Úensure_extractedr,   r3   Úpopr   ÚdebugÚLogCmdr
   r   ÚPIPEÚcommunicateÚ
returncoder.   ÚstrerrorÚerrnoÚfindÚsysrV   r8   rD   Ú
_from_jsonr$   ÚRuntimeError)r   r   r   r   Úpy_info_scriptÚstart_cookieÚ
end_cookieÚcmdÚprocessÚoutÚerrÚcodeÚos_errorr   rA   Ú
out_startsÚ
pre_cookieÚout_endsÚpost_cookieÚmsgs                       r   r6   r6   _   sö  € Ý�"œ'Ÿ/š/­(Ñ3Ô3Ñ4Ô4Ô;¸lÑJ€Nõ ‘<”<€LÝ‘”€JØ	×	"Ò	" >Ñ	2Ô	2ð C°nØ•C˜Ñ'Ô'¨°zÐBˆà�hŠh‰jŒjˆØ�ŠÐ% tÑ,Ô,Ð,ÝŒÐ8½&À¹+¼+ÑFÔFÐFð	CÝØØ#'Ý ”oÝ!”Ý!”ØØ ðñ ô ˆGð ×*Ò*Ñ,Ô,‰HˆC�ØÔ%ˆDˆDøÝð 	Cð 	Cð 	CØ Ô!2°H´N�d�ˆCˆCˆCˆCˆCˆCøøøøð	Cøøøð%Cð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð( !�O€FˆGØˆq‚y€yØ—X’X˜l¨4¨4¨R¨4Ô0Ñ1Ô1ˆ
à˜Š?ˆ?Ø˜[˜j˜[Ô)ˆJàð -Ý”
× Ò  Ñ,Ô,Ð,à�j¥=Ñ0Ð2Ð2Ô3ˆCà—8’8˜J t t¨ tÔ,Ñ-Ô-ˆà�bŠ=ˆ=Ø˜h­Ñ6Ð8Ð8Ô9ˆKàð .Ý”
× Ò  Ñ-Ô-Ð-à�i�x�i”.ˆCà—’ Ñ$Ô$ˆØˆÔÐàÐiÐi Ði¸3Ð'FÐ'7°Ð'7Ð'7Ð'7ÀBÐiÐ\_ÐHgÐHXÐQTÐHXÐHXÐHXÐegÐiÐiˆÝÐ7°#Ð7Ð7Ñ8Ô8ˆØ�Fˆ?Ðs>   Á+A EÃADÄEÄ
EÄ)D>Ä9EÄ>EÅEÅEÅEc                  ó    — e Zd Zddd„Zd	d„ZdS )
r^   NÚreturnÚNonec                ó"   — || _         || _        d S r!   )rk   r   )Úselfrk   r   s      r   Ú__init__zLogCmd.__init__ž   s   € ØˆŒØˆŒˆˆr   r,   c                ót   — d                      d„ | j        D ¦   «         ¦  «        }| j        �|› d| j        ›�}|S )Nú c              3  óN   K  — | ] }t          t          |¦  «        ¦  «        V — Œ!d S r!   )r   r,   )rJ   Úcs     r   rL   z"LogCmd.__repr__.<locals>.<genexpr>£   s.   è è € Ð<Ð<¨a�E¥# a¡&¤&™MœMÐ<Ð<Ð<Ð<Ð<Ð<r   z env of )rM   rk   r   )rz   Úcmd_reprs     r   Ú__repr__zLogCmd.__repr__¢   sF   € Ø—8’8Ð<Ð<°4´8Ð<Ñ<Ô<Ñ<Ô<ˆØŒ8ÐØ"Ð8Ð8¨D¬HÐ8Ð8ˆHØˆr   r!   )rw   rx   )rw   r,   )Ú__name__Ú
__module__Ú__qualname__r{   r�   rO   r   r   r^   r^   �   sA   € € € € € ðð ð ð ð ðð ð ð ð ð r   r^   c                ó`   — |                       ¦   «          t                               ¦   «          d S r!   )Úpy_info_clearr"   Úclear)r   s    r   r‡   r‡   ©   s%   € Ø×ÒÑÔÐÝ
‡L‚L�N„N€N€N€Nr   )r   r‡   r^   )NTF)T)$Ú__doc__Ú
__future__r   r   r   rH   re   Úcollectionsr   Úpathlibr   Úshlexr   Ústringr   r   r	   r   r
   Úvirtualenv.app_datar   Úvirtualenv.discovery.py_infor   Úvirtualenv.util.subprocessr"   r$   r   r   r#   rD   Ú__annotations__rP   r6   r^   r‡   Ú	___all___rO   r   r   ú<module>r“      sÄ  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à	ˆ‰Œ€Ø)˜z™|œ|€€t€tˆCŒNÑÔÑ ðð ð ð ðð ð ð ðð ð ð> €Ð Ð Ð Ñ ðð ð ð;ð ;ð ;ð|	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðð ð ð
ð ð €	€	€	r   