o
    ﵔc                      @  s   d dl mZ d dlZd dlZd dlZddlmZ ddl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	 d	e	e ZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    )annotationsN   )version_compare)	ObjectHolderMesonOperator
FeatureNewtyped_operatornoArgsFlatteningnoKwargs	noPosargstyped_pos_argsInvalidArguments)Interpreter)TYPE_varTYPE_kwargsc                      s  e Zd ZdQ fddZdRd	d
ZeededSddZeededSddZ	eededSddZ
eeededdTddZeededdUd d!Zeed"eedVd$d%Zeed&egd'dWd*d+Zeed,egd'dXd-d.Zeed/eegd'dYd1d2ZeedZd5d6Zeed[d7d8Zeed[d9d:Zeed[d;d<Zeed=edSd>d?Zed\dBdCZedDdEeejed]dFdGZ eej!ed^dHdIZ"edJdKeej#ed_dLdMZ$edNdKeej%ed_dOdPZ&  Z'S )`StringHolderobjstrinterpreter'Interpreter'returnNonec                   s  t  ||  j j j j j j j	 j
 j j j j j j jd  jtjt fddftjt fddftjt fddftjt fddftjt fddftjt fddftjt fd	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stripZ	substringZto_intZto_lowerZto_upperZunderscorifyr   c                   s
    j |  S Nheld_objectxself home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/interpreter/primitives/string.py<lambda>4      
 z'StringHolder.__init__.<locals>.<lambda>c                   s
    j | kS r    r!   r#   r%   r'   r(   r)   7   r*   c                   s
    j | kS r    r!   r#   r%   r'   r(   r)   8   r*   c                   s
    j | kS r    r!   r#   r%   r'   r(   r)   9   r*   c                   s
    j | k S r    r!   r#   r%   r'   r(   r)   :   r*   c                   s
    j | kS r    r!   r#   r%   r'   r(   r)   ;   r*   c                   s
    j | kS r    r!   r#   r%   r'   r(   r)   <   r*   )%super__init__methodsupdatecontains_methodstartswith_methodendswith_methodformat_methodjoin_methodreplace_methodsplit_methodstrip_methodsubstring_methodto_int_methodto_lower_methodto_upper_methodunderscorify_methodversion_compare_methodZtrivial_operatorsr   PLUSr   ZEQUALSZ
NOT_EQUALSGREATERLESSZGREATER_EQUALSZLESS_EQUALSZ	operatorsDIVop_divINDEXop_indexINop_inNOT_INop_notin)r&   r   r   	__class__r%   r(   r,      s@   
zStringHolder.__init__c                 C  s   dS )Nr   r'   r%   r'   r'   r(   display_nameG   s   zStringHolder.display_namezstr.containsargsT.Tuple[str]kwargsr   boolc                 C  s   | j |d dkS Nr   )r"   findr&   rK   rM   r'   r'   r(   r/   J   s   zStringHolder.contains_methodzstr.startswithc                 C     | j |d S rO   )r"   r   rQ   r'   r'   r(   r0   O      zStringHolder.startswith_methodzstr.endswithc                 C  rR   rO   )r"   r   rQ   r'   r'   r(   r1   T   rS   zStringHolder.endswith_methodz
str.format)varargsT.Tuple[T.List[object]]c                   sT   g  |d D ]}t |trt| } t| qd	 fdd}td|| jS )
Nr   matchT.Match[str]r   r   c                   s2   t | d}|t krtd| d | S )N   zFormat placeholder @z@ out of range.)intgrouplenr   )rV   idxZarg_stringsr'   r(   arg_replacec   s   z/StringHolder.format_method.<locals>.arg_replacez@(\d+)@)rV   rW   r   r   )
isinstancerN   r   lowerappendresubr"   )r&   rK   rM   argr^   r'   r]   r(   r2   Y   s   
zStringHolder.format_methodzstr.joinT.Tuple[T.List[str]]c                 C  rR   rO   )r"   r   rQ   r'   r'   r(   r3   k   rS   zStringHolder.join_methodzstr.replaceT.Tuple[str, str]c                 C  s   | j |d |d S Nr   rX   )r"   r   rQ   r'   r'   r(   r4   p   s   zStringHolder.replace_methodz	str.split)ZoptargsT.Tuple[T.Optional[str]]T.List[str]c                 C  rR   rO   )r"   r   rQ   r'   r'   r(   r5   u   rS   zStringHolder.split_methodz	str.stripc                 C  rR   rO   )r"   r   rQ   r'   r'   r(   r6   z   rS   zStringHolder.strip_methodzstr.substring)T.Tuple[T.Optional[int], T.Optional[int]]c                 C  sD   |d d ur
|d nd}|d d ur|d nt | j}| j|| S rg   )r[   r"   )r&   rK   rM   startendr'   r'   r(   r7      s   zStringHolder.substring_methodT.List[TYPE_var]rY   c                 C  s.   zt | jW S  ty   td| jdw )NzString z cannot be converted to int)rY   r"   
ValueErrorr   rQ   r'   r'   r(   r8      s
   zStringHolder.to_int_methodc                 C  
   | j  S r    )r"   r`   rQ   r'   r'   r(   r9         
zStringHolder.to_lower_methodc                 C  ro   r    )r"   upperrQ   r'   r'   r(   r:      rp   zStringHolder.to_upper_methodc                 C  s   t dd| jS )Nz[^a-zA-Z0-9]_)rb   rc   r"   rQ   r'   r'   r(   r;      rS   z StringHolder.underscorify_methodstr.version_comparec                 C  s   t | j|d S rO   )r   r"   rQ   r'   r'   r(   r<      rS   z#StringHolder.version_compare_methodthisotherc                 C  s   t j| |ddS )N\/)ospathr   r   )rt   ru   r'   r'   r(   _op_div   s   zStringHolder._op_divz/ with string argumentsz0.49.0c                 C  s   |  | j|S r    )rz   r"   r&   ru   r'   r'   r(   rA      s   zStringHolder.op_divc              	   C  s8   z| j | W S  ty   td| dt| j  dw )NzIndex z! out of bounds of string of size .)r"   
IndexErrorr   r[   r{   r'   r'   r(   rC      s
   zStringHolder.op_indexz"in" string operatorz1.0.0c                 C  s
   || j v S r    r!   r{   r'   r'   r(   rE      rp   zStringHolder.op_inz"not in" string operatorc                 C  s
   || j vS r    r!   r{   r'   r'   r(   rG      rp   zStringHolder.op_notin)r   r   r   r   r   r   )r   r   rK   rL   rM   r   r   rN   )rK   rU   rM   r   r   r   )rK   re   rM   r   r   r   )rK   rf   rM   r   r   r   )rK   rh   rM   r   r   ri   )rK   rh   rM   r   r   r   )rK   rj   rM   r   r   r   )rK   rm   rM   r   r   rY   )rK   rm   rM   r   r   r   )rt   r   ru   r   r   r   )ru   r   r   r   )ru   rY   r   r   )ru   r   r   rN   )(__name__
__module____qualname__r,   rJ   r
   r   r   r/   r0   r1   r	   objectr2   r3   r4   r5   r6   rY   r7   r   r8   r9   r:   r;   r<   staticmethodrz   r   r   r   r@   rA   rB   rC   rD   rE   rF   rG   __classcell__r'   r'   rH   r(   r      sv    
(






r   c                   @     e Zd ZdS )MesonVersionStringNr   r   r   r'   r'   r'   r(   r          r   c                   @  s$   e Zd Zeededdd	Zd
S )MesonVersionStringHolderrs   rK   rL   rM   r   r   rN   c                 C  s   |d | j _t| j|d S rO   )r   Ztmp_meson_versionr   r"   rQ   r'   r'   r(   r<      s   z/MesonVersionStringHolder.version_compare_methodNr~   )r   r   r   r
   r   r   r<   r'   r'   r'   r(   r      s    r   c                   @  r   )DependencyVariableStringNr   r'   r'   r'   r(   r      r   r   c                      s   e Zd Zd fddZ  ZS )DependencyVariableStringHolderru   r   r   &T.Union[str, DependencyVariableString]c                   s    t  |}d|v r|S t|S )Nz..)r+   rA   r   )r&   ru   retrH   r'   r(   rA      s   z%DependencyVariableStringHolder.op_div)ru   r   r   r   )r   r   r   rA   r   r'   r'   rH   r(   r      s    r   c                   @  s*   e Zd ZU ded< dddZdd
dZdS )OptionStringr   optnamevaluenamer   'OptionString'c                 C  s   t | |}||_|S r    )r   __new__r   )clsr   r   r   r'   r'   r(   r      s   zOptionString.__new__rf   c                 C  s   t | | jfS r    )r   r   r%   r'   r'   r(   __getnewargs__   s   zOptionString.__getnewargs__N)r   r   r   r   r   r   )r   rf   )r   r   r   __annotations__r   r   r'   r'   r'   r(   r      s   
 
r   c                      s(   e Zd ZU ded< d	 fddZ  ZS )
OptionStringHolderr   r"   ru   r   r   T.Union[str, OptionString]c                   s&   t  |}| | jj|}t||S r    )r+   rA   rz   r"   r   r   )r&   ru   r   r   rH   r'   r(   rA      s   
zOptionStringHolder.op_div)ru   r   r   r   )r   r   r   r   rA   r   r'   r'   rH   r(   r      s   
 r   )
__future__r   rb   rx   typingTZmesonlibr   Zinterpreterbaser   r   r   r   r	   r
   r   r   r   TYPE_CHECKINGr   r   r   r   r   r   r   r   r   r   r   r   r'   r'   r'   r(   <module>   s"   ,  