§
    øyIf+  ã                  óD  — d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
mZmZmZmZ ddlmZ ddlmZmZ ddlmZmZmZ e
rdd	lmZ dd
lmZ  G d„ de¦  «        Z G d„ de¦  «        Z ej        dej        ¦  «        Z  G d„ dee¦  «        Z! G d„ de¦  «        Z"dS )zUDeclare the abstract base class for tox environments that handle the Python language.é    )ÚannotationsN)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚAnyÚListÚ
NamedTupleÚcast)Ú
PythonSpec)ÚToxEnvÚToxEnvCreateArgs)ÚFailÚRecreateÚSkip)ÚPath)ÚConfigc                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )	ÚVersionInfoÚintÚmajorÚminorÚmicroÚstrÚreleaselevelÚserialN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úJ/var/www/piapp/venv/lib/python3.11/site-packages/tox/tox_env/python/api.pyr   r      s@   € € € € € € Ø€J€J�JØ€J€J�JØ€J€J�JØÐÐÑØ€K€K�K€K€Kr!   r   c                  ó”   — e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   edd„¦   «         Zedd„¦   «         Zedd„¦   «         ZdS )Ú
PythonInfor   Úimplementationr   Úversion_infoÚversionÚboolÚis_64Úplatformúdict[str, Any]ÚextraÚreturnc                ó6   — | j         j        › | j         j        › �S ©N©r&   r   r   ©Úselfs    r"   Úversion_no_dotzPythonInfo.version_no_dot&   s   € àÔ#Ô)ÐD¨4Ô+<Ô+BÐDÐDÐDr!   c                ó4   — | j                              ¦   «         S r/   )r%   Úlowerr1   s    r"   Ú
impl_lowerzPythonInfo.impl_lower*   s   € àÔ"×(Ò(Ñ*Ô*Ð*r!   c                ó8   — | j         j        › d| j         j        › �S )Nú.r0   r1   s    r"   Úversion_dotzPythonInfo.version_dot.   s"   € àÔ#Ô)ÐEÐE¨DÔ,=Ô,CÐEÐEÐEr!   N©r-   r   )r   r   r   r   Úpropertyr3   r6   r9   r    r!   r"   r$   r$      s½   € € € € € € ØÐÐÑØÐÐÑØ€L€L�LØ€K€K�KØ€M€M�MØÐÐÑàðEð Eð Eñ „XðEð ð+ð +ð +ñ „Xð+ð ðFð Fð Fñ „XðFð Fð Fr!   r$   aJ  
    ^(?!py$)                                               # don't match 'py' as it doesn't provide any info
    (?P<impl>py|pypy|cpython|jython|rustpython|ironpython) # the interpreter; most users will simply use 'py'
    (?P<version>[2-9]\.?[0-9]?[0-9]?)?$                    # the version; one of: MAJORMINOR, MAJOR.MINOR
    c                  ó|  ‡ — e Zd Zd,ˆ fd„Zd-ˆ fd„Zd.ˆ fd„Zd/d
„Zd/d„Zd0ˆ fd„Zd1d„Z	e
d2d„¦   «         Ze
d3d„¦   «         Zed4d„¦   «         Zed4d„¦   «         Zed4d„¦   «         Zd-ˆ fd„Zd-d„Zed5d „¦   «         Zed6d"„¦   «         Zd-ˆ fd#„Zd7d$„Zed8d&„¦   «         Zd7d'„Zed9d*„¦   «         Zed-d+„¦   «         Zˆ xZS ):ÚPythonÚcreate_argsr   r-   ÚNonec                óf   •— d | _         d| _        t          ¦   «                              |¦  «         d S ©NF)Ú_base_pythonÚ_base_python_searchedÚsuperÚ__init__)r2   r>   Ú	__class__s     €r"   rE   zPython.__init__>   s1   ø€ Ø/3ˆÔØ+0ˆÔ"Ý‰Œ×Ò˜Ñ%Ô%Ð%Ð%Ð%r!   c                ól  •‡ — t          ¦   «                              ¦   «          dˆ fd„}‰ j                             ddgt          t
                   ‰ j        d|¬¦  «         ‰ j                             d	d
gt          dd¬¦  «         ‰ j         	                    ddgd‰ j
        ¬¦  «         ‰ j         	                    ddgd‰ j        ¬¦  «         ‰ j         	                    ddgd‰ j        ¬¦  «         ‰ j         	                    dd‰ j        ¬¦  «         ‰ j         	                    dd‰ j        ¬¦  «         d S )NÚvalueú	list[str]r-   c                óR   •— ‰                      ‰j        | ‰j        d         ¦  «        S )NÚignore_base_python_conflict)Ú_validate_base_pythonÚnameÚcore)rH   r2   s    €r"   Úvalidate_base_pythonz4Python.register_config.<locals>.validate_base_pythonF   s%   ø€ Ø×-Ò-¨d¬i¸ÀÄ	ÐJgÔ@hÑiÔiÐir!   Úbase_pythonÚ
basepythonz7environment identifier for python, first one found wins)ÚkeysÚof_typeÚdefaultÚdescÚpost_processrK   Úignore_basepython_conflictFzEdo not raise error if the environment name conflicts with base python)rR   rS   rT   rU   Úenv_site_packages_dirÚenvsitepackagesdirz$the python environments site package)rR   rU   rH   Úenv_bin_dirÚ	envbindirz%the python environments binary folderÚ
env_pythonÚ	envpythonz1python executable from within the tox environment)rU   rH   Ú
py_dot_verz<python major>.<python minor>)rH   Úpy_implzpython implementation)rH   rI   r-   rI   )rD   Úregister_configÚconfÚ
add_configr   r   Údefault_base_pythonrN   r(   Úadd_constantÚenv_site_package_dirrZ   r\   r^   r_   )r2   rO   rF   s   ` €r"   r`   zPython.register_configC   s�  øø€ Ý‰Œ×ÒÑ!Ô!Ð!ð	jð 	jð 	jð 	jð 	jð 	jð 	Œ	×ÒØ Ð.Ý�”IØÔ,ØJØ-ð 	ñ 	
ô 	
ð 	
ð 	Œ	×ÒØ/Ð1MÐNÝØØXð	 	ñ 	
ô 	
ð 	
ð 	Œ	×ÒØ)Ð+?Ð@Ø7ØÔ+ð 	ñ 	
ô 	
ð 	
ð
 	Œ	×ÒØ Ð-Ø8ØÔ"ð 	ñ 	
ô 	
ð 	
ð
 	Œ	×ÒØ˜;Ð'ØDØ”/ð 	ñ 	
ô 	
ð 	
ð
 	Œ	×Ò˜|Ð-LÐTXÔTcÐÑdÔdÐdØŒ	×Ò˜yÐ*AÈÌÐÑVÔVÐVÐVÐVr!   údict[str, str]c                óœ   •— t          ¦   «                              ¦   «         }t          | j        dd ¦  «        }|�t	          |¦  «        |d<   |S )NÚ	hash_seedÚPYTHONHASHSEED)rD   Ú_default_set_envÚgetattrÚoptionsr   )r2   Úenvrh   rF   s      €r"   rj   zPython._default_set_envh   sG   ø€ Ý‰gŒg×&Ò&Ñ(Ô(ˆÝ '¨¬°kÀ4Ñ HÔ Hˆ	ØÐ Ý$'¨	¡N¤NˆCÐ Ñ!Øˆ
r!   r   c                ó   — | j         j        S r/   )rP   r9   r1   s    r"   r^   zPython.py_dot_vero   s   € ØÔÔ+Ð+r!   c                ó   — | j         j        S r/   )rP   r6   r1   s    r"   r_   zPython.py_implr   s   € ØÔÔ*Ð*r!   rI   c                óô   •— t          ¦   «                              ¦   «         }t          j        dk    r|                     g d¢¦  «         g d¢}|                     |¦  «         |                     dg¦  «         |S )NÚwin32)	ÚAPPDATAÚPROGRAMDATAzPROGRAMFILES(x86)ÚPROGRAMFILESÚSYSTEMDRIVEÚ
SYSTEMROOTÚCOMSPECÚPROCESSOR_ARCHITECTUREÚNUMBER_OF_PROCESSORS)Ú
PKG_CONFIGÚPKG_CONFIG_PATHÚPKG_CONFIG_SYSROOT_DIRÚREQUESTS_CA_BUNDLE)rD   Ú_default_pass_envÚsysr*   Úextend)r2   rm   Úbinary_extension_buildrF   s      €r"   r~   zPython._default_pass_envu   s‡   ø€ Ý‰gŒg×'Ò'Ñ)Ô)ˆÝŒ<˜7Ò"Ð"Ø�JŠJð
ð 
ð 
ñô ð ð "]Ð!\Ð!\ÐØ�
Š
Ð)Ñ*Ô*Ð*Ø�
Š
Ð(Ð)Ñ*Ô*Ð*Øˆ
r!   ra   r   Úenv_nameú
str | Nonec                óV   — |€d n|                       |¦  «        }|€t          j        n|gS r/   )Úextract_base_pythonr   Ú
executable)r2   ra   r‚   rP   s       r"   rc   zPython.default_base_pythonŠ   s2   € Ø&Ð.�d�d°D×4LÒ4LÈXÑ4VÔ4VˆØ"-Ð"5•”�¸;ÐGÐGr!   c                óR  — g }|                      d¦  «        D ]3}t                               |¦  «        }|r|                     |¦  «         Œ4|rYt	          |¦  «        dk    r*dd                     |¦  «        › d|› �}t          |¦  «        ‚t          t          |¦  «        ¦  «        S d S )Nú-é   zconflicting factors ú, z in )	ÚsplitÚPY_FACTORS_REÚmatchÚappendÚlenÚjoinÚ
ValueErrorÚnextÚiter)Úclsr‚   Ú
candidatesÚfactorr�   Úmsgs         r"   r…   zPython.extract_base_pythonŽ   s³   € à "ˆ
Ø—n’n SÑ)Ô)ð 	*ð 	*ˆFÝ!×'Ò'¨Ñ/Ô/ˆEØð *Ø×!Ò! &Ñ)Ô)Ð)øØð 	*Ý�:‰Œ Ò"Ð"ØR¨T¯YªY°zÑ-BÔ-BÐRÐRÈÐRÐR�Ý  ‘o”oÐ%Ý�˜ZÑ(Ô(Ñ)Ô)Ð)Øˆtr!   Úbase_pythonsrK   r(   c                ó  ‡‡— |                       |¦  «        }|�gt          j        |¦  «        Š|D ]P}t          j        |¦  «        Št          ˆˆfd„dD ¦   «         ¦  «        rd|› d|› �}|r|gc S t	          |¦  «        ‚ŒQ|S )Nc              3  ó|   •K  — | ]6}t          ‰|¦  «        ®t          ‰|¦  «        t          ‰|¦  «        k    V — Œ7d S r/   )rk   )Ú.0ÚkeyÚ	spec_baseÚ	spec_names     €€r"   ú	<genexpr>z/Python._validate_base_python.<locals>.<genexpr>¨   sX   øè è € ð ð àÝ˜y¨#Ñ.Ô.Ð:õ ˜I sÑ+Ô+­w°yÀ#Ñ/FÔ/FÒFà:Ð:Ð:Ð:ðð r!   )r%   r   r   r   Úarchitecturez	env name z conflicting with base python )r…   r   Úfrom_string_specÚanyr   )	r”   r‚   r˜   rK   Úenv_base_pythonrP   r—   r�   rž   s	          @@r"   rL   zPython._validate_base_pythonœ   sÒ   øø€ ð ×1Ò1°(Ñ;Ô;ˆØÐ&Ý"Ô3°OÑDÔDˆIØ+ð $ð $�Ý&Ô7¸ÑDÔD�	Ýð ð ð ð ð à\ðñ ô ñ ô ð 	$ð
 \ hÐ[Ð[ÈkÐ[Ð[�CØ2ð 1à /Ð0Ð0Ð0Ð0Ý˜s™)œ)�Oð	$ð Ðr!   r   c                ó   — t           ‚)zÏ
        If we have the python we just need to look at the last path under prefix.
        E.g., Debian derivatives change the site-packages to dist-packages, so we need to fix it for site-packages.
        ©ÚNotImplementedErrorr1   s    r"   re   zPython.env_site_package_dir´   s
   € õ "Ð!r!   c                ó   — t           ‚)z1The python executable within the tox environment.r¥   r1   s    r"   r\   zPython.env_python¼   ó
   € õ "Ð!r!   c                ó   — t           ‚)z-The binary folder within the tox environment.r¥   r1   s    r"   rZ   zPython.env_bin_dirÁ   r¨   r!   c                ó¢   •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «         | _        dS )z#Setup a virtual python environment.N)rD   Ú
_setup_envÚensure_python_envÚprepend_env_var_pathÚ_paths)r2   rF   s    €r"   r«   zPython._setup_envÆ   sB   ø€ å‰Œ×ÒÑÔÐØ×ÒÑ Ô Ð Ø×/Ò/Ñ1Ô1ˆŒˆˆr!   c                ó,  — |                       ¦   «         }| j                             |t          j        ¦  «        5 \  }}|€|                      ¦   «          n'|du r#t          |                      ||¦  «        ¦  «        ‚d d d ¦  «         d S # 1 swxY w Y   d S rA   )Úpython_cacheÚcacheÚcomparer=   r   Úcreate_python_envr   Ú	_diff_msg)r2   ra   ÚeqÚolds       r"   r¬   zPython.ensure_python_envÌ   sÑ   € Ø× Ò Ñ"Ô"ˆØŒZ×Ò ¥f¤oÑ6Ô6ð 	:¹)¸2¸sØˆ{Ø×&Ò&Ñ(Ô(Ð(Ð(Ø�u��Ý˜tŸ~š~¨d°CÑ8Ô8Ñ9Ô9Ð9ð		:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ºAB	Â	BÂBr+   r¶   c                ó  ‡ ‡— g }ˆfd„‰                       ¦   «         D ¦   «         }|r+|                     dd                     |¦  «        › �¦  «         ˆ fd„‰                      ¦   «         D ¦   «         }|r+|                     dd                     |¦  «        › �¦  «         ˆfd„‰                       ¦   «         D ¦   «         }|r+|                     dd                     |¦  «        › �¦  «         dd	                     |¦  «        › �S )
Nc                ó,   •— g | ]\  }}|‰v¯	|› d |›�‘ŒS ©ú=r    ©r›   ÚkÚvr¶   s      €r"   ú
<listcomp>z$Python._diff_msg.<locals>.<listcomp>×   s,   ø€ ÐGÐGÐG¡$ ! Q¸!À3¸,¸,�A��˜��¸,¸,¸,r!   zadded z | c                ó,   •— g | ]\  }}|‰v¯	|› d |›�‘ŒS r¹   r    )r›   r¼   r½   ra   s      €r"   r¾   z$Python._diff_msg.<locals>.<listcomp>Ú   s,   ø€ ÐIÐIÐI¡D A q¸1ÀD¸=¸=�a�<�<˜!�<�<¸=¸=¸=r!   zremoved c                óV   •— g | ]%\  }}|‰v ¯	|‰|         k    ¯|› d ‰|         ›d|›�‘Œ&S )rº   z->r    r»   s      €r"   r¾   z$Python._diff_msg.<locals>.<listcomp>Ý   sQ   ø€ ÐaÐaÐa±°°1ÈÈSÈÈÐUVÐZ]Ð^_ÔZ`ÒU`ÐU`�aÐ+Ð+˜#˜aœ&Ð+Ð+ aÐ+Ð+ÐU`ÐU`ÐU`r!   zchanged zpython rŠ   )ÚitemsrŽ   r�   )ra   r¶   ÚresultÚaddedÚremovedÚchangeds   ``    r"   r´   zPython._diff_msgÔ   s  øø€ àˆØGÐGÐGÐG¨$¯*ª*©,¬,ÐGÑGÔGˆØð 	8Ø�MŠMÐ6 5§:¢:¨eÑ#4Ô#4Ð6Ð6Ñ7Ô7Ð7ØIÐIÐIÐI¨C¯IªI©K¬KÐIÑIÔIˆØð 	<Ø�MŠMÐ: U§Z¢Z°Ñ%8Ô%8Ð:Ð:Ñ;Ô;Ð;ØaÐaÐaÐa¸¿
º
¹¼ÐaÑaÔaˆØð 	<Ø�MŠMÐ: U§Z¢Z°Ñ%8Ô%8Ð:Ð:Ñ;Ô;Ð;Ø,˜Ÿš 6Ñ*Ô*Ð,Ð,Ð,r!   ú
list[Path]c                ó   — t           ‚r/   r¥   r1   s    r"   r­   zPython.prepend_env_var_pathâ   ó   € å!Ð!r!   c                ó0  •— t          ¦   «                              ¦   «          | j        s| j        j        r_| j                             ¦   «         }| j        r
|| j        d<   | j        j        r+t          j        d 	                    |¦  «        ¦  «         dS dS dS )zCalled when setup is done.Úinstalled_packagesú,N)
rD   Ú_done_with_setupÚjournalrl   Úlist_dependenciesÚ	installerÚ	installedÚloggingÚwarningr�   )r2   ÚoutcomerF   s     €r"   rÌ   zPython._done_with_setupæ   sœ   ø€ å‰Œ× Ò Ñ"Ô"Ð"ØŒ<ð 	3˜4œ<Ô9ð 	3Ø”n×.Ò.Ñ0Ô0ˆGØŒ|ð =Ø5<�”Ð1Ñ2ØŒ|Ô-ð 3Ý” §¢¨Ñ 1Ô 1Ñ2Ô2Ð2Ð2Ð2ð	3ð 	3ð3ð 3r!   c                ó8   — dt          | j        j        ¦  «        iS )Nr&   )ÚlistrP   r&   r1   s    r"   r°   zPython.python_cacheð   s   € à�D Ô!1Ô!>Ñ?Ô?ð
ð 	
r!   r$   c                ó�  — | j         d         }| j        du rMd| _        |                      |¦  «        | _        | j        �%| j        r|                      ¦   «         }|| j        d<   | j        €C| j        d         r'dd                     |¦  «        › �}t          |¦  «        ‚t          |¦  «        ‚t          t          | j        ¦  «        S )	zResolve base python.rP   FTNÚpythonÚskip_missing_interpretersz0could not find python interpreter with spec(s): rŠ   )ra   rC   Ú_get_pythonrB   rÍ   Ú_get_env_journal_pythonrN   r�   r   ÚNoInterpreterr
   r$   )r2   r˜   rH   r—   s       r"   rP   zPython.base_pythonõ   sÈ   € ð #'¤)¨MÔ":ˆàÔ%¨Ð.Ð.Ø)-ˆDÔ&Ø $× 0Ò 0°Ñ >Ô >ˆDÔØÔ Ð,°´Ð,Ø×4Ò4Ñ6Ô6�Ø).�”˜XÑ&àÔÐ$ØŒyÐ4Ô5ð  ØbÈÏÊÐS_ÑI`ÔI`ÐbÐb�Ý˜3‘i”i�Ý Ñ-Ô-Ð-å•J Ô 1Ñ2Ô2Ð2r!   c                ó’   — | j         j        t          | j         j        ¦  «        | j         j        | j         j        | j         j        d dœS )N)r%   r&   r'   r)   ÚsysplatformÚextra_version_info)rP   r%   Útupler&   r'   r)   r*   r1   s    r"   rÚ   zPython._get_env_journal_python	  sI   € à"Ô.Ô=Ý! $Ô"2Ô"?Ñ@Ô@ØÔ'Ô/ØÔ%Ô+ØÔ+Ô4Ø"&ð
ð 
ð 	
r!   rP   úPythonInfo | Nonec                ó   — t           ‚r/   r¥   )r2   rP   s     r"   rÙ   zPython._get_python  rÈ   r!   c                ó   — t           ‚r/   r¥   r1   s    r"   r³   zPython.create_python_env  rÈ   r!   )r>   r   r-   r?   )r-   r?   )r-   rf   r:   )r-   rI   )ra   r   r‚   rƒ   r-   rI   )r‚   r   r-   rƒ   )r‚   r   r˜   rI   rK   r(   r-   rI   )r-   r   )ra   r+   r¶   r+   r-   r   )r-   rÆ   )r-   r+   )r-   r$   )rP   rI   r-   rà   )r   r   r   rE   r`   rj   r^   r_   r~   rc   Úclassmethodr…   rL   r   re   r\   rZ   r«   r¬   Ústaticmethodr´   r­   rÌ   r°   r;   rP   rÚ   rÙ   r³   Ú__classcell__)rF   s   @r"   r=   r=   =   s–  ø€ € € € € ð&ð &ð &ð &ð &ð &ð
#Wð #Wð #Wð #Wð #Wð #WðJð ð ð ð ð ð,ð ,ð ,ð ,ð+ð +ð +ð +ðð ð ð ð ð ð*Hð Hð Hð Hð ðð ð ñ „[ðð ðð ð ñ „[ðð. ð"ð "ð "ñ „^ð"ð ð"ð "ð "ñ „^ð"ð ð"ð "ð "ñ „^ð"ð2ð 2ð 2ð 2ð 2ð 2ð:ð :ð :ð :ð ð-ð -ð -ñ „\ð-ð ð"ð "ð "ñ „^ð"ð3ð 3ð 3ð 3ð 3ð 3ð
ð 
ð 
ð 
ð
 ð3ð 3ð 3ñ „Xð3ð&
ð 
ð 
ð 
ð ð"ð "ð "ñ „^ð"ð ð"ð "ð "ñ „^ð"ð "ð "ð "ð "r!   r=   c                  ó"   — e Zd ZdZd
d„Zdd„Zd	S )rÛ   zcould not find interpreter.r˜   rI   r-   r?   c                ó   — || _         d S r/   )r˜   )r2   r˜   s     r"   rE   zNoInterpreter.__init__  s   € Ø(ˆÔÐÐr!   r   c                ó<   — dd                      | j        ¦  «        › �S )Nz<could not find python interpreter matching any of the specs rŠ   )r�   r˜   r1   s    r"   Ú__str__zNoInterpreter.__str__"  s    € ØlÈdÏiÊiÐX\ÔXiÑNjÔNjÐlÐlÐlr!   N)r˜   rI   r-   r?   r:   )r   r   r   Ú__doc__rE   ré   r    r!   r"   rÛ   rÛ     sH   € € € € € Ø%Ð%ð)ð )ð )ð )ðmð mð mð mð mð mr!   rÛ   )#rê   Ú
__future__r   rÑ   Úrer   Úabcr   r   Útypingr   r   r   r	   r
   Úvirtualenv.discovery.py_specr   Útox.tox_env.apir   r   Útox.tox_env.errorsr   r   r   Úpathlibr   Útox.config.mainr   r   r$   ÚcompileÚVERBOSErŒ   r=   rÛ   r    r!   r"   ú<module>rö      sÞ  ðØ [Ð [à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à 3Ð 3Ð 3Ð 3Ð 3Ð 3à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3àð 'ØÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&ðð ð ð ð �*ñ ô ð ðFð Fð Fð Fð F�ñ Fô Fð Fð* �”
ðð
 „Jñô €ð\"ð \"ð \"ð \"ð \"ˆV�Sñ \"ô \"ð \"ð~mð mð mð mð m�Dñ mô mð mð mð mr!   