Skip to content

Commit ef3ba16

Browse files
committed
pass through attributes when creating metrics, dimensions, identifiers
1 parent 36e9662 commit ef3ba16

1 file changed

Lines changed: 13 additions & 11 deletions

File tree

mensor/measures/types.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

693692
class _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

703702
class _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):
777776
class _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

Comments
 (0)