§
    XŠtjX:  ã            
       ó   — 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mZmZmZmZmZ ddlmZ erd d	lmZ  G d
„ de¦  «        Zdeeef         deddfd„Zdedeeef         fd„Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z	 	 d!dee         dee         deeeef                  ddfd„Z 	 	 d!dee         dee         deeeef                  ddfd„Z!dededefd„Z" G d„ d ¦  «        Z#dS )"é    N)Úcontextmanager)Úabspath)Újoin)ÚSTDOUTÚ
check_callÚcheck_output)ÚTYPE_CHECKINGÚAnyÚIteratorÚMappingÚOptionalÚSequenceé   )Ú_in_proc_script_path)ÚProtocolc            
       ód   — e Zd ZdZ	 	 ddee         dee         deeeef                  ddfd„ZdS )	ÚSubprocessRunnerz%A protocol for the subprocess runner.NÚcmdÚcwdÚextra_environÚreturnc                 ó   — d S ©N© )Úselfr   r   r   s       úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pyproject_hooks/_impl.pyÚ__call__zSubprocessRunner.__call__   s	   € ð ˆCó    ©NN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   r   r   r   r   r   r   r      sw   € € € € € Ø3Ð3ð
 "&Ø9=ð		ð 	à˜#”ð	ð ˜#”ð	ð $ G¨C°¨HÔ$5Ô6ð		ð
 ð	ð 	ð 	ð 	ð 	ð 	r   r   ÚobjÚpathr   c                 ó‚   — t          |dd¬¦  «        5 }t          j        | |fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )NÚwúutf-8©Úencoding)ÚopenÚjsonÚdump)r%   r&   ÚkwargsÚfs       r   Ú
write_jsonr1      s’   € Ý	ˆd�C 'Ð	*Ñ	*Ô	*ð $¨aÝŒ	�#�qÐ#Ð#˜FÐ#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s   “4´8»8c                 ó€   — t          | d¬¦  «        5 }t          j        |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr)   r*   )r,   r-   Úload)r&   r0   s     r   Ú	read_jsonr4   !   s�   € Ý	ˆd˜WÐ	%Ñ	%Ô	%ð ¨ÝŒy˜‰|Œ|ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ’3³7º7c                   óp   ‡ — e Zd ZdZ	 	 	 d	dedee         dee         deee                  ddf
ˆ fd„Zˆ xZS )
ÚBackendUnavailablezEWill be raised if the backend cannot be imported in the hook process.NÚ	tracebackÚmessageÚbackend_nameÚbackend_pathr   c                 óx   •— || _         || _        || _        t          ¦   «                              |pd¦  «         d S )NzError while importing backend)r9   r:   r7   ÚsuperÚ__init__)r   r7   r8   r9   r:   Ú	__class__s        €r   r=   zBackendUnavailable.__init__)   s@   ø€ ð )ˆÔØ(ˆÔØ"ˆŒÝ‰Œ×Ò˜ÐCÐ$CÑDÔDÐDÐDÐDr   ©NNN)	r    r!   r"   r#   r$   r   r   r=   Ú__classcell__©r>   s   @r   r6   r6   &   s¤   ø€ € € € € ØOÐOð
 "&Ø&*Ø04ðEð EàðEð ˜#”ðEð ˜s”mð	Eð
 ˜x¨œ}Ô-ðEð 
ðEð Eð Eð Eð Eð Eð Eð Eð Eð Er   r6   c                   ó,   ‡ — e Zd ZdZdeddfˆ fd„Zˆ xZS )ÚHookMissingz>Will be raised on missing hooks (if a fallback can't be used).Ú	hook_namer   Nc                 óX   •— t          ¦   «                              |¦  «         || _        d S r   )r<   r=   rD   )r   rD   r>   s     €r   r=   zHookMissing.__init__:   s&   ø€ Ý‰Œ×Ò˜Ñ#Ô#Ð#Ø"ˆŒˆˆr   )r    r!   r"   r#   r$   r=   r@   rA   s   @r   rC   rC   7   sQ   ø€ € € € € ØHÐHð# #ð #¨$ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #r   rC   c                   ó"   — e Zd ZdZdeddfd„ZdS )ÚUnsupportedOperationzDMay be raised by build_sdist if the backend indicates that it can't.r7   r   Nc                 ó   — || _         d S r   )r7   )r   r7   s     r   r=   zUnsupportedOperation.__init__B   s   € Ø"ˆŒˆˆr   )r    r!   r"   r#   r$   r=   r   r   r   rG   rG   ?   s<   € € € € € ØNÐNð# #ð #¨$ð #ð #ð #ð #ð #ð #r   rG   r   r   r   c                 ó”   — t           j                             ¦   «         }|r|                     |¦  «         t	          | ||¬¦  «         dS )zwThe default method of calling the wrapper subprocess.

    This uses :func:`subprocess.check_call` under the hood.
    )r   ÚenvN)ÚosÚenvironÚcopyÚupdater   ©r   r   r   rJ   s       r   Údefault_subprocess_runnerrP   F   sJ   € õ Œ*�/Š/Ñ
Ô
€CØð "Ø�
Š
�=Ñ!Ô!Ð!åˆs˜ Ð%Ñ%Ô%Ð%Ð%Ð%r   c                 ó    — t           j                             ¦   «         }|r|                     |¦  «         t	          | ||t
          ¬¦  «         dS )zqCall the subprocess while suppressing output.

    This uses :func:`subprocess.check_output` under the hood.
    )r   rJ   ÚstderrN)rK   rL   rM   rN   r   r   rO   s       r   Úquiet_subprocess_runnerrS   V   sL   € õ Œ*�/Š/Ñ
Ô
€CØð "Ø�
Š
�=Ñ!Ô!Ð!å�˜# 3­vÐ6Ñ6Ô6Ð6Ð6Ð6r   Úsource_treeÚ	requestedc                 óþ  — t           j                             |¦  «        rt          d¦  «        ‚t           j                             | ¦  «        }t           j                             t           j                             ||¦  «        ¦  «        }t           j                             |¦  «        }t           j                             |¦  «        }t           j                             ||g¦  «        |k    rt          d¦  «        ‚|S )zèNormalise and check a backend path.

    Ensure that the requested backend path is specified as a relative path,
    and resolves to a location under the given source tree.

    Return an absolute version of the requested path.
    zpaths must be relativez paths must be inside source tree)	rK   r&   ÚisabsÚ
ValueErrorr   Únormpathr   ÚnormcaseÚcommonprefix)rT   rU   Ú
abs_sourceÚabs_requestedÚnorm_sourceÚnorm_requesteds         r   Únorm_and_checkr`   f   sÂ   € õ 
„w‡}‚}�YÑÔð 3ÝÐ1Ñ2Ô2Ð2å”—’ Ñ-Ô-€JÝ”G×$Ò$¥R¤W§\¢\°*¸iÑ%HÔ%HÑIÔI€Mõ ”'×"Ò" :Ñ.Ô.€KÝ”W×%Ò% mÑ4Ô4€NÝ	„w×Ò˜[¨.Ð9Ñ:Ô:¸kÒIÐIÝÐ;Ñ<Ô<Ð<àÐr   c                   óÆ  — e Zd ZdZ	 	 	 ddededeee                  ded         dee         d	dfd
„Zeddd	e	d         fd„¦   «         Z
d	ee         fd„Z	 ddeeeef                  d	ee         fd„Z	 	 d dedeeeef                  ded	efd„Z	 	 d!dedeeeef                  dee         d	efd„Z	 ddeeeef                  d	ee         fd„Z	 	 d dedeeeef                  ded	ee         fd„Z	 	 d!dedeeeef                  dee         d	efd„Z	 ddeeeef                  d	ee         fd„Z	 ddedeeeef                  d	efd„Zdedeeef         d	efd„ZdS )"ÚBuildBackendHookCallerzAA wrapper to call the build backend hooks for a source directory.NÚ
source_dirÚbuild_backendr:   Úrunnerr   Úpython_executabler   c                 ó¶   ‡ — |€t           }t          |¦  «        ‰ _        |‰ _        |rˆ fd„|D ¦   «         }|‰ _        |‰ _        |st          j        }|‰ _        dS )a“  
        :param source_dir: The source directory to invoke the build backend for
        :param build_backend: The build backend spec
        :param backend_path: Additional path entries for the build backend spec
        :param runner: The :ref:`subprocess runner <Subprocess Runners>` to use
        :param python_executable:
            The Python executable used to invoke the build backend
        Nc                 ó:   •— g | ]}t          ‰j        |¦  «        ‘ŒS r   )r`   rc   )Ú.0Úpr   s     €r   ú
<listcomp>z3BuildBackendHookCaller.__init__.<locals>.<listcomp>—   s%   ø€ ÐUÐUÐUÀ1�N¨4¬?¸AÑ>Ô>ÐUÐUÐUr   )	rP   r   rc   rd   r:   Ú_subprocess_runnerÚsysÚ
executablerf   )r   rc   rd   r:   re   rf   s   `     r   r=   zBuildBackendHookCaller.__init__�   sv   ø€ ð  ˆ>Ý.ˆFå! *Ñ-Ô-ˆŒØ*ˆÔØð 	VØUÐUÐUÐUÈÐUÑUÔUˆLØ(ˆÔØ"(ˆÔØ ð 	/Ý #¤ÐØ!2ˆÔÐÐr   c              #   óV   K  — | j         }|| _         	 dV — || _         dS # || _         w xY w)ay  A context manager for temporarily overriding the default
        :ref:`subprocess runner <Subprocess Runners>`.

        :param runner: The new subprocess runner to use within the context.

        .. code-block:: python

            hook_caller = BuildBackendHookCaller(...)
            with hook_caller.subprocess_runner(quiet_subprocess_runner):
                ...
        N)rl   )r   re   Úprevs      r   Úsubprocess_runnerz(BuildBackendHookCaller.subprocess_runnerž   sH   è è € ð Ô&ˆØ"(ˆÔð	+ØˆEˆEˆEà&*ˆDÔ#Ð#Ð#ø dˆDÔ#Ð*Ð*Ð*Ð*s   ’ Ÿ	(c                 ó.   — |                       di ¦  «        S )z>Return the list of optional features supported by the backend.Ú_supported_features©Ú
_call_hook)r   s    r   rs   z*BuildBackendHookCaller._supported_features²   s   € à�ŠÐ4°bÑ9Ô9Ð9r   Úconfig_settingsc                 ó2   — |                       dd|i¦  «        S )am  Get additional dependencies required for building a wheel.

        :param config_settings: The configuration settings for the build backend
        :returns: A list of :pep:`dependency specifiers <508>`.

        .. admonition:: Fallback

            If the build backend does not defined a hook with this name, an
            empty list will be returned.
        Úget_requires_for_build_wheelrv   rt   ©r   rv   s     r   rx   z3BuildBackendHookCaller.get_requires_for_build_wheel¶   s%   € ð �ŠØ*Ð->ÀÐ,Pñ
ô 
ð 	
r   TÚmetadata_directoryÚ_allow_fallbackc                 óP   — |                       dt          |¦  «        ||dœ¦  «        S )aS  Prepare a ``*.dist-info`` folder with metadata for this project.

        :param metadata_directory: The directory to write the metadata to
        :param config_settings: The configuration settings for the build backend
        :param _allow_fallback:
            Whether to allow the fallback to building a wheel and extracting
            the metadata from it. Should be passed as a keyword argument only.

        :returns: Name of the newly created subfolder within
                  ``metadata_directory``, containing the metadata.

        .. admonition:: Fallback

            If the build backend does not define a hook with this name and
            ``_allow_fallback`` is truthy, the backend will be asked to build a
            wheel via the ``build_wheel`` hook and the dist-info extracted from
            that will be returned.
        Ú prepare_metadata_for_build_wheel©rz   rv   r{   ©ru   r   ©r   rz   rv   r{   s       r   r}   z7BuildBackendHookCaller.prepare_metadata_for_build_wheelÈ   s9   € ð0 �ŠØ.å&-Ð.@Ñ&AÔ&AØ#2Ø#2ðð ñ
ô 
ð 	
r   Úwheel_directoryc                 ór   — |�t          |¦  «        }|                      dt          |¦  «        ||dœ¦  «        S )aÕ  Build a wheel from this project.

        :param wheel_directory: The directory to write the wheel to
        :param config_settings: The configuration settings for the build backend
        :param metadata_directory: The directory to reuse existing metadata from
        :returns:
            The name of the newly created wheel within ``wheel_directory``.

        .. admonition:: Interaction with fallback

            If the ``build_wheel`` hook was called in the fallback for
            :meth:`prepare_metadata_for_build_wheel`, the build backend would
            not be invoked. Instead, the previously built wheel will be copied
            to ``wheel_directory`` and the name of that file will be returned.
        NÚbuild_wheel©r�   rv   rz   ©r   ru   ©r   r�   rv   rz   s       r   rƒ   z"BuildBackendHookCaller.build_wheelé   sM   € ð* Ð)Ý!(Ð);Ñ!<Ô!<ÐØ�ŠØå#*¨?Ñ#;Ô#;Ø#2Ø&8ðð ñ
ô 
ð 	
r   c                 ó2   — |                       dd|i¦  «        S )aw  Get additional dependencies required for building an editable wheel.

        :param config_settings: The configuration settings for the build backend
        :returns: A list of :pep:`dependency specifiers <508>`.

        .. admonition:: Fallback

            If the build backend does not defined a hook with this name, an
            empty list will be returned.
        Úget_requires_for_build_editablerv   rt   ry   s     r   rˆ   z6BuildBackendHookCaller.get_requires_for_build_editable	  s%   € ð �ŠØ-Ð0AÀ?Ð/Sñ
ô 
ð 	
r   c                 óP   — |                       dt          |¦  «        ||dœ¦  «        S )aU  Prepare a ``*.dist-info`` folder with metadata for this project.

        :param metadata_directory: The directory to write the metadata to
        :param config_settings: The configuration settings for the build backend
        :param _allow_fallback:
            Whether to allow the fallback to building a wheel and extracting
            the metadata from it. Should be passed as a keyword argument only.
        :returns: Name of the newly created subfolder within
                  ``metadata_directory``, containing the metadata.

        .. admonition:: Fallback

            If the build backend does not define a hook with this name and
            ``_allow_fallback`` is truthy, the backend will be asked to build a
            wheel via the ``build_editable`` hook and the dist-info
            extracted from that will be returned.
        Ú#prepare_metadata_for_build_editabler~   r   r€   s       r   rŠ   z:BuildBackendHookCaller.prepare_metadata_for_build_editable  s9   € ð. �ŠØ1å&-Ð.@Ñ&AÔ&AØ#2Ø#2ðð ñ
ô 
ð 	
r   c                 ór   — |�t          |¦  «        }|                      dt          |¦  «        ||dœ¦  «        S )añ  Build an editable wheel from this project.

        :param wheel_directory: The directory to write the wheel to
        :param config_settings: The configuration settings for the build backend
        :param metadata_directory: The directory to reuse existing metadata from
        :returns:
            The name of the newly created wheel within ``wheel_directory``.

        .. admonition:: Interaction with fallback

            If the ``build_editable`` hook was called in the fallback for
            :meth:`prepare_metadata_for_build_editable`, the build backend
            would not be invoked. Instead, the previously built wheel will be
            copied to ``wheel_directory`` and the name of that file will be
            returned.
        NÚbuild_editabler„   r…   r†   s       r   rŒ   z%BuildBackendHookCaller.build_editable;  sM   € ð, Ð)Ý!(Ð);Ñ!<Ô!<ÐØ�ŠØå#*¨?Ñ#;Ô#;Ø#2Ø&8ðð ñ
ô 
ð 	
r   c                 ó2   — |                       dd|i¦  «        S )z…Get additional dependencies required for building an sdist.

        :returns: A list of :pep:`dependency specifiers <508>`.
        Úget_requires_for_build_sdistrv   rt   ry   s     r   rŽ   z3BuildBackendHookCaller.get_requires_for_build_sdist\  s%   € ð �ŠØ*Ð->ÀÐ,Pñ
ô 
ð 	
r   Úsdist_directoryc                 óN   — |                       dt          |¦  «        |dœ¦  «        S )z‰Build an sdist from this project.

        :returns:
            The name of the newly created sdist within ``wheel_directory``.
        Úbuild_sdist)r�   rv   r   )r   r�   rv   s      r   r‘   z"BuildBackendHookCaller.build_sdisth  s5   € ð �ŠØå#*¨?Ñ#;Ô#;Ø#2ðð ñ
ô 
ð 	
r   rD   r/   c           
      óÆ  — d| j         i}| j        r)t          j                             | j        ¦  «        }||d<   t          j        ¦   «         5 }d|i}t          |t          |d¦  «        d¬¦  «         t          ¦   «         5 }| j
        }|                      |t          t          |¦  «        ¦  «        ||g| j        |¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          |d¦  «        ¦  «        }	|	                     d	¦  «        r#t#          |	                     d
d¦  «        ¦  «        ‚|	                     d¦  «        rEt%          |	                     d
d¦  «        |	                     dd¦  «        | j         | j        ¬¦  «        ‚|	                     d¦  «        r$t'          |	                     d¦  «        p|¦  «        ‚|	d         cd d d ¦  «         S # 1 swxY w Y   d S )NÚ_PYPROJECT_HOOKS_BUILD_BACKENDÚ_PYPROJECT_HOOKS_BACKEND_PATHr/   z
input.jsoné   )Úindent)r   r   zoutput.jsonÚunsupportedr7   Ú Ú
no_backendÚbackend_error)r8   r9   r:   Úhook_missingÚmissing_hook_nameÚ
return_val)rd   r:   rK   Úpathsepr   ÚtempfileÚTemporaryDirectoryr1   Úpjoinr   rf   rl   r   r$   rc   r4   ÚgetrG   r6   rC   )
r   rD   r/   r   r:   ÚtdÚ
hook_inputÚscriptÚpythonÚdatas
             r   ru   z!BuildBackendHookCaller._call_hookz  s^  € Ø9¸4Ô;MÐNˆàÔð 	JÝœ:Ÿ?š?¨4Ô+<Ñ=Ô=ˆLØ=IˆMÐ9Ñ:åÔ(Ñ*Ô*ð 	&¨bØ" FÐ+ˆJÝ�z¥5¨¨\Ñ#:Ô#:À1ÐEÑEÔEÐEõ &Ñ'Ô'ð ¨6ØÔ/�Ø×'Ò'Ø�W¥S¨¡[¤[Ñ1Ô1°9¸bÐAØœØ"/ð (ñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ �U 2 }Ñ5Ô5Ñ6Ô6ˆDØ�xŠx˜Ñ&Ô&ð FÝ*¨4¯8ª8°KÀÑ+DÔ+DÑEÔEÐEØ�xŠx˜Ñ%Ô%ð Ý(Ø—H’H˜[¨"Ñ-Ô-Ø ŸHšH _°bÑ9Ô9Ø!%Ô!3Ø!%Ô!2ð	ñ ô ð ð �xŠx˜Ñ'Ô'ð NÝ! $§(¢(Ð+>Ñ"?Ô"?Ð"LÀ9ÑMÔMÐMØ˜Ô%ð3	&ð 	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s8   Á3GÂ ACÃGÃC	ÃGÃC	ÃC2GÇGÇGr?   r   )NTr   )r    r!   r"   r#   r$   r   r   r=   r   r   rq   rs   r   r
   rx   Úboolr}   rƒ   rˆ   rŠ   rŒ   rŽ   r‘   ru   r   r   r   rb   rb   ~   s�  € € € € € ØKÐKð 15Ø/3Ø+/ð3ð 3àð3ð ð3ð ˜x¨œ}Ô-ð	3ð
 Ð+Ô,ð3ð $ Cœ=ð3ð 
ð3ð 3ð 3ð 3ð: ð+Ð(:ð +¸xÈ¼~ð +ð +ð +ñ „^ð+ð&: X¨c¤]ð :ð :ð :ð :ð 8<ð
ð 
à! '¨#¨s¨(Ô"3Ô4ð
ð 
�#Œð
ð 
ð 
ð 
ð* 8<Ø $ð	
ð 
àð
ð " '¨#¨s¨(Ô"3Ô4ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ðH 8<Ø,0ð	
ð 
àð
ð " '¨#¨s¨(Ô"3Ô4ð
ð % SœMð	
ð
 
ð
ð 
ð 
ð 
ðD 8<ð
ð 
à! '¨#¨s¨(Ô"3Ô4ð
ð 
�#Œð
ð 
ð 
ð 
ð* 8<Ø $ð	
ð 
àð
ð " '¨#¨s¨(Ô"3Ô4ð
ð ð	
ð
 
�#Œð
ð 
ð 
ð 
ðF 8<Ø,0ð	
ð 
àð
ð " '¨#¨s¨(Ô"3Ô4ð
ð % SœMð	
ð
 
ð
ð 
ð 
ð 
ðF 8<ð

ð 

à! '¨#¨s¨(Ô"3Ô4ð

ð 
�#Œð

ð 

ð 

ð 

ð 8<ð
ð 
àð
ð " '¨#¨s¨(Ô"3Ô4ð
ð 
ð	
ð 
ð 
ð 
ð$ & Cð  &°¸¸c¸Ô1Bð  &Àsð  &ð  &ð  &ð  &ð  &ð  &r   rb   r   )$r-   rK   rm   rŸ   Ú
contextlibr   Úos.pathr   r   r¡   Ú
subprocessr   r   r   Útypingr	   r
   r   r   r   r   Ú_in_processr   r   r   r$   r1   r4   Ú	Exceptionr6   rC   rG   rP   rS   r`   rb   r   r   r   ú<module>r¯      s  ðØ €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ Là -Ð -Ð -Ð -Ð -Ð -àð ØÐÐÐÐÐð	ð 	ð 	ð 	ð 	˜8ñ 	ô 	ð 	ð$�G˜C ˜HÔ%ð $¨Sð $¸tð $ð $ð $ð $ð
�Cð ˜G C¨ HÔ-ð ð ð ð ð
Eð Eð Eð Eð E˜ñ Eô Eð Eð"#ð #ð #ð #ð #�)ñ #ô #ð #ð#ð #ð #ð #ð #˜9ñ #ô #ð #ð Ø15ð&ð &Ø	�#Œð&à	�#Œð&ð ˜G C¨ HÔ-Ô.ð&ð 
ð	&ð &ð &ð &ð$ Ø15ð7ð 7Ø	�#Œð7à	�#Œð7ð ˜G C¨ HÔ-Ô.ð7ð 
ð	7ð 7ð 7ð 7ð  ð °ð ¸ð ð ð ð ð0\&ð \&ð \&ð \&ð \&ñ \&ô \&ð \&ð \&ð \&r   