From c285036f5674ee54c16b46c3088ed86503d63d83 Mon Sep 17 00:00:00 2001 From: Sebastian Koslowski <koslowski@kit.edu> Date: Wed, 16 Mar 2016 16:25:09 +0100 Subject: grc-refactor: remove (hopefully) all deps to GR in core/ and gui/ --- grc/core/utils/epy_block_io.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'grc/core/utils/epy_block_io.py') diff --git a/grc/core/utils/epy_block_io.py b/grc/core/utils/epy_block_io.py index c070e1c3f3..df3a4bbc3e 100644 --- a/grc/core/utils/epy_block_io.py +++ b/grc/core/utils/epy_block_io.py @@ -2,9 +2,6 @@ import inspect import collections -from gnuradio import gr -import pmt - TYPE_MAP = { 'complex64': 'complex', 'complex': 'complex', @@ -31,21 +28,27 @@ def _ports(sigs, msgs): return ports -def _blk_class(source_code): +def _find_block_class(source_code, cls): ns = {} try: exec source_code in ns except Exception as e: raise ValueError("Can't interpret source code: " + str(e)) for var in ns.itervalues(): - if inspect.isclass(var) and issubclass(var, gr.gateway.gateway_block): + if inspect.isclass(var) and issubclass(var, cls): return var raise ValueError('No python block class found in code') def extract(cls): + try: + from gnuradio import gr + import pmt + except ImportError: + raise EnvironmentError("Can't import GNU Radio") + if not inspect.isclass(cls): - cls = _blk_class(cls) + cls = _find_block_class(cls, gr.gateway.gateway_block) spec = inspect.getargspec(cls.__init__) defaults = map(repr, spec.defaults or ()) -- cgit v1.2.3