code: def get_ipython_dir():
      """Get the IPython directory for this platform and user.
  
      This uses the logic in `get_home_dir` to find the home directory
      and then adds .ipython to the end of the path.
      """
  
      env = os.environ
      pjoin = os.path.join
  
      ipdir_def = ".ipython"
  
      home_dir = get_home_dir()
      xdg_dir = get_xdg_dir()
  
      # import pdb; pdb.set_trace()  # dbg
      if "IPYTHON_DIR" in env:
          warn(
              "The environment variable IPYTHON_DIR is deprecated. "
              "Please use IPYTHONDIR instead."
          )
      ipdir = env.get("IPYTHONDIR", env.get("IPYTHON_DIR", None))
      if ipdir is None:
          # not set explicitly, use ~/.ipython
          ipdir = pjoin(home_dir, ipdir_def)
          if xdg_dir:
              # Several IPython versions (up to 1.x) defaulted to .config/ipython
              # on Linux. We have decided to go back to using .ipython everywhere
              xdg_ipdir = pjoin(xdg_dir, "ipython")
  
              if _writable_dir(xdg_ipdir):
                  cu = compress_user
                  if os.path.exists(ipdir):
                      warn(
                          (
                              "Ignoring {0} in favour of {1}. Remove {0} to "
                              "get rid of this message"
                          ).format(cu(xdg_ipdir), cu(ipdir))
                      )
                  elif os.path.islink(xdg_ipdir):
                      warn(
                          (
                              "{0} is deprecated. Move link to {1} to "
                              "get rid of this message"
                          ).format(cu(xdg_ipdir), cu(ipdir))
                      )
                  else:
                      warn(
                          "Moving {0} to {1}".format(
                              cu(xdg_ipdir), cu(ipdir)
                          )
                      )
                      shutil.move(xdg_ipdir, ipdir)
  
      ipdir = os.path.normpath(os.path.expanduser(ipdir))
  
      if os.path.exists(ipdir) and not _writable_dir(ipdir):
          # ipdir exists, but is not writable
          warn(
              "IPython dir '{0}' is not a writable location,"
              " using a temp directory.".format(ipdir)
          )
          ipdir = tempfile.mkdtemp()
      elif not os.path.exists(ipdir):
          parent = os.path.dirname(ipdir)
          if not _writable_dir(parent):
              # ipdir does not exist and parent isn't writable
              warn(
                  "IPython parent '{0}' is not a writable location,"
                  " using a temp directory.".format(parent)
              )
              ipdir = tempfile.mkdtemp()
  
      return py3compat.cast_unicode(ipdir, fs_encoding)
  
file_path: catboost/contrib/python/ipython/py2/IPython/paths.py
imports: import os.path
  import shutil
  import tempfile
  from warnings import warn
  import IPython
  from IPython.utils.importstring import import_item
  from IPython.utils.path import get_home_dir, get_xdg_dir, get_xdg_cache_dir, compress_user, _writable_dir, ensure_dir_exists, fs_encoding, filefind
  from IPython.utils import py3compat
label_desc: Use image node_id 1 for calling a global function with example usage: get_ipython_dir() and returns: py3compat