diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2017-03-22 13:23:33 +0100 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2017-03-22 13:26:49 +0100 |
commit | 6299451dc055424e644f389e0e0bc0b1682fe84b (patch) | |
tree | ccbd27c28c62403e407d77d81ce7fae90da44aed /grc | |
parent | 0f382320fada6608b18af5ba1d961af0066c0d25 (diff) | |
parent | ad451c9eee0e6ea9bee981b222cf98aa66a6b52c (diff) |
Merge remote-tracking branch 'upstream/next' into python3
Diffstat (limited to 'grc')
-rw-r--r-- | grc/core/Param.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/grc/core/Param.py b/grc/core/Param.py index 9544d79764..be86f0aecb 100644 --- a/grc/core/Param.py +++ b/grc/core/Param.py @@ -283,13 +283,20 @@ class Param(Element): # Can python use this as a variable? if not _check_id_matcher.match(v): raise Exception('ID "{}" must begin with a letter and may contain letters, numbers, and underscores.'.format(v)) - ids = [param.get_value() for param in self.get_all_params(t)] + ids = [param.get_value() for param in self.get_all_params(t, 'id')] - # Id should only appear once, or zero times if block is disabled - if ids.count(v) > 1: - raise Exception('ID "{}" is not unique.'.format(v)) if v in ID_BLACKLIST: raise Exception('ID "{}" is blacklisted.'.format(v)) + + if self.key == 'id': + # Id should only appear once, or zero times if block is disabled + if ids.count(v) > 1: + raise Exception('ID "{}" is not unique.'.format(v)) + else: + # Id should exist to be a reference + if ids.count(v) < 1: + raise Exception('ID "{}" does not exist.'.format(v)) + return v ######################### @@ -394,19 +401,21 @@ class Param(Element): else: return v - def get_all_params(self, type): + def get_all_params(self, type, key=None): """ - Get all the params from the flowgraph that have the given type. + Get all the params from the flowgraph that have the given type and + optionally a given key Args: type: the specified type + key: the key to match against Returns: a list of params """ params = [] for block in self.parent_flowgraph.get_enabled_blocks(): - params.extend(p for p in block.params.values() if p.get_type() == type) + params.extend(p for k, p in block.params.items() if p.get_type() == type and (key is None or key == k)) return params def is_enum(self): |