Here is my code...maybe there is something wrong with it?
ifc_file = ifcopenshell.open("TEST.ifc")
part = ifc_file.by_guid("14PxOZgPT4uuPubh3cNuTR")
old_matrix = ifcopenshell.util.placement.get_local_placement(part.ObjectPlacement)
matrix = mathutils.Matrix(old_matrix)
loc, rot, sca = matrix.decompose()
print (loc, rot, sca)
translation = mathutils.Matrix([[0, 0, 0, 0], [0, 0, 0, 0.5], [0,0,0,0], [0,0,0,0]])
new_matrix = matrix + translation
ifcopenshell.api.run("geometry.edit_object_placement", ifc_file, product=part, matrix=new_matrix, should_cascade=False)
ifc_file.write("Test1.ifc")