From 1a4bc885cc53dcc1ebd21a344571dcb09aadf17d Mon Sep 17 00:00:00 2001 From: Xavier Francisco Date: Fri, 1 Mar 2019 21:21:43 +0000 Subject: [PATCH 1/2] Add pathlib support --- appdirs.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/appdirs.py b/appdirs.py index 975e9bf..d9fb515 100644 --- a/appdirs.py +++ b/appdirs.py @@ -41,6 +41,16 @@ system = sys.platform +def path_property(f): + @property + def wrapper(self): + if self.use_pathlib: + import pathlib + return pathlib.Path(f(self)) + else: + return f(self) + return wrapper + def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): r"""Return full path to the user-specific data dir for this application. @@ -415,44 +425,45 @@ def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): class AppDirs(object): """Convenience wrapper for getting application dirs.""" def __init__(self, appname=None, appauthor=None, version=None, - roaming=False, multipath=False): + roaming=False, multipath=False, use_pathlib=False): self.appname = appname self.appauthor = appauthor self.version = version self.roaming = roaming self.multipath = multipath + self.use_pathlib = use_pathlib - @property + @path_property def user_data_dir(self): return user_data_dir(self.appname, self.appauthor, version=self.version, roaming=self.roaming) - @property + @path_property def site_data_dir(self): return site_data_dir(self.appname, self.appauthor, version=self.version, multipath=self.multipath) - @property + @path_property def user_config_dir(self): return user_config_dir(self.appname, self.appauthor, version=self.version, roaming=self.roaming) - @property + @path_property def site_config_dir(self): return site_config_dir(self.appname, self.appauthor, version=self.version, multipath=self.multipath) - @property + @path_property def user_cache_dir(self): return user_cache_dir(self.appname, self.appauthor, version=self.version) - @property + @path_property def user_state_dir(self): return user_state_dir(self.appname, self.appauthor, version=self.version) - @property + @path_property def user_log_dir(self): return user_log_dir(self.appname, self.appauthor, version=self.version) From 4ee85402df5aa1e50ab44cecbb43b09843718057 Mon Sep 17 00:00:00 2001 From: Xavier Francisco Date: Sat, 2 Mar 2019 14:42:05 +0000 Subject: [PATCH 2/2] Drop use_pathlib; Use exception handling to determine usage --- appdirs.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/appdirs.py b/appdirs.py index d9fb515..230835c 100644 --- a/appdirs.py +++ b/appdirs.py @@ -44,10 +44,10 @@ def path_property(f): @property def wrapper(self): - if self.use_pathlib: + try: import pathlib return pathlib.Path(f(self)) - else: + except ImportError: return f(self) return wrapper @@ -425,13 +425,12 @@ def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): class AppDirs(object): """Convenience wrapper for getting application dirs.""" def __init__(self, appname=None, appauthor=None, version=None, - roaming=False, multipath=False, use_pathlib=False): + roaming=False, multipath=False): self.appname = appname self.appauthor = appauthor self.version = version self.roaming = roaming self.multipath = multipath - self.use_pathlib = use_pathlib @path_property def user_data_dir(self):