
    -Ph2                    x    d dl mZ ddlmZmZmZ d dlZddlm	Z	 d dl
mZ d dlZd dlZg dZ G d	 d
          ZdS )    )annotations   )CMakeExceptionCMakeBuildFileCMakeConfigurationN   )mlog)Path)cmakereply	backtracebacktraceGraphversionc                  n    e 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dZddZddZd dZdS )!CMakeFileAPI	build_dirr
   c                    || _         | j         dz  dz  dz  | _        | j        dz  dz  | _        | j        dz  | _        g | _        g | _        d| _        | j        | j        | j	        d| _
        d S )	Nz.cmakeapiv1queryzclient-mesonr    )	codemodelcache
cmakeFiles)r   api_base_dirrequest_dir	reply_dircmake_sourcescmake_configurationsproject_version_parse_codemodel_parse_cache_parse_cmakeFileskind_resolver_map)selfr   s     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/cmake/fileapi.py__init__zCMakeFileAPI.__init__   s    " NX5=D,w6G*W457@B!!.&0"
 "
    returnT.List[CMakeBuildFile]c                    | j         S N)r   r%   s    r&   get_cmake_sourceszCMakeFileAPI.get_cmake_sources   s    !!r(   T.List[CMakeConfiguration]c                    | j         S r,   )r   r-   s    r&   get_cmake_configurationsz%CMakeFileAPI.get_cmake_configurations!   s    ((r(   strc                    | j         S r,   r    r-   s    r&   get_project_versionz CMakeFileAPI.get_project_version$   s    ##r(   Nonec                    | j                             dd           ddddddd	ddddd
ddddgi}| j         dz  }|                    t          j        |d          d           d S )NT)parentsexist_okrequestsr   r   r   )majorminor)kindr   r   r   r   z
query.jsonindentutf-8encoding)r   mkdir
write_textjsondumps)r%   r   
query_files      r&   setup_requestzCMakeFileAPI.setup_request'   s    td;;; $1q1I1IJJ q1-E-EFF%A2J2JKK
 %4
djq999GLLLLLr(   c                N   | j                                         st          d          d }t          j        d          }| j                                         D ] }|                    |j                  r|} n!|st          d          |                     |          }| 	                    |          }| 
                    |          }| 	                    |          }| j        dz  dz  }|                                }|                    t          j        |d          d	           t!          j        |                                           |d
         D ]L}t'          |t(                    sJ d|v sJ |d         | j        v sJ  | j        |d                  |           Md S )Nz#No response from the CMake file APIz^index-.*\.json$z'Failed to find the CMake file API indexz..zfileAPI.jsonr   r>   r@   rA   objectsr=   )r   is_dirr   recompileiterdirmatchname_reply_file_content_strip_data_resolve_referencesr   resolverD   rE   rF   r	   cmd_ci_includeas_posix
isinstancedictr$   )r%   root	reg_indexiindex
debug_jsons         r&   
load_replyzCMakeFileAPI.load_reply5   s   ~$$&& 	H !FGGGJ233	'')) 	 	Aqv&&   	L !JKKK((..  ''((//  '' ^d*^;
''))
djq999GLLLJ//11222 y! 	1 	1Aa&&&&&Q;;;;V9 66666-D"1V9-a0000	1 	1r(   dataT.Dict[str, T.Any]c                  	
 d|v sJ d|v sJ |d         d         
|d         d         d
fd	dddfd	d	
fd}|                     dg           D ]l                     dd          g d}                     dg           D ]}|dxx          ||          gz  cc<   | xj        t          |          gz  c_        md S )Nconfigurationspathssourcebuild	dir_entryr`   r)   T.Tuple[Path, Path]c                T   t          |                     dd                    }t          |                     dd                    }|                                r|n|z  }|                                r|n|z  }|                                }|                                }||fS )Nrd   .re   )r
   getis_absoluterT   )rf   src_dirbld_dirr   
source_dirs      r&   helper_parse_dirz7CMakeFileAPI._parse_codemodel.<locals>.helper_parse_dirc   s    9==37788G9==#6677G!(!4!4!6!6PggJ<PG!(!4!4!6!6OggI<OGoo''Goo''GG##r(   
comp_grouptgt0T.Tuple[T.List[Path], T.List[Path], T.List[int]]c                t   g }g }g }|                     dg           }|                      dg           D ]}|t          |          k    s
d||         vr ||                              dd          r |t          ||         d                   gz  }n|t          ||         d                   gz  }||gz  }|||fS )NsourcessourceIndexespathisGeneratedF)rj   lenr
   )rp   rq   gensrcidxsrc_list_rawr[   s          r&   parse_sourcesz4CMakeFileAPI._parse_codemodel.<locals>.parse_sourcesm   s    CCC779b11L^^OR88  L))))V<?-J-J?&&}e<< ;Da!899::CCDa!899::Cs
S= r(   c                                         di                     \  }}g }d| v rWt          | d         d         d                   fd| d         d         D             }t          t          |                    }g }g }|                      di                                dg           D ]}|d	         d
k    r||d         gz  }|d	         dk    r||d         gz  }4|d	         dk    r |d                    |d                   gz  }`|d	         dk    r|d                    |d                   gz  }|                      di                                dg           D ]}|d	         d
k    r||d         gz  }d |                      dg           D             |||                      dd          |                      dd          d| v ||                      di                                dd          d                    |          d                    |          |                      dd          g d}g }|                      dg           D ]}	g }
|	                     dg           D ]}|
|d         gz  }
d |	                     d g           D             d                    |
          |	                     dd!          d g |	                     d"g           d#} |	|           \  }}}|r*t          |          }d$|d%<   ||d&<   |d'xx         |gz  cc<   |r*t          |          }d(|d%<   ||d&<   |d'xx         |gz  cc<   ||z  }g }g }t          |                      d&g                     D ]9\  }}||v r
|                     d%d$          r||d         gz  }-||d         gz  }:|r|d'xx         d$|d)gz  cc<   |r|d'xx         d(|d)gz  cc<   |S )*Nrc   installprefixrv   c                &    g | ]}|d          z  S )rv    ).0xr   s     r&   
<listcomp>zGCMakeFileAPI._parse_codemodel.<locals>.parse_target.<locals>.<listcomp>   s"     \ \ \!F)!3 \ \ \r(   destinationslinkcommandFragmentsroleflagsfragment	librarieslibraryPathz-L{}frameworkPathz-F{}archivec                T    g | ]%}t          |                    d d                    &S )rv   r   )r
   rj   r   r   s     r&   r   zGCMakeFileAPI._parse_codemodel.<locals>.parse_target.<locals>.<listcomp>   s.    XXX!d155#4#455XXXr(   	artifactsrP   r   
nameOnDisklanguageCXX type
EXECUTABLE)r   sourceDirectorybuildDirectoryrP   fullNamehasInstallRuleinstallPathslinkerLanguagelinkLibraries	linkFlagsr   
fileGroupscompileGroupscompileCommandFragmentsc                :    g | ]}|                     d d          S )definer   )rj   r   s     r&   r   zGCMakeFileAPI._parse_codemodel.<locals>.parse_target.<locals>.<listcomp>   s&    SSSh 3 3SSSr(   definesCincludes)r   compileFlagsr   rw   rt   includePathFrw   rt   r   T)rw   rt   )rj   r
   listsetformatjoinrX   	enumerate)rq   rl   rm   install_paths
link_flags	link_libsr[   tgt_dataprocessed_src_idxcgr   cg_data
normal_srcgenerated_srcsrc_idxr{   rz   r   cnfro   r}   s                    @r&   parse_targetz3CMakeFileAPI._parse_codemodel.<locals>.parse_target~   s   //0D0DEEGW MCc)nX6v>?? \ \ \ \S^N=[ \ \ \ $S%7%7 8 8 JIWWVR((,,-?DD A AV9''1Z=/1JJvY+--!J-0IIvY-//6==:#?#?"@@JJvY/116==:#?#?"@@JWWY++//0BBGG 2 2V9''1Z=/1J YXsww{TV?W?WXXX#*")++GGL"55"+s"2 -"%''&""5"5"9"9*e"L"L!$)!4!4 XXj1155  H !#ggor22 - -  92>> - -Aa
m_,EE  TSRVVIr=R=RSSS$'HHUOO "z3 7 7#'!#%66*b#9#9  6C]2s5K5K2
M7 8"7mmG-2GM*)3GI&\***wi7***  8"7mmG-1GM*)6GI&\***wi7***!W,!!
 JM%cggi&<&<== 0 0S+++77=%00 0!c&k]2MM3v;-/JJ &&&#(), , + &&&  &&&#',, , + &&& Or(   proc                |   
}}	  d         | d         d                            \  }}n# t           t          f$ r Y nw xY w|                     dd          ||g d}|                     dg           D ]E}i }	 d         |         }n# t           t          f$ r Y nw xY w|dxx          	|          gz  cc<   F|S )	NdirectoriesdirectoryIndexesr   rP   r   )rP   r   r   targetstargetIndexesr   )
IndexErrorKeyErrorrj   )r   	p_src_dir	p_bld_dirpro_datarefrq   r   r   ro   r   rn   s         r&   parse_projectz4CMakeFileAPI._parse_codemodel.<locals>.parse_project   s    #I!I'7'7M8J3OaKbcdKe8f'g'g$	99)    ++#,"+	 H ww33 ; ;i.-CC"H-   D###S(9(9'::####Os!   &. AA;B

BBrP   r   )rP   projectsr   )rf   r`   r)   rg   )rp   r`   rq   r`   r)   rr   )rq   r`   r)   r`   )r   r`   r)   r`   )rj   r   r   )r%   r_   r   cnf_datar   r   r   ro   r}   r   rn   s        @@@@@@r&   r!   zCMakeFileAPI._parse_codemodelV   s   4''''$']8,
M'*		$ 	$ 	$ 	$ 	$ 	$ 	$	! 	! 	! 	!"e	 e	 e	 e	 e	 e	 e	 e	N	 	 	 	 	 	 	 	 	 	6 88,b11 		H 		HC++ H
 wwz2.. = =$$$s););(<<$$$$%%*<X*F*F)GG%%%		H 		Hr(   c                Z   d|v sJ d|v sJ t          |d         d                   }|d         D ]z}t          |d                   }|                                r|n||z  }| xj        t          ||                    dd          |                    dd                    gz  c_        {d S )Ninputsrc   rd   rv   isCMakeFrw   )r
   rk   r   r   rj   )r%   r_   rl   r[   rv   s        r&   r#   zCMakeFileAPI._parse_cmakeFiles  s    4$tG}X.//h 	o 	oA&	??D++--A447T>D>$i8O8OQRQVQVWdfkQlQl#m#m"nn	o 	or(   c                Z    d|v sJ |d         D ]}|d         dk    r|d         | _         d S )NentriesrP   CMAKE_PROJECT_VERSIONvaluer4   )r%   r_   es      r&   r"   zCMakeFileAPI._parse_cache  sM    D    i 	2 	2Ay333'(z$	2 	2r(   T.Anyc                4   t          |t                    r.t          |          D ]\  }}|                     |          ||<   nTt          |t                    r?i }|                                D ]&\  }}|t          vr|                     |          ||<   '|}|S r,   )rW   r   r   rR   rX   items
STRIP_KEYS)r%   r_   r{   r[   newkeyvals          r&   rR   zCMakeFileAPI._strip_data  s    dD!! 		#D// 0 0Q ,,Q//S		0 d## 	C JJLL 5 5Sj((#//44CHDr(   c                ~   t          |t                    r.t          |          D ]\  }}|                     |          ||<   nyt          |t                    rdd|v r.|                    |                     |d                              |                                D ]\  }}|                     |          ||<   |S )NjsonFile)rW   r   r   rS   rX   updaterQ   r   )r%   r_   r{   r[   r   r   s         r&   rS   z CMakeFileAPI._resolve_references+  s    dD!! 	:#D// 8 8Q 44Q77S		8 d## 	: T!!D44T*5EFFGGG JJLL : :S 44S99S		r(   filenamec                B   | j         |z  }|                                st          d| d          t          j        |                    d                    }t          |t                    sJ |                                D ]}t          |t                    sJ |S )NzFile "z" does not existr@   rA   )
r   existsr   rE   loads	read_textrW   rX   keysr2   )r%   r   	real_pathr_   r[   s        r&   rQ   z CMakeFileAPI._reply_file_content;  s    NX-	!! 	G !E)!E!E!EFFFz)--w-??@@$%%%%% 	& 	&Aa%%%%%%r(   N)r   r
   )r)   r*   )r)   r/   )r)   r2   )r)   r6   )r_   r`   r)   r6   )r_   r   r)   r   )r   r
   r)   r`   )__name__
__module____qualname__r'   r.   r1   r5   rH   r^   r!   r#   r"   rR   rS   rQ   r   r(   r&   r   r      s       
 
 
 
" " " ") ) ) )$ $ $ $M M M M1 1 1 1BsH sH sH sHj	o 	o 	o 	o2 2 2 2       	 	 	 	 	 	r(   r   )
__future__r   commonr   r   r   typingTr   r	   pathlibr
   rE   rL   r   r   r   r(   r&   <module>r      s    # " " " " " F F F F F F F F F F                  				III
u u u u u u u u u ur(   