Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pyflakes/messages.py: 96%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2Provide the class Message and its subclasses.
3"""
6class Message:
7 message = ''
8 message_args = ()
10 def __init__(self, filename, loc):
11 self.filename = filename
12 self.lineno = loc.lineno
13 self.col = loc.col_offset
15 def __str__(self):
16 return '{}:{}:{}: {}'.format(self.filename, self.lineno, self.col+1,
17 self.message % self.message_args)
20class UnusedImport(Message):
21 message = '%r imported but unused'
23 def __init__(self, filename, loc, name):
24 Message.__init__(self, filename, loc)
25 self.message_args = (name,)
28class RedefinedWhileUnused(Message):
29 message = 'redefinition of unused %r from line %r'
31 def __init__(self, filename, loc, name, orig_loc):
32 Message.__init__(self, filename, loc)
33 self.message_args = (name, orig_loc.lineno)
36class ImportShadowedByLoopVar(Message):
37 message = 'import %r from line %r shadowed by loop variable'
39 def __init__(self, filename, loc, name, orig_loc):
40 Message.__init__(self, filename, loc)
41 self.message_args = (name, orig_loc.lineno)
44class ImportStarNotPermitted(Message):
45 message = "'from %s import *' only allowed at module level"
47 def __init__(self, filename, loc, modname):
48 Message.__init__(self, filename, loc)
49 self.message_args = (modname,)
52class ImportStarUsed(Message):
53 message = "'from %s import *' used; unable to detect undefined names"
55 def __init__(self, filename, loc, modname):
56 Message.__init__(self, filename, loc)
57 self.message_args = (modname,)
60class ImportStarUsage(Message):
61 message = "%r may be undefined, or defined from star imports: %s"
63 def __init__(self, filename, loc, name, from_list):
64 Message.__init__(self, filename, loc)
65 self.message_args = (name, from_list)
68class UndefinedName(Message):
69 message = 'undefined name %r'
71 def __init__(self, filename, loc, name):
72 Message.__init__(self, filename, loc)
73 self.message_args = (name,)
76class DoctestSyntaxError(Message):
77 message = 'syntax error in doctest'
79 def __init__(self, filename, loc, position):
80 Message.__init__(self, filename, loc)
81 self.lineno, self.col = position
82 self.message_args = ()
85class UndefinedExport(Message):
86 message = 'undefined name %r in __all__'
88 def __init__(self, filename, loc, name):
89 Message.__init__(self, filename, loc)
90 self.message_args = (name,)
93class UndefinedLocal(Message):
94 message = 'local variable %r {0} referenced before assignment'
96 default = 'defined in enclosing scope on line %r'
97 builtin = 'defined as a builtin'
99 def __init__(self, filename, loc, name, orig_loc):
100 Message.__init__(self, filename, loc)
101 if orig_loc is None:
102 self.message = self.message.format(self.builtin)
103 self.message_args = name
104 else:
105 self.message = self.message.format(self.default)
106 self.message_args = (name, orig_loc.lineno)
109class DuplicateArgument(Message):
110 message = 'duplicate argument %r in function definition'
112 def __init__(self, filename, loc, name):
113 Message.__init__(self, filename, loc)
114 self.message_args = (name,)
117class MultiValueRepeatedKeyLiteral(Message):
118 message = 'dictionary key %r repeated with different values'
120 def __init__(self, filename, loc, key):
121 Message.__init__(self, filename, loc)
122 self.message_args = (key,)
125class MultiValueRepeatedKeyVariable(Message):
126 message = 'dictionary key variable %s repeated with different values'
128 def __init__(self, filename, loc, key):
129 Message.__init__(self, filename, loc)
130 self.message_args = (key,)
133class LateFutureImport(Message):
134 message = 'from __future__ imports must occur at the beginning of the file'
137class FutureFeatureNotDefined(Message):
138 """An undefined __future__ feature name was imported."""
139 message = 'future feature %s is not defined'
141 def __init__(self, filename, loc, name): # pragma: <3.14 cover
142 Message.__init__(self, filename, loc)
143 self.message_args = (name,)
146class UnusedVariable(Message):
147 """
148 Indicates that a variable has been explicitly assigned to but not actually
149 used.
150 """
151 message = 'local variable %r is assigned to but never used'
153 def __init__(self, filename, loc, names):
154 Message.__init__(self, filename, loc)
155 self.message_args = (names,)
158class UnusedAnnotation(Message):
159 """
160 Indicates that a variable has been explicitly annotated to but not actually
161 used.
162 """
163 message = 'local variable %r is annotated but never used'
165 def __init__(self, filename, loc, names):
166 Message.__init__(self, filename, loc)
167 self.message_args = (names,)
170class UnusedIndirectAssignment(Message):
171 """A `global` or `nonlocal` statement where the name is never reassigned"""
172 message = '`%s %s` is unused: name is never assigned in scope'
174 def __init__(self, filename, loc, name):
175 Message.__init__(self, filename, loc)
176 self.message_args = (type(loc).__name__.lower(), name)
179class ReturnOutsideFunction(Message):
180 """
181 Indicates a return statement outside of a function/method.
182 """
183 message = '\'return\' outside function'
186class YieldOutsideFunction(Message):
187 """
188 Indicates a yield or yield from statement outside of a function/method.
189 """
190 message = '\'yield\' outside function'
193# For whatever reason, Python gives different error messages for these two. We
194# match the Python error message exactly.
195class ContinueOutsideLoop(Message):
196 """
197 Indicates a continue statement outside of a while or for loop.
198 """
199 message = '\'continue\' not properly in loop'
202class BreakOutsideLoop(Message):
203 """
204 Indicates a break statement outside of a while or for loop.
205 """
206 message = '\'break\' outside loop'
209class DefaultExceptNotLast(Message):
210 """
211 Indicates an except: block as not the last exception handler.
212 """
213 message = 'default \'except:\' must be last'
216class TwoStarredExpressions(Message):
217 """
218 Two or more starred expressions in an assignment (a, *b, *c = d).
219 """
220 message = 'two starred expressions in assignment'
223class TooManyExpressionsInStarredAssignment(Message):
224 """
225 Too many expressions in an assignment with star-unpacking
226 """
227 message = 'too many expressions in star-unpacking assignment'
230class IfTuple(Message):
231 """
232 Conditional test is a non-empty tuple literal, which are always True.
233 """
234 message = '\'if tuple literal\' is always true, perhaps remove accidental comma?'
237class AssertTuple(Message):
238 """
239 Assertion test is a non-empty tuple literal, which are always True.
240 """
241 message = 'assertion is always true, perhaps remove parentheses?'
244class ForwardAnnotationSyntaxError(Message):
245 message = 'syntax error in forward annotation %r'
247 def __init__(self, filename, loc, annotation):
248 Message.__init__(self, filename, loc)
249 self.message_args = (annotation,)
252class RaiseNotImplemented(Message):
253 message = "'raise NotImplemented' should be 'raise NotImplementedError'"
256class InvalidPrintSyntax(Message):
257 message = 'use of >> is invalid with print function'
260class IsLiteral(Message):
261 message = 'use ==/!= to compare constant literals (str, bytes, int, float, tuple)'
264class FStringMissingPlaceholders(Message):
265 message = 'f-string is missing placeholders'
268class TStringMissingPlaceholders(Message):
269 message = 't-string is missing placeholders'
272class StringDotFormatExtraPositionalArguments(Message):
273 message = "'...'.format(...) has unused arguments at position(s): %s"
275 def __init__(self, filename, loc, extra_positions):
276 Message.__init__(self, filename, loc)
277 self.message_args = (extra_positions,)
280class StringDotFormatExtraNamedArguments(Message):
281 message = "'...'.format(...) has unused named argument(s): %s"
283 def __init__(self, filename, loc, extra_keywords):
284 Message.__init__(self, filename, loc)
285 self.message_args = (extra_keywords,)
288class StringDotFormatMissingArgument(Message):
289 message = "'...'.format(...) is missing argument(s) for placeholder(s): %s"
291 def __init__(self, filename, loc, missing_arguments):
292 Message.__init__(self, filename, loc)
293 self.message_args = (missing_arguments,)
296class StringDotFormatMixingAutomatic(Message):
297 message = "'...'.format(...) mixes automatic and manual numbering"
300class StringDotFormatInvalidFormat(Message):
301 message = "'...'.format(...) has invalid format string: %s"
303 def __init__(self, filename, loc, error):
304 Message.__init__(self, filename, loc)
305 self.message_args = (error,)
308class PercentFormatInvalidFormat(Message):
309 message = "'...' %% ... has invalid format string: %s"
311 def __init__(self, filename, loc, error):
312 Message.__init__(self, filename, loc)
313 self.message_args = (error,)
316class PercentFormatMixedPositionalAndNamed(Message):
317 message = "'...' %% ... has mixed positional and named placeholders"
320class PercentFormatUnsupportedFormatCharacter(Message):
321 message = "'...' %% ... has unsupported format character %r"
323 def __init__(self, filename, loc, c):
324 Message.__init__(self, filename, loc)
325 self.message_args = (c,)
328class PercentFormatPositionalCountMismatch(Message):
329 message = "'...' %% ... has %d placeholder(s) but %d substitution(s)"
331 def __init__(self, filename, loc, n_placeholders, n_substitutions):
332 Message.__init__(self, filename, loc)
333 self.message_args = (n_placeholders, n_substitutions)
336class PercentFormatExtraNamedArguments(Message):
337 message = "'...' %% ... has unused named argument(s): %s"
339 def __init__(self, filename, loc, extra_keywords):
340 Message.__init__(self, filename, loc)
341 self.message_args = (extra_keywords,)
344class PercentFormatMissingArgument(Message):
345 message = "'...' %% ... is missing argument(s) for placeholder(s): %s"
347 def __init__(self, filename, loc, missing_arguments):
348 Message.__init__(self, filename, loc)
349 self.message_args = (missing_arguments,)
352class PercentFormatExpectedMapping(Message):
353 message = "'...' %% ... expected mapping but got sequence"
356class PercentFormatExpectedSequence(Message):
357 message = "'...' %% ... expected sequence but got mapping"
360class PercentFormatStarRequiresSequence(Message):
361 message = "'...' %% ... `*` specifier requires sequence"
364class EagerUseOfLazyImport(Message):
365 message = 'eager use of lazily imported %r from line %r'
367 def __init__(self, filename, loc, name, orig_loc): # pragma: >=3.15 cover
368 Message.__init__(self, filename, loc)
369 self.message_args = (name, orig_loc.lineno)
372class LazyImportStarNotPermitted(Message):
373 message = "'lazy from %s import *' is not allowed"
375 def __init__(self, filename, loc, modname): # pragma: >=3.15 cover
376 Message.__init__(self, filename, loc)
377 self.message_args = (modname,)
380class LazyImportNotAtModuleScope(Message):
381 message = 'lazy import must be at module scope'