exception.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/usr/bin/env python3
  2. #
  3. # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
  4. # Copyright (C)2013-2024 The MMGen Project <mmgen@tuta.io>
  5. #
  6. # This program is free software: you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation, either version 3 of the License, or
  9. # (at your option) any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. # GNU General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU General Public License
  17. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. """
  19. exception: Exception classes for the MMGen suite
  20. """
  21. class MMGenError(Exception):
  22. def __init__(self,errno,strerror,stdout):
  23. self.mmcode = errno
  24. self.stdout = stdout
  25. super().__init__(strerror)
  26. def __repr__(self):
  27. return f'{type(self).__name__}({self.mmcode}):\n{self}'
  28. class MMGenSystemExit(MMGenError):
  29. def __repr__(self):
  30. return f'{type(self).__name__}({self.mmcode}): {self}'
  31. # 1: no hl, message only
  32. class UserNonConfirmation(Exception): mmcode = 1
  33. class BadAgeFormat(Exception): mmcode = 1
  34. class BadFilename(Exception): mmcode = 1
  35. class BadFileExtension(Exception): mmcode = 1
  36. class SocketError(Exception): mmcode = 1
  37. class UserAddressNotInWallet(Exception): mmcode = 1
  38. class MnemonicError(Exception): mmcode = 1
  39. class RangeError(Exception): mmcode = 1
  40. class FileNotFound(Exception): mmcode = 1
  41. class InvalidPasswdFormat(Exception): mmcode = 1
  42. class CfgFileParseError(Exception): mmcode = 1
  43. class UserOptError(Exception): mmcode = 1
  44. class NoLEDSupport(Exception): mmcode = 1
  45. class MsgFileFailedSID(Exception): mmcode = 1
  46. class TestSuiteException(Exception): mmcode = 1
  47. class TestSuiteSpawnedScriptException(Exception): mmcode = 1
  48. # 2: yellow hl, message only
  49. class InvalidTokenAddress(Exception): mmcode = 2
  50. class UnrecognizedTokenSymbol(Exception): mmcode = 2
  51. class TokenNotInBlockchain(Exception): mmcode = 2
  52. class TokenNotInWallet(Exception): mmcode = 2
  53. class BadTwComment(Exception): mmcode = 2
  54. class BadTwLabel(Exception): mmcode = 2
  55. class BaseConversionError(Exception): mmcode = 2
  56. class BaseConversionPadError(Exception): mmcode = 2
  57. class TransactionChainMismatch(Exception):mmcode = 2
  58. class ObjectInitError(Exception): mmcode = 2
  59. class ClassFlagsError(Exception): mmcode = 2
  60. class ExtensionModuleError(Exception): mmcode = 2
  61. class MoneroMMGenTXFileParseError(Exception): mmcode = 2
  62. class AutosignTXError(Exception): mmcode = 2
  63. class MMGenImportError(Exception): mmcode = 2
  64. # 3: yellow hl, 'MMGen Error' + exception + message
  65. class RPCFailure(Exception): mmcode = 3
  66. class RPCChainMismatch(Exception): mmcode = 3
  67. class BadTxSizeEstimate(Exception): mmcode = 3
  68. class MaxInputSizeExceeded(Exception): mmcode = 3
  69. class MaxFileSizeExceeded(Exception): mmcode = 3
  70. class MaxFeeExceeded(Exception): mmcode = 3
  71. class WalletFileError(Exception): mmcode = 3
  72. class HexadecimalStringError(Exception): mmcode = 3
  73. class SeedLengthError(Exception): mmcode = 3
  74. class PrivateKeyError(Exception): mmcode = 3
  75. class MMGenCalledProcessError(Exception): mmcode = 3
  76. class TestSuiteFatalException(Exception): mmcode = 3
  77. # 4: red hl, 'MMGen Fatal Error' + exception + message
  78. class BadMMGenTxID(Exception): mmcode = 4
  79. class IllegalWitnessFlagValue(Exception): mmcode = 4
  80. class TxHexParseError(Exception): mmcode = 4
  81. class TxHexMismatch(Exception): mmcode = 4
  82. class SubSeedNonceRangeExceeded(Exception): mmcode = 4