]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - python/mcp/__init__.py
Moved locking behaviour into common superclass. Moved context-managed behaviour into...
[Adafruit_Blinka-hackapet.git] / python / mcp / __init__.py
index 2ee42c22601ca91c6d0b6c24ecb6fe9fecfef95a..0e52a3cf9a2b10317ca204d582d21b32541c40aa 100644 (file)
@@ -30,3 +30,25 @@ class Enum(object):
                 yield (key, val)
 
 
+class ContextManaged:
+    def __enter__(self):
+        return self
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        self.deinit()
+
+def Lockable(ContextManaged):
+    _locked = False
+
+    def try_lock(self):
+        if self._locked:
+            return False
+        else:
+            self._locked=True
+            return True
+
+    def unlock(self):
+        if self._locked:
+            self._locked = False
+        else:
+            raise ValueError("Not locked")