src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Pydantic/PydanticChecker.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.

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 checker 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
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
10 from CodeStyleTopicChecker import CodeStyleTopicChecker
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
11
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
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
13 class PydanticChecker(CodeStyleTopicChecker):
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
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 Class implementing a checker 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
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 Codes = [
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
19 "PYD-001",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
20 "PYD-002",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
21 "PYD-003",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
22 "PYD-004",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
23 "PYD-005",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
24 "PYD-006",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
25 "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
26 ]
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
27 Category = "PYD"
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
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 def __init__(self, source, filename, tree, select, ignore, expected, repeat, args):
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 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
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 @param source source code to be checked
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 @type list of 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
35 @param filename name of the source file
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 @type 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
37 @param tree AST tree of the source code
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 @type ast.Module
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 @param select list of selected codes
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
40 @type list of 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
41 @param ignore list of codes to be ignored
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 @type list of 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
43 @param expected list of expected codes
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 @type list of 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
45 @param repeat flag indicating to report each occurrence of a code
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 @type bool
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 @param args dictionary of arguments for the various checks
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 @type dict
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 """
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
50 super().__init__(
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
51 PydanticChecker.Category,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
52 source,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
53 filename,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
54 tree,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
55 select,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
56 ignore,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
57 expected,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
58 repeat,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
59 args,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
60 )
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
61
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 checkersWithCodes = [
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 (
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 self.__checkPydantic,
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 (
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
66 "PYD-001",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
67 "PYD-002",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
68 "PYD-003",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
69 "PYD-004",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
70 "PYD-005",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
71 "PYD-006",
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
72 "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
73 ),
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 ]
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
76 self._initializeCheckers(checkersWithCodes)
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
77
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 def __checkPydantic(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
79 """
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 Private method to check pydantic related topics.
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 from .PydanticVisitor import 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
83
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
84 visitor = PydanticVisitor(errorCallback=self.addErrorFromNode)
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11143
diff changeset
85 visitor.visit(self.tree)

eric ide

mercurial