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.
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a node visitor to check for pydantic related issues. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | ####################################################################### |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | ## PydanticVisitor |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | ## |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | ## adapted from: flake8-pydantic v0.4.0 |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | ## |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | ## Original: Copyright (c) 2023 Victorien |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | ####################################################################### |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | import ast |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from collections import deque |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | from .PydanticUtils import ( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | extractAnnotations, |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | isDataclass, |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | isFunction, |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | isName, |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | isPydanticModel, |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | ) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | class PydanticVisitor(ast.NodeVisitor): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | Class implementing a node visitor to check for pydantic related issues. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | def __init__(self, errorCallback): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | Constructor |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
40 | @param errorCallback callback function to register an issue |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | @type func |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | super().__init__() |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__error = errorCallback |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__classStack = deque() |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | def __enterClass(self, node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | Private method to record class type when entering a class definition. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | @type ast.ClassDef |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | if isPydanticModel(node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.__classStack.append("pydantic_model") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | elif isDataclass(node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__classStack.append("dataclass") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | else: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | self.__classStack.append("other_class") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | def __leaveClass(self): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | Private method to remove the data recorded by the __enterClass method. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | self.__classStack.pop() |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | @property |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | def __currentClass(self): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | Private method returning the current class type as recorded by the __enterClass |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | method. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | @return current class type (one of 'pydantic_model', 'dataclass' or |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | 'other_class') |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | @rtype str |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | if not self.__classStack: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | return None |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | return self.__classStack[-1] |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | def __checkForPyd001(self, node: ast.AnnAssign) -> None: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | Private method to check positional argument for Field default argument. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | @type ast.AnnAssign |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | if ( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | self.__currentClass in {"pydantic_model", "dataclass"} |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | and isinstance(node.value, ast.Call) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | and isFunction(node.value, "Field") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | and len(node.value.args) >= 1 |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | ): |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
97 | self.__error(node, "PYD-001") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | def __checkForPyd002(self, node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | Private method to check non-annotated attribute inside Pydantic model. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | @type ast.ClassDef |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | if self.__currentClass == "pydantic_model": |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | invalidAssignments = [ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | assign |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | for assign in node.body |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | if isinstance(assign, ast.Assign) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | if isinstance(assign.targets[0], ast.Name) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | if not assign.targets[0].id.startswith("_") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | if assign.targets[0].id != "model_config" |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | ] |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | for assignment in invalidAssignments: |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
116 | self.__error(assignment, "PYD-002") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | def __checkForPyd003(self, node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | Private method to check unecessary Field call to specify a default value. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | @type ast.AnnAssign |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | if ( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | self.__currentClass in {"pydantic_model", "dataclass"} |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | and isinstance(node.value, ast.Call) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | and isFunction(node.value, "Field") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | and len(node.value.keywords) == 1 |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | and node.value.keywords[0].arg == "default" |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | ): |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
132 | self.__error(node, "PYD-003") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | def __checkForPyd004(self, node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | Private method to check for a default argument specified in annotated. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | @type ast.AnnAssign |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | if ( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | self.__currentClass in {"pydantic_model", "dataclass"} |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | and isinstance(node.annotation, ast.Subscript) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | and isName(node.annotation.value, "Annotated") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | and isinstance(node.annotation.slice, ast.Tuple) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | ): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | fieldCall = next( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | ( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | elt |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | for elt in node.annotation.slice.elts |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | if isinstance(elt, ast.Call) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | and isFunction(elt, "Field") |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | and any(k.arg == "default" for k in elt.keywords) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | ), |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | None, |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | ) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | if fieldCall is not None: |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
158 | self.__error(node, "PYD-004") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | def __checkForPyd005(self, node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | Private method to check for a field name overriding the annotation. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | @type ast.ClassDef |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | if self.__currentClass in {"pydantic_model", "dataclass"}: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | previousTargets = set() |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | for stmt in node.body: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | if isinstance(stmt, ast.AnnAssign) and isinstance( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | stmt.target, ast.Name |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | ): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | previousTargets.add(stmt.target.id) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | if previousTargets & extractAnnotations(stmt.annotation): |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
176 | self.__error(stmt, "PYD-005") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | def __checkForPyd006(self, node): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | Private method to check for duplicate field names. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | @type ast.ClassDef |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | if self.__currentClass in {"pydantic_model", "dataclass"}: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | previousTargets = set() |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | for stmt in node.body: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | if isinstance(stmt, ast.AnnAssign) and isinstance( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | stmt.target, ast.Name |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | ): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | if stmt.target.id in previousTargets: |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
193 | self.__error(stmt, "PYD-006") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | previousTargets.add(stmt.target.id) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | def __checkForPyd010(self, node: ast.ClassDef) -> None: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | Private method to check for the use of `__pydantic_config__`. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | @param node reference to the node to be processed |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | @type ast.ClassDef |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | if self.__currentClass == "other_class": |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | for stmt in node.body: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | if ( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | isinstance(stmt, ast.AnnAssign) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | and isinstance(stmt.target, ast.Name) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | and stmt.target.id == "__pydantic_config__" |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | ): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | ##~ __pydantic_config__: ... = ... |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
212 | self.__error(stmt, "PYD-010") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | if isinstance(stmt, ast.Assign) and any( |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | t.id == "__pydantic_config__" |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | for t in stmt.targets |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | if isinstance(t, ast.Name) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | ): |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | ##~ __pydantic_config__ = ... |
11150
73d80859079c
Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11143
diff
changeset
|
220 | self.__error(stmt, "PYD-010") |
11143
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | def visit_ClassDef(self, node: ast.ClassDef) -> None: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | Public method to process class definitions. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | @param node reference to the node to be processed. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | @type ast.ClassDef |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | self.__enterClass(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | self.__checkForPyd002(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | self.__checkForPyd005(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | self.__checkForPyd006(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | self.__checkForPyd010(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | self.generic_visit(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | self.__leaveClass() |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | def visit_AnnAssign(self, node: ast.AnnAssign) -> None: |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | Public method to process annotated assignment. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | @param node reference to the node to be processed. |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | @type ast.AnnAssign |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | """ |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | self.__checkForPyd001(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | self.__checkForPyd003(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | self.__checkForPyd004(node) |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | |
ef75c265ab47
Added a checker for `pydantic` and `dataclass` related topics based on `flake8-pydantic` v0.4.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | self.generic_visit(node) |