Ë
    6Š·ji(  ã                  óÄ   — d dl mZ d dlZddlmZmZ dZerd dlmZ d dl	m
Z
 d dlmZ  G d	„ d
«      Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZeeeeeeedœZdd„Zdd„Zy)é    )ÚannotationsNé   )ÚImageÚ_imagingmathF)ÚCallable)ÚCodeType)ÚAnyc                  ó8  — e Zd ZdZd%d„Zd&d„Z	 	 d'	 	 	 	 	 	 	 	 	 d(d„Zd)d„Zd*d„Zd*d„Z	d*d	„Z
d+d
„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd*d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Zd+d„Z d+d „Z!d+d!„Z"d+d"„Z#d+d#„Z$d+d$„Z%y),Ú_Operandz4Wraps an image operand, providing standard operatorsc                ó   — || _         y ©N)Úim)Úselfr   s     úC/root/workspace/.venv/lib/python3.12/site-packages/PIL/ImageMath.pyÚ__init__z_Operand.__init__!   s	   € Øˆ�ó    c                ó   — t        |t        «      r{|j                  j                  dv r|j                  j	                  d«      S |j                  j                  dv r|j                  S d|j                  j                  › �}t        |«      ‚t        |t        t        f«      rC| 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   )Ú
isinstancer   r   ÚmodeÚconvertÚ
ValueErrorÚintÚfloatr   ÚnewÚsize)r   Úim1Úmsgs      r   Ú__fixupz_Operand.__fixup$   s»   € ä�cœ8Ô$à�v‰v�{‰{˜jÑ(Ø—v‘v—~‘~ cÓ*Ð*Ø—‘—‘ 
Ñ*Ø—v‘v�à*¨3¯6©6¯;©;¨-Ð8�Ü  “oÐ%ô ˜#¤¤U˜|Ô,°·±·±ÀÑ1PÜ—y‘y  d§g¡g§l¡l°CÓ8Ð8ä—y‘y  d§g¡g§l¡l°CÓ8Ð8r   Nc                ó0  — | j                  |«      }|€�t        j                  |xs |j                  |j                  d «      }	 t        t        |› d|j                  › �«      }t        j                  ||j                  «       |j                  «       «       t        |«      S | j                  |«      }	|j                  |	j                  k7  r@|j                  dk7  r|j                  d«      }|	j                  dk7  r|	j                  d«      }	|j                  |	j                  k7  r’t        |j                  d   |	j                  d   «      t        |j                  d   |	j                  d   «      f}
|j                  |
k7  r|j                  d|
z   «      }|	j                  |
k7  r|	j                  d|
z   «      }	t        j                  |xs |j                  |j                  d «      }	 t        t        |› d|j                  › �«      }t        j                  ||j                  «       |j                  «       |	j                  «       «       t        |«      S # t        $ r}d|› d�}t        |«      |‚d }~ww xY w# t        $ r}d|› d�}t        |«      |‚d }~ww xY w)NÚ_zbad operand type for 'ú'r   r   r   )r   r   )Ú_Operand__fixupr   r   r   r   Úgetattrr   ÚAttributeErrorÚ	TypeErrorÚunopÚgetimr   ÚminÚcropÚbinopr   )r   Úopr    Úim2r   Úim_1ÚoutÚer!   Úim_2r   s              r   Úapplyz_Operand.apply6   s)  € ð �|‰|˜CÓ ˆØˆ;ä—)‘)˜DÒ- D§I¡I¨t¯y©y¸$Ó?ˆCð,Üœ\¨b¨T°°4·9±9°+Ð+>Ó?�ô ×Ñ˜b #§)¡)£+¨t¯z©z«|Ô<ô6 ˜‹}Ðð1 —<‘< Ó$ˆDØ�y‰y˜DŸI™IÒ%à—9‘9 Ò#ØŸ<™<¨Ó,�DØ—9‘9 Ò#ØŸ<™<¨Ó,�DØ�y‰y˜DŸI™IÒ%ô ˜Ÿ	™	 !™ d§i¡i°¡lÓ3Ü˜Ÿ	™	 !™ d§i¡i°¡lÓ3ð�ð —9‘9 Ò$ØŸ9™9 V¨d¡]Ó3�DØ—9‘9 Ò$ØŸ9™9 V¨d¡]Ó3�DÜ—)‘)˜DÒ- D§I¡I¨t¯y©y¸$Ó?ˆCð,Üœ\¨b¨T°°4·9±9°+Ð+>Ó?�ô ×Ñ˜r 3§9¡9£;°·
±
³¸d¿j¹j»lÔKÜ˜‹}Ðøô= "ò ,Ø.¨r¨d°!Ð4�Ü “n¨!Ð+ûð,ûô4 "ò ,Ø.¨r¨d°!Ð4�Ü “n¨!Ð+ûð,ús0   ÁI Ç&I5 É	I2ÉI-É-I2É5	JÉ>JÊJc                ó:   — | j                   j                  «       d uS r   )r   Úgetbbox©r   s    r   Ú__bool__z_Operand.__bool__d   s   € à�w‰w�‰Ó ¨Ð,Ð,r   c                ó&   — | j                  d| «      S )NÚabs©r5   r8   s    r   Ú__abs__z_Operand.__abs__h   ó   € Ø�z‰z˜% Ó&Ð&r   c                ó   — | S r   © r8   s    r   Ú__pos__z_Operand.__pos__k   s   € Øˆr   c                ó&   — | j                  d| «      S )NÚnegr<   r8   s    r   Ú__neg__z_Operand.__neg__n   r>   r   c                ó(   — | j                  d| |«      S ©NÚaddr<   ©r   Úothers     r   Ú__add__z_Operand.__add__r   ó   € Ø�z‰z˜%  uÓ-Ð-r   c                ó(   — | j                  d|| «      S rF   r<   rH   s     r   Ú__radd__z_Operand.__radd__u   ó   € Ø�z‰z˜% ¨Ó-Ð-r   c                ó(   — | j                  d| |«      S ©NÚsubr<   rH   s     r   Ú__sub__z_Operand.__sub__x   rK   r   c                ó(   — | j                  d|| «      S rP   r<   rH   s     r   Ú__rsub__z_Operand.__rsub__{   rN   r   c                ó(   — | j                  d| |«      S ©NÚmulr<   rH   s     r   Ú__mul__z_Operand.__mul__~   rK   r   c                ó(   — | j                  d|| «      S rV   r<   rH   s     r   Ú__rmul__z_Operand.__rmul__�   rN   r   c                ó(   — | j                  d| |«      S ©NÚdivr<   rH   s     r   Ú__truediv__z_Operand.__truediv__„   rK   r   c                ó(   — | j                  d|| «      S r\   r<   rH   s     r   Ú__rtruediv__z_Operand.__rtruediv__‡   rN   r   c                ó(   — | j                  d| |«      S ©NÚmodr<   rH   s     r   Ú__mod__z_Operand.__mod__Š   rK   r   c                ó(   — | j                  d|| «      S rb   r<   rH   s     r   Ú__rmod__z_Operand.__rmod__�   rN   r   c                ó(   — | j                  d| |«      S ©NÚpowr<   rH   s     r   Ú__pow__z_Operand.__pow__�   rK   r   c                ó(   — | j                  d|| «      S rh   r<   rH   s     r   Ú__rpow__z_Operand.__rpow__“   rN   r   c                ó&   — | j                  d| «      S )NÚinvertr<   r8   s    r   Ú
__invert__z_Operand.__invert__—   s   € Ø�z‰z˜( DÓ)Ð)r   c                ó(   — | j                  d| |«      S ©NÚandr<   rH   s     r   Ú__and__z_Operand.__and__š   rK   r   c                ó(   — | j                  d|| «      S rq   r<   rH   s     r   Ú__rand__z_Operand.__rand__�   rN   r   c                ó(   — | j                  d| |«      S ©NÚorr<   rH   s     r   Ú__or__z_Operand.__or__    ó   € Ø�z‰z˜$  eÓ,Ð,r   c                ó(   — | j                  d|| «      S rw   r<   rH   s     r   Ú__ror__z_Operand.__ror__£   s   € Ø�z‰z˜$  tÓ,Ð,r   c                ó(   — | j                  d| |«      S ©NÚxorr<   rH   s     r   Ú__xor__z_Operand.__xor__¦   rK   r   c                ó(   — | j                  d|| «      S r~   r<   rH   s     r   Ú__rxor__z_Operand.__rxor__©   rN   r   c                ó(   — | j                  d| |«      S )NÚlshiftr<   rH   s     r   Ú
__lshift__z_Operand.__lshift__¬   ó   € Ø�z‰z˜( D¨%Ó0Ð0r   c                ó(   — | j                  d| |«      S )NÚrshiftr<   rH   s     r   Ú
__rshift__z_Operand.__rshift__¯   r†   r   c                ó(   — | j                  d| |«      S )NÚeqr<   rH   s     r   Ú__eq__z_Operand.__eq__³   rz   r   c                ó(   — | j                  d| |«      S )NÚner<   rH   s     r   Ú__ne__z_Operand.__ne__¶   rz   r   c                ó(   — | j                  d| |«      S )NÚltr<   rH   s     r   Ú__lt__z_Operand.__lt__¹   rz   r   c                ó(   — | j                  d| |«      S )NÚler<   rH   s     r   Ú__le__z_Operand.__le__¼   rz   r   c                ó(   — | j                  d| |«      S )NÚgtr<   rH   s     r   Ú__gt__z_Operand.__gt__¿   rz   r   c                ó(   — | j                  d| |«      S )NÚger<   rH   s     r   Ú__ge__z_Operand.__ge__Â   rz   r   )r   úImage.Image)r    ú_Operand | floatÚreturnrœ   )NN)
r/   Ústrr    r�   r0   ú_Operand | float | Noner   z
str | Nonerž   r   )rž   Úbool)rž   r   )rI   r�   rž   r   )&Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r&   r5   r9   r=   rA   rD   rJ   rM   rR   rT   rX   rZ   r^   r`   rd   rf   rj   rl   ro   rs   ru   ry   r|   r€   r‚   r…   r‰   rŒ   r�   r’   r•   r˜   r›   r@   r   r   r   r      sè   „ Ù>óó9ð, (,Øð+àð+ð ð+ð %ð	+ð
 ð+ð 
ó+ó\-ó'óó'ó.ó.ó.ó.ó.ó.ó.ó.ó.ó.ó.ó.ó*ó.ó.ó-ó-ó.ó.ó1ó1ó-ó-ó-ó-ó-ô-r   r   c                óJ   — t        | j                  j                  d«      «      S )Nr   ©r   r   r   r8   s    r   Úimagemath_intr¨   Ç   ó   € Ü�D—G‘G—O‘O CÓ(Ó)Ð)r   c                óJ   — t        | j                  j                  d«      «      S )Nr   r§   r8   s    r   Úimagemath_floatr«   Ë   r©   r   c                ó,   — | j                  d| |d¬«      S )Nr‹   r   ©r   r<   rH   s     r   Úimagemath_equalr®   Ð   ó   € Ø�:‰:�d˜D %¨cˆ:Ó2Ð2r   c                ó,   — | j                  d| |d¬«      S )NrŽ   r   r­   r<   rH   s     r   Úimagemath_notequalr±   Ô   r¯   r   c                ó(   — | j                  d| |«      S )Nr,   r<   rH   s     r   Úimagemath_minr³   Ø   ó   € Ø�:‰:�e˜T 5Ó)Ð)r   c                ó(   — | j                  d| |«      S )NÚmaxr<   rH   s     r   Úimagemath_maxr·   Ü   r´   r   c                óJ   — t        | j                  j                  |«      «      S r   r§   )r   r   s     r   Úimagemath_convertr¹   à   s   € Ü�D—G‘G—O‘O DÓ)Ó*Ð*r   )r   r   ÚequalÚnotequalr,   r¶   r   c                ó  — t         j                  «       }|j                  |«       |j                  «       D ].  \  }}t	        |t
        j
                  «      sŒ!t        |«      ||<   Œ0  | |«      }	 |j                  S # t        $ r |cY S w xY w)a1  
    Returns the result of an image function.

    :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band
    images, use the :py:meth:`~PIL.Image.Image.split` method or
    :py:func:`~PIL.Image.merge` function.

    :param expression: A function that receives a dictionary.
    :param **kw: Values to add to the function's dictionary.
    :return: The expression result. This is usually an image object, but can
             also be an integer, a floating point value, or a pixel tuple,
             depending on the expression.
    )	ÚopsÚcopyÚupdateÚitemsr   r   r   r   r(   )Ú
expressionÚkwÚargsÚkÚvr2   s         r   Úlambda_evalrÆ   ï   s|   € ô Ÿ8™8›:€DØ‡K�K�„OØ—
‘
“ò "‰ˆˆ1Ü�aœŸ™Õ%Ü˜q“kˆD�ŠGð"ñ �TÓ
€CðØ�v‰vˆøÜò ØŠ
ðús   Á0A< Á<B
Â	B
c                óÐ  ‡‡‡— t         j                  «       Š|D ]'  }d|v st        t        |«      sŒd|› d�}t	        |«      ‚ ‰j                  |«       ‰j                  «       D ].  \  }}t        |t        j                  «      sŒ!t        |«      ‰|<   Œ0 t        | dd«      Šdˆˆˆfd„Š ‰‰«       t        j                  | d‰«      }	 |j                  S # t        $ r |cY S w xY w)	a-  
    Evaluates an image expression. This uses Python's ``eval()`` function to process
    the expression string, and carries the security risks of doing so. It is not
    recommended to process expressions without considering this.
    :py:meth:`~lambda_eval` is a more secure alternative.

    :py:mod:`~PIL.ImageMath` only supports single-layer images. To process multi-band
    images, use the :py:meth:`~PIL.Image.Image.split` method or
    :py:func:`~PIL.Image.merge` function.

    :param expression: A string containing a Python-style expression.
    :param **kw: Values to add to the evaluation context.
    :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%   ú' not allowedz<string>Úevalc                ó¾   •— | j                   D ]!  }t        |«      t        ‰«      u sŒ ‰|«       Œ# | j                  D ]  }|‰vsŒ|dk7  sŒd|› d�}t        |«      ‚ y )Nr;   r%   rÉ   )Ú	co_constsÚtypeÚco_namesr   )ÚcodeÚconstÚnamer!   rÃ   Úcompiled_codeÚscans       €€€r   rÓ   zunsafe_eval.<locals>.scan+  si   ø€ Ø—^‘^ò 	ˆEÜ�E‹{œd =Ó1Ò1Ù�U•ð	ð —M‘Mò 	&ˆDØ˜4Ò D¨E£MØ˜$˜˜}Ð-�Ü  “oÐ%ñ	&r   N)rÏ   r   rž   ÚNone)r½   r¾   ÚhasattrÚbuiltinsr   r¿   rÀ   r   r   r   ÚcompilerÊ   r   r(   )	rÁ   rÂ   rÄ   r!   rÅ   r2   rÃ   rÒ   rÓ   s	         @@@r   Úunsafe_evalrØ     sÛ   ú€ ô& Ÿ8™8›:€DØò "ˆØ�1‰9œ¤¨!Õ,Ø�a�S˜Ð&ˆCÜ˜S“/Ð!ð"ð
 	‡K�K�„OØ—
‘
“ò "‰ˆˆ1Ü�aœŸ™Õ%Ü˜q“kˆD�ŠGð"ô ˜J¨
°FÓ;€M÷&ñ 	ˆÔÜ
�-‰-˜
 D¨$Ó
/€CðØ�v‰vˆøÜò ØŠ
ðús   ÃC ÃC%Ã$C%)r   r   rž   r   )r   r   rI   r    rž   r   )r   r   r   rŸ   rž   r   )rÁ   zCallable[[dict[str, Any]], Any]rÂ   r	   rž   r	   )rÁ   rŸ   rÂ   r	   rž   r	   )Ú
__future__r   rÖ   Ú r   r   ÚTYPE_CHECKINGÚcollections.abcr   Útypesr   Útypingr	   r   r¨   r«   r®   r±   r³   r·   r¹   r½   rÆ   rØ   r@   r   r   ú<module>rß      sy   ðõ" #ã ç !à€ÙÝ(ÝÝ÷e-ñ e-óR*ó*ó
3ó3ó*ó*ó+ð
 ØØØ"ØØØ ñ€óô8/r   