
    ZQdb                     b    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dS )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    1/usr/lib/python3.11/lib2to3/fixes/fix_operator.pydeczinvocation.<locals>.dec   s         )r   r   s   ` r   r   r      s#         Jr   c                   n   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dS )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                 N    |                      ||          }| |||          S d S r
   )_check_method)selfnoderesultsmethods       r   	transformzFixOperator.transform+   s7    ##D'226$((( r   zoperator.contains(%s)c                 0    |                      ||d          S )Ncontains_handle_renamer   r   r   s      r   _sequenceIncludeszFixOperator._sequenceIncludes0   s    ""4*===r   zcallable(%s)c                     |d         }t          t          d          |                                g|j                  S )Nr   callableprefix)r   r   cloner'   )r   r   r   r   s       r   _isCallablezFixOperator._isCallable4   s4    enD$$syy{{mDKHHHHr   zoperator.mul(%s)c                 0    |                      ||d          S )Nmulr    r"   s      r   _repeatzFixOperator._repeat9   s    ""4%888r   zoperator.imul(%s)c                 0    |                      ||d          S )Nimulr    r"   s      r   _irepeatzFixOperator._irepeat=   s    ""4&999r   z(isinstance(%s, collections.abc.Sequence)c                 2    |                      ||dd          S )Ncollections.abcSequence_handle_type2abcr"   s      r   _isSequenceTypezFixOperator._isSequenceTypeA   s    $$T74EzRRRr   z'isinstance(%s, collections.abc.Mapping)c                 2    |                      ||dd          S )Nr1   Mappingr3   r"   s      r   _isMappingTypezFixOperator._isMappingTypeE   s    $$T74EyQQQr   zisinstance(%s, numbers.Number)c                 2    |                      ||dd          S )NnumbersNumberr3   r"   s      r   _isNumberTypezFixOperator._isNumberTypeI   s    $$T7IxHHHr   c                 X    |d         d         }||_         |                                 d S )Nr   r   )valuechanged)r   r   r   namer   s        r   r!   zFixOperator._handle_renameM   s.    "1%r   c                     t          d ||           |d         }|                                t          dd                    ||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   sk    T64(((en		VD388VSM+B+B$BCCDD&&T[AAAAr   c                 
   t          | d|d         d         j        z             }t          |t          j        j                  r?d|v r|S t          |d                   f}|j        |z  }|                     |d|z             d S )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%??@@fko677 	Q7""75>**,!'!2S!8T#>#OPPPtr   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
 Dc2223G) ) )
 Z'((> > )(> ZI I  I Z"##9 9 $#9 Z#$$: : %$: Z:;;S S <;S Z9::R R ;:R Z011I I 21I  
B B B	 	 	 	 	r   r   )__doc__collections.abcrK   lib2to3r   lib2to3.fixer_utilr   r   r   r   r   BaseFixr   r   r   r   <module>r]      s   	 	           ? ? ? ? ? ? ? ? ? ? ? ?  G G G G G*$ G G G G Gr   