Nodes/SP-Nodes/SP_CacheDataUnpacker
ComfyUI Node

SP_CacheDataUnpacker

Split a packed bundle back into eight outputs

By bananasss00·Created 2 years ago·Updated 14 days ago· 24
SP_CacheDataUnpacker
  • packed_data
  • item_1
  • item_2
  • item_3
  • item_4
  • item_5
  • item_6
  • item_7
  • item_8

SP_CacheDataUnpacker is the mirror image of SP_CacheDataPacker. The packer squashes up to eight values into one wire so they'll fit through a single cache slot or router branch; this node takes that packed_data bundle and splits it back into eight separate outputs on the other side.

You almost never use it alone. The shape of the whole trick is: pack a bundle → push it through one cache slot (or one router branch) → unpack it on the far side → wire the individual values to wherever they actually belong. The bundle travels as a single atomic object, so it's cached, loaded, or skipped as a unit - no partial states, no eleven cache nodes.

How it works

unpack reads the dict the packer produced and pulls out each key with dict.get, so item_1 through item_8 come out on eight matching outputs. Anything the bundle didn't contain comes back as None - deliberately, per the source: a missing value is normal, not an error. If you hand it data that isn't a packed dict, it logs an error and returns eight Nones rather than crashing.

The inputs and outputs that matter

One input, packed_data - connect the packer's output wire here. Eight outputs, item_1item_8, any type. Wire the ones you need; the Nones you can ignore.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/bananasss00/ComfyUI-SP-Nodes

restart, or install "SP-Nodes" via ComfyUI Manager. No extra dependencies.

Where people get burned

It's pair-programming, not a general-purpose deserializer: only unpack what SP_CacheDataPacker made, or you'll be staring at eight empty wires wondering what happened. And keep the pack order in mind - since unconnected packer slots simply don't make it into the dict, the unpacker's outputs shift names, not positions. item_3 on the unpacker is always the value that was packed as item_3, which is exactly what you want, but it does mean an unconnected middle slot leaves a gap you should account for downstream.

CategorySP-Nodes/cache/utils

Inputs (1)

NameTypeDefaultDescription
packed_data*Connect the packed data wire here.

Outputs (8)

NameTypeDescription
item_1*
item_2*
item_3*
item_4*
item_5*
item_6*
item_7*
item_8*