def _ensure_points_converted_to_floats(self, shape) -> None:
        """
        Historically, there were importers that were not converting points to ints/floats.
        The only place to make sure that all points in shapes have the right type was this one.
        However, this does eat up a lot of memory for some reason.
        (see https://github.com/cvat-ai/cvat/pull/1898)

        So, before we can guarantee that all the importers are returning the right data,
        we have to have this conversion.
        """
        # if points is LazyList or tuple, we can be sure it has the right type already
        if isinstance(points := shape["points"], LazyList | tuple):
            return

        for point in points:
            if not isinstance(point, int | float):
                slogger.glob.error(
                    f"Points must be type of "
                    f"`tuple[int | float] | list[int | float] | LazyList`, "
                    f"not `{points.__class__.__name__}[{point.__class__.__name__}]`"
                    "Please, update import code to return the correct type."
                )
                shape["points"] = tuple(map(float, points))
                return

        Historically, there were importers that were not converting points to ints/floats.
        The only place to make sure that all points in shapes have the right type was this one.
        However, this does eat up a lot of memory for some reason.
        (see https://github.com/cvat-ai/cvat/pull/1898)

        So, before we can guarantee that all the importers are returning the right data,
        we have to have this conversion.
        
cvat/apps/dataset_manager/bindings.py