mirror of
https://fuchsia.googlesource.com/third_party/github.com/pylint-dev/pylint
synced 2024-09-21 16:19:21 +00:00
Fix checking open() modes on python3
open.__module__ is io, not __builtins__.
This commit is contained in:
parent
49e5fb8d85
commit
acffb39854
|
@ -16,6 +16,7 @@
|
|||
"""Checkers for various standard library functions."""
|
||||
|
||||
import re
|
||||
import sys
|
||||
|
||||
import astroid
|
||||
|
||||
|
@ -25,7 +26,11 @@ from pylint.checkers import utils
|
|||
|
||||
_VALID_OPEN_MODE_REGEX = r'^(r?U|[rwa]\+?b?)$'
|
||||
|
||||
|
||||
if sys.version_info >= (3, 0):
|
||||
OPEN_MODULE = '_io'
|
||||
else:
|
||||
OPEN_MODULE = '__builtins__'
|
||||
|
||||
class OpenModeChecker(BaseChecker):
|
||||
__implements__ = (IAstroidChecker,)
|
||||
name = 'open_mode'
|
||||
|
@ -40,9 +45,11 @@ class OpenModeChecker(BaseChecker):
|
|||
@utils.check_messages('W1501')
|
||||
def visit_callfunc(self, node):
|
||||
"""Visit a CallFunc node."""
|
||||
if (hasattr(node, 'func') and utils.is_builtin_object(utils.safe_infer(node.func))):
|
||||
if getattr(node.func, 'name', None) in ('open', 'file'):
|
||||
self._check_open_mode(node)
|
||||
if hasattr(node, 'func'):
|
||||
infer = utils.safe_infer(node.func)
|
||||
if infer and infer.root().name == OPEN_MODULE:
|
||||
if getattr(node.func, 'name', None) in ('open', 'file'):
|
||||
self._check_open_mode(node)
|
||||
|
||||
def _check_open_mode(self, node):
|
||||
"""Check that the mode argument of an open or file call is valid."""
|
||||
|
|
Loading…
Reference in New Issue
Block a user