__init__.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # -*- coding: utf-8 -*-
  2. import subprocess
  3. class DBError(Exception):
  4. pass
  5. class FatalError(Exception):
  6. pass
  7. class FlagError(Exception):
  8. pass
  9. class GrassError(Exception):
  10. pass
  11. class ImplementationError(Exception):
  12. pass
  13. class OpenError(Exception):
  14. pass
  15. class ParameterError(Exception):
  16. pass
  17. class ScriptError(Exception):
  18. pass
  19. class Usage(Exception):
  20. pass
  21. # TODO: we inherit from subprocess to be aligned with check_call but it is needed?
  22. class CalledModuleError(subprocess.CalledProcessError):
  23. """Raised when a called module ends with error (non-zero return code)
  24. :param module: module name
  25. :param code: some code snipped which contains parameters
  26. :param rc: process returncode
  27. :param error: errors provided by the module (stderr)
  28. """
  29. def __init__(self, module, code, returncode, errors=None):
  30. super(CalledModuleError, self).__init__(returncode, module)
  31. msg = _("Module run %s %s ended with error") % (module, code)
  32. msg += _("\nProcess ended with non-zero return code %s") % returncode
  33. if errors:
  34. msg += _(". See the following errors:\n%s") % errors
  35. else:
  36. # here could be written "above" but it wouldn't work in some cases
  37. # e.g., for testing framework
  38. msg += _(". See errors in the (error) output.")
  39. self.msg = msg
  40. # TODO: handle other parameters
  41. def __str__(self):
  42. return self.msg