summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/python/gnuradio
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2015-07-29 10:22:02 -0700
committerJohnathan Corgan <johnathan@corganlabs.com>2015-07-29 10:22:02 -0700
commit8a1c45c8c98272a4e0df7e123cb22c89f2f0084b (patch)
tree98f6b64c4010b407903ade9db6e1aaab1ecfa6ac /gnuradio-runtime/python/gnuradio
parenta4ee10e7501304f24fa6bac1ba722f15d22fd351 (diff)
parent77ef7840a5219d444dd64ccf115f0c8be3d97ba2 (diff)
Merge branch 'master' into next
Diffstat (limited to 'gnuradio-runtime/python/gnuradio')
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/hier_block2.py25
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/qa_hier_block2.py12
2 files changed, 19 insertions, 18 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
diff --git a/gnuradio-runtime/python/gnuradio/gr/qa_hier_block2.py b/gnuradio-runtime/python/gnuradio/gr/qa_hier_block2.py
index 50b1562f3a..a079f8de70 100644
--- a/gnuradio-runtime/python/gnuradio/gr/qa_hier_block2.py
+++ b/gnuradio-runtime/python/gnuradio/gr/qa_hier_block2.py
@@ -66,14 +66,12 @@ class test_hier_block2(gr_unittest.TestCase):
self.assertEqual(expected, self.call_log)
def test_005(self):
- with self.assertRaises(ValueError) as c:
+ with self.assertRaises(ValueError):
self.multi((self.Block(), 5))
- self.assertIsInstance(c.exception, ValueError)
def test_006(self):
- with self.assertRaises(ValueError) as c:
- self.multi(self.Block(), (self.Block(), 5, 5))
- self.assertIsInstance(c.exception, ValueError)
+ with self.assertRaises(ValueError):
+ self.multi(self.Block(), (5, 5))
def test_007(self):
b1, b2 = self.Block(), self.Block()
@@ -85,6 +83,10 @@ class test_hier_block2(gr_unittest.TestCase):
self.opt((b1, "in"), (b2, "out"))
self.assertEqual([(b1, "in", b2, "out")], self.call_log)
+ def test_009(self):
+ with self.assertRaises(ValueError):
+ self.multi(self.Block(), 5)
+
if __name__ == '__main__':
gr_unittest.run(test_hier_block2, "test_hier_block2.xml")