diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2015-07-27 16:45:09 +0200 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2015-07-27 16:58:44 +0200 |
commit | 623f96357c79b36dc49f66dee56284d5f41a822e (patch) | |
tree | 876e1b2f9a7aad9ec6afdbc978d3ede056242f93 /gnuradio-runtime/python/gnuradio/gr/hier_block2.py | |
parent | f8a9f9fb9939799228ef38deab68c71a44acd324 (diff) |
runtime: stop catching errors from primitive_connect in connect decorator
Diffstat (limited to 'gnuradio-runtime/python/gnuradio/gr/hier_block2.py')
-rw-r--r-- | gnuradio-runtime/python/gnuradio/gr/hier_block2.py | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/gnuradio-runtime/python/gnuradio/gr/hier_block2.py b/gnuradio-runtime/python/gnuradio/gr/hier_block2.py index 3bc1e2e111..3f4c6aa9c7 100644 --- a/gnuradio-runtime/python/gnuradio/gr/hier_block2.py +++ b/gnuradio-runtime/python/gnuradio/gr/hier_block2.py @@ -19,15 +19,14 @@ # Boston, MA 02110-1301, USA. # -from functools import wraps -from itertools import imap +import functools from runtime_swig import hier_block2_swig, dot_graph import pmt def _multiple_endpoints(func): - @wraps(func) + @functools.wraps(func) def wrapped(self, *points): if not points: raise ValueError("At least one block required for " + func.__name__) @@ -39,24 +38,24 @@ def _multiple_endpoints(func): func(self, block) else: try: - endp = [(p, 0) if hasattr(p, 'to_basic_block') else p for p in points] - endp_pairs = imap(lambda i: endp[i:i+2], range(len(endp)-1)) - for (src, src_port), (dst, dst_port) in endp_pairs: - func(self, src.to_basic_block(), src_port, - dst.to_basic_block(), dst_port) - except (ValueError, TypeError): - raise ValueError("Unable to coerce endpoint") + endp = [(p.to_basic_block(), 0) if hasattr(p, 'to_basic_block') + else (p[0].to_basic_block(), p[1]) for p in points] + except (ValueError, TypeError, AttributeError) as err: + raise ValueError("Unable to coerce endpoints: " + str(err)) + + for (src, src_port), (dst, dst_port) in zip(endp, endp[1:]): + func(self, src, src_port, dst, dst_port) return wrapped def _optional_endpoints(func): - @wraps(func) + @functools.wraps(func) def wrapped(self, src, srcport, dst=None, dstport=None): if dst is None and dstport is None: try: (src, srcport), (dst, dstport) = src, srcport - except (ValueError, TypeError): - raise ValueError("Unable to coerce endpoint") + except (ValueError, TypeError) as err: + raise ValueError("Unable to coerce endpoints: " + str(err)) func(self, src.to_basic_block(), srcport, dst.to_basic_block(), dstport) return wrapped |