Sat, 26 Apr 2025 12:34:32 +0200
MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.
10116 | 1 | # -*- coding: utf-8 -*- |
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 | 4 | # |
5 | ||
6 | """ | |
7 | Module implementing a checker for "async" related issues. | |
8 | """ | |
9 | ||
10 | import copy | |
11 | ||
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
12 | from CodeStyleTopicChecker import CodeStyleTopicChecker |
10116 | 13 | |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
14 | |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
15 | class AsyncChecker(CodeStyleTopicChecker): |
10116 | 16 | """ |
17 | Class implementing a checker for "async" related issues. | |
18 | """ | |
19 | ||
20 | Codes = [ | |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
21 | "ASY-100", |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
22 | "ASY-101", |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
23 | "ASY-102", |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
24 | "ASY-103", |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
25 | "ASY-104", |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
26 | "ASY-105", |
10116 | 27 | ] |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
28 | Category = "ASY" |
10116 | 29 | |
30 | def __init__(self, source, filename, tree, select, ignore, expected, repeat, args): | |
31 | """ | |
32 | Constructor | |
33 | ||
34 | @param source source code to be checked | |
35 | @type list of str | |
36 | @param filename name of the source file | |
37 | @type str | |
38 | @param tree AST tree of the source code | |
39 | @type ast.Module | |
40 | @param select list of selected codes | |
41 | @type list of str | |
42 | @param ignore list of codes to be ignored | |
43 | @type list of str | |
44 | @param expected list of expected codes | |
45 | @type list of str | |
46 | @param repeat flag indicating to report each occurrence of a code | |
47 | @type bool | |
48 | @param args dictionary of arguments for the various checks | |
49 | @type dict | |
50 | """ | |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
51 | super().__init__( |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
52 | AsyncChecker.Category, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
53 | source, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
54 | filename, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
55 | tree, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
56 | select, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
57 | ignore, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
58 | expected, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
59 | repeat, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
60 | args, |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
61 | ) |
10116 | 62 | |
63 | checkersWithCodes = [ | |
64 | ( | |
65 | self.__checkSyncUses, | |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
66 | ("ASY-100", "ASY-101", "ASY-102", "ASY-103", "ASY-104", "ASY-105"), |
10116 | 67 | ), |
68 | ] | |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
69 | self._initializeCheckers(checkersWithCodes) |
10116 | 70 | |
71 | def __checkSyncUses(self): | |
72 | """ | |
73 | Private method to check for use of synchroneous functions in async methods. | |
74 | """ | |
75 | from .AsyncVisitor import AsyncVisitor | |
76 | ||
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
77 | visitor = AsyncVisitor(self.args, self) |
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
78 | visitor.visit(copy.deepcopy(self.tree)) |
10116 | 79 | for violation in visitor.violations: |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
80 | self.addErrorFromNode(violation[0], violation[1]) |