# Buggy code
def property0(self):
    return (
        arm.utils.safesrc(bpy.data.worlds["Arm"].arm_project_package)
        + ".node."
        + arm.utils.safesrc(self.property0_)
    )


# Traceback (AttributeError)
Traceback (most recent call last):
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/props_ui.py", line 457, in execute
make.play()
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make.py", line 474, in play
build(target=runtime_to_target(), is_play=True)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make.py", line 358, in build
export_data(fp, sdk_path)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make.py", line 93, in export_data
make_logic.build()
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make_logic.py", line 32, in build
build_node_tree(tree)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make_logic.py", line 59, in build_node_tree
prop = getattr(node, 'property0')
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/logicnode/action_call_group.py", line 15, in property0
return arm.utils.safesrc(bpy.data.worlds['Arm'].arm_project_package) + '.node.' + arm.utils.safesrc(self.property0_)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/utils.py", line 524, in safesrc
s = safestr(s).replace('.', '_').replace('-', '_').replace(' ', '')
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/utils.py", line 531, in safestr
s = s.replace(c, '_')
AttributeError: 'ArmLogicTree' object has no attribute 'replace'

location: <unknown location>:-1

location: <unknown location>:-1
Error: Traceback (most recent call last):
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/props_ui.py", line 457, in execute
make.play()
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make.py", line 474, in play
build(target=runtime_to_target(), is_play=True)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make.py", line 358, in build
export_data(fp, sdk_path)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make.py", line 93, in export_data
make_logic.build()
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make_logic.py", line 32, in build
build_node_tree(tree)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/make_logic.py", line 59, in build_node_tree
prop = getattr(node, 'property0')
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/logicnode/action_call_group.py", line 15, in property0
return arm.utils.safesrc(bpy.data.worlds['Arm'].arm_project_package) + '.node.' + arm.utils.safesrc(self.property0_)
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/utils.py", line 524, in safesrc
s = safestr(s).replace('.', '_').replace('-', '_').replace(' ', '')
File "/home/dzynek/Armory3D/ArmorySDK2002/ArmorySDK//armory/blender/arm/utils.py", line 531, in safestr
s = s.replace(c, '_')
AttributeError: 'ArmLogicTree' object has no attribute 'replace'

location: <unknown location>:-1

# Fixed code
def property0(self):
    return (
        arm.utils.safesrc(bpy.data.worlds["Arm"].arm_project_package)
        + ".node."
        + arm.utils.safesrc(self.property0_.name)
    )