How to avoid permutations of vector objects when dumping data?
The swizzle properties Vector.xyz return a new instance of Vector.

I.e. using a python property

class MyVectorClass(tuple):
    def get_xxx(self):
        return MyVectorClass((self[0],)*3)
    xxx = property(fget=get_xxx)

v = MyVectorClass((1.0, 2.0))
v.xxx.xxx.xxx
#equivalent to
v.get_xxx().get_xxx().get_xxx()


I would suggest Vector.to_tuple. That is everything you need.

BTW: To properly check for the type you should use isinstance

import mathutils

if isinstance(v, mathutils.Vector):
    t = v.to_tuple()