user: Show practical ways to work with Armature(ID) in a Blender add-on or script – include code.

assistant: # Armature(ID)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")

*class* bpy.types.Armature(*ID*)
:   Armature data-block containing a hierarchy of bones, usually used for rigging characters

    animation_data
    :   Animation data for this data-block

        Type:
        :   [`AnimData`](bpy.types.AnimData.html#bpy.types.AnimData "bpy.types.AnimData"), (readonly)

    axes_position
    :   The position for the axes on the bone. Increasing the value moves it closer to the tip; decreasing moves it closer to the root.

        Type:
        :   float in [0, 1], default 0.0

    bones
    :   Type:
        :   [`ArmatureBones`](bpy.types.ArmatureBones.html#bpy.types.ArmatureBones "bpy.types.ArmatureBones") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`Bone`](bpy.types.Bone.html#bpy.types.Bone "bpy.types.Bone"), (readonly)

    collections
    :   Type:
        :   [`BoneCollections`](bpy.types.BoneCollections.html#bpy.types.BoneCollections "bpy.types.BoneCollections") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`BoneCollection`](bpy.types.BoneCollection.html#bpy.types.BoneCollection "bpy.types.BoneCollection")

    collections_all
    :   List of all bone collections of the armature

        Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`BoneCollection`](bpy.types.BoneCollection.html#bpy.types.BoneCollection "bpy.types.BoneCollection"), (readonly)

    display_type
    :   - `OCTAHEDRAL`
          Octahedral – Display bones as octahedral shape (default).
        - `STICK`
          Stick – Display bones as simple 2D lines with dots.
        - `BBONE`
          B-Bone – Display bones as boxes, showing subdivision and B-Splines.
        - `ENVELOPE`
          Envelope – Display bones as extruded spheres, showing deformation influence volume.
        - `WIRE`
          Wire – Display bones as thin wires, showing subdivision and B-Splines.

        Type:
        :   enum in [`'OCTAHEDRAL'`, `'STICK'`, `'BBONE'`, `'ENVELOPE'`, `'WIRE'`], default `'OCTAHEDRAL'`

    edit_bones
    :   Type:
        :   [`ArmatureEditBones`](bpy.types.ArmatureEditBones.html#bpy.types.ArmatureEditBones "bpy.types.ArmatureEditBones") [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`EditBone`](bpy.types.EditBone.html#bpy.types.EditBone "bpy.types.EditBone"), (readonly)

    is_editmode
    :   True when used in editmode

        Type:
        :   boolean, default False, (readonly)

    pose_position
    :   Show armature in binding pose or final posed state

        - `POSE`
          Pose Position – Show armature in posed state.
        - `REST`
          Rest Position – Show Armature in binding pose state (no posing possible).

        Type:
        :   enum in [`'POSE'`, `'REST'`], default `'POSE'`

    relation_line_position
    :   The start position of the relation lines from parent to child bones

        - `TAIL`
          Tail – Draw the relationship line from the parent tail to the child head.
        - `HEAD`
          Head – Draw the relationship line from the parent head to the child head.

        Type:
        :   enum in [`'TAIL'`, `'HEAD'`], default `'TAIL'`

    show_axes
    :   Display bone axes

        Type:
        :   boolean, default False

    show_bone_colors
    :   Display bone colors

        Type:
        :   boolean, default True

    show_bone_custom_shapes
    :   Display bones with their custom shapes

        Type:
        :   boolean, default True

    show_names
    :   Display bone names

        Type:
        :   boolean, default False

    use_mirror_x
    :   Apply changes to matching bone on opposite side of X-Axis

        Type:
        :   boolean, default False

    transform(*matrix*)
    :   Transform armature bones by a matrix

        Parameters:
        :   **matrix** ([`mathutils.Matrix`](mathutils.html#mathutils.Matrix "mathutils.Matrix") of 4 \* 4 items in [-inf, inf]) – Matrix

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type