summaryrefslogtreecommitdiff
path: root/grc/core/schema_checker/utils.py
diff options
context:
space:
mode:
authorMarcus Müller <marcus@hostalia.de>2018-09-21 00:00:57 +0200
committerMarcus Müller <marcus@hostalia.de>2018-09-21 00:00:57 +0200
commit267d669eb21c514c18a6ee979f5cf247d251f1ad (patch)
treec6120f5993f82daf13894e8bf905c4169493152e /grc/core/schema_checker/utils.py
parent896d1c9da31963ecf5b0d90942c2af51ca998a69 (diff)
parent7b20b28a9e5aa4e32ee37e89e7f80d74485344e8 (diff)
Merge branch 'merge_next' (which merges next)
This has been in the making far too long. We finally merge the next branch into master, in preparation of releasing GNU Radio 3.8. There will be breakage. There will be awesomeness. There will be progress in the greatest SDR framework to ever grace the surface of the earth. Hold tight for now.
Diffstat (limited to 'grc/core/schema_checker/utils.py')
-rw-r--r--grc/core/schema_checker/utils.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/grc/core/schema_checker/utils.py b/grc/core/schema_checker/utils.py
new file mode 100644
index 0000000000..a9cf4c0175
--- /dev/null
+++ b/grc/core/schema_checker/utils.py
@@ -0,0 +1,27 @@
+import collections
+
+import six
+
+Spec = collections.namedtuple('Spec', 'types required item_scheme')
+
+
+def expand(**kwargs):
+ def expand_spec(spec):
+ if not isinstance(spec, Spec):
+ types_ = spec if isinstance(spec, tuple) else (spec,)
+ spec = Spec(types=types_, required=False, item_scheme=None)
+ elif not isinstance(spec.types, tuple):
+ spec = Spec(types=(spec.types,), required=spec.required,
+ item_scheme=spec.item_scheme)
+ return spec
+ return {key: expand_spec(value) for key, value in kwargs.items()}
+
+
+str_ = six.string_types
+
+
+class Message(collections.namedtuple('Message', 'path type message')):
+ fmt = '{path}: {type}: {message}'
+
+ def __str__(self):
+ return self.fmt.format(**self._asdict())