§
    WŠtjs'  ã                  óø   — d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ d	d
lmZ d	dlmZ d dlmc mZ d dlmZ dej        v Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Z dS )é    )ÚannotationsN)Úcache_from_source)Úpath)Ú	build_extÚget_abi3_suffix)ÚDistribution)ÚCompileError)Ú	Extensioné   )Úenvironment)ÚDALS)Úget_config_varÚ__pypy__c                  ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestBuildExtc                óÎ   — t          ¦   «         }t          |¦  «        }d|j        d<   |                     d¦  «        }t          j                             |d¦  «        }||k    sJ ‚dS )z…
        Setuptools needs to give back the same
        result as distutils, even if the fullname
        is not in ext_map.
        Ú zfoo/barÚfooN)r   r   Úext_mapÚget_ext_filenameÚorig)ÚselfÚdistÚcmdÚresÚwanteds        ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/setuptools/tests/test_build_ext.pyÚtest_get_ext_filenamez"TestBuildExt.test_get_ext_filename   s_   € õ ‰~Œ~ˆÝ˜‰oŒoˆØ!#ˆŒ�IÑØ×"Ò" 5Ñ)Ô)ˆÝ”×0Ò0°°eÑ<Ô<ˆØ�fŠ}ˆ}ˆ}ˆ}ˆ}ˆ}ó    c                óê  — t          t          ¦   «         ¦  «         t          ddgd¬¦  «        }t          t	          |g¬¦  «        ¦  «        }t          |¦  «        }|                     ¦   «          d|j        v sJ ‚|                     d¦  «        }t          ¦   «         s&| 	                    t          d¦  «        ¦  «        sJ ‚d
S t          j        dk    r| 	                    d¦  «        sJ ‚d
S d	|v sJ ‚d
S )z}
        Filename needs to be loadable by several versions
        of Python 3 if 'is_abi3' is truthy on Extension()
        ú	spam.eggsúeggs.cT©Úpy_limited_api©Úext_modulesÚ
EXT_SUFFIXÚwin32zeggs.pydÚabi3N)Úprintr   r
   r   Údictr   Úfinalize_optionsr   r   Úendswithr   ÚsysÚplatform)r   Ú	extensionr   r   r   s        r   Útest_abi3_filenamezTestBuildExt.test_abi3_filename&   sû   € õ
 	�oÑÔÑ Ô Ð å˜k¨H¨:ÀdÐKÑKÔKˆ	Ý�D¨i¨[Ð9Ñ9Ô9Ñ:Ô:ˆÝ˜‰oŒoˆØ×ÒÑÔÐØ˜cœkÐ)Ð)Ð)Ð)Ø×"Ò" ;Ñ/Ô/ˆåÑ Ô ð 	!Ø—<’<¥¨|Ñ <Ô <Ñ=Ô=Ð=Ð=Ð=Ð=Ð=ÝŒ\˜WÒ$Ð$Ø—<’< 
Ñ+Ô+Ð+Ð+Ð+Ð+Ð+à˜S�=�=�=�=�=�=r   c                óš  — t          ¦   «         }t          |¦  «        }t          ddgd¬¦  «        x|j        d<   }d|_        t
          s|                     d¦  «        }nd}	 dt          j        d<   |                     d	¦  «        }d
|k    sJ ‚|                     d¦  «        }||k    sJ ‚	 t          j        d= dS # t          j        d= w xY w)zd
        SETUPTOOLS_EXT_SUFFIX variable always overrides
        default extension options.
        Úfor_abi3zs.cTr#   Fzfor_abi3.test-suffixz.test-suffixÚSETUPTOOLS_EXT_SUFFIXÚnormalznormal.test-suffixN)	r   r   r
   r   Ú_links_to_dynamicÚIS_PYPYr   ÚosÚenviron)r   r   r   ÚextÚexpectr   s         r   Útest_ext_suffix_overridez%TestBuildExt.test_ext_suffix_override;   só   € õ
 ‰~Œ~ˆÝ˜‰oŒoˆÝ(1ØØˆGàð	)
ñ )
ô )
ð 	
ˆŒ�JÑ #ð !&ˆÔåð 	,Ø×)Ò)¨*Ñ5Ô5ˆFˆFð ,ˆFð	4Ø2@�BŒJÐ.Ñ/Ø×&Ò& xÑ0Ô0ˆCØ'¨3Ò.Ð.Ð.Ð.Ø×&Ò& zÑ2Ô2ˆCØ˜S’=�=�=�=�=å”
Ð2Ð3Ð3Ð3ø•”
Ð2Ð3Ð3Ð3Ð3Ð3s   Á"A	B; Â;C
c                óÞ   — ddddiiidddiidœ}t          dd	g¦  «        }t          d
dg¦  «        }t          ddg¦  «        }t          j        |¦  «         t          d|||gddidœ¦  «        S )NÚmypkgÚsubpkgzext2.cr   Úext1zmain.c)Úsrczc-extensionsz
mypkg.ext1zc-extensions/ext1/main.czmypkg.subpkg.ext2zsrc/mypkg/subpkg/ext2.cÚext3zc-extension/ext3.cz%test%rA   )Úscript_namer&   Úpackage_dir)r
   r   Úbuildr   )r   Úfilesr@   Úext2rB   s        r   Údist_with_examplezTestBuildExt.dist_with_example[   s§   € à˜h¨°2¨Ð7Ð8Ø# h° ^Ð4ð
ð 
ˆõ
 ˜Ð(BÐ'CÑDÔDˆÝÐ,Ð/HÐ.IÑJÔJˆÝ˜Ð"6Ð!7Ñ8Ô8ˆåŒ
�5ÑÔÐÝØ#Ø  $¨Ð-Ø ˜;ð
ð 
ñ ô ð 	r   c                ó„  — |                      dd¦  «         |                     dd¦  «         |                      ¦   «         }|                     d¦  «        }d|_         |j        ¦   «          |j                             t          j	        d¦  «        }d„  |j
        ¦   «         D ¦   «         }||› d�|› d	�|› d
�gk    sJ ‚ |j        ¦   «         i k    sJ ‚|                     d¦  «         d|_         |j        ¦   «          d„  |j        ¦   «                              ¦   «         D ¦   «         }||› d�d|› d	�d|› d
�dik    sJ ‚d S )Nr4   ú.mp3ú&setuptools.command.build_ext.use_stubsFr   ú/c                óN   — g | ]"}|                      t          j        d ¦  «        ‘Œ#S ©rL   ©Úreplacer8   Úsep)Ú.0Úxs     r   ú
<listcomp>z1TestBuildExt.test_get_outputs.<locals>.<listcomp>v   s(   € ÐKÐKÐK¨a�1—9’9�RœV SÑ)Ô)ÐKÐKÐKr   ú	/ext3.mp3ú/mypkg/ext1.mp3ú/mypkg/subpkg/ext2.mp3Tc                ó’   — i | ]D\  }}|                      t          j        d ¦  «        |                      t          j        d ¦  «        “ŒES rN   rO   ©rR   ÚkÚvs      r   ú
<dictcomp>z1TestBuildExt.test_get_outputs.<locals>.<dictcomp>‚   óN   € ð 
ð 
ð 
á��1ð �IŠI•b”f˜cÑ"Ô" A§I¢I­b¬f°cÑ$:Ô$:ð
ð 
ð 
r   úsrc/ext3.mp3úsrc/mypkg/ext1.mp3úsrc/mypkg/subpkg/ext2.mp3)ÚsetenvÚsetattrrH   Úget_command_objÚeditable_modeÚensure_finalizedÚ	build_librP   r8   rQ   Úget_outputsÚget_output_mappingÚreinitialize_commandÚitems)r   Ú
tmpdir_cwdÚmonkeypatchr   r   rf   ÚoutputsÚmappings           r   Útest_get_outputszTestBuildExt.test_get_outputsl   s¾  € Ø×ÒÐ2°FÑ;Ô;Ð;Ø×ÒÐDÀeÑLÔLÐLØ×%Ò%Ñ'Ô'ˆð ×(Ò(¨Ñ5Ô5ˆ	Ø"'ˆ	ÔØ"ˆ	Ô"Ñ$Ô$Ð$ØÔ'×/Ò/µ´¸Ñ<Ô<ˆ	ØKÐKÐ3H°9Ô3HÑ3JÔ3JÐKÑKÔKˆØØÐ#Ð#Ð#ØÐ)Ð)Ð)ØÐ0Ð0Ð0ð
ò 
ð 
ð 
ð 
ð
 ,ˆyÔ+Ñ-Ô-°Ò3Ð3Ð3Ð3ð 	×!Ò! +Ñ.Ô.Ð.Ø"&ˆ	ÔØ"ˆ	Ô"Ñ$Ô$Ð$ð
ð 
à4˜	Ô4Ñ6Ô6×<Ò<Ñ>Ô>ð
ñ 
ô 
ˆð ØÐ#Ð#Ð# ^ØÐ)Ð)Ð)Ð+?ØÐ0Ð0Ð0Ð2Mð
ò 
ð 
ð 
ð 
ð 
ð 
r   c                ó*  — |                      dd¦  «         |                     dd¦  «         |                      ¦   «         }|                     d¦  «        }d|_         |j        ¦   «          |j        D ]}|                     |dd¦  «         Œ|j                             t          j
        d¦  «        }d„  |j        ¦   «                              ¦   «         D ¦   «         }d	„ }| ||› d
�¦  «         |d¦  «        |› d�d ||› d�¦  «         |d¦  «        |› d�d ||› d�¦  «         |d¦  «        |› d�dik    sJ ‚|› d�|vsJ ‚|› d�|vsJ ‚ ||› d�¦  «        }	|	|v sJ ‚|	                     |› d�¦  «        sJ ‚|	                     d¦  «        sJ ‚d S )Nr4   rJ   rK   Tr   Ú_needs_stubrL   c                ó’   — i | ]D\  }}|                      t          j        d ¦  «        |                      t          j        d ¦  «        “ŒES rN   rO   rY   s      r   r\   zBTestBuildExt.test_get_output_mapping_with_stub.<locals>.<dictcomp>™   r]   r   c                ó\   — t          | ¦  «                             t          j        d¦  «        S )zDMake it possible to do comparisons and tests in a OS-independent wayrL   )Ú_compiled_file_namerP   r8   rQ   )Úfiles    r   ÚCz9TestBuildExt.test_get_output_mapping_with_stub.<locals>.Cž   s"   € å& tÑ,Ô,×4Ò4µR´V¸SÑAÔAÐAr   z/ext3.pyzsrc/ext3.pyrU   r^   z/mypkg/ext1.pyzsrc/mypkg/ext1.pyrV   r_   z/mypkg/subpkg/ext2.pyzsrc/mypkg/subpkg/ext2.pyrW   r`   z/mypkg/__pycache__/ext1z.pyc)ra   rb   rH   rc   rd   re   Ú
extensionsrf   rP   r8   rQ   rh   rj   Ú
startswithr-   )
r   rk   rl   r   r   r:   rf   rn   rv   Úexample_stubs
             r   Ú!test_get_output_mapping_with_stubz.TestBuildExt.test_get_output_mapping_with_stubŒ   sS  € Ø×ÒÐ2°FÑ;Ô;Ð;Ø×ÒÐDÀdÑKÔKÐKØ×%Ò%Ñ'Ô'ˆð ×(Ò(¨Ñ5Ô5ˆ	Ø"&ˆ	ÔØ"ˆ	Ô"Ñ$Ô$Ð$ØÔ'ð 	:ð 	:ˆCØ×Ò  ]°DÑ9Ô9Ð9Ð9àÔ'×/Ò/µ´¸Ñ<Ô<ˆ	ð
ð 
à4˜	Ô4Ñ6Ô6×<Ò<Ñ>Ô>ð
ñ 
ô 
ˆð
	Bð 	Bð 	Bð ØˆA�Ð$Ð$Ð$Ñ%Ô% q q¨Ñ'7Ô'7ØÐ#Ð#Ð# ^ØˆA�Ð*Ð*Ð*Ñ+Ô+¨Q¨QÐ/BÑ-CÔ-CØÐ)Ð)Ð)Ð+?ØˆA�Ð1Ð1Ð1Ñ2Ô2°A°AÐ6PÑ4QÔ4QØÐ0Ð0Ð0Ð2Mð
ò 
ð 
ð 
ð 
ð Ð+Ð+Ð+°7Ð:Ð:Ð:Ð:ØÐ2Ð2Ð2¸'ÐAÐAÐAÐAð �q˜IÐ5Ð5Ð5Ñ6Ô6ˆØ˜wÐ&Ð&Ð&Ð&Ø×&Ò&¨)Ð'LÐ'LÐ'LÑMÔMÐMÐMÐMØ×$Ò$ VÑ,Ô,Ð,Ð,Ð,Ð,Ð,r   N)	Ú__name__Ú
__module__Ú__qualname__r   r1   r<   rH   ro   rz   © r   r   r   r      sp   € € € € € ðð ð ð!ð !ð !ð*4ð 4ð 4ð@ð ð ð"
ð 
ð 
ð@'-ð '-ð '-ð '-ð '-r   r   c                  ó(   — e Zd Zd
d„Zd„ Zd„ Zd„ Zd	S )ÚTestBuildExtInplaceÚoptionalÚboolÚreturnr   c                ó.  — di i dœdœ}t          j        |¦  «         t          ddg|¬¦  «        }t          t	          |g¬¦  «        ¦  «        }d|_        t          |¦  «        } t          |¦  «        j        dd	d
dœ|¤Ž | 	                    ¦   «          |S )Nz#include missingheader.h
)ÚlibÚtmp)r"   z.buildr!   r"   )r�   r%   úsetup.pyz
.build/libz
.build/tmp)rf   Ú
build_tempr~   )
r   rE   r
   r   r+   rC   r   ÚvarsÚupdatere   )r   r�   ÚoptsrF   r0   r   r   s          r   Úget_build_ext_cmdz%TestBuildExtInplace.get_build_ext_cmd·   s®   € à2Ø ¨Ð,Ð,ð=
ð =
ˆõ 	Œ
�5ÑÔÐÝ˜k¨H¨:ÀÐIÑIÔIˆ	Ý�D¨i¨[Ð9Ñ9Ô9Ñ:Ô:ˆØ%ˆÔÝ˜‰oŒoˆØ�ˆS‰	Œ	ÔÐQ <¸LÐQÐQÈDÐQÐQÐQØ×ÒÑÔÐØˆ
r   c                ó    — |                      ¦   «         }|j                             ¦   «         |j                             ¦   «         z   |j        z   S )z½
        Historically, distutils "logged" by printing to sys.std*.
        Later versions adopted the logging framework. Grab
        messages regardless of how they were captured.
        )Ú
readouterrÚoutÚ
splitlinesÚerrÚmessages)r   ÚcaplogÚcapsysÚstds       r   Úget_log_messagesz$TestBuildExtInplace.get_log_messagesÅ   sC   € ð ×ÒÑ!Ô!ˆØŒw×!Ò!Ñ#Ô# c¤g×&8Ò&8Ñ&:Ô&:Ñ:¸V¼_ÑLÐLr   c                óº   — |                       dd¬¦  «        }|                     ¦   «          t          d„ |                      ||¦  «        D ¦   «         ¦  «        sJ ‚dS )z‚
        If optional extensions fail to build, setuptools should show the error
        in the logs but not fail to build
        T©r�   Úinplacec              3  ó   K  — | ]}d V — ŒdS )z0build_ext: building extension "spam.eggs" failedNr~   )rR   Úmsgs     r   ú	<genexpr>z4TestBuildExtInplace.test_optional.<locals>.<genexpr>Õ   s6   è è € ð 
ð 
àð ?ð
ð 
ð 
ð 
ð 
ð 
r   N)rŒ   ÚrunÚanyr–   )r   rk   r“   r”   r   s        r   Útest_optionalz!TestBuildExtInplace.test_optionalÎ   s{   € ð
 ×$Ò$¨d¸DÐ$ÑAÔAˆØ�Š‰	Œ	ˆ	Ýð 
ð 
à×,Ò,¨V°VÑ<Ô<ð
ñ 
ô 
ñ 
ô 
ð 	
ð 	
ð 
ð 	
ð 	
r   c                óÀ   — |                       dd¬¦  «        }t          j        t          ¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NFTr˜   )rŒ   ÚpytestÚraisesr	   r�   )r   rk   r   s      r   Útest_non_optionalz%TestBuildExtInplace.test_non_optionalÛ   s›   € à×$Ò$¨e¸TÐ$ÑBÔBˆÝŒ]�<Ñ(Ô(ð 	ð 	Ø�GŠG‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ±AÁAÁAN)r�   r‚   rƒ   r   )r{   r|   r}   rŒ   r–   rŸ   r£   r~   r   r   r€   r€   ¶   sX   € € € € € ðð ð ð ðMð Mð Mð

ð 

ð 

ðð ð ð ð r   r€   c                óî   — t          d¦  «        t          d¦  «        t          d¦  «        dœ}t          j        |¦  «         t          j        dgd¬¦  «        \  }\  }}|dk    sJ d	|› d
|› �¦   «         ‚d S )NzÚ
            from setuptools import Extension, setup
            setup(
                name='foo',
                version='0.0.0',
                ext_modules=[Extension('foo', ['foo.c'])],
            )
            aÜ  
            #include "Python.h"

            #if PY_MAJOR_VERSION >= 3

            static struct PyModuleDef moduledef = {
                    PyModuleDef_HEAD_INIT,
                    "foo",
                    NULL,
                    0,
                    NULL,
                    NULL,
                    NULL,
                    NULL,
                    NULL
            };

            #define INITERROR return NULL

            PyMODINIT_FUNC PyInit_foo(void)

            #else

            #define INITERROR return

            void initfoo(void)

            #endif
            {
            #if PY_MAJOR_VERSION >= 3
                PyObject *module = PyModule_Create(&moduledef);
            #else
                PyObject *module = Py_InitModule("extension", NULL);
            #endif
                if (module == NULL)
                    INITERROR;
            #if PY_MAJOR_VERSION >= 3
                return module;
            #endif
            }
            zD
            [build]
            build_base = foo_build
            )r‡   zfoo.cz	setup.cfgrE   )r   é   )r   Údata_streamr   z	
STDOUT:
z	
STDERR:
)r   r   rE   r   Úrun_setup_py)rk   rF   ÚcodeÚstdoutÚstderrs        r   Útest_build_ext_config_handlingr«   â   s°   € åðñ	
ô 	
õ ð(ñ*
ô *
õV ðñ
ô 
ðm<ð <€Eõz 	„JˆuÑÔÐÝ(Ô5ØˆIØðñ ô Ñ€DÑ
ˆ6�6ð �1Š9ˆ9ˆ9Ð? FÐ?Ð?°vÐ?Ð?‰9Œ9ˆ9ˆ9ˆ9r   )!Ú
__future__r   r8   r.   Úimportlib.utilr   rt   r¡   Újaracor   Úsetuptools.command.build_extr   r   Úsetuptools.distr   Úsetuptools.errorsr	   Úsetuptools.extensionr
   r   r   Útextwrapr   Údistutils.command.build_extÚcommandr   Údistutils.sysconfigr   Úbuiltin_module_namesr7   r   r€   r«   r~   r   r   ú<module>r¸      s  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø CÐ CÐ CÐ CÐ CÐ Cà €€€Ø Ð Ð Ð Ð Ð à CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ (Ð (Ð (Ð (Ð (Ð (Ø *Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .à
˜Ô0Ð
0€ð[-ð [-ð [-ð [-ð [-ñ [-ô [-ð [-ð|)ð )ð )ð )ð )ñ )ô )ð )ðXC@ð C@ð C@ð C@ð C@r   