From ac135614cc04703a3e1258e97dd4a76f2c9d7d71 Mon Sep 17 00:00:00 2001 From: Eriks K Date: Wed, 3 Feb 2021 17:27:55 +0200 Subject: [PATCH] LocalVars --- erepublik/logging.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/erepublik/logging.py b/erepublik/logging.py index e8bcd73..8d45ba0 100644 --- a/erepublik/logging.py +++ b/erepublik/logging.py @@ -134,14 +134,11 @@ class ErepublikErrorHTTTPHandler(handlers.HTTPHandler): def _get_local_vars(self) -> str: trace = inspect.trace() - local_vars = {} if trace: local_vars = trace[-1][0].f_locals if local_vars.get('__name__') == '__main__': local_vars.update(commit_id=local_vars.get('COMMIT_ID'), interactive=local_vars.get('INTERACTIVE'), version=local_vars.get('__version__'), config=local_vars.get('CONFIG')) - - if local_vars: if 'state_thread' in local_vars: local_vars.pop('state_thread', None) from erepublik import Citizen @@ -151,6 +148,20 @@ class ErepublikErrorHTTTPHandler(handlers.HTTPHandler): local_vars['player'] = repr(local_vars['player']) if isinstance(local_vars.get('citizen'), Citizen): local_vars['citizen'] = repr(local_vars['citizen']) + else: + stack = inspect.stack() + local_vars = [(str(f.frame), f.frame.f_locals) for f in stack] + for frame, frame_vars in local_vars: + if 'state_thread' in frame_vars: + frame_vars.pop('state_thread', None) + from erepublik import Citizen + if isinstance(frame_vars.get('self'), Citizen): + frame_vars['self'] = repr(frame_vars['self']) + if isinstance(frame_vars.get('player'), Citizen): + frame_vars['player'] = repr(frame_vars['player']) + if isinstance(frame_vars.get('citizen'), Citizen): + frame_vars['citizen'] = repr(frame_vars['citizen']) + return json_dumps(local_vars) def _get_instance_json(self) -> str: