1
+ # ==============================================================================
2
+ # Build System Configuration (PEP 517/518)
3
+ # ==============================================================================
1
4
[build-system ]
2
5
requires = [" setuptools>=61.0" ]
3
6
build-backend = " setuptools.build_meta"
4
7
5
-
8
+ # ==============================================================================
9
+ # Project Metadata (PEP 621)
10
+ # ==============================================================================
6
11
[project ]
7
12
name = " python-code-validator"
8
- version = " 0.1.2 "
13
+ version = " 0.1.3 "
9
14
authors = [{ name = " Qu1nel" , email = " covach.qn@gmail.com" }]
10
- description = " A flexible framework for static validation of Python code based on JSON rules."
15
+ description = " A flexible, AST-based framework for static validation of Python code using declarative JSON rules."
11
16
readme = " README.md"
12
17
requires-python = " >=3.11"
13
18
license = { file = " LICENSE" }
14
- keywords = [" validation" , " linter" , " static analysis" , " testing" , " education" ]
19
+ keywords = [" validation" , " linter" , " static analysis" , " testing" , " education" , " ast " ]
15
20
classifiers = [
16
- " Development Status :: 3 - Alpha" ,
21
+ " Development Status :: 4 - Beta" ,
22
+ " Intended Audience :: Developers" ,
23
+ " Intended Audience :: Education" ,
17
24
" Programming Language :: Python :: 3" ,
18
25
" Programming Language :: Python :: 3.11" ,
19
26
" Programming Language :: Python :: 3.12" ,
20
27
" License :: OSI Approved :: MIT License" ,
21
28
" Operating System :: OS Independent" ,
29
+ " Topic :: Software Development :: Quality Assurance" ,
30
+ " Topic :: Software Development :: Testing" ,
31
+ " Topic :: Education" ,
22
32
]
23
33
34
+ dependencies = [
35
+ " flake8>=7.0.0"
36
+ ]
24
37
25
38
[project .urls ]
26
39
"Homepage" = " https://github.com/Qu1nel/PythonCodeValidator"
27
40
"Documentation" = " https://pythoncodevalidator.readthedocs.io/en/latest/"
28
41
"Bug Tracker" = " https://github.com/Qu1nel/PythonCodeValidator/issues"
29
42
30
-
31
43
[project .scripts ]
32
44
validate-code = " code_validator.cli:run_from_cli"
33
45
34
-
35
46
[project .optional-dependencies ]
36
47
dev = [
37
48
" ruff>=0.4.0" ,
38
- " flake8>=7.0.0" ,
39
49
" build" ,
40
50
" twine" ,
41
- " coverage>=7.5.0" ,
51
+ " coverage[toml] >=7.5.0" ,
42
52
]
43
53
docs = [
44
54
" sphinx>=7.0.0" ,
@@ -47,16 +57,63 @@ docs = [
47
57
" sphinx-design" ,
48
58
]
49
59
60
+ # ==============================================================================
61
+ # Tool Configuration
62
+ # ==============================================================================
50
63
51
64
[tool .ruff ]
52
65
line-length = 120
53
- exclude = [" tests/fixtures" ]
66
+ exclude = [
67
+ " .venv" ,
68
+ " build" ,
69
+ " dist" ,
70
+ " src/python_code_validator.egg-info" ,
71
+ " tests/fixtures" ,
72
+ ]
54
73
55
74
[tool .ruff .lint ]
56
- select = [" E" , " F" , " W" , " I" , " C" , " B" ]
57
- ignore = []
58
- mccabe.max-complexity = 15
75
+ select = [
76
+ " E" , # pycodestyle errors
77
+ " W" , # pycodestyle warnings
78
+ " F" , # pyflakes
79
+ " I" , # isort
80
+ " B" , # flake8-bugbear
81
+ " C4" , # flake8-comprehensions
82
+ " D" , # pydocstyle
83
+ ]
84
+ ignore = [
85
+ ]
59
86
87
+ [tool .ruff .lint .per-file-ignores ]
88
+ "tests/*" = [
89
+ " D100" , # Missing docstring in public module
90
+ " D101" , # Missing docstring in public class
91
+ " D102" , # Missing docstring in public method
92
+ " D103" , # Missing docstring in public function
93
+ " D104" , # Missing docstring in public package
94
+ " D107" , # Missing docstring in __init__
95
+ ]
96
+ "src/code_validator/components/__init__.py" = [" D104" ]
97
+ "src/code_validator/rules_library/__init__.py" = [" D104" ]
98
+
99
+
100
+ [tool .ruff .lint .pydocstyle ]
101
+ convention = " google"
102
+
103
+ [tool .ruff .lint .isort ]
104
+ known-first-party = [" code_validator" , " tests" ]
60
105
61
106
[tool .ruff .format ]
62
- quote-style = " double"
107
+ quote-style = " double"
108
+
109
+ [tool .coverage .run ]
110
+ omit = [
111
+ " src/code_validator/__main__.py" ,
112
+ " src/code_validator/cli.py" ,
113
+ " tests/*" ,
114
+ " */__init__.py" ,
115
+ ]
116
+
117
+ [tool .coverage .report ]
118
+ fail_under = 85
119
+ show_missing = true
0 commit comments