lintro 0.13.2__py3-none-any.whl → 0.17.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.
Files changed (72) hide show
  1. lintro/__init__.py +1 -1
  2. lintro/cli.py +226 -16
  3. lintro/cli_utils/commands/__init__.py +8 -1
  4. lintro/cli_utils/commands/check.py +1 -0
  5. lintro/cli_utils/commands/config.py +325 -0
  6. lintro/cli_utils/commands/init.py +361 -0
  7. lintro/cli_utils/commands/list_tools.py +180 -42
  8. lintro/cli_utils/commands/test.py +316 -0
  9. lintro/cli_utils/commands/versions.py +81 -0
  10. lintro/config/__init__.py +62 -0
  11. lintro/config/config_loader.py +420 -0
  12. lintro/config/lintro_config.py +189 -0
  13. lintro/config/tool_config_generator.py +403 -0
  14. lintro/enums/tool_name.py +2 -0
  15. lintro/enums/tool_type.py +2 -0
  16. lintro/formatters/tools/__init__.py +12 -0
  17. lintro/formatters/tools/eslint_formatter.py +108 -0
  18. lintro/formatters/tools/markdownlint_formatter.py +88 -0
  19. lintro/formatters/tools/pytest_formatter.py +201 -0
  20. lintro/parsers/__init__.py +69 -9
  21. lintro/parsers/bandit/__init__.py +6 -0
  22. lintro/parsers/bandit/bandit_issue.py +49 -0
  23. lintro/parsers/bandit/bandit_parser.py +99 -0
  24. lintro/parsers/black/black_issue.py +4 -0
  25. lintro/parsers/eslint/__init__.py +6 -0
  26. lintro/parsers/eslint/eslint_issue.py +26 -0
  27. lintro/parsers/eslint/eslint_parser.py +63 -0
  28. lintro/parsers/markdownlint/__init__.py +6 -0
  29. lintro/parsers/markdownlint/markdownlint_issue.py +22 -0
  30. lintro/parsers/markdownlint/markdownlint_parser.py +113 -0
  31. lintro/parsers/pytest/__init__.py +21 -0
  32. lintro/parsers/pytest/pytest_issue.py +28 -0
  33. lintro/parsers/pytest/pytest_parser.py +483 -0
  34. lintro/tools/__init__.py +2 -0
  35. lintro/tools/core/timeout_utils.py +112 -0
  36. lintro/tools/core/tool_base.py +255 -45
  37. lintro/tools/core/tool_manager.py +77 -24
  38. lintro/tools/core/version_requirements.py +482 -0
  39. lintro/tools/implementations/pytest/pytest_command_builder.py +311 -0
  40. lintro/tools/implementations/pytest/pytest_config.py +200 -0
  41. lintro/tools/implementations/pytest/pytest_error_handler.py +128 -0
  42. lintro/tools/implementations/pytest/pytest_executor.py +122 -0
  43. lintro/tools/implementations/pytest/pytest_handlers.py +375 -0
  44. lintro/tools/implementations/pytest/pytest_option_validators.py +212 -0
  45. lintro/tools/implementations/pytest/pytest_output_processor.py +408 -0
  46. lintro/tools/implementations/pytest/pytest_result_processor.py +113 -0
  47. lintro/tools/implementations/pytest/pytest_utils.py +697 -0
  48. lintro/tools/implementations/tool_actionlint.py +106 -16
  49. lintro/tools/implementations/tool_bandit.py +23 -7
  50. lintro/tools/implementations/tool_black.py +236 -29
  51. lintro/tools/implementations/tool_darglint.py +180 -21
  52. lintro/tools/implementations/tool_eslint.py +374 -0
  53. lintro/tools/implementations/tool_hadolint.py +94 -25
  54. lintro/tools/implementations/tool_markdownlint.py +354 -0
  55. lintro/tools/implementations/tool_prettier.py +313 -26
  56. lintro/tools/implementations/tool_pytest.py +327 -0
  57. lintro/tools/implementations/tool_ruff.py +247 -70
  58. lintro/tools/implementations/tool_yamllint.py +448 -34
  59. lintro/tools/tool_enum.py +6 -0
  60. lintro/utils/config.py +41 -18
  61. lintro/utils/console_logger.py +211 -25
  62. lintro/utils/path_utils.py +42 -0
  63. lintro/utils/tool_executor.py +336 -39
  64. lintro/utils/tool_utils.py +38 -2
  65. lintro/utils/unified_config.py +926 -0
  66. {lintro-0.13.2.dist-info → lintro-0.17.2.dist-info}/METADATA +131 -29
  67. lintro-0.17.2.dist-info/RECORD +134 -0
  68. lintro-0.13.2.dist-info/RECORD +0 -96
  69. {lintro-0.13.2.dist-info → lintro-0.17.2.dist-info}/WHEEL +0 -0
  70. {lintro-0.13.2.dist-info → lintro-0.17.2.dist-info}/entry_points.txt +0 -0
  71. {lintro-0.13.2.dist-info → lintro-0.17.2.dist-info}/licenses/LICENSE +0 -0
  72. {lintro-0.13.2.dist-info → lintro-0.17.2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lintro
3
- Version: 0.13.2
3
+ Version: 0.17.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
@@ -48,21 +48,25 @@ Requires-Dist: yamllint==1.37.1
48
48
  Requires-Dist: httpx==0.28.1
49
49
  Requires-Dist: toml==0.10.2
50
50
  Requires-Dist: defusedxml==0.7.1
51
+ Requires-Dist: ruff>=0.14.0
52
+ Requires-Dist: black>=25.0.0
53
+ Requires-Dist: bandit>=1.8.0
51
54
  Provides-Extra: dev
52
- Requires-Dist: pytest==8.4.2; extra == "dev"
55
+ Requires-Dist: pytest==9.0.1; extra == "dev"
53
56
  Requires-Dist: pytest-cov==7.0.0; extra == "dev"
54
57
  Requires-Dist: pytest-mock==3.15.1; extra == "dev"
55
58
  Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
56
- Requires-Dist: tox==4.31.0; extra == "dev"
57
- Requires-Dist: allure-pytest==2.15.0; extra == "dev"
59
+ Requires-Dist: pytest-sugar==1.1.1; extra == "dev"
60
+ Requires-Dist: tox==4.32.0; extra == "dev"
61
+ Requires-Dist: allure-pytest==2.15.2; extra == "dev"
58
62
  Requires-Dist: ruff; extra == "dev"
59
63
  Requires-Dist: mypy; extra == "dev"
60
64
  Requires-Dist: coverage-badge==1.1.2; extra == "dev"
61
- Requires-Dist: python-semantic-release==10.4.1; extra == "dev"
65
+ Requires-Dist: python-semantic-release==10.5.2; extra == "dev"
62
66
  Requires-Dist: assertpy==1.1; extra == "dev"
63
67
  Requires-Dist: httpx==0.28.1; extra == "dev"
64
68
  Provides-Extra: test
65
- Requires-Dist: pytest==8.4.2; extra == "test"
69
+ Requires-Dist: pytest==9.0.1; extra == "test"
66
70
  Requires-Dist: pytest-cov==7.0.0; extra == "test"
67
71
  Requires-Dist: pytest-mock==3.15.1; extra == "test"
68
72
  Requires-Dist: pytest-xdist==3.8.0; extra == "test"
@@ -74,13 +78,19 @@ Dynamic: license-file
74
78
 
75
79
  # Lintro
76
80
 
81
+ <!-- markdownlint-disable MD033 MD013 -->
77
82
  <img src="https://raw.githubusercontent.com/TurboCoder13/py-lintro/main/assets/images/lintro.png" alt="Lintro Logo" style="width:100%;max-width:800px;height:auto;display:block;margin:0 auto 24px auto;">
83
+ <!-- markdownlint-enable MD033 MD013 -->
78
84
 
79
- A comprehensive CLI tool that unifies various code formatting, linting, and quality assurance tools under a single command-line interface.
85
+ A comprehensive CLI tool that unifies various code formatting, linting, and quality
86
+ assurance tools under a single command-line interface.
80
87
 
81
88
  ## What is Lintro?
82
89
 
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.
90
+ Lintro is a unified command-line interface that brings together multiple code quality
91
+ tools into a single, easy-to-use package. Instead of managing separate tools like Ruff,
92
+ Prettier, Yamllint, and others individually, Lintro provides a consistent interface for
93
+ all your code quality needs.
84
94
 
85
95
  [![Python](https://img.shields.io/badge/python-3.13-blue)](https://www.python.org/downloads/)
86
96
  [![Coverage](https://codecov.io/gh/TurboCoder13/py-lintro/branch/main/graph/badge.svg)](https://codecov.io/gh/TurboCoder13/py-lintro)
@@ -89,11 +99,17 @@ Lintro is a unified command-line interface that brings together multiple code qu
89
99
  [![CI](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/ci-lintro-analysis.yml?label=ci&branch=main&logo=githubactions&logoColor=white)](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
90
100
  [![Docker](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/docker-build-publish.yml?label=docker&logo=docker&branch=main)](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
91
101
  [![SBOM (main)](<https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/sbom-on-main.yml?label=sbom%20(main)&branch=main>)](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml?query=branch%3Amain)
92
- [![Release pipeline (tags)](<https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/publish-pypi-on-tag.yml?label=release%20pipeline%20(tags)&event=push>)](https://github.com/TurboCoder13/py-lintro/actions/workflows/publish-pypi-on-tag.yml?query=event%3Apush)
102
+ [![Publish - PyPI Production](https://github.com/TurboCoder13/py-lintro/actions/workflows/publish-pypi-on-tag.yml/badge.svg)](https://github.com/TurboCoder13/py-lintro/actions/workflows/publish-pypi-on-tag.yml)
93
103
  [![PyPI](https://img.shields.io/pypi/v/lintro?label=pypi)](https://pypi.org/project/lintro/)
94
104
 
95
105
  [![CodeQL](https://github.com/TurboCoder13/py-lintro/actions/workflows/codeql.yml/badge.svg?branch=main)](https://github.com/TurboCoder13/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
96
- [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/TurboCoder13/py-lintro/badge)](https://scorecard.dev/viewer/?uri=github.com/TurboCoder13/py-lintro) [![SBOM](https://img.shields.io/badge/SBOM-enabled-brightgreen)](docs/security/assurance.md) [![Download SBOM](https://img.shields.io/badge/SBOM-download_latest-blue?logo=github)](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11142/badge)](https://www.bestpractices.dev/projects/11142)
106
+
107
+ <!-- markdownlint-disable-next-line MD013 -->
108
+
109
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/TurboCoder13/py-lintro/badge)](https://scorecard.dev/viewer/?uri=github.com/TurboCoder13/py-lintro)
110
+ [![SBOM](https://img.shields.io/badge/SBOM-enabled-brightgreen)](docs/security/assurance.md)
111
+ [![Download SBOM](https://img.shields.io/badge/SBOM-download_latest-blue?logo=github)](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml)
112
+ [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11142/badge)](https://www.bestpractices.dev/projects/11142)
97
113
 
98
114
  ### Why Lintro?
99
115
 
@@ -116,12 +132,14 @@ Lintro is a unified command-line interface that brings together multiple code qu
116
132
 
117
133
  ## Security & Compliance
118
134
 
119
- Lintro follows modern security best practices and provides comprehensive supply chain transparency:
135
+ Lintro follows modern security best practices and provides comprehensive supply chain
136
+ transparency:
120
137
 
121
138
  - **SBOM Generation**: Automated Software Bill of Materials on every push to main
122
139
  - **Formats**: CycloneDX 1.6 and SPDX 2.3 (industry standards)
123
140
  - **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)
141
+ - **Download**:
142
+ [Latest SBOM artifacts](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml)
125
143
  - **Documentation**: See [Security Assurance](docs/security/assurance.md) for details
126
144
 
127
145
  ### What's in the SBOM?
@@ -152,16 +170,63 @@ grype sbom:main-*-py-lintro-sbom.spdx-2.3.json
152
170
 
153
171
  ## Supported Tools
154
172
 
155
- | Tool | Language | Auto-fix |
156
- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------- |
157
- | [![Actionlint](https://img.shields.io/badge/Actionlint-GitHub%20Workflows-24292e?logo=github&logoColor=white)](https://github.com/rhysd/actionlint) | ⚙️ GitHub Workflows | - |
158
- | [![Bandit](https://img.shields.io/badge/Bandit-security-yellow?logo=python&logoColor=white)](https://github.com/PyCQA/bandit) | 🐍 Python | - |
159
- | [![Darglint](https://img.shields.io/badge/Darglint-docstrings-3776AB?logo=python&logoColor=white)](https://github.com/terrencepreilly/darglint) | 🐍 Python | - |
160
- | [![Hadolint](https://img.shields.io/badge/Hadolint-lint-2496ED?logo=docker&logoColor=white)](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
161
- | [![Prettier](https://img.shields.io/badge/Prettier-format-1a2b34?logo=prettier&logoColor=white)](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | |
162
- | [![Black](https://img.shields.io/badge/Black-format-000000?logo=python&logoColor=white)](https://github.com/psf/black) | 🐍 Python | |
163
- | [![Ruff](https://img.shields.io/badge/Ruff-lint%2Bformat-000?logo=ruff&logoColor=white)](https://github.com/astral-sh/ruff) | 🐍 Python | |
164
- | [![Yamllint](https://img.shields.io/badge/Yamllint-lint-cb171e?logo=yaml&logoColor=white)](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
173
+ <!-- markdownlint-disable MD013 MD060 -->
174
+
175
+ | Tool | Language | Auto-fix |
176
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- | -------- |
177
+ | [![Actionlint](https://img.shields.io/badge/Actionlint-GitHub%20Workflows-24292e?logo=github&logoColor=white)](https://github.com/rhysd/actionlint) | ⚙️ GitHub Workflows | - |
178
+ | [![Bandit](https://img.shields.io/badge/Bandit-security-yellow?logo=python&logoColor=white)](https://github.com/PyCQA/bandit) | 🐍 Python | - |
179
+ | [![Darglint](https://img.shields.io/badge/Darglint-docstrings-3776AB?logo=python&logoColor=white)](https://github.com/terrencepreilly/darglint) | 🐍 Python | - |
180
+ | [![Hadolint](https://img.shields.io/badge/Hadolint-lint-2496ED?logo=docker&logoColor=white)](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
181
+ | [![Markdownlint-cli2](https://img.shields.io/badge/Markdownlint--cli2-lint-000000?logo=markdown&logoColor=white)](https://github.com/DavidAnson/markdownlint-cli2) | 📝 Markdown | - |
182
+ | [![Prettier](https://img.shields.io/badge/Prettier-format-1a2b34?logo=prettier&logoColor=white)](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | |
183
+ | [![Black](https://img.shields.io/badge/Black-format-000000?logo=python&logoColor=white)](https://github.com/psf/black) | 🐍 Python | ✅ |
184
+ | [![Ruff](https://img.shields.io/badge/Ruff-lint%2Bformat-000?logo=ruff&logoColor=white)](https://github.com/astral-sh/ruff) | 🐍 Python | ✅ |
185
+ | [![Yamllint](https://img.shields.io/badge/Yamllint-lint-cb171e?logo=yaml&logoColor=white)](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
186
+
187
+ <!-- markdownlint-enable MD013 MD060 -->
188
+
189
+ ## Requirements
190
+
191
+ ### Python Version
192
+
193
+ **Python 3.13+** is required. Lintro uses modern Python features and syntax that are not
194
+ available in older versions.
195
+
196
+ ### Tool Dependencies
197
+
198
+ Lintro automatically installs and manages several Python tools to ensure consistent
199
+ behavior. These tools are bundled as dependencies with versions centrally managed in
200
+ `pyproject.toml`:
201
+
202
+ - **Ruff** - Fast Python linter and formatter
203
+ - **Black** - Python code formatter
204
+ - **Bandit** - Python security linter
205
+ - **Yamllint** - YAML linter
206
+ - **Darglint** - Python docstring linter
207
+
208
+ ### Optional External Tools
209
+
210
+ For full functionality, you may want to install additional tools with versions managed
211
+ in `pyproject.toml`:
212
+
213
+ - **Prettier** - JavaScript/TypeScript formatter (`npm install --save-dev prettier`)
214
+ - **Markdownlint-cli2** - Markdown linter (`npm install --save-dev markdownlint-cli2`)
215
+ - **Hadolint** - Dockerfile linter
216
+ ([GitHub Releases](https://github.com/hadolint/hadolint/releases))
217
+ - **Actionlint** - GitHub Actions linter
218
+ ([GitHub Releases](https://github.com/rhysd/actionlint/releases))
219
+
220
+ ### Version Verification
221
+
222
+ Check all tool versions with:
223
+
224
+ ```bash
225
+ lintro list-tools
226
+ ```
227
+
228
+ This command reads version requirements directly from `pyproject.toml` and verifies your
229
+ installed tools.
165
230
 
166
231
  ## Quick Start
167
232
 
@@ -169,7 +234,8 @@ grype sbom:main-*-py-lintro-sbom.spdx-2.3.json
169
234
 
170
235
  #### From PyPI (Recommended)
171
236
 
172
- ⚠️ **Important**: Versions prior to 0.13.2 contain a circular import bug that prevents installation as a dependency. Please use version 0.13.2 or later.
237
+ ⚠️ **Important**: Versions prior to 0.13.2 contain a circular import bug that prevents
238
+ installation as a dependency. Please use version 0.13.2 or later.
173
239
 
174
240
  ```bash
175
241
  pip install lintro>=0.13.2
@@ -263,8 +329,36 @@ lintro check --tool-options "ruff:line_length=88,prettier:print_width=80"
263
329
  # default to avoid double-formatting. Override if needed:
264
330
  lintro format --tool-options ruff:format=True # force Ruff to format
265
331
  lintro check --tool-options ruff:format_check=True # force Ruff format check
332
+
333
+ # Pytest examples:
334
+ lintro test --tool-options "pytest:verbose=True,tb=short,maxfail=5" # Basic options
335
+ lintro test --tool-options "pytest:workers=4" # Parallel execution
336
+ lintro test --tool-options "pytest:parallel_preset=medium" # Preset workers
337
+ lintro test --tool-options "pytest:coverage_threshold=85" # Coverage threshold
338
+ lintro test --tool-options "pytest:html_report=report.html" # HTML report
339
+ lintro test --tool-options "pytest:timeout=300" # Test timeout
340
+ lintro test --tool-options "pytest:reruns=2,reruns_delay=1" # Retry failed tests
266
341
  ```
267
342
 
343
+ #### Parallel Execution Presets
344
+
345
+ Lintro provides convenient presets for parallel test execution that automatically scale
346
+ based on your system's CPU count:
347
+
348
+ | Preset | Workers | Best For | Example |
349
+ | -------- | --------------- | ------------------------------------ | ---------------------------------------------- |
350
+ | `auto` | All CPU cores | Large CI environments | `--tool-options pytest:parallel_preset=auto` |
351
+ | `small` | 2 workers | Small test suites, local development | `--tool-options pytest:parallel_preset=small` |
352
+ | `medium` | 4 workers | Medium test suites | `--tool-options pytest:parallel_preset=medium` |
353
+ | `large` | Up to 8 workers | Large test suites | `--tool-options pytest:parallel_preset=large` |
354
+
355
+ **Best Practices:**
356
+
357
+ - Use `small` for local development to avoid overwhelming your machine
358
+ - Use `medium` for typical project test suites
359
+ - Use `large` or `auto` in CI environments with plenty of resources
360
+ - Requires `pytest-xdist` plugin to be installed
361
+
268
362
  ### CI/CD Integration
269
363
 
270
364
  Lintro includes pre-built GitHub Actions workflows:
@@ -277,13 +371,16 @@ See [GitHub Integration Guide](docs/github-integration.md) for setup instruction
277
371
 
278
372
  ## Documentation
279
373
 
280
- For comprehensive documentation, see our **[Documentation Hub](docs/README.md)** which includes:
374
+ For comprehensive documentation, see our **[Documentation Hub](docs/README.md)** which
375
+ includes:
281
376
 
282
377
  - **[Getting Started](docs/getting-started.md)** - Installation and basic usage
283
378
  - **[Docker Usage](docs/docker.md)** - Containerized development
284
379
  - **[GitHub Integration](docs/github-integration.md)** - CI/CD setup
285
380
  - **[Configuration](docs/configuration.md)** - Tool configuration options
286
381
  - **[Contributing](docs/contributing.md)** - Developer guide
382
+ - **[Pytest Integration Guide](docs/tool-analysis/pytest-analysis.md)** - Complete
383
+ pytest usage and troubleshooting
287
384
  - **[Tool Analysis](docs/tool-analysis/)** - Detailed tool comparisons
288
385
 
289
386
  ## Development
@@ -300,7 +397,8 @@ For comprehensive documentation, see our **[Documentation Hub](docs/README.md)**
300
397
  ./scripts/docker/docker-lintro.sh check --output-format grid
301
398
  ```
302
399
 
303
- For detailed information about all available scripts, see [Scripts Documentation](scripts/README.md).
400
+ For detailed information about all available scripts, see
401
+ [Scripts Documentation](scripts/README.md).
304
402
 
305
403
  ## Dependencies
306
404
 
@@ -310,7 +408,8 @@ For detailed information about all available scripts, see [Scripts Documentation
310
408
 
311
409
  ## License
312
410
 
313
- This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
411
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for
412
+ details.
314
413
 
315
414
  ## Troubleshooting
316
415
 
@@ -373,13 +472,16 @@ lintro check --tools ruff,prettier
373
472
  ### Getting Help
374
473
 
375
474
  - 📖 **Documentation**: Check the [docs/](docs/) directory
376
- - 🐛 **Bug Reports**: Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
475
+ - 🐛 **Bug Reports**: Use the
476
+ [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
377
477
  - 💡 **Questions**: Use the [question template](.github/ISSUE_TEMPLATE/question.md)
378
- - 🚀 **Feature Requests**: Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
478
+ - 🚀 **Feature Requests**: Use the
479
+ [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
379
480
 
380
481
  ## Contributing
381
482
 
382
- We welcome contributions! See our [Contributing Guide](docs/contributing.md) for details on:
483
+ We welcome contributions! See our [Contributing Guide](docs/contributing.md) for details
484
+ on:
383
485
 
384
486
  - Adding new tools
385
487
  - Reporting bugs
@@ -0,0 +1,134 @@
1
+ lintro/__init__.py,sha256=6feupquOVvt6EUb4QMFSlotuA4RsldyiKmQsz--NTUo,111
2
+ lintro/__main__.py,sha256=McxM6wEcEeCLBHZs0F8xzT1PxVqJYkjtaPq1_-Nug-0,106
3
+ lintro/cli.py,sha256=0Xi60clzJ5Uu-LNYL_hjdpzlNu3jp0pmJTbI7UIvpCc,11151
4
+ lintro/ascii-art/fail.txt,sha256=gshKngSrz5FvJdP6g7lPygpLsLsZZh4etBU_wR7PXOw,56396
5
+ lintro/ascii-art/success.txt,sha256=xhteIXcBvl_1QcFKMIS9CkjjCY8czdf9znP9AiB8oPU,90151
6
+ lintro/cli_utils/__init__.py,sha256=F5P_fY_s-gwNZrnV1bzUOgHGb73QeZG1i-K_kfyJ8Yg,250
7
+ lintro/cli_utils/commands/__init__.py,sha256=RMzLMZzNEwh2CwuQcaFEb_ac-BDfXwzv83H-qWWG9yE,309
8
+ lintro/cli_utils/commands/check.py,sha256=ylsici9B03Ky40x61PbzgW94xQzc24kvhwwUaohbjvw,6257
9
+ lintro/cli_utils/commands/config.py,sha256=nBBk_f-F5gThd-Ivf32T5uukX_V45mP2bBb-x0YK05w,9714
10
+ lintro/cli_utils/commands/format.py,sha256=scRuwm2xUzz0AA6QECJRrX8GX1L7fZfX8FGq-7cycTo,5181
11
+ lintro/cli_utils/commands/init.py,sha256=-ZmxZ3-oVMXw8A9aUbHzt5G7arrHYR7pplFp3xi1GxU,9376
12
+ lintro/cli_utils/commands/list_tools.py,sha256=U3J7HFnF9LUI-dd1RVSUkfYeYxQVg_fwzquiixQd_10,7955
13
+ lintro/cli_utils/commands/test.py,sha256=m2GGJgyQiSaiimPrr6xlc5S16_9nSi_kMIxAGzPcZJI,9455
14
+ lintro/cli_utils/commands/versions.py,sha256=3Tn9V4md5VcGk5p0g9S3H_EJCtEBHm39ymyp9UMWh-Q,2537
15
+ lintro/config/__init__.py,sha256=21zlmaDFEZy-LCaNEtkrt5tiD-mDjbP_N8lXTc-OFKo,1676
16
+ lintro/config/config_loader.py,sha256=0DakWcw9bA2RC0LO2TDtiSf-VX8KiIQvz6N9wnq_xLE,12526
17
+ lintro/config/lintro_config.py,sha256=bssXQMREXg72SIhNtVSZCFdk6bnFHFkeliH39fHSFzw,6252
18
+ lintro/config/tool_config_generator.py,sha256=N4bRl8UNK2HlBlapvMs2W7U-tUY7RWezrnH5-zXoqYg,11167
19
+ lintro/enums/__init__.py,sha256=ZwCDematwfGNPdZJN9j-yoGE5SkkoddRhoHz3F9pLMY,61
20
+ lintro/enums/action.py,sha256=3gln8HUNpZzAyAAjQH-cOyW1nKCx9MT6S4rFDAVirdc,597
21
+ lintro/enums/darglint_strictness.py,sha256=uzAznuAsEbOAJR4bY4v4pDQOyBVRkLGr6t-B7I-zvcs,762
22
+ lintro/enums/group_by.py,sha256=Eb2rJpeTsPhCK-1xnsyogXrcH_pmNvDZ0dHRK1h4kzM,647
23
+ lintro/enums/hadolint_enums.py,sha256=L7Srle5_wEhL5yooawkwbg-u-koBGkECcZiqx2gy24Q,1705
24
+ lintro/enums/output_format.py,sha256=lw3omfjUJUdnrqFjUWVBRSBmWdrxIveS2z2JxFxYPlU,954
25
+ lintro/enums/tool_name.py,sha256=jff47QXW4GZvClP0Aw5qT4hoAi5-LKbzQbj_p3bA3jg,842
26
+ lintro/enums/tool_type.py,sha256=EW5nT42VMQIeL1IMgmI6uu9m5Gb5kfAX9sl5CnqVUsQ,897
27
+ lintro/enums/yamllint_format.py,sha256=XzN9S2lHfVz2OKJgcamlXhR6wK9dW3tSCG-s8iiyjoI,802
28
+ lintro/exceptions/__init__.py,sha256=IZclngSiIhDcihyx_-QhTZ__ISIGI1enJu7ytprcLPc,60
29
+ lintro/exceptions/errors.py,sha256=QnELwMd6yTZVMN7nKRElhxLmxo4JeKtb-HDmVNcZ72M,374
30
+ lintro/formatters/__init__.py,sha256=-G0RkbV5aTkHqGufasVYDwye8DH0t3iB_6p0Lh_05Ik,73
31
+ lintro/formatters/core/__init__.py,sha256=Rgvun_rjCoP8mKpF6x6kaneai8un_81ViDiKLAW94EQ,70
32
+ lintro/formatters/core/output_style.py,sha256=CuUp3BgL4YhVofKaXWuFtTn0QPHuQJQy1sd-7tbcBNg,795
33
+ lintro/formatters/core/table_descriptor.py,sha256=MJvFU3xDVsl7v0_HCCAtxGKom1dw1faZW_86fOk5aEQ,849
34
+ lintro/formatters/styles/__init__.py,sha256=rRGvbHhZpu09PJs0IbraFn3-yAYBxGVFv81hsnKkjiU,337
35
+ lintro/formatters/styles/csv.py,sha256=toQ-XmT-A9T2uwELQAdMPY_lzJbh_WQsmmHQXbEQ2kI,1066
36
+ lintro/formatters/styles/grid.py,sha256=54ZtwHsjitkyEjA6aoHCf3GWkMmBXp4fE3c39bjJITw,2908
37
+ lintro/formatters/styles/html.py,sha256=FVjucFJJ3tSoh9nI1NvjJYThv_oWgiBLk6iM7Z-kyoA,1556
38
+ lintro/formatters/styles/json.py,sha256=bVLyHnoUwEcCD-X8GPdIlg_J2FDhOdJRtMr6XcZC0B8,1964
39
+ lintro/formatters/styles/markdown.py,sha256=OsOjq7bNl0P4j0Pf8eu4PiCLPCoD80rK7vZE27r-LQY,1354
40
+ lintro/formatters/styles/plain.py,sha256=lRBnAFpww9Jscw1_cEehAE1W8wTXU-dSCI0auuhvAbU,1172
41
+ lintro/formatters/tools/__init__.py,sha256=pfM-hCwPuX6H3BYSEQhU8LPDMWoxd4vmmtVgeXx68jI,1653
42
+ lintro/formatters/tools/actionlint_formatter.py,sha256=GiUlD7DSW375seiPNLwdX3mOjtcn56T7z7ho4nQzEz8,2812
43
+ lintro/formatters/tools/bandit_formatter.py,sha256=WP7haIWGjIPuGZf1FQ5Ixi5DKIySHGdX-L7hZcKnFuw,3093
44
+ lintro/formatters/tools/black_formatter.py,sha256=YTe0Zc82p8cWwlq03bRaSJKOT8iHqXuGe2pR7aFhuB4,2092
45
+ lintro/formatters/tools/darglint_formatter.py,sha256=owYIP3QxtTantBwfd4w1GVfaRiaHFXSynxAntSKw7IU,2649
46
+ lintro/formatters/tools/eslint_formatter.py,sha256=0-lKkbUAftfCJyctywziYSART7ixD_zFbLL0HYsJ1cQ,3492
47
+ lintro/formatters/tools/hadolint_formatter.py,sha256=OWc2BYae31U2TdNcxXkGl0W6fTjVWkkaJV57X4l4jRw,2995
48
+ lintro/formatters/tools/markdownlint_formatter.py,sha256=CTddZRz6DUILQ7EtJpgDo9Ik8jaPMCqFek9j_qPMbDg,2931
49
+ lintro/formatters/tools/prettier_formatter.py,sha256=GYAyHppot5aG_pWF8QHz5GmWqmqgZwE6UmcUQZFesWE,2915
50
+ lintro/formatters/tools/pytest_formatter.py,sha256=D2DHzV_vo6eULx64JnBZZ0M8zWxEC1w-pgywFU5DrZM,5963
51
+ lintro/formatters/tools/ruff_formatter.py,sha256=i3jDrEQ_8bP_AhRAgaXYSp4eVCQnjapURugWFNZCmzg,4488
52
+ lintro/formatters/tools/yamllint_formatter.py,sha256=oEwkU-I4Upfc8--KAgfVAPSyYbeqkdsDXucxj3OwjIA,3093
53
+ lintro/models/__init__.py,sha256=E6tU5BnnaRWyMEf2cdiN_C3nvbRlWDfblKHrK0is7IU,73
54
+ lintro/models/core/__init__.py,sha256=mevoEG547VTotUsgyocEB72OknnGhExNWcfel7ZPLnI,54
55
+ lintro/models/core/tool.py,sha256=TWkVV_KOYziqCdq_f3Goft3PKWKByitsQ2VFiX6MVHM,2594
56
+ lintro/models/core/tool_config.py,sha256=FCfKQ_bz2yBg_FJ5xEud7TdF0PZ3fPp1Yjty02rbHR8,1004
57
+ lintro/models/core/tool_result.py,sha256=z5fexuCBt1ir0hvzojxVX-Abt6MNIT7_JvH5oyW_FlI,1319
58
+ lintro/parsers/__init__.py,sha256=WPpTaXIJYKdHJcSdAQD_ZMGLfQey9GSl3ygLbIq35Qw,1813
59
+ lintro/parsers/actionlint/__init__.py,sha256=N953d0kbJEOZE9cG4eq9BjiSErdk10GMrngV_tKjLvo,33
60
+ lintro/parsers/actionlint/actionlint_issue.py,sha256=H_BQr04KAGHpVp1qKqETcWLi3i-u6atl7ccDae-jqX8,636
61
+ lintro/parsers/actionlint/actionlint_parser.py,sha256=tvpPOi1dQrnpf7V2-3LMANH_UfDdecI4_AwDQpZOyU0,1898
62
+ lintro/parsers/bandit/__init__.py,sha256=LMXIVOoW1wnS0mXbiVY-htdkUvb1clRSfSn7X3L2SSw,206
63
+ lintro/parsers/bandit/bandit_issue.py,sha256=zdC6dLFmks_w9JjDWQ00BPSpCUUkilElby-Ut0PVLtE,1607
64
+ lintro/parsers/bandit/bandit_parser.py,sha256=d4KRH_U_4Exv-Fxq63yyx7F484yorKr2p8caDPCyKHs,3591
65
+ lintro/parsers/black/black_issue.py,sha256=V7aWAaOEN8uJQ0weuyGIkli-MRBAMH67Aa5vTXF0Igg,740
66
+ lintro/parsers/black/black_parser.py,sha256=mCbEy4aTRtxC_SKKPNK6hThGEu8C0m9EnliFW__Sa3Y,2958
67
+ lintro/parsers/darglint/__init__.py,sha256=r2ilRjf8WdHOvXIGsg4SmtYkRUR76DowWLA_n9sIOV0,55
68
+ lintro/parsers/darglint/darglint_issue.py,sha256=Gc07-PGvv4Kn4X85tnACLYB5FygNPthEe3fYodOaFoA,444
69
+ lintro/parsers/darglint/darglint_parser.py,sha256=pbIGnmHVKjf8OaxvhQbDWWXAFZEictb3FfuhoGv_I00,2046
70
+ lintro/parsers/eslint/__init__.py,sha256=pxSv4it5nCgO62BdRKfCTPA_M3sdAshON96Zq3U4eHA,231
71
+ lintro/parsers/eslint/eslint_issue.py,sha256=SD1LoxFHBfx9IIJEjHvvl8fGbuiV5rUhceev9aBA6JM,714
72
+ lintro/parsers/eslint/eslint_parser.py,sha256=_If2RNyMjY69YkEaZNICUQVgz4tcS-oMrYQ6dP6yEpE,1946
73
+ lintro/parsers/hadolint/__init__.py,sha256=vU33M_cj6fyg7aqZthz8MFUMfBIshX_Nx3DNuQmbHD4,30
74
+ lintro/parsers/hadolint/hadolint_issue.py,sha256=VlTzTPHcluFZihFL-Tkg7UuXp1fQcD03eDCH0sr1qHU,582
75
+ lintro/parsers/hadolint/hadolint_parser.py,sha256=Q7Hf6sL45s38O3C9dbBYzOpDlb0KGFj0U3Yry_ixdK8,1810
76
+ lintro/parsers/markdownlint/__init__.py,sha256=764w8V53peZqenGHvzKK3ICkpLvXc66cm53zdcbcVVY,269
77
+ lintro/parsers/markdownlint/markdownlint_issue.py,sha256=_uHpwgln7WRGK03360Lr9jCNM9th8Wh5gQWpWNzlcBA,547
78
+ lintro/parsers/markdownlint/markdownlint_parser.py,sha256=nVIX2mmHPm4dITT4bQfq7Agzgu3KUsW6YG_krDyVhHA,3867
79
+ lintro/parsers/prettier/__init__.py,sha256=jH8yEsh_X6TpwJs1V1cN1AmbDuQwQ9qWA-_dk0R9jOA,55
80
+ lintro/parsers/prettier/prettier_issue.py,sha256=DKxV9LXxAB-CxvOsbWVEAmfpXQJvd4ikHKGyMrg1Y60,569
81
+ lintro/parsers/prettier/prettier_parser.py,sha256=TDD0KRF3NMUL24Qjo4TwSOklkwZT-KmwRbTWKTJt434,2044
82
+ lintro/parsers/pytest/__init__.py,sha256=hWHHzwBDUXoJNDBieGv4hbG6KwPRbNP3a2IkPchMs-M,506
83
+ lintro/parsers/pytest/pytest_issue.py,sha256=kFk0HePh8k_Lu1RyA5cvgosRtjCiiw8CqAId-y9g3NU,756
84
+ lintro/parsers/pytest/pytest_parser.py,sha256=gr1vLloFLjL-b1ZMpBTCXJftF7e_OlVwBF2ccm01DEo,15905
85
+ lintro/parsers/ruff/__init__.py,sha256=1oT00c82qKfveRqa4FnSedAEQjQVrb9BspJEUQJn-Kk,26
86
+ lintro/parsers/ruff/ruff_issue.py,sha256=96ht6YWImOBiRTo0ATlM1PvVhgIwFiuN8810emm9nXo,1142
87
+ lintro/parsers/ruff/ruff_parser.py,sha256=DRGzpf55OnNJCTO01RSFK4GXr6Lav-_JzACdqDesuj0,4722
88
+ lintro/parsers/yamllint/__init__.py,sha256=ZZtw7Ref1EAbY-IwSz2UxJauGak6sKO10pfYsdE_sV8,55
89
+ lintro/parsers/yamllint/yamllint_issue.py,sha256=jWawdGUiTI1HADbhg8yEdZfC6yHcmk9FDzpr3PBUPBg,608
90
+ lintro/parsers/yamllint/yamllint_parser.py,sha256=ol44xhJcspnGIsEta8vVv1xi-sIbpB12CovmT94QFmQ,1947
91
+ lintro/tools/__init__.py,sha256=i3KdM02_T3Jxj-rJasNNzMwanDWz_vOgsVkwhS7n4dg,1493
92
+ lintro/tools/tool_enum.py,sha256=U0J6fK31E-dHLlDnDxKK5TB860uxlK1KRyy6y9-JO78,1214
93
+ lintro/tools/core/__init__.py,sha256=eUbc-DlpOcFaG_gKzy-veaOQAOkC5-OuItxI--p6I9c,59
94
+ lintro/tools/core/timeout_utils.py,sha256=DQcTGH0f-XPFALpVMI84BEoC6WnPihmz9cs3UapC2O8,3746
95
+ lintro/tools/core/tool_base.py,sha256=ND_oQYkPHsjO8dRKQ9OmimHEwwhluUXmQx4SpEGsws0,20604
96
+ lintro/tools/core/tool_manager.py,sha256=nVmHcvaj8xPOYuh7EmM_mhrsGLyOTtlQuPuU0MlV5Mk,7956
97
+ lintro/tools/core/version_requirements.py,sha256=veTuv-zOZoqLyNqvkQyfTHxnQr5oZb8UDOAXmbI0Sso,15478
98
+ lintro/tools/implementations/__init__.py,sha256=7DX7vWmRUVGYgrB2Rx1IbKpLWfXfVDLiOfz-UX2Crzs,64
99
+ lintro/tools/implementations/tool_actionlint.py,sha256=rEedh-T8HBN-2lG1Od-QEMWUNaWJXzVQs0NMQygpI9A,8849
100
+ lintro/tools/implementations/tool_bandit.py,sha256=h2IaRjYbJWTsNSJUdljzifTC12JLlpIbmfc00NMtNdA,16218
101
+ lintro/tools/implementations/tool_black.py,sha256=EDEBSsbf68diEfWp1OR9ujPvsAvIlIqWdyyy4c9fWXk,17954
102
+ lintro/tools/implementations/tool_darglint.py,sha256=QqdYf8XoQjO25JxIfcu9nbXNuoi5aFSEi3ssimgkfJ0,15980
103
+ lintro/tools/implementations/tool_eslint.py,sha256=hVguyDZ6KdqOdLq8d89SWZ-q8CElTDStUthKZcBLqlE,13048
104
+ lintro/tools/implementations/tool_hadolint.py,sha256=hRAzqtCBWwpx013fsGBHI7K9m-VxnHD_qMfHLv2WdFs,14769
105
+ lintro/tools/implementations/tool_markdownlint.py,sha256=mKpXhj1ynIZOkAqEMK8V06Zwkv8bAnIang3S_xQvpFw,12079
106
+ lintro/tools/implementations/tool_prettier.py,sha256=aAoACZortp0YKOfYAQasVopluCP-oPhVS6R8wMziqLw,21497
107
+ lintro/tools/implementations/tool_pytest.py,sha256=c1FpUKdJ7TYUt0zozjJivr9jkgXNHPgfgy8oFYIeuK8,12087
108
+ lintro/tools/implementations/tool_ruff.py,sha256=VgHJaUGlKdW3anUBjFfljLa6Zox4Q7J8oILgTN1P3Rs,34788
109
+ lintro/tools/implementations/tool_yamllint.py,sha256=FM5iTisipwoeKHqWWXCruqyJ8DAPurLneAVD4KrGgUk,25744
110
+ lintro/tools/implementations/pytest/pytest_command_builder.py,sha256=zcaEyIuC39WG_Gx__Vu6_Upd_fWZBpTyTSiFsRPcAvg,10577
111
+ lintro/tools/implementations/pytest/pytest_config.py,sha256=YZ66UpxKvuAZNr99B0-R2JjhxYCI1qPzJYdiMycVwOM,7715
112
+ lintro/tools/implementations/pytest/pytest_error_handler.py,sha256=C27UQl3Doas40C1xHD6d8nB7T0i4ksaCURP8NGp2tlE,4769
113
+ lintro/tools/implementations/pytest/pytest_executor.py,sha256=Tvf22RoCqMnpo4L18vV-u2zjdp1UV_2TtfCC0XTBwZc,4413
114
+ lintro/tools/implementations/pytest/pytest_handlers.py,sha256=wiIk8YxzMNvdCLcvEHYjm7B_m3h6CgzZMk2jkvHMjoc,10894
115
+ lintro/tools/implementations/pytest/pytest_option_validators.py,sha256=s703nXJ_oTiPu7qSPGyMKfZkp6xpwMpZc6ou7tMhMxo,9452
116
+ lintro/tools/implementations/pytest/pytest_output_processor.py,sha256=GjjuWhBvriiua-XichBl2HhbvEyeRPHBAQxEI9X6NBU,14599
117
+ lintro/tools/implementations/pytest/pytest_result_processor.py,sha256=gqEw5HIiEyNoQksNaYy8XNFnDJ61A4JYcP7t7dWK8pI,3658
118
+ lintro/tools/implementations/pytest/pytest_utils.py,sha256=_74hjQWLriPhrCDF5j2mz8lPGlZeJoQwkt31S_QLqjg,22529
119
+ lintro/utils/__init__.py,sha256=mUAkJXnTb91theOR_ue6FfGHtuSm3C466T_SH_KoWRE,70
120
+ lintro/utils/ascii_normalize_cli.py,sha256=Rlasrsy9FShCKGJ_9ti4VxJGP-I05vAtTmNMENbo_a4,2575
121
+ lintro/utils/config.py,sha256=8Kr7gcXAHK06gONu5-UQfr1HiuVg0eVC0unA-qlIMxk,2148
122
+ lintro/utils/console_logger.py,sha256=jfBbSw1AUiQQucRQwMiQWYW6gsDdHkIoglU1phtjsTY,41067
123
+ lintro/utils/formatting.py,sha256=khC9hYBva5xqBV1IqNcivRH9gRdvWw6u6mh2TZLTy7E,5346
124
+ lintro/utils/output_manager.py,sha256=oIE0g8LNVQcWSQOb1MbDVqGYPrOjBGuUZ4R80M1RevQ,10213
125
+ lintro/utils/path_utils.py,sha256=L-qYHcacXaQXSAkhcoZuKrSD99WaCsJcJgg8s-rEaS0,2861
126
+ lintro/utils/tool_executor.py,sha256=tLUukSJ8Qv9_wsm7bWd7Fp9JEtQUpUppOrqR5wmC_UE,38022
127
+ lintro/utils/tool_utils.py,sha256=OdNnrdJ_WesMXpsO8oICwYYmzaTDFNqMRleVH3xdivw,17105
128
+ lintro/utils/unified_config.py,sha256=JalLYnbzi0YxT8I5Syc-MIHtHQ0EwRaC4ANUcOvWbKg,30860
129
+ lintro-0.17.2.dist-info/licenses/LICENSE,sha256=CwaAnyD2psonDBBJjbqFUz00W8nQw-FGDlEGZReUV6A,1069
130
+ lintro-0.17.2.dist-info/METADATA,sha256=GikbCAcYPSm-A4lcHkomnG9wKZV9ZBvs5fXJTn0AW50,19985
131
+ lintro-0.17.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
132
+ lintro-0.17.2.dist-info/entry_points.txt,sha256=SYSk35jFyNLEHyrofSJsRv4qFN9NsT4VWSbvnTS9ov0,43
133
+ lintro-0.17.2.dist-info/top_level.txt,sha256=_D-7eyV6gNBOoIwHuf_h60wN_RWiw8GxB430Il9VKhU,7
134
+ lintro-0.17.2.dist-info/RECORD,,
@@ -1,96 +0,0 @@
1
- lintro/__init__.py,sha256=Ail-CkEgZsqrxbRM5lCx5xowe42QAZppsNICHedQsec,111
2
- lintro/__main__.py,sha256=McxM6wEcEeCLBHZs0F8xzT1PxVqJYkjtaPq1_-Nug-0,106
3
- lintro/cli.py,sha256=0apxBcqVxBZdCeXGMyaSdJYSntMIiCFwPwan1jUmPzM,2520
4
- lintro/ascii-art/fail.txt,sha256=gshKngSrz5FvJdP6g7lPygpLsLsZZh4etBU_wR7PXOw,56396
5
- lintro/ascii-art/success.txt,sha256=xhteIXcBvl_1QcFKMIS9CkjjCY8czdf9znP9AiB8oPU,90151
6
- lintro/cli_utils/__init__.py,sha256=F5P_fY_s-gwNZrnV1bzUOgHGb73QeZG1i-K_kfyJ8Yg,250
7
- lintro/cli_utils/commands/__init__.py,sha256=GGT-uG0gQLlHAqkrwfwqfCkD6DUMP4Tq1rgDgaYe5Ng,239
8
- lintro/cli_utils/commands/check.py,sha256=YnpuiX8-kTADnwxS_mZUPf_SkmqdyqTZFJLTDf7QSQ8,6229
9
- lintro/cli_utils/commands/format.py,sha256=scRuwm2xUzz0AA6QECJRrX8GX1L7fZfX8FGq-7cycTo,5181
10
- lintro/cli_utils/commands/list_tools.py,sha256=zGs5m3Dehk6HhS5WbBGTe_-GFrE-OsaAFQLZcm0MwMw,3495
11
- lintro/enums/__init__.py,sha256=ZwCDematwfGNPdZJN9j-yoGE5SkkoddRhoHz3F9pLMY,61
12
- lintro/enums/action.py,sha256=3gln8HUNpZzAyAAjQH-cOyW1nKCx9MT6S4rFDAVirdc,597
13
- lintro/enums/darglint_strictness.py,sha256=uzAznuAsEbOAJR4bY4v4pDQOyBVRkLGr6t-B7I-zvcs,762
14
- lintro/enums/group_by.py,sha256=Eb2rJpeTsPhCK-1xnsyogXrcH_pmNvDZ0dHRK1h4kzM,647
15
- lintro/enums/hadolint_enums.py,sha256=L7Srle5_wEhL5yooawkwbg-u-koBGkECcZiqx2gy24Q,1705
16
- lintro/enums/output_format.py,sha256=lw3omfjUJUdnrqFjUWVBRSBmWdrxIveS2z2JxFxYPlU,954
17
- lintro/enums/tool_name.py,sha256=LV09Wpuh2hkEo7Ei5BaIzSwqH8hLGZQ8NmmQOzwqqtI,796
18
- lintro/enums/tool_type.py,sha256=aa01LmewNr1DRuiHSJ0t5ZH3k933ZLbNYUC9gZXJDfI,829
19
- lintro/enums/yamllint_format.py,sha256=XzN9S2lHfVz2OKJgcamlXhR6wK9dW3tSCG-s8iiyjoI,802
20
- lintro/exceptions/__init__.py,sha256=IZclngSiIhDcihyx_-QhTZ__ISIGI1enJu7ytprcLPc,60
21
- lintro/exceptions/errors.py,sha256=QnELwMd6yTZVMN7nKRElhxLmxo4JeKtb-HDmVNcZ72M,374
22
- lintro/formatters/__init__.py,sha256=-G0RkbV5aTkHqGufasVYDwye8DH0t3iB_6p0Lh_05Ik,73
23
- lintro/formatters/core/__init__.py,sha256=Rgvun_rjCoP8mKpF6x6kaneai8un_81ViDiKLAW94EQ,70
24
- lintro/formatters/core/output_style.py,sha256=CuUp3BgL4YhVofKaXWuFtTn0QPHuQJQy1sd-7tbcBNg,795
25
- lintro/formatters/core/table_descriptor.py,sha256=MJvFU3xDVsl7v0_HCCAtxGKom1dw1faZW_86fOk5aEQ,849
26
- lintro/formatters/styles/__init__.py,sha256=rRGvbHhZpu09PJs0IbraFn3-yAYBxGVFv81hsnKkjiU,337
27
- lintro/formatters/styles/csv.py,sha256=toQ-XmT-A9T2uwELQAdMPY_lzJbh_WQsmmHQXbEQ2kI,1066
28
- lintro/formatters/styles/grid.py,sha256=54ZtwHsjitkyEjA6aoHCf3GWkMmBXp4fE3c39bjJITw,2908
29
- lintro/formatters/styles/html.py,sha256=FVjucFJJ3tSoh9nI1NvjJYThv_oWgiBLk6iM7Z-kyoA,1556
30
- lintro/formatters/styles/json.py,sha256=bVLyHnoUwEcCD-X8GPdIlg_J2FDhOdJRtMr6XcZC0B8,1964
31
- lintro/formatters/styles/markdown.py,sha256=OsOjq7bNl0P4j0Pf8eu4PiCLPCoD80rK7vZE27r-LQY,1354
32
- lintro/formatters/styles/plain.py,sha256=lRBnAFpww9Jscw1_cEehAE1W8wTXU-dSCI0auuhvAbU,1172
33
- lintro/formatters/tools/__init__.py,sha256=5HxvLscHFl-dYv0h_X6_-rEaszdVU-XPNtL-ZkliGvU,1289
34
- lintro/formatters/tools/actionlint_formatter.py,sha256=GiUlD7DSW375seiPNLwdX3mOjtcn56T7z7ho4nQzEz8,2812
35
- lintro/formatters/tools/bandit_formatter.py,sha256=WP7haIWGjIPuGZf1FQ5Ixi5DKIySHGdX-L7hZcKnFuw,3093
36
- lintro/formatters/tools/black_formatter.py,sha256=YTe0Zc82p8cWwlq03bRaSJKOT8iHqXuGe2pR7aFhuB4,2092
37
- lintro/formatters/tools/darglint_formatter.py,sha256=owYIP3QxtTantBwfd4w1GVfaRiaHFXSynxAntSKw7IU,2649
38
- lintro/formatters/tools/hadolint_formatter.py,sha256=OWc2BYae31U2TdNcxXkGl0W6fTjVWkkaJV57X4l4jRw,2995
39
- lintro/formatters/tools/prettier_formatter.py,sha256=GYAyHppot5aG_pWF8QHz5GmWqmqgZwE6UmcUQZFesWE,2915
40
- lintro/formatters/tools/ruff_formatter.py,sha256=i3jDrEQ_8bP_AhRAgaXYSp4eVCQnjapURugWFNZCmzg,4488
41
- lintro/formatters/tools/yamllint_formatter.py,sha256=oEwkU-I4Upfc8--KAgfVAPSyYbeqkdsDXucxj3OwjIA,3093
42
- lintro/models/__init__.py,sha256=E6tU5BnnaRWyMEf2cdiN_C3nvbRlWDfblKHrK0is7IU,73
43
- lintro/models/core/__init__.py,sha256=mevoEG547VTotUsgyocEB72OknnGhExNWcfel7ZPLnI,54
44
- lintro/models/core/tool.py,sha256=TWkVV_KOYziqCdq_f3Goft3PKWKByitsQ2VFiX6MVHM,2594
45
- lintro/models/core/tool_config.py,sha256=FCfKQ_bz2yBg_FJ5xEud7TdF0PZ3fPp1Yjty02rbHR8,1004
46
- lintro/models/core/tool_result.py,sha256=z5fexuCBt1ir0hvzojxVX-Abt6MNIT7_JvH5oyW_FlI,1319
47
- lintro/parsers/__init__.py,sha256=e2cdHTwELWVeewTLn33GTQHPV8A7QCT0rPmf0blm8A8,275
48
- lintro/parsers/actionlint/__init__.py,sha256=N953d0kbJEOZE9cG4eq9BjiSErdk10GMrngV_tKjLvo,33
49
- lintro/parsers/actionlint/actionlint_issue.py,sha256=H_BQr04KAGHpVp1qKqETcWLi3i-u6atl7ccDae-jqX8,636
50
- lintro/parsers/actionlint/actionlint_parser.py,sha256=tvpPOi1dQrnpf7V2-3LMANH_UfDdecI4_AwDQpZOyU0,1898
51
- lintro/parsers/black/black_issue.py,sha256=RwrT7n8aw4Nybakv83eXoeUxZlDtHwicWKNfrHYIYOg,507
52
- lintro/parsers/black/black_parser.py,sha256=mCbEy4aTRtxC_SKKPNK6hThGEu8C0m9EnliFW__Sa3Y,2958
53
- lintro/parsers/darglint/__init__.py,sha256=r2ilRjf8WdHOvXIGsg4SmtYkRUR76DowWLA_n9sIOV0,55
54
- lintro/parsers/darglint/darglint_issue.py,sha256=Gc07-PGvv4Kn4X85tnACLYB5FygNPthEe3fYodOaFoA,444
55
- lintro/parsers/darglint/darglint_parser.py,sha256=pbIGnmHVKjf8OaxvhQbDWWXAFZEictb3FfuhoGv_I00,2046
56
- lintro/parsers/hadolint/__init__.py,sha256=vU33M_cj6fyg7aqZthz8MFUMfBIshX_Nx3DNuQmbHD4,30
57
- lintro/parsers/hadolint/hadolint_issue.py,sha256=VlTzTPHcluFZihFL-Tkg7UuXp1fQcD03eDCH0sr1qHU,582
58
- lintro/parsers/hadolint/hadolint_parser.py,sha256=Q7Hf6sL45s38O3C9dbBYzOpDlb0KGFj0U3Yry_ixdK8,1810
59
- lintro/parsers/prettier/__init__.py,sha256=jH8yEsh_X6TpwJs1V1cN1AmbDuQwQ9qWA-_dk0R9jOA,55
60
- lintro/parsers/prettier/prettier_issue.py,sha256=DKxV9LXxAB-CxvOsbWVEAmfpXQJvd4ikHKGyMrg1Y60,569
61
- lintro/parsers/prettier/prettier_parser.py,sha256=TDD0KRF3NMUL24Qjo4TwSOklkwZT-KmwRbTWKTJt434,2044
62
- lintro/parsers/ruff/__init__.py,sha256=1oT00c82qKfveRqa4FnSedAEQjQVrb9BspJEUQJn-Kk,26
63
- lintro/parsers/ruff/ruff_issue.py,sha256=96ht6YWImOBiRTo0ATlM1PvVhgIwFiuN8810emm9nXo,1142
64
- lintro/parsers/ruff/ruff_parser.py,sha256=DRGzpf55OnNJCTO01RSFK4GXr6Lav-_JzACdqDesuj0,4722
65
- lintro/parsers/yamllint/__init__.py,sha256=ZZtw7Ref1EAbY-IwSz2UxJauGak6sKO10pfYsdE_sV8,55
66
- lintro/parsers/yamllint/yamllint_issue.py,sha256=jWawdGUiTI1HADbhg8yEdZfC6yHcmk9FDzpr3PBUPBg,608
67
- lintro/parsers/yamllint/yamllint_parser.py,sha256=ol44xhJcspnGIsEta8vVv1xi-sIbpB12CovmT94QFmQ,1947
68
- lintro/tools/__init__.py,sha256=7uVo7qfdr9I_OOdF--0l16Gip6XhAG1QxPsuEWgHMko,1411
69
- lintro/tools/tool_enum.py,sha256=RkJcfEpM_lFWp2y1rFqZdr3qOzYVcSoVBt3XVbtO4Sg,926
70
- lintro/tools/core/__init__.py,sha256=eUbc-DlpOcFaG_gKzy-veaOQAOkC5-OuItxI--p6I9c,59
71
- lintro/tools/core/tool_base.py,sha256=yOEvReleksIV_t_aB4PZv6-PgXZTrHTnz4SDPSr_MSk,13480
72
- lintro/tools/core/tool_manager.py,sha256=yKQONy17t7-fq1k9dkrMk6lZaAvaSwp7-JcvJFZMoYc,5103
73
- lintro/tools/implementations/__init__.py,sha256=7DX7vWmRUVGYgrB2Rx1IbKpLWfXfVDLiOfz-UX2Crzs,64
74
- lintro/tools/implementations/tool_actionlint.py,sha256=7b1pUxs9Ln6KmoLiRQBmyDeq9SmgZ08e0DxleM9NEt8,5466
75
- lintro/tools/implementations/tool_bandit.py,sha256=5HhwwHTmXiOlxK9UlfmnGqEtHJnMkD8ryiVHI_AN3s0,15523
76
- lintro/tools/implementations/tool_black.py,sha256=x1U6NhdRxxYE5Tmvh-LoxcWtIkwHceeJWMUROa9tAJ4,9680
77
- lintro/tools/implementations/tool_darglint.py,sha256=1G_gxjhkFNNCVCSkMDAgicYEZJ6JcI_NGX47Sg3a1vM,9561
78
- lintro/tools/implementations/tool_hadolint.py,sha256=NfHLoThp23V-n5chSfrBZetleXsRR4oYxkLxOkJxU0g,11479
79
- lintro/tools/implementations/tool_prettier.py,sha256=tTw3yEn6RR2rCBoZdeDWy6r06Sfd_jCR2fLCBj4MDoY,9783
80
- lintro/tools/implementations/tool_ruff.py,sha256=v6ROLphXuX90sd_AXuQcn3z-8PqCmYXPkbxMlAZcbaw,26174
81
- lintro/tools/implementations/tool_yamllint.py,sha256=0powR9F3FkIq-b7PI0-XWdh7nx7rR3HVMtvEaz_NWeA,8831
82
- lintro/utils/__init__.py,sha256=mUAkJXnTb91theOR_ue6FfGHtuSm3C466T_SH_KoWRE,70
83
- lintro/utils/ascii_normalize_cli.py,sha256=Rlasrsy9FShCKGJ_9ti4VxJGP-I05vAtTmNMENbo_a4,2575
84
- lintro/utils/config.py,sha256=3AVwNAteT-enN6Ica8jJbPwEFO94i4F7uWiEA1HSpJY,1427
85
- lintro/utils/console_logger.py,sha256=N0n5LomG6MDqu4tSPbmhBsIB6lzpRl5M53tZx6EoF4k,33104
86
- lintro/utils/formatting.py,sha256=khC9hYBva5xqBV1IqNcivRH9gRdvWw6u6mh2TZLTy7E,5346
87
- lintro/utils/output_manager.py,sha256=oIE0g8LNVQcWSQOb1MbDVqGYPrOjBGuUZ4R80M1RevQ,10213
88
- lintro/utils/path_utils.py,sha256=NJP3vjVDcRBgUHtYNrpL0tRa0Sc3oQhGX3_2WWzdZE4,1395
89
- lintro/utils/tool_executor.py,sha256=PNUuWkQj4TWI9UHVvZUpWoDkU00MAd1o5_VhG-iviCo,26124
90
- lintro/utils/tool_utils.py,sha256=T3A5xf4zokUMPVzWzEn3f0M14EcDxoeRo-jf5yXEoyI,15613
91
- lintro-0.13.2.dist-info/licenses/LICENSE,sha256=CwaAnyD2psonDBBJjbqFUz00W8nQw-FGDlEGZReUV6A,1069
92
- lintro-0.13.2.dist-info/METADATA,sha256=fCsztQxGFnuQDksRXJBLrH0Zaps9T2h7oz33EqaeBbM,16194
93
- lintro-0.13.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
- lintro-0.13.2.dist-info/entry_points.txt,sha256=SYSk35jFyNLEHyrofSJsRv4qFN9NsT4VWSbvnTS9ov0,43
95
- lintro-0.13.2.dist-info/top_level.txt,sha256=_D-7eyV6gNBOoIwHuf_h60wN_RWiw8GxB430Il9VKhU,7
96
- lintro-0.13.2.dist-info/RECORD,,