[Bf-blender-cvs] [98876d46efb] master: Fix T88899: `__file__` not set for `text.as_module()`
Campbell Barton
noreply at git.blender.org
Mon Jun 7 06:07:20 CEST 2021
Commit: 98876d46efb4533c2d5115dfd17cd663054d1d2c
Author: Campbell Barton
Date: Mon Jun 7 14:04:26 2021 +1000
Branches: master
https://developer.blender.org/rB98876d46efb4533c2d5115dfd17cd663054d1d2c
Fix T88899: `__file__` not set for `text.as_module()`
===================================================================
M release/scripts/modules/bpy_types.py
===================================================================
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index aa540eeb23b..d7e31a8ec5d 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -560,9 +560,17 @@ class Text(bpy_types.ID):
self.write(string)
def as_module(self):
- from os.path import splitext
+ import bpy
+ from os.path import splitext, join
from types import ModuleType
- mod = ModuleType(splitext(self.name)[0])
+ name = self.name
+ mod = ModuleType(splitext(name)[0])
+ # This is a fake file-path, set this since some scripts check `__file__`,
+ # error messages may include this as well.
+ # NOTE: the file path may be a blank string if the file hasn't been saved.
+ mod.__dict__.update({
+ "__file__": join(bpy.data.filepath, name),
+ })
# TODO: We could use Text.compiled (C struct member)
# if this is called often it will be much faster.
exec(self.as_string(), mod.__dict__)
More information about the Bf-blender-cvs
mailing list