human
Solve the following python programming problem given the following code:
@ contextlib.contextmanager 
def wait_lock(path, lock_fn = None, timeout = 5, sleep = 0.1, time_start = None) : 
    '
    Obtain a write lock. If one exists, wait for it to release first
    ' 
    if (not isinstance (path, six.string_types)) : 
        raise FileLockError ('path must be a string') 
if (lock_fn is None) : 
        lock_fn = (path + '.w') 
if (time_start is None) : 
        time_start = time.time () 
obtained_lock = False 
    def _raise_error(msg, race = False) : 
        '
        Raise a FileLockError
        ' 
        raise FileLockError (msg, time_start = time_start) 
try : 
        if (os.path.exists (lock_fn) and (not os.path.isfile (lock_fn))) : 
            _raise_error ('lock_fn {0} exists and is not a file'.format (obtained_lock)) 
open_flags = ((os.O_CREAT | os.O_EXCL) | os.O_WRONLY) 
        while ((time.time () - time_start) < timeout) : 
            try : 
                fh_ = os.open (lock_fn, open_flags) 
except (IOError, OSError) as exc : 
                if (exc.errno != errno.EEXIST) : 
                    _raise_error ('Error {0} encountered obtaining file lock {1}: {2}'.format (exc.errno, lock_fn, exc.strerror)) 
log.trace ('Lock file %s exists, sleeping %f seconds', lock_fn, sleep) 
                time.sleep (sleep) 
else : 
                with os.fdopen (fh_, 'w') : 
                    pass 
log.trace ('Write lock %s obtained', lock_fn) 
                obtained_lock = True 
                (yield) 
                break 
else : 
            _raise_error ('Timeout of {0} seconds exceeded waiting for lock_fn {1} to be released'.format (timeout, lock_fn)) 
except FileLockError : 
        raise 
except Exception as exc : 
        _raise_error ('Error encountered obtaining file lock {0}: {1}'.format (lock_fn, exc)) 
finally : 
        if obtained_lock : 
            os.remove (lock_fn) 
            log.trace ('Write lock for %s (%s) released', path, lock_fn) 

    
    

    Fix the buggy line: _raise_error ('lock_fn {0} exists and is not a file'.format (obtained_lock))
assistant
#Here is Python program to fix the buggy line: _raise_error ('lock_fn {0} exists and is not a file'.

_raise_error ('lock_fn {0} exists and is not a file'.format (lock_fn))