~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: 2007-03-21 04:49:05 UTC
  • mfrom: (2367.1.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20070321044905-ded01a80ab49bdd9
Update NEWS to match bzr 0.15.

Show diffs side-by-side

added added

removed removed

Lines of Context:
132
132
    # readable explanation
133
133
 
134
134
    def __init__(self, *args, **kwds):
135
 
        # XXX: Use the underlying BzrError to always generate the args attribute
136
 
        # if it doesn't exist.  We can't use super here, because exceptions are
137
 
        # old-style classes in python2.4 (but new in 2.5).  --bmc, 20060426
 
135
        # XXX: Use the underlying BzrError to always generate the args
 
136
        # attribute if it doesn't exist.  We can't use super here, because
 
137
        # exceptions are old-style classes in python2.4 (but new in 2.5).
 
138
        # --bmc, 20060426
138
139
        symbol_versioning.warn('BzrNewError was deprecated in bzr 0.13; '
139
 
             'please convert %s to use BzrError instead' 
 
140
             'please convert %s to use BzrError instead'
140
141
             % self.__class__.__name__,
141
142
             DeprecationWarning,
142
143
             stacklevel=2)
223
224
 
224
225
class InventoryModified(BzrError):
225
226
 
226
 
    _fmt = ("The current inventory for the tree %(tree)r has been modified, "
227
 
            "so a clean inventory cannot be read without data loss.")
 
227
    _fmt = ("The current inventory for the tree %(tree)r has been modified,"
 
228
            " so a clean inventory cannot be read without data loss.")
228
229
 
229
230
    internal_error = True
230
231
 
342
343
    """Used when renaming and both source and dest exist."""
343
344
 
344
345
    _fmt = ("Could not rename %(source)s => %(dest)s because both files exist."
345
 
         "%(extra)s")
 
346
            "%(extra)s")
346
347
 
347
348
    def __init__(self, source, dest, extra=None):
348
349
        BzrError.__init__(self)
425
426
 
426
427
class ShortReadvError(PathError):
427
428
 
428
 
    _fmt = "readv() read %(actual)s bytes rather than %(length)s bytes at %(offset)s for %(path)s%(extra)s"
 
429
    _fmt = ("readv() read %(actual)s bytes rather than %(length)s bytes"
 
430
            " at %(offset)s for %(path)s%(extra)s")
429
431
 
430
432
    internal_error = True
431
433
 
469
471
       self.path = urlutils.unescape_for_display(path, 'ascii')
470
472
 
471
473
 
 
474
class NoSubmitBranch(PathError):
 
475
 
 
476
    _fmt = 'No submit branch available for branch "%(path)s"'
 
477
 
 
478
    def __init__(self, branch):
 
479
       import bzrlib.urlutils as urlutils
 
480
       self.path = urlutils.unescape_for_display(branch.base, 'ascii')
 
481
 
 
482
 
472
483
class AlreadyBranchError(PathError):
473
484
 
474
485
    _fmt = "Already a branch: %(path)s."
482
493
 
483
494
class AtomicFileAlreadyClosed(PathError):
484
495
 
485
 
    _fmt = "'%(function)s' called on an AtomicFile after it was closed: %(path)s"
 
496
    _fmt = ("'%(function)s' called on an AtomicFile after it was closed:"
 
497
            " %(path)s")
486
498
 
487
499
    def __init__(self, path, function):
488
500
        PathError.__init__(self, path=path, extra=None)
491
503
 
492
504
class InaccessibleParent(PathError):
493
505
 
494
 
    _fmt = "Parent not accessible given base %(base)s and relative path %(path)s"
 
506
    _fmt = ("Parent not accessible given base %(base)s and"
 
507
            " relative path %(path)s")
495
508
 
496
509
    def __init__(self, path, base):
497
510
        PathError.__init__(self, path)
634
647
 
635
648
class LockError(BzrError):
636
649
 
637
 
    _fmt = "Lock error: %(message)s"
 
650
    _fmt = "Lock error: %(msg)s"
638
651
 
639
652
    internal_error = True
640
653
 
644
657
    #
645
658
    # New code should prefer to raise specific subclasses
646
659
    def __init__(self, message):
647
 
        self.message = message
 
660
        # Python 2.5 uses a slot for StandardError.message,
 
661
        # so use a different variable name
 
662
        # so it is exposed in self.__dict__
 
663
        self.msg = message
648
664
 
649
665
 
650
666
class LockActive(LockError):
684
700
        self.obj = obj
685
701
 
686
702
 
 
703
class ReadOnlyLockError(LockError):
 
704
 
 
705
    _fmt = "Cannot acquire write lock on %(fname)s. %(msg)s"
 
706
 
 
707
    def __init__(self, fname, msg):
 
708
        LockError.__init__(self, '')
 
709
        self.fname = fname
 
710
        self.msg = msg
 
711
 
 
712
 
687
713
class OutSideTransaction(BzrError):
688
714
 
689
 
    _fmt = "A transaction related operation was attempted after the transaction finished."
 
715
    _fmt = ("A transaction related operation was attempted after"
 
716
            " the transaction finished.")
690
717
 
691
718
 
692
719
class ObjectNotLocked(LockError):
723
750
    # bits?
724
751
 
725
752
    internal_error = False
726
 
    
 
753
 
727
754
    def __init__(self, lock):
728
755
        self.lock = lock
729
756
 
730
757
 
731
758
class LockBroken(LockError):
732
759
 
733
 
    _fmt = "Lock was broken while still open: %(lock)s - check storage consistency!"
 
760
    _fmt = ("Lock was broken while still open: %(lock)s"
 
761
            " - check storage consistency!")
734
762
 
735
763
    internal_error = False
736
764
 
740
768
 
741
769
class LockBreakMismatch(LockError):
742
770
 
743
 
    _fmt = "Lock was released and re-acquired before being broken: %(lock)s: held by %(holder)r, wanted to break %(target)r"
 
771
    _fmt = ("Lock was released and re-acquired before being broken:"
 
772
            " %(lock)s: held by %(holder)r, wanted to break %(target)r")
744
773
 
745
774
    internal_error = False
746
775
 
796
825
 
797
826
class NotLeftParentDescendant(BzrError):
798
827
 
799
 
    _fmt = "Revision %(old_revision)s is not the left parent of"\
800
 
        " %(new_revision)s, but branch %(branch_location)s expects this"
 
828
    _fmt = ("Revision %(old_revision)s is not the left parent of"
 
829
            " %(new_revision)s, but branch %(branch_location)s expects this")
801
830
 
802
831
    internal_error = True
803
832
 
828
857
 
829
858
class InvalidRevisionSpec(BzrError):
830
859
 
831
 
    _fmt = "Requested revision: %(spec)r does not exist in branch: %(branch)s%(extra)s"
 
860
    _fmt = ("Requested revision: %(spec)r does not exist in branch:"
 
861
            " %(branch)s%(extra)s")
832
862
 
833
863
    def __init__(self, spec, branch, extra=None):
834
864
        BzrError.__init__(self, branch=branch, spec=spec)
845
875
 
846
876
class AppendRevisionsOnlyViolation(BzrError):
847
877
 
848
 
    _fmt = 'Operation denied because it would change the main history, '\
849
 
           'which is not permitted by the append_revisions_only setting on'\
850
 
           ' branch "%(location)s".'
 
878
    _fmt = ('Operation denied because it would change the main history,'
 
879
           ' which is not permitted by the append_revisions_only setting on'
 
880
           ' branch "%(location)s".')
851
881
 
852
882
    def __init__(self, location):
853
883
       import bzrlib.urlutils as urlutils
856
886
 
857
887
 
858
888
class DivergedBranches(BzrError):
859
 
    
860
 
    _fmt = "These branches have diverged.  Use the merge command to reconcile them."""
 
889
 
 
890
    _fmt = ("These branches have diverged."
 
891
            " Use the merge command to reconcile them.")
861
892
 
862
893
    internal_error = False
863
894
 
878
909
 
879
910
class UnrelatedBranches(BzrError):
880
911
 
881
 
    _fmt = "Branches have no common ancestor, and no merge base revision was specified."
 
912
    _fmt = ("Branches have no common ancestor, and"
 
913
            " no merge base revision was specified.")
882
914
 
883
915
    internal_error = False
884
916
 
894
926
 
895
927
class NoCommonRoot(BzrError):
896
928
 
897
 
    _fmt = "Revisions are not derived from the same root: " \
898
 
           "%(revision_a)s %(revision_b)s."
 
929
    _fmt = ("Revisions are not derived from the same root: "
 
930
           "%(revision_a)s %(revision_b)s.")
899
931
 
900
932
    def __init__(self, revision_a, revision_b):
901
933
        BzrError.__init__(self, revision_a=revision_a, revision_b=revision_b)
924
956
    def __init__(self, bases):
925
957
        warn("BzrError AmbiguousBase has been deprecated as of bzrlib 0.8.",
926
958
                DeprecationWarning)
927
 
        msg = "The correct base is unclear, because %s are all equally close" %\
928
 
            ", ".join(bases)
 
959
        msg = ("The correct base is unclear, because %s are all equally close"
 
960
                % ", ".join(bases))
929
961
        BzrError.__init__(self, msg)
930
962
        self.bases = bases
931
963
 
953
985
 
954
986
class BoundBranchOutOfDate(BzrError):
955
987
 
956
 
    _fmt = "Bound branch %(branch)s is out of date with master branch %(master)s."
 
988
    _fmt = ("Bound branch %(branch)s is out of date"
 
989
            " with master branch %(master)s.")
957
990
 
958
991
    def __init__(self, branch, master):
959
992
        BzrError.__init__(self)
963
996
        
964
997
class CommitToDoubleBoundBranch(BzrError):
965
998
 
966
 
    _fmt = "Cannot commit to branch %(branch)s. It is bound to %(master)s, which is bound to %(remote)s."
 
999
    _fmt = ("Cannot commit to branch %(branch)s."
 
1000
            " It is bound to %(master)s, which is bound to %(remote)s.")
967
1001
 
968
1002
    def __init__(self, branch, master, remote):
969
1003
        BzrError.__init__(self)
983
1017
 
984
1018
class BoundBranchConnectionFailure(BzrError):
985
1019
 
986
 
    _fmt = "Unable to connect to target of bound branch %(branch)s => %(target)s: %(error)s"
 
1020
    _fmt = ("Unable to connect to target of bound branch %(branch)s"
 
1021
            " => %(target)s: %(error)s")
987
1022
 
988
1023
    def __init__(self, branch, target, error):
989
1024
        BzrError.__init__(self)
1043
1078
 
1044
1079
class WeaveTextDiffers(WeaveError):
1045
1080
 
1046
 
    _fmt = "Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"
 
1081
    _fmt = ("Weaves differ on text content. Revision:"
 
1082
            " {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1047
1083
 
1048
1084
    def __init__(self, revision_id, weave_a, weave_b):
1049
1085
        WeaveError.__init__(self)
1054
1090
 
1055
1091
class WeaveTextDiffers(WeaveError):
1056
1092
 
1057
 
    _fmt = "Weaves differ on text content. Revision: {%(revision_id)s}, %(weave_a)s, %(weave_b)s"
 
1093
    _fmt = ("Weaves differ on text content. Revision:"
 
1094
            " {%(revision_id)s}, %(weave_a)s, %(weave_b)s")
1058
1095
 
1059
1096
    def __init__(self, revision_id, weave_a, weave_b):
1060
1097
        WeaveError.__init__(self)
1157
1194
 
1158
1195
class TooManyConcurrentRequests(BzrError):
1159
1196
 
1160
 
    _fmt = ("The medium '%(medium)s' has reached its concurrent request limit. "
1161
 
            "Be sure to finish_writing and finish_reading on the "
1162
 
            "current request that is open.")
 
1197
    _fmt = ("The medium '%(medium)s' has reached its concurrent request limit."
 
1198
            " Be sure to finish_writing and finish_reading on the"
 
1199
            " current request that is open.")
1163
1200
 
1164
1201
    internal_error = True
1165
1202
 
1292
1329
 
1293
1330
class CantReprocessAndShowBase(BzrError):
1294
1331
 
1295
 
    _fmt = "Can't reprocess and show base, because reprocessing obscures " \
1296
 
           "the relationship of conflicting lines to the base"
 
1332
    _fmt = ("Can't reprocess and show base, because reprocessing obscures "
 
1333
           "the relationship of conflicting lines to the base")
1297
1334
 
1298
1335
 
1299
1336
class GraphCycleError(BzrError):
1348
1385
 
1349
1386
 
1350
1387
class MustUseDecorated(Exception):
1351
 
    
1352
 
    _fmt = """A decorating function has requested its original command be used."""
1353
 
    
 
1388
 
 
1389
    _fmt = "A decorating function has requested its original command be used."
 
1390
 
1354
1391
 
1355
1392
class NoBundleFound(BzrError):
1356
1393
 
1373
1410
 
1374
1411
class MissingText(BzrError):
1375
1412
 
1376
 
    _fmt = "Branch %(base)s is missing revision %(text_revision)s of %(file_id)s"
 
1413
    _fmt = ("Branch %(base)s is missing revision"
 
1414
            " %(text_revision)s of %(file_id)s")
1377
1415
 
1378
1416
    def __init__(self, branch, text_revision, file_id):
1379
1417
        BzrError.__init__(self)
1496
1534
 
1497
1535
class BzrBadParameterUnicode(BzrBadParameter):
1498
1536
 
1499
 
    _fmt = "Parameter %(param)s is unicode but only byte-strings are permitted."
 
1537
    _fmt = ("Parameter %(param)s is unicode but"
 
1538
            " only byte-strings are permitted.")
1500
1539
 
1501
1540
 
1502
1541
class BzrBadParameterContainsNewline(BzrBadParameter):
1588
1627
        self.tree = tree
1589
1628
 
1590
1629
 
 
1630
class PublicBranchOutOfDate(BzrError):
 
1631
 
 
1632
    _fmt = 'Public branch "%(public_location)s" lacks revision '\
 
1633
        '"%(revstring)s".'
 
1634
 
 
1635
    def __init__(self, public_location, revstring):
 
1636
        import bzrlib.urlutils as urlutils
 
1637
        public_location = urlutils.unescape_for_display(public_location,
 
1638
                                                        'ascii')
 
1639
        BzrError.__init__(self, public_location=public_location,
 
1640
                          revstring=revstring)
 
1641
 
 
1642
 
1591
1643
class MergeModifiedFormatError(BzrError):
1592
1644
 
1593
1645
    _fmt = "Error in merge modified format"
1600
1652
 
1601
1653
class CorruptRepository(BzrError):
1602
1654
 
1603
 
    _fmt = """An error has been detected in the repository %(repo_path)s.
1604
 
Please run bzr reconcile on this repository."""
 
1655
    _fmt = ("An error has been detected in the repository %(repo_path)s.\n"
 
1656
            "Please run bzr reconcile on this repository.")
1605
1657
 
1606
1658
    def __init__(self, repo):
1607
1659
        BzrError.__init__(self)
1629
1681
 
1630
1682
class InvalidProgressBarType(BzrError):
1631
1683
 
1632
 
    _fmt = """Environment variable BZR_PROGRESS_BAR='%(bar_type)s is not a supported type
1633
 
Select one of: %(valid_types)s"""
 
1684
    _fmt = ("Environment variable BZR_PROGRESS_BAR='%(bar_type)s"
 
1685
            " is not a supported type Select one of: %(valid_types)s")
1634
1686
 
1635
1687
    def __init__(self, bar_type, valid_types):
1636
1688
        BzrError.__init__(self, bar_type=bar_type, valid_types=valid_types)
1638
1690
 
1639
1691
class UnsupportedOperation(BzrError):
1640
1692
 
1641
 
    _fmt = "The method %(mname)s is not supported on objects of type %(tname)s."
 
1693
    _fmt = ("The method %(mname)s is not supported on"
 
1694
            " objects of type %(tname)s.")
1642
1695
 
1643
1696
    def __init__(self, method, method_self):
1644
1697
        self.method = method
1651
1704
 
1652
1705
 
1653
1706
class NonAsciiRevisionId(UnsupportedOperation):
1654
 
    """Raised when a commit is attempting to set a non-ascii revision id but cant."""
 
1707
    """Raised when a commit is attempting to set a non-ascii revision id
 
1708
       but cant.
 
1709
    """
1655
1710
 
1656
1711
 
1657
1712
class BinaryFile(BzrError):
1670
1725
 
1671
1726
class TestamentMismatch(BzrError):
1672
1727
 
1673
 
    _fmt = """Testament did not match expected value.  
1674
 
       For revision_id {%(revision_id)s}, expected {%(expected)s}, measured 
 
1728
    _fmt = """Testament did not match expected value.
 
1729
       For revision_id {%(revision_id)s}, expected {%(expected)s}, measured
1675
1730
       {%(measured)s}"""
1676
1731
 
1677
1732
    def __init__(self, revision_id, expected, measured):
1778
1833
        self.vendor = vendor
1779
1834
 
1780
1835
 
 
1836
class SSHVendorNotFound(BzrError):
 
1837
 
 
1838
    _fmt = ("Don't know how to handle SSH connections."
 
1839
            " Please set BZR_SSH environment variable.")
 
1840
 
 
1841
 
1781
1842
class GhostRevisionUnusableHere(BzrError):
1782
1843
 
1783
1844
    _fmt = "Ghost revision {%(revision_id)s} cannot be used here."
1789
1850
 
1790
1851
class IllegalUseOfScopeReplacer(BzrError):
1791
1852
 
1792
 
    _fmt = "ScopeReplacer object %(name)r was used incorrectly: %(msg)s%(extra)s"
 
1853
    _fmt = ("ScopeReplacer object %(name)r was used incorrectly:"
 
1854
            " %(msg)s%(extra)s")
1793
1855
 
1794
1856
    internal_error = True
1795
1857
 
1817
1879
 
1818
1880
class ImportNameCollision(BzrError):
1819
1881
 
1820
 
    _fmt = "Tried to import an object to the same name as an existing object. %(name)s"
 
1882
    _fmt = ("Tried to import an object to the same name as"
 
1883
            " an existing object. %(name)s")
1821
1884
 
1822
1885
    internal_error = True
1823
1886
 
1826
1889
        self.name = name
1827
1890
 
1828
1891
 
 
1892
class NotAMergeDirective(BzrError):
 
1893
    """File starting with %(firstline)r is not a merge directive"""
 
1894
    def __init__(self, firstline):
 
1895
        BzrError.__init__(self, firstline=firstline)
 
1896
 
 
1897
 
 
1898
class NoMergeSource(BzrError):
 
1899
    """Raise if no merge source was specified for a merge directive"""
 
1900
 
 
1901
    _fmt = "A merge directive must provide either a bundle or a public"\
 
1902
        " branch location."
 
1903
 
 
1904
 
 
1905
class PatchMissing(BzrError):
 
1906
    """Raise a patch type was specified but no patch supplied"""
 
1907
 
 
1908
    _fmt = "patch_type was %(patch_type)s, but no patch was supplied."
 
1909
 
 
1910
    def __init__(self, patch_type):
 
1911
        BzrError.__init__(self)
 
1912
        self.patch_type = patch_type
 
1913
 
 
1914
 
1829
1915
class UnsupportedInventoryKind(BzrError):
1830
1916
    
1831
1917
    _fmt = """Unsupported entry kind %(kind)s"""
1874
1960
 
1875
1961
class TagsNotSupported(BzrError):
1876
1962
 
1877
 
    _fmt = "Tags not supported by %(branch)s; you may be able to use bzr upgrade."
 
1963
    _fmt = ("Tags not supported by %(branch)s;"
 
1964
            " you may be able to use bzr upgrade.")
1878
1965
 
1879
1966
    def __init__(self, branch):
1880
1967
        self.branch = branch