def release(self, _concoord_command):
        with self.__atomic:
            if self.__owner != _concoord_command.client:
                raise RuntimeError("cannot release un-acquired lock")
            if len(self.__queue) > 0:
                unblockcommand = self.__queue.pop(0)
                self.__owner = unblockcommand.client
                # add the popped command to the exception args
                unblocked = {}
                unblocked[unblockcommand] = True
                raise UnblockingReturn(unblockeddict=unblocked)
            elif len(self.__queue) == 0:
                self.__owner = None
                self.__locked = False
dataset/ETHPy150Open denizalti/concoord/concoord/threadingobject/dlock.py/DLock.release/original