§
    `Štj²!  ã                   ó®   — 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d„ ZdS )é    N)Úchain)ÚPath)ÚTemplateé   )ÚBackendc                   óð   — e Zd ZdZdedee         dee         dee         dee         dee         dee         d	ee         d
ee         dedefd„Zdef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dS )ÚMesonTemplatez+Template meson build file generation class.Ú
modulenameÚsourcesÚdepsÚ	librariesÚlibrary_dirsÚinclude_dirsÚobject_filesÚlinker_argsÚfortran_argsÚ
build_typeÚ
python_exec                 óž  — || _         t          t          ¦  «        j                             ¦   «         dz  | _        || _        || _        || _        || _	        |�|| _
        ng | _
        i | _        || _        d„ |	D ¦   «         | _        | j        | j        | j        | j        | j        | j        | j        g| _        |
| _        || _        d| _        d S )Nzmeson.build.templatec                 ór   — g | ]4}|                      d ¦  «        r|                     d ¦  «        sd |› d �n|‘Œ5S )ú')Ú
startswithÚendswith)Ú.0Úxs     úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/numpy/f2py/_backends/_meson.pyú
<listcomp>z*MesonTemplate.__init__.<locals>.<listcomp>.   sT   € ð 
ð 
ð 
àð Ÿ\š\¨#Ñ.Ô.ÐJ°1·:²:¸c±?´?ÐJˆH�ˆHˆHˆHˆHÈð
ð 
ð 
ó    z                     )r
   r   Ú__file__ÚparentÚabsoluteÚbuild_template_pathr   r   r   r   r   ÚsubstitutionsÚobjectsr   Ú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   s               r   Ú__init__zMesonTemplate.__init__   sé   € ð %ˆŒå•‰NŒNÔ!×*Ò*Ñ,Ô,Ð/EÑEð 	Ô ð ˆŒØˆŒ	Ø"ˆŒØ(ˆÔØÐ#Ø ,ˆDÔÐà "ˆDÔØˆÔØ#ˆŒð
ð 
à!ð
ñ 
ô 
ˆÔð
 Ô$ØÔ%ØÔ%ØÔ"ØÔ%ØÔ'ØÔ*ð
ˆŒð %ˆŒØ$ˆŒØˆŒˆˆr   Úreturnc                 óÐ   — | j                              ¦   «         s5t          t          j        d| j                              ¦   «         › d�¦  «        ‚| 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?   sm   € ØÔ'×/Ò/Ñ1Ô1ð 	Ý#Ý”ð#ØÔ,×5Ò5Ñ7Ô7ð#ð #ð #ñô ð ð Ô'×1Ò1Ñ3Ô3Ð3r   Nc                 ó`   — | j         | j        d<   | j        | j        d<   | j        | j        d<   d S )Nr
   Ú	buildtypeÚpython)r
   r#   r   r   r7   s    r   r%   z!MesonTemplate.initialize_templateI   s5   € Ø+/¬?ˆÔ˜<Ñ(Ø*.¬/ˆÔ˜;Ñ'Ø'+¤ˆÔ˜8Ñ$Ð$Ð$r   c                 ód   ‡ — d                      ˆ fd„‰ j        D ¦   «         ¦  «        ‰ j        d<   d S )Nú,
c                 ó*   •— g | ]}‰j         › d |› d�‘ŒS ©z'''z''',©r-   )r   Úsourcer.   s     €r   r   z6MesonTemplate.sources_substitution.<locals>.<listcomp>P   s,   ø€ ÐHÐHÐH°�”Ð,Ð, Ð,Ð,Ð,ÐHÐHÐHr   Úsource_list)Újoinr   r#   r7   s   `r   r&   z"MesonTemplate.sources_substitutionN   s=   ø€ Ø,1¯JªJØHÐHÐHÐH¸4¼<ÐHÑHÔHñ-
ô -
ˆÔ˜=Ñ)Ð)Ð)r   c                 ód   ‡ — d                      ˆ fd„‰ j        D ¦   «         ¦  «        ‰ j        d<   d S )Nr=   c                 ó*   •— g | ]}‰j         › d |› d�‘ŒS r?   r@   )r   Úobjr.   s     €r   r   z6MesonTemplate.objects_substitution.<locals>.<listcomp>U   s,   ø€ ÐBÐBÐB¨c�”Ð)Ð) Ð)Ð)Ð)ÐBÐBÐBr   Úobj_list)rC   r$   r#   r7   s   `r   r'   z"MesonTemplate.objects_substitutionS   s=   ø€ Ø).¯ªØBÐBÐBÐB°T´\ÐBÑBÔBñ*
ô *
ˆÔ˜:Ñ&Ð&Ð&r   c                 ót   ‡ — d‰ j         › �                     ˆ fd„‰ j        D ¦   «         ¦  «        ‰ j        d<   d S )Nr=   c                 ó*   •— g | ]}‰j         › d |› d�‘ŒS )zdependency('z'),r@   )r   Údepr.   s     €r   r   z3MesonTemplate.deps_substitution.<locals>.<listcomp>Z   s,   ø€ ÐGÐGÐG°c�”Ð1Ð1¨Ð1Ð1Ð1ÐGÐGÐGr   Údep_list)r-   rC   r   r#   r7   s   `r   r(   zMesonTemplate.deps_substitutionX   sI   ø€ Ø)<¨t¬{Ð)<Ð)<×)AÒ)AØGÐGÐGÐG¸T¼YÐGÑGÔGñ*
ô *
ˆÔ˜:Ñ&Ð&Ð&r   c                 óÞ  ‡ — d                      d„ t          ‰ j        ¦  «        D ¦   «         ¦  «        ‰ j        d<   d                      d„ ‰ j        D ¦   «         ¦  «        ‰ j        d<   d‰ j        › �                      ˆ fd„‰ j        D ¦   «         ¦  «        ‰ j        d<   d‰ j        › �                      ˆ fd„t          t          ‰ j        ¦  «        ¦  «        D ¦   «         ¦  «        ‰ j        d	<   d S )
Nú
c                 ó&   — g | ]\  }}d |› d|› d�‘ŒS )Úlib_dir_z( = declare_dependency(link_args : ['''-Lz'''])© )r   ÚiÚlib_dirs      r   r   z8MesonTemplate.libraries_substitution.<locals>.<listcomp>_   s@   € ð ð ð á�A�wð U˜1ÐTÐTÀgÐTÐTÐTðð ð r   Úlib_dir_declarationsc                 óF   — g | ]}|                      d d¦  «        › d|› d�‘ŒS )ú.Ú_z& = declare_dependency(link_args : ['-lz']))Úreplace)r   Úlibs     r   r   z8MesonTemplate.libraries_substitution.<locals>.<listcomp>f   sH   € ð ð ð àð —;’;˜s CÑ(Ô(ÐXÐXÐPSÐXÐXÐXðð ð r   Úlib_declarationsc                 óP   •— g | ]"}‰j         › |                     d d¦  «        › d�‘Œ#S )rU   rV   ú,)r-   rW   )r   rX   r.   s     €r   r   z8MesonTemplate.libraries_substitution.<locals>.<listcomp>m   s7   ø€ ÐPÐPÐP¸#�”Ð5˜SŸ[š[¨¨cÑ2Ô2Ð5Ð5Ð5ÐPÐPÐPr   Úlib_listc                 ó*   •— g | ]}‰j         › d |› d�‘ŒS )rO   r[   r@   )r   rQ   r.   s     €r   r   z8MesonTemplate.libraries_substitution.<locals>.<listcomp>p   s,   ø€ ÐQÐQÐQ¨a�”Ð)Ð) QÐ)Ð)Ð)ÐQÐQÐQr   Úlib_dir_list)rC   Ú	enumerater   r#   r   r-   ÚrangeÚlenr7   s   `r   r*   z$MesonTemplate.libraries_substitution]   s  ø€ Ø59·Y²Yðð å"+¨DÔ,=Ñ">Ô">ðñ ô ñ6
ô 6
ˆÔÐ1Ñ2ð 26·²ðð àœ>ðñ ô ñ2
ô 2
ˆÔÐ-Ñ.ð *<¨d¬kÐ);Ð);×)@Ò)@ØPÐPÐPÐPÀÄÐPÑPÔPñ*
ô *
ˆÔ˜:Ñ&ð .@°$´+Ð-?Ð-?×-DÒ-DØQÐQÐQÐQµ5½¸TÔ=NÑ9OÔ9OÑ3PÔ3PÐQÑQÔQñ.
ô .
ˆÔ˜>Ñ*Ð*Ð*r   c                 ót   ‡ — d‰ j         › �                     ˆ fd„‰ j        D ¦   «         ¦  «        ‰ j        d<   d S )Nr=   c                 ó*   •— g | ]}‰j         › d |› d�‘ŒS r?   r@   )r   Úincr.   s     €r   r   z6MesonTemplate.include_substitution.<locals>.<listcomp>u   s,   ø€ ÐGÐGÐG¨c�”Ð)Ð) Ð)Ð)Ð)ÐGÐGÐGr   Úinc_list)r-   rC   r   r#   r7   s   `r   r)   z"MesonTemplate.include_substitutions   sJ   ø€ Ø)<¨t¬{Ð)<Ð)<×)AÒ)AØGÐGÐGÐG°TÔ5FÐGÑGÔGñ*
ô *
ˆÔ˜:Ñ&Ð&Ð&r   c                 ó    — | j         r<| j        › dd                     t          | j         ¦  «        ¦  «        › d�| j        d<   d S d| j        d<   d S )Nzfortran_args: [z, z],r   Ú )r   r-   rC   Úlistr#   r7   s    r   r+   z'MesonTemplate.fortran_args_substitutionx   sb   € ØÔð 	4à”;ÐUÐU¨t¯yªy½¸dÔ>OÑ9PÔ9PÑ/QÔ/QÐUÐUÐUð Ô˜~Ñ.Ð.Ð.ð 24ˆDÔ˜~Ñ.Ð.Ð.r   c                 óÐ   — | j         D ]} |¦   «          Œt          |                      ¦   «         ¦  «        }|                     | j        ¦  «        }|                     dd¦  «        }|S )Nz,,r[   )r,   r   r8   Ú
substituter#   rW   )r.   ÚnodeÚtemplateÚmeson_builds       r   Úgenerate_meson_buildz"MesonTemplate.generate_meson_build€   sj   € Ø”Mð 	ð 	ˆDØˆD‰FŒFˆFˆFÝ˜D×5Ò5Ñ7Ô7Ñ8Ô8ˆØ×)Ò)¨$Ô*<Ñ=Ô=ˆØ!×)Ò)¨$°Ñ4Ô4ˆØÐr   ©r0   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrrh   r   r/   r8   r%   r&   r'   r(   r*   r)   r+   rn   rP   r   r   r	   r	      sq  € € € € € Ø5Ð5ð,àð,ð �d”ð,ð �3Œið	,ð
 ˜”9ð,ð ˜4”jð,ð ˜4”jð,ð ˜4”jð,ð ˜#”Yð,ð ˜3”ið,ð ð,ð ð,ð ,ð ,ð ,ð\4 cð 4ð 4ð 4ð 4ð7ð 7ð 7ð 7ð

ð 
ð 
ð 
ð

ð 
ð 
ð 
ð

ð 
ð 
ð 
ð

ð 
ð 
ð 
ð,
ð 
ð 
ð 
ð
4ð 4ð 4ð 4ðð ð ð ð r   r	   c                   óT   ‡ — e Zd Zˆ fd„Zdefd„Zdeddfd„Zd„ Zdefd„Zd
d	„Z	ˆ xZ
S )ÚMesonBackendc                 ó  •—  t          ¦   «         j        |i |¤Ž | j                             dg ¦  «        | _        d| _        t          d„ | j        D ¦   «         ¦  «        rdnd| _        t          | j        ¦  «        | _        d S )NÚdependenciesÚbbdirc              3   ó   K  — | ]}d |v V — Œ	dS )ÚdebugNrP   )r   Úflags     r   ú	<genexpr>z(MesonBackend.__init__.<locals>.<genexpr>�   s&   è è € ÐEÐE¨t˜7 d˜?ÐEÐEÐEÐEÐEÐEr   r{   Úrelease)
Úsuperr/   Ú	extra_datÚgetrx   Úmeson_build_dirÚanyÚfc_flagsr   Ú
_get_flags)r.   ÚargsÚkwargsÚ	__class__s      €r   r/   zMesonBackend.__init__Š   s„   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ø œN×.Ò.¨~¸rÑBÔBˆÔØ&ˆÔåÐEÐE°t´}ÐEÑEÔEÑEÔEÐTˆGˆGÈ9ð 	Œõ # 4¤=Ñ1Ô1ˆŒˆˆr   Ú	build_dirc                 óÚ  — t          |¦  «        | j        z  }t          |                     | j        › d�¦  «        |                     | j        › d�¦  «        |                     | j        › d�¦  «        ¦  «        }|D ]n}t          j        ¦   «         |j        z  }|                     ¦   «         r|                     ¦   «          t          j
        ||¦  «         t          j        |¦  «         Œod S )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_rootzMesonBackend._move_exec_to_root“   së   € Ý˜	‘?”? TÔ%9Ñ9ˆÝØ�MŠM˜Tœ_Ð2Ð2Ð2Ñ3Ô3Ø�MŠM˜Tœ_Ð3Ð3Ð3Ñ4Ô4Ø�MŠM˜Tœ_Ð3Ð3Ð3Ñ4Ô4ñ
ô 
ˆð (ð 	#ð 	#ˆKÝœ™
œ
 [Ô%5Ñ5ˆIØ×ÒÑ!Ô!ð #Ø× Ò Ñ"Ô"Ð"ÝŒL˜ iÑ0Ô0Ð0ÝŒI�kÑ"Ô"Ð"Ð"ð	#ð 	#r   r0   Nc                 ón  — t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        t          j        ¦  «        }|                     ¦   «         }t          |¦  «                             dd¬¦  «         t          |¦  «        dz  }|                     |¦  «         |S )z1Writes the meson build file at specified locationT©ÚparentsÚexist_okzmeson.build)r	   r
   r   rx   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_buildzMesonBackend.write_meson_build£   s©   € å&ØŒOØŒLØÔØŒNØÔØÔØÔØŒOØŒMØŒOÝŒNñ
ô 
ˆð ×1Ò1Ñ3Ô3ˆÝˆY‰Œ×Ò d°TÐÑ:Ô:Ð:Ý 	™?œ?¨]Ñ:ÐØ×#Ò# CÑ(Ô(Ð(ØÐr   c                 ó4   — t          j        ||d¬¦  «         d S )NT)rŒ   Úcheck)Ú
subprocessÚrun)r.   ÚcommandrŒ   s      r   Ú_run_subprocess_commandz$MesonBackend._run_subprocess_command¸   s   € ÝŒ�w C¨tÐ4Ñ4Ô4Ð4Ð4Ð4r   c                 óˆ   — dd| j         g}|                      ||¦  «         ddd| j         g}|                      ||¦  «         d S )NÚmesonÚsetupÚcompilez-C)r‚   r¬   )r.   r‰   Úsetup_commandÚcompile_commands       r   Ú	run_mesonzMesonBackend.run_meson»   sT   € Ø  '¨4Ô+?Ð@ˆØ×$Ò$ ]°IÑ>Ô>Ð>Ø" I¨t°TÔ5IÐJˆØ×$Ò$ _°iÑ@Ô@Ð@Ð@Ð@r   c                 ó,  — t          | j        | j        | j        ¦  «        | _        t	          | j        | j        | j        ¦  «         |                      | j        ¦  «         |                      | j        ¦  «         |                      | j        ¦  «         d S )N)	Ú_prepare_sourcesr
   r   r‰   Ú_prepare_objectsr�   r¦   r³   r˜   r7   s    r   r°   zMesonBackend.compileÁ   sz   € Ý'¨¬¸¼ÀtÄ~ÑVÔVˆŒÝ˜œ¨$Ô*<¸d¼nÑMÔMÐMØ×Ò˜tœ~Ñ.Ô.Ð.Ø�Š�t”~Ñ&Ô&Ð&Ø×Ò ¤Ñ/Ô/Ð/Ð/Ð/r   ro   )rp   rq   rr   r/   r   r˜   r¦   r¬   r³   r°   Ú__classcell__)rˆ   s   @r   rv   rv   ‰   s¸   ø€ € € € € ð2ð 2ð 2ð 2ð 2ð#¨Dð #ð #ð #ð #ð  ¨4ð  °Dð  ð  ð  ð  ð*5ð 5ð 5ðA 4ð Að Að Að Að0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r   rv   c                 ó–  — |                      ¦   «         }t          |¦  «                             dd¬¦  «         |D ]Y}t          |¦  «                             ¦   «         r6t          |¦  «                             ¦   «         rt          j         ||¦  «         ŒZt          | › d�¦  «        t          | › d�¦  «        t          | › d�¦  «        g}t          |¦  «        }|D ]a}|                     ¦   «         rKt          j         |||j        z  ¦  «         |                     |j        ¦  «         |                     ¦   «          Œbd„ |D ¦   «         }|S )NTrš   zmodule.cz-f2pywrappers2.f90z-f2pywrappers.fc                 óf   — g | ].}t          |¦  «        j        d k    °t          |¦  «        j        ‘Œ/S )z.pyf)r   Úsuffixr�   )r   rA   s     r   r   z$_prepare_sources.<locals>.<listcomp>Û   s?   € ð ð ð àÝ�F‰|Œ|Ô" fÒ,Ð,õ 	ˆV‰ŒÔà,Ð,Ð,r   )	Úcopyr   r¡   rŽ   r2   r�   r�   Úappendr�   )Úmnamer   ÚbdirÚextended_sourcesrA   Úgenerated_sourcesÚgenerated_sources          r   rµ   rµ   É   sg  € Ø—|’|‘~”~ÐÝˆ�J„J×Ò˜T¨DÐÑ1Ô1Ð1àð &ð &ˆÝ�‰<Œ<×ÒÑ Ô ð 	&¥T¨&¡\¤\×%9Ò%9Ñ%;Ô%;ð 	&ÝŒK˜ Ñ%Ô%Ð%øå�ÐÐÐÑ Ô Ý�Ð)Ð)Ð)Ñ*Ô*Ý�Ð&Ð&Ð&Ñ'Ô'ðÐõ
 �‰:Œ:€DØ-ð &ð &ÐØ×"Ò"Ñ$Ô$ð 	&ÝŒKÐ(¨$Ð1AÔ1FÑ*FÑGÔGÐGØ×#Ò#Ð$4Ô$9Ñ:Ô:Ð:Ø×#Ò#Ñ%Ô%Ð%øðð à&ðñ ô Ðð
 Ðr   c                 ó  — t          |¦  «                             dd¬¦  «         |D ]Y}t          |¦  «                             ¦   «         r6t          |¦  «                             ¦   «         rt	          j        ||¦  «         ŒZd S )NTrš   )r   r¡   rŽ   r2   r�   r»   )r½   r$   r¾   rF   s       r   r¶   r¶   â   s€   € Ýˆ�J„J×Ò˜T¨DÐÑ1Ô1Ð1àð #ð #ˆÝ�‰9Œ9×ÒÑÔð 	#¥$ s¡)¤)×"3Ò"3Ñ"5Ô"5ð 	#ÝŒK˜˜TÑ"Ô"Ð"øð#ð #r   c                 ól  — g }t          j        d¦  «        }| D ]s}|                     |¦  «        }|rZ|                     d¦  «                             ¦   «                              ¦   «         }d„ |D ¦   «         }|                     |¦  «         Œtt          t           	                    |¦  «        ¦  «        }|S )Nz--f(77|90)flags=(.*)é   c                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )z'")Ústrip)r   Úvals     r   r   z_get_flags.<locals>.<listcomp>ð   s$   € Ð9Ð9Ð9¨3�c—i’i Ñ&Ô&Ð9Ð9Ð9r   )
Úrer°   ÚmatchÚgrouprÆ   ÚsplitÚextendrh   ÚdictÚfromkeys)r„   Úflag_valuesÚflag_patternr|   Úmatch_resultÚvaluesÚunique_flagss          r   r…   r…   é   s³   € Ø€KÝ”:Ð5Ñ6Ô6€LØð 'ð 'ˆØ#×)Ò)¨$Ñ/Ô/ˆØð 	'Ø!×'Ò'¨Ñ*Ô*×0Ò0Ñ2Ô2×8Ò8Ñ:Ô:ˆFØ9Ð9°&Ð9Ñ9Ô9ˆFØ×Ò˜vÑ&Ô&Ð&øå�Ÿš kÑ2Ô2Ñ3Ô3€LØÐr   )r4   r’   rÈ   r�   r©   rŸ   Ú	itertoolsr   Úpathlibr   Ústringr   Ú_backendr   r	   rv   rµ   r¶   r…   rP   r   r   ú<module>rØ      s  ðØ €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ðxð xð xð xð xñ xô xð xðv=0ð =0ð =0ð =0ð =0�7ñ =0ô =0ð =0ð@ð ð ð2#ð #ð #ðð ð ð ð r   