def to_label(self, label, attributes, width, height):
        """Convert this shape to a FiftyOne label.

        Args:
            label: the class label for this shape
            attributes: a dictionary of attributes for this shape
            width: the width of the frame in pixels
            height: the height of the frame in pixels

        Return:
            an :class:`fiftyone.core.labels.Polyline`
        """
        rel_points = [
            [(x / width, y / height) for x, y, in _pairwise(self.coords)]
        ]
        _attrs = deepcopy(attributes)
        _attrs.update(self.attributes)

        filled = _attrs.pop("filled", None)
        if filled is None:
            filled = not _attrs.get("is_hole", True)

        closed = _attrs.pop("closed", True)
        _attrs.pop("label", None)

        return fol.Polyline(
            label=label,
            points=rel_points,
            filled=filled,
            closed=closed,
            **_attrs,
        )
Convert this shape to a FiftyOne label.

        Args:
            label: the class label for this shape
            attributes: a dictionary of attributes for this shape
            width: the width of the frame in pixels
            height: the height of the frame in pixels

        Return:
            an :class:`fiftyone.core.labels.Polyline`
        
fiftyone/utils/openlabel.py