
    (ph                        S SK J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Kr " S S	5      r " S
 S\
5      rS rg)    )annotationsN)Path   )Backend)Template)chainc                      \ rS rSrS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S	 jrS
 rSrg)MesonTemplate   z+Template meson build file generation class.c                n   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 R                  U R                  U R                  U R                   U R"                  /U l        Xl        Xl        g )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               N/var/www/html/venv/lib/python3.13/site-packages/numpy/f2py/_backends/_meson.py__init__MesonTemplate.__init__   s     %N!!**,/EE 	  	"(# , "D#$$%%""%%''
 %$    c                    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3r(   c                    U R                   U R                  S'   U R                  U R                  S'   U R                  U R                  S'   g )Nr   	buildtypepython)r   r   r   r    r/   s    r%   r   !MesonTemplate.initialize_templateD   s>    +/??<(*.//;''+8$r(   c           	         SnSU 3R                  U R                   Vs/ s H
  o! SU S3PM     sn5      U R                  S'   g s  snf )N                     ,
'source_list)joinr   r   )r!   indentsources      r%   r   "MesonTemplate.sources_substitutionI   sL    .1&N,?,?15>vxq">-
=)>   Ac           	         SnSU 3R                  U R                   Vs/ s H
  o! SU S3PM     sn5      U R                  S'   g s  snf )Nr7   r8   zdependency('z')dep_list)r;   r   r   )r!   r<   deps      r%   r   MesonTemplate.deps_substitutionO   sL    +.vh)<)<7;yyAyx|C5+yA*
:&Ar?   c                p   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 SU S3PM     sn5      U R                  S'   SnSU 3R                  U R                   Vs/ s H	  o4 U S	3PM     sn5      U R                  S
'   SU 3R                  [        [        U R                  5      5       Vs/ s H
  o 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_declarationsz& = declare_dependency(link_args : ['-llib_declarationsr7   ,lib_listlib_dir_list)r;   	enumerater   r   r   rangelen)r!   ilib_dirlibr<   s        r%   r   $MesonTemplate.libraries_substitutionU   sO   59YY #,D,=,=">">JA 1#CG9CP">6
12 26  >>)C %=cU#F)2
-. +-fX););*...9.3xuA.9*
:& 02&]-?-?.3C8I8I4J.KL.Kxxs!$.KL.
>*# : Ms   D#
'D)+D.=D3c           	         SnSU 3R                  U R                   Vs/ s H
  o! SU S3PM     sn5      U R                  S'   g s  snf )Nr7   r8   r9   inc_list)r;   r   r   )r!   r<   incs      r%   r   "MesonTemplate.include_substitutionl   sP    +.vh)<)<+/+<+<=+<CxqQ+<=*
:&=r?   c                    U R                    H
  nU" 5         M     [        U R                  5       5      nUR                  U R                  5      $ N)r   r   r0   
substituter   )r!   nodetemplates      r%   generate_meson_build"MesonTemplate.generate_meson_buildr   s?    MMDF "D5578""4#5#566r(   )r   r   r   r   r   r   r   r   r   r    r   r   N)r   strr   
list[Path]r   	list[str]r   r`   r   r_   r   r_   r"   r_   r#   r`   r$   r`   r   r^   r    r^   )returnr^   ra   None)__name__
__module____qualname____firstlineno____doc__r&   r0   r   r   r   r   r   r\   __static_attributes__ r(   r%   r
   r
      s    5$%$% $% 	$%
 $% !$% !$% !$% $% $% $% $%L47



.
7r(   r
   c                  V   ^  \ rS rSrU 4S jrS	S jrS
S jrS rS	S jrSS jr	Sr
U =r$ )MesonBackendy   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U l        g SU l        g )Ndependenciesbbdirc              3  ,   #    U  H
  nS U;   v   M     g7f)debugNrj   ).0flags     r%   	<genexpr>(MesonBackend.__init__.<locals>.<genexpr>   s     E}t7d?}s   rr   release)	superr&   	extra_datgetro   meson_build_diranyfc_flagsr   )r!   argskwargs	__class__s      r%   r&   MesonBackend.__init__z   s^    $)&) NN..~rB&Et}}EEEG 	KT 	r(   c                   [        U5      U R                  -  n[        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*.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_rootMesonBackend._move_exec_to_root   s    	?T%9%99MMT__-T23MMT__-U34
 (K
[%5%55I!!  "LL0IIk" (r(   c                   [        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   ro   r   r   r   extra_objects
flib_flagsr}   r   sys
executabler\   r   mkdir
write_text)r!   r   meson_templatesrcmeson_build_files        r%   write_meson_buildMesonBackend.write_meson_build   s    &OOLLNNOOMMOONN
 113YdT:	?]:##C(r(   c                .    [         R                  " XSS9  g )NT)r   check)
subprocessrun)r!   commandr   s      r%   _run_subprocess_command$MesonBackend._run_subprocess_command   s    wt4r(   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+?+?@$$]>"ItT5I5IJ$$_@r(   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 rX   )_prepare_sourcesr   r   r   r   r   r   r/   s    r%   r   MesonBackend.compile   sR    't~~Vt~~.t~~&/r(   )r   ro   r{   r   )r   r   )r   r   ra   rc   rb   )rd   re   rf   rg   r&   r   r   r   r   r   ri   __classcell__)r   s   @r%   rl   rl   y   s'    
# *5A0 0r(   rl   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_sourcesr=   generated_sourcesgenerated_sources          r%   r   r      sD   ||~JTD1<  T&\%9%9%;%;KK%  	wh w()*wo&'
 :D-""$$KK(1A1F1F*FG##$4$9$9:##%	 . '&FF|""f, 	V&  
 s   /E-E-)
__future__r   r   r,   r   r   r   pathlibr   _backendr   stringr   	itertoolsr   warningsr
   rl   r   rj   r(   r%   <module>r      sE    " 	    
     e7 e7P:07 :0zr(   