~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Dmitry Vasiliev
  • Date: 2007-03-07 13:20:25 UTC
  • mto: (2327.1.1 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 2328.
  • Revision ID: dima@hlabs.spb.ru-20070307132025-kgv55i7xvp7rp7pv
Reverted trailing whitespace removal

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
 
33
33
 
34
34
# TODO: is there any value in providing the .args field used by standard
35
 
# python exceptions?   A list of values with no names seems less useful
 
35
# python exceptions?   A list of values with no names seems less useful 
36
36
# to me.
37
37
 
38
 
# TODO: Perhaps convert the exception to a string at the moment it's
 
38
# TODO: Perhaps convert the exception to a string at the moment it's 
39
39
# constructed to make sure it will succeed.  But that says nothing about
40
40
# exceptions that are never raised.
41
41
 
56
56
    :cvar _fmt: Format string to display the error; this is expanded
57
57
    by the instance's dict.
58
58
    """
59
 
 
 
59
    
60
60
    internal_error = False
61
61
 
62
62
    def __init__(self, msg=None, **kwds):
67
67
        arguments can be given.  The first is for generic "user" errors which
68
68
        are not intended to be caught and so do not need a specific subclass.
69
69
        The second case is for use with subclasses that provide a _fmt format
70
 
        string to print the arguments.
 
70
        string to print the arguments.  
71
71
 
72
 
        Keyword arguments are taken as parameters to the error, which can
73
 
        be inserted into the format string template.  It's recommended
74
 
        that subclasses override the __init__ method to require specific
 
72
        Keyword arguments are taken as parameters to the error, which can 
 
73
        be inserted into the format string template.  It's recommended 
 
74
        that subclasses override the __init__ method to require specific 
75
75
        parameters.
76
76
 
77
77
        :param msg: If given, this is the literal complete text for the error,
160
160
 
161
161
 
162
162
class AlreadyBuilding(BzrError):
163
 
 
 
163
    
164
164
    _fmt = "The tree builder is already building a tree."
165
165
 
166
166
 
167
167
class BzrCheckError(BzrError):
168
 
 
 
168
    
169
169
    _fmt = "Internal check failed: %(message)s"
170
170
 
171
171
    internal_error = True
176
176
 
177
177
 
178
178
class InvalidEntryName(BzrError):
179
 
 
 
179
    
180
180
    _fmt = "Invalid entry name: %(name)s"
181
181
 
182
182
    internal_error = True
187
187
 
188
188
 
189
189
class InvalidRevisionNumber(BzrError):
190
 
 
 
190
    
191
191
    _fmt = "Invalid revision number %(revno)s"
192
192
 
193
193
    def __init__(self, revno):
215
215
class NoSuchId(BzrError):
216
216
 
217
217
    _fmt = "The file id %(file_id)s is not present in the tree %(tree)s."
218
 
 
 
218
    
219
219
    def __init__(self, tree, file_id):
220
220
        BzrError.__init__(self)
221
221
        self.file_id = file_id
236
236
class NoWorkingTree(BzrError):
237
237
 
238
238
    _fmt = "No WorkingTree exists for %(base)s."
239
 
 
 
239
    
240
240
    def __init__(self, base):
241
241
        BzrError.__init__(self)
242
242
        self.base = base
308
308
    def __init__(self, name, value):
309
309
        BzrError.__init__(self, name=name, value=value)
310
310
 
311
 
 
 
311
    
312
312
class StrictCommitFailed(BzrError):
313
313
 
314
314
    _fmt = "Commit refused because there are unknown files in the tree"
317
317
# XXX: Should be unified with TransportError; they seem to represent the
318
318
# same thing
319
319
class PathError(BzrError):
320
 
 
 
320
    
321
321
    _fmt = "Generic path error: %(path)r%(extra)s)"
322
322
 
323
323
    def __init__(self, path, extra=None):
371
371
 
372
372
 
373
373
class ReadingCompleted(BzrError):
374
 
 
 
374
    
375
375
    _fmt = ("The MediumRequest '%(request)s' has already had finish_reading "
376
376
            "called upon it - the request has been completed and no more "
377
377
            "data may be read.")
461
461
 
462
462
# TODO: This is given a URL; we try to unescape it but doing that from inside
463
463
# the exception object is a bit undesirable.
464
 
# TODO: Probably this behavior of should be a common superclass
 
464
# TODO: Probably this behavior of should be a common superclass 
465
465
class NotBranchError(PathError):
466
466
 
467
467
    _fmt = "Not a branch: %(path)s"
522
522
 
523
523
 
524
524
class UnsupportedFormatError(BzrError):
525
 
 
 
525
    
526
526
    _fmt = "Unsupported branch format: %(format)s"
527
527
 
528
528
 
529
529
class UnknownFormatError(BzrError):
530
 
 
 
530
    
531
531
    _fmt = "Unknown branch format: %(format)r"
532
532
 
533
533
 
534
534
class IncompatibleFormat(BzrError):
535
 
 
 
535
    
536
536
    _fmt = "Format %(format)s is not compatible with .bzr version %(bzrdir)s."
537
537
 
538
538
    def __init__(self, format, bzrdir_format):
542
542
 
543
543
 
544
544
class IncompatibleRevision(BzrError):
545
 
 
 
545
    
546
546
    _fmt = "Revision is not compatible with %(repo_format)s"
547
547
 
548
548
    def __init__(self, repo_format):
728
728
    # bits?
729
729
 
730
730
    internal_error = False
731
 
 
 
731
    
732
732
    def __init__(self, lock):
733
733
        self.lock = lock
734
734
 
894
894
 
895
895
 
896
896
class NoCommonAncestor(BzrError):
897
 
 
 
897
    
898
898
    _fmt = "Revisions have no common ancestor: %(revision_a)s %(revision_b)s"
899
899
 
900
900
    def __init__(self, revision_a, revision_b):
971
971
        self.branch = branch
972
972
        self.master = master
973
973
 
974
 
 
 
974
        
975
975
class CommitToDoubleBoundBranch(BzrError):
976
976
 
977
977
    _fmt = ("Cannot commit to branch %(branch)s."
1047
1047
class WeaveParentMismatch(WeaveError):
1048
1048
 
1049
1049
    _fmt = "Parents are mismatched between two revisions."
1050
 
 
 
1050
    
1051
1051
 
1052
1052
class WeaveInvalidChecksum(WeaveError):
1053
1053
 
1079
1079
 
1080
1080
 
1081
1081
class VersionedFileError(BzrError):
1082
 
 
 
1082
    
1083
1083
    _fmt = "Versioned file error"
1084
1084
 
1085
1085
 
1086
1086
class RevisionNotPresent(VersionedFileError):
1087
 
 
 
1087
    
1088
1088
    _fmt = "Revision {%(revision_id)s} not present in %(file_id)s."
1089
1089
 
1090
1090
    def __init__(self, revision_id, file_id):
1094
1094
 
1095
1095
 
1096
1096
class RevisionAlreadyPresent(VersionedFileError):
1097
 
 
 
1097
    
1098
1098
    _fmt = "Revision {%(revision_id)s} already present in %(file_id)s."
1099
1099
 
1100
1100
    def __init__(self, revision_id, file_id):
1104
1104
 
1105
1105
 
1106
1106
class KnitError(BzrError):
1107
 
 
 
1107
    
1108
1108
    _fmt = "Knit error"
1109
1109
 
1110
1110
    internal_error = True
1135
1135
 
1136
1136
    Currently only 'fulltext' and 'line-delta' are supported.
1137
1137
    """
1138
 
 
 
1138
    
1139
1139
    _fmt = ("Knit index %(filename)s does not have a known method"
1140
1140
            " in options: %(options)r")
1141
1141
 
1146
1146
 
1147
1147
 
1148
1148
class NoSuchExportFormat(BzrError):
1149
 
 
 
1149
    
1150
1150
    _fmt = "Export format %(format)r not supported"
1151
1151
 
1152
1152
    def __init__(self, format):
1155
1155
 
1156
1156
 
1157
1157
class TransportError(BzrError):
1158
 
 
 
1158
    
1159
1159
    _fmt = "Transport error: %(msg)s %(orig_error)s"
1160
1160
 
1161
1161
    def __init__(self, msg=None, orig_error=None):
1228
1228
class InvalidRange(TransportError):
1229
1229
 
1230
1230
    _fmt = "Invalid range access in %(path)s at %(offset)s."
1231
 
 
 
1231
    
1232
1232
    def __init__(self, path, offset):
1233
1233
        TransportError.__init__(self, ("Invalid range access in %s at %d"
1234
1234
                                       % (path, offset)))
1248
1248
class InvalidHttpRange(InvalidHttpResponse):
1249
1249
 
1250
1250
    _fmt = "Invalid http range %(range)r for %(path)s: %(msg)s"
1251
 
 
 
1251
    
1252
1252
    def __init__(self, path, range, msg):
1253
1253
        self.range = range
1254
1254
        InvalidHttpResponse.__init__(self, path, msg)
1257
1257
class InvalidHttpContentType(InvalidHttpResponse):
1258
1258
 
1259
1259
    _fmt = 'Invalid http Content-type "%(ctype)s" for %(path)s: %(msg)s'
1260
 
 
 
1260
    
1261
1261
    def __init__(self, path, ctype, msg):
1262
1262
        self.ctype = ctype
1263
1263
        InvalidHttpResponse.__init__(self, path, msg)
1297
1297
 
1298
1298
class WorkingTreeNotRevision(BzrError):
1299
1299
 
1300
 
    _fmt = ("The working tree for %(basedir)s has changed since"
 
1300
    _fmt = ("The working tree for %(basedir)s has changed since" 
1301
1301
            " the last commit, but weave merge requires that it be"
1302
1302
            " unchanged")
1303
1303
 
1579
1579
    _fmt = """This tree contains left-over files from a failed operation.
1580
1580
    Please examine %(limbo_dir)s to see if it contains any files you wish to
1581
1581
    keep, and delete it when you are done."""
1582
 
 
 
1582
    
1583
1583
    def __init__(self, limbo_dir):
1584
1584
       BzrError.__init__(self)
1585
1585
       self.limbo_dir = limbo_dir
1675
1675
 
1676
1676
 
1677
1677
class BinaryFile(BzrError):
1678
 
 
 
1678
    
1679
1679
    _fmt = "File is binary but should be text."
1680
1680
 
1681
1681
 
1701
1701
 
1702
1702
 
1703
1703
class NotABundle(BzrError):
1704
 
 
 
1704
    
1705
1705
    _fmt = "Not a bzr revision-bundle: %(text)r"
1706
1706
 
1707
1707
    def __init__(self, text):
1709
1709
        self.text = text
1710
1710
 
1711
1711
 
1712
 
class BadBundle(BzrError):
1713
 
 
 
1712
class BadBundle(BzrError): 
 
1713
    
1714
1714
    _fmt = "Bad bzr revision-bundle: %(text)r"
1715
1715
 
1716
1716
    def __init__(self, text):
1718
1718
        self.text = text
1719
1719
 
1720
1720
 
1721
 
class MalformedHeader(BadBundle):
1722
 
 
 
1721
class MalformedHeader(BadBundle): 
 
1722
    
1723
1723
    _fmt = "Malformed bzr revision-bundle header: %(text)r"
1724
1724
 
1725
1725
 
1726
 
class MalformedPatches(BadBundle):
1727
 
 
 
1726
class MalformedPatches(BadBundle): 
 
1727
    
1728
1728
    _fmt = "Malformed patches in bzr revision-bundle: %(text)r"
1729
1729
 
1730
1730
 
1731
 
class MalformedFooter(BadBundle):
1732
 
 
 
1731
class MalformedFooter(BadBundle): 
 
1732
    
1733
1733
    _fmt = "Malformed footer in bzr revision-bundle: %(text)r"
1734
1734
 
1735
1735
 
1736
1736
class UnsupportedEOLMarker(BadBundle):
1737
 
 
1738
 
    _fmt = "End of line marker was not \\n in bzr revision-bundle"
 
1737
    
 
1738
    _fmt = "End of line marker was not \\n in bzr revision-bundle"    
1739
1739
 
1740
1740
    def __init__(self):
1741
 
        # XXX: BadBundle's constructor assumes there's explanatory text,
 
1741
        # XXX: BadBundle's constructor assumes there's explanatory text, 
1742
1742
        # but for this there is not
1743
1743
        BzrError.__init__(self)
1744
1744
 
1745
1745
 
1746
1746
class IncompatibleBundleFormat(BzrError):
1747
 
 
 
1747
    
1748
1748
    _fmt = "Bundle format %(bundle_format)s is incompatible with %(other)s"
1749
1749
 
1750
1750
    def __init__(self, bundle_format, other):
1754
1754
 
1755
1755
 
1756
1756
class BadInventoryFormat(BzrError):
1757
 
 
 
1757
    
1758
1758
    _fmt = "Root class for inventory serialization errors"
1759
1759
 
1760
1760
 
1908
1908
    def __init__(self, branch):
1909
1909
        self.branch = branch
1910
1910
 
1911
 
 
 
1911
        
1912
1912
class TagAlreadyExists(BzrError):
1913
1913
 
1914
1914
    _fmt = "Tag %(tag_name)s already exists."