@@ -380,7 +380,9 @@ def __init__(self, name, unit_type=None, via=None, external=False, private=False
380380 if self .ALLOW_ALL_ATTRIBUTES or attr in self .EXTRA_ATTRIBUTES :
381381 setattr (self , attr , value )
382382 else :
383- raise KeyError ("No such attribute {}." .format (attr ))
383+ raise AttributeError (
384+ "Cannot initialize {}<{}> with attribute {}." .format (self .__class__ .__name__ , self .name , attr )
385+ )
384386
385387 def __getattr__ (self , name ):
386388 if name .startswith ('_' ):
@@ -446,10 +448,7 @@ def transforms(self):
446448 @transforms .setter
447449 def transforms (self , transforms ):
448450 # TODO: Check structure of transforms dict
449- if not transforms :
450- self ._transforms = {}
451- else :
452- self ._transforms = transforms
451+ self ._transforms = {} if not transforms else transforms
453452
454453 @property
455454 def as_external (self ):
@@ -692,8 +691,8 @@ def desc(self):
692691
693692class _Dimension (_ProvidedFeature ):
694693
695- def __init__ (self , name , expr = None , default = None , desc = None , shared = False , partition = False , requires_constraint = False , provider = None ):
696- _ProvidedFeature .__init__ (self , name , expr = expr , default = default , desc = desc , shared = shared , provider = provider )
694+ def __init__ (self , name , expr = None , default = None , desc = None , shared = False , partition = False , requires_constraint = False , provider = None , ** attrs ):
695+ _ProvidedFeature .__init__ (self , name , expr = expr , default = default , desc = desc , shared = shared , provider = provider , ** attrs )
697696 if not shared and partition :
698697 raise ValueError ("Partitions must be shared." )
699698 self .partition = partition
@@ -702,8 +701,8 @@ def __init__(self, name, expr=None, default=None, desc=None, shared=False, parti
702701
703702class _StatisticalUnitIdentifier (_ProvidedFeature ):
704703
705- def __init__ (self , name , expr = None , desc = None , role = 'foreign' , dummy = False , provider = None ):
706- _ProvidedFeature .__init__ (self , name , expr = expr , desc = desc , shared = not dummy , provider = provider )
704+ def __init__ (self , name , expr = None , desc = None , role = 'foreign' , dummy = False , provider = None , ** attrs ):
705+ _ProvidedFeature .__init__ (self , name , expr = expr , desc = desc , shared = not dummy , provider = provider , ** attrs )
707706 assert role in ('primary' , 'unique' , 'foreign' )
708707 if dummy :
709708 assert role == 'primary' , "Dummy identifiers currently only makes sense when it is to be treated as primary."
@@ -777,8 +776,11 @@ def matches(self, unit_type, reverse=False):
777776class _Measure (_ProvidedFeature ):
778777
779778 def __init__ (self , name , expr = None , default = None , desc = None ,
780- distribution = 'normal' , shared = False , provider = None ):
781- _ProvidedFeature .__init__ (self , name , expr = expr , default = default , desc = desc , shared = shared , provider = provider )
779+ distribution = 'normal' , shared = False , provider = None , ** attrs ):
780+ _ProvidedFeature .__init__ (
781+ self , name , expr = expr , default = default , desc = desc , shared = shared , provider = provider ,
782+ ** attrs
783+ )
782784 self .distribution = distribution
783785
784786 def transforms_for_unit_type (self , unit_type , stats_registry = None ):
0 commit comments