docs: def path_extents(self):
          """Computes a bounding box in user-space coordinates
          covering the points on the current path.
          If the current path is empty,
          returns an empty rectangle ``(0, 0, 0, 0)``.
          Stroke parameters, fill rule, surface dimensions and clipping
          are not taken into account.
  
          Contrast with :meth:`fill_extents` and :meth:`stroke_extents`
          which return the extents of only the area that would be "inked"
          by the corresponding drawing operations.
  
          The result of :meth:`path_extents`
          is defined as equivalent to the limit of :meth:`stroke_extents`
          with :obj:`LINE_CAP_ROUND` as the line width approaches 0,
          (but never reaching the empty-rectangle
          returned by :meth:`stroke_extents` for a line width of 0).
  
          Specifically, this means that zero-area sub-paths
          such as :meth:`move_to`; :meth:`line_to()` segments,
          (even degenerate cases
          where the coordinates to both calls are identical),
          will be considered as contributing to the extents.
          However, a lone :meth:`move_to` will not contribute
          to the results of :meth:`path_extents`.
  
          :return:
              A ``(x1, y1, x2, y2)`` tuple of floats:
              the left, top, right and bottom of the resulting extents,
              respectively.
  
          """
          extents = ffi.new('double[4]')
          cairo.cairo_path_extents(
              self._pointer, extents + 0, extents + 1, extents + 2, extents + 3)
          self._check_status()
          return tuple(extents)