HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/PIL/__pycache__/ImageMath.cpython-38.pyc
U

tCf��@s�ddlZddlmZmZdZdd�ZGdd�d�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
iZee����D](\ZZedd�dkr|eeedd�<q|ifdd�ZdS)�N�)�Image�_imagingmathcCst|ttf�S�N)�
isinstance�int�float)�v�r
�//usr/lib/python3/dist-packages/PIL/ImageMath.py�_isconstantsrc@s"eZdZdZdd�Zdd�ZdGdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dS)H�_Operandz4Wraps an image operand, providing standard operatorscCs
||_dSr)�im)�selfrr
r
r�__init__ sz_Operand.__init__cCs�t|t�rF|jjdkr"|j�d�S|jjdkr4|jStd|jj��n8t|�rl|jjdkrlt�d|jj	|�St�d|jj	|�SdS)N)�1�L�I)r�Fzunsupported mode: %s)rrrr)
rr
r�mode�convert�
ValueErrorrr�new�size)r�im1r
r
rZ__fixup#s
z_Operand.__fixupNcCs�|�|�}|dkr�t�|p|j|jd�}|��ztt|d|j�}Wn tk
rht	d|��YnXt�
||jj|jj��nX|�|�}|j|jkr�|jdkr�|�
d�}|jdkr�|�
d�}|j|jkr�td��|j|jk�r\t|jd|jd�t|jd|jd�f}|j|k�r*|�d|�}|j|k�rD|�d|�}t�|�pR|j|d�}nt�|�pj|j|jd�}|��|��ztt|d|j�}Wn"tk
�r�t	d|��YnXt�||jj|jj|jj�t|�S)N�_zbad operand type for '%s'rz
mode mismatchrr)rr)�_Operand__fixuprrrr�load�getattrr�AttributeError�	TypeErrorZunopr�idrr�minZcropZbinopr
)r�oprZim2r�outrr
r
r�apply4sB





,z_Operand.applycCs|j��dk	Sr)rZgetbbox�rr
r
r�__bool__^sz_Operand.__bool__cCs|�d|�S)N�abs�r%r&r
r
r�__abs__bsz_Operand.__abs__cCs|Srr
r&r
r
r�__pos__esz_Operand.__pos__cCs|�d|�S)N�negr)r&r
r
r�__neg__hsz_Operand.__neg__cCs|�d||�S�N�addr)�r�otherr
r
r�__add__lsz_Operand.__add__cCs|�d||�Sr.r)r0r
r
r�__radd__osz_Operand.__radd__cCs|�d||�S�N�subr)r0r
r
r�__sub__rsz_Operand.__sub__cCs|�d||�Sr4r)r0r
r
r�__rsub__usz_Operand.__rsub__cCs|�d||�S�N�mulr)r0r
r
r�__mul__xsz_Operand.__mul__cCs|�d||�Sr8r)r0r
r
r�__rmul__{sz_Operand.__rmul__cCs|�d||�S�NZdivr)r0r
r
r�__truediv__~sz_Operand.__truediv__cCs|�d||�Sr<r)r0r
r
r�__rtruediv__�sz_Operand.__rtruediv__cCs|�d||�S�N�modr)r0r
r
r�__mod__�sz_Operand.__mod__cCs|�d||�Sr?r)r0r
r
r�__rmod__�sz_Operand.__rmod__cCs|�d||�S�N�powr)r0r
r
r�__pow__�sz_Operand.__pow__cCs|�d||�SrCr)r0r
r
r�__rpow__�sz_Operand.__rpow__cCs|�d|�S)N�invertr)r&r
r
r�
__invert__�sz_Operand.__invert__cCs|�d||�S�N�andr)r0r
r
r�__and__�sz_Operand.__and__cCs|�d||�SrIr)r0r
r
r�__rand__�sz_Operand.__rand__cCs|�d||�S�N�orr)r0r
r
r�__or__�sz_Operand.__or__cCs|�d||�SrMr)r0r
r
r�__ror__�sz_Operand.__ror__cCs|�d||�S�N�xorr)r0r
r
r�__xor__�sz_Operand.__xor__cCs|�d||�SrQr)r0r
r
r�__rxor__�sz_Operand.__rxor__cCs|�d||�S)N�lshiftr)r0r
r
r�
__lshift__�sz_Operand.__lshift__cCs|�d||�S)N�rshiftr)r0r
r
r�
__rshift__�sz_Operand.__rshift__cCs|�d||�S)N�eqr)r0r
r
r�__eq__�sz_Operand.__eq__cCs|�d||�S)N�ner)r0r
r
r�__ne__�sz_Operand.__ne__cCs|�d||�S)N�ltr)r0r
r
r�__lt__�sz_Operand.__lt__cCs|�d||�S)N�ler)r0r
r
r�__le__�sz_Operand.__le__cCs|�d||�S)N�gtr)r0r
r
r�__gt__�sz_Operand.__gt__cCs|�d||�S)N�ger)r0r
r
r�__ge__�sz_Operand.__ge__)NN)&�__name__�
__module__�__qualname__�__doc__rrr%r'r*r+r-r2r3r6r7r:r;r=r>rArBrErFrHrKrLrOrPrSrTrVrXrZr\r^r`rbrdr
r
r
rr
sF
*r
cCst|j�d��S)Nr�r
rrr&r
r
r�
imagemath_int�srjcCst|j�d��S)Nrrir&r
r
r�imagemath_float�srkcCs|jd||dd�S)NrYr�rr)r0r
r
r�imagemath_equal�srmcCs|jd||dd�S)Nr[rrlr)r0r
r
r�imagemath_notequal�srncCs|�d||�S)Nr"r)r0r
r
r�
imagemath_min�srocCs|�d||�S)N�maxr)r0r
r
r�
imagemath_max�srqcCst|j�|��Srri)rrr
r
r�imagemath_convert�srr�
Z
imagemath_cs�t���t|���t|���D]*}d|ks6tt|�r d|�d�}t|��q ��|���|�t����D]\}}t|d�rlt	|��|<qlt
|dd�����fdd�����t�|d	d
tii��}z|j
WStk
r�|YSXdS)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.
    �__�'�
' not allowedrz<string>�evalcsT|jD]}t|�t��kr�|�q|jD]$}|�kr*|dkr*td|�d���q*dS)Nr(rurv)�	co_consts�type�co_namesr)�codeZconst�name��argsZ
compiled_code�scanr
rrs


zeval.<locals>.scanZ
__builtinsr(N)�ops�copy�list�keys�hasattr�builtinsr�update�itemsr
�compilerwr(rr)Z
expression�_dict�kw�k�msgr	r$r
r}rrw�s$



	rw)r��rr�VERBOSErr
rjrkrmrnrorqrrr�r��globalsr�r�r	rwr
r
r
r�<module>s"%