| | from pydantic import BaseModel, Field, field_validator |
| | from pydantic_settings import BaseSettings, SettingsConfigDict |
| | from typing import List, Optional |
| |
|
| | |
| | |
| | |
| |
|
| | class NodeVersion(BaseModel): |
| | changelog: str |
| | dependencies: List[str] |
| | deprecated: bool |
| | id: str |
| | version: str |
| | download_url: str |
| |
|
| |
|
| | class Node(BaseModel): |
| | id: str |
| | name: str |
| | description: str |
| | author: Optional[str] = None |
| | license: Optional[str] = None |
| | icon: Optional[str] = None |
| | repository: Optional[str] = None |
| | tags: List[str] = Field(default_factory=list) |
| | latest_version: Optional[NodeVersion] = None |
| |
|
| |
|
| | class PublishNodeVersionResponse(BaseModel): |
| | node_version: NodeVersion |
| | signedUrl: str |
| |
|
| |
|
| | class URLs(BaseModel): |
| | homepage: str = Field(default="", alias="Homepage") |
| | documentation: str = Field(default="", alias="Documentation") |
| | repository: str = Field(default="", alias="Repository") |
| | issues: str = Field(default="", alias="Issues") |
| |
|
| |
|
| | class Model(BaseModel): |
| | location: str |
| | model_url: str |
| |
|
| |
|
| | class ComfyConfig(BaseModel): |
| | publisher_id: str = Field(default="", alias="PublisherId") |
| | display_name: str = Field(default="", alias="DisplayName") |
| | icon: str = Field(default="", alias="Icon") |
| | models: List[Model] = Field(default_factory=list, alias="Models") |
| | includes: List[str] = Field(default_factory=list) |
| | web: Optional[str] = None |
| | banner_url: str = "" |
| |
|
| | class License(BaseModel): |
| | file: str = "" |
| | text: str = "" |
| |
|
| |
|
| | class ProjectConfig(BaseModel): |
| | name: str = "" |
| | description: str = "" |
| | version: str = "1.0.0" |
| | requires_python: str = Field(default=">= 3.9", alias="requires-python") |
| | dependencies: List[str] = Field(default_factory=list) |
| | license: License = Field(default_factory=License) |
| | urls: URLs = Field(default_factory=URLs) |
| | supported_os: List[str] = Field(default_factory=list) |
| | supported_accelerators: List[str] = Field(default_factory=list) |
| | supported_comfyui_version: str = "" |
| | supported_comfyui_frontend_version: str = "" |
| |
|
| | @field_validator('license', mode='before') |
| | @classmethod |
| | def validate_license(cls, v): |
| | if isinstance(v, str): |
| | return License(text=v) |
| | elif isinstance(v, dict): |
| | return License(**v) |
| | elif isinstance(v, License): |
| | return v |
| | else: |
| | return License() |
| |
|
| |
|
| | class PyProjectConfig(BaseModel): |
| | project: ProjectConfig = Field(default_factory=ProjectConfig) |
| | tool_comfy: ComfyConfig = Field(default_factory=ComfyConfig) |
| |
|
| |
|
| | class PyProjectSettings(BaseSettings): |
| | project: dict = Field(default_factory=dict) |
| |
|
| | tool: dict = Field(default_factory=dict) |
| |
|
| | model_config = SettingsConfigDict(extra='allow') |
| |
|