code: def release(self, owner, access):
          
          assert isinstance(access, LockAccess)
  
          debuglog("%s release(%s, %s)" % (self, owner, access.mode))
          if not self._removeOwner(owner, access):
              debuglog("%s already released" % self)
              return
  
          self._tryWakeUp()
  
          # notify any listeners
          self.release_subs.deliver()
docs: Release the lock