X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Futils%2Futils.py;h=19603ba0da35caa3dbf1b48552d6899855e00a19;hb=2719d060682e85c9571402a05319acdde3d776e3;hp=c3bc6c0175db30f36325c941d41d63d378c5f36e;hpb=528e8d1b722d1e85d7e17eac636f764d457cc050;p=mpd-sima.git diff --git a/sima/utils/utils.py b/sima/utils/utils.py index c3bc6c0..19603ba 100644 --- a/sima/utils/utils.py +++ b/sima/utils/utils.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2010, 2011, 2013 Jack Kaliko +# Copyright (c) 2010, 2011, 2013, 2014, 2015, 2020 kaliko # # This file is part of sima # @@ -20,7 +20,9 @@ # """generic tools and utilities for sima """ +# pylint: disable=C0111 +import logging import traceback import sys @@ -30,6 +32,7 @@ from codecs import getencoder from datetime import datetime from os import environ, access, getcwd, W_OK, R_OK from os.path import dirname, isabs, join, normpath, exists, isdir, isfile +from time import sleep def getws(dic): @@ -67,8 +70,7 @@ def normalize_path(path): def exception_log(): """Log unknown exceptions""" - import logging - log = logging.getLogger('sima') + log = logging.getLogger(__name__) log.error('Unhandled Exception!!!') log.error(''.join(traceback.format_exc())) log.info('Please report the previous message' @@ -77,7 +79,9 @@ def exception_log(): log.info('Quiting now!') sys.exit(1) + class SigHup(Exception): + """SIGHUP raises this Exception""" pass # ArgParse Callbacks @@ -109,9 +113,11 @@ class Wfile(FileAction): """Is file writable """ def checks(self): + if isdir(self._file): + self.parser.error('need a file not a directory: {}'.format(self._file)) if not exists(self._dir): #raise ArgumentError(self, '"{0}" does not exist'.format(self._dir)) - self.parser.error('file does not exist: {0}'.format(self._dir)) + self.parser.error('directory does not exist: {0}'.format(self._dir)) if not exists(self._file): # Is parent directory writable then if not access(self._dir, W_OK): @@ -144,7 +150,8 @@ class Wdir(FileAction): if not access(self._file, W_OK): self.parser.error('no write access to "{0}"'.format(self._file)) -class Throttle(): +class Throttle: + """throttle decorator""" def __init__(self, wait): self.wait = wait self.last_called = datetime.now() @@ -158,18 +165,28 @@ class Throttle(): return result return wrapper -class Cache(): - def __init__(self, elem, last=None): - self.elem = elem - self.requestdate = last - if not last: - self.requestdate = datetime.utcnow() +# http client exceptions (for webservices) + +class WSError(Exception): + pass - def created(self): - return self.requestdate +class WSNotFound(WSError): + pass - def get(self): - return self.elem +class WSTimeout(WSError): + pass + +class WSHTTPError(WSError): + pass + +class MPDSimaException(Exception): + pass + +class PluginException(MPDSimaException): + pass + +class PluginConfException(MPDSimaException): + pass # VIM MODLINE # vim: ai ts=4 sw=4 sts=4 expandtab