2 Provide the class Message and its subclasses.
10 def __init__(self
, filename
, loc
):
11 self
.filename
= filename
12 if type( loc
) == int:
15 self
.lineno
= loc
.lineno
16 self
.col
= getattr(loc
, 'col_offset', 0)
19 return '%s:%s: %s' % (self
.filename
, self
.lineno
,
20 self
.message
% self
.message_args
)
23 class UnusedImport(Message
):
24 message
= '%r imported but unused'
26 def __init__(self
, filename
, loc
, name
):
27 Message
.__init
__(self
, filename
, loc
)
28 self
.message_args
= (name
,)
31 class RedefinedWhileUnused(Message
):
32 message
= 'redefinition of unused %r from line %r'
34 def __init__(self
, filename
, loc
, name
, orig_loc
):
35 Message
.__init
__(self
, filename
, loc
)
36 if type( orig_loc
) == int:
37 self
.message_args
= (name
, orig_loc
)
39 self
.message_args
= (name
, orig_loc
.lineno
)
42 class RedefinedInListComp(Message
):
43 message
= 'list comprehension redefines %r from line %r'
45 def __init__(self
, filename
, loc
, name
, orig_loc
):
46 Message
.__init
__(self
, filename
, loc
)
47 if type( orig_loc
) == int:
48 self
.message_args
= (name
, orig_loc
)
50 self
.message_args
= (name
, orig_loc
.lineno
)
53 class ImportShadowedByLoopVar(Message
):
54 message
= 'import %r from line %r shadowed by loop variable'
56 def __init__(self
, filename
, loc
, name
, orig_loc
):
57 Message
.__init
__(self
, filename
, loc
)
58 if type( orig_loc
) == int:
59 self
.message_args
= (name
, orig_loc
)
61 self
.message_args
= (name
, orig_loc
.lineno
)
64 class ImportStarUsed(Message
):
65 message
= "'from %s import *' used; unable to detect undefined names"
67 def __init__(self
, filename
, loc
, modname
):
68 Message
.__init
__(self
, filename
, loc
)
69 self
.message_args
= (modname
,)
72 class UndefinedName(Message
):
73 message
= 'undefined name %r'
75 def __init__(self
, filename
, loc
, name
):
76 Message
.__init
__(self
, filename
, loc
)
77 self
.message_args
= (name
,)
80 class DoctestSyntaxError(Message
):
81 message
= 'syntax error in doctest'
83 def __init__(self
, filename
, loc
, position
=None):
84 Message
.__init
__(self
, filename
, loc
)
86 (self
.lineno
, self
.col
) = position
87 if type( self
.lineno
) != int:
88 self
.lineno
= self
.lineno
.lineno
89 self
.message_args
= ()
92 class UndefinedExport(Message
):
93 message
= 'undefined name %r in __all__'
95 def __init__(self
, filename
, loc
, name
):
96 Message
.__init
__(self
, filename
, loc
)
97 self
.message_args
= (name
,)
100 class UndefinedLocal(Message
):
101 message
= ('local variable %r (defined in enclosing scope on line %r) '
102 'referenced before assignment')
104 def __init__(self
, filename
, loc
, name
, orig_loc
):
105 Message
.__init
__(self
, filename
, loc
)
106 if type( orig_loc
) == int:
107 self
.message_args
= (name
, orig_loc
)
109 self
.message_args
= (name
, orig_loc
.lineno
)
112 class DuplicateArgument(Message
):
113 message
= 'duplicate argument %r in function definition'
115 def __init__(self
, filename
, loc
, name
):
116 Message
.__init
__(self
, filename
, loc
)
117 self
.message_args
= (name
,)
120 class Redefined(Message
):
121 message
= 'redefinition of %r from line %r'
123 def __init__(self
, filename
, loc
, name
, orig_loc
):
124 Message
.__init
__(self
, filename
, loc
)
125 if type( orig_loc
) == int:
126 self
.message_args
= (name
, orig_loc
)
128 self
.message_args
= (name
, orig_loc
.lineno
)
131 class LateFutureImport(Message
):
132 message
= 'future import(s) %r after other statements'
134 def __init__(self
, filename
, loc
, names
):
135 Message
.__init
__(self
, filename
, loc
)
136 self
.message_args
= (names
,)
139 class UnusedVariable(Message
):
141 Indicates that a variable has been explicity assigned to but not actually
144 message
= 'local variable %r is assigned to but never used'
146 def __init__(self
, filename
, loc
, names
):
147 Message
.__init
__(self
, filename
, loc
)
148 self
.message_args
= (names
,)