o
    Š�bcb  ã                   @   sN   d Z ddlZddlmZ ddlmZmZmZm	Z	 dd„ Z
G d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                    s   ‡ fdd„}|S )Nc                    s
   ˆ | _ | S ©N)Ú
invocation)Úf©Ús© ú1/usr/lib/python3.10/lib2to3/fixes/fix_operator.pyÚdec   s   zinvocation.<locals>.decr   )r   r   r   r
   r   r      s   r   c                   @   s¼   e Zd ZdZdZdZdZdeeed� Zdd„ Z	e
d	ƒd
d„ ƒZe
dƒdd„ ƒZe
dƒdd„ ƒZe
dƒdd„ ƒZe
dƒdd„ ƒZe
dƒdd„ ƒZe
dƒdd„ ƒZdd„ Zd d!„ Zd"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                 C   s"   |   ||¡}|d ur|||ƒS d S r   )Ú_check_method)ÚselfÚnodeÚresultsÚmethodr   r   r   Ú	transform+   s   
ÿzFixOperator.transformzoperator.contains(%s)c                 C   ó   |   ||d¡S )NÚcontains©Ú_handle_rename©r   r   r   r   r   r   Ú_sequenceIncludes0   ó   zFixOperator._sequenceIncludeszcallable(%s)c                 C   s"   |d }t tdƒ| ¡ g|jd�S )Nr   Úcallable©Úprefix)r   r   Úcloner"   )r   r   r   r   r   r   r   Ú_isCallable4   s   zFixOperator._isCallablezoperator.mul(%s)c                 C   r   )NÚmulr   r   r   r   r   Ú_repeat9   r   zFixOperator._repeatzoperator.imul(%s)c                 C   r   )NÚimulr   r   r   r   r   Ú_irepeat=   r   zFixOperator._irepeatz(isinstance(%s, collections.abc.Sequence)c                 C   ó   |   ||dd¡S )Núcollections.abcÚSequence©Ú_handle_type2abcr   r   r   r   Ú_isSequenceTypeA   ó   zFixOperator._isSequenceTypez'isinstance(%s, collections.abc.Mapping)c                 C   r)   )Nr*   ÚMappingr,   r   r   r   r   Ú_isMappingTypeE   r/   zFixOperator._isMappingTypezisinstance(%s, numbers.Number)c                 C   r)   )NÚnumbersÚNumberr,   r   r   r   r   Ú_isNumberTypeI   r/   zFixOperator._isNumberTypec                 C   s   |d d }||_ | ¡  d S )Nr   r   )ÚvalueÚchanged)r   r   r   Únamer   r   r   r   r   M   s   zFixOperator._handle_renamec                 C   sF   t d ||ƒ |d }| ¡ tdd ||g¡ ƒg}ttdƒ||jd�S )Nr   z, Ú.Ú
isinstancer!   )r   r#   r   Újoinr   r   r"   )r   r   r   ÚmoduleÚabcr   Úargsr   r   r   r-   R   s   zFixOperator._handle_type2abcc                 C   s^   t | d|d d j ƒ}t|tjjƒr-d|v r|S t|d ƒf}|j| }|  |d| ¡ d S )NÚ_r   r   r;   r   zYou should use '%s' here.)	Úgetattrr5   r9   Úcollectionsr<   ÚCallableÚstrr   Úwarning)r   r   r   r   ÚsubÚinvocation_strr   r   r   r   X   s   
zFixOperator._check_methodN)Ú__name__Ú
__module__Ú__qualname__ÚBM_compatibleÚorderr   r   ÚdictÚPATTERNr   r   r   r$   r&   r(   r.   r1   r4   r   r-   r   r   r   r   r   r      s4    
û






r   )Ú__doc__Úcollections.abcr@   Úlib2to3r   Úlib2to3.fixer_utilr   r   r   r   r   ÚBaseFixr   r   r   r   r   Ú<module>   s    