lintro 0.3.2__py3-none-any.whl → 0.4.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of lintro might be problematic. Click here for more details.
- lintro/__init__.py +1 -1
- lintro/formatters/tools/__init__.py +12 -0
- lintro/formatters/tools/actionlint_formatter.py +82 -0
- lintro/formatters/tools/bandit_formatter.py +100 -0
- lintro/parsers/__init__.py +21 -0
- lintro/parsers/actionlint/__init__.py +1 -0
- lintro/parsers/actionlint/actionlint_issue.py +24 -0
- lintro/parsers/actionlint/actionlint_parser.py +67 -0
- lintro/tools/__init__.py +4 -0
- lintro/tools/core/tool_base.py +6 -4
- lintro/tools/implementations/tool_actionlint.py +151 -0
- lintro/tools/implementations/tool_bandit.py +445 -0
- lintro/tools/implementations/tool_darglint.py +2 -2
- lintro/tools/implementations/tool_hadolint.py +1 -1
- lintro/tools/implementations/tool_yamllint.py +1 -1
- lintro/tools/tool_enum.py +4 -0
- lintro/utils/console_logger.py +21 -5
- lintro/utils/formatting.py +4 -2
- lintro/utils/tool_executor.py +11 -6
- lintro/utils/tool_utils.py +19 -0
- {lintro-0.3.2.dist-info → lintro-0.4.2.dist-info}/METADATA +35 -28
- {lintro-0.3.2.dist-info → lintro-0.4.2.dist-info}/RECORD +26 -19
- {lintro-0.3.2.dist-info → lintro-0.4.2.dist-info}/licenses/LICENSE +1 -1
- {lintro-0.3.2.dist-info → lintro-0.4.2.dist-info}/WHEEL +0 -0
- {lintro-0.3.2.dist-info → lintro-0.4.2.dist-info}/entry_points.txt +0 -0
- {lintro-0.3.2.dist-info → lintro-0.4.2.dist-info}/top_level.txt +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lintro
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A unified CLI tool for code formatting, linting, and quality assurance
|
|
5
5
|
Author-email: TurboCoder13 <turbocoder13@gmail.com>
|
|
6
6
|
License: MIT License
|
|
7
7
|
|
|
8
|
-
Copyright (c) 2024
|
|
8
|
+
Copyright (c) 2024 TurboCoder13
|
|
9
9
|
|
|
10
10
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
11
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -36,10 +36,10 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
36
36
|
Classifier: Topic :: Software Development :: Quality Assurance
|
|
37
37
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
38
38
|
Classifier: Topic :: Utilities
|
|
39
|
-
Requires-Python:
|
|
39
|
+
Requires-Python: ==3.13.7
|
|
40
40
|
Description-Content-Type: text/markdown
|
|
41
41
|
License-File: LICENSE
|
|
42
|
-
Requires-Dist: click==8.
|
|
42
|
+
Requires-Dist: click==8.1.8
|
|
43
43
|
Requires-Dist: coverage-badge==1.1.2
|
|
44
44
|
Requires-Dist: darglint==1.8.1
|
|
45
45
|
Requires-Dist: loguru==0.7.3
|
|
@@ -47,25 +47,28 @@ Requires-Dist: tabulate==0.9.0
|
|
|
47
47
|
Requires-Dist: yamllint==1.37.1
|
|
48
48
|
Requires-Dist: httpx==0.28.1
|
|
49
49
|
Requires-Dist: toml==0.10.2
|
|
50
|
-
Requires-Dist:
|
|
50
|
+
Requires-Dist: defusedxml==0.7.1
|
|
51
51
|
Provides-Extra: dev
|
|
52
52
|
Requires-Dist: pytest==8.4.1; extra == "dev"
|
|
53
53
|
Requires-Dist: pytest-cov==6.2.1; extra == "dev"
|
|
54
54
|
Requires-Dist: pytest-mock==3.14.1; extra == "dev"
|
|
55
|
-
Requires-Dist: pytest-xdist==3.
|
|
55
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
|
|
56
56
|
Requires-Dist: tox==4.28.4; extra == "dev"
|
|
57
57
|
Requires-Dist: allure-pytest==2.15.0; extra == "dev"
|
|
58
58
|
Requires-Dist: ruff; extra == "dev"
|
|
59
59
|
Requires-Dist: mypy; extra == "dev"
|
|
60
60
|
Requires-Dist: coverage-badge==1.1.2; extra == "dev"
|
|
61
|
-
Requires-Dist: python-semantic-release==
|
|
61
|
+
Requires-Dist: python-semantic-release==10.3.1; extra == "dev"
|
|
62
|
+
Requires-Dist: assertpy==1.1; extra == "dev"
|
|
63
|
+
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
62
64
|
Provides-Extra: test
|
|
63
65
|
Requires-Dist: pytest==8.4.1; extra == "test"
|
|
64
66
|
Requires-Dist: pytest-cov==6.2.1; extra == "test"
|
|
65
67
|
Requires-Dist: pytest-mock==3.14.1; extra == "test"
|
|
66
|
-
Requires-Dist: pytest-xdist==3.
|
|
68
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "test"
|
|
69
|
+
Requires-Dist: assertpy==1.1; extra == "test"
|
|
67
70
|
Provides-Extra: typing
|
|
68
|
-
Requires-Dist: types-setuptools==80.9.0.
|
|
71
|
+
Requires-Dist: types-setuptools==80.9.0.20250822; extra == "typing"
|
|
69
72
|
Requires-Dist: types-tabulate==0.9.0.20241207; extra == "typing"
|
|
70
73
|
Dynamic: license-file
|
|
71
74
|
|
|
@@ -79,6 +82,17 @@ A comprehensive CLI tool that unifies various code formatting, linting, and qual
|
|
|
79
82
|
|
|
80
83
|
Lintro is a unified command-line interface that brings together multiple code quality tools into a single, easy-to-use package. Instead of managing separate tools like Ruff, Prettier, Yamllint, and others individually, Lintro provides a consistent interface for all your code quality needs.
|
|
81
84
|
|
|
85
|
+
[](https://www.python.org/downloads/)
|
|
86
|
+
[](https://codecov.io/gh/TurboCoder13/py-lintro)
|
|
87
|
+
[](LICENSE)
|
|
88
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml?query=branch%3Amain)
|
|
89
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
|
|
90
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
|
|
91
|
+
[](https://pypi.org/project/lintro/)
|
|
92
|
+
|
|
93
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
|
|
94
|
+
[](https://securityscorecards.dev/viewer/?uri=github.com/turbocoder13/py-lintro)
|
|
95
|
+
|
|
82
96
|
### Why Lintro?
|
|
83
97
|
|
|
84
98
|
- **🚀 Unified Interface**: One command to run all your linting and formatting tools
|
|
@@ -89,15 +103,6 @@ Lintro is a unified command-line interface that brings together multiple code qu
|
|
|
89
103
|
- **⚡ Fast**: Optimized execution with efficient tool management
|
|
90
104
|
- **🔒 Reliable**: Comprehensive test suite with 84% coverage
|
|
91
105
|
|
|
92
|
-
[](https://www.python.org/downloads/)
|
|
93
|
-
[](docs/coverage-setup.md)
|
|
94
|
-
[](LICENSE)
|
|
95
|
-
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml)
|
|
96
|
-
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml)
|
|
97
|
-
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml)
|
|
98
|
-
[](https://github.com/astral-sh/ruff)
|
|
99
|
-
[](https://pypi.org/project/lintro/)
|
|
100
|
-
|
|
101
106
|
## Features
|
|
102
107
|
|
|
103
108
|
- **Unified CLI** for multiple code quality tools
|
|
@@ -109,13 +114,15 @@ Lintro is a unified command-line interface that brings together multiple code qu
|
|
|
109
114
|
|
|
110
115
|
## Supported Tools
|
|
111
116
|
|
|
112
|
-
| Tool
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
|
116
|
-
|
|
|
117
|
-
|
|
|
118
|
-
|
|
|
117
|
+
| Tool | Language | Auto-fix |
|
|
118
|
+
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------- |
|
|
119
|
+
| [](https://github.com/rhysd/actionlint) | ⚙️ GitHub Workflows | - |
|
|
120
|
+
| [](https://github.com/PyCQA/bandit) | 🐍 Python | - |
|
|
121
|
+
| [](https://github.com/terrencepreilly/darglint) | 🐍 Python | - |
|
|
122
|
+
| [](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
|
|
123
|
+
| [](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | ✅ |
|
|
124
|
+
| [](https://github.com/astral-sh/ruff) | 🐍 Python | ✅ |
|
|
125
|
+
| [](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
|
|
119
126
|
|
|
120
127
|
## Quick Start
|
|
121
128
|
|
|
@@ -149,7 +156,7 @@ lintro format
|
|
|
149
156
|
lintro check --output-format grid
|
|
150
157
|
|
|
151
158
|
# Run specific tools only
|
|
152
|
-
lintro check --tools ruff,prettier
|
|
159
|
+
lintro check --tools ruff,prettier,actionlint
|
|
153
160
|
|
|
154
161
|
# List all available tools
|
|
155
162
|
lintro list-tools
|
|
@@ -206,8 +213,8 @@ lintro check --output-format grid --group-by code # Group by error type
|
|
|
206
213
|
# Exclude patterns
|
|
207
214
|
lintro check --exclude "migrations,node_modules,dist"
|
|
208
215
|
|
|
209
|
-
# Tool-specific options
|
|
210
|
-
lintro check --tool-options "ruff
|
|
216
|
+
# Tool-specific options use key=value (lists with |)
|
|
217
|
+
lintro check --tool-options "ruff:line_length=88,prettier:print_width=80"
|
|
211
218
|
|
|
212
219
|
# Ruff fix configuration (fmt):
|
|
213
220
|
# By default, fmt applies both lint fixes and formatting for Ruff.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
lintro/__init__.py,sha256=
|
|
1
|
+
lintro/__init__.py,sha256=A9klAlaHi9uIKmY4_PoEy7i__sA-0j_ZCOtyuQxYiQQ,110
|
|
2
2
|
lintro/__main__.py,sha256=McxM6wEcEeCLBHZs0F8xzT1PxVqJYkjtaPq1_-Nug-0,106
|
|
3
3
|
lintro/cli.py,sha256=Fy5nqdSg4id0gjGbPy82wRTK3aZMWbRdRDnwAbIv-vs,2333
|
|
4
4
|
lintro/ascii-art/fail.txt,sha256=gshKngSrz5FvJdP6g7lPygpLsLsZZh4etBU_wR7PXOw,56396
|
|
@@ -30,7 +30,9 @@ lintro/formatters/styles/html.py,sha256=M1YVlzCKsV8_zaOearYwkPOHEVLcbV-tueXMJJcJ
|
|
|
30
30
|
lintro/formatters/styles/json.py,sha256=aZobZxntAiyo92_elI1VznrOd8jzEPrU7MUQBQHdM8Q,1923
|
|
31
31
|
lintro/formatters/styles/markdown.py,sha256=proUn2UEhNceTw6mVv_KSBYinLekgATx58ZWiu_PT1U,1309
|
|
32
32
|
lintro/formatters/styles/plain.py,sha256=_-4ziK6vBtvxI1wk-qLJHqKTUMs0SGWaBJPz1zV4Ngc,1125
|
|
33
|
-
lintro/formatters/tools/__init__.py,sha256=
|
|
33
|
+
lintro/formatters/tools/__init__.py,sha256=5HxvLscHFl-dYv0h_X6_-rEaszdVU-XPNtL-ZkliGvU,1289
|
|
34
|
+
lintro/formatters/tools/actionlint_formatter.py,sha256=VtwwGSSsTxmWTy-w9U2Mtu0X_Pmg7rarS4tV7G1nq90,2811
|
|
35
|
+
lintro/formatters/tools/bandit_formatter.py,sha256=iuLAHX08cP6gC6kLqJzlGMjtSRgYXjhwycfKiy4lBtg,3092
|
|
34
36
|
lintro/formatters/tools/darglint_formatter.py,sha256=kik3kJM1eENOSEVWzUXBZYUeBOCB3FjZcFUns0HL0ck,2177
|
|
35
37
|
lintro/formatters/tools/hadolint_formatter.py,sha256=enugwgR571IFv-75HJ-RCrsK9GBZfH-Bwb-WjoJGd2Y,2608
|
|
36
38
|
lintro/formatters/tools/prettier_formatter.py,sha256=VtV3uSoNhUtatqQa18QtQgcBAmzMPyjS2xDIAzpI0IY,2470
|
|
@@ -41,7 +43,10 @@ lintro/models/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
41
43
|
lintro/models/core/tool.py,sha256=TWkVV_KOYziqCdq_f3Goft3PKWKByitsQ2VFiX6MVHM,2594
|
|
42
44
|
lintro/models/core/tool_config.py,sha256=_VHxiUc0V3e9e2VIVJCpoEQ66cijuNMtsiz5hQmVIus,804
|
|
43
45
|
lintro/models/core/tool_result.py,sha256=z5fexuCBt1ir0hvzojxVX-Abt6MNIT7_JvH5oyW_FlI,1319
|
|
44
|
-
lintro/parsers/__init__.py,sha256=
|
|
46
|
+
lintro/parsers/__init__.py,sha256=53UA1LuS21BL4xj8i81Qb59dKXe3jCFLBrDVqvvNHVQ,288
|
|
47
|
+
lintro/parsers/actionlint/__init__.py,sha256=N953d0kbJEOZE9cG4eq9BjiSErdk10GMrngV_tKjLvo,33
|
|
48
|
+
lintro/parsers/actionlint/actionlint_issue.py,sha256=H_BQr04KAGHpVp1qKqETcWLi3i-u6atl7ccDae-jqX8,636
|
|
49
|
+
lintro/parsers/actionlint/actionlint_parser.py,sha256=FAovzY877UeaDj7ZHb0zy6Y_hsidWS6UR1O8KCYVISU,1889
|
|
45
50
|
lintro/parsers/darglint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
51
|
lintro/parsers/darglint/darglint_issue.py,sha256=f43blLSM13r1VyyGwk-bjtC7raBCjRqwlnPw7Nmx9ic,127
|
|
47
52
|
lintro/parsers/darglint/darglint_parser.py,sha256=oh2Q-innmm_H5O-xTNMvObmLMFJSL51uqOtSgG39WsQ,2045
|
|
@@ -57,29 +62,31 @@ lintro/parsers/ruff/ruff_parser.py,sha256=dvufb9F2JLBfdHE2houF5M-5tDcKRsEhtC1CBN
|
|
|
57
62
|
lintro/parsers/yamllint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
63
|
lintro/parsers/yamllint/yamllint_issue.py,sha256=jWawdGUiTI1HADbhg8yEdZfC6yHcmk9FDzpr3PBUPBg,608
|
|
59
64
|
lintro/parsers/yamllint/yamllint_parser.py,sha256=UaZ0sjVPUw3kWJ7QYHY0wX9ybifoy1NbicGjBDMijGE,1945
|
|
60
|
-
lintro/tools/__init__.py,sha256=
|
|
61
|
-
lintro/tools/tool_enum.py,sha256=
|
|
65
|
+
lintro/tools/__init__.py,sha256=8prHy3TTttzVvWWzn5xbPRHwXkPoN6P_KGqTmFJh5HI,1416
|
|
66
|
+
lintro/tools/tool_enum.py,sha256=kQ7atS2ZrfhiEgRJtjPAM4zn0PVhK9iObEqJj0no3JI,767
|
|
62
67
|
lintro/tools/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
-
lintro/tools/core/tool_base.py,sha256=
|
|
68
|
+
lintro/tools/core/tool_base.py,sha256=FIotjOzpE3E2fK2t2gA4c6Pwe7AI3uc2GF0-wpe13o4,11043
|
|
64
69
|
lintro/tools/core/tool_manager.py,sha256=yKQONy17t7-fq1k9dkrMk6lZaAvaSwp7-JcvJFZMoYc,5103
|
|
65
70
|
lintro/tools/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
-
lintro/tools/implementations/
|
|
67
|
-
lintro/tools/implementations/
|
|
71
|
+
lintro/tools/implementations/tool_actionlint.py,sha256=7b1pUxs9Ln6KmoLiRQBmyDeq9SmgZ08e0DxleM9NEt8,5466
|
|
72
|
+
lintro/tools/implementations/tool_bandit.py,sha256=Iw6ekDayg8JdSD8dLDOlaUtQ4adcd83wp1iF4xeiteI,15823
|
|
73
|
+
lintro/tools/implementations/tool_darglint.py,sha256=zj8hQ8bVW3fwO8dsK9tdXzyL1yzZvqiEetVGvxhGe4g,9396
|
|
74
|
+
lintro/tools/implementations/tool_hadolint.py,sha256=NfHLoThp23V-n5chSfrBZetleXsRR4oYxkLxOkJxU0g,11479
|
|
68
75
|
lintro/tools/implementations/tool_prettier.py,sha256=QTboRboHLRzhgGdpGnRbaFf2D2DaG981iRWFYvTUfJE,9446
|
|
69
76
|
lintro/tools/implementations/tool_ruff.py,sha256=l8QVQES8mvY7pceP0aLS2ivzOsTWmyika6D6eXGnvqs,24424
|
|
70
|
-
lintro/tools/implementations/tool_yamllint.py,sha256=
|
|
77
|
+
lintro/tools/implementations/tool_yamllint.py,sha256=0powR9F3FkIq-b7PI0-XWdh7nx7rR3HVMtvEaz_NWeA,8831
|
|
71
78
|
lintro/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
79
|
lintro/utils/ascii_normalize_cli.py,sha256=ztuHEvmMgl2gLy3vAo8RTwvxCTWyXgL1C7jPMX7IaKM,2391
|
|
73
80
|
lintro/utils/config.py,sha256=Mi_3dqPjmNF7pcgA3b-Dx0CKQe_qrYCh_uYF9u6g0TQ,1036
|
|
74
|
-
lintro/utils/console_logger.py,sha256=
|
|
75
|
-
lintro/utils/formatting.py,sha256=
|
|
81
|
+
lintro/utils/console_logger.py,sha256=1WPIsKySvd6kPcAa4JyqtAd3G8lJf4MOcR1AzGk8TmI,31483
|
|
82
|
+
lintro/utils/formatting.py,sha256=khC9hYBva5xqBV1IqNcivRH9gRdvWw6u6mh2TZLTy7E,5346
|
|
76
83
|
lintro/utils/output_manager.py,sha256=kqTlWcR2HXyo-uiiWypHm8XaG8DQnngWgEqf1H9X5DU,10211
|
|
77
84
|
lintro/utils/path_utils.py,sha256=NJP3vjVDcRBgUHtYNrpL0tRa0Sc3oQhGX3_2WWzdZE4,1395
|
|
78
|
-
lintro/utils/tool_executor.py,sha256=
|
|
79
|
-
lintro/utils/tool_utils.py,sha256=
|
|
80
|
-
lintro-0.
|
|
81
|
-
lintro-0.
|
|
82
|
-
lintro-0.
|
|
83
|
-
lintro-0.
|
|
84
|
-
lintro-0.
|
|
85
|
-
lintro-0.
|
|
85
|
+
lintro/utils/tool_executor.py,sha256=daY1ueIhOmXCEb1Jf56F7gj_UO8yKtTZ9zqxiQKmEj8,16535
|
|
86
|
+
lintro/utils/tool_utils.py,sha256=dspPnkNwYBtVbV2NDiBHEpq3-zsOVFj4szipdvoDxY0,15407
|
|
87
|
+
lintro-0.4.2.dist-info/licenses/LICENSE,sha256=CwaAnyD2psonDBBJjbqFUz00W8nQw-FGDlEGZReUV6A,1069
|
|
88
|
+
lintro-0.4.2.dist-info/METADATA,sha256=_36L0gD11uD4JNk6HVy63D3f4FPn1qMFGg2Jyg7iXko,13602
|
|
89
|
+
lintro-0.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
90
|
+
lintro-0.4.2.dist-info/entry_points.txt,sha256=SYSk35jFyNLEHyrofSJsRv4qFN9NsT4VWSbvnTS9ov0,43
|
|
91
|
+
lintro-0.4.2.dist-info/top_level.txt,sha256=_D-7eyV6gNBOoIwHuf_h60wN_RWiw8GxB430Il9VKhU,7
|
|
92
|
+
lintro-0.4.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|