
    
3j!                        S SK r S SKrS SKrS SKr " S S\5      r\" S5      r0 \ R                  \R                  _\ R                  \R                  _\ R                  \R                  _\ R                  \R                  _\ R                   \R"                  _\ R$                  \R&                  _\ R(                  \R*                  _\ R,                  \R.                  _\ R0                  \R2                  _\ R4                  \R6                  _\ R8                  \R:                  _\ R<                  \R>                  _\ R@                  S _\ RB                  S _\ RD                  S _\ RF                  \RH                  _\ RJ                  \RL                  _r'SS#S	 jS
S.SS SS.SS SS.SS SS.SS SS.SS SS.SS SS.SS SS.SS#S jSS.SS#S jSS.S.
r(\)" S \(RU                  5        5       5      r+ " S S 5      r,S!\,0r-S!S"0r.g)$    Nc                   &    \ rS rSrS\S\4S jrSrg)AnyType   _AnyType__valuereturnc                     g)NF )selfr   s     V/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-Custom-Scripts/py/math_expression.py__ne__AnyType.__ne__   s        r	   N)__name__
__module____qualname____firstlineno__objectboolr   __static_attributes__r	   r   r   r   r      s    f  r   r   *c                 &    U (       a	  U(       a  S$ S$ N   r   r	   abs     r   <lambda>r      s    qQ!-A-r   c                 &    U (       d  U(       a  S$ S$ r   r	   r   s     r   r   r      s    a1+!+r   c                     U (       a  S$ S$ )Nr   r   r	   r   s    r   r   r      s    Aq}1}r   )r      c                     [        X5      $ N)roundr   s     r   r   r   '   s    E!Kr   znumber, dp? = 0)argscallhint)r   r   c                 .    [         R                  " U 5      $ r#   )mathceilr    s    r   r   r   ,       $))A,r   numberc                 .    [         R                  " U 5      $ r#   )r)   floorr    s    r   r   r   1   s    $**Q-r   )r!   Nc                      [        U 6 $ r#   )minr%   s    r   r   r   6       c4jr   z
...numbersc                      [        U 6 $ r#   )maxr1   s    r   r   r   ;   r2   r   )r!   r!   c                 .    [         R                  " X5      $ r#   )randomrandintr   s     r   r   r   @   s    V^^A1r   zmin, maxc                  .    [         R                  " U 5      $ r#   )r6   choicer1   s    r   r   r   E   s    fmmD1r   c                 .    [         R                  " U 5      $ r#   )r)   sqrtr    s    r   r   r   J   r+   r   c                     [        U 5      $ r#   )intr    s    r   r   r   O   s    Qr   )   r>   c                     U (       a  U$ U$ r#   r	   r   r   cs      r   r   r   T   s    Aq}1}r   zvalue, truepart, falsepart)
r$   r*   r.   r0   r4   	randomintrandomchoicer;   r=   iifc              #   N   #    U  H  nUU S 3S[         U   S    SS.v   M     g7f)z()Fr'   )textvalue	showValuer'   caretOffsetN)	functions).0xs     r   	<genexpr>rN   Y   s>       a s"X|F#$ s   #%c                   b    \ rS rSr\S 5       rSrSrSrSr	\S 5       r
S rS	 r0 S
S
S
4S jrSrg
)MathExpressionb   c                 X    SSSS[         SS.S.40[        4[        4[        4S.S	S
S.S.$ )N
expressionSTRINGTF )words	separator)	multilinedynamicPromptszpysssss.autocompleter@   EXTRA_PNGINFOPROMPT)extra_pnginfoprompt)requiredoptionalhidden)autocompleteWordsany)clss    r   INPUT_TYPESMathExpression.INPUT_TYPESd   sU     xtu.!#o *  WVW
 )8!)+
 	
r   )INTFLOATevaluateutilsTc                 (    SU;   a  [        S5      $ U$ )Nr6   nan)float)srS   kwargss      r   
IS_CHANGEDMathExpression.IS_CHANGED{   s    z!<r   c                    SU;   a  US   OS/ 0nS nUS    HB  nUS   nSU;   a  SUS   ;   a  US   S   nX:X  a  US   n  OSU;   a  US   nX:X  d  M=  US   n  O   UbW  U[        U5         n	SU	;   a2  XIS   ;   a*  U	S   U   n
[        U
[        5      (       a  [        S	5      eU
$ [	        S
U SU 35      e[	        SU SU 35      e)Nworkflownodestype
propertieszNode name for S&RidtitleinputszPConverted widgets are not supported via named reference, use the inputs instead.zWidget not found: .zNode not found: )str
isinstancelist
ValueError	NameError)r
   r\   r]   	node_namewidget_namerr   node_idnodenamevaluesrH   s              r   get_widget_valueMathExpression.get_widget_value   s   0:m0K=,SZ\^Q`W%D<Dt#&$|*<<-.ABD t*$G} t* & CL)F6!"22"8,[9E!%..(){|| L01[MJKK*9+Q{mDEEr   c                     [        U[        5      (       a6  SU;   a0  US:X  a  US   R                  S   S-  $ US   R                  S   S-  $ US:X  a  UR                  S   $ UR                  S   $ )Nsampleswidthr>      r!   r   )r{   dictshape)r
   targetpropertys      r   get_sizeMathExpression.get_size   sz    fd##	V(;7"i(..q1A55)$**1-11 7"||A&<<?"r   Nc                   ^ ^^^	^
^ UR                  SS5      R                  SS5      n[        R                  " USS9R                  nXEUS.mU	4S jm
U	U
UUUU 4S	 jm	T	" U5      nS
U/0[	        U5      [        U5      4S.$ )N
 rU   eval)moder@   c                    > T" U5      nT" U5      n[        U[        5      (       a  UO
[        U5      n[        U[        5      (       a  UO
[        U5      n[        [	        U R
                  5         " X5      $ r#   )r{   r=   rl   	operatorsrt   op)r   lr	eval_exprs      r   eval_op(MathExpression.evaluate.<locals>.eval_op   s[    !A!A3''U1XA3''U1XAT$'']+A11r   c                 
  > [        U [        R                  5      (       d  [        U [        R                  5      (       a  U R                  $ [        U [        R
                  5      (       a  T	" X R                  U R                  5      $ [        U [        R                  5      (       a#  T	" X R                  S   U R                  S   5      $ [        U [        R                  5      (       a2  [        [        U R                  5         " T" U R                  5      5      $ [        U [        R                  5      (       a  U R                   R"                  T;   aS  U R$                  S:X  d  U R$                  S:X  a3  TR'                  TU R                   R"                     U R$                  5      $ TR)                  T
TU R                   R"                  U R$                  5      $ [        U [        R*                  5      (       ar  U R"                  T;   aJ  TU R"                     n[        U[,        [.        [0        45      (       a  U$ [3        SU R"                   S35      e[5        SU R"                   35      e[        U [        R6                  5      (       Ga
  U R8                  R"                  [:        ;   a  [:        U R8                  R"                     n[=        U R>                  5      nX2S   S   :  d  US   S   bP  X2S   S   :  aE  US   S   c  S	nOS
US   S    3n[A        SU R8                  R"                   SUS   S    U S35      e/ nU R>                   H  nURC                  T" U5      5        M     US   " U6 $ [5        SU R8                  R"                   35      e[        U [        RD                  5      (       Ga  T" U R                  5      nT" U RF                  S   5      n[        U RH                  S   [        RJ                  5      (       a	  X7:X  a  S$ S$ [        U RH                  S   [        RL                  5      (       a	  X7:w  a  S$ S$ [        U RH                  S   [        RN                  5      (       a	  X7:  a  S$ S$ [        U RH                  S   [        RP                  5      (       a	  X7:  a  S$ S$ [        U RH                  S   [        RR                  5      (       a	  X7:  a  S$ S$ [        U RH                  S   [        RT                  5      (       a	  X7::  a  S$ S$ [W        SU RH                  S   RX                  RZ                  -   S-   5      e[3        U 5      e)Nr   r   r   heightzGCompex types (LATENT/IMAGE) need to reference their width/height, e.g. z.widthzName not found: r%   z or morez to zInvalid function call: z
 requires z
 argumentsr&   z	Operator z not supported.).r{   astConstantNumnBinOpleftrightBoolOpr   UnaryOpr   rt   r   operand	AttributerH   rv   attrr   r   Namer=   rl   complex	TypeErrorr~   CallfuncrK   lenr%   SyntaxErrorappendComparecomparatorsopsEqNotEqGtGtELtLtENotImplementedError	__class__r   )r   valfnr   toErrr%   argr   r   r   r\   lookupr]   r
   s           r   r   *MathExpression.evaluate.<locals>.eval_expr   s*   $--D#''1J1JvvD#)),,tYY

;;D#**--t[[^T[[^DDD#++.. dgg/	$,,0GHHD#--00::==F*yyG+tyyH/D#}}VDJJMM-BDIINN,,]FDJJMMSWS\S\]]D#((++77f$ /C!#UG'<=="
'efjfmfmenntuw w"2477) <==D#((++99<<9,"499<<0BDIIAf:a=(RZ]-F1RXzZ[}K\f:a=0$.E&*2f:a=/$:E)5diill^:bQWjYZm_]b\ccmnp pD#yyIcN3  )f:t,,"9$)),, HIID#++..dii(d..q12dhhqk36622 !1-A-dhhqk39955 !1-A-dhhqk36622 !1,1,dhhqk37733 !1-A-dhhqk36622 !1,1,dhhqk37733 !1-A-)$((1+"7"7"@"@@CTTV V  o%r   rH   )uiresult)replacer   parsebodyr=   rl   )r
   rS   r]   r\   r   r   rA   r   r   r   r   r   s   ` ``     @@@r   rh   MathExpression.evaluate   s{    ''c2::4D
yy&166q)	2:	& :	&x dOnQq0CDDr   r	   )r   r   r   r   classmethodrd   RETURN_TYPESFUNCTIONCATEGORYOUTPUT_NODEro   r   r   rh   r   r	   r   r   rP   rP   b   sY    
 
" &LHHK 
F6
# :<ttt JEr   rP   zMathExpression|pysssssu   Math Expression 🐍r#   )/r   r)   r6   operatorr   rz   r   rb   AddaddSubsubMultmulDivtruedivFloorDivfloordivPowpowBitXorxorUSubnegModmodBitAndand_BitOror_InvertinvertAndOrNotRShiftrshiftLShiftlshiftr   rK   r|   keysra   rP   NODE_CLASS_MAPPINGSNODE_DISPLAY_NAME_MAPPINGSr	   r   r   <module>r      sp   
   c  clGGRVVGGRVV HHbff GGRZZ	
 LL"++ GGRVV JJ HHbff GGRVV JJ IIrvv JJ		 GG- FF+ GG$  JJ		!" JJ		#	. /! & ' ( ( 1 1 & ' 4,]3	j   >>  PE PEh n 
 4 r   