mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-07-27 08:16:44 +00:00
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
from typing import Type, List, NamedTuple
|
|
from comfy_api.internal.singleton import ProxiedSingleton
|
|
from packaging import version as packaging_version
|
|
|
|
|
|
class ComfyAPIBase(ProxiedSingleton):
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class ComfyAPIWithVersion(NamedTuple):
|
|
version: str
|
|
api_class: Type[ComfyAPIBase]
|
|
|
|
|
|
def parse_version(version_str: str) -> packaging_version.Version:
|
|
"""
|
|
Parses a version string into a packaging_version.Version object.
|
|
Raises ValueError if the version string is invalid.
|
|
"""
|
|
if version_str == "latest":
|
|
return packaging_version.parse("9999999.9999999.9999999")
|
|
return packaging_version.parse(version_str)
|
|
|
|
|
|
registered_versions: List[ComfyAPIWithVersion] = []
|
|
|
|
|
|
def register_versions(versions: List[ComfyAPIWithVersion]):
|
|
versions.sort(key=lambda x: parse_version(x.version))
|
|
global registered_versions
|
|
registered_versions = versions
|
|
|
|
|
|
def get_all_versions() -> List[ComfyAPIWithVersion]:
|
|
"""
|
|
Returns a list of all registered ComfyAPI versions.
|
|
"""
|
|
return registered_versions
|