class PaddingMixin(configurable.Configurable): """Mixin that provides padding(_x|_y|) To use it, subclass and add this to __init__: self.add_defaults(base.PaddingMixin.defaults) """ defaults = [ ("padding", 3, "Padding inside the box"), ("padding_x", None, "X Padding. Overrides 'padding' if set"), ("padding_y", None, "Y Padding. Overrides 'padding' if set"), ] # type: list[tuple[str, Any, str]] padding_x = configurable.ExtraFallback("padding_x", "padding") padding_y = configurable.ExtraFallback("padding_y", "padding")
class MarginMixin(configurable.Configurable): """Mixin that provides margin(_x|_y|) To use it, subclass and add this to __init__: self.add_defaults(base.MarginMixin.defaults) """ defaults = [ ("margin", 3, "Margin inside the box"), ("margin_x", None, "X Margin. Overrides 'margin' if set"), ("margin_y", None, "Y Margin. Overrides 'margin' if set"), ] # type: list[tuple[str, Any, str]] margin_x = configurable.ExtraFallback("margin_x", "margin") margin_y = configurable.ExtraFallback("margin_y", "margin")
class ConfigurableWithFallback(configurable.Configurable): defaults = [ ("foo", 3, ""), ] bar = configurable.ExtraFallback("bar", "foo") def __init__(self, **config): configurable.Configurable.__init__(self, **config) self.add_defaults(ConfigurableWithFallback.defaults)