From 3ffee483b041d909db95aacdfd8c493b949d9423 Mon Sep 17 00:00:00 2001 From: Laurent Bachelier Date: Fri, 23 May 2014 12:32:41 +0200 Subject: [PATCH] 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. --- weboob/tools/config/yamlconfig.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/weboob/tools/config/yamlconfig.py b/weboob/tools/config/yamlconfig.py index 6efa9b6f..780d19dd 100644 --- a/weboob/tools/config/yamlconfig.py +++ b/weboob/tools/config/yamlconfig.py @@ -18,11 +18,15 @@ # along with weboob. If not, see . +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):