Source code for grave_settings.framestack_context
import os
from grave_settings.handlers import OrderedHandler
from grave_settings.semantics import SemanticContext, Semantics
[docs]class FrameStackContext(SemanticContext):
def __init__(self, handler: OrderedHandler, semantics: Semantics):
super().__init__(semantics)
self.handler = handler
[docs] def set_handler(self, handler: OrderedHandler, merge: bool = True, update_order=True):
if merge and self.handler is not None and self.handler is not handler:
handler.update(self.handler, update_order=update_order)
self.handler = handler
def __enter__(self):
self.stack.append(self.handler)
super().__enter__()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
super().__exit__(exc_type, exc_val, exc_tb)
self.handler = self.stack.pop(-1)
def __str__(self):
return super().__str__() + f'{os.linesep}{self.handler}'