]> sigrok.org Git - libsigrok.git/blobdiff - bindings/python/sigrok/core/classes.py
python: Add ConfigKey.info and ConfigKey.<id> shortcuts.
[libsigrok.git] / bindings / python / sigrok / core / classes.py
index 79be3b9f4270037e400c8de03cd14c166cf01317..6b5325baa58a98fd8fc6d35a45a2fb28fc008a04 100644 (file)
@@ -525,9 +525,14 @@ class Output(object):
 
 class ConfigInfo(object):
 
-    def __init__(self, key):
-        self.key = key
-        self.struct = sr_config_info_get(key.id)
+    def __new__(cls, key):
+        struct = sr_config_info_get(key.id)
+        if not struct:
+            return None
+        obj = super(ConfigInfo, cls).__new__(cls)
+        obj.key = key
+        obj.struct = struct
+        return obj
 
     @property
     def datatype(self):
@@ -603,4 +608,9 @@ for symbol_name in dir(lowlevel):
         if symbol_name.startswith(prefix):
             name = symbol_name[len(prefix):]
             value = getattr(lowlevel, symbol_name)
-            setattr(cls, name, cls(value))
+            obj = cls(value)
+            setattr(cls, name, obj)
+            if cls is ConfigKey:
+                obj.info = ConfigInfo(obj)
+                if obj.info:
+                    setattr(cls, obj.info.id, obj)