mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-25 05:40:15 +08:00
remove unneeded test, make these fields optional
This commit is contained in:
parent
9d5a5dd533
commit
a811336e58
@ -1,41 +1,43 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import torch
|
|
||||||
|
|
||||||
import os
|
|
||||||
import json
|
import json
|
||||||
import math
|
|
||||||
import random
|
|
||||||
import logging
|
import logging
|
||||||
|
import math
|
||||||
|
import os
|
||||||
|
import random
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import safetensors.torch
|
||||||
|
import torch
|
||||||
from PIL import Image, ImageOps, ImageSequence
|
from PIL import Image, ImageOps, ImageSequence
|
||||||
from PIL.PngImagePlugin import PngInfo
|
from PIL.PngImagePlugin import PngInfo
|
||||||
from huggingface_hub import snapshot_download
|
from huggingface_hub import snapshot_download
|
||||||
from natsort import natsorted
|
from natsort import natsorted
|
||||||
import numpy as np
|
|
||||||
import safetensors.torch
|
|
||||||
|
|
||||||
|
from .. import clip_vision as clip_vision_module
|
||||||
|
from .. import controlnet
|
||||||
from .. import diffusers_load
|
from .. import diffusers_load
|
||||||
from .. import samplers
|
from .. import model_management
|
||||||
|
from .. import node_helpers
|
||||||
from .. import sample
|
from .. import sample
|
||||||
|
from .. import samplers
|
||||||
from .. import sd
|
from .. import sd
|
||||||
from .. import utils
|
from .. import utils
|
||||||
from .. import clip_vision as clip_vision_module
|
|
||||||
from .. import model_management
|
|
||||||
from ..comfy_types import IO, ComfyNodeABC, InputTypeDict
|
|
||||||
from ..cli_args import args
|
from ..cli_args import args
|
||||||
|
|
||||||
from ..cmd import folder_paths, latent_preview
|
from ..cmd import folder_paths, latent_preview
|
||||||
|
from ..comfy_types import IO, ComfyNodeABC, InputTypeDict
|
||||||
from ..component_model.deprecation import _deprecate_method
|
from ..component_model.deprecation import _deprecate_method
|
||||||
from ..component_model.tensor_types import RGBImage, RGBImageBatch, MaskBatch
|
from ..component_model.tensor_types import RGBImage, RGBImageBatch, MaskBatch
|
||||||
from ..execution_context import current_execution_context
|
from ..execution_context import current_execution_context
|
||||||
from ..images import open_image
|
from ..images import open_image
|
||||||
from ..interruption import interrupt_current_processing
|
from ..interruption import interrupt_current_processing
|
||||||
from ..ldm.flux.weight_dtypes import FLUX_WEIGHT_DTYPES
|
from ..ldm.flux.weight_dtypes import FLUX_WEIGHT_DTYPES
|
||||||
from ..model_downloader import get_filename_list_with_downloadable, get_or_download, KNOWN_CHECKPOINTS, KNOWN_CLIP_VISION_MODELS, KNOWN_GLIGEN_MODELS, KNOWN_UNCLIP_CHECKPOINTS, KNOWN_LORAS, KNOWN_CONTROLNETS, KNOWN_DIFF_CONTROLNETS, KNOWN_VAES, KNOWN_APPROX_VAES, get_huggingface_repo_list, KNOWN_CLIP_MODELS, KNOWN_UNET_MODELS
|
from ..model_downloader import get_filename_list_with_downloadable, get_or_download, KNOWN_CHECKPOINTS, \
|
||||||
|
KNOWN_CLIP_VISION_MODELS, KNOWN_GLIGEN_MODELS, KNOWN_UNCLIP_CHECKPOINTS, KNOWN_LORAS, KNOWN_CONTROLNETS, \
|
||||||
|
KNOWN_DIFF_CONTROLNETS, KNOWN_VAES, KNOWN_APPROX_VAES, get_huggingface_repo_list, KNOWN_CLIP_MODELS, \
|
||||||
|
KNOWN_UNET_MODELS
|
||||||
from ..nodes.common import MAX_RESOLUTION
|
from ..nodes.common import MAX_RESOLUTION
|
||||||
from .. import controlnet
|
|
||||||
from ..open_exr import load_exr
|
from ..open_exr import load_exr
|
||||||
from .. import node_helpers
|
|
||||||
from ..sd import VAE
|
from ..sd import VAE
|
||||||
from ..utils import comfy_tqdm
|
from ..utils import comfy_tqdm
|
||||||
|
|
||||||
@ -292,6 +294,7 @@ class VAEDecodeTiled:
|
|||||||
return {"required": {"samples": ("LATENT", ), "vae": ("VAE", ),
|
return {"required": {"samples": ("LATENT", ), "vae": ("VAE", ),
|
||||||
"tile_size": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 32}),
|
"tile_size": ("INT", {"default": 512, "min": 64, "max": 4096, "step": 32}),
|
||||||
"overlap": ("INT", {"default": 64, "min": 0, "max": 4096, "step": 32}),
|
"overlap": ("INT", {"default": 64, "min": 0, "max": 4096, "step": 32}),
|
||||||
|
}, "optional": {
|
||||||
"temporal_size": ("INT", {"default": 64, "min": 8, "max": 4096, "step": 4, "tooltip": "Only used for video VAEs: Amount of frames to decode at a time."}),
|
"temporal_size": ("INT", {"default": 64, "min": 8, "max": 4096, "step": 4, "tooltip": "Only used for video VAEs: Amount of frames to decode at a time."}),
|
||||||
"temporal_overlap": ("INT", {"default": 8, "min": 4, "max": 4096, "step": 4, "tooltip": "Only used for video VAEs: Amount of frames to overlap."}),
|
"temporal_overlap": ("INT", {"default": 8, "min": 4, "max": 4096, "step": 4, "tooltip": "Only used for video VAEs: Amount of frames to overlap."}),
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -1,140 +0,0 @@
|
|||||||
import os
|
|
||||||
from unittest.mock import Mock, patch, mock_open
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
from comfy.cmd import folder_paths
|
|
||||||
from comfy.extra_config import load_extra_path_config
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_yaml_content():
|
|
||||||
return {
|
|
||||||
'test_config': {
|
|
||||||
'base_path': '~/App/',
|
|
||||||
'checkpoints': 'subfolder1',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_expanded_home():
|
|
||||||
return '/home/user'
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def yaml_config_with_appdata():
|
|
||||||
return """
|
|
||||||
test_config:
|
|
||||||
base_path: '%APPDATA%/ComfyUI'
|
|
||||||
checkpoints: 'models/checkpoints'
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_yaml_content_appdata(yaml_config_with_appdata):
|
|
||||||
return yaml.safe_load(yaml_config_with_appdata)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_expandvars_appdata():
|
|
||||||
mock = Mock()
|
|
||||||
mock.side_effect = lambda path: path.replace('%APPDATA%', 'C:/Users/TestUser/AppData/Roaming')
|
|
||||||
return mock
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_add_model_folder_path():
|
|
||||||
return Mock()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_expanduser(mock_expanded_home):
|
|
||||||
def _expanduser(path):
|
|
||||||
if path.startswith('~/'):
|
|
||||||
return os.path.join(mock_expanded_home, path[2:])
|
|
||||||
return path
|
|
||||||
|
|
||||||
return _expanduser
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def mock_yaml_safe_load(mock_yaml_content):
|
|
||||||
return Mock(return_value=mock_yaml_content)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip("poorly authored")
|
|
||||||
@patch('builtins.open', new_callable=mock_open, read_data="dummy file content")
|
|
||||||
def test_load_extra_model_paths_expands_userpath(
|
|
||||||
mock_file,
|
|
||||||
monkeypatch,
|
|
||||||
mock_add_model_folder_path,
|
|
||||||
mock_expanduser,
|
|
||||||
mock_yaml_safe_load,
|
|
||||||
mock_expanded_home
|
|
||||||
):
|
|
||||||
# Attach mocks used by load_extra_path_config
|
|
||||||
monkeypatch.setattr(folder_paths, 'add_model_folder_path', mock_add_model_folder_path)
|
|
||||||
monkeypatch.setattr(os.path, 'expanduser', mock_expanduser)
|
|
||||||
monkeypatch.setattr(yaml, 'safe_load', mock_yaml_safe_load)
|
|
||||||
|
|
||||||
dummy_yaml_file_name = 'dummy_path.yaml'
|
|
||||||
load_extra_path_config(dummy_yaml_file_name)
|
|
||||||
|
|
||||||
expected_calls = [
|
|
||||||
('checkpoints', os.path.join(mock_expanded_home, 'App', 'subfolder1'), False),
|
|
||||||
]
|
|
||||||
|
|
||||||
assert mock_add_model_folder_path.call_count == len(expected_calls)
|
|
||||||
|
|
||||||
# Check if add_model_folder_path was called with the correct arguments
|
|
||||||
for actual_call, expected_call in zip(mock_add_model_folder_path.call_args_list, expected_calls):
|
|
||||||
assert actual_call.args[0] == expected_call[0]
|
|
||||||
assert os.path.normpath(actual_call.args[1]) == os.path.normpath(expected_call[1]) # Normalize and check the path to check on multiple OS.
|
|
||||||
assert actual_call.args[2] == expected_call[2]
|
|
||||||
|
|
||||||
# Check if yaml.safe_load was called
|
|
||||||
mock_yaml_safe_load.assert_called_once()
|
|
||||||
|
|
||||||
# Check if open was called with the correct file path
|
|
||||||
mock_file.assert_called_once_with(dummy_yaml_file_name, 'r')
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip("poorly authored")
|
|
||||||
@patch('builtins.open', new_callable=mock_open)
|
|
||||||
def test_load_extra_model_paths_expands_appdata(
|
|
||||||
mock_file,
|
|
||||||
monkeypatch,
|
|
||||||
mock_add_model_folder_path,
|
|
||||||
mock_expandvars_appdata,
|
|
||||||
yaml_config_with_appdata,
|
|
||||||
mock_yaml_content_appdata
|
|
||||||
):
|
|
||||||
# Set the mock_file to return yaml with appdata as a variable
|
|
||||||
mock_file.return_value.read.return_value = yaml_config_with_appdata
|
|
||||||
|
|
||||||
# Attach mocks
|
|
||||||
monkeypatch.setattr(folder_paths, 'add_model_folder_path', mock_add_model_folder_path)
|
|
||||||
monkeypatch.setattr(os.path, 'expandvars', mock_expandvars_appdata)
|
|
||||||
monkeypatch.setattr(yaml, 'safe_load', Mock(return_value=mock_yaml_content_appdata))
|
|
||||||
|
|
||||||
# Mock expanduser to do nothing (since we're not testing it here)
|
|
||||||
monkeypatch.setattr(os.path, 'expanduser', lambda x: x)
|
|
||||||
|
|
||||||
dummy_yaml_file_name = 'dummy_path.yaml'
|
|
||||||
load_extra_path_config(dummy_yaml_file_name)
|
|
||||||
|
|
||||||
expected_base_path = 'C:/Users/TestUser/AppData/Roaming/ComfyUI'
|
|
||||||
expected_calls = [
|
|
||||||
('checkpoints', os.path.join(expected_base_path, 'models/checkpoints'), False),
|
|
||||||
]
|
|
||||||
|
|
||||||
assert mock_add_model_folder_path.call_count == len(expected_calls)
|
|
||||||
|
|
||||||
# Check the base path variable was expanded
|
|
||||||
for actual_call, expected_call in zip(mock_add_model_folder_path.call_args_list, expected_calls):
|
|
||||||
assert actual_call.args == expected_call
|
|
||||||
|
|
||||||
# Verify that expandvars was called
|
|
||||||
assert mock_expandvars_appdata.called
|
|
||||||
Loading…
Reference in New Issue
Block a user