class_docstr: Base class for Jupyter applications
docstr: Migrate config/data from IPython 3
docstr_tok: ["Migrate","config\/data","from","IPython","3"]
code: def migrate_config(self):
      """Migrate config/data from IPython 3"""
      if os.path.exists(os.path.join(self.config_dir, "migrated")):
          # already migrated
          return
  
      from .migrate import get_ipython_dir, migrate
  
      # No IPython dir, nothing to migrate
      if not os.path.exists(get_ipython_dir()):
          return
  
      migrate()
  
imports: from __future__ import print_function
  from copy import deepcopy
  import logging
  import os
  import sys
  from traitlets.config.application import Application, catch_config_error
  from traitlets.config.loader import ConfigFileNotFound
  from traitlets import Unicode, Bool, List, observe
  from .utils import ensure_dir_exists
  from ipython_genutils import py3compat
  from .paths import jupyter_config_dir, jupyter_data_dir, jupyter_runtime_dir, jupyter_path, jupyter_config_path, allow_insecure_writes, issue_insecure_write_warning
label_desc: Use image node_id 10 for calling the JupyterApp obj's underlying member method code with example usage: obj.migrate_config() without return types