yaml: Represent weboob date[time] objects as timestamps

Unfortunately, I couldn't make timestamps always load
as our date[time] objects, at least with CLoader.
This commit is contained in:
Laurent Bachelier 2014-05-23 12:32:41 +02:00
commit 3ffee483b0

View file

@ -18,11 +18,15 @@
# along with weboob. If not, see <http://www.gnu.org/licenses/>.
import logging
import os
import tempfile
import logging
import weboob.tools.date
import yaml
from .iconfig import ConfigError, IConfig
try:
from yaml import CLoader as Loader
from yaml import CDumper as Dumper
@ -30,12 +34,22 @@ except ImportError:
from yaml import Loader
from yaml import Dumper
from .iconfig import IConfig, ConfigError
__all__ = ['YamlConfig']
class WeboobDumper(Dumper):
pass
WeboobDumper.add_representer(weboob.tools.date.date,
WeboobDumper.represent_date)
WeboobDumper.add_representer(weboob.tools.date.datetime,
WeboobDumper.represent_datetime)
class YamlConfig(IConfig):
def __init__(self, path):
self.path = path
@ -59,7 +73,7 @@ class YamlConfig(IConfig):
def save(self):
# write in a temporary file to avoid corruption problems
with tempfile.NamedTemporaryFile(dir=os.path.dirname(self.path), delete=False) as f:
yaml.dump(self.values, f, Dumper=Dumper)
yaml.dump(self.values, f, Dumper=WeboobDumper)
os.rename(f.name, self.path)
def get(self, *args, **kwargs):