o
    i                     @  sd   d Z ddlmZ ddlZddlmZ ddlmZmZ G dd dej	Z
G dd	 d	eZdd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.
    )annotationsN)override)ComfyExtensionioc                   @  s,   e Zd ZdZed
ddZedddZd	S )NumberConvertNodez8Converts various types to numeric FLOAT and INT outputs.return	io.Schemac                 C  sR   t jdddg dt jjdt jt jt jt jgddgt jjddt jjddgd	S )
NComfyNumberConvertzNumber Convertmath)	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)cls r    ?/mnt/c/Users/fbmor/ComfyUI/comfy_extras/nodes_number_convert.pydefine_schema   s   zNumberConvertNode.define_schemaio.NodeOutputc                 C  s  t |tr|r	dnd}|rdnd}ngt |trt|}|}n[t |tr*|}t|}nOt |tro| }|s9tdzt|}W n tyN   td|d w t|s[td| zt|}W n tyn   t|}Y nw t	dt
|j t|std| t||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
ValueErrorr
   isfinite	TypeErrortype__name__r   
NodeOutput)r   r   	float_valint_valtextr    r    r!   execute+   sN   






zNumberConvertNode.executeN)r   r   )r   r#   )r/   
__module____qualname____doc__classmethodr"   r4   r    r    r    r!   r      s    r   c                   @  s   e Zd ZedddZdS )NumberConvertExtensionr   list[type[io.ComfyNode]]c                   s   t gS N)r   )selfr    r    r!   get_node_listV   s   z$NumberConvertExtension.get_node_listN)r   r:   )r/   r5   r6   r   r=   r    r    r    r!   r9   U   s    r9   r   c                     s   t  S r;   )r9   r    r    r    r!   comfy_entrypoint[   s   r>   )r   r9   )r7   
__future__r   r
   typing_extensionsr   comfy_api.latestr   r   	ComfyNoder   r9   r>   r    r    r    r!   <module>   s    E