+
    UBiv!                    T   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt	]	P                  '       d   ^ RIHtHtHt ^RIHt ]! RR]R]],          R]],          R	]],          R
]]R,          ,          /4      t]! RR]R]],          R]],          R	]],          R]],          /4      t]! RR]],          R]]	P*                  ],          ,          R]]	P*                  ],          ,          R]]	P*                  ],          ,          /4      t ! R R]4      t]P0                  ! R4      t]P0                  ! R4      tRtRtRtRt]P0                  ! ]]P>                  4      t ]P0                  ! ]]P>                  4      t!]P0                  ! ]]P>                  4      t" ! R R4      t#R R lt$R# )    )annotationsN)Literal	TypedDictNotRequired)TargetDependencyScannerInfoRequirelogical-namecompiled-module-pathsource-pathzunique-on-source-pathzlookup-methodProvidezis-interfaceRuleprimary-outputoutputsprovidesrequiresc                  6    ] tR t^3t$ R]R&   R]R&   R]R&   RtR# )DescriptionintversionrevisionzT.List[Rule]rules N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       ?/usr/lib/python3.14/site-packages/mesonbuild/scripts/depscan.pyr   r   3   s    r   r   z\w*import ([a-zA-Z0-9]+);z \w*export module ([a-zA-Z0-9]+);z"^\s*include\s*['\"](\w+\.\w+)['\"]z#^\s*\bmodule\b\s+(\w+)\s*(?:!+.*)*$z*^\s*\bsubmodule\b\s*\((\w+:?\w+)\)\s*(\w+)z0^\s*use,?\s*(?:non_intrinsic)?\s*(?:::)?\s*(\w+)c                  ^    ] tR t^FtR R ltR R ltR R ltR R ltR	 R
 ltR R lt	Rt
R# )DependencyScannerc                    V ^8  d   QhRRRR/# )   pickle_filestroutfiler   )formats   "r    __annotate__DependencyScanner.__annotate__G   s     4 4C 4# 4r   c                	F   \        VR 4      ;_uu_ 4       p\        P                  ! V4      V n        RRR4       W n        V P                  P
                  V n        / V n        / V n        \        P                  ! \        4      V n        . V n        R#   + '       g   i     Lg; i)rbN)openpickleloadtarget_datar'   sourcesprovided_byexportscollectionsdefaultdictlistimportssources_with_exports)selfr%   r'   pfs   &&& r    __init__DependencyScanner.__init__G   sq    +t$$<BKKOD %''//-/)+BMBYBYZ^B_13! %$s   BB 	c               $    V ^8  d   QhRRRRRR/# )r$   fnamer&   langLiteral['cpp', 'fortran']returnNoner   )r(   s   "r    r)   r*   Q   s"     & &s &*C & &r   c                	\    VR 8X  d   V P                  V4       R# V P                  V4       R# )fortranN)scan_fortran_filescan_cpp_file)r9   r>   r?   s   &&&r    	scan_fileDependencyScanner.scan_fileQ   s&    9""5)u%r   c                    V ^8  d   QhRRRR/# r$   r>   r&   rA   rB   r   )r(   s   "r    r)   r*   W   s     +D +Ds +Dt +Dr   c                	f   \         P                  ! V4      p\        4       pVP                  R RR7      P	                  R4       EF  p\
        P                  V4      p\        P                  V4      p\        P                  V4      pV'       dH   VP                  ^4      P                  4       pW9  d#   V P                  V,          P                  V4       V'       d   VP                  ^4      P                  4       p	W9  g   Q hVP                  V	4       WP                  9   d   \        RV	 R24      hV P                   P                  V4       WP                  V	&   WP"                  V&   V'       g   EK3  VP                  ^4      P                  4       p
V
P	                  R4      ^ ,          pVP                  ^4      P                  4       pV RV 2pV P                   P                  V4       WP                  V&   WP"                  V&   V P                  V,          P                  V
4       EK  	  R# )utf-8ignoreencodingerrors
Multiple files provide module .:N)pathlibPathset	read_textsplitFORTRAN_USE_REmatchFORTRAN_MODULE_REFORTRAN_SUBMOD_REgrouplowerr7   appendaddr2   RuntimeErrorr8   r3   )r9   r>   fpathmodules_in_this_filelineimport_matchexport_matchsubmodule_export_matchneededexported_moduleparent_module_name_fullparent_module_namesubmodule_nameconcat_names   &&            r    rE   #DependencyScanner.scan_fortran_fileW   s   U#"uOOWXOFLLTRD)//5L,2248L%6%<%<T%B"%++A.446 5LL'..v6"."4"4Q"7"="="?&BBB$((9"&6&66&)GGXXY'Z[[))00749  1&5U#%% +A*F*Fq*I*O*O*Q'%<%B%B3%G%J"!7!=!=a!@!F!F!H!3 4An5EF))00705  -&1U# U#**+BCQ Sr   c                    V ^8  d   QhRRRR/# rJ   r   )r(   s   "r    r)   r*      s     6 63 64 6r   c                	0   \         P                  ! V4      pVP                  R RR7      P                  R4       F  p\        P                  V4      p\        P                  V4      pV'       d4   VP                  ^4      pV P                  V,          P                  V4       V'       g   Kr  VP                  ^4      pWpP                  9   d   \        RV R24      hV P                  P                  V4       WP                  V&   WpP                  V&   K  	  R# )rL   rM   rN   rQ   rR   rS   N)rU   rV   rX   rY   CPP_IMPORT_REr[   CPP_EXPORT_REr^   r7   r`   r2   rb   r8   r3   )r9   r>   rc   re   rf   rg   ri   rj   s   &&      r    rF   DependencyScanner.scan_cpp_file   s    U#OOWXOFLLTRD(..t4L(..t4L%++A.U#**62|"."4"4Q"7"&6&66&)GGXXY'Z[[))00749  1&5U# Sr   c               $    V ^8  d   QhRRRRRR/# )r$   srcr&   r?   r@   rA   r   )r(   s   "r    r)   r*      s"     2 23 2.G 2C 2r   c                	(   VR 8X  dk   V P                   V,          pVP                  RR4      pRV9   d   RpMRp\        P                  P	                  V P
                  P                  V RV 24      # RP                  V P                   V,          4      # )rD   rT   @smodmodrS   z{}.ifc)r3   replaceospathjoinr0   private_dirr(   )r9   rv   r?   exportednamebase	extensions   &&&   r    module_name_for!DependencyScanner.module_name_for   s    9||C(H  ''S1Hh"	!	77<< 0 0 < <
!I;>WXXt||C011r   c                   V ^8  d   QhRR/# )r$   rA   r   r   )r(   s   "r    r)   r*      s     ) )c )r   c                	   V P                    F  w  rV P                  W4       K  	  R ^R^ R. /pV P                    EFY  w  rBRV P                  P                  V,          R. R. /pW@P                  9   d   V P                  WB4      .VR&   W@P                  9   d   V P                  V,           F|  pV P                  P                  V4      pWt8X  d   K&  VR,          P                  RV/4       V'       g   KJ  VR,          R,          P                  RVR	V P                  Wr4      /4       K~  	  W@P                  9   dA   V P                  V,          pVR,          P                  RVRVR	V P                  WB4      /4       VR,          P                  V4       EK\  	  \        V P                  R
RR7      ;_uu_ 4       p\        P                  ! W84       RRR4       ^ #   + '       g   i     ^ # ; i)r   r   r   r   r   r   r   r	   r   r
   wrL   )rO   N)r1   rG   r0   source2objectr8   r   r7   r2   getr`   updater3   r-   r'   jsondump)	r9   sr?   descriptionrv   rulemodnameprovider_srcfs	   &        r    scanDependencyScanner.scan   s   ||GANN1# $ qR$

 IC $"2"2"@"@"EBBD
 ///#'#7#7#B"CYll"#||C00G#'#3#3#7#7#@L#* $++&-  $|Z(,33)<2D4H4H4\5   1 ll",,s+Z ''"G!3*D,@,@,K) 
  ''-9 &< $,,g66!IIk% 7  76 s   9GG+	)r3   r7   r'   r2   r1   r8   r0   N)r   r   r   r   r;   rG   rE   rF   r   r   r   r   r   r    r"   r"   F   s'    4&+DZ6 2) )r   r"   c                    V ^8  d   QhRRRR/# )r$   argszT.List[str]rA   r   r   )r(   s   "r    r)   r)      s      k c r   c                n    \        V 4      ^8X  g   Q R4       hV w  r\        W!4      pVP                  4       # )r$   zgot wrong number of arguments!)lenr"   r   )r   r'   r%   scanners   &   r    runr      s6    t9>;;;>G5G<<>r   )zby-namezinclude-anglezinclude-quote)%
__future__r   r4   r   r|   rU   r.   retypingTTYPE_CHECKINGtyping_extensionsr   r   r   backend.ninjabackendr   r&   boolr   r   Listr   r   compilerr   rs   FORTRAN_INCLUDE_PATFORTRAN_MODULE_PATFORTRAN_SUBMOD_PATFORTRAN_USE_PAT
IGNORECASEr\   r]   rZ   r"   r   r   r   r    <module>r      s  
 #   	   	 ???AABC"K$4;s+#[%6[1\)]^	
	G C"K$4;s+#[%6K-	
	G k#.{166#;/AFF7O4AFF7O4		
Di  

78

>?; ; B EJJ12==A JJ12==A OR]];D DLr   