bpy.ops.constraint.move_up(ctx, constraint="FOOBAR", owner='BONE') returns cancelled if the Pose Bone is not the active bone, despite all related context members are overriden:
ctx = bpy.context.copy() ctx['constraint'] = con ctx['active_bone'] = bone ctx['active_pose_bone'] = pbone ctx['selected_bones'] = [bone] ctx['selected_pose_bones'] = [pbone] ctx['selected_editable_bones'] = [pbone]
It only works if the corresponding bone is really made active using ob.data.bones.active
Sample setup: