~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-02-22 07:59:56 UTC
  • mfrom: (1553.5.33 bzr.mbp.locks)
  • Revision ID: pqm@pqm.ubuntu.com-20060222075956-fb281c427e571da6
add LockDir and related fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# (C) 2005 Canonical
 
1
# Copyright (C) 2005, 2006 Canonical
2
2
 
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
189
189
    """File exists: %(path)r%(extra)s"""
190
190
 
191
191
 
 
192
class DirectoryNotEmpty(PathError):
 
193
    """Directory not empty: %(path)r%(extra)s"""
 
194
 
 
195
 
192
196
class PermissionDenied(PathError):
193
197
    """Permission denied: %(path)r%(extra)s"""
194
198
 
267
271
    """Cannot operate on a file because it is a control file."""
268
272
 
269
273
 
270
 
class LockError(Exception):
271
 
    """Lock error"""
 
274
class LockError(BzrNewError):
 
275
    """Lock error: %(message)s"""
272
276
    # All exceptions from the lock/unlock functions should be from
273
277
    # this exception class.  They will be translated as necessary. The
274
278
    # original exception is available as e.original_error
 
279
    #
 
280
    # New code should prefer to raise specific subclasses
 
281
    def __init__(self, message):
 
282
        self.message = message
275
283
 
276
284
 
277
285
class CommitNotPossible(LockError):
278
286
    """A commit was attempted but we do not have a write lock open."""
 
287
    def __init__(self):
 
288
        pass
279
289
 
280
290
 
281
291
class AlreadyCommitted(LockError):
282
292
    """A rollback was requested, but is not able to be accomplished."""
 
293
    def __init__(self):
 
294
        pass
283
295
 
284
296
 
285
297
class ReadOnlyError(LockError):
286
 
    """A write attempt was made in a read only transaction."""
 
298
    """A write attempt was made in a read only transaction on %(obj)s"""
 
299
    def __init__(self, obj):
 
300
        self.obj = obj
 
301
 
 
302
 
 
303
class BranchNotLocked(LockError):
 
304
    """Branch %(branch)r is not locked"""
 
305
    def __init__(self, branch):
 
306
        # XXX: sometimes called with a LockableFiles instance not a Branch
 
307
        self.branch = branch
 
308
 
 
309
 
 
310
class ReadOnlyObjectDirtiedError(ReadOnlyError):
 
311
    """Cannot change object %(obj)r in read only transaction"""
 
312
    def __init__(self, obj):
 
313
        self.obj = obj
 
314
 
 
315
 
 
316
class UnlockableTransport(LockError):
 
317
    """Cannot lock: transport is read only: %(transport)s"""
 
318
    def __init__(self, transport):
 
319
        self.transport = transport
 
320
 
 
321
 
 
322
class LockContention(LockError):
 
323
    """Could not acquire lock %(lock)s"""
 
324
    # TODO: show full url for lock, combining the transport and relative bits?
 
325
    def __init__(self, lock):
 
326
        self.lock = lock
 
327
 
 
328
 
 
329
class LockBroken(LockError):
 
330
    """Lock was broken while still open: %(lock)s - check storage consistency!"""
 
331
    def __init__(self, lock):
 
332
        self.lock = lock
 
333
 
 
334
 
 
335
class LockBreakMismatch(LockError):
 
336
    """Lock was released and re-acquired before being broken: %(lock)s: held by %(holder)r, wanted to break %(target)r"""
 
337
    def __init__(self, lock, holder, target):
 
338
        self.lock = lock
 
339
        self.holder = holder
 
340
        self.target = target
 
341
 
 
342
 
 
343
class LockNotHeld(LockError):
 
344
    """Lock not held: %(lock)s"""
 
345
    def __init__(self, lock):
 
346
        self.lock = lock
 
347
 
 
348
 
 
349
class BranchNotLocked(LockError):
 
350
    """Branch %(branch)r not locked"""
 
351
    def __init__(self, branch):
 
352
        self.branch = branch
287
353
 
288
354
 
289
355
class PointlessCommit(BzrNewError):