/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1 by mbp at sourcefrog
import from baz patch-364
1
# -*- coding: UTF-8 -*-
2
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
18
__copyright__ = "Copyright (C) 2005 Canonical Ltd."
19
__author__ = "Martin Pool <mbp@canonical.com>"
20
21
22
######################################################################
23
# exceptions 
24
class BzrError(StandardError):
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
25
    def __str__(self):
1195 by Martin Pool
- better error display
26
        if len(self.args) == 1:
27
            return self.args[0]
28
        elif len(self.args) == 2:
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
29
            # further explanation or suggestions
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
30
            try:
31
                return '\n  '.join([self.args[0]] + self.args[1])
32
            except TypeError:
33
                return "%r" % self
1193 by Martin Pool
- better string formatting of BzrErrors with explanation
34
        else:
35
            return `self.args`
36
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
37
1 by mbp at sourcefrog
import from baz patch-364
38
class BzrCheckError(BzrError):
39
    pass
40
41
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
42
class InvalidRevisionNumber(BzrError):
43
    def __str__(self):
44
        return 'invalid revision number: %r' % self.args[0]
45
46
47
class InvalidRevisionId(BzrError):
48
    pass
49
50
329 by Martin Pool
- refactor command functions into command classes
51
class BzrCommandError(BzrError):
52
    # Error from malformed user command
53
    pass
1 by mbp at sourcefrog
import from baz patch-364
54
55
573 by Martin Pool
- new exception NotBranchError
56
class NotBranchError(BzrError):
57
    """Specified path is not in a branch"""
58
    pass
59
60
753 by Martin Pool
- new exception NotVersionedError
61
class NotVersionedError(BzrError):
62
    """Specified object is not versioned."""
63
64
599 by Martin Pool
- better error reporting from smart_add
65
class BadFileKindError(BzrError):
66
    """Specified file is of a kind that cannot be added.
67
68
    (For example a symlink or device file.)"""
69
    pass
70
71
72
class ForbiddenFileError(BzrError):
73
    """Cannot operate on a file because it is a control file."""
74
    pass
75
76
614 by Martin Pool
- unify two defintions of LockError
77
class LockError(Exception):
78
    """All exceptions from the lock/unlock functions should be from
79
    this exception class.  They will be translated as necessary. The
80
    original exception is available as e.original_error
81
    """
82
    def __init__(self, e=None):
83
        self.original_error = e
84
        if e:
85
            Exception.__init__(self, e)
86
        else:
87
            Exception.__init__(self)
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
88
89
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
90
class PointlessCommit(Exception):
882 by Martin Pool
- Optionally raise EmptyCommit if there are no changes. Test for this.
91
    """Commit failed because nothing was changed."""
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
92
93
94
class NoSuchRevision(BzrError):
95
    def __init__(self, branch, revision):
96
        self.branch = branch
97
        self.revision = revision
98
        msg = "Branch %s has no revision %s" % (branch, revision)
99
        BzrError.__init__(self, msg)
100
1034 by Martin Pool
- merge bzrlib.revision.is_ancestor from aaron
101
1192 by Martin Pool
- clean up code for retrieving stored inventories
102
class HistoryMissing(BzrError):
103
    def __init__(self, branch, object_type, object_id):
104
        self.branch = branch
105
        BzrError.__init__(self,
106
                          '%s is missing %s {%s}'
107
                          % (branch, object_type, object_id))
108
109
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
110
class DivergedBranches(BzrError):
111
    def __init__(self, branch1, branch2):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
112
        BzrError.__init__(self, "These branches have diverged.")
1185.2.1 by Lalo Martins
moving DivergedBranches from bzrlib.branch to bzrlib.errors, obeying:
113
        self.branch1 = branch1
114
        self.branch2 = branch2
115
1390 by Robert Collins
pair programming worx... merge integration and weave
116
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
117
class UnrelatedBranches(BzrCommandError):
118
    def __init__(self):
119
        msg = "Branches have no common ancestor, and no base revision"\
120
            " specified."
121
        BzrCommandError.__init__(self, msg)
122
974.1.80 by Aaron Bentley
Improved merge error handling and testing
123
class NoCommonAncestor(BzrError):
124
    def __init__(self, revision_a, revision_b):
125
        msg = "Revisions have no common ancestor: %s %s." \
126
            % (revision_a, revision_b) 
127
        BzrError.__init__(self, msg)
128
129
class NoCommonRoot(BzrError):
130
    def __init__(self, revision_a, revision_b):
131
        msg = "Revisions are not derived from the same root: %s %s." \
132
            % (revision_a, revision_b) 
133
        BzrError.__init__(self, msg)
1105 by Martin Pool
- expose 'find-merge-base' as a new expert command,
134
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
135
class NotAncestor(BzrError):
136
    def __init__(self, rev_id, not_ancestor_id):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
137
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
138
                                                        rev_id)
139
        BzrError.__init__(self, msg)
140
        self.rev_id = rev_id
141
        self.not_ancestor_id = not_ancestor_id
1185.1.12 by Robert Collins
merge in lsdiff/filterdiff friendliness
142
143
1092.3.4 by Robert Collins
update symlink branch to integration
144
class NotAncestor(BzrError):
145
    def __init__(self, rev_id, not_ancestor_id):
146
        self.rev_id = rev_id
147
        self.not_ancestor_id = not_ancestor_id
148
        msg = "Revision %s is not an ancestor of %s" % (not_ancestor_id, 
149
                                                        rev_id)
150
        BzrError.__init__(self, msg)
151
152
974.1.30 by aaron.bentley at utoronto
Changed copy_multi to permit failure and return a tuple, tested missing required revisions
153
class InstallFailed(BzrError):
154
    def __init__(self, revisions):
1185.1.14 by Robert Collins
remove more duplicate merged hunks. Bad MERGE3, BAD.
155
        msg = "Could not install revisions:\n%s" % " ,".join(revisions)
156
        BzrError.__init__(self, msg)
974.1.30 by aaron.bentley at utoronto
Changed copy_multi to permit failure and return a tuple, tested missing required revisions
157
        self.revisions = revisions
1154 by Martin Pool
- fix imports for moved errors
158
159
160
class AmbiguousBase(BzrError):
161
    def __init__(self, bases):
162
        msg = "The correct base is unclear, becase %s are all equally close" %\
163
            ", ".join(bases)
164
        BzrError.__init__(self, msg)
165
        self.bases = bases
166
974.1.80 by Aaron Bentley
Improved merge error handling and testing
167
class NoCommits(BzrError):
168
    def __init__(self, branch):
169
        msg = "Branch %s has no commits." % branch
170
        BzrError.__init__(self, msg)
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
171
172
class UnlistableStore(BzrError):
173
    def __init__(self, store):
174
        BzrError.__init__(self, "Store %s is not listable" % store)
175
176
class UnlistableBranch(BzrError):
177
    def __init__(self, br):
178
        BzrError.__init__(self, "Stores for branch %s are not listable" % br)
1392 by Robert Collins
reinstate testfetch test case
179
180
181
from bzrlib.weave import WeaveError
1393.2.1 by John Arbash Meinel
Merged in split-storage-2 branch. Need to cleanup a little bit more still.
182
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
183
class TransportError(BzrError):
184
    """All errors thrown by Transport implementations should derive
185
    from this class.
186
    """
187
    def __init__(self, msg=None, orig_error=None):
188
        if msg is None and orig_error is not None:
189
            msg = str(orig_error)
190
        BzrError.__init__(self, msg)
191
        self.msg = msg
192
        self.orig_error = orig_error
193
194
# A set of semi-meaningful errors which can be thrown
195
class TransportNotPossible(TransportError):
196
    """This is for transports where a specific function is explicitly not
197
    possible. Such as pushing files to an HTTP server.
198
    """
199
    pass
200
201
class NonRelativePath(TransportError):
202
    """An absolute path was supplied, that could not be decoded into
203
    a relative path.
204
    """
205
    pass
206
207
class NoSuchFile(TransportError, IOError):
208
    """A get() was issued for a file that doesn't exist."""
1405 by Robert Collins
remove some of the upgrade code that was duplicated with inventory_entry, and give all inventory entries a weave
209
210
    def __str__(self):
211
        return self.msg
212
1185.11.9 by John Arbash Meinel
Most tests pass, some problems with unavailable socket recv
213
    def __init__(self, msg=None, orig_error=None):
214
        import errno
215
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
216
        IOError.__init__(self, errno.ENOENT, self.msg)
217
218
class FileExists(TransportError, OSError):
219
    """An operation was attempted, which would overwrite an entry,
220
    but overwritting is not supported.
221
222
    mkdir() can throw this, but put() just overwites existing files.
223
    """
224
    def __init__(self, msg=None, orig_error=None):
225
        import errno
226
        TransportError.__init__(self, msg=msg, orig_error=orig_error)
227
        OSError.__init__(self, errno.EEXIST, self.msg)
228
229
class PermissionDenied(TransportError):
230
    """An operation cannot succeed because of a lack of permissions."""
231
    pass
232
233
class ConnectionReset(TransportError):
234
    """The connection has been closed."""
235
    pass
236