]> kaliko git repositories - mpd-sima.git/blobdiff - sima/utils/utils.py
Cleanup PlayerError exception wrapper
[mpd-sima.git] / sima / utils / utils.py
index cc81f61643153ffec7d9c56b325fb74c2f27bd2f..cb672639e2e780d06187f641b9b0ac0c5d84ebe7 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020, 2021 kaliko <kaliko@azylum.org>
+# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020, 2021, 2024 kaliko <kaliko@azylum.org>
 #
 #  This file is part of sima
 #
@@ -131,16 +131,16 @@ class Wfile(FileAction):
     """
     def checks(self):
         if isdir(self._file):
-            self.parser.error('need a file not a directory: {}'.format(self._file))
+            self.parser.error(f'need a file not a directory: {self._file}')
         if not exists(self._dir):
-            self.parser.error('directory does not exist: {0}'.format(self._dir))
+            self.parser.error(f'directory does not exist: {self._dir}')
         if not exists(self._file):
             # Is parent directory writable then
             if not access(self._dir, W_OK):
-                self.parser.error('no write access to "{0}"'.format(self._dir))
+                self.parser.error(f'no write access to "{self._dir}"')
         else:
             if not access(self._file, W_OK):
-                self.parser.error('no write access to "{0}"'.format(self._file))
+                self.parser.error(f'no write access to "{self._file}"')
 
 
 class Rfile(FileAction):
@@ -149,11 +149,11 @@ class Rfile(FileAction):
     """
     def checks(self):
         if not exists(self._file):
-            self.parser.error('file does not exist: {0}'.format(self._file))
+            self.parser.error(f'file does not exist: {self._file}')
         if not isfile(self._file):
-            self.parser.error('not a file: {0}'.format(self._file))
+            self.parser.error(f'not a file: {self._file}')
         if not access(self._file, R_OK):
-            self.parser.error('no read access to "{0}"'.format(self._file))
+            self.parser.error(f'no read access to "{self._file}"')
 
 
 class Wdir(FileAction):
@@ -162,11 +162,11 @@ class Wdir(FileAction):
     """
     def checks(self):
         if not exists(self._file):
-            self.parser.error('directory does not exist: {0}'.format(self._file))
+            self.parser.error(f'directory does not exist: {self._file}')
         if not isdir(self._file):
-            self.parser.error('not a directory: {0}'.format(self._file))
+            self.parser.error(f'not a directory: {self._file}')
         if not access(self._file, W_OK):
-            self.parser.error('no write access to "{0}"'.format(self._file))
+            self.parser.error(f'no write access to "{self._file}"')
 
 
 class Throttle:
@@ -214,5 +214,21 @@ class WSHTTPError(WSError):
 class PluginException(MPDSimaException):
     pass
 
+
+# Wrap Exception decorator
+def get_decorator(errors=(OSError, TimeoutError), wrap_into=Exception):
+    def decorator(func):
+        def w_func(*args, **kwargs):
+            try:
+                return func(*args, **kwargs)
+            except errors as err:
+                strerr = str(err)
+                if hasattr(err, 'strerror'):
+                    if err.strerror:
+                        strerr = err.strerror
+                raise wrap_into(strerr) from err
+        return w_func
+    return decorator
+
 # VIM MODLINE
 # vim: ai ts=4 sw=4 sts=4 expandtab