
    >>i!                         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S rg)    N)chain)Path)Template   )Backendc                       \ rS rSrSrS\S\\   S\\   S\\   S\\   S\\   S	\\   S
\\   S\\   S\S\4S jrS\4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.
modulenamesourcesdeps	librarieslibrary_dirsinclude_dirsobject_fileslinker_argsfortran_args
build_type
python_exec                 F   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 R,                  /U l        Xl        Xl        SU l        g s  snf )Nzmeson.build.template'z                     )r   r   __file__parentabsolutebuild_template_pathr   r   r   r   r   substitutionsobjects
startswithendswithr   initialize_templatesources_substitutionobjects_substitutiondeps_substitutioninclude_substitutionlibraries_substitutionfortran_args_substitutionpipeliner   r   indent)selfr   r   r   r   r   r   r   r   r   r   r   xs                Z/var/www/html/land-tabula/venv/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returnc                     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3    Nc                     U R                   U R                  S'   U R                  U R                  S'   U R                  U R                  S'   g )Nr   	buildtypepython)r   r   r   r   r5   s    r+   r    !MesonTemplate.initialize_templateI   s>    +/??<(*.//;''+8$r8   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_substitutionN   sC    ,1JJ;?<<H<}Cxt,<H-
=)H   A
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 )Nr>   r?   r@   obj_list)rB   r   r(   r   )r)   objs     r+   r"   "MesonTemplate.objects_substitutionS   sC    ).59\\B\c}CuD)\B*
:&BrE   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(   rB   r   r   )r)   deps     r+   r#   MesonTemplate.deps_substitutionX   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)	rB   	enumerater   r   r   replacer(   rangelen)r)   ilib_dirlibs       r+   r%   $MesonTemplate.libraries_substitution]   sw   59YY #,D,=,=">">JA 1#EgYeT">6
12 26  >>)C ;;sC())OPSuTWX)2
-. ,.dkk]);)@)@AEP#}S[[c2315P*
:& 02$++-?-D-D38T=N=N9O3PQ3Pa}HQCq)3PQ.
>*! Q 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(   rB   r   r   )r)   incs     r+   r$   "MesonTemplate.include_substitutions   sT    +.t{{m)<)A)A595F5FG5Fc}CuD)5FG*
:&GrN   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(   rB   listr   r5   s    r+   r&   'MesonTemplate.fortran_args_substitutionx   sW    ;;-tyyd>O>O9P/Q.RRTU ~. 24D~.r8   c                     U R                    H
  nU" 5         M     [        U R                  5       5      nUR                  U R                  5      nUR                  SS5      nU$ )Nz,,rV   )r'   r   r6   
substituter   rZ   )r)   nodetemplatemeson_builds       r+   generate_meson_build"MesonTemplate.generate_meson_build   sV    MMDF "D5578))$*<*<=!))$4r8   )r   r   r   r   r   r(   r   r   r   r   r'   r   r   r   r.   N)__name__
__module____qualname____firstlineno____doc__strrg   r   r,   r6   r    r!   r"   r#   r%   r$   r&   rn   __static_attributes__ r8   r+   r	   r	      s    5,, d, 3i	,
 9, 4j, 4j, 4j, #Y, 3i, , ,\4c 47







,

4r8   r	   c                   f   ^  \ rS rSrU 4S jrS\4S jrS\SS4S jrS rS\4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r8   	build_dirc                    [        U5      U R                  -  n[        UR                  U R                   S35      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*.pydz*.dll)r   r   r   globr   cwdnameexistsunlinkshutilcopy2osremove)r)   r   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MMT__-U34
 (K
[%5%55I!!  "LL0IIk" (r8   r.   Nc                    [        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
executablern   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(r8   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4r8   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$$_@r8   c                 \   [        U R                  U R                  U R                  5      U l        [	        U R                  U R
                  U R                  5        U R                  U R                  5        U R                  U R                  5        U R                  U R                  5        g )N)	_prepare_sourcesr   r   r   _prepare_objectsr   r   r   r   r5   s    r+   r   MesonBackend.compile   sl    't~~V$*<*<dnnMt~~.t~~&/r8   )r   r}   r   r   r   rp   )rq   rr   rs   rt   r,   r   r   r   r   r   r   rw   __classcell__)r   s   @r+   rz   rz      sD    2#D #  4  D  *5A4 A0 0r8   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   r0   r   r   appendr   suffix)mnamer   bdirextended_sourcesrC   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                     [        U5      R                  SSS9  U HY  n[        U5      R                  5       (       d  M#  [        U5      R                  5       (       d  MC  [        R
                  " X25        M[     g )NTr   )r   r   r   r0   r   r   )r   r   r   rH   s       r+   r   r      sT    JTD19$s)"3"3"5"5KK" r8   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'")
rer   matchgroupstripsplitextendrg   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:)r2   r   r   r   r   r   	itertoolsr   pathlibr   stringr   _backendr   r	   rz   r   r   r   rx   r8   r+   <module>r      sL     	 	   
    x xv=07 =0@2#r8   