Is there a way to clear sharp edges using bmesh in python? I'm trying to speed up an addon that had to toggle into Edit Mode for sometimes thousands of object by staying at the object level using bmesh instead of object.editmode_toggle().

Is there any operation to clear sharp edges without having to enter Edit Mode for each object?
You can set use_edge_sharp flag per edge on MeshData.edges in Object Mode:

import bpy

obj = bpy.context.object

# Clear sharp state for all edges
for edge in obj.data.edges:
    edge.use_edge_sharp = False




If there is no way around Bmesh for whatever reason, you can set the smooth state of all edges to True in Edit Mode:

import bpy
import bmesh

obj = bpy.context.object
me = obj.data
bm = bmesh.from_edit_mesh(me)

# Clear sharp state for all edges 
for edge in bm.edges:
    edge.smooth = True

# Update the mesh
bmesh.update_edit_mesh(me, False, False)


Related: Is there a way to select edges marked as sharp via python?