
    -Ph                        d dl mZ d dlmZ d dlZd dlZd dlZddlm	Z	m
Z
 ddlmZmZ ddlmZmZ dd	lmZmZ ej        rdd
lmZ ddZ G d d          ZddZddZdS )    )annotations)defaultdictN   )run_tool_on_targetsrun_with_buffered_output   )buildmlog)MachineChoice
PerMachine)WrapModewrap)RustCompilercmdlistT.List[str]cratestrreturnintc                   K   t          |            d {V }|dk    r@t          t          j        d          t          j                            d|                     |S )Nr   	Generateddoc)r   printr
   greenospathjoin)r   r   
returncodes      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/scripts/rustdoc.pyrun_and_confirm_successr       s^      /88888888JQdj%%rw||E5'A'ABBB    c                  &    e Zd Zdd	ZddZddZdS )Rustdocr	   build.Buildtempdirr   subprojects
T.Set[str]r   Nonec                <   t          g g           | _        t          d           | _        || _        || _        t          D ][}|j        j        j	        |         }d|v r>t          j        d|d                   }|                    d|j                  | j        |<   \d S )Nc                     dS )NF r+   r!   r   <lambda>z"Rustdoc.__init__.<locals>.<lambda>   s    E r!   rustr   rustdoc)r   toolsr   warnedr%   r&   r   environmentcoredata	compilersTcastget_rust_tool)selfr	   r%   r&   machiner3   compilers          r   __init__zRustdoc.__init__   s    .8R.@.@
0;MM0J0J&$ 	[ 	[G)2<WEI""6.)F2CDD&.&<&<YHY&Z&Z
7#		[ 	[r!   r8   c                h    | j         |         rd S t          j        d| d           d| j         |<   d S )Nzrustdoc not found for z machineT)r0   r
   warning)r7   r8   s     r   warn_missing_rustdoczRustdoc.warn_missing_rustdoc$   sD    ;w 	F?g???@@@#Gr!   targetT.Dict[str, T.Any](T.Iterable[T.Coroutine[None, None, int]]c              #  .  K   |d         |d         | j         vrd S |d         D ]o}d|v rg|d         dk    rZt          | j        |d                   }|s|                     |d                    Nt	          |          }d }d }d}|d         D ]g}|r"|d	k    r|                    ||f           |}d }&|d
k    rd} n8|dv r|}7|dk    r*|                    d          s|                    |           h|r|rn|                    |d                    |                    d           |                    d           |                    d           t          ||          V  Ft          t          j        d          |d         d           qd S )N
subprojecttarget_sourcesr9   languager-   r8   F
parameters--crate-namez--testT>   --emit	--out-dir-lrF   z-grI   sourcesz--document-private-itemsz-or   Skippingnamez(no crate name))r&   getattrr/   r=   listextend
startswithappendr    r   r
   yellow)	r7   r>   	src_blockr.   r   prev
crate_nameis_testargs	            r   __call__zRustdoc.__call__*   s     ,+|0DDL\0\0\F 01 '	V '	VIY&&9Z+@F+J+J!$*i	.BCC --i	.BCCCw--!
$\2 , ,C !>11#NND#;777),J# h"& MMM"S^^D-A-As+++   VNN9Y#7888NN#=>>>NN4(((NN5)))1':FFFFFF$+j116&>CTUUUO'	V '	Vr!   N)r	   r$   r%   r   r&   r'   r   r(   )r8   r   r   r(   )r>   r?   r   r@   )__name__
__module____qualname__r:   r=   rX   r+   r!   r   r#   r#      sZ        	[ 	[ 	[ 	[$ $ $ $+V +V +V +V +V +Vr!   r#   
build_datar$   r'   c                    t          j        | j                                        | j        t
          j                  t          fd| j        j        j	        D                       S )N)	wrap_modec              3  V   K   | ]#}|r|j         vsj         |         j        |V  $d S )N)wrapstype).0spwrap_resolvers     r   	<genexpr>z*get_nonwrap_subprojects.<locals>.<genexpr>\   sZ       b bbM$777=;Nr;R;W;_ ;_;_;_;_b br!   )
r   Resolverr1   get_source_dirsubproject_dirr   
nodownloadsetr2   initialized_subprojects)r\   rd   s    @r   get_nonwrap_subprojectsrl   W   s    M--//!%' ' 'M  b b b b#/8Pb b b b b br!   argsc                4   t          j        | d                    t          j        t          j                              }t          |          }t          j                    5 }t          t          |||                    cd d d            S # 1 swxY w Y   d S )Nr   )
r   chdirr	   loadgetcwdrl   tempfileTemporaryDirectoryr   r#   )rm   r\   subproject_listds       r   runrv   `   s    HT!WBIKK((J-j99O		$	&	& L!"7:q/#J#JKKL L L L L L L L L L L L L L L L L Ls   "BBB)r   r   r   r   r   r   )r\   r$   r   r'   )rm   r   r   r   )
__future__r   collectionsr   r   rr   typingr4   run_toolr   r    r	   r
   mesonlibr   r   r   r   TYPE_CHECKINGcompilers.rustr   r    r#   rl   rv   r+   r!   r   <module>r      sF   # " " " " " # # # # # # 				      C C C C C C C C         0 0 0 0 0 0 0 0 ! ! ! ! ! ! ! !? .------   =V =V =V =V =V =V =V =V~b b b bL L L L L Lr!   