
    3g	                         d dl Z d dlmZ d dlmZ d dlmZm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y)    N)utils)%AbstractArithmeticOperatorReplacement)MutationOperatorMutationResignc                   "    e Zd Zd Zed        Zy)AssignmentOperatorReplacementc                 J    t        |j                  t        j                        S N)
isinstanceparentast	AugAssignselfnodes     /home/xtuchyna/.var/app/com.visualstudio.code/data/virtualenvs/gen-test-bench-v8TMe8KL/lib/python3.12/site-packages/mutpy/operators/misc.pyshould_mutatez+AssignmentOperatorReplacement.should_mutate	   s    $++s}}55    c                      y)NASR clss    r   namez"AssignmentOperatorReplacement.name       r   N)__name__
__module____qualname__r   classmethodr   r   r   r   r   r      s    6  r   r   c                       e Zd Zd Zd Zy)BreakContinueReplacementc                 *    t        j                         S r
   )r   Continuer   s     r   mutate_Breakz%BreakContinueReplacement.mutate_Break   s    ||~r   c                 *    t        j                         S r
   )r   Breakr   s     r   mutate_Continuez(BreakContinueReplacement.mutate_Continue   s    yy{r   N)r   r   r   r$   r'   r   r   r   r!   r!      s    r   r!   c                   6    e Zd ZdZdZd Zd Zd Zed        Z	y)ConstantReplacementmutpypythonc                 H    t        j                  |j                  dz         S )N   )n)r   Numr.   r   s     r   
mutate_NumzConstantReplacement.mutate_Num   s    ww!$$r   c                     t        j                  |      r
t               |j                  | j                  k7  r t        j                  | j                        S t        j                  | j                        S )Ns)r   is_docstringr   r3   FIRST_CONST_STRINGr   StrSECOND_CONST_STRINGr   s     r   
mutate_StrzConstantReplacement.mutate_Str    sU    d# ""66T,,,77T445577T5566r   c                     |j                   rt        j                  |      r
t               t	        j
                  d      S )N r2   )r3   r   r4   r   r   r6   r   s     r   mutate_Str_emptyz$ConstantReplacement.mutate_Str_empty)   s-    vv++D1 ""ww}r   c                      y)NCRPr   r   s    r   r   zConstantReplacement.name/   r   r   N)
r   r   r   r5   r7   r0   r8   r;   r   r   r   r   r   r)   r)      s1     "%7  r   r)   c                       e Zd Zd Zd Zd Zy)SliceIndexRemovec                     |j                   s
t               t        j                  d |j                  |j
                        S N)lowerupperstep)rB   r   r   SlicerC   rD   r   s     r   mutate_Slice_remove_lowerz*SliceIndexRemove.mutate_Slice_remove_lower5   s-    zz ""yyt4::DIIFFr   c                     |j                   s
t               t        j                  |j                  d |j
                        S rA   )rC   r   r   rE   rB   rD   r   s     r   mutate_Slice_remove_upperz*SliceIndexRemove.mutate_Slice_remove_upper;   s-    zz ""yytzzDIIFFr   c                     |j                   s
t               t        j                  |j                  |j
                  d       S rA   )rD   r   r   rE   rB   rC   r   s     r   mutate_Slice_remove_stepz)SliceIndexRemove.mutate_Slice_remove_stepA   s-    yy ""yytzz$GGr   N)r   r   r   rF   rH   rJ   r   r   r   r?   r?   4   s    GGHr   r?   c                       e Zd Zd Zy)SelfVariableDeletionc                     	 |j                   j                  dk(  r3t        j                  |j                  t        j
                               S t               # t        $ r t               w xY w)Nr   )idctx)valuerN   r   NameattrLoadr   AttributeErrorr   s     r   mutate_Attributez%SelfVariableDeletion.mutate_AttributeI   sS    	#zz}}&xx499#((*==$&& 	# ""	#s   AA 
A A,N)r   r   r   rU   r   r   r   rL   rL   H   s    #r   rL   c                   .    e Zd Zd Zd Zd Zed        Zy)StatementDeletionc                 *    t        j                         S r
   r   Passr   s     r   mutate_AssignzStatementDeletion.mutate_AssignT       xxzr   c                 *    t        j                         S r
   rY   r   s     r   mutate_ReturnzStatementDeletion.mutate_ReturnW   r\   r   c                 |    t        j                  |j                        r
t               t	        j
                         S r
   )r   r4   rP   r   r   rZ   r   s     r   mutate_ExprzStatementDeletion.mutate_ExprZ   s)    djj) ""xxzr   c                      y)NSDLr   r   s    r   r   zStatementDeletion.name_   r   r   N)r   r   r   r[   r^   r`   r   r   r   r   r   rW   rW   S   s%    
  r   rW   )r   r*   r   mutpy.operators.arithmeticr   mutpy.operators.baser   r   r   r!   r)   r?   rL   rW   r   r   r   <module>re      sa    
  L A$I / * 6H' H(#+ #( r   