Ë
    HU h«  ã                   óš   — d dl Z d dlZ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  G d„ d«      Z G d	„ d
e«      Zd„ Zd„ Zy)é    N)Úchain)ÚPath)ÚTemplateé   )ÚBackendc                   ó¶   — e Zd ZdZdedee   dee   dee   dee   dee   dee   d	ee   d
ee   dedefd„Zdefd„Zdd„Z	dd„Z
dd„Zdd„Zdd„Zdd„Zd„ Zy)ÚMesonTemplatez+Template meson build file generation class.Ú
modulenameÚsourcesÚdepsÚ	librariesÚlibrary_dirsÚinclude_dirsÚobject_filesÚlinker_argsÚfortran_argsÚ
build_typeÚ
python_exec                 ó&  — || _         t        t        «      j                  j	                  «       dz  | _        || _        || _        || _        || _	        |�|| _
        ng | _
        i | _        || _        |	D �cg c],  }|j                  d«      r|j                  d«      sd|› d�n|‘Œ. c}| _        | j                   | j"                  | j$                  | j&                  | j(                  | j*                  g| _        |
| _        || _        d| _        y c c}w )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                úS/var/www/timesheet/venv/lib/python3.12/site-packages/numpy/f2py/_backends/_meson.pyÚ__init__zMesonTemplate.__init__   s  € ð %ˆŒä”‹N×!Ñ!×*Ñ*Ó,Ð/EÑEð 	Ô ð ˆŒØˆŒ	Ø"ˆŒØ(ˆÔØÐ#Ø ,ˆDÕà "ˆDÔØˆÔØ#ˆŒð "ö
àð Ÿ\™\¨#Ô.°1·:±:¸c´?ˆa�ˆs�!‰HÈÑJò
ˆÔð
 ×$Ñ$Ø×%Ñ%Ø×"Ñ"Ø×%Ñ%Ø×'Ñ'Ø×*Ñ*ð
ˆŒð %ˆŒØ$ˆŒØˆ�ùò
s   Á61DÚreturnc                 óÖ   — | j                   j                  «       s6t        t        j                  d| j                   j                  «       › d�«      ‚| j                   j                  «       S )NzMeson build template z does not exist.)r   Úis_fileÚFileNotFoundErrorÚerrnoÚENOENTr   Ú	read_text©r'   s    r)   Úmeson_build_templatez"MesonTemplate.meson_build_template>   sa   € Ø×'Ñ'×/Ñ/Ô1Ü#Ü—‘ðØ×,Ñ,×5Ñ5Ó7Ð8Ø"ð#óð ð ×'Ñ'×1Ñ1Ó3Ð3ó    Nc                 óš   — | j                   | j                  d<   | j                  | j                  d<   | j                  | j                  d<   y )Nr
   Ú	buildtypeÚpython)r
   r   r   r   r2   s    r)   r   z!MesonTemplate.initialize_templateH   s>   € Ø+/¯?©?ˆ×Ñ˜<Ñ(Ø*.¯/©/ˆ×Ñ˜;Ñ'Ø'+§¡ˆ×Ñ˜8Ò$r4   c           	      óš   — dj                  | j                  D �cg c]  }| j                  › d|› d�‘Œ c}«      | j                  d<   y c c}w )Nú,
ú'''ú''',Úsource_list)Újoinr   r&   r   )r'   Úsources     r)   r    z"MesonTemplate.sources_substitutionM   sA   € Ø,1¯J©JØ;?¿<¹<ÖH°�—‘ˆ}˜C ˜x tÒ,ÒHó-
ˆ×Ñ˜=Ò)ùÚHs   šAc           	      ó´   — d| j                   › �j                  | j                  D �cg c]  }| j                   › d|› d�‘Œ c}«      | j                  d<   y c c}w )Nr9   zdependency('z'),Údep_list)r&   r=   r   r   )r'   Údeps     r)   r!   zMesonTemplate.deps_substitutionR   sN   € Ø+.¨t¯{©{¨mÐ)<×)AÑ)AØ=A¿Y¹YÖG°c�—‘ˆ}˜L¨¨¨SÒ1ÒGó*
ˆ×Ñ˜:Ò&ùÚGó   §Ac                 óê  — dj                  t        | j                  «      D ��cg c]  \  }}d|› d|› d�‘Œ c}}«      | j                  d<   dj                  | j                  D �cg c]  }|j                  dd«      › d|› d	�‘Œ c}«      | j                  d
<   d| j                  › �j                  | j                  D �cg c]#  }| j                  › |j                  dd«      › d�‘Œ% c}«      | j                  d<   d| j                  › �j                  t        t        | j                  «      «      D �cg c]  }| j                  › d|› d�‘Œ c}«      | j                  d<   y c c}}w c c}w c c}w c c}w )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)	r=   Ú	enumerater   r   r   Úreplacer&   ÚrangeÚlen)r'   ÚiÚlib_dirÚlibs       r)   r#   z$MesonTemplate.libraries_substitutionW   si  € Ø59·Y±Yô #,¨D×,=Ñ,=Ó">÷á�A�wð ˜1˜#ÐEÀgÀYÈeÒTóó6
ˆ×ÑÐ1Ñ2ð 26·±ð  Ÿ>™>öàð —;‘;˜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¨a�—‘ˆ}˜H Q C qÒ)ÒQó.
ˆ×Ñ˜>Ò*ùó!ùòùò Qùò Rs   ¤E 
Á%E&Â>(E+Ä2E0c           	      ó´   — d| j                   › �j                  | j                  D �cg c]  }| j                   › d|› d�‘Œ c}«      | j                  d<   y c c}w )Nr9   r:   r;   Úinc_list)r&   r=   r   r   )r'   Úincs     r)   r"   z"MesonTemplate.include_substitutionm   sP   € Ø+.¨t¯{©{¨mÐ)<×)AÑ)AØ59×5FÑ5FÖG¨c�—‘ˆ}˜C ˜u DÒ)ÒGó*
ˆ×Ñ˜:Ò&ùÚGrB   c                 ó¾   — | j                   rB| j                  › ddj                  t        | j                   «      «      › d�| j                  d<   y d| j                  d<   y )Nzfortran_args: [z, z],r   Ú )r   r&   r=   Úlistr   r2   s    r)   r$   z'MesonTemplate.fortran_args_substitutionr   sW   € Ø×Òà—;‘;�-˜¨t¯y©y¼¸d×>OÑ>OÓ9PÓ/QÐ.RÐRTÐUð ×Ñ˜~Ò.ð 24ˆD×Ñ˜~Ò.r4   c                 óÂ   — | j                   D ]	  } |«        Œ t        | j                  «       «      }|j                  | j                  «      }|j                  dd«      }|S )Nz,,rJ   )r%   r   r3   Ú
substituter   rN   )r'   ÚnodeÚtemplateÚmeson_builds       r)   Úgenerate_meson_buildz"MesonTemplate.generate_meson_buildz   s[   € Ø—M‘Mò 	ˆDÙ�Fð	ä˜D×5Ñ5Ó7Ó8ˆØ×)Ñ)¨$×*<Ñ*<Ó=ˆØ!×)Ñ)¨$°Ó4ˆØÐr4   ©r+   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrrY   r   r*   r3   r   r    r!   r#   r"   r$   r_   © r4   r)   r	   r	      sÆ   „ Ù5ð+àð+ð �d‘ð+ð �3‰ið	+ð
 ˜‘9ð+ð ˜4‘jð+ð ˜4‘jð+ð ˜4‘jð+ð ˜#‘Yð+ð ˜3‘ið+ð ð+ð ó+ðZ4 có 4ó7ó

ó

ó

ó,
ó
4ór4   r	   c                   óT   ‡ — e Zd Zˆ fd„Zdefd„Zdeddfd„Zd„ Zdefd„Zd
d	„Z	ˆ xZ
S )ÚMesonBackendc                 óò   •— t        ‰| �  |i |¤Ž | j                  j                  dg «      | _        d| _        t        d„ | j                  D «       «      rdnd| _        t        | j                  «      | _        y )NÚdependenciesÚbbdirc              3   ó$   K  — | ]  }d |v –— Œ
 y­w)ÚdebugNrf   )Ú.0Úflags     r)   ú	<genexpr>z(MesonBackend.__init__.<locals>.<genexpr>‰   s   è ø€ ÒE¨t˜7 dœ?ÑEùs   ‚rm   Úrelease)
Úsuperr*   Ú	extra_datÚgetrj   Úmeson_build_dirÚanyÚfc_flagsr   Ú
_get_flags)r'   ÚargsÚkwargsÚ	__class__s      €r)   r*   zMesonBackend.__init__„   se   ø€ Ü‰Ñ˜$Ð) &Ò)Ø ŸN™N×.Ñ.¨~¸rÓBˆÔØ&ˆÔäÑE°t·}±}ÔEÔE‰GÈ9ð 	Œô # 4§=¡=Ó1ˆ�r4   Ú	build_dirc                 óÜ  — t        |«      | j                  z  }t        |j                  | j                  › d�«      |j                  | j                  › d�«      |j                  | j                  › d�«      «      }|D ]n  }t        j
                  «       |j                  z  }|j                  «       r|j                  «        t        j                  ||«       t        j                  |«       Œp y )Nz*.soz*.pydz*.dll)r   ru   r   Úglobr
   ÚcwdÚnameÚexistsÚunlinkÚshutilÚcopy2ÚosÚremove)r'   r|   Úwalk_dirÚpath_objectsÚpath_objectÚ	dest_paths         r)   Ú_move_exec_to_rootz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˜ iÔ0Ü�I‰I�kÕ"ñ	#r4   r+   Nc                 óª  — t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  t        j                  «      }|j                  «       }t        |«      j                  dd¬«       t        |«      dz  }|j!                  |«       |S )z1Writes the meson build file at specified locationT©ÚparentsÚexist_okzmeson.build)r	   r
   r   rj   r   r   r   Úextra_objectsÚ
flib_flagsrw   r   ÚsysÚ
executabler_   r   ÚmkdirÚ
write_text)r'   r|   Úmeson_templateÚsrcÚmeson_build_files        r)   Úwrite_meson_buildz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Ô(ØÐr4   c                 ó4   — t        j                  ||d¬«       y )NT)r   Úcheck)Ú
subprocessÚrun)r'   Úcommandr   s      r)   Ú_run_subprocess_commandz$MesonBackend._run_subprocess_command²   s   € Ü�‰�w C¨tÖ4r4   c                 óŠ   — dd| j                   g}| j                  ||«       ddd| j                   g}| j                  ||«       y )NÚmesonÚsetupÚcompilez-C)ru   rŸ   )r'   r|   Úsetup_commandÚcompile_commands       r)   Ú	run_mesonzMesonBackend.run_mesonµ   sH   € Ø  '¨4×+?Ñ+?Ð@ˆØ×$Ñ$ ]°IÔ>Ø" I¨t°T×5IÑ5IÐJˆØ×$Ñ$ _°iÕ@r4   c                 ó  — t        | j                  | j                  | j                  «      | _        | j	                  | j                  «       | j                  | j                  «       | j                  | j                  «       y )N)Ú_prepare_sourcesr
   r   r|   r™   r¦   r‹   r2   s    r)   r£   zMesonBackend.compile»   sR   € Ü'¨¯©¸¿¹ÀtÇ~Á~ÓVˆŒØ×Ñ˜tŸ~™~Ô.Ø�‰�t—~‘~Ô&Ø×Ñ §¡Õ/r4   r`   )ra   rb   rc   r*   r   r‹   r™   rŸ   r¦   r£   Ú__classcell__)r{   s   @r)   rh   rh   ƒ   s?   ø„ ô2ð#¨Dó #ð  ¨4ð  °Dó  ò*5ðA 4ó A÷0r4   rh   c                 ó²  — |j                  «       }t        |«      j                  dd¬«       |D ]L  }t        |«      j                  «       sŒt        |«      j	                  «       sŒ7t        j                   ||«       ŒN t        | › d�«      t        | › d�«      t        | › d�«      g}t        |«      }|D ]a  }|j                  «       sŒt        j                   |||j                  z  «       |j                  |j                  «       |j                  «        Œc |D �cg c]/  }t        |«      j                  dk(  st        |«      j                  ‘Œ1 }}|S c c}w )NTr�   zmodule.cz-f2pywrappers2.f90z-f2pywrappers.fz.pyf)
Úcopyr   r”   r�   r-   rƒ   r€   Úappendr‚   Úsuffix)Úmnamer   ÚbdirÚextended_sourcesr>   Úgenerated_sourcesÚgenerated_sources          r)   r¨   r¨   Â   sE  € Ø—|‘|“~ÐÜˆƒ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Ò,ô 	ˆV‹×ÓðÐð ð
 Ðùòs   Ä4Ec                 óh  — g }t        j                  d«      }| D ]r  }|j                  |«      }|sŒ|j                  d«      j	                  «       j                  «       }|D �cg c]  }|j	                  d«      ‘Œ }}|j                  |«       Œt t        t        j                  |«      «      }|S c c}w )Nz--f(77|90)flags=(.*)é   z'")
Úrer£   ÚmatchÚgroupÚstripÚsplitÚextendrY   ÚdictÚfromkeys)rw   Úflag_valuesÚflag_patternro   Úmatch_resultÚvaluesÚvalÚunique_flagss           r)   rx   rx   Ü   s¤   € Ø€KÜ—:‘:Ð5Ó6€LØò 'ˆØ#×)Ñ)¨$Ó/ˆÚØ!×'Ñ'¨Ó*×0Ñ0Ó2×8Ñ8Ó:ˆFØ28Ö9¨3�c—i‘i Õ&Ð9ˆFÐ9Ø×Ñ˜vÕ&ð'ô œŸ™ kÓ2Ó3€LØÐùò	 :s   Á"B/)r/   r…   rµ   rƒ   rœ   r’   Ú	itertoolsr   Úpathlibr   Ústringr   Ú_backendr   r	   rh   r¨   rx   rf   r4   r)   ú<module>rÇ      sG   ðÛ Û 	Û 	Û Û Û 
Ý Ý Ý å ÷rñ rôj<0�7ô <0ò~ó4r4   