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.