~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/errors.py

  • Committer: Vincent Ladeuil
  • Date: 2011-06-15 11:36:05 UTC
  • mto: This revision was merged to the branch mainline in revision 5975.
  • Revision ID: v.ladeuil+lp@free.fr-20110615113605-p7zyyfry9wy1hquc
Make ContentConflict resolution more robust

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
from bzrlib import (
21
21
    osutils,
22
22
    symbol_versioning,
23
 
    i18n,
24
 
    trace,
25
23
    )
26
 
from bzrlib.i18n import gettext
27
24
from bzrlib.patches import (
28
25
    MalformedHunkHeader,
29
26
    MalformedLine,
143
140
        """Return format string for this exception or None"""
144
141
        fmt = getattr(self, '_fmt', None)
145
142
        if fmt is not None:
146
 
            i18n.install()
147
 
            unicode_fmt = unicode(fmt) #_fmt strings should be ascii
148
 
            if type(fmt) == unicode:
149
 
                trace.mutter("Unicode strings in error.fmt are deprecated")
150
 
            return gettext(unicode_fmt)
 
143
            return fmt
151
144
        fmt = getattr(self, '__doc__', None)
152
145
        if fmt is not None:
153
146
            symbol_versioning.warn("%s uses its docstring as a format, "
628
621
 
629
622
    _fmt = 'Unsupported protocol for url "%(path)s"%(extra)s'
630
623
 
631
 
    def __init__(self, url, extra=""):
 
624
    def __init__(self, url, extra):
632
625
        PathError.__init__(self, url, extra=extra)
633
626
 
634
627
 
1666
1659
 
1667
1660
    def __init__(self, exc_info):
1668
1661
        import traceback
1669
 
        # GZ 2010-08-10: Cycle with exc_tb/exc_info affects at least one test
1670
1662
        self.exc_type, self.exc_value, self.exc_tb = exc_info
1671
1663
        self.exc_info = exc_info
1672
1664
        traceback_strings = traceback.format_exception(
1711
1703
    _fmt = "Connection closed: %(msg)s %(orig_error)s"
1712
1704
 
1713
1705
 
1714
 
class ConnectionTimeout(ConnectionError):
1715
 
 
1716
 
    _fmt = "Connection Timeout: %(msg)s%(orig_error)s"
1717
 
 
1718
 
 
1719
1706
class InvalidRange(TransportError):
1720
1707
 
1721
1708
    _fmt = "Invalid range access in %(path)s at %(offset)s: %(msg)s"
1750
1737
        InvalidHttpResponse.__init__(self, path, msg)
1751
1738
 
1752
1739
 
1753
 
class HttpBoundaryMissing(InvalidHttpResponse):
1754
 
    """A multipart response ends with no boundary marker.
1755
 
 
1756
 
    This is a special case caused by buggy proxies, described in
1757
 
    <https://bugs.launchpad.net/bzr/+bug/198646>.
1758
 
    """
1759
 
 
1760
 
    _fmt = "HTTP MIME Boundary missing for %(path)s: %(msg)s"
1761
 
 
1762
 
    def __init__(self, path, msg):
1763
 
        InvalidHttpResponse.__init__(self, path, msg)
1764
 
 
1765
 
 
1766
1740
class InvalidHttpContentType(InvalidHttpResponse):
1767
1741
 
1768
1742
    _fmt = 'Invalid http Content-type "%(ctype)s" for %(path)s: %(msg)s'
1796
1770
    _fmt = "Working tree has conflicts."
1797
1771
 
1798
1772
 
1799
 
class ConfigContentError(BzrError):
1800
 
 
1801
 
    _fmt = "Config file %(filename)s is not UTF-8 encoded\n"
1802
 
 
1803
 
    def __init__(self, filename):
1804
 
        BzrError.__init__(self)
1805
 
        self.filename = filename
1806
 
 
1807
 
 
1808
1773
class ParseConfigError(BzrError):
1809
1774
 
1810
1775
    _fmt = "Error(s) parsing config file %(filename)s:\n%(errors)s"
1815
1780
        self.errors = '\n'.join(e.msg for e in errors)
1816
1781
 
1817
1782
 
1818
 
class ConfigOptionValueError(BzrError):
1819
 
 
1820
 
    _fmt = """Bad value "%(value)s" for option "%(name)s"."""
1821
 
 
1822
 
    def __init__(self, name, value):
1823
 
        BzrError.__init__(self, name=name, value=value)
1824
 
 
1825
 
 
1826
1783
class NoEmailInUsername(BzrError):
1827
1784
 
1828
1785
    _fmt = "%(username)r does not seem to contain a reasonable email address"
1834
1791
 
1835
1792
class SigningFailed(BzrError):
1836
1793
 
1837
 
    _fmt = 'Failed to GPG sign data with command "%(command_line)s"'
 
1794
    _fmt = 'Failed to gpg sign data with command "%(command_line)s"'
1838
1795
 
1839
1796
    def __init__(self, command_line):
1840
1797
        BzrError.__init__(self, command_line=command_line)
1841
1798
 
1842
1799
 
1843
 
class SignatureVerificationFailed(BzrError):
1844
 
 
1845
 
    _fmt = 'Failed to verify GPG signature data with error "%(error)s"'
1846
 
 
1847
 
    def __init__(self, error):
1848
 
        BzrError.__init__(self, error=error)
1849
 
 
1850
 
 
1851
 
class DependencyNotPresent(BzrError):
1852
 
 
1853
 
    _fmt = 'Unable to import library "%(library)s": %(error)s'
1854
 
 
1855
 
    def __init__(self, library, error):
1856
 
        BzrError.__init__(self, library=library, error=error)
1857
 
 
1858
 
 
1859
 
class GpgmeNotInstalled(DependencyNotPresent):
1860
 
 
1861
 
    _fmt = 'python-gpgme is not installed, it is needed to verify signatures'
1862
 
 
1863
 
    def __init__(self, error):
1864
 
        DependencyNotPresent.__init__(self, 'gpgme', error)
1865
 
 
1866
 
 
1867
1800
class WorkingTreeNotRevision(BzrError):
1868
1801
 
1869
1802
    _fmt = ("The working tree for %(basedir)s has changed since"
2122
2055
    _fmt = "Parameter %(param)s contains a newline."
2123
2056
 
2124
2057
 
 
2058
class DependencyNotPresent(BzrError):
 
2059
 
 
2060
    _fmt = 'Unable to import library "%(library)s": %(error)s'
 
2061
 
 
2062
    def __init__(self, library, error):
 
2063
        BzrError.__init__(self, library=library, error=error)
 
2064
 
 
2065
 
2125
2066
class ParamikoNotPresent(DependencyNotPresent):
2126
2067
 
2127
2068
    _fmt = "Unable to import paramiko (required for sftp support): %(error)s"
2362
2303
    """
2363
2304
 
2364
2305
 
2365
 
class GhostTagsNotSupported(BzrError):
2366
 
 
2367
 
    _fmt = "Ghost tags not supported by format %(format)r."
2368
 
 
2369
 
    def __init__(self, format):
2370
 
        self.format = format
2371
 
 
2372
 
 
2373
2306
class BinaryFile(BzrError):
2374
2307
 
2375
2308
    _fmt = "File is binary but should be text."
2805
2738
    _fmt = "Container has multiple records with the same name: %(name)s"
2806
2739
 
2807
2740
    def __init__(self, name):
2808
 
        self.name = name.decode("utf-8")
 
2741
        self.name = name
2809
2742
 
2810
2743
 
2811
2744
class NoDestinationAddress(InternalBzrError):
3345
3278
    def __init__(self, source, target):
3346
3279
        self.source = source
3347
3280
        self.target = target
3348
 
 
3349
 
 
3350
 
class HpssVfsRequestNotAllowed(BzrError):
3351
 
 
3352
 
    _fmt = ("VFS requests over the smart server are not allowed. Encountered: "
3353
 
            "%(method)s, %(arguments)s.")
3354
 
 
3355
 
    def __init__(self, method, arguments):
3356
 
        self.method = method
3357
 
        self.arguments = arguments