diff --git a/docs/user_guide.rst b/docs/user_guide.rst index 7d7fb86faed..9fac7bff15e 100644 --- a/docs/user_guide.rst +++ b/docs/user_guide.rst @@ -280,7 +280,9 @@ all users) configuration: * On Unix the default configuration file is: :file:`$HOME/.config/pip/pip.conf` which respects the ``XDG_CONFIG_HOME`` environment variable. * On macOS the configuration file is - :file:`$HOME/Library/Application Support/pip/pip.conf`. + :file:`$HOME/Library/Application Support/pip/pip.conf` + if directory ``$HOME/Library/Application Support/pip`` exists + else :file:`$HOME/.config/pip/pip.conf`. * On Windows the configuration file is :file:`%APPDATA%\\pip\\pip.ini`. There are also a legacy per-user configuration file which is also respected, diff --git a/pip/utils/appdirs.py b/pip/utils/appdirs.py index 9b8280144d7..f61639c24a8 100644 --- a/pip/utils/appdirs.py +++ b/pip/utils/appdirs.py @@ -74,6 +74,7 @@ def user_data_dir(appname, roaming=False): Typical user data directories are: macOS: ~/Library/Application Support/ + if it exists, else ~/.config/ Unix: ~/.local/share/ # or in $XDG_DATA_HOME, if defined Win XP (not roaming): C:\Documents and Settings\\ ... @@ -93,6 +94,13 @@ def user_data_dir(appname, roaming=False): path = os.path.join( expanduser('~/Library/Application Support/'), appname, + ) if os.path.isdir(os.path.join( + expanduser('~/Library/Application Support/'), + appname, + ) + ) else os.path.join( + expanduser('~/.config/'), + appname, ) else: path = os.path.join( diff --git a/tests/unit/test_appdirs.py b/tests/unit/test_appdirs.py index 7fba5f53a28..570e3b22816 100644 --- a/tests/unit/test_appdirs.py +++ b/tests/unit/test_appdirs.py @@ -184,8 +184,12 @@ def test_user_data_dir_osx(self, monkeypatch): monkeypatch.setenv("HOME", "/home/test") monkeypatch.setattr(sys, "platform", "darwin") - assert (appdirs.user_data_dir("pip") == - "/home/test/Library/Application Support/pip") + if os.path.isdir('/home/test/Library/Application Support/'): + assert (appdirs.user_data_dir("pip") == + "/home/test/Library/Application Support/pip") + else: + assert (appdirs.user_data_dir("pip") == + "/home/test/.config/pip") def test_user_data_dir_linux(self, monkeypatch): monkeypatch.setattr(appdirs, "WINDOWS", False) @@ -262,8 +266,12 @@ def test_user_config_dir_osx(self, monkeypatch): monkeypatch.setenv("HOME", "/home/test") monkeypatch.setattr(sys, "platform", "darwin") - assert (appdirs.user_config_dir("pip") == - "/home/test/Library/Application Support/pip") + if os.path.isdir('/home/test/Library/Application Support/'): + assert (appdirs.user_data_dir("pip") == + "/home/test/Library/Application Support/pip") + else: + assert (appdirs.user_data_dir("pip") == + "/home/test/.config/pip") def test_user_config_dir_linux(self, monkeypatch): monkeypatch.setattr(appdirs, "WINDOWS", False)