ó
    �œ‘h’   ã                   óš   • S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  SSKJr   " S S5      r " S	 S
\5      rS rS rg)é    N)Úchain)ÚPath)ÚTemplateé   )ÚBackendc                   óÎ   • \ rS rSrSrS\S\\   S\\   S\\   S\\   S\\   S	\\   S
\\   S\\   S\S\4S jrS\4S jr	SS jr
SS jrSS jrSS jrSS jrSS jrS rSrg)ÚMesonTemplateé   z+Template meson build file generation class.Ú
modulenameÚsourcesÚdepsÚ	librariesÚlibrary_dirsÚinclude_dirsÚobject_filesÚlinker_argsÚfortran_argsÚ
build_typeÚ
python_exec                 ó0  • Xl         [        [        5      R                  R	                  5       S-  U l        X l        X0l        X@l        XPl	        Ub  X`l
        O/ U l
        0 U l        Xpl        U	 Vs/ s H7  nUR                  S5      (       a  UR                  S5      (       d  SU S3OUPM9     snU l        U R                   U R"                  U R$                  U R&                  U R(                  U R*                  /U l        X l        X°l        SU l        g s  snf )Nzmeson.build.templateÚ'z                     )r   r   Ú__file__ÚparentÚabsoluteÚbuild_template_pathr   r   r   r   r   ÚsubstitutionsÚobjectsÚ
startswithÚendswithr   Úinitialize_templateÚsources_substitutionÚdeps_substitutionÚinclude_substitutionÚlibraries_substitutionÚfortran_args_substitutionÚpipeliner   r   Úindent)Úselfr   r   r   r   r   r   r   r   r   r   r   Úxs                Ú_C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\numpy/f2py/_backends/_meson.pyÚ__init__ÚMesonTemplate.__init__   s  € ð %Œä”‹N×!Ñ!×*Ñ*Ó,Ð/EÑEð 	Ô ð ŒØŒ	Ø"ŒØ(ÔØÑ#Ø ,Õà "ˆDÔØˆÔØ#Œñ "ó
â!�ð Ÿ\™\¨#×.Ñ.°1·:±:¸c·?±?ˆa�ˆs�!‰HÈÒJÙ!ñ
ˆÔð
 ×$Ñ$Ø×%Ñ%Ø×"Ñ"Ø×%Ñ%Ø×'Ñ'Ø×*Ñ*ð
ˆŒð %ŒØ$ŒØˆ�ùò
s   Á0>DÚreturnc                 óà   • U R                   R                  5       (       d6  [        [        R                  SU R                   R                  5        S35      eU R                   R                  5       $ )NzMeson build template z does not exist.)r   Úis_fileÚFileNotFoundErrorÚerrnoÚENOENTr   Ú	read_text©r(   s    r*   Úmeson_build_templateÚ"MesonTemplate.meson_build_template>   sd   € Ø×'Ñ'×/Ñ/×1Ñ1Ü#Ü—‘ðØ×,Ñ,×5Ñ5Ó7Ð8Ø"ð#óð ð ×'Ñ'×1Ñ1Ó3Ð3ó    Nc                 óš   • U R                   U R                  S'   U R                  U R                  S'   U R                  U R                  S'   g )Nr   Ú	buildtypeÚpython)r   r   r   r   r4   s    r*   r    Ú!MesonTemplate.initialize_templateH   s>   € Ø+/¯?©?ˆ×Ñ˜<Ñ(Ø*.¯/©/ˆ×Ñ˜;Ñ'Ø'+§¡ˆ×Ñ˜8Ò$r7   c           	      óž   • SR                  U R                   Vs/ s H  oR                   SU S3PM     sn5      U R                  S'   g s  snf )Nú,
ú'''ú''',Úsource_list)Újoinr   r'   r   )r(   Úsources     r*   r!   Ú"MesonTemplate.sources_substitutionM   sC   € Ø,1¯J©JØ;?¿<º<ÓHº<°—‘ˆ}˜C ˜x tÓ,¹<ÑHó-
ˆ×Ñ˜=Ò)ùÚHs   šA
c           	      ó¸   • SU R                    3R                  U R                   Vs/ s H  oR                    SU S3PM     sn5      U R                  S'   g s  snf )Nr=   zdependency('z'),Údep_list)r'   rA   r   r   )r(   Údeps     r*   r"   ÚMesonTemplate.deps_substitutionR   sP   € Ø+.¨t¯{©{¨mÐ)<×)AÑ)AØ=A¿YºYÓGºY°c—‘ˆ}˜L¨¨¨SÓ1¹YÑGó*
ˆ×Ñ˜:Ò&ùÚGó   §Ac                 óü  • SR                  [        U R                  5       VVs/ s H  u  pSU SU S3PM     snn5      U R                  S'   SR                  U R                   Vs/ s H  nUR                  SS5       SU S	3PM     sn5      U R                  S
'   SU R                   3R                  U R                   Vs/ s H#  o0R                   UR                  SS5       S3PM%     sn5      U R                  S'   SU R                   3R                  [        [        U R                  5      5       Vs/ s H  oR                   SU S3PM     sn5      U R                  S'   g s  snnf s  snf s  snf s  snf )NÚ
Úlib_dir_z( = declare_dependency(link_args : ['''-Lz'''])Úlib_dir_declarationsÚ.Ú_z& = declare_dependency(link_args : ['-lz'])Úlib_declarationsÚ,Úlib_listÚlib_dir_list)	rA   Ú	enumerater   r   r   Úreplacer'   ÚrangeÚlen)r(   ÚiÚlib_dirÚlibs       r*   r$   Ú$MesonTemplate.libraries_substitutionW   sw  € Ø59·Y±Yô #,¨D×,=Ñ,=Ô">ôâ">‘J�Að ˜1˜#ÐEÀgÀYÈeÓTÙ">òó6
ˆ×ÑÐ1Ñ2ð 26·±ð  Ÿ>š>óâ)�Cð —;‘;˜s CÓ(Ð)Ð)OÐPSÈuÐTWÓXÙ)ñó2
ˆ×ÑÐ-Ñ.ð ,.¨d¯k©k¨]Ð);×)@Ñ)@ØAEÇÂÓPÂ¸#—‘ˆ}˜SŸ[™[¨¨cÓ2Ð3°1Ó5ÁÑPó*
ˆ×Ñ˜:Ñ&ð 02°$·+±+°Ð-?×-DÑ-DÜ38¼¸T×=NÑ=NÓ9OÔ3PÓQÒ3P¨a—‘ˆ}˜H Q C qÓ)Ñ3PÑQó.
ˆ×Ñ˜>Ò*ùó!ùòùò Qùò Rs   ¤E)
Á'"E/Ã*E4Ä9E9c           	      ó¸   • SU R                    3R                  U R                   Vs/ s H  oR                    SU S3PM     sn5      U R                  S'   g s  snf )Nr=   r>   r?   Úinc_list)r'   rA   r   r   )r(   Úincs     r*   r#   Ú"MesonTemplate.include_substitutionm   sT   € Ø+.¨t¯{©{¨mÐ)<×)AÑ)AØ59×5FÒ5FÓGÒ5F¨c—‘ˆ}˜C ˜u DÓ)Ñ5FÑGó*
ˆ×Ñ˜:Ò&ùÚGrH   c                 óÈ   • U R                   (       aB  U R                   SSR                  [        U R                   5      5       S3U R                  S'   g SU R                  S'   g )Nzfortran_args: [z, z],r   Ú )r   r'   rA   Úlistr   r4   s    r*   r%   Ú'MesonTemplate.fortran_args_substitutionr   sW   € Ø××à—;‘;�-˜¨t¯y©y¼¸d×>OÑ>OÓ9PÓ/QÐ.RÐRTÐUð ×Ñ˜~Ò.ð 24ˆD×Ñ˜~Ò.r7   c                 óÆ   • U R                    H
  nU" 5         M     [        U R                  5       5      nUR                  U R                  5      nUR                  SS5      nU$ )Nz,,rP   )r&   r   r5   Ú
substituter   rT   )r(   ÚnodeÚtemplateÚmeson_builds       r*   Úgenerate_meson_buildÚ"MesonTemplate.generate_meson_buildz   sV   € Ø—M”MˆDÙŽFñ "ä˜D×5Ñ5Ó7Ó8ˆØ×)Ñ)¨$×*<Ñ*<Ó=ˆØ!×)Ñ)¨$°Ó4ˆØÐr7   )r   r   r   r   r   r'   r   r   r   r   r&   r   r   r   ©r-   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ústrra   r   r+   r5   r    r!   r"   r$   r#   r%   rh   Ú__static_attributes__© r7   r*   r	   r	      sÆ   † Ù5ð+àð+ð �d‘ð+ð �3‰ið	+ð
 ˜‘9ð+ð ˜4‘jð+ð ˜4‘jð+ð ˜4‘jð+ð ˜#‘Yð+ð ˜3‘ið+ð ð+ð ô+ðZ4 cô 4ô7ô

ô

ô

ô,
ô
4õr7   r	   c                   óf   ^ • \ rS rSrU 4S jrS\4S jrS\SS4S jrS rS\4S	 jr	SS
 jr
SrU =r$ )ÚMesonBackendéƒ   c                 óþ   >• [         TU ]  " U0 UD6  U R                  R                  S/ 5      U l        SU l        [        S U R                   5       5      (       a  SOSU l        [        U R                  5      U l        g )NÚdependenciesÚbbdirc              3   ó,   #   • U  H
  nS U;   v •  M     g7f)ÚdebugNrr   )Ú.0Úflags     r*   Ú	<genexpr>Ú(MesonBackend.__init__.<locals>.<genexpr>‰   s   é € ÐE²}¨t˜7 dž?²}ùs   ‚rz   Úrelease)
Úsuperr+   Ú	extra_datÚgetrw   Úmeson_build_dirÚanyÚfc_flagsr   Ú
_get_flags)r(   ÚargsÚkwargsÚ	__class__s      €r*   r+   ÚMesonBackend.__init__„   sh   ø€ Ü‰Ò˜$Ð) &Ò)Ø ŸN™N×.Ñ.¨~¸rÓBˆÔØ&ˆÔäÑE°t·}²}ÓE×EÑE‰GÈ9ð 	Œô # 4§=¡=Ó1ˆ�r7   Ú	build_dirc                 óî  • [        U5      U R                  -  n[        UR                  U R                   S35      UR                  U R                   S35      UR                  U R                   S35      5      nU Hv  n[         R
                  " 5       UR                  -  nUR                  5       (       a  UR                  5         [        R                  " XE5        [        R                  " U5        Mx     g )Nz*.soz*.pydz*.dll)r   rƒ   r   Úglobr   ÚcwdÚnameÚexistsÚunlinkÚshutilÚcopy2ÚosÚremove)r(   r‹   Úwalk_dirÚpath_objectsÚpath_objectÚ	dest_paths         r*   Ú_move_exec_to_rootÚMesonBackend._move_exec_to_root�   s½   € Ü˜	“? T×%9Ñ%9Ñ9ˆÜØ�M‰M˜TŸ_™_Ð-¨TÐ2Ó3Ø�M‰M˜TŸ_™_Ð-¨UÐ3Ó4Ø�M‰M˜TŸ_™_Ð-¨UÐ3Ó4ó
ˆó (ˆKÜŸš›
 [×%5Ñ%5Ñ5ˆIØ×Ñ×!Ñ!Ø× Ñ Ô"Ü�LŠL˜Ô0Ü�IŠI�kÖ"ò (r7   r-   Nc                 ó¤  • [        U R                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  [        R                  5      nUR                  5       n[        U5      R                  SSS9  [        U5      S-  nUR!                  U5        U$ )z1Writes the meson build file at specified locationT©ÚparentsÚexist_okzmeson.build)r	   r   r   rw   r   r   r   Úextra_objectsÚ
flib_flagsr…   r   ÚsysÚ
executablerh   r   ÚmkdirÚ
write_text)r(   r‹   Úmeson_templateÚsrcÚmeson_build_files        r*   Úwrite_meson_buildÚMesonBackend.write_meson_build�   s«   € ä&Ø�O‰OØ�L‰LØ×ÑØ�N‰NØ×ÑØ×ÑØ×ÑØ�O‰OØ�M‰MØ�O‰OÜ�N‰Nó
ˆð ×1Ñ1Ó3ˆÜˆY‹×Ñ d°TÐÑ:Ü 	›?¨]Ñ:ÐØ×#Ñ# CÔ(ØÐr7   c                 ó.   • [         R                  " XSS9  g )NT)rŽ   Úcheck)Ú
subprocessÚrun)r(   ÚcommandrŽ   s      r*   Ú_run_subprocess_commandÚ$MesonBackend._run_subprocess_command²   s   € Ü�Š�w¨tÓ4r7   c                 ó†   • SSU R                   /nU R                  X!5        SSSU R                   /nU R                  X15        g )NÚmesonÚsetupÚcompilez-C)rƒ   r°   )r(   r‹   Úsetup_commandÚcompile_commands       r*   Ú	run_mesonÚMesonBackend.run_mesonµ   sD   € Ø  '¨4×+?Ñ+?Ð@ˆØ×$Ñ$ ]Ô>Ø" I¨t°T×5IÑ5IÐJˆØ×$Ñ$ _Õ@r7   c                 ó  • [        U R                  U R                  U R                  5      U l        U R	                  U R                  5        U R                  U R                  5        U R                  U R                  5        g )N)Ú_prepare_sourcesr   r   r‹   r©   r¸   rš   r4   s    r*   rµ   ÚMesonBackend.compile»   sR   € Ü'¨¯©¸¿¹ÀtÇ~Á~ÓVˆŒØ×Ñ˜tŸ~™~Ô.Ø�‰�t—~‘~Ô&Ø×Ñ §¡Õ/r7   )r   rw   r…   rƒ   r   rj   )rk   rl   rm   rn   r+   r   rš   r©   r°   r¸   rµ   rq   Ú__classcell__)r‰   s   @r*   rt   rt   ƒ   sD   ø† õ2ð#¨Dô #ð  ¨4ð  °Dô  ò*5ðA 4ô A÷0ò 0r7   rt   c                 óä  • UR                  5       n[        U5      R                  SSS9  U HY  n[        U5      R                  5       (       d  M#  [        U5      R	                  5       (       d  MC  [
        R                   " XB5        M[     [        U  S35      [        U  S35      [        U  S35      /n[        U5      nU Hh  nUR                  5       (       d  M  [
        R                   " XbUR                  -  5        UR                  UR                  5        UR                  5         Mj     U Vs/ s H3  n[        U5      R                  S:X  a  M  [        U5      R                  PM5     nnU$ s  snf )NTr�   zmodule.cz-f2pywrappers2.f90z-f2pywrappers.fz.pyf)
Úcopyr   r¤   r�   r/   r’   r�   Úappendr‘   Úsuffix)Úmnamer   ÚbdirÚextended_sourcesrB   Úgenerated_sourcesÚgenerated_sources          r*   r»   r»   Â   sD  € Ø—|‘|“~ÐÜˆƒJ×Ñ˜T¨DÐÑ1ãˆÜ�‹<×Ñ× Ó ¤T¨&£\×%9Ñ%9×%;Ó%;Ü�KŠK˜Ö%ñ ô 	�ˆw�hÐÓ Ü�ˆwÐ(Ð)Ó*Ü�ˆw�oÐ&Ó'ðÐô
 �‹:€DÛ-ÐØ×"Ñ"×$Ó$Ü�KŠKÐ(Ð1A×1FÑ1FÑ*FÔGØ×#Ñ#Ð$4×$9Ñ$9Ô:Ø×#Ñ#Ö%ñ	 .ñ 'óâ&ˆFÜ�F‹|×"Ñ" fÑ,ó 	ŒˆV‹×ÔÙ&ð ð ð
 Ðùòs   Ä/E-ÅE-c                 ó~  • / n[         R                  " S5      nU  H{  nUR                  U5      nU(       d  M  UR                  S5      R	                  5       R                  5       nU Vs/ s H  ofR	                  S5      PM     nnUR                  U5        M}     [        [        R                  U5      5      nU$ s  snf )Nz--f(77|90)flags=(.*)é   z'")
Úrerµ   ÚmatchÚgroupÚstripÚsplitÚextendra   ÚdictÚfromkeys)r…   Úflag_valuesÚflag_patternr|   Úmatch_resultÚvaluesÚvalÚunique_flagss           r*   r†   r†   Ü   s    € Ø€KÜ—:’:Ð5Ó6€LÛˆØ#×)Ñ)¨$Ó/ˆßˆ<Ø!×'Ñ'¨Ó*×0Ñ0Ó2×8Ñ8Ó:ˆFÙ28Ó9²&¨3—i‘i Ö&±&ˆFÐ9Ø×Ñ˜vÖ&ñ ô œŸ™ kÓ2Ó3€LØÐùò	 :s   Á)B:)r1   r”   rÉ   r’   r­   r¢   Ú	itertoolsr   Úpathlibr   Ústringr   Ú_backendr   r	   rt   r»   r†   rr   r7   r*   Ú<module>rÛ      sG   ðÛ Û 	Û 	Û Û Û 
Ý Ý Ý å ÷rñ rôj<0�7ô <0ò~ó4r7   