code: def rotate(self, angle, axis=(0, 0, 1)):
          
          if not all(isinstance(a, int) for a in axis):
              raise ValueError
          x, y, z = self.x, self.y, self.z
  
          # Z axis rotation
          if(axis[2]):
              x = (self.x * math.cos(angle) - self.y * math.sin(angle))
              y = (self.x * math.sin(angle) + self.y * math.cos(angle))
  
          # Y axis rotation
          if(axis[1]):
              x = self.x * math.cos(angle) + self.z * math.sin(angle)
              z = -self.x * math.sin(angle) + self.z * math.cos(angle)
  
          # X axis rotation
          if(axis[0]):
              y = self.y * math.cos(angle) - self.z * math.sin(angle)
              z = self.y * math.sin(angle) + self.z * math.cos(angle)
  
          return Vector(x, y, z)
docs: Returns the rotated vector. Assumes angle is in radians