300 # nothing to check for; disabling the check |
300 # nothing to check for; disabling the check |
301 return |
301 return |
302 |
302 |
303 imports = set() |
303 imports = set() |
304 node = None |
304 node = None |
|
305 hasCode = False |
305 |
306 |
306 for node in ast.walk(self.__tree): |
307 for node in ast.walk(self.__tree): |
307 if (isinstance(node, ast.ImportFrom) and |
308 if (isinstance(node, ast.ImportFrom) and |
308 node.module == '__future__'): |
309 node.module == '__future__'): |
309 imports |= set(name.name for name in node.names) |
310 imports |= set(name.name for name in node.names) |
310 elif isinstance(node, ast.Expr): |
311 elif isinstance(node, ast.Expr): |
311 if not isinstance(node.value, ast.Str): |
312 if not isinstance(node.value, ast.Str): |
|
313 hasCode = True |
312 break |
314 break |
313 elif not isinstance(node, ast.Module): |
315 elif not isinstance(node, (ast.Module, ast.Str)): |
|
316 hasCode = True |
314 break |
317 break |
315 |
318 |
316 if isinstance(node, ast.Module): |
319 if isinstance(node, ast.Module) or not hasCode: |
317 return |
320 return |
318 |
321 |
319 if not (imports >= expectedImports): |
322 if not (imports >= expectedImports): |
320 if imports: |
323 if imports: |
321 self.__error(node.lineno - 1, node.col_offset, "M701", |
324 self.__error(node.lineno - 1, node.col_offset, "M701", |