docs: def write_to_png(self, target=None):
          """Writes the contents of surface as a PNG image.
  
          :param target:
              A filename,
              a binary mode file-like object with a :meth:`~file.write` method,
              or :obj:`None`.
          :returns:
              If :obj:`target` is :obj:`None`,
              return the PNG contents as a byte string.
  
          """
          return_bytes = target is None
          if return_bytes:
              target = io.BytesIO()
          if hasattr(target, 'write'):
              write_func = _make_write_func(target)
              _check_status(cairo.cairo_surface_write_to_png_stream(
                  self._pointer, write_func, ffi.NULL))
          else:
              _check_status(cairo.cairo_surface_write_to_png(
                  self._pointer, _encode_filename(target)))
          if return_bytes:
              return target.getvalue()