
    -Ph                        d dl mZ d dlZd dlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ dd	lmZ dd
lmZmZmZ  G d de          Zd ZdS )    )annotationsN   )ExtensionModule
ModuleInfo   )mlog)
Dependency)DubDependency)typed_pos_args)
Popen_safeMesonExceptionlistifyc                  ~     e Zd ZdZdZ edd          Z fdZd Z e	de
e
          d             Zdd	Zd
 Z xZS )DlangModuleNFdlangz0.48.0c                    t                                          |           | j                            d| j        i           d S )Ngenerate_dub_file)super__init__methodsupdater   )selfinterpreter	__class__s     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/modules/dlang.pyr   zDlangModule.__init__   sL    %%%!7
 	 	 	 	 	    c                z   t           j        5t          j        )t          j        d         | _        | j        t           _        nt           j        | _        t           j        ,|                     |          | _        | j        t           _        nt           j        | _        | j        s| j        st          d          d S d S )Nr   zDUB not found.)r   class_dubbinr
   dubbin	check_dubr   )r   states     r   	_init_dubzDlangModule._init_dub   s    #+0J0V'4Q7DK'+{K$$%2DK#+..//DK'+{K$$%2DK{ 	7; 7$%5666	7 	77 7r   zdlang.generate_dub_filec                6   t           j        s|                     |           d|d         i}t          j                            |d         d          }t          j                            |          rct          |d          5 }	 t          j	        |          }n$# t          $ r t          j        d           Y nw xY wd d d            n# 1 swxY w Y   dd	g}|D ]2}||vr,||vr(t          j        d
t          j        |          d           3|                                D ]\  }	}
|	dk    rt          |
d          }i ||	<   |D ]x}t!          |t"                    ra|                                }|                     d|g          \  }}|dk    r-|                                }|d||	         |<   m|||	         |<   y|
||	<   t          |dd          5 }|                    t          j        |dd                     d d d            d S # 1 swxY w Y   d S )Nnamer   r   zdub.jsonzutf-8)encodingz#Failed to load the data in dub.jsondescriptionlicenseWithoutz"the DUB package can't be publisheddependenciesF)flattendescribe w   )indentensure_ascii)r   init_dubr"   ospathjoinexistsopenjsonload
ValueErrorr   warningbolditemsr   
isinstancer	   get_name_call_dubbinget_versionwritedumps)r   r!   argskwargsconfigconfig_pathofilewarn_publishingargkeyvaluevaluesdepr$   retresversions                    r   r   zDlangModule.generate_dub_file/   s   # 	"NN5!!! DG
 gll47J777>>+&& 	HkG444 HH!Yu--FF! H H HL!FGGGGGHH H H H H H H H H H H H H H H ))4" 	_ 	_C&  &  Y	#8]^^^ ,,.. 	$ 	$JCn$$ 666 s! 	< 	<C!#z22 <"||~~#'#4#4j$5G#H#HS!88&)oo&7&7G&46sD 1 14;sD 1	< $s+sW555 	JKK
6!%HHHIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	JsH   C	BC	B:7C	9B::C		CC+HHHc                    t          | j                                        |z   |          dd         \  }}|j        |                                fS )N)envr   r   )r   r   get_command
returncodestrip)r   rC   rR   pouts        r   r?   zDlangModule._call_dubbinZ   sI    DK3355<#FFFqsK3|SYY[[((r   c                   |                     dd          }|                                r	 t          |                                dgz             dd         \  }}|j        dk    rNt          j        d                    d                    |                                                               d	}n# t          t          f$ r d	}Y nw xY wd	}|rPt          j        d
t          j        |                                          d|                                z             n't          j        d
t          j        d                     |S )NdubT)silentz	--versionr   r   z"Found dub {!r} but couldn't run it Fz
Found DUB:z(%s)NO)find_programfoundr   rS   rT   r   r:   formatr4   FileNotFoundErrorPermissionErrorlogr;   get_pathrU   red)r   r!   r   rV   rW   s        r   r    zDlangModule.check_dub^   sL   ##E$#77<<>> 		#F$6$6$8$8K=$HII!A#N3<1$$L "$$*F388F4F4F4H4H+I+I$J$JL L L #F%7    F 	3H\49V__->->#?#?ciikk)+ + + + H\48D>>222s   B	B7 7CCN)__name__
__module____qualname__r   r1   r   INFOr   r"   r   strr   r?   r    __classcell__)r   s   @r   r   r      s        LH:gx((D    7 7 7" ^-sC88(J (J 98(JT) ) ) )      r   r   c                     t          | i |S re   )r   )rC   rD   s     r   
initializerm   t   s    ''''r   )
__future__r   r7   r2   r,   r   r   r   r)   r	   dependencies.dubr
   interpreterbaser   mesonlibr   r   r   r   rm    r   r   <module>rs      s    # " " " " "  				 ) ) ) ) ) ) ) )       % % % % % % , , , , , , , , , , , , : : : : : : : : : :` ` ` ` `/ ` ` `D( ( ( ( (r   