| 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 |
|
|