Mercurial > public > mercurial-scm > hg-stable
diff mercurial/error.py @ 51304:f15cb5111a1e
pytype: move some type comment to proper annotation
We support direct type annotations now, while pytype is starting to complains
about them.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 19 Dec 2023 21:29:34 +0100 |
parents | 81224afd938d |
children | 8b2ea2246a5f |
line wrap: on
line diff
--- a/mercurial/error.py Wed Dec 20 20:13:22 2023 +0100 +++ b/mercurial/error.py Tue Dec 19 21:29:34 2023 +0100 @@ -40,8 +40,7 @@ ] -def _tobytes(exc): - # type: (...) -> bytes +def _tobytes(exc) -> bytes: """Byte-stringify exception in the same way as BaseException_str()""" if not exc.args: return b'' @@ -68,8 +67,7 @@ coarse_exit_code = None detailed_exit_code = None - def __init__(self, message, hint=None): - # type: (bytes, Optional[bytes]) -> None + def __init__(self, message: bytes, hint: Optional[bytes] = None) -> None: self.message = message self.hint = hint # Pass the message into the Exception constructor to help extensions @@ -79,15 +77,13 @@ def __bytes__(self): return self.message - def __str__(self): - # type: () -> str + def __str__(self) -> str: # the output would be unreadable if the message was translated, # but do not replace it with encoding.strfromlocal(), which # may raise another exception. return pycompat.sysstr(self.__bytes__()) - def format(self): - # type: () -> bytes + def format(self) -> bytes: from .i18n import _ message = _(b"abort: %s\n") % self.message @@ -114,8 +110,7 @@ class SidedataHashError(RevlogError): - def __init__(self, key, expected, got): - # type: (int, bytes, bytes) -> None + def __init__(self, key: int, expected: bytes, got: bytes) -> None: self.hint = None self.sidedatakey = key self.expecteddigest = expected @@ -127,8 +122,7 @@ class LookupError(RevlogError, KeyError): - def __init__(self, name, index, message): - # type: (bytes, bytes, bytes) -> None + def __init__(self, name: bytes, index: bytes, message: bytes) -> None: self.name = name self.index = index # this can't be called 'message' because at least some installs of @@ -165,8 +159,7 @@ class CommandError(Exception): """Exception raised on errors in parsing the command line.""" - def __init__(self, command, message): - # type: (Optional[bytes], bytes) -> None + def __init__(self, command: Optional[bytes], message: bytes) -> None: self.command = command self.message = message super(CommandError, self).__init__() @@ -177,8 +170,11 @@ class UnknownCommand(Exception): """Exception raised if command is not in the command table.""" - def __init__(self, command, all_commands=None): - # type: (bytes, Optional[List[bytes]]) -> None + def __init__( + self, + command: bytes, + all_commands: Optional[List[bytes]] = None, + ) -> None: self.command = command self.all_commands = all_commands super(UnknownCommand, self).__init__() @@ -189,8 +185,7 @@ class AmbiguousCommand(Exception): """Exception raised if command shortcut matches more than one command.""" - def __init__(self, prefix, matches): - # type: (bytes, List[bytes]) -> None + def __init__(self, prefix: bytes, matches: List[bytes]) -> None: self.prefix = prefix self.matches = matches super(AmbiguousCommand, self).__init__() @@ -201,8 +196,7 @@ class WorkerError(Exception): """Exception raised when a worker process dies.""" - def __init__(self, status_code): - # type: (int) -> None + def __init__(self, status_code: int) -> None: self.status_code = status_code # Pass status code to superclass just so it becomes part of __bytes__ super(WorkerError, self).__init__(status_code) @@ -216,8 +210,7 @@ coarse_exit_code = 1 detailed_exit_code = 240 - def format(self): - # type: () -> bytes + def format(self) -> bytes: from .i18n import _ message = _(b"%s\n") % self.message @@ -229,8 +222,7 @@ class ConflictResolutionRequired(InterventionRequired): """Exception raised when a continuable command required merge conflict resolution.""" - def __init__(self, opname): - # type: (bytes) -> None + def __init__(self, opname: bytes) -> None: from .i18n import _ self.opname = opname @@ -299,13 +291,16 @@ detailed_exit_code = 30 - def __init__(self, message, location=None, hint=None): - # type: (bytes, Optional[bytes], Optional[bytes]) -> None + def __init__( + self, + message: bytes, + location: Optional[bytes] = None, + hint: Optional[bytes] = None, + ) -> None: super(ConfigError, self).__init__(message, hint=hint) self.location = location - def format(self): - # type: () -> bytes + def format(self) -> bytes: from .i18n import _ if self.location is not None: @@ -354,8 +349,11 @@ class OutOfBandError(RemoteError): """Exception raised when a remote repo reports failure""" - def __init__(self, message=None, hint=None): - # type: (Optional[bytes], Optional[bytes]) -> None + def __init__( + self, + message: Optional[bytes] = None, + hint: Optional[bytes] = None, + ): from .i18n import _ if message: @@ -371,13 +369,16 @@ detailed_exit_code = 10 - def __init__(self, message, location=None, hint=None): - # type: (bytes, Optional[Union[bytes, int]], Optional[bytes]) -> None + def __init__( + self, + message: bytes, + location: Optional[Union[bytes, int]] = None, + hint: Optional[bytes] = None, + ): super(ParseError, self).__init__(message, hint=hint) self.location = location - def format(self): - # type: () -> bytes + def format(self) -> bytes: from .i18n import _ if self.location is not None: @@ -404,16 +405,14 @@ __bytes__ = _tobytes -def getsimilar(symbols, value): - # type: (Iterable[bytes], bytes) -> List[bytes] +def getsimilar(symbols: Iterable[bytes], value: bytes) -> List[bytes]: sim = lambda x: difflib.SequenceMatcher(None, value, x).ratio() # The cutoff for similarity here is pretty arbitrary. It should # probably be investigated and tweaked. return [s for s in symbols if sim(s) > 0.6] -def similarity_hint(similar): - # type: (List[bytes]) -> Optional[bytes] +def similarity_hint(similar: List[bytes]) -> Optional[bytes]: from .i18n import _ if len(similar) == 1: @@ -428,8 +427,7 @@ class UnknownIdentifier(ParseError): """Exception raised when a {rev,file}set references an unknown identifier""" - def __init__(self, function, symbols): - # type: (bytes, Iterable[bytes]) -> None + def __init__(self, function: bytes, symbols: Iterable[bytes]) -> None: from .i18n import _ similar = getsimilar(symbols, function) @@ -463,16 +461,14 @@ class StdioError(IOError): """Raised if I/O to stdout or stderr fails""" - def __init__(self, err): - # type: (IOError) -> None + def __init__(self, err: IOError) -> None: IOError.__init__(self, err.errno, err.strerror) # no __bytes__() because error message is derived from the standard IOError class UnsupportedMergeRecords(Abort): - def __init__(self, recordtypes): - # type: (Iterable[bytes]) -> None + def __init__(self, recordtypes: Iterable[bytes]) -> None: from .i18n import _ self.recordtypes = sorted(recordtypes) @@ -490,15 +486,24 @@ class UnknownVersion(Abort): """generic exception for aborting from an encounter with an unknown version""" - def __init__(self, msg, hint=None, version=None): - # type: (bytes, Optional[bytes], Optional[bytes]) -> None + def __init__( + self, + msg: bytes, + hint: Optional[bytes] = None, + version: Optional[bytes] = None, + ) -> None: self.version = version super(UnknownVersion, self).__init__(msg, hint=hint) class LockError(IOError): - def __init__(self, errno, strerror, filename, desc): - # _type: (int, str, bytes, bytes) -> None + def __init__( + self, + errno: int, + strerror: str, + filename: bytes, + desc: Optional[bytes], + ) -> None: IOError.__init__(self, errno, strerror, filename) self.desc = desc @@ -506,8 +511,15 @@ class LockHeld(LockError): - def __init__(self, errno, filename, desc, locker): + def __init__( + self, + errno: int, + filename: bytes, + desc: Optional[bytes], + locker, + ): LockError.__init__(self, errno, 'Lock held', filename, desc) + self.filename: bytes = filename self.locker = locker @@ -544,8 +556,7 @@ class ProgrammingError(Hint, RuntimeError): """Raised if a mercurial (core or extension) developer made a mistake""" - def __init__(self, msg, *args, **kwargs): - # type: (AnyStr, Any, Any) -> None + def __init__(self, msg: AnyStr, *args, **kwargs): # On Python 3, turn the message back into a string since this is # an internal-only error that won't be printed except in a # stack traces. @@ -622,8 +633,7 @@ Also contains the tombstone data substituted for the uncensored data. """ - def __init__(self, filename, node, tombstone): - # type: (bytes, bytes, bytes) -> None + def __init__(self, filename: bytes, node: bytes, tombstone: bytes): from .node import short StorageError.__init__(self, b'%s:%s' % (filename, short(node))) @@ -685,7 +695,10 @@ The error is a formatter string and an optional iterable of arguments. """ - def __init__(self, message, args=None): - # type: (bytes, Optional[Sequence[bytes]]) -> None + def __init__( + self, + message: bytes, + args: Optional[Sequence[bytes]] = None, + ) -> None: self.message = message self.messageargs = args