Ë
    ›2Úi  ã                  ó„   — d dl m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Z G d„ d«      Z G d	„ d
e«      Zd„ Zy)é    )ÚannotationsN)ÚPathé   )ÚBackend)ÚTemplatec                  óZ   — e Zd Z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.c                ó  — || _         t        t        «      j                  j	                  «       dz  | _        || _        || _        i | _        || _	        | j                  | j                  | j                  g| _        || _        y )Nzmeson.build.template)Ú
modulenamer   Ú__file__ÚparentÚabsoluteÚbuild_template_pathÚsourcesÚdepsÚsubstitutionsÚobjectsÚinitialize_templateÚsources_substitutionÚdeps_substitutionÚpipelineÚ
build_type)Úselfr   r   r   Úobject_filesÚlinker_argsÚc_argsr   s           úR/var/www/html/acx/venv/lib/python3.12/site-packages/numpy/f2py/_backends/_meson.pyÚ__init__zMesonTemplate.__init__   s{   € ð %ˆŒä”‹N×!Ñ!×*Ñ*Ó,Ð/EÑEð 	Ô ð ˆŒØˆŒ	ØˆÔØ#ˆŒà×$Ñ$Ø×%Ñ%Ø×"Ñ"ð
ˆŒð
 %ˆ�ó    c                óÖ   — | 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Ð3r   c                óh   — | j                   | j                  d<   | j                  | j                  d<   y )Nr   Ú	buildtype)r   r   r   r&   s    r   r   z!MesonTemplate.initialize_template4   s*   € Ø+/¯?©?ˆ×Ñ˜<Ñ(Ø*.¯/©/ˆ×Ñ˜;Ò'r   c                óŒ   — d}d|› �j                  | j                  D �cg c]  }d|› d�‘Œ
 c}«      | j                  d<   y c c}w )Nú                     ú,
ú'Úsource_list)Újoinr   r   )r   ÚindentÚsources      r   r   z"MesonTemplate.sources_substitution8   sE   € ØˆØ.1°&°¨N×,?Ñ,?Ø)-¯©Ö6˜vˆq��˜Š]Ò6ó-
ˆ×Ñ˜=Ò)ùÚ6ó   ŸAc                óŒ   — d}d|› �j                  | j                  D �cg c]  }d|› d�‘Œ
 c}«      | j                  d<   y c c}w )Nr+   r,   zdependency('z')Údep_list)r/   r   r   )r   r0   Údeps      r   r   zMesonTemplate.deps_substitution>   sF   € ØˆØ+.¨v¨h¨×)<Ñ)<Ø/3¯y©yÖ9¨ˆ|˜C˜5 Ò#Ò9ó*
ˆ×Ñ˜:Ò&ùÚ9r2   c                óš   — | j                   D ]	  } |«        Œ t        | j                  «       «      }|j                  | j                  «      S ©N)r   r   r'   Ú
substituter   )r   ÚnodeÚtemplates      r   Úgenerate_meson_buildz"MesonTemplate.generate_meson_buildD   sD   € Ø—M‘Mò 	ˆDÙ�Fð	ä˜D×5Ñ5Ó7Ó8ˆØ×"Ñ" 4×#5Ñ#5Ó6Ð6r   N)r   Ústrr   ú
list[Path]r   ú	list[str]r   r=   r   r>   r   r>   r   r<   )Úreturnr<   ©r?   ÚNone)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r'   r   r   r   r;   © r   r   r	   r	      sg   „ Ù5ð%àð%ð ð%ð ð	%ð
 !ð%ð ð%ð ð%ð ó%ó24ó:ó
ó
ó7r   r	   c                  óD   ‡ — e Zd Zˆ fd„Zdd„Zd„ Zdd„Zdd„Zd	d„Zˆ xZ	S )
ÚMesonBackendc                óÊ   •— t        ‰| �  |i |¤Ž | j                  j                  dg «      | _        d| _        t        d„ | j                  D «       «      rd| _        y d| _        y )NÚdependenciesÚbbdirc              3  ó$   K  — | ]  }d |v –— Œ
 y­w)ÚdebugNrF   )Ú.0Úflags     r   ú	<genexpr>z(MesonBackend.__init__.<locals>.<genexpr>Q   s   è ø€ ÒE¨t˜7 dœ?ÑEùs   ‚rM   Úrelease)	Úsuperr   Ú	extra_datÚgetrJ   Úmeson_build_dirÚanyÚfc_flagsr   )r   ÚargsÚkwargsÚ	__class__s      €r   r   zMesonBackend.__init__L   s[   ø€ Ü‰Ñ˜$Ð) &Ò)Ø ŸN™N×.Ñ.¨~¸rÓBˆÔØ&ˆÔäÑE°t·}±}ÔEÔEˆGð 	�ØKTð 	�r   c                óÎ   — t        |«      | j                  z  }|j                  | j                  › d�«      }|D ]*  }t	        j
                  |t        j                  «       «       Œ, y )Nz*.so)r   rU   Úglobr   ÚshutilÚmoveÚcwd)r   Ú	build_dirÚwalk_dirÚpath_objectsÚpath_objects        r   Ú_move_exec_to_rootzMesonBackend._move_exec_to_rootT   sS   € Ü˜	“? T×%9Ñ%9Ñ9ˆØ—}‘}¨¯©Ð'8¸Ð%=Ó>ˆØ'ò 	1ˆKÜ�K‰K˜¤T§X¡X£ZÕ0ñ	1r   c                ó    — dd| j                   gS )NÚmesonÚsetup)rU   r&   s    r   Ú_get_build_commandzMesonBackend._get_build_commandZ   s   € àØØ× Ñ ð
ð 	
r   c           	     óJ  — t        | j                  | j                  | j                  | j                  | j
                  | j                  | 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   Úextra_objectsÚ
flib_flagsrW   r   r;   r   ÚmkdirÚ
write_text)r   r`   Úmeson_templateÚsrcÚmeson_build_files        r   Úwrite_meson_buildzMesonBackend.write_meson_builda   s‹   € ä&Ø�O‰OØ�L‰LØ×ÑØ×ÑØ�O‰OØ�M‰MØ�O‰Oó
ˆð ×1Ñ1Ó3ˆÜˆY‹×Ñ d°TÐÔ:Ü 	›?¨]Ñ:ÐØ×#Ñ# CÔ(ØÐr   c                ó|  — t        j                  | j                  «       |¬«      }|j                  dk7  r*t        j                  |j                  |j
                  «      ‚t        j                  ddd| j                  g|¬«      }|j                  dk7  r*t        j                  |j                  |j
                  «      ‚y )N)r_   r   rf   Úcompilez-C)Ú
subprocessÚrunrh   Ú
returncodeÚCalledProcessErrorrX   rU   )r   r`   Úcompleted_processs      r   Ú	run_mesonzMesonBackend.run_mesonr   s®   € Ü&ŸN™N¨4×+BÑ+BÓ+DÈ)ÔTÐØ×'Ñ'¨1Ò,Ü×/Ñ/Ø!×,Ñ,Ð.?×.DÑ.Dóð ô 'ŸN™NØ�i  t×';Ñ';Ð<À)ô
Ðð ×'Ñ'¨1Ò,Ü×/Ñ/Ø!×,Ñ,Ð.?×.DÑ.Dóð ð -r   c                ó  — t        | j                  | j                  | j                  «      | _        | j	                  | j                  «       | j                  | j                  «       | j                  | j                  «       y r7   )Ú_prepare_sourcesr   r   r`   rt   r|   rd   r&   s    r   rv   zMesonBackend.compile€   sR   € Ü'¨¯©¸¿¹ÀtÇ~Á~ÓVˆŒØ×Ñ˜tŸ~™~Ô.Ø�‰�t—~‘~Ô&Ø×Ñ §¡Õ/r   )r`   r   )r`   r   r?   rA   r@   )
rB   rC   rD   r   rd   rh   rt   r|   rv   Ú__classcell__)rZ   s   @r   rH   rH   K   s!   ø„ ô
ó1ò
ó ó"÷0r   rH   c                óJ  — |j                  «       }t        |«      j                  dd¬«       |D ]  }t        j                   ||«       Œ 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 )NTrj   zmodule.cz-f2pywrappers2.f90z-f2pywrappers.fz.pyf)	Úcopyr   ro   r]   ÚexistsÚnameÚappendÚunlinkÚsuffix)Úmnamer   ÚbdirÚextended_sourcesr1   Úgenerated_sourcesÚgenerated_sources          r   r~   r~   ‡   s&  € Ø—|‘|“~ÐÜˆƒJ×Ñ˜T¨DÐÔ1àò "ˆÜ�‰�F˜DÕ!ð"ô 	�ˆw�hÐÓ Ü�ˆwÐ(Ð)Ó*Ü�ˆw�oÐ&Ó'ðÐô
 �‹:€DØ-ò &ÐØ×"Ñ"Õ$Ü�K‰KÐ(¨$Ð1A×1FÑ1FÑ*FÔGØ×#Ñ#Ð$4×$9Ñ$9Ô:Ø×#Ñ#Õ%ð	&ð 'öàÜ�F‹|×"Ñ" fÒ,ô 	ˆV‹×ÓðÐð ð
 Ðùòs   Ã(4D )Ú
__future__r   r#   r]   rw   Úpathlibr   Ú_backendr   Ústringr   Úwarningsr	   rH   r~   rF   r   r   ú<module>r‘      s:   ðÝ "ã Û Û Ý å Ý ã ÷:7ñ :7ôz90�7ô 90óxr   