X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/eed35df7a427c7f3e346b6e29ba87b6ca8635561..a8a160c837be23b17fd159a270edf7c4a6304b88:/python/mcp/__init__.py diff --git a/python/mcp/__init__.py b/python/mcp/__init__.py index 2ee42c2..0e52a3c 100644 --- a/python/mcp/__init__.py +++ b/python/mcp/__init__.py @@ -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")