diff --git a/pyzenkit/baseapp.py b/pyzenkit/baseapp.py index 9f54c4f7ca09a9a51e6c317964f215aefdcad2cf..b3d0d4241c2b8321cf8f29cfe308b52048a81f09 100644 --- a/pyzenkit/baseapp.py +++ b/pyzenkit/baseapp.py @@ -1287,17 +1287,14 @@ class BaseApp: """ Dump given data structure into JSON string. """ - return json.dumps(data, sort_keys=True, indent=4, **kwargs) + return pyzenkit.jsonconf.json_dump(data, **kwargs) @staticmethod def json_save(json_file, data, **kwargs): """ Save given data structure into given JSON file. """ - mf = open(json_file, 'w') - json.dump(data, mf, sort_keys = True, **kwargs) - mf.close() - return True + return pyzenkit.jsonconf.json_save(json_file, data, **kwargs) @staticmethod def json_load(json_file, **kwargs): diff --git a/pyzenkit/jsonconf.py b/pyzenkit/jsonconf.py index 302d0687860046ec55ede59f777f4149d136883b..d138a4b623a3de523fe474b5d03c28b61f2bb471 100644 --- a/pyzenkit/jsonconf.py +++ b/pyzenkit/jsonconf.py @@ -49,6 +49,18 @@ def json_default(o): #------------------------------------------------------------------------------- +def json_dump(data, **kwargs): + """ + Dump given data structure into JSON string. + """ + if not 'sort_keys' in kwargs: + kwargs['sort_keys'] = True + if not 'indent' in kwargs: + kwargs['indent'] = 4 + if not 'default' in kwargs: + kwargs['default'] = _json_default + return json.dumps(data, **kwargs) + def json_save(json_file, data, **kwargs): """ Save data structure into given JSON configuration file. @@ -61,6 +73,7 @@ def json_save(json_file, data, **kwargs): kwargs['default'] = json_default with open(json_file, "w") as f: json.dump(data, f, **kwargs) + return True def json_load(json_file): """ diff --git a/pyzenkit/zendaemon.py b/pyzenkit/zendaemon.py index 4b9cc8cd8a4f26c5dcc47d1ae6013fddb41f0498..b31c70fb828b9b6f966cdba3b2bc931c6cec151f 100644 --- a/pyzenkit/zendaemon.py +++ b/pyzenkit/zendaemon.py @@ -44,7 +44,7 @@ def _json_default(o): elif callable(o): return "CALLBACK({}:{})".format(o.__self__.__class__.__name__, o.__name__) else: - raise TypeError(o) + return repr(o) class QueueEmptyException(Exception): """ @@ -474,7 +474,7 @@ class ZenDaemon(pyzenkit.baseapp.BaseApp): if self.c(self.CONFIG_NODAEMON): self.state_dump(self._get_state()) else: - self.state_save(self._get_state(), indent=4, default=_json_default) + self.state_save(self._get_state()) return (self.FLAG_CONTINUE, None) def cbk_event_log_statistics(self, daemon, args): @@ -585,7 +585,7 @@ class ZenDaemon(pyzenkit.baseapp.BaseApp): statistics['components'][component.__class__.__name__] = component.get_statistics(self) return statistics - def state_dump(self, state, **kwargs): + def state_dump(self, state): """ Dump current daemon state. @@ -593,9 +593,9 @@ class ZenDaemon(pyzenkit.baseapp.BaseApp): """ # Dump current script state. #self.logger.debug("Current daemon state >>>\n{}".format(json.dumps(state, sort_keys=True, indent=4))) - print("Current daemon state >>>\n{}".format(self.json_dump(state, default=_json_default, **kwargs))) + print("Current daemon state >>>\n{}".format(self.json_dump(state, default=_json_default))) - def state_save(self, state, **kwargs): + def state_save(self, state): """ Save current daemon state. @@ -604,8 +604,8 @@ class ZenDaemon(pyzenkit.baseapp.BaseApp): sfn = self.get_fn_state() self.dbgout("[STATUS] Saving current daemon state to file '{}'".format(sfn)) pprint.pprint(state) - self.dbgout("[STATUS] Current daemon state:\n{}".format(self.json_dump(state, default=_json_default, **kwargs))) - self.json_save(sfn, state, default=_json_default, **kwargs) + self.dbgout("[STATUS] Current daemon state:\n{}".format(self.json_dump(state, default=_json_default))) + self.json_save(sfn, state, default=_json_default) self.logger.info("Current daemon state saved to file '{}'".format(sfn)) def pidfiles_list(self, **kwargs): diff --git a/setup.py b/setup.py index 0a4a8e368bf17649d3b956295c77bd52f27b268e..33d82ce223c4d4c74f7b4372fd1746ae2f9720d2 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ with open(path.join(here, 'README.rst'), encoding='utf-8') as f: setup( name = 'pyzenkit', - version = '0.16', + version = '0.20', description = 'Python 3 script and daemon toolkit', long_description = long_description, classifiers = [