
    +j                         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Zdedefd	Z	 dee         fd
ZdedefdZdS )    N)Path)Optional)PydanticBaseSettingsSourceTomlConfigSettingsSource)ComfyConfigProjectConfigPyProjectConfigPyProjectSettingsclassifiersreturnc                     d | D             }|sg S d |D             }h d}|D ]!t          fd|D                       sg c S "|S )Nc                 <    g | ]}|                     d           |S )Operating System :: 
startswith.0cs     :/home/wildlama/comfy/ComfyUI/comfy_config/config_parser.py
<listcomp>z7validate_and_extract_os_classifiers.<locals>.<listcomp>   s*    UUUA=S0T0TUaUUU    c                 <    g | ]}|t          d           d         S )r   Nlenr   s     r   r   z7validate_and_extract_os_classifiers.<locals>.<listcomp>   s,    JJJa3-..001JJJr   >   OS IndependentMacOSPOSIX	Microsoftc              3   B   K   | ]}                     |          V  d S Nr   )r   prefixos_values     r   	<genexpr>z6validate_and_extract_os_classifiers.<locals>.<genexpr>   s1      OO68&&v..OOOOOOr   )any)r   os_classifiers	os_valuesvalid_os_prefixesr"   s       @r   #validate_and_extract_os_classifiersr(      s    UUUUUN 	JJ>JJJIIII  OOOO=NOOOOO 	III	 r   c                 `    d | D             }|sg S d |D             }h d}|D ]
}||vrg c S |S )Nc                 <    g | ]}|                     d           |S )zEnvironment ::r   r   s     r   r   z@validate_and_extract_accelerator_classifiers.<locals>.<listcomp>   s*    XXXQFV9W9WXqXXXr   c                 <    g | ]}|t          d           d         S )zEnvironment :: Nr   r   s     r   r   z@validate_and_extract_accelerator_classifiers.<locals>.<listcomp>"   s,    WWW!!C 122445WWWr   >   GPU :: AMD ROCmGPU :: Intel ArcGPU :: Apple MetalGPU :: NVIDIA CUDANPU :: Huawei Ascend )r   accelerator_classifiersaccelerator_valuesvalid_acceleratorsaccelerator_values        r   ,validate_and_extract_accelerator_classifiersr6      s~    XX+XXX" 	WW?VWWW   0  $666III 7 r   c                    t           j                            |           rdt          |           }|j                                        dk    rd S |j        }t          |          }t                      }t          ||          S t           j        
                    |           }t          |           dz  }|                                s/t          |          }t                      }t          ||          S t          |          }|j        }|j        }	|	r|	                    di           ni }
|                    dg           }d}|D ]C}t!          |t"                    r,|                    d          r|                    d          } nD|
                    d	d          }|                    d
g           }t)          |          }t+          |          }||d<   ||d<   ||d<   ||d<   t          ||
          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_settingsr9   toolget
isinstancestrr   removeprefixr(   r6   )rC   	file_pathproject_namer9   r;   folder_name	toml_pathraw_settingsproject_data	tool_data
comfy_datar<   r@   deprA   r   r>   r?   s                     r   extract_node_configurationrY   [   s   	w~~d 	BJJ	!!##u,,4 ~\222w5AAAA'""4((KT

--I B[111w5AAAA*955L'L!I/8@w+++bJ##NB77L)+&  c3 	CNN3M$N$N 	141A1AB\1]1].E */A2 F F""="55K6{CCLI+VV#/L -CL)*9[L560IL,-<JGGGGr   rS   c                 B      G  fddt                     } |            S )Nc            	       <    e Zd Zededededef fd            ZdS )0load_pyproject_settings.<locals>.PyProjectLoaderinit_settingsenv_settingsdotenv_settingsfile_secret_settingsc                 &    t          |          fS r    )r   )clssettings_clsr]   r^   r_   r`   rS   s         r   settings_customise_sourceszKload_pyproject_settings.<locals>.PyProjectLoader.settings_customise_sources   s     -\9EEGGr   N)__name__
__module____qualname__classmethodr   rd   )rS   s   r   PyProjectLoaderr\      sq        		H 6	H 5		H
 8	H #=	H 	H 	H 	H 	H 
	H 	H 	Hr   ri   )r
   )rS   ri   s   ` r   rJ   rJ      sR    
H 
H 
H 
H 
H 
H 
H+ 
H 
H 
H ?r   )rB   pathlibr   typingr   pydantic_settingsr   r   comfy_config.typesr   r   r	   r
   listr(   r6   rY   rJ   r1   r   r   <module>ro      s#   				             R R R R R R R R           T d    d t    ,'P-H(A -H -H -H -H`t 0A      r   