]> kaliko git repositories - mpd-sima.git/blobdiff - sima/utils/utils.py
Some clean-up (pylint audit)
[mpd-sima.git] / sima / utils / utils.py
index c3bc6c0175db30f36325c941d41d63d378c5f36e..475a54859305d2dbbff604546a6333b05c97eac6 100644 (file)
@@ -20,6 +20,7 @@
 #
 """generic tools and utilities for sima
 """
+# pylint: disable=C0111
 
 import traceback
 import sys
@@ -27,9 +28,10 @@ import sys
 from argparse import ArgumentError, Action
 from base64 import b64decode as push
 from codecs import getencoder
-from datetime import datetime
+from datetime import datetime, timedelta
 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):
@@ -77,7 +79,23 @@ def exception_log():
     log.info('Quiting now!')
     sys.exit(1)
 
+def purge_cache(obj, age=4):
+    """purge old entries in http client cache
+    """
+    now = datetime.utcnow()
+    if now.hour == obj.timestamp.hour:
+        return
+    obj.timestamp = datetime.utcnow()
+    cache = obj.cache
+    delta = timedelta(hours=age)
+    for url in list(cache.keys()):
+        timestamp = cache.get(url).created()
+        if now - timestamp > delta:
+            cache.pop(url)
+
+
 class SigHup(Exception):
+    """SIGHUP raises this Exception"""
     pass
 
 # ArgParse Callbacks
@@ -144,7 +162,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,7 +177,8 @@ class Throttle():
             return result
         return wrapper
 
-class Cache():
+class Cache:
+    """Plain cache object"""
     def __init__(self, elem, last=None):
         self.elem = elem
         self.requestdate = last
@@ -171,5 +191,21 @@ class Cache():
     def get(self):
         return self.elem
 
+
+# http client exceptions (for webservices)
+
+class WSError(Exception):
+    pass
+
+class WSNotFound(WSError):
+    pass
+
+class WSTimeout(WSError):
+    pass
+
+class WSHTTPError(WSError):
+    pass
+
+
 # VIM MODLINE
 # vim: ai ts=4 sw=4 sts=4 expandtab