from pypika import NullValue
[docs]class Modifier:
wrapped_key = 'wrapped'
def __init__(self, wrapped):
wrapped_key = super().__getattribute__('wrapped_key')
setattr(self, wrapped_key, wrapped)
def __getattr__(self, attr):
if attr in self.__dict__:
return super().__getattribute__(attr)
wrapped_key = super().__getattribute__('wrapped_key')
wrapped = super().__getattribute__(wrapped_key)
return getattr(wrapped, attr)
def __setattr__(self, attr, value):
wrapped_key = super().__getattribute__('wrapped_key')
if attr == wrapped_key:
super().__setattr__(attr, value)
return
wrapped = super().__getattribute__(wrapped_key)
if attr in wrapped.__dict__:
setattr(wrapped, attr, value)
return
super().__setattr__(attr, value)
def __hash__(self):
return hash(repr(self))
def __repr__(self):
wrapped_key = super().__getattribute__('wrapped_key')
wrapped = super().__getattribute__(wrapped_key)
return '{}({})'.format(self.__class__.__name__, repr(wrapped))
[docs]class DimensionModifier(Modifier):
wrapped_key = 'dimension'
[docs]class FilterModifier(Modifier):
wrapped_key = 'filter'
[docs]class Rollup(DimensionModifier):
@property
def definition(self):
return NullValue()
[docs]class OmitFromRollup(FilterModifier):
pass