| @@ 18-31 (lines=14) @@ | ||
| 15 | __slots__ = () |
|
| 16 | _possible_attributes = ('module', 'tree', 'measures', 'times') |
|
| 17 | ||
| 18 | def _check_attributes(self, attributes, extra=None): |
|
| 19 | super(TraceItem, self)._check_attributes(attributes) |
|
| 20 | # Allow missing 'time' attribute for now (transitioning) |
|
| 21 | missing_attributes = {'module', 'tree', 'measures'} - set(attributes.keys()) |
|
| 22 | if missing_attributes: |
|
| 23 | raise AttributeNotProvided('Missing attributes: %s' % ', '.join(missing_attributes)) |
|
| 24 | if not isinstance(attributes['module'], basestring): |
|
| 25 | raise TypeError('"module" attribute is not a string.') |
|
| 26 | if not isinstance(attributes['tree'], AbstractNode): |
|
| 27 | raise TypeError('"tree" attribute is not an AbstractNode.') |
|
| 28 | if not isinstance(attributes['measures'], dict): |
|
| 29 | raise TypeError('"measures" attribute is not a dict.') |
|
| 30 | if 'times' in attributes and not isinstance(attributes['times'], dict): |
|
| 31 | raise TypeError('"times" attribute is not a dict.') |
|
| 32 | ||
| 33 | def _parse_attributes(self, attributes): |
|
| 34 | # Allow missing 'time' attribute for now (transitioning) |
|
| @@ 20-32 (lines=13) @@ | ||
| 17 | _possible_attributes = ('language', 'tree', 'measures', 'trace') |
|
| 18 | ||
| 19 | ||
| 20 | def _check_attributes(self, attributes, extra=None): |
|
| 21 | super(Response, self)._check_attributes(attributes) |
|
| 22 | missing_attributes = {'language', 'tree', 'measures', 'trace'} - set(attributes.keys()) |
|
| 23 | if missing_attributes: |
|
| 24 | raise AttributeNotProvided('Missing attributes: %s' % ', '.join(missing_attributes)) |
|
| 25 | if not isinstance(attributes['language'], basestring): |
|
| 26 | raise TypeError('"language" attribute is not a string.') |
|
| 27 | if not isinstance(attributes['tree'], AbstractNode): |
|
| 28 | raise TypeError('"tree" attribute is not an AbstractNode.') |
|
| 29 | if not isinstance(attributes['measures'], dict): |
|
| 30 | raise TypeError('"measures" attribute is not a dict.') |
|
| 31 | if not isinstance(attributes['trace'], list): |
|
| 32 | raise TypeError('"trace" attribute is not a list.') |
|
| 33 | ||
| 34 | def _parse_attributes(self, attributes): |
|
| 35 | tree = attributes['tree'] |
|