Пример #1
0
def get_ipython_dir() -> str:
    """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()

    if 'IPYTHON_DIR' in env:
        warn(
            'The environment variable IPYTHON_DIR is deprecated since IPython 3.0. '
            'Please use IPYTHONDIR instead.', DeprecationWarning)
    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()
    assert isinstance(
        ipdir,
        str), "all path manipulation should be str(unicode), but are not."
    return ipdir
Пример #2
0
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)
Пример #3
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check nonexistant xdg_dir"""
    reload(path)
    path.get_home_dir = lambda : HOME_TEST_DIR
    os.name = "posix"
    env.pop('IPYTHON_DIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    nt.assert_equal(path.get_xdg_dir(), None)
Пример #4
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check xdg_dir"""
    reload(path)
    path.get_home_dir = lambda : 'somewhere'
    os.name = "posix"
    env.pop('IPYTHON_DIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    
    nt.assert_equal(path.get_xdg_dir(), os.path.join('somewhere', '.config'))
Пример #5
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check nonexistant xdg_dir"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    nt.assert_equal(path.get_xdg_dir(), None)
Пример #6
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check xdg_dir"""
    reload(path)
    path.get_home_dir = lambda: 'somewhere'
    os.name = "posix"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)

    nt.assert_equal(path.get_xdg_dir(), os.path.join('somewhere', '.config'))
Пример #7
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check nonexistent xdg_dir"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "linux2"
    env.pop("IPYTHON_DIR", None)
    env.pop("IPYTHONDIR", None)
    env.pop("XDG_CONFIG_HOME", None)
    nt.assert_equal(path.get_xdg_dir(), None)
Пример #8
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check nonexistent xdg_dir"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "linux2"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    assert path.get_xdg_dir() is None
Пример #9
0
def test_get_xdg_dir_1():
    """test_get_xdg_dir_1, check nonexistant xdg_dir"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "linux2"
    env.pop("IPYTHON_DIR", None)
    env.pop("IPYTHONDIR", None)
    env.pop("XDG_CONFIG_HOME", None)
    nt.assert_equal(path.get_xdg_dir(), None)
Пример #10
0
def test_get_xdg_dir_2():
    """test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
    reload(path)
    path.get_home_dir = lambda : HOME_TEST_DIR
    os.name = "posix"
    env.pop('IPYTHON_DIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    cfgdir=os.path.join(path.get_home_dir(), '.config')
    os.makedirs(cfgdir)
    
    nt.assert_equal(path.get_xdg_dir(), cfgdir)
Пример #11
0
def test_get_xdg_dir_0():
    """test_get_xdg_dir_0, check xdg_dir"""
    reload(path)
    path._writable_dir = lambda path: True
    path.get_home_dir = lambda: 'somewhere'
    os.name = "posix"
    sys.platform = "linux2"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)

    nt.assert_equal(path.get_xdg_dir(), os.path.join('somewhere', '.config'))
Пример #12
0
def test_get_xdg_dir_0():
    """test_get_xdg_dir_0, check xdg_dir"""
    reload(path)
    path._writable_dir = lambda path: True
    path.get_home_dir = lambda: "somewhere"
    os.name = "posix"
    sys.platform = "linux2"
    env.pop("IPYTHON_DIR", None)
    env.pop("IPYTHONDIR", None)
    env.pop("XDG_CONFIG_HOME", None)

    nt.assert_equal(path.get_xdg_dir(), os.path.join("somewhere", ".config"))
Пример #13
0
def test_get_xdg_dir_2():
    """test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    cfgdir = os.path.join(path.get_home_dir(), '.config')
    os.makedirs(cfgdir)

    nt.assert_equal(path.get_xdg_dir(), cfgdir)
Пример #14
0
def test_get_xdg_dir_0():
    """test_get_xdg_dir_0, check xdg_dir"""
    reload(path)
    path._writable_dir = lambda path: True
    path.get_home_dir = lambda: "somewhere"
    os.name = "posix"
    sys.platform = "linux2"
    env.pop("IPYTHON_DIR", None)
    env.pop("IPYTHONDIR", None)
    env.pop("XDG_CONFIG_HOME", None)

    nt.assert_equal(path.get_xdg_dir(), os.path.join("somewhere", ".config"))
Пример #15
0
def test_get_xdg_dir_0():
    """test_get_xdg_dir_0, check xdg_dir"""
    reload(path)
    path._writable_dir = lambda path: True
    path.get_home_dir = lambda : 'somewhere'
    os.name = "posix"
    sys.platform = "linux2"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)

    nt.assert_equal(path.get_xdg_dir(), os.path.join('somewhere', '.config'))
Пример #16
0
def test_get_xdg_dir_3():
    """test_get_xdg_dir_3, check xdg_dir not used on non-posix systems"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "nt"
    sys.platform = "win32"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    cfgdir = os.path.join(path.get_home_dir(), '.config')
    os.makedirs(cfgdir, exist_ok=True)

    assert path.get_xdg_dir() is None
Пример #17
0
def test_get_xdg_dir_2():
    """test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "linux2"
    env.pop("IPYTHON_DIR", None)
    env.pop("IPYTHONDIR", None)
    env.pop("XDG_CONFIG_HOME", None)
    cfgdir = os.path.join(path.get_home_dir(), ".config")
    if not os.path.exists(cfgdir):
        os.makedirs(cfgdir)

    nt.assert_equal(path.get_xdg_dir(), cfgdir)
Пример #18
0
def test_get_xdg_dir_3():
    """test_get_xdg_dir_3, check xdg_dir not used on OS X"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "darwin"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    cfgdir = os.path.join(path.get_home_dir(), '.config')
    if not os.path.exists(cfgdir):
        os.makedirs(cfgdir)

    nt.assert_equal(path.get_xdg_dir(), None)
Пример #19
0
def test_get_xdg_dir_3():
    """test_get_xdg_dir_3, check xdg_dir not used on OS X"""
    reload(path)
    path.get_home_dir = lambda : HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "darwin"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    cfgdir=os.path.join(path.get_home_dir(), '.config')
    if not os.path.exists(cfgdir):
        os.makedirs(cfgdir)

    nt.assert_equal(path.get_xdg_dir(), None)
Пример #20
0
def test_get_xdg_dir_2():
    """test_get_xdg_dir_2, check xdg_dir default to ~/.config"""
    reload(path)
    path.get_home_dir = lambda: HOME_TEST_DIR
    os.name = "posix"
    sys.platform = "linux2"
    env.pop('IPYTHON_DIR', None)
    env.pop('IPYTHONDIR', None)
    env.pop('XDG_CONFIG_HOME', None)
    cfgdir = os.path.join(path.get_home_dir(), '.config')
    if not os.path.exists(cfgdir):
        os.makedirs(cfgdir)

    assert path.get_xdg_dir() == cfgdir
Пример #21
0
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)