
    +j!                     |    d Z ddlZddlmZ ddlmZmZ  G d dej                  Z G d de          Z	d	e	fd
Z
dS )zNumber Convert node for unified numeric type conversion.

Provides a single node that converts INT, FLOAT, STRING, and BOOL
inputs into FLOAT and INT outputs.
    N)override)ComfyExtensionioc                   ^    e Zd ZdZedej        fd            Zedej        fd            Z	dS )NumberConvertNodez8Converts various types to numeric FLOAT and INT outputs.returnc                 P   t          j        dddg dt           j                            dt           j        t           j        t           j        t           j        gd          gt           j                            d          t           j                            d          g	          S )
NComfyNumberConvertzConvert Number	utilities)	zint to floatzfloat to intznumber convert	int2float	float2intcastzparse numberzstring to numberzbool to intvalue)display_nameFLOATINT)node_idr   categorysearch_aliasesinputsoutputs)	r   Schema	MultiTypeInputIntFloatStringBooleanOutput)clss    A/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_number_convert.pydefine_schemazNumberConvertNode.define_schema   s    y()    ""VRXry"*=!( #   W55511!
 
 
 	
    c                 (   t          |t                    r|rdnd}|rdnd}n5t          |t                    rt          |          }|}nt          |t                    r|}t          |          }nt          |t                    r|                                }|st          d          	 t          |          }n!# t          $ r t          d|          d w xY wt          j        |          st          d|           	 t          |          }nC# t          $ r t          |          }Y n(w xY wt          dt          |          j                   t          j        |          st          d|           t          j        ||          S )	Ng      ?g           r   z&Cannot convert empty string to number.z!Cannot convert string to number: z+Cannot convert non-finite value to number: zUnsupported input type: )
isinstanceboolintfloatstrstrip
ValueErrormathisfinite	TypeErrortype__name__r   
NodeOutput)r    r   	float_valint_valtexts        r!   executezNumberConvertNode.execute*   s   eT"" 	$-#I 'aaaGGs## 	eIGGu%% 	I%jjGGs## 	;;==D K !IJJJ!$KK		    AAA  =++  M)MM  )d)) ) ) )i..) A4;;+?AA   }Y'' 	IiII   }Y000s   .B> >CD D21D2N)
r1   
__module____qualname____doc__classmethodr   r   r"   r2   r6    r#   r!   r   r      sj        BB
bi 
 
 
 [
. &1r} &1 &1 &1 [&1 &1 &1r#   r   c                   L    e Zd Zedeeej                          fd            ZdS )NumberConvertExtensionr   c                    K   t           gS N)r   )selfs    r!   get_node_listz$NumberConvertExtension.get_node_listU   s      !""r#   N)	r1   r7   r8   r   listr0   r   	ComfyNoderA   r;   r#   r!   r=   r=   T   sE        #T$r|*<%= # # # X# # #r#   r=   r   c                  "   K   t                      S r?   )r=   r;   r#   r!   comfy_entrypointrE   Z   s      !###r#   )r9   r-   typing_extensionsr   comfy_api.latestr   r   rC   r   r=   rE   r;   r#   r!   <module>rH      s      & & & & & & / / / / / / / /B1 B1 B1 B1 B1 B1 B1 B1J# # # # #^ # # #$ 6 $ $ $ $ $ $r#   