o
    i-                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
mZmZ dedefdd	Zdedefd
dZ	 dee fddZdedefddZdS )    N)Path)Optional)PydanticBaseSettingsSourceTomlConfigSettingsSource)ComfyConfigProjectConfigPyProjectConfigPyProjectSettingsclassifiersreturnc                    sX   dd | D }|sg S dd |D }h d}|D ] t  fdd|D s)g   S q|S )Nc                 S      g | ]	}| d r|qS )Operating System :: 
startswith.0c r   8/mnt/c/Users/fbmor/ComfyUI/comfy_config/config_parser.py
<listcomp>       z7validate_and_extract_os_classifiers.<locals>.<listcomp>c                 S      g | ]
}|t d d qS )r   Nlenr   r   r   r   r          >   OS IndependentMacOSPOSIX	Microsoftc                 3   s    | ]}  |V  qd S Nr   )r   prefixos_valuer   r   	<genexpr>   s    z6validate_and_extract_os_classifiers.<locals>.<genexpr>)any)r
   os_classifiers	os_valuesvalid_os_prefixesr   r!   r   #validate_and_extract_os_classifiers   s   r(   c                 C   sJ   dd | D }|sg S dd |D }h d}|D ]
}||vr"g   S q|S )Nc                 S   r   )zEnvironment ::r   r   r   r   r   r      r   z@validate_and_extract_accelerator_classifiers.<locals>.<listcomp>c                 S   r   )zEnvironment :: Nr   r   r   r   r   r   "   r   >   GPU :: AMD ROCmGPU :: Intel ArcGPU :: Apple MetalGPU :: NVIDIA CUDANPU :: Huawei Ascendr   )r
   accelerator_classifiersaccelerator_valuesvalid_acceleratorsaccelerator_valuer   r   r   ,validate_and_extract_accelerator_classifiers   s   r2   c                 C   s<  t j| r$t| }|j dkrd S |j}t|d}t }t	||dS t j
| }t| d }| sBt|d}t }t	||dS t|}|j}|j}	|	rT|	di ni }
|dg }d}|D ]}t|trs|drs|d} nq`|
d	d}|d
g }t|}t|}||d< ||d< ||d< ||d< t	||
dS )Nz.py)name)project
tool_comfyzpyproject.tomlcomfydependencies zcomfyui-frontend-packagezrequires-comfyuir
   supported_ossupported_accelerators"supported_comfyui_frontend_versionsupported_comfyui_version)ospathisfiler   suffixlowerstemr   r   r   basenameexistsload_pyproject_settingsr4   toolget
isinstancestrr   removeprefixr(   r2   )r>   	file_pathproject_namer4   r6   folder_name	toml_pathraw_settingsproject_data	tool_data
comfy_datar7   r;   depr<   r
   r9   r:   r   r   r   extract_node_configuration[   sD   


rT   rN   c                    s   G  fdddt }| S )Nc                	       s.   e Zd Zededededef fddZdS )z0load_pyproject_settings.<locals>.PyProjectLoaderinit_settingsenv_settingsdotenv_settingsfile_secret_settingsc                    s   t | fS r   )r   )clssettings_clsrU   rV   rW   rX   rN   r   r   settings_customise_sources   s   	zKload_pyproject_settings.<locals>.PyProjectLoader.settings_customise_sourcesN)__name__
__module____qualname__classmethodr   r\   r   r[   r   r   PyProjectLoader   s    ra   )r	   )rN   ra   r   r[   r   rE      s   rE   )r=   pathlibr   typingr   pydantic_settingsr   r   comfy_config.typesr   r   r   r	   listr(   r2   rT   rE   r   r   r   r   <module>   s    (0