No, you should not be able to release a lock that you don't have. The threading module sets precedent, if nothing else:
>>> import threading >>> threading.Lock().release() Traceback (most recent call last): File "<stdin>", line 1, in ? thread.error: release unlocked lock RLock is even stricter, it requires that you be in the same thread that acquired the lock, which is analogous to our situation. -FM On 6/11/08, Marcus von Appen <[EMAIL PROTECTED]> wrote: > On, Wed Jun 11, 2008, Charlie Nolan wrote: > >> Errors should never pass silently. >> Unless explicitly silenced. > > It is - at least for me - no error, if I try to unlock a surface that a) > has no locks or b) is locked by something else. Instead I'd vote for a > return value, which indicates whether the unlock() call was successful > or not. > > if surface.unlock (): > print "Unlock successful" > ... > > This let's us preserve backwards compatibility while letting the user > check for success through the return value without the need to write > extensive try: except: statements. > > Regards > Marcus >