image.png

exec("""
sel = [o for o in ops('*') if o.selected]

print('\\n==============================')
print('SELECTED NODE DEBUG REPORT')
print('Selected count:', len(sel))
print('==============================\\n')

if not sel:
    print('No nodes selected. Select the red-X nodes first, then run this.')
else:
    for o in sel:
        print('\\n' + '='*80)
        print('PATH:', o.path)
        print('NAME:', o.name)
        print('TYPE:', o.OPType)
        print('FAMILY:', o.family)
        print('VALID:', o.valid)
        print('COOKING:', getattr(o, 'isCooking', 'n/a'))
        print('BYPASS:', getattr(o, 'bypass', 'n/a'))
        print('LOCKED:', getattr(o, 'lock', 'n/a'))
        print('ERRORS:', o.errors())
        print('WARNINGS:', o.warnings())

        print('\\n--- INPUTS ---')
        for i, inp in enumerate(o.inputs):
            if inp:
                print(i, inp.path, '|', inp.OPType, '| errors:', inp.errors(), '| warnings:', inp.warnings())
            else:
                print(i, 'None')

        print('\\n--- OUTPUTS ---')
        try:
            for out in o.outputs:
                print(out.path, '|', out.OPType, '| errors:', out.errors(), '| warnings:', out.warnings())
        except Exception as e:
            print('Could not list outputs:', e)

        print('\\n--- MAIN PARAMS, non-default or likely important ---')
        for p in o.pars():
            try:
                val = p.eval()
                default = p.default
                if val != default or any(k in p.name.lower() for k in ['active','play','file','path','input','source','device','camera','cook','script','dat','top','chop','pulse','callback','execute','select','index','chan','name']):
                    print(p.name, '=', repr(val), '| default:', repr(default), '| mode:', p.mode)
            except Exception as e:
                print(p.name, '= <could not eval>', e)

        print('\\n--- DATA SHAPE / CONTENT PREVIEW ---')
        try:
            if o.family == 'DAT':
                print('DAT rows:', o.numRows, 'cols:', o.numCols)
                preview_rows = min(o.numRows, 8)
                for r in range(preview_rows):
                    row = []
                    for c in range(min(o.numCols, 8)):
                        row.append(o[r,c].val)
                    print('row', r, ':', row)
            elif o.family == 'TOP':
                print('TOP resolution:', o.width, 'x', o.height)
                print('TOP pixel format:', o.pixelFormat)
            elif o.family == 'CHOP':
                print('CHOP channels:', o.numChans, 'samples:', o.numSamples)
                for ch in o.chans()[:12]:
                    try:
                        print(ch.name, 'first:', ch[0], 'last:', ch[-1])
                    except:
                        print(ch.name)
            elif o.family == 'SOP':
                print('SOP points:', o.numPoints, 'prims:', o.numPrims)
            else:
                print('No special data preview for family:', o.family)
        except Exception as e:
            print('Could not preview data:', e)

print('\\nDONE')
""")

downloading codex

image.png

image.png

now that’s how you debug

now that’s how you debug

image.png

hend_tracking tox now views web cam input stream web render from iphone

lemme git stave

use preloeaded video

use preloeaded video

dl mediapipe

dl mediapipe

image.png