
    Kh                        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rS SKJ	r	  SSK
Jr  S SKJr  S SKJr   " S S	5      r " S
 S\5      rS 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S
 jrS rSrg)MesonTemplate   z+Template meson build file generation class.c                0   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	 Vs/ s H7  nUR                  S5      (       a  UR                  S5      (       d  SU S3OUPM9     snU l        U R                   U R"                  U R$                  U R&                  U R(                  U R*                  /U l        Xl        Xl        SU l        g s  snf )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                M/var/www/html/env/lib/python3.13/site-packages/numpy/f2py/_backends/_meson.py__init__MesonTemplate.__init__   s    %N!!**,/EE 	  	"(# , "D# "
! \\#..1::c??as!HJ!

 $$%%""%%''**
 %$
s   0>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_templateA   sd    ''//11#,,5578"#  ''1133    c                    U R                   U R                  S'   U R                  U R                  S'   U R                  U R                  S'   g )Nr   	buildtypepython)r   r   r$   r%   r4   s    r+   r   !MesonTemplate.initialize_templateK   s>    +/??<(*.//;''+8$r7   c           	         SR                  U R                   Vs/ s H  oR                   SU S3PM     sn5      U R                  S'   g s  snf )N,
'''''',source_list)joinr   r&   r   )r'   sources     r+   r   "MesonTemplate.sources_substitutionP   sC    ,1JJ;?<<H<}Cxt,<H-
=)Hs   A
c           	         SU R                    3R                  U R                   Vs/ s H  oR                    SU S3PM     sn5      U R                  S'   g s  snf )Nr=   zdependency('z'),dep_list)r&   rA   r   r   )r'   deps     r+   r   MesonTemplate.deps_substitutionU   sP    +.t{{m)<)A)A=AYYGYc}LS1YG*
:&G   Ac                   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R                  SS5       SU S	3PM     sn5      U R                  S
'   SU R                   3R                  U R                   Vs/ s H#  o0R                   UR                  SS5       S3PM%     sn5      U R                  S'   SU R                   3R                  [        [        U R                  5      5       Vs/ s H  oR                   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_declarations._z& = declare_dependency(link_args : ['-lz'])lib_declarations,lib_listlib_dir_list)	rA   	enumerater   r   r   replacer&   rangelen)r'   ilib_dirlibs       r+   r!   $MesonTemplate.libraries_substitutionZ   sv   59YY #,D,=,=">">JA 1#EgYeT">6
12 26  >>)C ;;s3'((NseSVW)2
-. ,.dkk]);)@)@@DO}S[[S12!4O*
:& 02$++-?-D-D38T=N=N9O3PQ3Pa}HQCq)3PQ.
>*! P Rs   E)
'"E/*E49E9c           	         SU R                    3R                  U R                   Vs/ s H  oR                    SU S3PM     sn5      U R                  S'   g s  snf )Nr=   r>   r?   inc_list)r&   rA   r   r   )r'   incs     r+   r    "MesonTemplate.include_substitutionp   sT    +.t{{m)<)A)A595F5FG5Fc}CuD)5FG*
:&GrH   c                    U R                   (       aB  U R                   SSR                  [        U R                   5      5       S3U R                  S'   g SU R                  S'   g )Nzfortran_args: [z, z],r    )r   r&   rA   listr   r4   s    r+   r"   'MesonTemplate.fortran_args_substitutionu   sW    ;;-tyyd>O>O9P/Q.RRTU ~. 24D~.r7   c                    U R                    H
  nU" 5         M     [        U R                  5       5      nUR                  U R                  5      n[
        R                  " SSU5      nU$ )Nz,,rP   )r#   r   r5   
substituter   resub)r'   nodetemplatemeson_builds       r+   generate_meson_build"MesonTemplate.generate_meson_build}   sV    MMDF "D5578))$*<*<=ffUC5r7   )r   r$   r   r   r   r&   r   r   r   r   r#   r%   r   r   N)r   strr   
list[Path]r   	list[str]r   rn   r   rm   r   rm   r(   rm   r)   rn   r   rn   r$   rl   r%   rl   )returnrl   ro   None)__name__
__module____qualname____firstlineno____doc__r,   r5   r   r   r   r!   r    r"   rj   __static_attributes__ r7   r+   r
   r
      s    5++ + 	+
 + !+ !+ !+ +  + + +Z47





,

4r7   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$ )MesonBackend   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OSU l        [        U R                  5      U l        g )Ndependenciesbbdirc              3  ,   #    U  H
  nS U;   v   M     g7f)debugNrx   ).0flags     r+   	<genexpr>(MesonBackend.__init__.<locals>.<genexpr>   s     E}t7d?}s   r   release)
superr,   	extra_datgetr}   meson_build_diranyfc_flagsr$   
_get_flags)r'   argskwargs	__class__s      r+   r,   MesonBackend.__init__   sh    $)&) NN..~rB&Et}}EEEG9 	 #4==1r7   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" (r7   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   r}   r   r   r   extra_objects
flib_flagsr   r$   sys
executablerj   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(r7   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4r7   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$$_@r7   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 )N)_prepare_sourcesr   r   r   r   r   r   r4   s    r+   r   MesonBackend.compile   sR    't~~Vt~~.t~~&/r7   )r$   r}   r   r   r   )r   r   )r   r   ro   rq   rp   )rr   rs   rt   ru   r,   r   r   r   r   r   rw   __classcell__)r   s   @r+   rz   rz      s'    2# *5A0 0r7   rz   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_sourcesrB   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-c                ~   / n[         R                  " S5      nU  H{  nUR                  U5      nU(       d  M  UR                  S5      R	                  5       R                  5       nU Vs/ s H  ofR	                  S5      PM     nnUR                  U5        M}     [        [        R                  U5      5      nU$ s  snf )Nz--f(77|90)flags=(.*)   z'")
re   r   matchgroupstripsplitextendra   dictfromkeys)r   flag_valuesflag_patternr   match_resultvaluesvalunique_flagss           r+   r   r      s    K::56L#))$/<!''*00288:F289&3ii&&F9v&  k23L	 :s   )B:)
__future__r   r   r1   r   r   r   re   pathlibr   _backendr   stringr   	itertoolsr   r
   rz   r   r   rx   r7   r+   <module>r      sJ    " 	    
 	    r rj;07 ;0|4r7   