summaryrefslogtreecommitdiff
path: root/pylint/checkers/stdlib.py
diff options
context:
space:
mode:
Diffstat (limited to 'pylint/checkers/stdlib.py')
-rw-r--r--pylint/checkers/stdlib.py46
1 files changed, 12 insertions, 34 deletions
diff --git a/pylint/checkers/stdlib.py b/pylint/checkers/stdlib.py
index 270623f09..ad6e4f855 100644
--- a/pylint/checkers/stdlib.py
+++ b/pylint/checkers/stdlib.py
@@ -36,7 +36,7 @@ import astroid
from astroid.bases import Instance
from astroid.node_classes import Const
-from pylint.checkers import BaseChecker, utils
+from pylint.checkers import BaseChecker, DeprecatedMixin, utils
from pylint.interfaces import IAstroidChecker
OPEN_FILES = {"open", "file"}
@@ -80,7 +80,7 @@ def _check_mode_str(mode):
return True
-class StdlibChecker(BaseChecker):
+class StdlibChecker(BaseChecker, DeprecatedMixin):
__implements__ = (IAstroidChecker,)
name = "stdlib"
@@ -336,7 +336,7 @@ class StdlibChecker(BaseChecker):
self._check_env_function(node, inferred)
elif name == SUBPROCESS_RUN:
self._check_for_check_kw_in_run(node)
- self._check_deprecated_method(node, inferred)
+ self.check_deprecated_method(node, inferred)
except astroid.InferenceError:
return
@@ -358,37 +358,6 @@ class StdlibChecker(BaseChecker):
for value in node.values:
self._check_datetime(value)
- def _check_deprecated_method(self, node, inferred):
- py_vers = sys.version_info[0]
-
- if isinstance(node.func, astroid.Attribute):
- func_name = node.func.attrname
- elif isinstance(node.func, astroid.Name):
- func_name = node.func.name
- else:
- # Not interested in other nodes.
- return
-
- # Reject nodes which aren't of interest to us.
- acceptable_nodes = (
- astroid.BoundMethod,
- astroid.UnboundMethod,
- astroid.FunctionDef,
- )
- if not isinstance(inferred, acceptable_nodes):
- return
-
- qname = inferred.qname()
- if any(name in self.deprecated[0] for name in (qname, func_name)):
- self.add_message("deprecated-method", node=node, args=(func_name,))
- else:
- for since_vers, func_list in self.deprecated[py_vers].items():
- if since_vers <= sys.version_info and any(
- name in func_list for name in (qname, func_name)
- ):
- self.add_message("deprecated-method", node=node, args=(func_name,))
- break
-
def _check_redundant_assert(self, node, infer):
if (
isinstance(infer, astroid.BoundMethod)
@@ -481,6 +450,15 @@ class StdlibChecker(BaseChecker):
else:
self.add_message(message, node=node, args=(name, call_arg.pytype()))
+ def deprecated_methods(self):
+ py_vers = sys.version_info[0]
+ deprecated_methods = set()
+ deprecated_methods.update(self.deprecated[0])
+ for since_vers, func_list in self.deprecated[py_vers].items():
+ if since_vers <= sys.version_info:
+ deprecated_methods.update(func_list)
+ return deprecated_methods
+
def register(linter):
"""required method to auto register this checker """