From 8bf5b6d8b4c8e327feae7513d78d003e520a1f28 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Fri, 14 Aug 2020 15:21:26 -0500 Subject: [PATCH 1/6] pathlib support --- appdirs.py | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/appdirs.py b/appdirs.py index fcc26ad..b31ae96 100644 --- a/appdirs.py +++ b/appdirs.py @@ -457,6 +457,76 @@ def user_log_dir(self): version=self.version) +#---- pathlib stuff + +def _pathlib_wrapper(func): + + try: + import functools + import pathlib + import inspect + signature = inspect.signature(func) + + def inner(*args, **kwargs): + ba = signature.bind_partial(*args, **kwargs) + ba.apply_defaults() + return pathlib.Path(func(*ba.args, **ba.kwargs)) + + inner.__signature__ = signature + inner.__doc__ = func.__doc__ + inner.__name__ = func.__name__.replace("dir", "path") + return inner + + except ImportError: + return fun + + +site_config_path = _pathlib_wrapper(site_config_dir) +site_data_path = _pathlib_wrapper(site_data_dir) +user_cache_path = _pathlib_wrapper(user_cache_dir) +user_config_path = _pathlib_wrapper(user_config_dir) +user_data_path = _pathlib_wrapper(user_data_dir) +user_log_path = _pathlib_wrapper(user_log_dir) +user_state_path = _pathlib_wrapper(user_state_dir) + + +class AppPaths(AppDirs): + + @property + def user_data_dir(self): + return user_data_path(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_data_dir(self): + return site_data_path(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_config_dir(self): + return user_config_path(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_config_dir(self): + return site_config_path(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_cache_dir(self): + return user_cache_path(self.appname, self.appauthor, + version=self.version) + + @property + def user_state_dir(self): + return user_state_path(self.appname, self.appauthor, + version=self.version) + + @property + def user_log_dir(self): + return user_log_path(self.appname, self.appauthor, + version=self.version) + #---- internal support stuff def _get_win_folder_from_registry(csidl_name): From aa9b7a1035eb4779ef04810fa09e4db9a065018c Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Fri, 14 Aug 2020 15:32:46 -0500 Subject: [PATCH 2/6] missing c --- appdirs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdirs.py b/appdirs.py index b31ae96..ad2e29b 100644 --- a/appdirs.py +++ b/appdirs.py @@ -478,7 +478,7 @@ def inner(*args, **kwargs): return inner except ImportError: - return fun + return func site_config_path = _pathlib_wrapper(site_config_dir) From 0c46975a516974a01df4ce322d81687aab123c19 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Fri, 14 Aug 2020 15:38:10 -0500 Subject: [PATCH 3/6] tests --- test/test_api.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/test_api.py b/test/test_api.py index 8c89fb2..c2faac5 100644 --- a/test/test_api.py +++ b/test/test_api.py @@ -4,8 +4,14 @@ if sys.version_info[0] < 3: STRING_TYPE = basestring + PATH_TYPE = basestring +if sys.version_info[1] < 4: + STRING_TYPE = str + PATH_TYPE = str else: + import pathlib STRING_TYPE = str + PATH_TYPE = pathlib.Path class Test_AppDir(unittest.TestCase): @@ -25,6 +31,18 @@ def test_helpers(self): self.assertIsInstance( appdirs.user_log_dir('MyApp', 'MyCompany'), STRING_TYPE) + def test_path_helpers(self): + self.assertIsInstance( + appdirs.user_data_path('MyApp', 'MyCompany'), PATH_TYPE) + self.assertIsInstance( + appdirs.site_data_path('MyApp', 'MyCompany'), PATH_TYPE) + self.assertIsInstance( + appdirs.user_cache_path('MyApp', 'MyCompany'), PATH_TYPE) + self.assertIsInstance( + appdirs.user_state_path('MyApp', 'MyCompany'), PATH_TYPE) + self.assertIsInstance( + appdirs.user_log_path('MyApp', 'MyCompany'), PATH_TYPE) + def test_dirs(self): dirs = appdirs.AppDirs('MyApp', 'MyCompany', version='1.0') self.assertIsInstance(dirs.user_data_dir, STRING_TYPE) @@ -33,5 +51,14 @@ def test_dirs(self): self.assertIsInstance(dirs.user_state_dir, STRING_TYPE) self.assertIsInstance(dirs.user_log_dir, STRING_TYPE) + def test_paths(self): + paths = appdirs.AppPaths('MyApp', 'MyCompany', version='1.0') + self.assertIsInstance(paths.user_data_dir, PATH_TYPE) + self.assertIsInstance(paths.site_data_dir, PATH_TYPE) + self.assertIsInstance(paths.user_cache_dir, PATH_TYPE) + self.assertIsInstance(paths.user_state_dir, PATH_TYPE) + self.assertIsInstance(paths.user_log_dir, PATH_TYPE) + + if __name__ == "__main__": unittest.main() From a16bcf850d6981a3f455b69620e0bf3901bde666 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Fri, 14 Aug 2020 15:40:08 -0500 Subject: [PATCH 4/6] elif --- test/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_api.py b/test/test_api.py index c2faac5..f41d2ea 100644 --- a/test/test_api.py +++ b/test/test_api.py @@ -5,7 +5,7 @@ if sys.version_info[0] < 3: STRING_TYPE = basestring PATH_TYPE = basestring -if sys.version_info[1] < 4: +elif sys.version_info[1] < 4: STRING_TYPE = str PATH_TYPE = str else: From bb9240ec820a4ebfb39f0d022ea8d3b6f63f6026 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Fri, 14 Aug 2020 15:59:45 -0500 Subject: [PATCH 5/6] fully specify < 3.4 --- test/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_api.py b/test/test_api.py index f41d2ea..951fa2d 100644 --- a/test/test_api.py +++ b/test/test_api.py @@ -5,7 +5,7 @@ if sys.version_info[0] < 3: STRING_TYPE = basestring PATH_TYPE = basestring -elif sys.version_info[1] < 4: +elif sys.version_info[0] == 3 and sys.version_info[1] < 4: STRING_TYPE = str PATH_TYPE = str else: From 5d722ad755cc4f9ddc3d3955c604a792c6582e71 Mon Sep 17 00:00:00 2001 From: Blaise Thompson Date: Sun, 16 Aug 2020 13:37:04 -0500 Subject: [PATCH 6/6] version check readability --- test/test_api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_api.py b/test/test_api.py index 951fa2d..2737209 100644 --- a/test/test_api.py +++ b/test/test_api.py @@ -5,7 +5,7 @@ if sys.version_info[0] < 3: STRING_TYPE = basestring PATH_TYPE = basestring -elif sys.version_info[0] == 3 and sys.version_info[1] < 4: +elif sys.version_info < (3, 4): STRING_TYPE = str PATH_TYPE = str else: