creating armature from script

Hy, I’m trying to import an armature based on a json file. The input data is all correct, however I seem to experience a problem when setting the parent of a new bone. Blender just crashes on this line. Also, I’m trying to set the bbone width which is also not working. Any suggestions?


def convertBone(boneData,armature,parent):
    # use correct axis alignment
    bpy.ops.object.mode_set(mode='EDIT',toggle=True)
    bpy.ops.armature.bone_primitive_add(name=boneData['name'])
    edit_bone = armature.edit_bones[boneData["name"]]
    edit_bone.select = True
    edit_bone.parent = parent
    edit_bone.use_connect = True
    bpy.ops.object.mode_set(mode='EDIT',toggle=True)

    # TODO: set orientation of the bone


    bone = armature.bones[boneData['name']]
    if (boneData.get("length")):
        setLength(bone,boneData["length"])
    if (boneData.get("width")):
        bpy.ops.object.mode_set(mode='EDIT',toggle=True)
        edit_bone.bbone_x = boneData["width"]["x"]
        edit_bone.bbone_z = boneData["width"]["z"]
        bpy.ops.object.mode_set(mode='EDIT',toggle=True)
        
    for child in boneData["children"]:
        convertBone(child,armature,edit_bone)

if (data['version'] != '1.0'):
    raise Exception('This version of csf files is not supported.')
    
bpy.context.scene.cursor_location = (0.0, 0.0, 0.0)
if (bpy.context.mode != 'OBJECT'):
    bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.armature_add()
armature = bpy.data.armatures[-1]
pose = bpy.data.objects[armature.name].pose
root = [k for k in pose.bones if k.parent == None][0]


# clean armature
bpy.ops.object.mode_set(mode='EDIT',toggle=True)
armature.edit_bones[root.name].select = True
bpy.ops.armature.delete()
bpy.ops.object.mode_set(mode='EDIT',toggle=True)


convertBone(data["bones"],armature,None)


The problem is solved by adding the bones in a different way, namely:

edit_bone = armature.edit_bones.new(boneData['name'])