code: def post(
      url: str,
      token: str,
      data: Dict[str, Any],
      base_url: Optional[str] = STUDIO_URL,
      max_retries: int = 3,
      timeout: int = 5,
  ) -> "Response":
      url = urljoin(base_url or STUDIO_URL, url)
      session = requests.Session()
      session.mount(url, HTTPAdapter(max_retries=max_retries))
  
      logger.trace("Sending %s to %s", data, url)
  
      headers = {"Authorization": f"token {token}"}
      r = session.post(
          url,
          json=data,
          headers=headers,
          timeout=timeout,
          allow_redirects=False,
      )
      r.raise_for_status()
      return r
  
file_path: dvc/dvc/utils/studio.py
imports: from typing import TYPE_CHECKING, Any, Dict, List, Optional
  from urllib.parse import urljoin
  import requests
  from funcy import compact, ignore
  from requests.adapters import HTTPAdapter
  from dvc.env import DVC_STUDIO_OFFLINE, DVC_STUDIO_REPO_URL, DVC_STUDIO_TOKEN, DVC_STUDIO_URL
  from dvc.log import logger
label_desc: Use image node_id 1 for calling a global function with example usage: post(url, token, data, base_url, max_retries, timeout) and returns: r