Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/model_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ async def get_model_folders(request):
@routes.get("/experiment/models/{folder}")
async def get_all_models(request):
folder = request.match_info.get("folder", None)
if not folder in folder_paths.folder_names_and_paths:
if folder not in folder_paths.folder_names_and_paths:
return web.Response(status=404)
files = self.get_model_file_list(folder)
return web.json_response(files)
Expand All @@ -55,7 +55,7 @@ async def get_model_preview(request):
path_index = int(request.match_info.get("path_index", None))
filename = request.match_info.get("filename", None)

if not folder_name in folder_paths.folder_names_and_paths:
if folder_name not in folder_paths.folder_names_and_paths:
return web.Response(status=404)

folders = folder_paths.folder_names_and_paths[folder_name]
Expand Down
3 changes: 2 additions & 1 deletion comfy/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,8 @@ def prepare_current_keyframe(self, curr_t: float, transformer_options: dict[str,
if self._current_keyframe.get_effective_guarantee_steps(max_sigma) > 0:
break
# if eval_c is outside the percent range, stop looking further
else: break
else:
break
# update steps current context is used
self._current_used_steps += 1
# update current timestep this was performed on
Expand Down
2 changes: 1 addition & 1 deletion comfy/ldm/chroma_radiance/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ def radiance_get_override_params(self, overrides: dict) -> ChromaRadianceParams:
bad_keys = tuple(
k
for k, v in overrides.items()
if type(v) != type(getattr(params, k)) and (v is not None or k not in nullable_keys)
if not isinstance(v, type(getattr(params, k))) and (v is not None or k not in nullable_keys)
)
if bad_keys:
e = f"Invalid value(s) in transformer_options chroma_radiance_options: {', '.join(bad_keys)}"
Expand Down
3 changes: 2 additions & 1 deletion comfy/ldm/hunyuan_video/upsampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import torch.nn.functional as F
from comfy.ldm.modules.diffusionmodules.model import ResnetBlock, VideoConv3d
from comfy.ldm.hunyuan_video.vae_refiner import RMS_norm
import model_management, model_patcher
import model_management
import model_patcher

class SRResidualCausalBlock3D(nn.Module):
def __init__(self, channels: int):
Expand Down
6 changes: 4 additions & 2 deletions comfy/ldm/modules/diffusionmodules/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,8 @@ def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
attn_resolutions, dropout=0.0, resamp_with_conv=True, in_channels,
resolution, use_timestep=True, use_linear_attn=False, attn_type="vanilla"):
super().__init__()
if use_linear_attn: attn_type = "linear"
if use_linear_attn:
attn_type = "linear"
self.ch = ch
self.temb_ch = self.ch*4
self.num_resolutions = len(ch_mult)
Expand Down Expand Up @@ -548,7 +549,8 @@ def __init__(self, *, ch, out_ch, ch_mult=(1,2,4,8), num_res_blocks,
conv3d=False, time_compress=None,
**ignore_kwargs):
super().__init__()
if use_linear_attn: attn_type = "linear"
if use_linear_attn:
attn_type = "linear"
self.ch = ch
self.temb_ch = 0
self.num_resolutions = len(ch_mult)
Expand Down
4 changes: 2 additions & 2 deletions comfy/ldm/modules/ema.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def forward(self, model):
shadow_params[sname] = shadow_params[sname].type_as(m_param[key])
shadow_params[sname].sub_(one_minus_decay * (shadow_params[sname] - m_param[key]))
else:
assert not key in self.m_name2s_name
assert key not in self.m_name2s_name

def copy_to(self, model):
m_param = dict(model.named_parameters())
Expand All @@ -54,7 +54,7 @@ def copy_to(self, model):
if m_param[key].requires_grad:
m_param[key].data.copy_(shadow_params[self.m_name2s_name[key]].data)
else:
assert not key in self.m_name2s_name
assert key not in self.m_name2s_name

def store(self, parameters):
"""
Expand Down
2 changes: 1 addition & 1 deletion comfy/ldm/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def count_params(model, verbose=False):


def instantiate_from_config(config):
if not "target" in config:
if "target" not in config:
if config == '__is_first_stage__':
return None
elif config == "__is_unconditional__":
Expand Down
6 changes: 4 additions & 2 deletions comfy/taesd/taehv.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,8 @@ def show_progress_bar(self, value):
self._show_progress_bar = value

def encode(self, x, **kwargs):
if self.patch_size > 1: x = F.pixel_unshuffle(x, self.patch_size)
if self.patch_size > 1:
x = F.pixel_unshuffle(x, self.patch_size)
x = x.movedim(2, 1) # [B, C, T, H, W] -> [B, T, C, H, W]
if x.shape[1] % 4 != 0:
# pad at end to multiple of 4
Expand All @@ -167,5 +168,6 @@ def encode(self, x, **kwargs):
def decode(self, x, **kwargs):
x = self.process_in(x).movedim(2, 1) # [B, C, T, H, W] -> [B, T, C, H, W]
x = apply_model_with_memblocks(self.decoder, x, self.parallel, self.show_progress_bar)
if self.patch_size > 1: x = F.pixel_shuffle(x, self.patch_size)
if self.patch_size > 1:
x = F.pixel_shuffle(x, self.patch_size)
return x[:, self.frames_to_trim:].movedim(2, 1)
6 changes: 3 additions & 3 deletions comfy_execution/graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,15 +207,15 @@ def is_cached(self, node_id):
return self.output_cache.get(node_id) is not None

def cache_link(self, from_node_id, to_node_id):
if not to_node_id in self.execution_cache:
if to_node_id not in self.execution_cache:
self.execution_cache[to_node_id] = {}
self.execution_cache[to_node_id][from_node_id] = self.output_cache.get(from_node_id)
if not from_node_id in self.execution_cache_listeners:
if from_node_id not in self.execution_cache_listeners:
self.execution_cache_listeners[from_node_id] = set()
self.execution_cache_listeners[from_node_id].add(to_node_id)

def get_cache(self, from_node_id, to_node_id):
if not to_node_id in self.execution_cache:
if to_node_id not in self.execution_cache:
return None
value = self.execution_cache[to_node_id].get(from_node_id)
if value is None:
Expand Down
3 changes: 2 additions & 1 deletion comfy_extras/nodes_apg.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ def execute(cls, model, eta, norm_threshold, momentum) -> io.NodeOutput:
def pre_cfg_function(args):
nonlocal running_avg, prev_sigma

if len(args["conds_out"]) == 1: return args["conds_out"]
if len(args["conds_out"]) == 1:
return args["conds_out"]

cond = args["conds_out"][0]
uncond = args["conds_out"][1]
Expand Down
2 changes: 1 addition & 1 deletion comfy_extras/nodes_wan.py
Original file line number Diff line number Diff line change
Expand Up @@ -817,7 +817,7 @@ def get_sample_indices(original_fps,
if required_duration > total_frames / original_fps:
raise ValueError("required_duration must be less than video length")

if not fixed_start is None and fixed_start >= 0:
if fixed_start is not None and fixed_start >= 0:
start_frame = fixed_start
else:
max_start = total_frames - required_origin_frames
Expand Down
6 changes: 4 additions & 2 deletions nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2242,8 +2242,10 @@ async def init_external_custom_nodes():

for possible_module in possible_modules:
module_path = os.path.join(custom_node_path, possible_module)
if os.path.isfile(module_path) and os.path.splitext(module_path)[1] != ".py": continue
if module_path.endswith(".disabled"): continue
if os.path.isfile(module_path) and os.path.splitext(module_path)[1] != ".py":
continue
if module_path.endswith(".disabled"):
continue
if args.disable_all_custom_nodes and possible_module not in args.whitelist_custom_nodes:
logging.info(f"Skipping {possible_module} due to disable_all_custom_nodes and whitelist_custom_nodes")
continue
Expand Down
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@ lint.select = [
"N805", # invalid-first-argument-name-for-method
"S307", # suspicious-eval-usage
"S102", # exec
"E",
"T", # print-usage
"W",
# The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names.
# See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f
"F",
]

lint.ignore = ["E501", "E722", "E731", "E712", "E402", "E741"]

exclude = ["*.ipynb", "**/generated/*.pyi"]

[tool.pylint]
Expand Down
6 changes: 3 additions & 3 deletions server.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ def list_model_types(request):
@routes.get("/models/{folder}")
async def get_models(request):
folder = request.match_info.get("folder", None)
if not folder in folder_paths.folder_names_and_paths:
if folder not in folder_paths.folder_names_and_paths:
return web.Response(status=404)
files = folder_paths.get_filename_list(folder)
return web.json_response(files)
Expand Down Expand Up @@ -579,7 +579,7 @@ async def view_metadata(request):
folder_name = request.match_info.get("folder_name", None)
if folder_name is None:
return web.Response(status=404)
if not "filename" in request.rel_url.query:
if "filename" not in request.rel_url.query:
return web.Response(status=404)

filename = request.rel_url.query["filename"]
Expand All @@ -593,7 +593,7 @@ async def view_metadata(request):
if out is None:
return web.Response(status=404)
dt = json.loads(out)
if not "__metadata__" in dt:
if "__metadata__" not in dt:
return web.Response(status=404)
return web.json_response(dt["__metadata__"])

Expand Down
Loading