X-Git-Url: https://git.kaliko.me/?a=blobdiff_plain;f=sima%2Flib%2Fcache.py;h=2640bf01db39101712ad0c6278c878152c2ba923;hb=HEAD;hp=d7175617c171849dfcef0a4a47a93a8072707f09;hpb=df9f0f9dae0f8712f672b4eb7f4211e62f6c2e21;p=mpd-sima.git diff --git a/sima/lib/cache.py b/sima/lib/cache.py index d717561..2640bf0 100644 --- a/sima/lib/cache.py +++ b/sima/lib/cache.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2014 Jack Kaliko +# Copyright (c) 2014, 2021 kaliko # Copyright (c) 2012, 2013 Eric Larson # # This program is free software: you can redistribute it and/or modify @@ -35,13 +35,16 @@ from ..utils.filelock import FileLock class BaseCache: def get(self, key): - raise NotImplemented() + """Get cache value""" + raise NotImplementedError def set(self, key, value): - raise NotImplemented() + """Set cache value""" + raise NotImplementedError def delete(self, key): - raise NotImplemented() + """Remove cache value""" + raise NotImplementedError class DictCache(BaseCache): @@ -70,10 +73,10 @@ class FileCache: self.forever = forever if not os.path.isdir(self.directory): - os.mkdir(self.directory) + os.makedirs(self.directory, mode=0o755) - def encode(self, x): - return md5(x.encode('utf-8')).hexdigest() + def encode(self, val): + return md5(val.encode('utf-8')).hexdigest() def _fn(self, name): return os.path.join(self.directory, self.encode(name)) @@ -82,19 +85,20 @@ class FileCache: name = self._fn(key) if os.path.exists(name): return load(codecs.open(name, 'rb')) + return None def set(self, key, value): name = self._fn(key) with FileLock(name): - with codecs.open(name, 'w+b') as fh: - dump(value, fh) + with codecs.open(name, 'w+b') as flh: + dump(value, flh) def delete(self, key): if not self.forever: os.remove(self._fn(key)) def __iter__(self): - for dirpath, dirnames, filenames in os.walk(self.directory): + for dirpath, _, filenames in os.walk(self.directory): for item in filenames: name = os.path.join(dirpath, item) yield load(codecs.open(name, 'rb'))