code: def post_arrow(self, arr: pa.Table, graph_type: str, opts: str = ""):
      dataset_id = self.dataset_id
      tok = self.token
      sub_path = (
          f"api/v2/upload/datasets/{dataset_id}/{graph_type}/arrow"
      )
  
      try:
          resp = self.post_arrow_generic(sub_path, tok, arr, opts)
          out = resp.json()
          if not ("success" in out) or not out["success"]:
              raise Exception("No success indicator in server response")
          return out
      except requests.exceptions.HTTPError as e:
          logger.error(
              "Failed to post arrow to %s (%s)",
              sub_path,
              "{}/{}{}".format(
                  self.server_base_path,
                  sub_path,
                  f"?{opts}" if len(opts) > 0 else "",
              ),
              exc_info=True,
          )
          logger.error("%s", e)
          logger.error("%s", e.response.text if e.response else None)
          raise e
      except Exception as e:
          logger.error(
              "Failed to post arrow to %s", sub_path, exc_info=True
          )
          raise e
  
imports: from typing import List, Optional
  import io, pyarrow, requests, sys
  from graphistry.privacy import Mode, Privacy
  from .ArrowFileUploader import ArrowFileUploader
  from .util import setup_logger
label_desc: Use image node_id 47 for calling the ArrowUploader obj's underlying member method code with example usage: obj.post_arrow(arr, graph_type, opts) and returns: out