
    -Ph\$                    h   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mZmZmZmZmZmZmZmZmZ ej        rddlmZ ddl	mZmZ  G d d	e
e                   Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z  G d de          Z!dS )    )annotationsN   )version_compareversion_compare_many)ObjectHolderMesonOperator
FeatureNewtyped_operatornoArgsFlatteningnoKwargs	noPosargstyped_pos_argsInvalidArgumentsFeatureBrokenstringifyUserArguments)Interpreter)TYPE_varTYPE_kwargsc                  8    e Zd ZdC fdZdDdZe ed	e          dEd                        Ze ede          dEd                        Z	e ede          dEd                        Z
ee ede          dFd                                    Zee edd          dGd                                    Ze ede          dHd                        Ze ed d!           ed ee          dId#                                    Ze ed$eg%          dJd'                        Ze ed(eg%          dKd)                        Ze ed*d+           ed*eeg%          dLd-                                    ZeedMd/                        ZeedNd0                        ZeedNd1                        ZeedNd2                        Ze ed3ed45          dOd6                        ZedPd9            Z ed:d;           eej         e          dQd<                        Z! eej"        e          dRd=            Z# ed>d?           eej$        e          dSd@                        Z% edAd?           eej&        e          dSdB                        Z' xZ(S )TStringHolderobjstrinterpreter'Interpreter'returnNonec                \    t                                          ||            j                             j         j         j         j         j         j	         j
         j         j         j         j         j         j         j         j        d            j                            t(          j        t,           fdft(          j        t,           fdft(          j        t,           fdft(          j        t,           fdft(          j        t,           fdft(          j        t,           fdft(          j        t,           fdfi            j                            t(          j         j        t(          j          j!        t(          j"         j#        t(          j$         j%        i           d S )	N)contains
startswithendswithformatjoinreplacesplit
splitlinesstrip	substringto_intto_lowerto_upperunderscorifyr   c                    j         | z   S Nheld_objectxselfs    h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/interpreter/primitives/string.py<lambda>z'StringHolder.__init__.<locals>.<lambda>6   s    0@10D     c                    j         | k    S r-   r.   r0   s    r3   r4   z'StringHolder.__init__.<locals>.<lambda>9   s    $2Ba2G r5   c                    j         | k    S r-   r.   r0   s    r3   r4   z'StringHolder.__init__.<locals>.<lambda>:   s    d6F!6K r5   c                    j         | k    S r-   r.   r0   s    r3   r4   z'StringHolder.__init__.<locals>.<lambda>;   s    43Ca3G r5   c                    j         | k     S r-   r.   r0   s    r3   r4   z'StringHolder.__init__.<locals>.<lambda><   s    0@10D r5   c                    j         | k    S r-   r.   r0   s    r3   r4   z'StringHolder.__init__.<locals>.<lambda>=   s    $:Ja:O r5   c                    j         | k    S r-   r.   r0   s    r3   r4   z'StringHolder.__init__.<locals>.<lambda>>   s    t7G17L r5   )&super__init__methodsupdatecontains_methodstartswith_methodendswith_methodformat_methodjoin_methodreplace_methodsplit_methodsplitlines_methodstrip_methodsubstring_methodto_int_methodto_lower_methodto_upper_methodunderscorify_methodversion_compare_methodtrivial_operatorsr   PLUSr   EQUALS
NOT_EQUALSGREATERLESSGREATER_EQUALSLESS_EQUALS	operatorsDIVop_divINDEXop_indexINop_inNOT_INop_notin)r2   r   r   	__class__s   `  r3   r=   zStringHolder.__init__    s   k***,0,($*&0&.(,, 4#:
 
 	 	 	$ 	%%&D&D&D&D E  3(G(G(G(G"H$s,K,K,K,K&L!C)G)G)G)G#H&D&D&D&D E(30O0O0O0O*P%-L-L-L-L'M'
 	 	 	 	t{dj $-	
 	 	 	 	 	r5   c                    dS )Nr    r2   s    r3   display_namezStringHolder.display_nameI   s    ur5   zstr.containsargsT.Tuple[str]kwargsr   boolc                J    | j                             |d                   dk    S Nr   )r/   findr2   re   rg   s      r3   r@   zStringHolder.contains_methodL   s$     $$T!W--22r5   zstr.startswithc                B    | j                             |d                   S rj   )r/   r   rl   s      r3   rA   zStringHolder.startswith_methodQ   s     **47333r5   zstr.endswithc                B    | j                             |d                   S rj   )r/   r    rl   s      r3   rB   zStringHolder.endswith_methodV   s     ((a111r5   z
str.format)varargsT.Tuple[T.List[TYPE_var]]c                   g |d         D ]}	                      t          || j                             ,# t          $ r^}t	          j        dt          |           d| j        | j                                        t          |                     Y d }~d }~ww xY wdfd	}t          j	        d
|| j
                  S )Nr   zstr.format: z1.3.0locationmatchT.Match[str]r   r   c                    t          |                     d                    }|t                    k    rt          d| d          |         S )N   zFormat placeholder @z@ out of range.)intgrouplenr   )rt   idxarg_stringss     r3   arg_replacez/StringHolder.format_method.<locals>.arg_replaceg   sR    ekk!nn%%Cc+&&&&&'Rc'R'R'RSSSs##r5   z@(\d+)@)rt   ru   r   r   )appendr   
subprojectr   r   
single_user   current_noderesubr/   )r2   re   rg   arger}   r|   s         @r3   rC   zStringHolder.format_method[   s     $&7 	- 	-C-""#9#t#O#OPPPP# - - -()@A)@)@'4?eievwwww""3s88,,,,,,,,-	$ 	$ 	$ 	$ 	$ 	$ vj+t/?@@@s   (8
B ABB zstr.splitlinesz1.2.0T.List[TYPE_var]T.List[str]c                4    | j                                         S r-   )r/   r%   rl   s      r3   rG   zStringHolder.splitlines_methodo   s     **,,,r5   zstr.joinT.Tuple[T.List[str]]c                B    | j                             |d                   S rj   )r/   r"   rl   s      r3   rD   zStringHolder.join_methodu   s     $$T!W---r5   zstr.replacez0.58.0T.Tuple[str, str]c                P    | j                             |d         |d                   S Nr   rw   )r/   r#   rl   s      r3   rE   zStringHolder.replace_methodz   s%     ''Qa999r5   z	str.split)optargsT.Tuple[T.Optional[str]]c                B    | j                             |d                   S rj   )r/   r$   rl   s      r3   rF   zStringHolder.split_method   s     %%d1g...r5   z	str.stripc                    |d         r"t          j        dd| j        | j                   | j                            |d                   S )Nr   z$str.strip with a positional argumentz0.43.0rr   )r	   r   r   r   r/   r&   rl   s      r3   rH   zStringHolder.strip_method   s[     7 	A!"H(TXTcnrn  A  A  A  A%%d1g...r5   zstr.substringz0.56.0)T.Tuple[T.Optional[int], T.Optional[int]]c                    |d         |d         nd}|d         |d         nt          | j                  }| j        ||         S r   )rz   r/   )r2   re   rg   startends        r3   rI   zStringHolder.substring_method   sM      7.QAa,d1gg#d6F2G2Gc	**r5   rx   c                x    	 t          | j                  S # t          $ r t          d| j        d          w xY w)NzString z cannot be converted to int)rx   r/   
ValueErrorr   rl   s      r3   rJ   zStringHolder.to_int_method   sU    	^t'((( 	^ 	^ 	^"#\T-=#\#\#\]]]	^s    #9c                4    | j                                         S r-   )r/   lowerrl   s      r3   rK   zStringHolder.to_lower_method        %%'''r5   c                4    | j                                         S r-   )r/   upperrl   s      r3   rL   zStringHolder.to_upper_method   r   r5   c                8    t          j        dd| j                  S )Nz[^a-zA-Z0-9]_)r   r   r/   rl   s      r3   rM   z StringHolder.underscorify_method   s     vosD,<===r5   str.version_comparerw   )ro   min_varargsc                    t          |d                   dk    r"t          j        dd| j        | j                   t          | j        |d                   d         S )Nr   rw   z)version_compare() with multiple argumentsz1.8.0rr   )rz   r	   r   r   r   r   r/   rl   s      r3   rN   z#StringHolder.version_compare_method   sh     tAw<<!!"MwX\Xgrv  sD  E  E  E  E#D$4d1g>>qAAr5   thisotherc                j    t           j                            | |                              dd          S )N\/)ospathr"   r#   )r   r   s     r3   _op_divzStringHolder._op_div   s(    w||D%((00s;;;r5   z/ with string argumentsz0.49.0c                8    |                      | j        |          S r-   )r   r/   r2   r   s     r3   rY   zStringHolder.op_div   s     ||D,e444r5   c           	         	 | j         |         S # t          $ r) t          d| dt          | j                    d          w xY w)NzIndex z! out of bounds of string of size .)r/   
IndexErrorr   rz   r   s     r3   r[   zStringHolder.op_index   sd    	n#E** 	n 	n 	n"#lE#l#lTWX\XhTiTi#l#l#lmmm	ns	    3Az"in" string operatorz1.0.0c                    || j         v S r-   r.   r   s     r3   r]   zStringHolder.op_in   s     (((r5   z"not in" string operatorc                    || j         vS r-   r.   r   s     r3   r_   zStringHolder.op_notin   s     D,,,r5   )r   r   r   r   r   r   )r   r   re   rf   rg   r   r   rh   )re   rp   rg   r   r   r   )re   r   rg   r   r   r   )re   r   rg   r   r   r   )re   r   rg   r   r   r   )re   r   rg   r   r   r   )re   r   rg   r   r   r   )re   r   rg   r   r   r   )re   r   rg   r   r   rx   )re   r   rg   r   r   r   )re   r   rg   r   r   rh   )r   r   r   r   r   r   )r   r   r   r   )r   rx   r   r   )r   r   r   rh   ))__name__
__module____qualname__r=   rd   r   r   r   r@   rA   rB   r   objectrC   r   r	   rG   rD   rE   rF   rH   rx   rI   rJ   rK   rL   rM   rN   staticmethodr   r
   r   rX   rY   rZ   r[   r\   r]   r^   r_   __classcell__r`   s   @r3   r   r      s       ' ' ' ' ' 'R    ^NC((3 3 3 )( X3 ^$c**4 4 4 +* X4 ^NC((2 2 2 )( X2 ^L&111A A A 21 X A" Z '**- - - +* Y X- ^J,,,. . . -, X. Zx((^M3,,: : : -, )( X: ^K#//// / / 0/ X/ ^K#//// / / 0/ X/
 Z**^Oc3Z888+ + + 98 +* X+
 ^ ^ ^ Y X^ ( ( ( Y X( ( ( ( Y X( > > > Y X> ^)3AFFFB B B GF XB
 < < < \< Z)844^M%s++5 5 5 ,+ 545 ^M'--n n n .-n Z&00^M$c**) ) ) +* 10) Z*G44^M(#..- - - /. 54- - - - -r5   r   c                      e Zd ZdS )MesonVersionStringNr   r   r   rb   r5   r3   r   r              Dr5   r   c                  J    e Zd Ze ede          d
d                        Zd	S )MesonVersionStringHolderr   re   rf   rg   r   r   rh   c                \    |d         | j         _        t          | j        |d                   S rj   )r   tmp_meson_versionr   r/   rl   s      r3   rN   z/MesonVersionStringHolder.version_compare_method   s*     .2!W*t/a999r5   Nr   )r   r   r   r   r   r   rN   rb   r5   r3   r   r      sJ        ^)3//: : : 0/ X: : :r5   r   c                      e Zd ZdS )DependencyVariableStringNr   rb   r5   r3   r   r      r   r5   r   c                        e Zd Zd fdZ xZS )DependencyVariableStringHolderr   r   r   &T.Union[str, DependencyVariableString]c                p    t                                          |          }d|v r|S t          |          S )Nz..)r<   rY   r   )r2   r   retr`   s      r3   rY   z%DependencyVariableStringHolder.op_div   s4    ggnnU##5==J',,,r5   )r   r   r   r   )r   r   r   rY   r   r   s   @r3   r   r      s=        - - - - - - - - - -r5   r   c                  *    e Zd ZU ded<   ddZdd	Zd
S )OptionStringr   optnamevaluenamer   'OptionString'c                J    t                               | |          }||_        |S r-   )r   __new__r   )clsr   r   r   s       r3   r   zOptionString.__new__   s!    kk#u%%
r5   r   c                .    t          |           | j        fS r-   )r   r   rc   s    r3   __getnewargs__zOptionString.__getnewargs__   s    D		4<((r5   N)r   r   r   r   r   r   )r   r   )r   r   r   __annotations__r   r   rb   r5   r3   r   r      sG         LLL   
) ) ) ) ) )r5   r   c                  ,     e Zd ZU ded<   d fdZ xZS )	OptionStringHolderr   r/   r   r   r   T.Union[str, OptionString]c                    t                                          |          }|                     | j        j        |          }t          ||          S r-   )r<   rY   r   r/   r   r   )r2   r   r   r   r`   s       r3   rY   zOptionStringHolder.op_div   sA    ggnnU##||D,4e<<C&&&r5   )r   r   r   r   )r   r   r   r   rY   r   r   s   @r3   r   r      sK         ' ' ' ' ' ' ' ' ' 'r5   r   )"
__future__r   r   r   typingTmesonlibr   r   interpreterbaser   r   r	   r
   r   r   r   r   r   r   r   TYPE_CHECKINGr   r   r   r   r   r   r   r   r   r   r   r   rb   r5   r3   <module>r      sE   # " " " " " 				 				     = = = = = = = =                          ? 9******88888888k- k- k- k- k-<$ k- k- k-\	 	 	 	 	 	 	 	: : : : :| : : :	 	 	 	 	s 	 	 	- - - - -\ - - -	) 	) 	) 	) 	)3 	) 	) 	)' ' ' ' ' ' ' ' ' 'r5   