From 74361eebe68c03e73e2b3587988c9d68bd742fe0 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 5 Dec 2018 10:57:08 +0100 Subject: Fix T58772: Stray "forward" and "up" options in 2.8 import addons? Nice side-effect of using new __annotations__ thingy to store dynamically-generated fields in a class: __annotations__ dict is not ensured to exist for a given class, so we may end up modifying on of the parents' one! --- release/scripts/modules/bpy_extras/io_utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py index 4b28a9edf70..420c2bfc929 100644 --- a/release/scripts/modules/bpy_extras/io_utils.py +++ b/release/scripts/modules/bpy_extras/io_utils.py @@ -127,6 +127,11 @@ def orientation_helper(axis_forward='Y', axis_up='Z'): with specified default values (axes). """ def wrapper(cls): + # Without that, we may end up adding those fields to some **parent** class' __annotations__ property + # (like the ImportHelper or ExportHelper ones)! See T58772. + if "__annotations__" not in cls.__dict__: + cls.__dict__["__annotations__"] = {} + def _update_axis_forward(self, context): if self.axis_forward[-1] == self.axis_up[-1]: self.axis_up = (self.axis_up[0:-1] + -- cgit v1.2.3