Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pyflakes/messages.py: 97%

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

193 statements  

1""" 

2Provide the class Message and its subclasses. 

3""" 

4 

5 

6class Message: 

7 message = '' 

8 message_args = () 

9 

10 def __init__(self, filename, loc): 

11 self.filename = filename 

12 self.lineno = loc.lineno 

13 self.col = loc.col_offset 

14 

15 def __str__(self): 

16 return '{}:{}:{}: {}'.format(self.filename, self.lineno, self.col+1, 

17 self.message % self.message_args) 

18 

19 

20class UnusedImport(Message): 

21 message = '%r imported but unused' 

22 

23 def __init__(self, filename, loc, name): 

24 Message.__init__(self, filename, loc) 

25 self.message_args = (name,) 

26 

27 

28class RedefinedWhileUnused(Message): 

29 message = 'redefinition of unused %r from line %r' 

30 

31 def __init__(self, filename, loc, name, orig_loc): 

32 Message.__init__(self, filename, loc) 

33 self.message_args = (name, orig_loc.lineno) 

34 

35 

36class ImportShadowedByLoopVar(Message): 

37 message = 'import %r from line %r shadowed by loop variable' 

38 

39 def __init__(self, filename, loc, name, orig_loc): 

40 Message.__init__(self, filename, loc) 

41 self.message_args = (name, orig_loc.lineno) 

42 

43 

44class ImportStarNotPermitted(Message): 

45 message = "'from %s import *' only allowed at module level" 

46 

47 def __init__(self, filename, loc, modname): 

48 Message.__init__(self, filename, loc) 

49 self.message_args = (modname,) 

50 

51 

52class ImportStarUsed(Message): 

53 message = "'from %s import *' used; unable to detect undefined names" 

54 

55 def __init__(self, filename, loc, modname): 

56 Message.__init__(self, filename, loc) 

57 self.message_args = (modname,) 

58 

59 

60class ImportStarUsage(Message): 

61 message = "%r may be undefined, or defined from star imports: %s" 

62 

63 def __init__(self, filename, loc, name, from_list): 

64 Message.__init__(self, filename, loc) 

65 self.message_args = (name, from_list) 

66 

67 

68class UndefinedName(Message): 

69 message = 'undefined name %r' 

70 

71 def __init__(self, filename, loc, name): 

72 Message.__init__(self, filename, loc) 

73 self.message_args = (name,) 

74 

75 

76class DoctestSyntaxError(Message): 

77 message = 'syntax error in doctest' 

78 

79 def __init__(self, filename, loc, position=None): 

80 Message.__init__(self, filename, loc) 

81 if position: 

82 (self.lineno, self.col) = position 

83 self.message_args = () 

84 

85 

86class UndefinedExport(Message): 

87 message = 'undefined name %r in __all__' 

88 

89 def __init__(self, filename, loc, name): 

90 Message.__init__(self, filename, loc) 

91 self.message_args = (name,) 

92 

93 

94class UndefinedLocal(Message): 

95 message = 'local variable %r {0} referenced before assignment' 

96 

97 default = 'defined in enclosing scope on line %r' 

98 builtin = 'defined as a builtin' 

99 

100 def __init__(self, filename, loc, name, orig_loc): 

101 Message.__init__(self, filename, loc) 

102 if orig_loc is None: 

103 self.message = self.message.format(self.builtin) 

104 self.message_args = name 

105 else: 

106 self.message = self.message.format(self.default) 

107 self.message_args = (name, orig_loc.lineno) 

108 

109 

110class DuplicateArgument(Message): 

111 message = 'duplicate argument %r in function definition' 

112 

113 def __init__(self, filename, loc, name): 

114 Message.__init__(self, filename, loc) 

115 self.message_args = (name,) 

116 

117 

118class MultiValueRepeatedKeyLiteral(Message): 

119 message = 'dictionary key %r repeated with different values' 

120 

121 def __init__(self, filename, loc, key): 

122 Message.__init__(self, filename, loc) 

123 self.message_args = (key,) 

124 

125 

126class MultiValueRepeatedKeyVariable(Message): 

127 message = 'dictionary key variable %s repeated with different values' 

128 

129 def __init__(self, filename, loc, key): 

130 Message.__init__(self, filename, loc) 

131 self.message_args = (key,) 

132 

133 

134class LateFutureImport(Message): 

135 message = 'from __future__ imports must occur at the beginning of the file' 

136 

137 

138class FutureFeatureNotDefined(Message): 

139 """An undefined __future__ feature name was imported.""" 

140 message = 'future feature %s is not defined' 

141 

142 def __init__(self, filename, loc, name): 

143 Message.__init__(self, filename, loc) 

144 self.message_args = (name,) 

145 

146 

147class UnusedVariable(Message): 

148 """ 

149 Indicates that a variable has been explicitly assigned to but not actually 

150 used. 

151 """ 

152 message = 'local variable %r is assigned to but never used' 

153 

154 def __init__(self, filename, loc, names): 

155 Message.__init__(self, filename, loc) 

156 self.message_args = (names,) 

157 

158 

159class UnusedAnnotation(Message): 

160 """ 

161 Indicates that a variable has been explicitly annotated to but not actually 

162 used. 

163 """ 

164 message = 'local variable %r is annotated but never used' 

165 

166 def __init__(self, filename, loc, names): 

167 Message.__init__(self, filename, loc) 

168 self.message_args = (names,) 

169 

170 

171class UnusedIndirectAssignment(Message): 

172 """A `global` or `nonlocal` statement where the name is never reassigned""" 

173 message = '`%s %s` is unused: name is never assigned in scope' 

174 

175 def __init__(self, filename, loc, name): 

176 Message.__init__(self, filename, loc) 

177 self.message_args = (type(loc).__name__.lower(), name) 

178 

179 

180class ReturnOutsideFunction(Message): 

181 """ 

182 Indicates a return statement outside of a function/method. 

183 """ 

184 message = '\'return\' outside function' 

185 

186 

187class YieldOutsideFunction(Message): 

188 """ 

189 Indicates a yield or yield from statement outside of a function/method. 

190 """ 

191 message = '\'yield\' outside function' 

192 

193 

194# For whatever reason, Python gives different error messages for these two. We 

195# match the Python error message exactly. 

196class ContinueOutsideLoop(Message): 

197 """ 

198 Indicates a continue statement outside of a while or for loop. 

199 """ 

200 message = '\'continue\' not properly in loop' 

201 

202 

203class BreakOutsideLoop(Message): 

204 """ 

205 Indicates a break statement outside of a while or for loop. 

206 """ 

207 message = '\'break\' outside loop' 

208 

209 

210class DefaultExceptNotLast(Message): 

211 """ 

212 Indicates an except: block as not the last exception handler. 

213 """ 

214 message = 'default \'except:\' must be last' 

215 

216 

217class TwoStarredExpressions(Message): 

218 """ 

219 Two or more starred expressions in an assignment (a, *b, *c = d). 

220 """ 

221 message = 'two starred expressions in assignment' 

222 

223 

224class TooManyExpressionsInStarredAssignment(Message): 

225 """ 

226 Too many expressions in an assignment with star-unpacking 

227 """ 

228 message = 'too many expressions in star-unpacking assignment' 

229 

230 

231class IfTuple(Message): 

232 """ 

233 Conditional test is a non-empty tuple literal, which are always True. 

234 """ 

235 message = '\'if tuple literal\' is always true, perhaps remove accidental comma?' 

236 

237 

238class AssertTuple(Message): 

239 """ 

240 Assertion test is a non-empty tuple literal, which are always True. 

241 """ 

242 message = 'assertion is always true, perhaps remove parentheses?' 

243 

244 

245class ForwardAnnotationSyntaxError(Message): 

246 message = 'syntax error in forward annotation %r' 

247 

248 def __init__(self, filename, loc, annotation): 

249 Message.__init__(self, filename, loc) 

250 self.message_args = (annotation,) 

251 

252 

253class RaiseNotImplemented(Message): 

254 message = "'raise NotImplemented' should be 'raise NotImplementedError'" 

255 

256 

257class InvalidPrintSyntax(Message): 

258 message = 'use of >> is invalid with print function' 

259 

260 

261class IsLiteral(Message): 

262 message = 'use ==/!= to compare constant literals (str, bytes, int, float, tuple)' 

263 

264 

265class FStringMissingPlaceholders(Message): 

266 message = 'f-string is missing placeholders' 

267 

268 

269class TStringMissingPlaceholders(Message): 

270 message = 't-string is missing placeholders' 

271 

272 

273class StringDotFormatExtraPositionalArguments(Message): 

274 message = "'...'.format(...) has unused arguments at position(s): %s" 

275 

276 def __init__(self, filename, loc, extra_positions): 

277 Message.__init__(self, filename, loc) 

278 self.message_args = (extra_positions,) 

279 

280 

281class StringDotFormatExtraNamedArguments(Message): 

282 message = "'...'.format(...) has unused named argument(s): %s" 

283 

284 def __init__(self, filename, loc, extra_keywords): 

285 Message.__init__(self, filename, loc) 

286 self.message_args = (extra_keywords,) 

287 

288 

289class StringDotFormatMissingArgument(Message): 

290 message = "'...'.format(...) is missing argument(s) for placeholder(s): %s" 

291 

292 def __init__(self, filename, loc, missing_arguments): 

293 Message.__init__(self, filename, loc) 

294 self.message_args = (missing_arguments,) 

295 

296 

297class StringDotFormatMixingAutomatic(Message): 

298 message = "'...'.format(...) mixes automatic and manual numbering" 

299 

300 

301class StringDotFormatInvalidFormat(Message): 

302 message = "'...'.format(...) has invalid format string: %s" 

303 

304 def __init__(self, filename, loc, error): 

305 Message.__init__(self, filename, loc) 

306 self.message_args = (error,) 

307 

308 

309class PercentFormatInvalidFormat(Message): 

310 message = "'...' %% ... has invalid format string: %s" 

311 

312 def __init__(self, filename, loc, error): 

313 Message.__init__(self, filename, loc) 

314 self.message_args = (error,) 

315 

316 

317class PercentFormatMixedPositionalAndNamed(Message): 

318 message = "'...' %% ... has mixed positional and named placeholders" 

319 

320 

321class PercentFormatUnsupportedFormatCharacter(Message): 

322 message = "'...' %% ... has unsupported format character %r" 

323 

324 def __init__(self, filename, loc, c): 

325 Message.__init__(self, filename, loc) 

326 self.message_args = (c,) 

327 

328 

329class PercentFormatPositionalCountMismatch(Message): 

330 message = "'...' %% ... has %d placeholder(s) but %d substitution(s)" 

331 

332 def __init__(self, filename, loc, n_placeholders, n_substitutions): 

333 Message.__init__(self, filename, loc) 

334 self.message_args = (n_placeholders, n_substitutions) 

335 

336 

337class PercentFormatExtraNamedArguments(Message): 

338 message = "'...' %% ... has unused named argument(s): %s" 

339 

340 def __init__(self, filename, loc, extra_keywords): 

341 Message.__init__(self, filename, loc) 

342 self.message_args = (extra_keywords,) 

343 

344 

345class PercentFormatMissingArgument(Message): 

346 message = "'...' %% ... is missing argument(s) for placeholder(s): %s" 

347 

348 def __init__(self, filename, loc, missing_arguments): 

349 Message.__init__(self, filename, loc) 

350 self.message_args = (missing_arguments,) 

351 

352 

353class PercentFormatExpectedMapping(Message): 

354 message = "'...' %% ... expected mapping but got sequence" 

355 

356 

357class PercentFormatExpectedSequence(Message): 

358 message = "'...' %% ... expected sequence but got mapping" 

359 

360 

361class PercentFormatStarRequiresSequence(Message): 

362 message = "'...' %% ... `*` specifier requires sequence"