Blender Class naming conventions - Python API

As of Blender 2.8 the API naming requirement is for the class name to match the following convention:

UPPER_CASE_{TYPE}_mixed_case

Where {TYPE} is two letters denoting the class type inherited:

  • HT – Header
  • MT – Menu
  • OT – Operator
  • PT – Panel
  • UL – UI list

The class identifier “bl_idname” mast match the class name.

Valid class name and identifier examples:

class ADDONNAME_OT_my_operator(bpy.types.Operator):
  bl_idname = 'ADDONNAME_OT_my_operator'  ...

class ADDONNAME_MT_my_menu(bpy.types.Menu):
  bl_idname = 'ADDONNAME_MT_my_menu'  ...

class ADDONNAME_HT_my_header(bpy.types.Header):
  bl_idname = 'ADDONNAME_HT_my_header'  ...

class ADDONNAME_PT_my_panel(bpy.types.Panel):
  bl_idname = 'ADDONNAME_PT_my_panel'  ...

If class name or identifier doesn’t meet the conventions, Blender will raise an Error warning but still run:

E.g.

‘Oscurart Files Tools’ doesn’t contain ‘_PT_’ with prefix & suffix

NB: In the future this may cause the Addon to fail and not run at all.