Ë
    ¡eh™  ã                  ó¦   — 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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)é    )ÚannotationsN)ÚPathé   )ÚBackend)ÚTemplate)Úchainc                  ó‚   — 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d	„Zd
„ Zy)ÚMesonTemplatez+Template meson build file generation class.c                ó&  — || _         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                     )Ú
modulenamer   Ú__file__ÚparentÚabsoluteÚbuild_template_pathÚsourcesÚdepsÚ	librariesÚlibrary_dirsÚinclude_dirsÚsubstitutionsÚobjectsÚ
startswithÚendswithÚfortran_argsÚinitialize_templateÚsources_substitutionÚdeps_substitutionÚinclude_substitutionÚlibraries_substitutionÚfortran_args_substitutionÚpipelineÚ
build_typeÚ
python_exeÚindent)Úselfr   r   r   r   r   r   Úobject_filesÚlinker_argsr   r#   r$   Úxs                úY/var/www/skyplay_api_hub/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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_templateA   sa   € Ø×'Ñ'×/Ñ/Ô1Ü#Ü—‘ðØ×,Ñ,×5Ñ5Ó7Ð8Ø"ð#óð ð ×'Ñ'×1Ñ1Ó3Ð3ó    c                óš   — | j                   | j                  d<   | j                  | j                  d<   | j                  | j                  d<   y )Nr   Ú	buildtypeÚpython)r   r   r#   r$   r2   s    r*   r   z!MesonTemplate.initialize_templateK   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_substitutionP   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_substitutionU   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_substitutionZ   sh  € Ø59·Y±Yô #,¨D×,=Ñ,=Ó">÷á�A�wð ˜1˜#ÐEÀgÀYÈeÒTóó6
ˆ×ÑÐ1Ñ2ð 26·±ð  Ÿ>™>öàð —;‘;˜s 3Ó'Ð(Ð(NÈsÈeÐSVÒWòó2
ˆ×ÑÐ-Ñ.ð ,.¨d¯k©k¨]Ð);×)@Ñ)@Ø@DÇÁÖO¸�—‘ˆ}˜SŸ[™[¨¨SÓ1Ð2°!Ò4ÒOó*
ˆ×Ñ˜:Ñ&ð 02°$·+±+°Ð-?×-DÑ-DÜ38¼¸T×=NÑ=NÓ9OÓ3PÖQ¨a�—‘ˆ}˜H Q C qÒ)ÒQó.
ˆ×Ñ˜>Ò*ùó!ùòùò Pùò 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_substitutionp   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_substitutionu   sW   € Ø×Òà—;‘;�-˜¨t¯y©y¼¸d×>OÑ>OÓ9PÓ/QÐ.RÐRTÐUð ×Ñ˜~Ò.ð 24ˆD×Ñ˜~Ò.r4   c                óÌ   — | j                   D ]	  } |«        Œ t        | j                  «       «      }|j                  | j                  «      }t        j                  dd|«      }|S )Nz,,rJ   )r"   r   r3   Ú
substituter   ÚreÚsub)r&   ÚnodeÚtemplateÚmeson_builds       r*   Úgenerate_meson_buildz"MesonTemplate.generate_meson_build}   s[   € Ø—M‘Mò 	ˆDÙ�Fð	ä˜D×5Ñ5Ó7Ó8ˆØ×)Ñ)¨$×*<Ñ*<Ó=ˆÜ—f‘f˜U C¨Ó5ˆØÐr4   N)r   Ústrr   ú
list[Path]r   ú	list[str]r   rd   r   rc   r   rc   r'   rc   r(   rd   r   rd   r#   rb   r$   rb   )Úreturnrb   ©re   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   r3   r   r   r   r    r   r!   ra   © r4   r*   r
   r
      sŸ   „ Ù5ð+àð+ð ð+ð ð	+ð
 ð+ð !ð+ð !ð+ð !ð+ð ð+ð  ð+ð ð+ð ó+óZ4ó7ó

ó

ó

ó,
ó
4ór4   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nd| _        t        | j                  «      | _        y )NÚdependenciesÚbbdirc              3  ó$   K  — | ]  }d |v –— Œ
 y­w)ÚdebugNrl   )Ú.0Úflags     r*   ú	<genexpr>z(MesonBackend.__init__.<locals>.<genexpr>Œ   s   è ø€ ÒE¨t˜7 dœ?ÑEùs   ‚rs   Úrelease)
Úsuperr+   Ú	extra_datÚgetrp   Ú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   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   r{   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Õ"ñ	#r4   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   rp   r   r   r   Úextra_objectsÚ
flib_flagsr}   r#   ÚsysÚ
executablera   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)r{   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Œ   r   )rŒ   r   re   rg   rf   )
rh   ri   rj   r+   r‘   rŸ   r¥   r¬   r©   Ú__classcell__)r�   s   @r*   rn   rn   †   s"   ø„ ô2ó#ó ò*5óA÷0r4   rn   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'")
r\   r©   ÚmatchÚgroupÚstripÚsplitÚextendrY   ÚdictÚfromkeys)r}   Úflag_valuesÚflag_patternru   Úmatch_resultÚvaluesÚvalÚunique_flagss           r*   r~   r~   Þ   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/)Ú
__future__r   rŠ   r/   rˆ   r¢   r˜   r\   Úpathlibr   Ú_backendr   Ústringr   Ú	itertoolsr   r
   rn   r®   r~   rl   r4   r*   ú<module>rÍ      sJ   ðÝ "ã 	Û Û Û Û 
Û 	Ý å Ý Ý ÷rñ rôj;0�7ô ;0ò|ó4r4   