messages.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 = '%r imported but unused'
  13. def __init__(self, filename, loc, name):
  14. Message.__init__(self, filename, loc, use_column=False)
  15. self.message_args = (name,)
  16. class RedefinedWhileUnused(Message):
  17. message = 'redefinition of unused %r from line %r'
  18. def __init__(self, filename, loc, name, orig_loc):
  19. Message.__init__(self, filename, loc)
  20. self.message_args = (name, orig_loc.lineno)
  21. class ImportShadowedByLoopVar(Message):
  22. message = 'import %r from line %r shadowed by loop variable'
  23. def __init__(self, filename, loc, name, orig_loc):
  24. Message.__init__(self, filename, loc)
  25. self.message_args = (name, orig_loc.lineno)
  26. class ImportStarUsed(Message):
  27. message = "'from %s import *' used; unable to detect undefined names"
  28. def __init__(self, filename, loc, modname):
  29. Message.__init__(self, filename, loc)
  30. self.message_args = (modname,)
  31. class UndefinedName(Message):
  32. message = 'undefined name %r'
  33. def __init__(self, filename, loc, name):
  34. Message.__init__(self, filename, loc)
  35. self.message_args = (name,)
  36. class UndefinedExport(Message):
  37. message = 'undefined name %r in __all__'
  38. def __init__(self, filename, loc, name):
  39. Message.__init__(self, filename, loc)
  40. self.message_args = (name,)
  41. class UndefinedLocal(Message):
  42. message = "local variable %r (defined in enclosing scope on line %r) referenced before assignment"
  43. def __init__(self, filename, loc, name, orig_loc):
  44. Message.__init__(self, filename, loc)
  45. self.message_args = (name, orig_loc.lineno)
  46. class DuplicateArgument(Message):
  47. message = 'duplicate argument %r in function definition'
  48. def __init__(self, filename, loc, name):
  49. Message.__init__(self, filename, loc)
  50. self.message_args = (name,)
  51. class RedefinedFunction(Message):
  52. message = 'redefinition of function %r from line %r'
  53. def __init__(self, filename, loc, name, orig_loc):
  54. Message.__init__(self, filename, loc)
  55. self.message_args = (name, orig_loc.lineno)
  56. class LateFutureImport(Message):
  57. message = 'future import(s) %r after other statements'
  58. def __init__(self, filename, loc, names):
  59. Message.__init__(self, filename, loc)
  60. self.message_args = (names,)
  61. class UnusedVariable(Message):
  62. """
  63. Indicates that a variable has been explicity assigned to but not actually
  64. used.
  65. """
  66. message = 'local variable %r is assigned to but never used'
  67. def __init__(self, filename, loc, names):
  68. Message.__init__(self, filename, loc)
  69. self.message_args = (names,)