Skip to content

Commit

Permalink
pass through attributes when creating metrics, dimensions, identifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
danfrankcb committed Aug 7, 2018
1 parent 36e9662 commit ef3ba16
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions mensor/measures/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,9 @@ def __init__(self, name, unit_type=None, via=None, external=False, private=False
if self.ALLOW_ALL_ATTRIBUTES or attr in self.EXTRA_ATTRIBUTES:
setattr(self, attr, value)
else:
raise KeyError("No such attribute {}.".format(attr))
raise AttributeError(
"Cannot initialize {}<{}> with attribute {}.".format(self.__class__.__name__, self.name, attr)
)

def __getattr__(self, name):
if name.startswith('_'):
Expand Down Expand Up @@ -446,10 +448,7 @@ def transforms(self):
@transforms.setter
def transforms(self, transforms):
# TODO: Check structure of transforms dict
if not transforms:
self._transforms = {}
else:
self._transforms = transforms
self._transforms = {} if not transforms else transforms

@property
def as_external(self):
Expand Down Expand Up @@ -692,8 +691,8 @@ def desc(self):

class _Dimension(_ProvidedFeature):

def __init__(self, name, expr=None, default=None, desc=None, shared=False, partition=False, requires_constraint=False, provider=None):
_ProvidedFeature.__init__(self, name, expr=expr, default=default, desc=desc, shared=shared, provider=provider)
def __init__(self, name, expr=None, default=None, desc=None, shared=False, partition=False, requires_constraint=False, provider=None, **attrs):
_ProvidedFeature.__init__(self, name, expr=expr, default=default, desc=desc, shared=shared, provider=provider, **attrs)
if not shared and partition:
raise ValueError("Partitions must be shared.")
self.partition = partition
Expand All @@ -702,8 +701,8 @@ def __init__(self, name, expr=None, default=None, desc=None, shared=False, parti

class _StatisticalUnitIdentifier(_ProvidedFeature):

def __init__(self, name, expr=None, desc=None, role='foreign', dummy=False, provider=None):
_ProvidedFeature.__init__(self, name, expr=expr, desc=desc, shared=not dummy, provider=provider)
def __init__(self, name, expr=None, desc=None, role='foreign', dummy=False, provider=None, **attrs):
_ProvidedFeature.__init__(self, name, expr=expr, desc=desc, shared=not dummy, provider=provider, **attrs)
assert role in ('primary', 'unique', 'foreign')
if dummy:
assert role == 'primary', "Dummy identifiers currently only makes sense when it is to be treated as primary."
Expand Down Expand Up @@ -777,8 +776,11 @@ def matches(self, unit_type, reverse=False):
class _Measure(_ProvidedFeature):

def __init__(self, name, expr=None, default=None, desc=None,
distribution='normal', shared=False, provider=None):
_ProvidedFeature.__init__(self, name, expr=expr, default=default, desc=desc, shared=shared, provider=provider)
distribution='normal', shared=False, provider=None, **attrs):
_ProvidedFeature.__init__(
self, name, expr=expr, default=default, desc=desc, shared=shared, provider=provider,
**attrs
)
self.distribution = distribution

def transforms_for_unit_type(self, unit_type, stats_registry=None):
Expand Down

0 comments on commit ef3ba16

Please sign in to comment.