Commit Graph

202 Commits

Author SHA1 Message Date
doctorpangloss
5186d19441 Merge branch 'master' of github.com:comfyanonymous/ComfyUI into fix-merge 2025-10-21 10:56:30 -07:00
doctorpangloss
358cb834d6 fix tests, make fixture of core workflow test function to reclaim RAM better 2025-10-21 10:53:49 -07:00
doctorpangloss
be56a14e65 Merge commit 'a4787ac83bf6c83eeb459ed80fc9b36f63d2a3a7' of github.com:comfyanonymous/ComfyUI into fix-merge 2025-10-21 10:53:43 -07:00
comfyanonymous
b7992f871a
Revert "execution: fold in dependency aware caching / Fix --cache-none with l…" (#10422)
This reverts commit b1467da480.
2025-10-20 19:03:06 -04:00
rattus128
b1467da480
execution: fold in dependency aware caching / Fix --cache-none with loops/lazy etc (#10368)
* execution: fold in dependency aware caching

This makes --cache-none compatiable with lazy and expanded
subgraphs.

Currently the --cache-none option is powered by the
DependencyAwareCache. The cache attempts to maintain a parallel
copy of the execution list data structure, however it is only
setup once at the start of execution and does not get meaninigful
updates to the execution list.

This causes multiple problems when --cache-none is used with lazy
and expanded subgraphs as the DAC does not accurately update its
copy of the execution data structure.

DAC has an attempt to handle subgraphs ensure_subcache however
this does not accurately connect to nodes outside the subgraph.
The current semantics of DAC are to free a node ASAP after the
dependent nodes are executed.

This means that if a subgraph refs such a node it will be requed
and re-executed by the execution_list but DAC wont see it in
its to-free lists anymore and leak memory.

Rather than try and cover all the cases where the execution list
changes from inside the cache, move the while problem to the
executor which maintains an always up-to-date copy of the wanted
data-structure.

The executor now has a fast-moving run-local cache of its own.
Each _to node has its own mini cache, and the cache is unconditionally
primed at the time of add_strong_link.

add_strong_link is called for all of static workflows, lazy links
and expanded subgraphs so its the singular source of truth for
output dependendencies.

In the case of a cache-hit, the executor cache will hold the non-none
value (it will respect updates if they happen somehow as well).

In the case of a cache-miss, the executor caches a None and will
wait for a notification to update the value when the node completes.

When a node completes execution, it simply releases its mini-cache
and in turn its strong refs on its direct anscestor outputs, allowing
for ASAP freeing (same as the DependencyAwareCache but a little more
automatic).

This now allows for re-implementation of --cache-none with no cache
at all. The dependency aware cache was also observing the dependency
sematics for the objects and UI cache which is not accurate (this
entire logic was always outputs specific).

This also prepares for more complex caching strategies (such as RAM
pressure based caching), where a cache can implement any freeing
strategy completely independently of the DepedancyAwareness
requirement.

* main: re-implement --cache-none as no cache at all

The execution list now tracks the dependency aware caching more
correctly that the DependancyAwareCache.

Change it to a cache that does nothing.

* test_execution: add --cache-none to the test suite

--cache-none is now expected to work universally. Run it through the
full unit test suite. Propagate the server parameterization for whether
or not the server is capabale of caching, so that the minority of tests
that specifically check for cache hits can if else. Hard assert NOT
caching in the else to give some coverage of --cache-none expected
behaviour to not acutally cache.
2025-10-17 13:55:15 -07:00
doctorpangloss
1c2e6867fb Fix tests 2025-10-06 15:40:04 -07:00
doctorpangloss
f694828f49 Fix tests 2025-10-06 15:38:59 -07:00
doctorpangloss
32af09cebf Fix test 2025-10-06 15:35:46 -07:00
Benjamin Berman
e62df3a881 Fix issue finding approx vae taesdxl when used in a workflow 2025-09-26 12:29:00 -07:00
doctorpangloss
ac0694a7bd Fix #46 enable node blacklisting using --blacklist-custom-nodes ComfyUI-Manager / config.blacklist_custom_nodes = ["ComfyUI-Manager"] 2025-09-23 13:50:05 -07:00
doctorpangloss
f6d3962c77 Fix tests
Merge branch 'master' of github.com:comfyanonymous/ComfyUI
2025-09-23 12:42:12 -07:00
doctorpangloss
6a48fc1c40 Pass all tests. Add Qwen-Edit and other Qwen checkpoints for testing 2025-09-23 12:15:41 -07:00
doctorpangloss
6af812f9a8 Fix custom model paths config paths, tweak tests 2025-09-23 11:01:48 -07:00
doctorpangloss
4a3feee1a2 Tweaks 2025-09-23 10:28:36 -07:00
doctorpangloss
fd6e5c2c8d move test_cache_control 2025-09-22 14:31:21 -07:00
doctorpangloss
a9a0f96408 Merge branch 'master' of github.com:comfyanonymous/ComfyUI 2025-09-22 14:29:50 -07:00
Christian Byrne
e3206351b0
add offset param (#9977) 2025-09-22 17:12:32 -04:00
doctorpangloss
c48163e78c Fix misalignment between EXIF tags and whatever pillow was actually doing 2025-09-19 16:14:40 -07:00
doctorpangloss
bc201cea4d Improve tests, fix issues with alternate filenames, improve group offloading support for transformers models 2025-09-18 13:25:08 -07:00
doctorpangloss
79b8723f61 Various fixes
- Fix 16 bit exif saving for PNGs
 - Validate alternative filenames correctly
 - Improve speed of test workflows by setting steps to 1
2025-09-17 16:04:05 -07:00
Benjamin Berman
4839189809 16 bit EXIF is broken 2025-09-17 12:04:44 -07:00
guill
a9f1bb10a5
Fix progress update crossover between users (#9706)
* Fix showing progress from other sessions

Because `client_id` was missing from ths `progress_state` message, it
was being sent to all connected sessions. This technically meant that if
someone had a graph with the same nodes, they would see the progress
updates for others.

Also added a test to prevent reoccurance and moved the tests around to
make CI easier to hook up.

* Fix CI issues related to timing-sensitive tests
2025-09-04 19:13:28 -04:00
doctorpangloss
58622c7e91 Move validation back to where it is supposed to be relative to upstream 2025-09-04 14:05:19 -07:00
doctorpangloss
df9abc1424 Automated test passes for #30 2025-09-03 15:44:53 -07:00
doctorpangloss
75e39c2720 Automated test for #30 2025-09-03 15:40:35 -07:00
doctorpangloss
0e5348b9a9 Fixes issues with running from a vanilla ComfyUI workspace and having this package installed (fixes #30) 2025-09-03 14:57:34 -07:00
doctorpangloss
173b1ce0ae Add support for intuitive progress notifications when using comfyui as a library 2025-08-26 16:31:39 -07:00
doctorpangloss
1e938f5feb fix sdpa priorities 2025-08-26 14:33:00 -07:00
doctorpangloss
e84bf5f025 Fix downloads and tests on Linux 2025-08-22 18:29:12 -07:00
doctorpangloss
cd17b42664 Qwen Image with sage attention workarounds 2025-08-07 17:29:23 -07:00
doctorpangloss
7ba86929f7 Merge branch 'master' of github.com:comfyanonymous/ComfyUI 2025-08-04 13:44:45 -07:00
doctorpangloss
59bc6afa7b Fixes to tests and progress bars in xet 2025-08-01 17:26:30 -07:00
doctorpangloss
87bed08124 Merge branch 'master' of github.com:comfyanonymous/ComfyUI 2025-08-01 16:05:47 -07:00
guill
97eb256a35
Add support for partial execution in backend (#9123)
When a prompt is submitted, it can optionally include
`partial_execution_targets` as a list of ids. If it does, rather than
adding all outputs to the execution list, we add only those in the list.
2025-07-30 22:55:28 -04:00
guill
0a3d062e06
ComfyAPI Core v0.0.2 (#8962)
* ComfyAPI Core v0.0.2

* Respond to PR feedback

* Fix Python 3.9 errors

* Fix missing backward compatibility proxy

* Reorganize types a bit

The input types, input impls, and utility types are now all available in
the versioned API. See the change in `comfy_extras/nodes_video.py` for
an example of their usage.

* Remove the need for `--generate-api-stubs`

* Fix generated stubs differing by Python version

* Fix ruff formatting issues
2025-07-29 22:17:22 -04:00
doctorpangloss
03e5430121 Improvements for Wan 2.2 support
- add xet support and add the xet cache to manageable directories
 - xet is enabled by default
 - fix logging to root in various places
 - improve logging about model unloading and loading
 - TorchCompileNode now supports the VAE
 - torchaudio missing will cause less noise in the logs
 - feature flags will assume to be supporting everything in the distributed progress context
 - fixes progress notifications
2025-07-28 14:36:27 -07:00
Benjamin Berman
2fd5fc81f5 This raises ProcessExpired on Linux but not on Windows 2025-07-26 17:24:46 -07:00
doctorpangloss
6f2008287e fix error when fork isn't being used 2025-07-25 15:32:30 -07:00
doctorpangloss
a3ae6e74d2 fix tests 2025-07-25 15:01:30 -07:00
doctorpangloss
3684cff31b Merge branch 'master' of github.com:comfyanonymous/ComfyUI 2025-07-25 12:48:05 -07:00
doctorpangloss
d4d62500ac fix tests, disable opentel metrics provider 2025-07-16 14:21:50 -07:00
doctorpangloss
96b4e04315 packaging fixes
- enable user db
 - fix main_pre order everywhere
 - fix absolute to relative imports everywhere
 - async better supported
2025-07-15 10:19:33 -07:00
doctorpangloss
c086c5e005 fix pylint issues 2025-07-14 17:44:43 -07:00
doctorpangloss
04e411c32e Merge branch 'master' of github.com:comfyanonymous/ComfyUI 2025-07-14 13:45:09 -07:00
guill
2b653e8c18
Support for async node functions (#8830)
* Support for async execution functions

This commit adds support for node execution functions defined as async. When
a node's execution function is defined as async, we can continue
executing other nodes while it is processing.

Standard uses of `await` should "just work", but people will still have
to be careful if they spawn actual threads. Because torch doesn't really
have async/await versions of functions, this won't particularly help
with most locally-executing nodes, but it does work for e.g. web
requests to other machines.

In addition to the execute function, the `VALIDATE_INPUTS` and
`check_lazy_status` functions can also be defined as async, though we'll
only resolve one node at a time right now for those.

* Add the execution model tests to CI

* Add a missing file

It looks like this got caught by .gitignore? There's probably a better
place to put it, but I'm not sure what that is.

* Add the websocket library for automated tests

* Add additional tests for async error cases

Also fixes one bug that was found when an async function throws an error
after being scheduled on a task.

* Add a feature flags message to reduce bandwidth

We now only send 1 preview message of the latest type the client can
support.

We'll add a console warning when the client fails to send a feature
flags message at some point in the future.

* Add async tests to CI

* Don't actually add new tests in this PR

Will do it in a separate PR

* Resolve unit test in GPU-less runner

* Just remove the tests that GHA can't handle

* Change line endings to UNIX-style

* Avoid loading model_management.py so early

Because model_management.py has a top-level `logging.info`, we have to
be careful not to import that file before we call `setup_logging`. If we
do, we end up having the default logging handler registered in addition
to our custom one.
2025-07-10 14:46:19 -04:00
doctorpangloss
41dc6ec7fa fix inpainting alignment issue 2025-06-24 12:27:06 -07:00
doctorpangloss
1d29c97266 fix tests 2025-06-17 18:38:42 -07:00
doctorpangloss
52c522d019 nodes train fix, nodes stich test imports removal 2025-06-17 14:46:46 -07:00
doctorpangloss
488bb3a23f fix unit tests 2025-06-17 14:41:28 -07:00
doctorpangloss
cc299b83a3 move test files 2025-06-17 14:29:41 -07:00