
    th                        d dl Z ddlmZmZ d Z G d d          Zd Zd Zd	 Zd
 Z	d Z
d Zd Zi Z e e                                                      D ] \  ZZedd         dk    reeedd         <   !i fdZdS )    N   )Image_imagingmathc                 :    t          | t          t          f          S N)
isinstanceintfloat)vs    a/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/PIL/ImageMath.py_isconstantr      s    a#u&&&    c                       e Zd ZdZd Zd Zd%dZd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%dS )&_Operandz4Wraps an image operand, providing standard operatorsc                     || _         d S r   )im)selfr   s     r   __init__z_Operand.__init__   s    r   c                    t          |t                    r[|j        j        dv r|j                            d          S |j        j        dv r|j        S d|j        j         }t          |          t          |          r.| j        j        dv r t          j        d| j        j	        |          S t          j        d| j        j	        |          S )N)1LI)r   Fzunsupported mode: )r   r   r   r   )
r   r   r   modeconvert
ValueErrorr   r   newsize)r   im1msgs      r   __fixupz_Operand.__fixup!   s    c8$$ 	9v{j((v~~c***
**v836;88 oo% 3 9DGLO$C$CydglC888ydglC888r   Nc                 F   |                      |          }|t          j        |p|j        |j        d           }|                                 	 t          t          |dz   |j        z             }n(# t          $ r}d| d}t          |          |d }~ww xY wt          j
        ||j        j        |j        j                   n|                      |          }|j        |j        k    r@|j        dk    r|                    d          }|j        dk    r|                    d          }|j        |j        k    rt          |j        d         |j        d                   t          |j        d         |j        d                   f}|j        |k    r|                    d|z             }|j        |k    r|                    d|z             }t          j        |p|j        |j        d           }|                                 |                                 	 t          t          |dz   |j        z             }n(# t          $ r}d| d}t          |          |d }~ww xY wt          j        ||j        j        |j        j        |j        j                   t#          |          S )N_zbad operand type for ''r   r   r   )r   r   )_Operand__fixupr   r   r   r   loadgetattrr   AttributeError	TypeErrorunopr   idr   mincropbinopr   )	r   opr   im2r   outer    r   s	            r   applyz_Operand.apply3   sj   ll3;)D,CHch==CHHJJJ,\28ch+>??! , , ,4r444nn!+, b#&)SVY7777 ,,s##Cx38##8s??++c**C8s??++c**Cx38##CHQK!55s38A;QR7T7TU8t##((6D=11C8t##((6D=11C)D,CHch==CHHJJJHHJJJ,\28ch+>??! , , ,4r444nn!+, r369cfiCCC}}s0    A0 0
B:BB H7 7
IIIc                 8    | j                                         d uS r   )r   getbboxr   s    r   __bool__z_Operand.__bool__[   s    w  ,,r   c                 .    |                      d|           S )Nabsr3   r6   s    r   __abs__z_Operand.__abs___       zz%&&&r   c                     | S r    r6   s    r   __pos__z_Operand.__pos__b   s    r   c                 .    |                      d|           S )Nnegr:   r6   s    r   __neg__z_Operand.__neg__e   r<   r   c                 0    |                      d| |          S Naddr:   r   others     r   __add__z_Operand.__add__i       zz%u---r   c                 0    |                      d||           S rD   r:   rF   s     r   __radd__z_Operand.__radd__l       zz%---r   c                 0    |                      d| |          S Nsubr:   rF   s     r   __sub__z_Operand.__sub__o   rI   r   c                 0    |                      d||           S rN   r:   rF   s     r   __rsub__z_Operand.__rsub__r   rL   r   c                 0    |                      d| |          S Nmulr:   rF   s     r   __mul__z_Operand.__mul__u   rI   r   c                 0    |                      d||           S rT   r:   rF   s     r   __rmul__z_Operand.__rmul__x   rL   r   c                 0    |                      d| |          S Ndivr:   rF   s     r   __truediv__z_Operand.__truediv__{   rI   r   c                 0    |                      d||           S rZ   r:   rF   s     r   __rtruediv__z_Operand.__rtruediv__~   rL   r   c                 0    |                      d| |          S Nmodr:   rF   s     r   __mod__z_Operand.__mod__   rI   r   c                 0    |                      d||           S r`   r:   rF   s     r   __rmod__z_Operand.__rmod__   rL   r   c                 0    |                      d| |          S Npowr:   rF   s     r   __pow__z_Operand.__pow__   rI   r   c                 0    |                      d||           S rf   r:   rF   s     r   __rpow__z_Operand.__rpow__   rL   r   c                 .    |                      d|           S )Ninvertr:   r6   s    r   
__invert__z_Operand.__invert__   s    zz(D)))r   c                 0    |                      d| |          S Nandr:   rF   s     r   __and__z_Operand.__and__   rI   r   c                 0    |                      d||           S ro   r:   rF   s     r   __rand__z_Operand.__rand__   rL   r   c                 0    |                      d| |          S Norr:   rF   s     r   __or__z_Operand.__or__       zz$e,,,r   c                 0    |                      d||           S ru   r:   rF   s     r   __ror__z_Operand.__ror__   s    zz$t,,,r   c                 0    |                      d| |          S Nxorr:   rF   s     r   __xor__z_Operand.__xor__   rI   r   c                 0    |                      d||           S r|   r:   rF   s     r   __rxor__z_Operand.__rxor__   rL   r   c                 0    |                      d| |          S )Nlshiftr:   rF   s     r   
__lshift__z_Operand.__lshift__       zz(D%000r   c                 0    |                      d| |          S )Nrshiftr:   rF   s     r   
__rshift__z_Operand.__rshift__   r   r   c                 0    |                      d| |          S )Neqr:   rF   s     r   __eq__z_Operand.__eq__   rx   r   c                 0    |                      d| |          S )Nner:   rF   s     r   __ne__z_Operand.__ne__   rx   r   c                 0    |                      d| |          S )Nltr:   rF   s     r   __lt__z_Operand.__lt__   rx   r   c                 0    |                      d| |          S )Nler:   rF   s     r   __le__z_Operand.__le__   rx   r   c                 0    |                      d| |          S )Ngtr:   rF   s     r   __gt__z_Operand.__gt__   rx   r   c                 0    |                      d| |          S )Nger:   rF   s     r   __ge__z_Operand.__ge__   rx   r   )NN)&__name__
__module____qualname____doc__r   r%   r3   r7   r;   r?   rB   rH   rK   rP   rR   rV   rX   r\   r^   rb   rd   rh   rj   rm   rq   rs   rw   rz   r~   r   r   r   r   r   r   r   r   r   r>   r   r   r   r      s       >>  9 9 9$% % % %P- - -' ' '  ' ' '. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .. . .* * *. . .. . .- - -- - -. . .. . .1 1 11 1 1- - -- - -- - -- - -- - -- - - - -r   r   c                 P    t          | j                            d                    S )Nr   r   r   r   r6   s    r   imagemath_intr          DGOOC(()))r   c                 P    t          | j                            d                    S )Nr   r   r6   s    r   imagemath_floatr      r   r   c                 4    |                      d| |d          S )Nr   r   r   r:   rF   s     r   imagemath_equalr          ::dD%c:222r   c                 4    |                      d| |d          S )Nr   r   r   r:   rF   s     r   imagemath_notequalr      r   r   c                 0    |                      d| |          S )Nr,   r:   rF   s     r   imagemath_minr          ::eT5)))r   c                 0    |                      d| |          S )Nmaxr:   rF   s     r   imagemath_maxr      r   r   c                 P    t          | j                            |                    S r   r   )r   r   s     r   imagemath_convertr      s    DGOOD))***r   
   
imagemath_c                    t                                                               |                               |           t                                                    D ]'\  }}t          |d          rt          |          |<   (t          | dd          fd            t          j	        | ddt          ii          }	 |j        S # t          $ r |cY S w xY w)a  
    Evaluates an image expression.

    :param expression: A string containing a Python-style expression.
    :param options: Values to add to the evaluation context.  You
                    can either use a dictionary, or one or more keyword
                    arguments.
    :return: The evaluated expression. This is usually an image object, but can
             also be an integer, a floating point value, or a pixel tuple,
             depending on the expression.
    r   z<string>evalc                     | j         D ]-}t          |          t                    k    r |           .| j        D ]!}|vr|dk    rd| d}t          |          "d S )Nr9   r$   z' not allowed)	co_conststypeco_namesr   )codeconstnamer    argscompiled_codescans       r   r   zeval.<locals>.scan   s    ^ 	 	EE{{d=1111UM 	& 	&D4DEMM-$--- oo%	& 	&r   
__builtinsr9   )opscopyupdatelistitemshasattrr   compilebuiltinsr   r9   r   r(   )	
expression_dictkwkr   r1   r   r   r   s	         @@@r   r   r      s    88::DKKKKOOOTZZ\\"" " "11d 	"qkkDGJ
F;;M& & & & & & & 	D
-
\E3<$@$
G
GCv   


s   C C)(C))r    r   r   r   r   r   r   r   r   r   r   r   r   r   globalsr   r   r   r   r>   r   r   <module>r      sM  $  ! ! ! ! ! ! ! !' ' '_- _- _- _- _- _- _- _-F* * ** * *
3 3 33 3 3* * ** * *+ + + 	D""##  DAq"vAbccF  & & & & & &r   