messages.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # (c) 2005 Divmod, Inc. See LICENSE file for details
  2. class Message(object):
  3. message = ''
  4. message_args = ()
  5. def __init__(self, filename, loc, use_column=True):
  6. self.filename = filename
  7. self.lineno = loc.lineno
  8. self.col = getattr(loc, 'col_offset', None) if use_column else None
  9. def __str__(self):
  10. return '%s:%s: %s' % (self.filename, self.lineno, self.message % self.message_args)
  11. class UnusedImport(Message):
  12. message = 'W402 %r imported but unused'
  13. def __init__(self, filename, lineno, name):
  14. Message.__init__(self, filename, lineno)
  15. self.message_args = (name,)
  16. class RedefinedWhileUnused(Message):
  17. message = 'W801 redefinition of unused %r from line %r'
  18. def __init__(self, filename, lineno, name, orig_lineno):
  19. Message.__init__(self, filename, lineno)
  20. self.message_args = (name, orig_lineno)
  21. class ImportShadowedByLoopVar(Message):
  22. message = 'W403 import %r from line %r shadowed by loop variable'
  23. def __init__(self, filename, lineno, name, orig_lineno):
  24. Message.__init__(self, filename, lineno)
  25. self.message_args = (name, orig_lineno)
  26. class ImportStarUsed(Message):
  27. message = "W404 'from %s import *' used; unable to detect undefined names"
  28. def __init__(self, filename, lineno, modname):
  29. Message.__init__(self, filename, lineno)
  30. self.message_args = (modname,)
  31. class UndefinedName(Message):
  32. message = 'W802 undefined name %r'
  33. def __init__(self, filename, lineno, name):
  34. Message.__init__(self, filename, lineno)
  35. self.message_args = (name,)
  36. class UndefinedExport(Message):
  37. message = 'W803 undefined name %r in __all__'
  38. def __init__(self, filename, lineno, name):
  39. Message.__init__(self, filename, lineno)
  40. self.message_args = (name,)
  41. class UndefinedLocal(Message):
  42. message = "W804 local variable %r (defined in enclosing scope on line " \
  43. "%r) referenced before assignment"
  44. def __init__(self, filename, lineno, name, orig_lineno):
  45. Message.__init__(self, filename, lineno)
  46. self.message_args = (name, orig_lineno)
  47. class DuplicateArgument(Message):
  48. message = 'W805 duplicate argument %r in function definition'
  49. def __init__(self, filename, lineno, name):
  50. Message.__init__(self, filename, lineno)
  51. self.message_args = (name,)
  52. class RedefinedFunction(Message):
  53. message = 'W806 redefinition of function %r from line %r'
  54. def __init__(self, filename, lineno, name, orig_lineno):
  55. Message.__init__(self, filename, lineno)
  56. self.message_args = (name, orig_lineno)
  57. class LateFutureImport(Message):
  58. message = 'W405 future import(s) %r after other statements'
  59. def __init__(self, filename, lineno, names):
  60. Message.__init__(self, filename, lineno)
  61. self.message_args = (names,)
  62. class UnusedVariable(Message):
  63. """
  64. Indicates that a variable has been explicity assigned to but not actually
  65. used.
  66. """
  67. message = 'W806 local variable %r is assigned to but never used'
  68. def __init__(self, filename, lineno, names):
  69. Message.__init__(self, filename, lineno)
  70. self.message_args = (names,)