Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/platformdirs/macos.py: 0%

64 statements  

« prev     ^ index     » next       coverage.py v7.3.3, created at 2023-12-15 06:13 +0000

1"""macOS.""" 

2from __future__ import annotations 

3 

4import os.path 

5import sys 

6 

7from .api import PlatformDirsABC 

8 

9 

10class MacOS(PlatformDirsABC): 

11 """ 

12 Platform directories for the macOS operating system. Follows the guidance from `Apple documentation 

13 <https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/MacOSXDirectories/MacOSXDirectories.html>`_. 

14 Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, 

15 `version <platformdirs.api.PlatformDirsABC.version>`, 

16 `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`. 

17 """ 

18 

19 @property 

20 def user_data_dir(self) -> str: 

21 """:return: data directory tied to the user, e.g. ``~/Library/Application Support/$appname/$version``""" 

22 return self._append_app_name_and_version(os.path.expanduser("~/Library/Application Support")) # noqa: PTH111 

23 

24 @property 

25 def site_data_dir(self) -> str: 

26 """ 

27 :return: data directory shared by users, e.g. ``/Library/Application Support/$appname/$version``. 

28 If we're using a Python binary managed by `Homebrew <https://brew.sh>`_, the directory 

29 will be under the Homebrew prefix, e.g. ``/opt/homebrew/share/$appname/$version``. 

30 If `multipath <platformdirs.api.PlatformDirsABC.multipath>` is enabled and we're in Homebrew, 

31 the response is a multi-path string separated by ":", e.g. 

32 ``/opt/homebrew/share/$appname/$version:/Library/Application Support/$appname/$version`` 

33 """ 

34 is_homebrew = sys.prefix.startswith("/opt/homebrew") 

35 path_list = [self._append_app_name_and_version("/opt/homebrew/share")] if is_homebrew else [] 

36 path_list.append(self._append_app_name_and_version("/Library/Application Support")) 

37 if self.multipath: 

38 return os.pathsep.join(path_list) 

39 return path_list[0] 

40 

41 @property 

42 def user_config_dir(self) -> str: 

43 """:return: config directory tied to the user, same as `user_data_dir`""" 

44 return self.user_data_dir 

45 

46 @property 

47 def site_config_dir(self) -> str: 

48 """:return: config directory shared by the users, same as `site_data_dir`""" 

49 return self.site_data_dir 

50 

51 @property 

52 def user_cache_dir(self) -> str: 

53 """:return: cache directory tied to the user, e.g. ``~/Library/Caches/$appname/$version``""" 

54 return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches")) # noqa: PTH111 

55 

56 @property 

57 def site_cache_dir(self) -> str: 

58 """ 

59 :return: cache directory shared by users, e.g. ``/Library/Caches/$appname/$version``. 

60 If we're using a Python binary managed by `Homebrew <https://brew.sh>`_, the directory 

61 will be under the Homebrew prefix, e.g. ``/opt/homebrew/var/cache/$appname/$version``. 

62 If `multipath <platformdirs.api.PlatformDirsABC.multipath>` is enabled and we're in Homebrew, 

63 the response is a multi-path string separated by ":", e.g. 

64 ``/opt/homebrew/var/cache/$appname/$version:/Library/Caches/$appname/$version`` 

65 """ 

66 is_homebrew = sys.prefix.startswith("/opt/homebrew") 

67 path_list = [self._append_app_name_and_version("/opt/homebrew/var/cache")] if is_homebrew else [] 

68 path_list.append(self._append_app_name_and_version("/Library/Caches")) 

69 if self.multipath: 

70 return os.pathsep.join(path_list) 

71 return path_list[0] 

72 

73 @property 

74 def user_state_dir(self) -> str: 

75 """:return: state directory tied to the user, same as `user_data_dir`""" 

76 return self.user_data_dir 

77 

78 @property 

79 def user_log_dir(self) -> str: 

80 """:return: log directory tied to the user, e.g. ``~/Library/Logs/$appname/$version``""" 

81 return self._append_app_name_and_version(os.path.expanduser("~/Library/Logs")) # noqa: PTH111 

82 

83 @property 

84 def user_documents_dir(self) -> str: 

85 """:return: documents directory tied to the user, e.g. ``~/Documents``""" 

86 return os.path.expanduser("~/Documents") # noqa: PTH111 

87 

88 @property 

89 def user_downloads_dir(self) -> str: 

90 """:return: downloads directory tied to the user, e.g. ``~/Downloads``""" 

91 return os.path.expanduser("~/Downloads") # noqa: PTH111 

92 

93 @property 

94 def user_pictures_dir(self) -> str: 

95 """:return: pictures directory tied to the user, e.g. ``~/Pictures``""" 

96 return os.path.expanduser("~/Pictures") # noqa: PTH111 

97 

98 @property 

99 def user_videos_dir(self) -> str: 

100 """:return: videos directory tied to the user, e.g. ``~/Movies``""" 

101 return os.path.expanduser("~/Movies") # noqa: PTH111 

102 

103 @property 

104 def user_music_dir(self) -> str: 

105 """:return: music directory tied to the user, e.g. ``~/Music``""" 

106 return os.path.expanduser("~/Music") # noqa: PTH111 

107 

108 @property 

109 def user_desktop_dir(self) -> str: 

110 """:return: desktop directory tied to the user, e.g. ``~/Desktop``""" 

111 return os.path.expanduser("~/Desktop") # noqa: PTH111 

112 

113 @property 

114 def user_runtime_dir(self) -> str: 

115 """:return: runtime directory tied to the user, e.g. ``~/Library/Caches/TemporaryItems/$appname/$version``""" 

116 return self._append_app_name_and_version(os.path.expanduser("~/Library/Caches/TemporaryItems")) # noqa: PTH111 

117 

118 @property 

119 def site_runtime_dir(self) -> str: 

120 """:return: runtime directory shared by users, same as `user_runtime_dir`""" 

121 return self.user_runtime_dir 

122 

123 

124__all__ = [ 

125 "MacOS", 

126]