]> 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
 """
 #
 """generic tools and utilities for sima
 """
+# pylint: disable=C0111
 
 import traceback
 import sys
 
 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 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 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):
 
 
 def getws(dic):
@@ -77,7 +79,23 @@ def exception_log():
     log.info('Quiting now!')
     sys.exit(1)
 
     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):
 class SigHup(Exception):
+    """SIGHUP raises this Exception"""
     pass
 
 # ArgParse Callbacks
     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))
 
         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()
     def __init__(self, wait):
         self.wait = wait
         self.last_called = datetime.now()
@@ -158,7 +177,8 @@ class Throttle():
             return result
         return wrapper
 
             return result
         return wrapper
 
-class Cache():
+class Cache:
+    """Plain cache object"""
     def __init__(self, elem, last=None):
         self.elem = elem
         self.requestdate = last
     def __init__(self, elem, last=None):
         self.elem = elem
         self.requestdate = last
@@ -171,5 +191,21 @@ class Cache():
     def get(self):
         return self.elem
 
     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
 # VIM MODLINE
 # vim: ai ts=4 sw=4 sts=4 expandtab