Ë
    åÞËj  ã                  ó    — d dl m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 d dlZ G d„ d	«      Z G d
„ de
«      Zd„ Zy)é    )ÚannotationsN)ÚPathé   )ÚBackend)ÚTemplate)Úchainc                  óz   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d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.c                ó~  — || _         t        t        «      j                  j	                  «       dz  | _        || _        || _        || _        || _	        |�|| _
        ng | _
        i | _        || _        | j                  | j                  | j                  | j                   | j"                  g| _        |
| _        || _        y )Nzmeson.build.template)Ú
modulenamer   Ú__file__ÚparentÚabsoluteÚbuild_template_pathÚsourcesÚdepsÚ	librariesÚlibrary_dirsÚinclude_dirsÚsubstitutionsÚobjectsÚinitialize_templateÚsources_substitutionÚdeps_substitutionÚinclude_substitutionÚlibraries_substitutionÚpipelineÚ
build_typeÚ
python_exe)Úselfr   r   r   r   r   r   Úobject_filesÚlinker_argsÚc_argsr   r   s               úX/var/www/photos/backend/venv/lib/python3.12/site-packages/numpy/f2py/_backends/_meson.pyÚ__init__zMesonTemplate.__init__   s¹   € ð %ˆŒä”‹N×!Ñ!×*Ñ*Ó,Ð/EÑEð 	Ô ð ˆŒØˆŒ	Ø"ˆŒØ(ˆÔØÐ#Ø ,ˆDÕà "ˆDÔØˆÔØ#ˆŒà×$Ñ$Ø×%Ñ%Ø×"Ñ"Ø×%Ñ%Ø×'Ñ'ð
ˆŒð %ˆŒØ$ˆ�ó    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                óš   — | j                   | j                  d<   | j                  | j                  d<   | j                  | j                  d<   y )Nr   Ú	buildtypeÚpython)r   r   r   r   r-   s    r$   r   z!MesonTemplate.initialize_templateD   s>   € Ø+/¯?©?ˆ×Ñ˜<Ñ(Ø*.¯/©/ˆ×Ñ˜;Ñ'Ø'+§¡ˆ×Ñ˜8Ò$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_substitutionI   sJ   € ØˆØ.1°&°¨N×,?Ñ,?Ø15·±Ö> v�ˆx�q˜˜ Ò"Ò>ó-
ˆ×Ñ˜=Ò)ùÚ>ó   ŸAc           	     ó�   — d}d|› �j                  | j                  D �cg c]
  }|› d|› d�‘Œ c}«      | j                  d<   y c c}w )Nr3   r4   zdependency('z')Údep_list)r7   r   r   )r    r8   Údeps      r$   r   zMesonTemplate.deps_substitutionO   sJ   € ØˆØ+.¨v¨h¨×)<Ñ)<Ø7;·y±yÖA°�ˆx�| C 5¨Ò+ÒAó*
ˆ×Ñ˜:Ò&ùÚAr:   c                ó^  — dj                  t        | j                  «      D ��cg c]  \  }}d|› d|› d�‘Œ c}}«      | j                  d<   dj                  | j                  D �cg c]
  }|› d|› d�‘Œ c}«      | j                  d<   d}d|› �j                  | j                  D �cg c]	  }|› |› d	�‘Œ c}«      | j                  d
<   d|› �j                  t        t        | j                  «      «      D �cg c]
  }|› 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_declarationsz& = declare_dependency(link_args : ['-lÚlib_declarationsr3   ú,Úlib_listÚlib_dir_list)r7   Ú	enumerater   r   r   ÚrangeÚlen)r    ÚiÚlib_dirÚlibr8   s        r$   r   z$MesonTemplate.libraries_substitutionU   sA  € Ø59·Y±Yô #,¨D×,=Ñ,=Ó">÷á�A�wð ˜1˜#ÐCÀGÀ9ÈCÒPóó6
ˆ×ÑÐ1Ñ2ð 26·±ð  Ÿ>™>öàð �%Ð=¸c¸UÀ#ÒFòó2
ˆ×ÑÐ-Ñ.ð ˆØ+-¨f¨X¨×);Ñ);Ø*.¯.©.Ö9 3�ˆx˜�u˜AÒÒ9ó*
ˆ×Ñ˜:Ñ&ð 02°&°¨]×-?Ñ-?Ü.3´C¸×8IÑ8IÓ4JÓ.KÖL¨�ˆx�x ˜s !Ò$ÒLó.
ˆ×Ñ˜>Ò*ùó#ùòùò :ùò Ms   ¤D
Á%D Â&D%Ã6D*c           	     ó�   — d}d|› �j                  | j                  D �cg c]
  }|› d|› d�‘Œ c}«      | j                  d<   y c c}w )Nr3   r4   r5   Úinc_list)r7   r   r   )r    r8   Úincs      r$   r   z"MesonTemplate.include_substitutionl   sL   € ØˆØ+.¨v¨h¨×)<Ñ)<Ø+/×+<Ñ+<Ö= C�ˆx�q˜˜˜QÒÒ=ó*
ˆ×Ñ˜:Ò&ùÚ=r:   c                óš   — | j                   D ]	  } |«        Œ t        | j                  «       «      }|j                  | j                  «      S ©N)r   r   r.   Ú
substituter   )r    ÚnodeÚtemplates      r$   Úgenerate_meson_buildz"MesonTemplate.generate_meson_buildr   sD   € Ø—M‘Mò 	ˆDÙ�Fð	ä˜D×5Ñ5Ó7Ó8ˆØ×"Ñ" 4×#5Ñ#5Ó6Ð6r&   N)r   Ústrr   ú
list[Path]r   ú	list[str]r   rW   r   rV   r   rV   r!   rV   r"   rW   r#   rW   r   rU   r   rU   )ÚreturnrU   ©rX   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r.   r   r   r   r   r   rT   © r&   r$   r
   r
      sš   „ Ù5ð$%àð$%ð ð$%ð ð	$%ð
 ð$%ð !ð$%ð !ð$%ð !ð$%ð ð$%ð ð$%ð ð$%ð ó$%óL4ó7ó

ó
ó
ó.
ó7r&   r
   c                  óD   ‡ — e Zd Zˆ fd„Zdd„Zdd„Z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)ÚdebugNr_   )Ú.0Úflags     r$   ú	<genexpr>z(MesonBackend.__init__.<locals>.<genexpr>   s   è ø€ ÒE¨t˜7 dœ?ÑEùs   ‚rf   Úrelease)	Úsuperr%   Ú	extra_datÚgetrc   Úmeson_build_dirÚanyÚfc_flagsr   )r    ÚargsÚkwargsÚ	__class__s      €r$   r%   zMesonBackend.__init__z   s[   ø€ Ü‰Ñ˜$Ð) &Ò)Ø ŸN™N×.Ñ.¨~¸rÓBˆÔØ&ˆÔäÑE°t·}±}ÔEÔEˆGð 	�ØKTð 	�r&   c                ó¢  — t        |«      | j                  z  }t        |j                  | j                  › d�«      |j                  | j                  › d�«      «      }|D ]n  }t        j
                  «       |j                  z  }|j                  «       r|j                  «        t        j                  ||«       t        j                  |«       Œp y )Nz*.soz*.pyd)r   rn   r   Úglobr   ÚcwdÚnameÚexistsÚunlinkÚshutilÚcopy2ÚosÚremove)r    Ú	build_dirÚ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ó
ˆð (ò 	#ˆKÜŸ™›
 [×%5Ñ%5Ñ5ˆIØ×ÑÔ!Ø× Ñ Ô"Ü�L‰L˜ iÔ0Ü�I‰I�kÕ"ñ	#r&   c                óª  — 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   rc   r   r   r   Úextra_objectsÚ
flib_flagsrp   r   ÚsysÚ
executablerT   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Ô(ØÐr&   c                ó4   — t        j                  ||d¬«       y )NT)rv   Úcheck)Ú
subprocessÚrun)r    Úcommandrv   s      r$   Ú_run_subprocess_commandz$MesonBackend._run_subprocess_command¦   s   € Ü�‰�w C¨tÖ4r&   c                óŠ   — dd| j                   g}| j                  ||«       ddd| j                   g}| j                  ||«       y )NÚmesonÚsetupÚcompilez-C)rn   r—   )r    r~   Úsetup_commandÚcompile_commands       r$   Ú	run_mesonzMesonBackend.run_meson©   sH   € Ø  '¨4×+?Ñ+?Ð@ˆØ×$Ñ$ ]°IÔ>Ø" I¨t°T×5IÑ5IÐJˆØ×$Ñ$ _°iÕ@r&   c                ó  — t        | j                  | j                  | j                  «      | _        | j	                  | j                  «       | j                  | j                  «       | j                  | j                  «       y rP   )Ú_prepare_sourcesr   r   r~   r‘   rž   rƒ   r-   s    r$   r›   zMesonBackend.compile¯   sR   € Ü'¨¯©¸¿¹ÀtÇ~Á~ÓVˆŒØ×Ñ˜tŸ~™~Ô.Ø�‰�t—~‘~Ô&Ø×Ñ §¡Õ/r&   )r~   r   )r~   r   rX   rZ   rY   )
r[   r\   r]   r%   rƒ   r‘   r—   rž   r›   Ú__classcell__)rs   s   @r$   ra   ra   y   s"   ø„ ô
ó#ó ò*5óA÷0r&   ra   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Œ   rx   r(   rz   rw   Úappendry   Úsuffix)Úmnamer   ÚbdirÚextended_sourcesr9   Ú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)Ú
__future__r   r|   r*   rz   r”   rŠ   Úpathlibr   Ú_backendr   Ústringr   Ú	itertoolsr   Úwarningsr
   ra   r    r_   r&   r$   ú<module>r±      sE   ðÝ "ã 	Û Û Û Û 
Ý å Ý Ý ã ÷e7ñ e7ôP:0�7ô :0ózr&   