lintro 0.6.2__py3-none-any.whl → 0.7.0__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/tools/implementations/tool_prettier.py +7 -1
- {lintro-0.6.2.dist-info → lintro-0.7.0.dist-info}/METADATA +46 -8
- {lintro-0.6.2.dist-info → lintro-0.7.0.dist-info}/RECORD +8 -8
- {lintro-0.6.2.dist-info → lintro-0.7.0.dist-info}/WHEEL +0 -0
- {lintro-0.6.2.dist-info → lintro-0.7.0.dist-info}/entry_points.txt +0 -0
- {lintro-0.6.2.dist-info → lintro-0.7.0.dist-info}/licenses/LICENSE +0 -0
- {lintro-0.6.2.dist-info → lintro-0.7.0.dist-info}/top_level.txt +0 -0
lintro/__init__.py
CHANGED
|
@@ -142,11 +142,14 @@ class PrettierTool(BaseTool):
|
|
|
142
142
|
# so the unified logger prints a single, consistent success line.
|
|
143
143
|
if success:
|
|
144
144
|
output = None
|
|
145
|
-
|
|
145
|
+
|
|
146
|
+
# Return full ToolResult so table rendering can use parsed issues
|
|
147
|
+
return ToolResult(
|
|
146
148
|
name=self.name,
|
|
147
149
|
success=success,
|
|
148
150
|
output=output,
|
|
149
151
|
issues_count=issues_count,
|
|
152
|
+
issues=issues,
|
|
150
153
|
)
|
|
151
154
|
|
|
152
155
|
def fix(
|
|
@@ -264,6 +267,9 @@ class PrettierTool(BaseTool):
|
|
|
264
267
|
output=final_output,
|
|
265
268
|
# For fix operations, issues_count represents remaining for summaries
|
|
266
269
|
issues_count=remaining_count,
|
|
270
|
+
# Provide issues so formatters can render tables. Use initial issues
|
|
271
|
+
# (auto-fixable set) for display; fall back to remaining when none.
|
|
272
|
+
issues=(initial_issues if initial_issues else remaining_issues),
|
|
267
273
|
initial_issues_count=initial_count,
|
|
268
274
|
fixed_issues_count=fixed_count,
|
|
269
275
|
remaining_issues_count=remaining_count,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lintro
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
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
|
|
@@ -50,21 +50,21 @@ Requires-Dist: toml==0.10.2
|
|
|
50
50
|
Requires-Dist: defusedxml==0.7.1
|
|
51
51
|
Provides-Extra: dev
|
|
52
52
|
Requires-Dist: pytest==8.4.2; extra == "dev"
|
|
53
|
-
Requires-Dist: pytest-cov==
|
|
54
|
-
Requires-Dist: pytest-mock==3.15.
|
|
53
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "dev"
|
|
54
|
+
Requires-Dist: pytest-mock==3.15.1; extra == "dev"
|
|
55
55
|
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
|
|
56
|
-
Requires-Dist: tox==4.30.
|
|
56
|
+
Requires-Dist: tox==4.30.3; 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==10.
|
|
61
|
+
Requires-Dist: python-semantic-release==10.4.1; extra == "dev"
|
|
62
62
|
Requires-Dist: assertpy==1.1; extra == "dev"
|
|
63
63
|
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
64
64
|
Provides-Extra: test
|
|
65
65
|
Requires-Dist: pytest==8.4.2; extra == "test"
|
|
66
|
-
Requires-Dist: pytest-cov==
|
|
67
|
-
Requires-Dist: pytest-mock==3.15.
|
|
66
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "test"
|
|
67
|
+
Requires-Dist: pytest-mock==3.15.1; extra == "test"
|
|
68
68
|
Requires-Dist: pytest-xdist==3.8.0; extra == "test"
|
|
69
69
|
Requires-Dist: assertpy==1.1; extra == "test"
|
|
70
70
|
Provides-Extra: typing
|
|
@@ -88,10 +88,12 @@ Lintro is a unified command-line interface that brings together multiple code qu
|
|
|
88
88
|
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml?query=branch%3Amain)
|
|
89
89
|
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
|
|
90
90
|
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
|
|
91
|
+
[&branch=main>)](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml?query=branch%3Amain)
|
|
92
|
+
[&event=push>)](https://github.com/TurboCoder13/py-lintro/actions/workflows/publish-pypi-on-tag.yml?query=event%3Apush)
|
|
91
93
|
[](https://pypi.org/project/lintro/)
|
|
92
94
|
|
|
93
95
|
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
|
|
94
|
-
[](https://scorecard.dev/viewer/?uri=github.com/TurboCoder13/py-lintro)
|
|
96
|
+
[](https://scorecard.dev/viewer/?uri=github.com/TurboCoder13/py-lintro) [](docs/security/assurance.md) [](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml) [](https://www.bestpractices.dev/projects/11142)
|
|
95
97
|
|
|
96
98
|
### Why Lintro?
|
|
97
99
|
|
|
@@ -112,6 +114,42 @@ Lintro is a unified command-line interface that brings together multiple code qu
|
|
|
112
114
|
- **Docker support** for containerized environments
|
|
113
115
|
- **CI/CD integration** with GitHub Actions
|
|
114
116
|
|
|
117
|
+
## Security & Compliance
|
|
118
|
+
|
|
119
|
+
Lintro follows modern security best practices and provides comprehensive supply chain transparency:
|
|
120
|
+
|
|
121
|
+
- **SBOM Generation**: Automated Software Bill of Materials on every push to main
|
|
122
|
+
- **Formats**: CycloneDX 1.6 and SPDX 2.3 (industry standards)
|
|
123
|
+
- **Compliance**: Meets Executive Order 14028 requirements for federal software
|
|
124
|
+
- **Download**: [Latest SBOM artifacts](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml)
|
|
125
|
+
- **Documentation**: See [Security Assurance](docs/security/assurance.md) for details
|
|
126
|
+
|
|
127
|
+
### What's in the SBOM?
|
|
128
|
+
|
|
129
|
+
The SBOM provides a complete inventory of all dependencies:
|
|
130
|
+
|
|
131
|
+
- All Python packages with exact versions
|
|
132
|
+
- All npm packages (like Prettier)
|
|
133
|
+
- All GitHub Actions dependencies (pinned by SHA)
|
|
134
|
+
- Transitive dependencies
|
|
135
|
+
- License information
|
|
136
|
+
|
|
137
|
+
### For Enterprise Users
|
|
138
|
+
|
|
139
|
+
Download SBOMs for security auditing and compliance:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Download latest SBOM artifacts
|
|
143
|
+
gh run download -R TurboCoder13/py-lintro \
|
|
144
|
+
--name sbom-artifacts \
|
|
145
|
+
$(gh run list -R TurboCoder13/py-lintro \
|
|
146
|
+
-w "Security - SBOM Generation" -L 1 \
|
|
147
|
+
--json databaseId -q '.[0].databaseId')
|
|
148
|
+
|
|
149
|
+
# Scan for vulnerabilities (requires grype)
|
|
150
|
+
grype sbom:main-*-py-lintro-sbom.spdx-2.3.json
|
|
151
|
+
```
|
|
152
|
+
|
|
115
153
|
## Supported Tools
|
|
116
154
|
|
|
117
155
|
| Tool | Language | Auto-fix |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
lintro/__init__.py,sha256=
|
|
1
|
+
lintro/__init__.py,sha256=fEulqe3o_DokVWV3Slw2lQCAekhEoA_Rs6cTtfKhOF8,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
|
|
@@ -76,7 +76,7 @@ lintro/tools/implementations/tool_bandit.py,sha256=Ck1fT8I9CSRTJ8zYqXYsVMQ_-HSp_
|
|
|
76
76
|
lintro/tools/implementations/tool_black.py,sha256=x1U6NhdRxxYE5Tmvh-LoxcWtIkwHceeJWMUROa9tAJ4,9680
|
|
77
77
|
lintro/tools/implementations/tool_darglint.py,sha256=zj8hQ8bVW3fwO8dsK9tdXzyL1yzZvqiEetVGvxhGe4g,9396
|
|
78
78
|
lintro/tools/implementations/tool_hadolint.py,sha256=NfHLoThp23V-n5chSfrBZetleXsRR4oYxkLxOkJxU0g,11479
|
|
79
|
-
lintro/tools/implementations/tool_prettier.py,sha256=
|
|
79
|
+
lintro/tools/implementations/tool_prettier.py,sha256=tTw3yEn6RR2rCBoZdeDWy6r06Sfd_jCR2fLCBj4MDoY,9783
|
|
80
80
|
lintro/tools/implementations/tool_ruff.py,sha256=8WIpOKSc6HmuvEFCWgTqBX9X4T3MSD-RKesv4bs2lpQ,25361
|
|
81
81
|
lintro/tools/implementations/tool_yamllint.py,sha256=0powR9F3FkIq-b7PI0-XWdh7nx7rR3HVMtvEaz_NWeA,8831
|
|
82
82
|
lintro/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -88,9 +88,9 @@ lintro/utils/output_manager.py,sha256=oIE0g8LNVQcWSQOb1MbDVqGYPrOjBGuUZ4R80M1Rev
|
|
|
88
88
|
lintro/utils/path_utils.py,sha256=NJP3vjVDcRBgUHtYNrpL0tRa0Sc3oQhGX3_2WWzdZE4,1395
|
|
89
89
|
lintro/utils/tool_executor.py,sha256=8-m7nQKLRlKHBTvzT7iLmaHYZ3-2s0t4zUbC-py8-H8,26204
|
|
90
90
|
lintro/utils/tool_utils.py,sha256=zobweCIANBxXxHUERajFDshQyZGlEnJPQ52NleOrDdQ,15884
|
|
91
|
-
lintro-0.
|
|
92
|
-
lintro-0.
|
|
93
|
-
lintro-0.
|
|
94
|
-
lintro-0.
|
|
95
|
-
lintro-0.
|
|
96
|
-
lintro-0.
|
|
91
|
+
lintro-0.7.0.dist-info/licenses/LICENSE,sha256=CwaAnyD2psonDBBJjbqFUz00W8nQw-FGDlEGZReUV6A,1069
|
|
92
|
+
lintro-0.7.0.dist-info/METADATA,sha256=wkHfSzxSATr6CPOifCS2ScP0hpWL3lZYP6HXbCv6JVw,16029
|
|
93
|
+
lintro-0.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
94
|
+
lintro-0.7.0.dist-info/entry_points.txt,sha256=SYSk35jFyNLEHyrofSJsRv4qFN9NsT4VWSbvnTS9ov0,43
|
|
95
|
+
lintro-0.7.0.dist-info/top_level.txt,sha256=_D-7eyV6gNBOoIwHuf_h60wN_RWiw8GxB430Il9VKhU,7
|
|
96
|
+
lintro-0.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|