X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;ds=sidebyside;f=sima%2Futils%2Futils.py;h=cb672639e2e780d06187f641b9b0ac0c5d84ebe7;hb=1a178217e8efd3b2b523afb93775124baf1be05f;hp=83799e0e2555b75f94051b04aec9c912a45e226e;hpb=774e755d4a4fb985548cd3d17703c1f700687ff3;p=mpd-sima.git diff --git a/sima/utils/utils.py b/sima/utils/utils.py index 83799e0..cb67263 100644 --- a/sima/utils/utils.py +++ b/sima/utils/utils.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020 kaliko +# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020, 2021, 2024 kaliko # # This file is part of sima # @@ -112,7 +112,7 @@ class Obsolete(Action): class FileAction(Action): """Generic class to inherit from for ArgParse action on file/dir """ - # pylint: disable=R0903 + # pylint: disable=R0903,W0201 def __call__(self, parser, namespace, values, option_string=None): self._file = normalize_path(values) self._dir = dirname(self._file) @@ -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,15 +162,16 @@ 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: """throttle decorator""" + # pylint: disable=R0903 def __init__(self, wait): self.wait = wait self.last_called = datetime.now() @@ -213,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