_.isGetSetDescriptor
Introspection-only, and you will never need it
- obj
- *
_.isGetSetDescriptor checks whether an object is a CPython getset descriptor - an internal attribute mechanism that C extension types use for their properties. 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). And it is the very definition of an introspection-only node: the check is real, the relevance to a ComfyUI graph is essentially zero.
The README's family warning - work in progress, "not recommended for use in workflows" - was written for exactly this kind of node. When you wrap a whole Python utility library's method surface in graph nodes, you get the useful ones (.isEmpty, .isEqual, .isNone) and the decorative ones (this). The generator doesn't discriminate.
What it does
A getset descriptor is what CPython produces for attributes of built-in and C-extension types - property objects, and things like object.__dict__. When you access some_c_extension_obj.some_attribute, a getset descriptor mediates the get and set. type(self.obj) is GetSetDescriptorType detects those descriptor objects themselves.
For one of these to appear on a ComfyUI wire, a custom node would have to deliberately dig into the type internals of a C extension and return the descriptor object. That is introspection hobbyist territory. Even if you had one, "is this a getset descriptor" is a question with no downstream consumer in any workflow.
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 you'll ever be. It belongs in the same drawer as _.isFrame, _.isMemberDescriptor, and _.isTraceback - technically correct type checks for CPython internals that a graph never carries. If you're trying to identify a mystery object and working through the whole _.isX family as a diagnostic kit, this one will rule out "CPython internal descriptor" before you move on. That is the ceiling of its usefulness.
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
- Descriptor objects only exist in CPython's C-level type machinery - nothing normal produces them on a wire.
- The exact-type check can't misfire, but that's cold comfort.
- Output wire is
*, notBOOLEAN.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| objopt | * | Primary input object. Also accepts _.CHAIN to continue chaining. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| * | * | — |