§
    îyIfÆQ  ã                  óz  — d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddl m!Z! ej"        dk    rddl#Z#nddl$Z# ee%¦  «        j&        Z'eee(ef                  Z) G d„ ded¬¦  «        Z* G d„ de¦  «        Z+ G d„ de¦  «        Z, G d„ de¦  «        Z- G d„ de¦  «        Z. G d„ de¦  «        Z/ G d„ de¦  «        Z0 G d„ de¦  «        Z1 G d „ d!e¦  «        Z2 G d"„ d#e¦  «        Z3 G d$„ d%e4¦  «        Z5 G d&„ d'e¦  «        Z6dS )(zBuild frontend for PEP-517.é    )ÚannotationsN)ÚABCÚabstractmethod)Úcontextmanager)ÚPath)ÚNamedTemporaryFileÚTemporaryDirectory)Úsleep)
ÚAnyÚDictÚIteratorÚListÚLiteralÚ
NamedTupleÚNoReturnÚOptionalÚ	TypedDictÚcast)ÚZipFile©ÚRequirement)Úensure_empty_dir)é   é   c                  óP   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded<   d	S )
ÚOptionalHookszCA flag indicating if the backend supports the optional hook or not.ÚboolÚget_requires_for_build_sdistÚ prepare_metadata_for_build_wheelÚget_requires_for_build_wheelÚbuild_editableÚget_requires_for_build_editableÚ#prepare_metadata_for_build_editableN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    úK/var/www/piapp/venv/lib/python3.11/site-packages/pyproject_api/_frontend.pyr   r      s`   € € € € € € ØMÐMà&Ð&Ð&Ñ&Ø*Ð*Ð*Ñ*Ø&Ð&Ð&Ñ&ØÐÐÑØ)Ð)Ð)Ñ)Ø-Ð-Ð-Ñ-Ð-Ð-r+   r   T)Útotalc                  óN   — e Zd Zeedd„¦   «         ¦   «         Zedd„¦   «         ZdS )	Ú	CmdStatusÚreturnr   c                ó   — t           ‚)z3:return: truthful when the command finished running©ÚNotImplementedError©Úselfs    r,   ÚdonezCmdStatus.done'   s
   € õ "Ð!r+   útuple[str, str]c                ó   — t           ‚)z0:return: standard output and standard error textr2   r4   s    r,   Úout_errzCmdStatus.out_err-   ó
   € õ "Ð!r+   N)r0   r   )r0   r7   )r%   r&   r'   Úpropertyr   r6   r9   r*   r+   r,   r/   r/   &   s\   € € € € € ØØð"ð "ð "ñ „^ñ „Xð"ð ð"ð "ð "ñ „^ð"ð "ð "r+   r/   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚRequiresBuildSdistResultzQInformation collected while acquiring the source distribution build dependencies.útuple[Requirement, ...]ÚrequiresÚstrÚoutÚerrNr$   r*   r+   r,   r=   r=   3   s6   € € € € € € Ø[Ð[ð &Ð%Ð%Ñ%à€H€H�Hà€H€H�H€H€Hr+   r=   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚRequiresBuildWheelResultúCInformation collected while acquiring the wheel build dependencies.r>   r?   r@   rA   rB   Nr$   r*   r+   r,   rD   rD   >   ó6   € € € € € € ØMÐMð &Ð%Ð%Ñ%à€H€H�Hà€H€H�H€H€Hr+   rD   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚRequiresBuildEditableResultrE   r>   r?   r@   rA   rB   Nr$   r*   r+   r,   rH   rH   I   rF   r+   rH   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚMetadataForBuildWheelResultz9Information collected while acquiring the wheel metadata.r   Úmetadatar@   rA   rB   Nr$   r*   r+   r,   rJ   rJ   T   s3   € € € € € € ØCÐCð €N€N�Nà€H€H�Hà€H€H�H€H€Hr+   rJ   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚMetadataForBuildEditableResultz<Information collected while acquiring the editable metadata.r   rK   r@   rA   rB   Nr$   r*   r+   r,   rM   rM   _   s3   € € € € € € ØFÐFð €N€N�Nà€H€H�Hà€H€H�H€H€Hr+   rM   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚSdistResultz;Information collected while building a source distribution.r   Úsdistr@   rA   rB   Nr$   r*   r+   r,   rO   rO   j   s3   € € € € € € ØEÐEð €K€K�Kà€H€H�Hà€H€H�H€H€Hr+   rO   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚWheelResultz-Information collected while building a wheel.r   Úwheelr@   rA   rB   Nr$   r*   r+   r,   rR   rR   u   s3   € € € € € € Ø7Ð7ð €K€K�Kà€H€H�Hà€H€H�H€H€Hr+   rR   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚEditableResultz7Information collected while building an editable wheel.r   rS   r@   rA   rB   Nr$   r*   r+   r,   rU   rU   €   s3   € € € € € € ØAÐAð €K€K�Kà€H€H�Hà€H€H�H€H€Hr+   rU   c                  ó4   ‡ — e Zd ZdZdˆ fd	„Zdd
„Zdd„Zˆ xZS )ÚBackendFailedzAn error of the build backend.Úresultúdict[str, Any]rA   r@   rB   r0   ÚNonec                ó  •— t          ¦   «                              ¦   «          || _        || _        |                     dd¦  «        | _        |                     dd¦  «        | _        |                     dd¦  «        | _        d S )NÚcodeéþÿÿÿÚexc_typezmissing Exception typeÚexc_msgzmissing Exception message)ÚsuperÚ__init__rA   rB   Úgetr\   r^   r_   )r5   rX   rA   rB   Ú	__class__s       €r,   ra   zBackendFailed.__init__Ž   sl   ø€ Ý‰Œ×ÒÑÔÐàˆŒàˆŒàŸš F¨BÑ/Ô/ˆŒ	à#ŸZšZ¨
Ð4LÑMÔMˆŒà"ŸJšJ yÐ2MÑNÔNˆŒˆˆr+   c           	     ó’   — d| j         €dn
d| j         › d�› d| j        › d| j        › d| j        › | j        › �	                     ¦   «         S )Nzpackaging backend failedÚ z (code=ú)z, with z: ú
)r\   r^   r_   rB   rA   Úrstripr4   s    r,   Ú__str__zBackendFailed.__str__›   s{   € ðJ¨T¬YÐ-> r rÐDZÈdÌiÐDZÐDZÐDZð Jð JØ”MðJð JØ%)¤\ðJð JØ59´XðJØ?C¼xðJð Jç
Š&‰(Œ(ð	r+   c                óp   — | j         j        › d| j        › d| j        ›d| j        ›d| j        ›d| j        ›d�S )Nz(result=dict(code=z, exc_type=z	,exc_msg=z), out=z, err=rf   )rc   r%   r\   r^   r_   rA   rB   r4   s    r,   Ú__repr__zBackendFailed.__repr__¡   sj   € àŒ~Ô&ð 4ð 4Ø $¤	ð4ð 4Ø6:´mð4ð 4ØPTÔP\ð4ð 4à”Hð4ð 4à&*¤hð4ð 4ð 4ð	
r+   )rX   rY   rA   r@   rB   r@   r0   rZ   ©r0   r@   )r%   r&   r'   r(   ra   ri   rk   Ú__classcell__)rc   s   @r,   rW   rW   ‹   sq   ø€ € € € € Ø(Ð(ðOð Oð Oð Oð Oð Oðð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r+   rW   c                  ó†  — e Zd ZU dZdZded<    ed¦  «         ed¦  «        fZded<   	 dLdMd„Ze	dNd„¦   «         Z
edOd„¦   «         ZedPd„¦   «         ZedQd„¦   «         ZdRdSd#„ZdRdTd%„Z	 dRdUd'„Z	 dRdVd*„ZdWd+„Z	 dRdXd-„ZdRdYd0„Z	 	 dZd[d4„Z	 	 dZd\d6„Zd]d>„Z	 dRd^dB„Zed_dD„¦   «         Zd`dG„ZeedadK„¦   «         ¦   «         ZdS )bÚFrontendz-Abstract base class for a pyproject frontend.z setuptools.build_meta:__legacy__r@   ÚLEGACY_BUILD_BACKENDzsetuptools >= 40.8.0rS   r>   ÚLEGACY_REQUIRESTÚrootr   Úbackend_pathsútuple[Path, ...]Úbackend_moduleÚbackend_objú
str | Noner?   Úreuse_backendr   r0   rZ   c                óh   — || _         || _        || _        || _        || _        || _        d| _        dS )a  
        Create a new frontend.

        :param root: the root path of the project
        :param backend_paths: paths to provision as available to import from for the build backend
        :param backend_module: the module where the backend lives
        :param backend_obj: the backend object key (will be lookup up within the backend module)
        :param requires: build requirements for the backend
        :param reuse_backend: a flag indicating if the communication channel should be kept alive between messages
        N)Ú_rootÚ_backend_pathsÚ_backend_moduleÚ_backend_objr?   Ú_reuse_backendÚ_optional_hooks)r5   rr   rs   ru   rv   r?   rx   s          r,   ra   zFrontend.__init__±   s@   € ð& ˆŒ
Ø+ˆÔØ-ˆÔØ'ˆÔØ19ˆŒØ+ˆÔØ59ˆÔÐÐr+   ÚfolderúMtuple[Path, tuple[Path, ...], str, str | None, tuple[Requirement, ...], bool]c                ó€  ‡— ‰dz  }|                      ¦   «         rÓ|                     d¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |                     di ¦  «        }d|v r"t          ˆfd„|d         D ¦   «         ¦  «        }nd}d|v r-t          d	„ |                     d¦  «        D ¦   «         ¦  «        }n| j        }|                     d
| j        ¦  «        }nd}| j        }| j        }|                     d¦  «        }	|	d         }
t          |	¦  «        dk    r|	d         nd}‰||
||dfS )a�  
        Frontend creation arguments from a python project folder (thould have a ``pypyproject.toml`` file per PEP-518).

        :param folder: the python project folder
        :return: the frontend creation args

        E.g., to create a frontend from a python project folder:

        .. code:: python

            frontend = Frontend(*Frontend.create_args_from_folder(project_folder))
        zpyproject.tomlÚrbNzbuild-systemzbackend-pathc              3  ó"   •K  — | ]	}‰|z  V — Œ
d S ©Nr*   )Ú.0Úpr€   s     €r,   ú	<genexpr>z3Frontend.create_args_from_folder.<locals>.<genexpr>ã   s'   øè è € Ð7iÐ7iÀq¸À¹
Ð7iÐ7iÐ7iÐ7iÐ7iÐ7ir+   r*   r?   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r…   r   ©r†   Úrs     r,   rˆ   z3Frontend.create_args_from_folder.<locals>.<genexpr>ç   s(   è è € Ð9oÐ9oÈQ½+Àa¹.¼.Ð9oÐ9oÐ9oÐ9oÐ9oÐ9or+   zbuild-backendú:r   é   T)
ÚexistsÚopenÚtomllibÚloadrb   Útuplerq   rp   ÚsplitÚlen)Úclsr€   Úpy_project_tomlÚfile_handlerÚ
py_projectÚbuild_systemrs   r?   Úbuild_backendÚpathsru   rv   s    `          r,   Úcreate_args_from_folderz Frontend.create_args_from_folderÌ   s   ø€ ð" !Ð#3Ñ3ˆØ×!Ò!Ñ#Ô#ð 	5Ø ×%Ò% dÑ+Ô+ð 8¨|Ý$œ\¨,Ñ7Ô7�
ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8à%Ÿ>š>¨.¸"Ñ=Ô=ˆLØ Ð-Ð-Ý27Ð7iÐ7iÐ7iÐ7iÈLÐYgÔLhÐ7iÑ7iÔ7iÑ2iÔ2i��à "�Ø˜\Ð)Ð)Ý49Ð9oÐ9oÐR^×RbÒRbÐcmÑRnÔRnÐ9oÑ9oÔ9oÑ4oÔ4o��àÔ.�Ø(×,Ò,¨_¸cÔ>VÑWÔWˆMˆMàˆMØÔ*ˆHØÔ4ˆMØ×#Ò# CÑ(Ô(ˆØ# AœhˆÝ.1°%©j¬j¸1ªn¨n %¨¤( (À$ˆØ�} n°kÀ8ÈTÐQÐQs   °AÁAÁAc                ó:   — | j         › | j        r
d| j        › �nd› �S )z:return: backend keyrŒ   re   )r|   r}   r4   s    r,   ÚbackendzFrontend.backendô   s2   € ð Ô&Ð^À4ÔCTÐ(\Ð(?¨DÔ,=Ð(?Ð(?Ð(?ÐZ\Ð^Ð^Ð^r+   ú	list[str]c                óª   — t          t          dz  ¦  «        t          | j        ¦  «        | j        g}| j        r|                     | j        ¦  «         |S )z(:return: startup arguments for a backendz_backend.py)r@   Ú_HEREr~   r|   r}   Úappend)r5   rX   s     r,   Úbackend_argszFrontend.backend_argsù   sQ   € õ !¥¨Ñ!6Ñ7Ô7½¸TÔ=PÑ9QÔ9QÐSWÔSgÐhˆØÔð 	-Ø�MŠM˜$Ô+Ñ,Ô,Ð,Øˆr+   r   c                ó^   — | j         € |                      d¦  «        \  }}}|| _         | j         S )zI:return: a dictionary indicating if the optional hook is supported or notNr   )r   Ú_send)r5   rX   Ú_Ú__s       r,   Úoptional_hookszFrontend.optional_hooks  s6   € ð ÔÐ'Ø ŸJšJÐ'8Ñ9Ô9‰MˆF�A�rØ#)ˆDÔ ØÔ#Ð#r+   NÚconfig_settingsúConfigSettings | Noner=   c           	     óz  — | j         d         r|                      d|¬¦  «        \  }}}ng dd}}}t          |t          ¦  «        rt	          d„ |D ¦   «         ¦  «        s|                      d|d||¦  «         t          t          d„ t          t          t                   |¦  «        D ¦   «         ¦  «        ||¦  «        S )z™
        Get build requirements for a source distribution (per PEP-517).

        :param config_settings: run arguments
        :return: outcome
        r   ©Úcmdr©   re   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r…   ©Ú
isinstancer@   ©r†   Úis     r,   rˆ   z8Frontend.get_requires_for_build_sdist.<locals>.<genexpr>  ó,   è è € Ð2VÐ2VÈ!µ:¸aÅÑ3EÔ3EÐ2VÐ2VÐ2VÐ2VÐ2VÐ2Vr+   úlist of stringc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r…   r   rŠ   s     r,   rˆ   z8Frontend.get_requires_for_build_sdist.<locals>.<genexpr>  ó(   è è € Ð-^Ð-^À­k¸!©n¬nÐ-^Ð-^Ð-^Ð-^Ð-^Ð-^r+   )r¨   r¥   r°   ÚlistÚallÚ_unexpected_responser=   r’   r   r   r@   ©r5   r©   rX   rA   rB   s        r,   r   z%Frontend.get_requires_for_build_sdist	  óÏ   € ð ÔÐ=Ô>ð 	*Ø#ŸzšzÐ.LÐ^m˜zÑnÔnÑˆF�C˜˜à! 2 r˜�CˆFÝ˜&¥$Ñ'Ô'ð 	j­sÐ2VÐ2VÈvÐ2VÑ2VÔ2VÑ/VÔ/Vð 	jØ×%Ò%Ð&DÀfÐN^Ð`cÐehÑiÔiÐiÝ'­Ð-^Ð-^ÅdÍ4ÕPSÌ9ÐV\ÑF]ÔF]Ð-^Ñ-^Ô-^Ñ(^Ô(^Ð`cÐehÑiÔiÐir+   rD   c           	     óz  — | j         d         r|                      d|¬¦  «        \  }}}ng dd}}}t          |t          ¦  «        rt	          d„ |D ¦   «         ¦  «        s|                      d|d||¦  «         t          t          d„ t          t          t                   |¦  «        D ¦   «         ¦  «        ||¦  «        S )z‹
        Get build requirements for a wheel (per PEP-517).

        :param config_settings: run arguments
        :return: outcome
        r    r¬   re   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r…   r¯   r±   s     r,   rˆ   z8Frontend.get_requires_for_build_wheel.<locals>.<genexpr>#  r³   r+   r´   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r…   r   rŠ   s     r,   rˆ   z8Frontend.get_requires_for_build_wheel.<locals>.<genexpr>%  r¶   r+   )r¨   r¥   r°   r·   r¸   r¹   rD   r’   r   r   r@   rº   s        r,   r    z%Frontend.get_requires_for_build_wheel  r»   r+   rH   c           	     óz  — | j         d         r|                      d|¬¦  «        \  }}}ng dd}}}t          |t          ¦  «        rt	          d„ |D ¦   «         ¦  «        s|                      d|d||¦  «         t          t          d„ t          t          t                   |¦  «        D ¦   «         ¦  «        ||¦  «        S )z›
        Get build requirements for an editable wheel build (per PEP-660).

        :param config_settings: run arguments
        :return: outcome
        r"   r¬   re   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r…   r¯   r±   s     r,   rˆ   z;Frontend.get_requires_for_build_editable.<locals>.<genexpr>5  r³   r+   r´   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r…   r   rŠ   s     r,   rˆ   z;Frontend.get_requires_for_build_editable.<locals>.<genexpr>7  s(   è è € Ð0aÐ0aÀAµ¸Q±´Ð0aÐ0aÐ0aÐ0aÐ0aÐ0ar+   )r¨   r¥   r°   r·   r¸   r¹   rH   r’   r   r   r@   rº   s        r,   r"   z(Frontend.get_requires_for_build_editable'  sÏ   € ð ÔÐ@ÔAð 	*Ø#ŸzšzÐ.OÐap˜zÑqÔqÑˆF�C˜˜à! 2 r˜�CˆFÝ˜&¥$Ñ'Ô'ð 	m­sÐ2VÐ2VÈvÐ2VÑ2VÔ2VÑ/VÔ/Vð 	mØ×%Ò%Ð&GÈÐQaÐcfÐhkÑlÔlÐlÝ*­5Ð0aÐ0aÍÍdÕSVÌiÐY_ÑI`ÔI`Ð0aÑ0aÔ0aÑ+aÔ+aÐcfÐhkÑlÔlÐlr+   Úmetadata_directoryú"MetadataForBuildWheelResult | Nonec                ó  — |                       |¦  «         d}| j        d         r|                      d||¬¦  «        \  }}}|€dS t          |t          ¦  «        s|                      d|t          ||¦  «         t          ||z  ||¦  «        S )zÔ
        Build wheel metadata (per PEP-517).

        :param metadata_directory: where to generate the metadata
        :param config_settings: build arguments
        :return: metadata generation result
        Nr   ©r­   rÂ   r©   )Ú_check_metadata_dirr¨   r¥   r°   r@   r¹   rJ   )r5   rÂ   r©   ÚbasenamerA   rB   s         r,   r   z)Frontend.prepare_metadata_for_build_wheel9  s¯   € ð 	× Ò Ð!3Ñ4Ô4Ð4Ø#ˆØÔÐAÔBð 	Ø!%§¢Ø6Ø#5Ø /ð ",ñ "ô "ÑˆH�c˜3ð
 ÐØ�4Ý˜(¥CÑ(Ô(ð 	cØ×%Ò%Ð&HÈ(ÕTWÐY\Ð^aÑbÔbÐbÝ*Ð+=ÀÑ+HÈ#ÈsÑSÔSÐSr+   c                óÂ   — || j         k    rd| j         › �}t          |¦  «        ‚|                     ¦   «         rt          |¦  «         |                     dd¬¦  «         d S )Nz>the project root and the metadata directory can't be the same T©ÚparentsÚexist_ok)rz   ÚRuntimeErrorrŽ   r   Úmkdir)r5   rÂ   Úmsgs      r,   rÆ   zFrontend._check_metadata_dirS  sp   € Ø ¤Ò+Ð+Ø_ÐSWÔS]Ð_Ð_ˆCÝ˜sÑ#Ô#Ð#Ø×$Ò$Ñ&Ô&ð 	1ÝÐ/Ñ0Ô0Ð0Ø× Ò ¨¸Ð Ñ=Ô=Ð=Ð=Ð=r+   ú%MetadataForBuildEditableResult | Nonec                ó  — |                       |¦  «         d}| j        d         r|                      d||¬¦  «        \  }}}|€dS t          |t          ¦  «        s|                      d|t          ||¦  «         ||z  }t          |||¦  «        S )zÝ
        Build editable wheel metadata (per PEP-660).

        :param metadata_directory: where to generate the metadata
        :param config_settings: build arguments
        :return: metadata generation result
        Nr#   rÅ   r   )rÆ   r¨   r¥   r°   r@   r¹   rM   )r5   rÂ   r©   rÇ   rA   rB   rX   s          r,   r#   z,Frontend.prepare_metadata_for_build_editable[  s³   € ð 	× Ò Ð!3Ñ4Ô4Ð4Ø#ˆØÔÐDÔEð 	Ø!%§¢Ø9Ø#5Ø /ð ",ñ "ô "ÑˆH�c˜3ð
 ÐØ�4Ý˜(¥CÑ(Ô(ð 	cØ×%Ò%Ð&HÈ(ÕTWÐY\Ð^aÑbÔbÐbØ# hÑ.ˆÝ-¨f°c¸3Ñ?Ô?Ð?r+   Úsdist_directoryrO   c                óö   — |                      dd¬¦  «         |                      d||¬¦  «        \  }}}t          |t          ¦  «        s|                      d|t          ||¦  «         t          ||z  ||¦  «        S )zñ
        Build a source distribution (per PEP-517).

        :param sdist_directory: the folder where to build the source distribution
        :param config_settings: build arguments
        :return: source distribution build result
        TrÉ   Úbuild_sdist)r­   rÑ   r©   )rÍ   r¥   r°   r@   r¹   rO   )r5   rÑ   r©   rÇ   rA   rB   s         r,   rÓ   zFrontend.build_sdistv  s�   € ð 	×Ò d°TÐÑ:Ô:Ð:Ø!ŸZšZØØ+Ø+ð (ñ 
ô 
Ñˆ�#�sõ
 ˜(¥CÑ(Ô(ð 	NØ×%Ò% m°X½sÀCÈÑMÔMÐMÝ˜?¨XÑ5°s¸CÑ@Ô@Ð@r+   Úwheel_directoryúPath | NonerR   c                óø   — |                      dd¬¦  «         |                      d|||¬¦  «        \  }}}t          |t          ¦  «        s|                      d|t          ||¦  «         t          ||z  ||¦  «        S )a  
        Build a wheel file (per PEP-517).

        :param wheel_directory: the folder where to build the wheel
        :param config_settings: build arguments
        :param metadata_directory: wheel metadata folder
        :return: wheel build result
        TrÉ   Úbuild_wheel©r­   rÔ   r©   rÂ   )rÍ   r¥   r°   r@   r¹   rR   ©r5   rÔ   r©   rÂ   rÇ   rA   rB   s          r,   r×   zFrontend.build_wheelˆ  s�   € ð 	×Ò d°TÐÑ:Ô:Ð:Ø!ŸZšZØØ+Ø+Ø1ð	 (ñ 
ô 
Ñˆ�#�sõ ˜(¥CÑ(Ô(ð 	NØ×%Ò% m°X½sÀCÈÑMÔMÐMÝ˜?¨XÑ5°s¸CÑ@Ô@Ð@r+   rU   c                óø   — |                      dd¬¦  «         |                      d|||¬¦  «        \  }}}t          |t          ¦  «        s|                      d|t          ||¦  «         t          ||z  ||¦  «        S )a  
        Build an editable wheel file (per PEP-660).

        :param wheel_directory: the folder where to build the editable wheel
        :param config_settings: build arguments
        :param metadata_directory: wheel metadata folder
        :return: wheel build result
        TrÉ   r!   rØ   )rÍ   r¥   r°   r@   r¹   rU   rÙ   s          r,   r!   zFrontend.build_editable¡  s‘   € ð 	×Ò d°TÐÑ:Ô:Ð:Ø!ŸZšZØ Ø+Ø+Ø1ð	 (ñ 
ô 
Ñˆ�#�sõ ˜(¥CÑ(Ô(ð 	QØ×%Ò%Ð&6¸Å#ÀsÈCÑPÔPÐPÝ˜o°Ñ8¸#¸sÑCÔCÐCr+   r­   Úgotr   Úexpected_typerA   rB   r   c                ód   — |›d| j         ›d|›d|›�}t          d t          j        |dœ||¦  «        ‚)Nz on z
 returned z but expected type ©r\   r^   r_   )rž   rW   Ú	TypeErrorr%   )r5   r­   rÛ   rÜ   rA   rB   rÎ   s          r,   r¹   zFrontend._unexpected_responseº  sL   € ð ÐaÐa˜DœLÐaÐa°cÐaÐaÐP]ÐaÐaˆÝ TµyÔ7IÐVYÐZÐZÐ\_ÐadÑeÔeÐer+   ÚtargetúLiteral['wheel', 'editable']útuple[Path, str, str]c                ó˜  — t          | d|› �¦  «        }|                      ¦   «         5 } |||¦  «        }|j        }|                     ¦   «         sd|›�}t	          |¦  «        ‚|j        |j        }
}	t          |¦  «        }d}t          t          |¦  «        d¦  «        5 }| 	                    ¦   «         D ]I}t          |¦  «        j        d         }|                     d¦  «        r|}|                     ||¦  «         ŒJ	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |€d|› �}t	          |¦  «        ‚||z  |	|
fS )a^  
        Create metadata from building the wheel (use when the prepare endpoints are not present or don't work).

        :param metadata_directory: directory where to put the metadata
        :param target: the type of wheel metadata to build
        :param config_settings: config settings to pass in to the build endpoint
        :return:
        Úbuild_z$missing wheel file return by backed Nr‹   r   z
.dist-infoz+no .dist-info found inside generated wheel )ÚgetattrÚ_wheel_directoryrS   rŽ   rÌ   rA   rB   r@   r   Únamelistr   ÚpartsÚendswithÚextract)r5   rÂ   rà   r©   ÚhookrÔ   rX   rS   rÎ   rA   rB   Ú
extract_torÇ   Úzip_fileÚnamerr   s                   r,   Úmetadata_from_builtzFrontend.metadata_from_builtÅ  sã  € õ �tÐ. fÐ.Ð.Ñ/Ô/ˆØ×"Ò"Ñ$Ô$ð 	;¨Ø37°4¸ÈÑ3YÔ3YˆFØ”LˆEØ—<’<‘>”>ð (ØF¸UÐFÐF�Ý" 3Ñ'Ô'Ð'Ø”z 6¤:�ˆCÝÐ/Ñ0Ô0ˆJØˆHÝ�˜U™œ SÑ)Ô)ð ;¨XØ$×-Ò-Ñ/Ô/ð ;ð ;�DÝ ™:œ:Ô+¨AÔ.�DØ—}’} \Ñ2Ô2ð ;Ø#'˜Ø ×(Ò(¨¨zÑ:Ô:Ð:øð	;ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð ÐØGÀÐGÐGˆCÝ˜sÑ#Ô#Ð#Ø! HÑ,¨c°3Ð6Ð6s7   ¨A8D#Â ADÄ D#ÄD	ÄD#ÄD	ÄD#Ä#D'Ä*D'úIterator[Path]c              #  óz   K  — t          ¦   «         5 }t          |¦  «        V — d d d ¦  «         d S # 1 swxY w Y   d S r…   )r	   r   )r5   rÔ   s     r,   ræ   zFrontend._wheel_directoryè  s‡   è è € åÑ!Ô!ð 	( _Ý�Ñ'Ô'Ð'Ð'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ‘0°4·4Úkwargsútuple[Any, str, str]c                óL  — t          d|› d�¬¦  «        5 }t          |j        ¦  «                             d¦  «        }t	          j        |d„ |                     ¦   «         D ¦   «         t          |¦  «        dœ¦  «        }|                      |||¦  «        5 }|j	        st          d¦  «         |j	        ¯d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         rp	 |                     d¦  «        5 }t	          j        |¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          n## |                     ¦   «          w xY wd	d
d|› d�dœ}d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         \  }	}
d|v r|d         |	|
fS t!          ||	|
¦  «        ‚)NÚpep517_ú-)Úprefixz.jsonc                ób   — i | ],\  }}|t          |t          ¦  «        rt          |¦  «        n|“Œ-S r*   )r°   r   r@   )r†   ÚkÚvs      r,   ú
<dictcomp>z"Frontend._send.<locals>.<dictcomp>ó  s8   € ÐdÐdÐdÉTÈQÐPQ˜q­Z¸½4Ñ-@Ô-@Ð#G¥3 q¡6¤6 6ÀaÐdÐdÐdr+   )r­   rò   rX   gü©ñÒMbP?Úrtr�   rÌ   zBackend response file z is missingrÞ   r0   )r   r   rî   Úwith_suffixÚjsonÚdumpsÚitemsr@   Ú	_send_msgr6   r
   rŽ   r�   r‘   Úunlinkr9   rW   )r5   r­   rò   Úresult_file_markerÚresult_filerÎ   ÚstatusÚresult_handlerrX   rA   rB   s              r,   r¥   zFrontend._sendí  sˆ  € ÝÐ'7°Ð'7Ð'7Ð'7Ð8Ñ8Ô8ð 	Ð<NÝÐ1Ô6Ñ7Ô7×CÒCÀGÑLÔLˆKÝ”*àØdÐdÐU[×UaÒUaÑUcÔUcÐdÑdÔdÝ! +Ñ.Ô.ðð ñô ˆCð —’  [°#Ñ6Ô6ð !¸&Ø œ+ð !Ý˜%‘L”L�Lð !œ+ð !ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð ×!Ò!Ñ#Ô#ð ð)Ø$×)Ò)¨$Ñ/Ô/ð ;°>Ý!%¤¨>Ñ!:Ô!:˜ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð  ×&Ò&Ñ(Ô(Ð(Ð(ø�K×&Ò&Ñ(Ô(Ð(Ð(øøøð Ø .ØP¸ÐPÐPÐPðð �ð'	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð0 —>’>Ñ#Ô#‰ˆˆSØ�vÐÐØ˜(Ô# S¨#Ð-Ð-Ý˜F C¨Ñ-Ô-Ð-sr   •B E$ÂB?Â3E$Â?C	ÃE$ÃC	ÃE$ÃD5Ã4DÄ	D5ÄD	ÄD5ÄD	ÄD5Ä E$Ä5EÅE$Å$E(Å+E(r  rÎ   úIterator[CmdStatus]c                ó   — t           ‚r…   r2   )r5   r­   r  rÎ   s       r,   r  zFrontend._send_msg  r:   r+   )T)rr   r   rs   rt   ru   r@   rv   rw   r?   r>   rx   r   r0   rZ   )r€   r   r0   r�   rl   )r0   rŸ   )r0   r   r…   )r©   rª   r0   r=   )r©   rª   r0   rD   )r©   rª   r0   rH   )rÂ   r   r©   rª   r0   rÃ   )rÂ   r   r0   rZ   )rÂ   r   r©   rª   r0   rÏ   )rÑ   r   r©   rª   r0   rO   )NN)rÔ   r   r©   rª   rÂ   rÕ   r0   rR   )rÔ   r   r©   rª   rÂ   rÕ   r0   rU   )r­   r@   rÛ   r   rÜ   r   rA   r@   rB   r@   r0   r   )rÂ   r   rà   rá   r©   rª   r0   râ   )r0   rð   )r­   r@   rò   r   r0   ró   )r­   r@   r  r   rÎ   r@   r0   r  )r%   r&   r'   r(   rp   r)   r   rq   ra   Úclassmethodrœ   r;   rž   r£   r¨   r   r    r"   r   rÆ   r#   rÓ   r×   r!   r¹   rï   r   ræ   r¥   r   r  r*   r+   r,   ro   ro   ©   s¾  € € € € € € Ø7Ð7ð !CÐÐBÐBÐBÑBà0;°Ð<RÑ0SÔ0SÐU`ÐU`ÐahÑUiÔUiÐ/j€OÐjÐjÐjÑjð #ð:ð :ð :ð :ð :ð6 ð%Rð %Rð %Rñ „[ð%RðN ð_ð _ð _ñ „Xð_ð ðð ð ñ „Xðð ð$ð $ð $ñ „Xð$ðjð jð jð jð jðjð jð jð jð jð" 26ðmð mð mð mð mð* 26ðTð Tð Tð Tð Tð4>ð >ð >ð >ð 26ð@ð @ð @ð @ð @ð6Að Að Að Að Að* 26Ø*.ð	Að Að Að Að Að8 26Ø*.ð	Dð Dð Dð Dð Dð2	fð 	fð 	fð 	fð 26ð	!7ð !7ð !7ð !7ð !7ðF ð(ð (ð (ñ „^ð(ð.ð .ð .ð .ð< Øð"ð "ð "ñ „^ñ „^ð"ð "ð "r+   ro   )7r(   Ú
__future__r   rþ   ÚsysÚabcr   r   Ú
contextlibr   Úpathlibr   Útempfiler   r	   Útimer
   Útypingr   r   r   r   r   r   r   r   r   r   Úzipfiler   Úpackaging.requirementsr   Úpyproject_api._utilr   Úversion_infor�   ÚtomliÚ__file__Úparentr¡   r@   ÚConfigSettingsr   r/   r=   rD   rH   rJ   rM   rO   rR   rU   rÌ   rW   ro   r*   r+   r,   ú<module>r     sm  ðØ !Ð !Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø Ð Ð Ð Ð Ð Ø fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fØ Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .à 0Ð 0Ð 0Ð 0Ð 0Ð 0àÔ�wÒÐØ€N€N€N€NàÐÐÐàˆˆX‰ŒÔ€Ø˜$˜s C˜xœ.Ô)€ð.ð .ð .ð .ð .�I Tð .ñ .ô .ð .ð
"ð 
"ð 
"ð 
"ð 
"�ñ 
"ô 
"ð 
"ðð ð ð ð ˜zñ ô ð ðð ð ð ð ˜zñ ô ð ðð ð ð ð  *ñ ô ð ðð ð ð ð  *ñ ô ð ðð ð ð ð  Zñ ô ð ðð ð ð ð �*ñ ô ð ðð ð ð ð �*ñ ô ð ðð ð ð ð �Zñ ô ð ð
ð 
ð 
ð 
ð 
�Lñ 
ô 
ð 
ð<e"ð e"ð e"ð e"ð e"ˆsñ e"ô e"ð e"ð e"ð e"r+   