~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Andrew Bennetts
  • Date: 2007-08-30 08:11:54 UTC
  • mfrom: (2766 +trunk)
  • mto: (2535.3.55 repo-refactor)
  • mto: This revision was merged to the branch mainline in revision 2772.
  • Revision ID: andrew.bennetts@canonical.com-20070830081154-16hebp2xwr15x2hc
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
256
256
 
257
257
class NoSuchId(BzrError):
258
258
 
259
 
    _fmt = "The file id %(file_id)s is not present in the tree %(tree)s."
 
259
    _fmt = 'The file id "%(file_id)s" is not present in the tree %(tree)s.'
260
260
    
261
261
    def __init__(self, tree, file_id):
262
262
        BzrError.__init__(self)
264
264
        self.tree = tree
265
265
 
266
266
 
 
267
class NoSuchIdInRepository(NoSuchId):
 
268
 
 
269
    _fmt = ('The file id "%(file_id)s" is not present in the repository'
 
270
            ' %(repository)r')
 
271
 
 
272
    def __init__(self, repository, file_id):
 
273
        BzrError.__init__(self, repository=repository, file_id=file_id)
 
274
 
 
275
 
267
276
class InventoryModified(BzrError):
268
277
 
269
278
    _fmt = ("The current inventory for the tree %(tree)r has been modified,"
277
286
 
278
287
class NoWorkingTree(BzrError):
279
288
 
280
 
    _fmt = "No WorkingTree exists for %(base)s."
 
289
    _fmt = 'No WorkingTree exists for "%(base)s".'
281
290
    
282
291
    def __init__(self, base):
283
292
        BzrError.__init__(self)
299
308
 
300
309
class WorkingTreeAlreadyPopulated(BzrError):
301
310
 
302
 
    _fmt = """Working tree already populated in %(base)s"""
 
311
    _fmt = 'Working tree already populated in "%(base)s"'
303
312
 
304
313
    internal_error = True
305
314
 
459
468
 
460
469
class NotADirectory(PathError):
461
470
 
462
 
    _fmt = "%(path)r is not a directory %(extra)s"
 
471
    _fmt = '"%(path)s" is not a directory %(extra)s'
463
472
 
464
473
 
465
474
class NotInWorkingDirectory(PathError):
466
475
 
467
 
    _fmt = "%(path)r is not in the working directory %(extra)s"
 
476
    _fmt = '"%(path)s" is not in the working directory %(extra)s'
468
477
 
469
478
 
470
479
class DirectoryNotEmpty(PathError):
471
480
 
472
 
    _fmt = "Directory not empty: %(path)r%(extra)s"
 
481
    _fmt = 'Directory not empty: "%(path)s"%(extra)s'
473
482
 
474
483
 
475
484
class ReadingCompleted(BzrError):
486
495
 
487
496
class ResourceBusy(PathError):
488
497
 
489
 
    _fmt = "Device or resource busy: %(path)r%(extra)s"
 
498
    _fmt = 'Device or resource busy: "%(path)s"%(extra)s'
490
499
 
491
500
 
492
501
class PermissionDenied(PathError):
493
502
 
494
 
    _fmt = "Permission denied: %(path)r%(extra)s"
 
503
    _fmt = 'Permission denied: "%(path)s"%(extra)s'
495
504
 
496
505
 
497
506
class InvalidURL(PathError):
498
507
 
499
 
    _fmt = "Invalid url supplied to transport: %(path)r%(extra)s"
 
508
    _fmt = 'Invalid url supplied to transport: "%(path)s"%(extra)s'
500
509
 
501
510
 
502
511
class InvalidURLJoin(PathError):
503
512
 
504
 
    _fmt = "Invalid URL join request: %(args)s%(extra)s"
 
513
    _fmt = 'Invalid URL join request: "%(args)s"%(extra)s'
505
514
 
506
515
    def __init__(self, msg, base, args):
507
516
        PathError.__init__(self, base, msg)
533
542
 
534
543
class ShortReadvError(PathError):
535
544
 
536
 
    _fmt = ("readv() read %(actual)s bytes rather than %(length)s bytes"
537
 
            " at %(offset)s for %(path)s%(extra)s")
 
545
    _fmt = ('readv() read %(actual)s bytes rather than %(length)s bytes'
 
546
            ' at %(offset)s for "%(path)s"%(extra)s')
538
547
 
539
548
    internal_error = True
540
549
 
547
556
 
548
557
class PathNotChild(PathError):
549
558
 
550
 
    _fmt = "Path %(path)r is not a child of path %(base)r%(extra)s"
 
559
    _fmt = 'Path "%(path)s" is not a child of path "%(base)s"%(extra)s'
551
560
 
552
561
    internal_error = True
553
562
 
563
572
 
564
573
class InvalidNormalization(PathError):
565
574
 
566
 
    _fmt = "Path %(path)r is not unicode normalized"
 
575
    _fmt = 'Path "%(path)s" is not unicode normalized'
567
576
 
568
577
 
569
578
# TODO: This is given a URL; we try to unescape it but doing that from inside
571
580
# TODO: Probably this behavior of should be a common superclass 
572
581
class NotBranchError(PathError):
573
582
 
574
 
    _fmt = "Not a branch: %(path)s"
 
583
    _fmt = 'Not a branch: "%(path)s".'
575
584
 
576
585
    def __init__(self, path):
577
586
       import bzrlib.urlutils as urlutils
589
598
 
590
599
class AlreadyBranchError(PathError):
591
600
 
592
 
    _fmt = "Already a branch: %(path)s."
 
601
    _fmt = 'Already a branch: "%(path)s".'
593
602
 
594
603
 
595
604
class BranchExistsWithoutWorkingTree(PathError):
596
605
 
597
 
    _fmt = "Directory contains a branch, but no working tree \
598
 
(use bzr checkout if you wish to build a working tree): %(path)s"
 
606
    _fmt = 'Directory contains a branch, but no working tree \
 
607
(use bzr checkout if you wish to build a working tree): "%(path)s"'
599
608
 
600
609
 
601
610
class AtomicFileAlreadyClosed(PathError):
602
611
 
603
 
    _fmt = ("'%(function)s' called on an AtomicFile after it was closed:"
604
 
            " %(path)s")
 
612
    _fmt = ('"%(function)s" called on an AtomicFile after it was closed:'
 
613
            ' "%(path)s"')
605
614
 
606
615
    def __init__(self, path, function):
607
616
        PathError.__init__(self, path=path, extra=None)
610
619
 
611
620
class InaccessibleParent(PathError):
612
621
 
613
 
    _fmt = ("Parent not accessible given base %(base)s and"
614
 
            " relative path %(path)s")
 
622
    _fmt = ('Parent not accessible given base "%(base)s" and'
 
623
            ' relative path "%(path)s"')
615
624
 
616
625
    def __init__(self, path, base):
617
626
        PathError.__init__(self, path)
620
629
 
621
630
class NoRepositoryPresent(BzrError):
622
631
 
623
 
    _fmt = "No repository present: %(path)r"
 
632
    _fmt = 'No repository present: "%(path)s"'
624
633
    def __init__(self, bzrdir):
625
634
        BzrError.__init__(self)
626
635
        self.path = bzrdir.transport.clone('..').base
628
637
 
629
638
class FileInWrongBranch(BzrError):
630
639
 
631
 
    _fmt = "File %(path)s in not in branch %(branch_base)s."
 
640
    _fmt = 'File "%(path)s" in not in branch %(branch_base)s.'
632
641
 
633
642
    def __init__(self, branch, path):
634
643
        BzrError.__init__(self)
678
687
class AlreadyVersionedError(BzrError):
679
688
    """Used when a path is expected not to be versioned, but it is."""
680
689
 
681
 
    _fmt = "%(context_info)s%(path)s is already versioned"
 
690
    _fmt = "%(context_info)s%(path)s is already versioned."
682
691
 
683
692
    def __init__(self, path, context_info=None):
684
693
        """Construct a new AlreadyVersionedError.
699
708
class NotVersionedError(BzrError):
700
709
    """Used when a path is expected to be versioned, but it is not."""
701
710
 
702
 
    _fmt = "%(context_info)s%(path)s is not versioned"
 
711
    _fmt = "%(context_info)s%(path)s is not versioned."
703
712
 
704
713
    def __init__(self, path, context_info=None):
705
714
        """Construct a new NotVersionedError.
758
767
 
759
768
class ForbiddenControlFileError(BzrError):
760
769
 
761
 
    _fmt = "Cannot operate on %(filename)s because it is a control file"
 
770
    _fmt = 'Cannot operate on "%(filename)s" because it is a control file'
762
771
 
763
772
 
764
773
class LockError(BzrError):
861
870
 
862
871
class LockContention(LockError):
863
872
 
864
 
    _fmt = "Could not acquire lock %(lock)s"
 
873
    _fmt = 'Could not acquire lock "%(lock)s"'
865
874
    # TODO: show full url for lock, combining the transport and relative
866
875
    # bits?
867
876
 
941
950
        BzrError.__init__(self, files=files, files_str=files_str)
942
951
 
943
952
 
 
953
class BadCommitMessageEncoding(BzrError):
 
954
 
 
955
    _fmt = 'The specified commit message contains characters unsupported by '\
 
956
        'the current encoding.'
 
957
 
 
958
 
944
959
class UpgradeReadonly(BzrError):
945
960
 
946
961
    _fmt = "Upgrade URL cannot work with readonly URLs."
962
977
 
963
978
class NoSuchRevision(BzrError):
964
979
 
965
 
    _fmt = "Branch %(branch)s has no revision %(revision)s"
 
980
    _fmt = "%(branch)s has no revision %(revision)s"
966
981
 
967
982
    internal_error = True
968
983
 
969
984
    def __init__(self, branch, revision):
 
985
        # 'branch' may sometimes be an internal object like a KnitRevisionStore
970
986
        BzrError.__init__(self, branch=branch, revision=revision)
971
987
 
972
988
 
 
989
# zero_ninetyone: this exception is no longer raised and should be removed
973
990
class NotLeftParentDescendant(BzrError):
974
991
 
975
992
    _fmt = ("Revision %(old_revision)s is not the left parent of"
994
1011
class NoSuchRevisionInTree(NoSuchRevision):
995
1012
    """When using Tree.revision_tree, and the revision is not accessible."""
996
1013
    
997
 
    _fmt = "The revision id %(revision_id)s is not present in the tree %(tree)s."
 
1014
    _fmt = "The revision id {%(revision_id)s} is not present in the tree %(tree)s."
998
1015
 
999
1016
    def __init__(self, tree, revision_id):
1000
1017
        BzrError.__init__(self)
1132
1149
 
1133
1150
class BoundBranchOutOfDate(BzrError):
1134
1151
 
1135
 
    _fmt = ("Bound branch %(branch)s is out of date"
1136
 
            " with master branch %(master)s.")
 
1152
    _fmt = ("Bound branch %(branch)s is out of date with master branch"
 
1153
            " %(master)s.")
1137
1154
 
1138
1155
    def __init__(self, branch, master):
1139
1156
        BzrError.__init__(self)
1254
1271
 
1255
1272
class RevisionNotPresent(VersionedFileError):
1256
1273
    
1257
 
    _fmt = "Revision {%(revision_id)s} not present in %(file_id)s."
 
1274
    _fmt = 'Revision {%(revision_id)s} not present in "%(file_id)s".'
1258
1275
 
1259
1276
    def __init__(self, revision_id, file_id):
1260
1277
        VersionedFileError.__init__(self)
1264
1281
 
1265
1282
class RevisionAlreadyPresent(VersionedFileError):
1266
1283
    
1267
 
    _fmt = "Revision {%(revision_id)s} already present in %(file_id)s."
 
1284
    _fmt = 'Revision {%(revision_id)s} already present in "%(file_id)s".'
1268
1285
 
1269
1286
    def __init__(self, revision_id, file_id):
1270
1287
        VersionedFileError.__init__(self)
1305
1322
 
1306
1323
class KnitHeaderError(KnitError):
1307
1324
 
1308
 
    _fmt = "Knit header error: %(badline)r unexpected for file %(filename)s"
 
1325
    _fmt = 'Knit header error: %(badline)r unexpected for file "%(filename)s".'
1309
1326
 
1310
1327
    def __init__(self, badline, filename):
1311
1328
        KnitError.__init__(self)
1525
1542
 
1526
1543
class SigningFailed(BzrError):
1527
1544
 
1528
 
    _fmt = "Failed to gpg sign data with command %(command_line)r"
 
1545
    _fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1529
1546
 
1530
1547
    def __init__(self, command_line):
1531
1548
        BzrError.__init__(self, command_line=command_line)
1605
1622
 
1606
1623
class NoBundleFound(BzrError):
1607
1624
 
1608
 
    _fmt = "No bundle was found in %(filename)s"
 
1625
    _fmt = 'No bundle was found in "%(filename)s".'
1609
1626
 
1610
1627
    def __init__(self, filename):
1611
1628
        BzrError.__init__(self)
1634
1651
        self.text_revision = text_revision
1635
1652
        self.file_id = file_id
1636
1653
 
 
1654
 
1637
1655
class DuplicateFileId(BzrError):
1638
1656
 
1639
1657
    _fmt = "File id {%(file_id)s} already exists in inventory as %(entry)s"
1842
1860
       self.limbo_dir = limbo_dir
1843
1861
 
1844
1862
 
 
1863
class ExistingPendingDeletion(BzrError):
 
1864
 
 
1865
    _fmt = """This tree contains left-over files from a failed operation.
 
1866
    Please examine %(pending_deletion)s to see if it contains any files you
 
1867
    wish to keep, and delete it when you are done."""
 
1868
 
 
1869
    def __init__(self, pending_deletion):
 
1870
       BzrError.__init__(self, pending_deletion=pending_deletion)
 
1871
 
 
1872
 
1845
1873
class ImmortalLimbo(BzrError):
1846
1874
 
1847
1875
    _fmt = """Unable to delete transform temporary directory $(limbo_dir)s.
1853
1881
       self.limbo_dir = limbo_dir
1854
1882
 
1855
1883
 
 
1884
class ImmortalPendingDeletion(BzrError):
 
1885
 
 
1886
    _fmt = """Unable to delete transform temporary directory
 
1887
    %(pending_deletion)s.  Please examine %(pending_deletions)s to see if it
 
1888
    contains any files you wish to keep, and delete it when you are done."""
 
1889
 
 
1890
    def __init__(self, pending_deletion):
 
1891
       BzrError.__init__(self, pending_deletion=pending_deletion)
 
1892
 
 
1893
 
1856
1894
class OutOfDateTree(BzrError):
1857
1895
 
1858
1896
    _fmt = "Working tree is out of date, please run 'bzr update'."
2173
2211
 
2174
2212
class BadSubsumeSource(BzrError):
2175
2213
 
2176
 
    _fmt = """Can't subsume %(other_tree)s into %(tree)s.  %(reason)s"""
 
2214
    _fmt = "Can't subsume %(other_tree)s into %(tree)s. %(reason)s"
2177
2215
 
2178
2216
    def __init__(self, tree, other_tree, reason):
2179
2217
        self.tree = tree
2191
2229
 
2192
2230
class BadReferenceTarget(BzrError):
2193
2231
 
2194
 
    _fmt = "Can't add reference to %(other_tree)s into %(tree)s.  %(reason)s"
 
2232
    _fmt = "Can't add reference to %(other_tree)s into %(tree)s." \
 
2233
           "%(reason)s"
2195
2234
 
2196
2235
    internal_error = True
2197
2236
 
2298
2337
 
2299
2338
class DuplicateRecordNameError(ContainerError):
2300
2339
 
2301
 
    _fmt = "Container has multiple records with the same name: \"%(name)s\""
 
2340
    _fmt = "Container has multiple records with the same name: %(name)s"
2302
2341
 
2303
2342
    def __init__(self, name):
2304
2343
        self.name = name
2319
2358
        self.error = error
2320
2359
 
2321
2360
 
 
2361
class NoMessageSupplied(BzrError):
 
2362
 
 
2363
    _fmt = "No message supplied."
 
2364
 
 
2365
 
 
2366
class UnknownMailClient(BzrError):
 
2367
 
 
2368
    _fmt = "Unknown mail client: %(mail_client)s"
 
2369
 
 
2370
    def __init__(self, mail_client):
 
2371
        BzrError.__init__(self, mail_client=mail_client)
 
2372
 
 
2373
 
 
2374
class MailClientNotFound(BzrError):
 
2375
 
 
2376
    _fmt = "Unable to find mail client with the following names:"\
 
2377
        " %(mail_command_list_string)s"
 
2378
 
 
2379
    def __init__(self, mail_command_list):
 
2380
        mail_command_list_string = ', '.join(mail_command_list)
 
2381
        BzrError.__init__(self, mail_command_list=mail_command_list,
 
2382
                          mail_command_list_string=mail_command_list_string)
 
2383
 
2322
2384
class SMTPConnectionRefused(SMTPError):
2323
2385
 
2324
2386
    _fmt = "SMTP connection to %(host)s refused"