
    dafb                     d    d Z ddlZddlmZ ddlmZmZmZm	Z	 d Z
 G d dej                        Zy)a  Fixer for operator functions.

operator.isCallable(obj)       -> callable(obj)
operator.sequenceIncludes(obj) -> operator.contains(obj)
operator.isSequenceType(obj)   -> isinstance(obj, collections.abc.Sequence)
operator.isMappingType(obj)    -> isinstance(obj, collections.abc.Mapping)
operator.isNumberType(obj)     -> isinstance(obj, numbers.Number)
operator.repeat(obj, n)        -> operator.mul(obj, n)
operator.irepeat(obj, n)       -> operator.imul(obj, n)
    N)
fixer_base)CallNameStringtouch_importc                       fd}|S )Nc                     | _         | S N)
invocation)fss    5/root/Python-3.12.4/Lib/lib2to3/fixes/fix_operator.pydeczinvocation.<locals>.dec   s         )r   r   s   ` r   r   r      s     Jr   c                      e Zd ZdZdZdZdZd eee      z  Zd Z	 e
d      d	        Z e
d
      d        Z e
d      d        Z e
d      d        Z e
d      d        Z e
d      d        Z e
d      d        Zd Zd Zd Zy)FixOperatorTprez
              method=('isCallable'|'sequenceIncludes'
                     |'isSequenceType'|'isMappingType'|'isNumberType'
                     |'repeat'|'irepeat')
              z'(' obj=any ')'z
              power< module='operator'
                trailer< '.' %(methods)s > trailer< %(obj)s > >
              |
              power< %(methods)s trailer< %(obj)s > >
              )methodsobjc                 >    | j                  ||      }|	 |||      S y r
   )_check_method)selfnoderesultsmethods       r   	transformzFixOperator.transform+   s,    ##D'2$(( r   zoperator.contains(%s)c                 (    | j                  ||d      S )Ncontains_handle_renamer   r   r   s      r   _sequenceIncludeszFixOperator._sequenceIncludes0   s    ""4*==r   zcallable(%s)c                 l    |d   }t        t        d      |j                         g|j                        S )Nr   callableprefix)r   r   cloner'   )r   r   r   r   s       r   _isCallablezFixOperator._isCallable4   s+    enD$syy{mDKKHHr   zoperator.mul(%s)c                 (    | j                  ||d      S )Nmulr    r"   s      r   _repeatzFixOperator._repeat9   s    ""4%88r   zoperator.imul(%s)c                 (    | j                  ||d      S )Nimulr    r"   s      r   _irepeatzFixOperator._irepeat=   s    ""4&99r   z(isinstance(%s, collections.abc.Sequence)c                 *    | j                  ||dd      S )Ncollections.abcSequence_handle_type2abcr"   s      r   _isSequenceTypezFixOperator._isSequenceTypeA   s    $$T74EzRRr   z'isinstance(%s, collections.abc.Mapping)c                 *    | j                  ||dd      S )Nr1   Mappingr3   r"   s      r   _isMappingTypezFixOperator._isMappingTypeE   s    $$T74EyQQr   zisinstance(%s, numbers.Number)c                 *    | j                  ||dd      S )NnumbersNumberr3   r"   s      r   _isNumberTypezFixOperator._isNumberTypeI   s    $$T7IxHHr   c                 B    |d   d   }||_         |j                          y )Nr   r   )valuechanged)r   r   r   namer   s        r   r!   zFixOperator._handle_renameM   s"    "1%r   c                     t        d ||       |d   }|j                         t        ddj                  ||g      z         g}t	        t        d      ||j                        S )Nr   z, .
isinstancer&   )r   r(   r   joinr   r   r'   )r   r   r   moduleabcr   argss          r   r4   zFixOperator._handle_type2abcR   sV    T64(en		VD388VSM+B$BCDD&T[[AAr   c                     t        | d|d   d   j                  z         }t        |t        j                  j
                        r9d|v r|S t        |d         f}|j                  |z  }| j                  |d|z         y )N_r   r   rE   r   zYou should use '%s' here.)	getattrr>   rC   collectionsrF   Callablestrr   warning)r   r   r   r   subinvocation_strs         r   r   zFixOperator._check_methodX   s|    sWX%6q%9%?%??@fkoo6677"75>*,!'!2!2S!8T#>#OPr   N)__name__
__module____qualname__BM_compatibleorderr   r   dictPATTERNr   r   r#   r)   r,   r/   r5   r8   r<   r!   r4   r   r   r   r   r   r      s   MEG
 C
 c23G)
 '(> )> I  I "#9 $9 #$: %: :;S <S 9:R ;R 01I 2I
B	r   r   )__doc__collections.abcrK   lib2to3r   lib2to3.fixer_utilr   r   r   r   r   BaseFixr   r   r   r   <module>r]      s3   	   ? ?G*$$ Gr   