src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Async/AsyncVisitor.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11150
73d80859079c
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a node visitor to check async functions for use of synchronous
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 functions.
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import ast
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import itertools
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import re
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 try:
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from ast import unparse
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 except ImportError:
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 # Python < 3.9
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from ast_unparse import unparse
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
10175
57ed3cb66e9a Changed some code comments of adapted third party packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10116
diff changeset
21 #######################################################################
57ed3cb66e9a Changed some code comments of adapted third party packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10116
diff changeset
22 ## AsyncVisitor
57ed3cb66e9a Changed some code comments of adapted third party packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10116
diff changeset
23 ##
57ed3cb66e9a Changed some code comments of adapted third party packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10116
diff changeset
24 ## adapted from: flake8-async v22.11.14
57ed3cb66e9a Changed some code comments of adapted third party packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10116
diff changeset
25 #######################################################################
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class AsyncVisitor(ast.NodeVisitor):
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Class implementing a node visitor for checking async functions for use of
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 synchronous functions.
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 HttpPackages = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 "requests",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 "httpx",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 HttpMethods = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 "close",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 "delete",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 "get",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 "head",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 "options",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 "patch",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 "post",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 "put",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 "request",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 "send",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 "stream",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 Urllib3DangerousClasses = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 "HTTPConnectionPool",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 "HTTPSConnectionPool",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 "PoolManager",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 "ProxyManager",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 "connectionpool.ConnectionPool",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 "connectionpool.HTTPConnectionPool",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 "connectionpool.HTTPSConnectionPool",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 "poolmanager.PoolManager",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 "poolmanager.ProxyManager",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 "request.RequestMethods",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 SubprocessMethods = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 "run",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 "Popen",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 # deprecated methods
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 "call",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 "check_call",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 "check_output",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 "getoutput",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 "getstatusoutput",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 OsProcessMethods = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 "popen",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 "posix_spawn",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 "posix_spawnp",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 "spawnl",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 "spawnle",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 "spawnlp",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 "spawnlpe",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 "spawnv",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 "spawnve",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 "spawnvp",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 "spawnvpe",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 "system",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 OsWaitMethods = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 "wait",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 "wait3",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 "wait4",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 "waitid",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 "waitpid",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 OsPathFuncs = (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 "_path_normpath",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 "normpath",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 "_joinrealpath",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 "islink",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 "lexists",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 "ismount", # safe on windows, unsafe on posix
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 "realpath",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 "exists",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 "isdir",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 "isfile",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 "getatime",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 "getctime",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 "getmtime",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 "getsize",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 "samefile",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 "sameopenfile",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 "relpath",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def __init__(self, args, checker):
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Constructor
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @param args dictionary containing the checker arguments
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 @type dict
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @param checker reference to the checker
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 @type ImportsChecker
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 self.__appImportNames = args.get("ApplicationPackageNames", [])
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__checker = checker
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.violations = []
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 def visit_AsyncFunctionDef(self, node):
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 Public method to handle an async function definition.
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 @param node reference to the node to be processed
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @type ast.AsyncFunctionDef
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 for inner in itertools.chain.from_iterable(
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 map(ast.iter_child_nodes, node.body)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 ):
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 errorCode = None
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 if (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 isinstance(inner, ast.Call)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 and isinstance(inner.func, ast.Name)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 and inner.func.id == "open"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
150 errorCode = "ASY-101"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 elif (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 isinstance(inner, ast.withitem)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 and isinstance(inner.context_expr, ast.Call)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 and isinstance(inner.context_expr.func, ast.Name)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 and inner.context_expr.func.id == "open"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
158 errorCode = "ASY-103"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 inner = inner.context_expr
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 elif isinstance(inner, ast.Call):
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 funcName = unparse(inner.func)
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 if funcName in (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 "urllib3.request",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 "urllib.request.urlopen",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 "request.urlopen",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 "urlopen",
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
170 errorCode = "ASY-100"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 elif funcName == "time.sleep":
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
172 errorCode = "ASY-101"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 else:
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 match = re.fullmatch(
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 r"(?P<package>{0}|os\.path|os|subprocess|urllib3)\."
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 r"(?P<method>.*)".format("|".join(self.HttpPackages)),
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 funcName,
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 )
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if match:
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 if (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 match.group("package") in self.HttpPackages
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 and match.group("method") in self.HttpMethods
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
184 errorCode = "ASY-100"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 elif (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 match.group("package") == "subprocess"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 and match.group("method") in self.SubprocessMethods
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 ) or (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 match.group("package") == "os"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 and match.group("method") in self.OsWaitMethods
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
193 errorCode = "ASY-101"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 elif (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 match.group("package") == "os"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 and match.group("method") in self.OsProcessMethods
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
199 errorCode = "ASY-102"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 elif (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 match.group("package") == "os.path"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 and match.group("method") in self.OsPathFuncs
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
205 errorCode = "ASY-104"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 elif (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 match.group("package") == "httpx"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 and match.group("method") == "Client"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 ) or (
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 match.group("package") == "urllib3"
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 and match.group("method") in self.Urllib3DangerousClasses
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 ):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
214 errorCode = "ASY-105"
10116
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 if errorCode:
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 self.violations.append((inner, errorCode))
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218
4a619fb7bd09 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.generic_visit(node)

eric ide

mercurial