Fix T85915: Cannot save new theme preset

Since making bpy.types a real module `dir(bpy.types)` now includes
__dir__ and __getattr__ methods which need to be ignored.
This commit is contained in:
Campbell Barton 2021-02-24 23:36:15 +11:00
parent 5c098ef58c
commit 0c0553ace7
Notes: blender-bot 2023-02-14 08:40:26 +01:00
Referenced by issue #85915, Cannot Save New Theme Preset
1 changed files with 9 additions and 2 deletions

View File

@ -26,14 +26,21 @@ def build_property_typemap(skip_classes, skip_typemap):
property_typemap = {}
for attr in dir(bpy.types):
# Skip internal methods.
if attr.startswith("_"):
continue
cls = getattr(bpy.types, attr)
if issubclass(cls, skip_classes):
continue
bl_rna = getattr(cls, "bl_rna", None)
# Needed to skip classes added to the modules `__dict__`.
if bl_rna is None:
continue
# # to support skip-save we can't get all props
# properties = cls.bl_rna.properties.keys()
# properties = bl_rna.properties.keys()
properties = []
for prop_id, prop in cls.bl_rna.properties.items():
for prop_id, prop in bl_rna.properties.items():
if not prop.is_skip_save:
properties.append(prop_id)