_.isFrame
A stack-frame check that belongs to the debugger, not your graph
- obj
- *
_.isFrame checks whether an object is a Python stack frame - the runtime record of a function call, the sort of thing inspect.currentframe() returns while a function is executing. It's part of the sfinktah/comfy-ovum pack's ovum/underscore family, the auto-generated wrappers around underscore3 (a Python port of Underscore.js). The check is mechanically correct: type(self.obj) is FrameType. It is also about as relevant to a ComfyUI workflow as a node that tests whether something is a Python traceback - which is to say, it isn't.
The README's family warning - work in progress, "not recommended for use in workflows" - is the appropriate framing. This node exists because the generator wrapped the whole underscore3 method surface, and isFrame came along for the ride.
What it does
Every active function call in CPython has a frame object on the stack: it holds the local variables, the code object, the line number, and a pointer back to the caller's frame. Tools like debuggers and profilers grab frames via inspect.currentframe() or sys._getframe(). type(self.obj) is FrameType detects exactly those objects.
For anything in a ComfyUI graph to be a frame, a custom node would have to reach into Python's runtime introspection and hand the result to you over a wire. That's debugger territory, not graph territory. Even if it happened, there's nothing meaningful you'd do with the boolean afterward.
Like the rest of the family, it takes a plain value and returns the boolean, or takes a _.CHAIN from _.chain and keeps the chain going.
Inputs and outputs
obj- the only input, type*, optional.- Output - a single
*socket holding a Python bool (the family's generic-typed output quirk).
Where it fits
Nowhere practical. Group _.isFrame with the other pure-introspection checks in the family - _.isTraceback, _.isGetSetDescriptor, _.isMemberDescriptor. They're all technically sound, all zero-relevance for building images or video. If you ever find a stack frame on a wire, the node will confirm it. You won't.
Installing it
Install the pack via ComfyUI Manager - search comfy-ovum - or:
cd ComfyUI/custom_nodes
git clone https://github.com/sfinktah/comfy-ovum
Restart ComfyUI. No extra dependencies; underscore3 is vendored in the repo.
Gotchas
- Frames are transient runtime objects - they only exist while a function is on the call stack, so they can't be meaningfully persisted or passed around a graph anyway.
- It's an exact-type check, so it can't misfire; it can only be useless.
- Output wire is
*, notBOOLEAN. Not that you'll need it.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| objopt | * | Primary input object. Also accepts _.CHAIN to continue chaining. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| * | * | — |