lintro 0.3.2__tar.gz

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.

Files changed (156) hide show
  1. lintro-0.3.2/LICENSE +21 -0
  2. lintro-0.3.2/MANIFEST.in +17 -0
  3. lintro-0.3.2/PKG-INFO +338 -0
  4. lintro-0.3.2/README.md +267 -0
  5. lintro-0.3.2/assets/images/coverage-badge.svg +21 -0
  6. lintro-0.3.2/assets/images/lintro.png +0 -0
  7. lintro-0.3.2/docs/README.md +193 -0
  8. lintro-0.3.2/docs/configuration.md +618 -0
  9. lintro-0.3.2/docs/contributing.md +83 -0
  10. lintro-0.3.2/docs/coverage-setup.md +42 -0
  11. lintro-0.3.2/docs/docker.md +380 -0
  12. lintro-0.3.2/docs/getting-started.md +433 -0
  13. lintro-0.3.2/docs/github-integration.md +444 -0
  14. lintro-0.3.2/docs/lintro-self-use.md +131 -0
  15. lintro-0.3.2/docs/style-guide.md +452 -0
  16. lintro-0.3.2/docs/tool-analysis/README.md +122 -0
  17. lintro-0.3.2/docs/tool-analysis/darglint-analysis.md +208 -0
  18. lintro-0.3.2/docs/tool-analysis/hadolint-analysis.md +233 -0
  19. lintro-0.3.2/docs/tool-analysis/prettier-analysis.md +141 -0
  20. lintro-0.3.2/docs/tool-analysis/ruff-analysis.md +231 -0
  21. lintro-0.3.2/docs/tool-analysis/yamllint-analysis.md +222 -0
  22. lintro-0.3.2/lintro/__init__.py +3 -0
  23. lintro-0.3.2/lintro/__main__.py +6 -0
  24. lintro-0.3.2/lintro/ascii-art/fail.txt +404 -0
  25. lintro-0.3.2/lintro/ascii-art/success.txt +484 -0
  26. lintro-0.3.2/lintro/cli.py +70 -0
  27. lintro-0.3.2/lintro/cli_utils/__init__.py +7 -0
  28. lintro-0.3.2/lintro/cli_utils/commands/__init__.py +7 -0
  29. lintro-0.3.2/lintro/cli_utils/commands/check.py +210 -0
  30. lintro-0.3.2/lintro/cli_utils/commands/format.py +167 -0
  31. lintro-0.3.2/lintro/cli_utils/commands/list_tools.py +114 -0
  32. lintro-0.3.2/lintro/enums/__init__.py +0 -0
  33. lintro-0.3.2/lintro/enums/action.py +29 -0
  34. lintro-0.3.2/lintro/enums/darglint_strictness.py +22 -0
  35. lintro-0.3.2/lintro/enums/group_by.py +31 -0
  36. lintro-0.3.2/lintro/enums/hadolint_enums.py +46 -0
  37. lintro-0.3.2/lintro/enums/output_format.py +40 -0
  38. lintro-0.3.2/lintro/enums/tool_name.py +36 -0
  39. lintro-0.3.2/lintro/enums/tool_type.py +27 -0
  40. lintro-0.3.2/lintro/enums/yamllint_format.py +22 -0
  41. lintro-0.3.2/lintro/exceptions/__init__.py +0 -0
  42. lintro-0.3.2/lintro/exceptions/errors.py +15 -0
  43. lintro-0.3.2/lintro/formatters/__init__.py +0 -0
  44. lintro-0.3.2/lintro/formatters/core/__init__.py +0 -0
  45. lintro-0.3.2/lintro/formatters/core/output_style.py +21 -0
  46. lintro-0.3.2/lintro/formatters/core/table_descriptor.py +24 -0
  47. lintro-0.3.2/lintro/formatters/styles/__init__.py +17 -0
  48. lintro-0.3.2/lintro/formatters/styles/csv.py +41 -0
  49. lintro-0.3.2/lintro/formatters/styles/grid.py +91 -0
  50. lintro-0.3.2/lintro/formatters/styles/html.py +48 -0
  51. lintro-0.3.2/lintro/formatters/styles/json.py +61 -0
  52. lintro-0.3.2/lintro/formatters/styles/markdown.py +41 -0
  53. lintro-0.3.2/lintro/formatters/styles/plain.py +39 -0
  54. lintro-0.3.2/lintro/formatters/tools/__init__.py +35 -0
  55. lintro-0.3.2/lintro/formatters/tools/darglint_formatter.py +72 -0
  56. lintro-0.3.2/lintro/formatters/tools/hadolint_formatter.py +84 -0
  57. lintro-0.3.2/lintro/formatters/tools/prettier_formatter.py +76 -0
  58. lintro-0.3.2/lintro/formatters/tools/ruff_formatter.py +116 -0
  59. lintro-0.3.2/lintro/formatters/tools/yamllint_formatter.py +87 -0
  60. lintro-0.3.2/lintro/models/__init__.py +0 -0
  61. lintro-0.3.2/lintro/models/core/__init__.py +0 -0
  62. lintro-0.3.2/lintro/models/core/tool.py +104 -0
  63. lintro-0.3.2/lintro/models/core/tool_config.py +23 -0
  64. lintro-0.3.2/lintro/models/core/tool_result.py +39 -0
  65. lintro-0.3.2/lintro/parsers/__init__.py +0 -0
  66. lintro-0.3.2/lintro/parsers/darglint/__init__.py +0 -0
  67. lintro-0.3.2/lintro/parsers/darglint/darglint_issue.py +9 -0
  68. lintro-0.3.2/lintro/parsers/darglint/darglint_parser.py +62 -0
  69. lintro-0.3.2/lintro/parsers/hadolint/__init__.py +1 -0
  70. lintro-0.3.2/lintro/parsers/hadolint/hadolint_issue.py +24 -0
  71. lintro-0.3.2/lintro/parsers/hadolint/hadolint_parser.py +65 -0
  72. lintro-0.3.2/lintro/parsers/prettier/__init__.py +0 -0
  73. lintro-0.3.2/lintro/parsers/prettier/prettier_issue.py +10 -0
  74. lintro-0.3.2/lintro/parsers/prettier/prettier_parser.py +60 -0
  75. lintro-0.3.2/lintro/parsers/ruff/__init__.py +1 -0
  76. lintro-0.3.2/lintro/parsers/ruff/ruff_issue.py +43 -0
  77. lintro-0.3.2/lintro/parsers/ruff/ruff_parser.py +89 -0
  78. lintro-0.3.2/lintro/parsers/yamllint/__init__.py +0 -0
  79. lintro-0.3.2/lintro/parsers/yamllint/yamllint_issue.py +24 -0
  80. lintro-0.3.2/lintro/parsers/yamllint/yamllint_parser.py +68 -0
  81. lintro-0.3.2/lintro/tools/__init__.py +40 -0
  82. lintro-0.3.2/lintro/tools/core/__init__.py +0 -0
  83. lintro-0.3.2/lintro/tools/core/tool_base.py +320 -0
  84. lintro-0.3.2/lintro/tools/core/tool_manager.py +167 -0
  85. lintro-0.3.2/lintro/tools/implementations/__init__.py +0 -0
  86. lintro-0.3.2/lintro/tools/implementations/tool_darglint.py +245 -0
  87. lintro-0.3.2/lintro/tools/implementations/tool_hadolint.py +302 -0
  88. lintro-0.3.2/lintro/tools/implementations/tool_prettier.py +270 -0
  89. lintro-0.3.2/lintro/tools/implementations/tool_ruff.py +618 -0
  90. lintro-0.3.2/lintro/tools/implementations/tool_yamllint.py +240 -0
  91. lintro-0.3.2/lintro/tools/tool_enum.py +17 -0
  92. lintro-0.3.2/lintro/utils/__init__.py +0 -0
  93. lintro-0.3.2/lintro/utils/ascii_normalize_cli.py +84 -0
  94. lintro-0.3.2/lintro/utils/config.py +39 -0
  95. lintro-0.3.2/lintro/utils/console_logger.py +783 -0
  96. lintro-0.3.2/lintro/utils/formatting.py +173 -0
  97. lintro-0.3.2/lintro/utils/output_manager.py +301 -0
  98. lintro-0.3.2/lintro/utils/path_utils.py +41 -0
  99. lintro-0.3.2/lintro/utils/tool_executor.py +443 -0
  100. lintro-0.3.2/lintro/utils/tool_utils.py +431 -0
  101. lintro-0.3.2/lintro.egg-info/PKG-INFO +338 -0
  102. lintro-0.3.2/lintro.egg-info/SOURCES.txt +154 -0
  103. lintro-0.3.2/lintro.egg-info/dependency_links.txt +1 -0
  104. lintro-0.3.2/lintro.egg-info/entry_points.txt +2 -0
  105. lintro-0.3.2/lintro.egg-info/requires.txt +31 -0
  106. lintro-0.3.2/lintro.egg-info/top_level.txt +1 -0
  107. lintro-0.3.2/pyproject.toml +66 -0
  108. lintro-0.3.2/setup.cfg +4 -0
  109. lintro-0.3.2/test_samples/Dockerfile.violations +38 -0
  110. lintro-0.3.2/test_samples/darglint_violations.py +149 -0
  111. lintro-0.3.2/test_samples/prettier_violations.js +46 -0
  112. lintro-0.3.2/test_samples/ruff_clean.py +14 -0
  113. lintro-0.3.2/test_samples/ruff_violations.py +29 -0
  114. lintro-0.3.2/test_samples/yaml_violations.yml +42 -0
  115. lintro-0.3.2/tests/__init__.py +1 -0
  116. lintro-0.3.2/tests/cli/__init__.py +1 -0
  117. lintro-0.3.2/tests/cli/conftest.py +41 -0
  118. lintro-0.3.2/tests/cli/test_cli.py +110 -0
  119. lintro-0.3.2/tests/conftest.py +157 -0
  120. lintro-0.3.2/tests/formatters/__init__.py +1 -0
  121. lintro-0.3.2/tests/formatters/conftest.py +60 -0
  122. lintro-0.3.2/tests/formatters/test_formatters.py +190 -0
  123. lintro-0.3.2/tests/integration/__init__.py +1 -0
  124. lintro-0.3.2/tests/integration/conftest.py +61 -0
  125. lintro-0.3.2/tests/integration/test_darglint_integration.py +133 -0
  126. lintro-0.3.2/tests/integration/test_hadolint_integration.py +299 -0
  127. lintro-0.3.2/tests/integration/test_prettier_integration.py +167 -0
  128. lintro-0.3.2/tests/integration/test_ruff_integration.py +470 -0
  129. lintro-0.3.2/tests/integration/test_yamllint_integration.py +326 -0
  130. lintro-0.3.2/tests/scripts/__init__.py +1 -0
  131. lintro-0.3.2/tests/scripts/test_delete_previous_lintro_comments.py +100 -0
  132. lintro-0.3.2/tests/scripts/test_extract_version.py +39 -0
  133. lintro-0.3.2/tests/scripts/test_script_environment.py +385 -0
  134. lintro-0.3.2/tests/scripts/test_shell_scripts.py +353 -0
  135. lintro-0.3.2/tests/test_documentation.py +373 -0
  136. lintro-0.3.2/tests/unit/__init__.py +1 -0
  137. lintro-0.3.2/tests/unit/test_ascii_normalize.py +38 -0
  138. lintro-0.3.2/tests/unit/test_cli_commands.py +19 -0
  139. lintro-0.3.2/tests/unit/test_cli_commands_more.py +49 -0
  140. lintro-0.3.2/tests/unit/test_cli_programmatic.py +81 -0
  141. lintro-0.3.2/tests/unit/test_config_loader.py +30 -0
  142. lintro-0.3.2/tests/unit/test_console_logger.py +87 -0
  143. lintro-0.3.2/tests/unit/test_console_logger_more.py +24 -0
  144. lintro-0.3.2/tests/unit/test_enums_and_normalizers.py +54 -0
  145. lintro-0.3.2/tests/unit/test_exceptions.py +20 -0
  146. lintro-0.3.2/tests/unit/test_formatters_tables.py +91 -0
  147. lintro-0.3.2/tests/unit/test_output_manager_reports.py +34 -0
  148. lintro-0.3.2/tests/unit/test_tool_executor.py +282 -0
  149. lintro-0.3.2/tests/unit/test_tool_manager.py +64 -0
  150. lintro-0.3.2/tests/unit/test_tool_utils.py +62 -0
  151. lintro-0.3.2/tests/unit/test_tool_utils_more.py +51 -0
  152. lintro-0.3.2/tests/utils/__init__.py +1 -0
  153. lintro-0.3.2/tests/utils/conftest.py +42 -0
  154. lintro-0.3.2/tests/utils/test_formatting.py +45 -0
  155. lintro-0.3.2/tests/utils/test_output_manager.py +148 -0
  156. lintro-0.3.2/tests/utils/test_path_utils.py +82 -0
lintro-0.3.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Eitel Dagnin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,17 @@
1
+ include LICENSE
2
+ include README.md
3
+ include pyproject.toml
4
+
5
+ # Include assets directory and its contents
6
+ recursive-include assets *
7
+ recursive-include lintro/ascii-art *
8
+
9
+ # Include any additional documentation
10
+ recursive-include docs *.md
11
+
12
+ # Include test files for development
13
+ recursive-include tests *.py
14
+ recursive-include test_samples *.py
15
+ recursive-include test_samples *.yml
16
+ recursive-include test_samples *.js
17
+ recursive-include test_samples Dockerfile.*
lintro-0.3.2/PKG-INFO ADDED
@@ -0,0 +1,338 @@
1
+ Metadata-Version: 2.4
2
+ Name: lintro
3
+ Version: 0.3.2
4
+ Summary: A unified CLI tool for code formatting, linting, and quality assurance
5
+ Author-email: TurboCoder13 <turbocoder13@gmail.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2024 Eitel Dagnin
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+ Project-URL: Homepage, https://github.com/TurboCoder13/py-lintro
28
+ Project-URL: Documentation, https://github.com/TurboCoder13/py-lintro/docs
29
+ Project-URL: Source, https://github.com/TurboCoder13/py-lintro
30
+ Keywords: linting,formatting,code-quality,cli,python,javascript,yaml,docker
31
+ Classifier: Development Status :: 4 - Beta
32
+ Classifier: Intended Audience :: Developers
33
+ Classifier: Operating System :: OS Independent
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: Programming Language :: Python :: 3.13
36
+ Classifier: Topic :: Software Development :: Quality Assurance
37
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
38
+ Classifier: Topic :: Utilities
39
+ Requires-Python: <3.14,>=3.13
40
+ Description-Content-Type: text/markdown
41
+ License-File: LICENSE
42
+ Requires-Dist: click==8.2.1
43
+ Requires-Dist: coverage-badge==1.1.2
44
+ Requires-Dist: darglint==1.8.1
45
+ Requires-Dist: loguru==0.7.3
46
+ Requires-Dist: tabulate==0.9.0
47
+ Requires-Dist: yamllint==1.37.1
48
+ Requires-Dist: httpx==0.28.1
49
+ Requires-Dist: toml==0.10.2
50
+ Requires-Dist: python-semantic-release>=9.12.0
51
+ Provides-Extra: dev
52
+ Requires-Dist: pytest==8.4.1; extra == "dev"
53
+ Requires-Dist: pytest-cov==6.2.1; extra == "dev"
54
+ Requires-Dist: pytest-mock==3.14.1; extra == "dev"
55
+ Requires-Dist: pytest-xdist==3.6.1; extra == "dev"
56
+ Requires-Dist: tox==4.28.4; extra == "dev"
57
+ Requires-Dist: allure-pytest==2.15.0; extra == "dev"
58
+ Requires-Dist: ruff; extra == "dev"
59
+ Requires-Dist: mypy; extra == "dev"
60
+ Requires-Dist: coverage-badge==1.1.2; extra == "dev"
61
+ Requires-Dist: python-semantic-release==9.12.0; extra == "dev"
62
+ Provides-Extra: test
63
+ Requires-Dist: pytest==8.4.1; extra == "test"
64
+ Requires-Dist: pytest-cov==6.2.1; extra == "test"
65
+ Requires-Dist: pytest-mock==3.14.1; extra == "test"
66
+ Requires-Dist: pytest-xdist==3.6.1; extra == "test"
67
+ Provides-Extra: typing
68
+ Requires-Dist: types-setuptools==80.9.0.20250809; extra == "typing"
69
+ Requires-Dist: types-tabulate==0.9.0.20241207; extra == "typing"
70
+ Dynamic: license-file
71
+
72
+ # Lintro
73
+
74
+ <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;">
75
+
76
+ A comprehensive CLI tool that unifies various code formatting, linting, and quality assurance tools under a single command-line interface.
77
+
78
+ ## What is Lintro?
79
+
80
+ 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
+
82
+ ### Why Lintro?
83
+
84
+ - **🚀 Unified Interface**: One command to run all your linting and formatting tools
85
+ - **🎯 Consistent Output**: Beautiful, standardized output formats across all tools
86
+ - **🔧 Auto-fixing**: Automatically fix issues where possible
87
+ - **🐳 Docker Ready**: Run in isolated containers for consistent environments
88
+ - **📊 Rich Reporting**: Multiple output formats (grid, JSON, HTML, CSV, Markdown)
89
+ - **⚡ Fast**: Optimized execution with efficient tool management
90
+ - **🔒 Reliable**: Comprehensive test suite with 84% coverage
91
+
92
+ [![Python](https://img.shields.io/badge/python-3.13-blue)](https://www.python.org/downloads/)
93
+ [![Coverage](assets/images/coverage-badge.svg)](docs/coverage-setup.md)
94
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
95
+ [![Tests](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/test-and-coverage.yml?label=tests)](https://github.com/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml)
96
+ [![CI](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/ci-lintro-analysis.yml?label=ci)](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml)
97
+ [![Docker](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/docker-build-publish.yml?label=docker&logo=docker)](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml)
98
+ [![Code Style](https://img.shields.io/badge/code%20style-ruff-black-blue)](https://github.com/astral-sh/ruff)
99
+ [![PyPI](https://img.shields.io/pypi/v/lintro?label=pypi)](https://pypi.org/project/lintro/)
100
+
101
+ ## Features
102
+
103
+ - **Unified CLI** for multiple code quality tools
104
+ - **Multi-language support** - Python, JavaScript, YAML, Docker, and more
105
+ - **Auto-fixing** capabilities where possible
106
+ - **Beautiful output formatting** with table views
107
+ - **Docker support** for containerized environments
108
+ - **CI/CD integration** with GitHub Actions
109
+
110
+ ## Supported Tools
111
+
112
+ | Tool | Language/Format | Purpose | Auto-fix |
113
+ | ------------ | --------------- | -------------------- | -------- |
114
+ | **Ruff** | Python | Linting & Formatting | ✅ |
115
+ | **Darglint** | Python | Docstring Validation | - |
116
+ | **Prettier** | JS/TS/JSON | Code Formatting | ✅ |
117
+ | **Yamllint** | YAML | Syntax & Style | - |
118
+ | **Hadolint** | Dockerfile | Best Practices | - |
119
+
120
+ ## Quick Start
121
+
122
+ ### Installation
123
+
124
+ #### From PyPI (Recommended)
125
+
126
+ ```bash
127
+ pip install lintro
128
+ ```
129
+
130
+ #### Development Installation
131
+
132
+ ```bash
133
+ # Clone and install in development mode
134
+ git clone https://github.com/TurboCoder13/py-lintro.git
135
+ cd py-lintro
136
+ pip install -e .
137
+ ```
138
+
139
+ ### Basic Usage
140
+
141
+ ```bash
142
+ # Check all files for issues
143
+ lintro check
144
+
145
+ # Auto-fix issues where possible
146
+ lintro format
147
+
148
+ # Use grid formatting for better readability
149
+ lintro check --output-format grid
150
+
151
+ # Run specific tools only
152
+ lintro check --tools ruff,prettier
153
+
154
+ # List all available tools
155
+ lintro list-tools
156
+ ```
157
+
158
+ ## Docker Usage
159
+
160
+ ### Quick Start with Published Image
161
+
162
+ ```bash
163
+ # Run Lintro directly from GitHub Container Registry
164
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
165
+
166
+ # With specific formatting
167
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --output-format grid
168
+
169
+ # Run specific tools only
170
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --tools ruff,prettier
171
+ ```
172
+
173
+ ### Development Setup
174
+
175
+ ```bash
176
+ # Clone and setup
177
+ git clone https://github.com/TurboCoder13/py-lintro.git
178
+ cd py-lintro
179
+ chmod +x scripts/**/*.sh
180
+
181
+ # Run with local Docker build
182
+ ./scripts/docker/docker-lintro.sh check --output-format grid
183
+ ```
184
+
185
+ See [Docker Documentation](docs/docker.md) for detailed usage.
186
+
187
+ ## Advanced Usage
188
+
189
+ ### Output Formatting
190
+
191
+ ```bash
192
+ # Grid format (recommended)
193
+ lintro check --output-format grid --group-by code
194
+
195
+ # Export to file
196
+ lintro check --output report.txt
197
+
198
+ # Different grouping options
199
+ lintro check --output-format grid --group-by file # Group by file
200
+ lintro check --output-format grid --group-by code # Group by error type
201
+ ```
202
+
203
+ ### Tool-Specific Options
204
+
205
+ ```bash
206
+ # Exclude patterns
207
+ lintro check --exclude "migrations,node_modules,dist"
208
+
209
+ # Tool-specific options
210
+ lintro check --tool-options "ruff:--line-length=88,prettier:--print-width=80"
211
+
212
+ # Ruff fix configuration (fmt):
213
+ # By default, fmt applies both lint fixes and formatting for Ruff.
214
+ # Disable either stage as needed:
215
+ lintro format --tool-options ruff:lint_fix=False # format only
216
+ lintro format --tool-options ruff:format=False # lint fixes only
217
+ ```
218
+
219
+ ### CI/CD Integration
220
+
221
+ Lintro includes pre-built GitHub Actions workflows:
222
+
223
+ - **Automated code quality checks** on pull requests
224
+ - **Coverage reporting** with badges
225
+ - **Multi-tool analysis** across your entire codebase
226
+
227
+ See [GitHub Integration Guide](docs/github-integration.md) for setup instructions.
228
+
229
+ ## Documentation
230
+
231
+ For comprehensive documentation, see our **[Documentation Hub](docs/README.md)** which includes:
232
+
233
+ - **[Getting Started](docs/getting-started.md)** - Installation and basic usage
234
+ - **[Docker Usage](docs/docker.md)** - Containerized development
235
+ - **[GitHub Integration](docs/github-integration.md)** - CI/CD setup
236
+ - **[Configuration](docs/configuration.md)** - Tool configuration options
237
+ - **[Contributing](docs/contributing.md)** - Developer guide
238
+ - **[Tool Analysis](docs/tool-analysis/)** - Detailed tool comparisons
239
+
240
+ ## Development
241
+
242
+ ```bash
243
+ # Run tests
244
+ ./scripts/local/run-tests.sh
245
+
246
+ # Run Lintro on itself
247
+ ./scripts/local/local-lintro.sh check --output-format grid
248
+
249
+ # Docker development
250
+ ./scripts/docker/docker-test.sh
251
+ ./scripts/docker/docker-lintro.sh check --output-format grid
252
+ ```
253
+
254
+ For detailed information about all available scripts, see [Scripts Documentation](scripts/README.md).
255
+
256
+ ## Dependencies
257
+
258
+ - **Renovate** for automated dependency updates
259
+ - **Python 3.13+** with UV package manager
260
+ - **Optional**: Docker for containerized usage
261
+
262
+ ## License
263
+
264
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
265
+
266
+ ## Troubleshooting
267
+
268
+ ### Common Issues
269
+
270
+ #### "Command not found: lintro"
271
+
272
+ **Solution**: Ensure Lintro is installed correctly:
273
+
274
+ ```bash
275
+ pip install lintro
276
+ # or for development
277
+ pip install -e .
278
+ ```
279
+
280
+ #### "Tool not found" errors
281
+
282
+ **Solution**: Install the required tools or use Docker:
283
+
284
+ ```bash
285
+ # Install tools individually
286
+ pip install ruff darglint
287
+ npm install -g prettier
288
+ pip install yamllint
289
+ # or use Docker (recommended)
290
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
291
+ ```
292
+
293
+ #### Permission errors on Windows
294
+
295
+ **Solution**: Run as administrator or use WSL:
296
+
297
+ ```bash
298
+ # Use WSL for better compatibility
299
+ wsl
300
+ pip install lintro
301
+ ```
302
+
303
+ #### Docker permission issues
304
+
305
+ **Solution**: Add your user to the docker group:
306
+
307
+ ```bash
308
+ sudo usermod -aG docker $USER
309
+ # Log out and back in
310
+ ```
311
+
312
+ #### Slow performance
313
+
314
+ **Solution**: Use exclude patterns and specific tools:
315
+
316
+ ```bash
317
+ # Exclude large directories
318
+ lintro check --exclude "node_modules,venv,.git"
319
+
320
+ # Run specific tools only
321
+ lintro check --tools ruff,prettier
322
+ ```
323
+
324
+ ### Getting Help
325
+
326
+ - 📖 **Documentation**: Check the [docs/](docs/) directory
327
+ - 🐛 **Bug Reports**: Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
328
+ - 💡 **Questions**: Use the [question template](.github/ISSUE_TEMPLATE/question.md)
329
+ - 🚀 **Feature Requests**: Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
330
+
331
+ ## Contributing
332
+
333
+ We welcome contributions! See our [Contributing Guide](docs/contributing.md) for details on:
334
+
335
+ - Adding new tools
336
+ - Reporting bugs
337
+ - Submitting features
338
+ - Code style guidelines
lintro-0.3.2/README.md ADDED
@@ -0,0 +1,267 @@
1
+ # Lintro
2
+
3
+ <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;">
4
+
5
+ A comprehensive CLI tool that unifies various code formatting, linting, and quality assurance tools under a single command-line interface.
6
+
7
+ ## What is Lintro?
8
+
9
+ 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.
10
+
11
+ ### Why Lintro?
12
+
13
+ - **🚀 Unified Interface**: One command to run all your linting and formatting tools
14
+ - **🎯 Consistent Output**: Beautiful, standardized output formats across all tools
15
+ - **🔧 Auto-fixing**: Automatically fix issues where possible
16
+ - **🐳 Docker Ready**: Run in isolated containers for consistent environments
17
+ - **📊 Rich Reporting**: Multiple output formats (grid, JSON, HTML, CSV, Markdown)
18
+ - **⚡ Fast**: Optimized execution with efficient tool management
19
+ - **🔒 Reliable**: Comprehensive test suite with 84% coverage
20
+
21
+ [![Python](https://img.shields.io/badge/python-3.13-blue)](https://www.python.org/downloads/)
22
+ [![Coverage](assets/images/coverage-badge.svg)](docs/coverage-setup.md)
23
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
24
+ [![Tests](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/test-and-coverage.yml?label=tests)](https://github.com/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml)
25
+ [![CI](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/ci-lintro-analysis.yml?label=ci)](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml)
26
+ [![Docker](https://img.shields.io/github/actions/workflow/status/TurboCoder13/py-lintro/docker-build-publish.yml?label=docker&logo=docker)](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml)
27
+ [![Code Style](https://img.shields.io/badge/code%20style-ruff-black-blue)](https://github.com/astral-sh/ruff)
28
+ [![PyPI](https://img.shields.io/pypi/v/lintro?label=pypi)](https://pypi.org/project/lintro/)
29
+
30
+ ## Features
31
+
32
+ - **Unified CLI** for multiple code quality tools
33
+ - **Multi-language support** - Python, JavaScript, YAML, Docker, and more
34
+ - **Auto-fixing** capabilities where possible
35
+ - **Beautiful output formatting** with table views
36
+ - **Docker support** for containerized environments
37
+ - **CI/CD integration** with GitHub Actions
38
+
39
+ ## Supported Tools
40
+
41
+ | Tool | Language/Format | Purpose | Auto-fix |
42
+ | ------------ | --------------- | -------------------- | -------- |
43
+ | **Ruff** | Python | Linting & Formatting | ✅ |
44
+ | **Darglint** | Python | Docstring Validation | - |
45
+ | **Prettier** | JS/TS/JSON | Code Formatting | ✅ |
46
+ | **Yamllint** | YAML | Syntax & Style | - |
47
+ | **Hadolint** | Dockerfile | Best Practices | - |
48
+
49
+ ## Quick Start
50
+
51
+ ### Installation
52
+
53
+ #### From PyPI (Recommended)
54
+
55
+ ```bash
56
+ pip install lintro
57
+ ```
58
+
59
+ #### Development Installation
60
+
61
+ ```bash
62
+ # Clone and install in development mode
63
+ git clone https://github.com/TurboCoder13/py-lintro.git
64
+ cd py-lintro
65
+ pip install -e .
66
+ ```
67
+
68
+ ### Basic Usage
69
+
70
+ ```bash
71
+ # Check all files for issues
72
+ lintro check
73
+
74
+ # Auto-fix issues where possible
75
+ lintro format
76
+
77
+ # Use grid formatting for better readability
78
+ lintro check --output-format grid
79
+
80
+ # Run specific tools only
81
+ lintro check --tools ruff,prettier
82
+
83
+ # List all available tools
84
+ lintro list-tools
85
+ ```
86
+
87
+ ## Docker Usage
88
+
89
+ ### Quick Start with Published Image
90
+
91
+ ```bash
92
+ # Run Lintro directly from GitHub Container Registry
93
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
94
+
95
+ # With specific formatting
96
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --output-format grid
97
+
98
+ # Run specific tools only
99
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --tools ruff,prettier
100
+ ```
101
+
102
+ ### Development Setup
103
+
104
+ ```bash
105
+ # Clone and setup
106
+ git clone https://github.com/TurboCoder13/py-lintro.git
107
+ cd py-lintro
108
+ chmod +x scripts/**/*.sh
109
+
110
+ # Run with local Docker build
111
+ ./scripts/docker/docker-lintro.sh check --output-format grid
112
+ ```
113
+
114
+ See [Docker Documentation](docs/docker.md) for detailed usage.
115
+
116
+ ## Advanced Usage
117
+
118
+ ### Output Formatting
119
+
120
+ ```bash
121
+ # Grid format (recommended)
122
+ lintro check --output-format grid --group-by code
123
+
124
+ # Export to file
125
+ lintro check --output report.txt
126
+
127
+ # Different grouping options
128
+ lintro check --output-format grid --group-by file # Group by file
129
+ lintro check --output-format grid --group-by code # Group by error type
130
+ ```
131
+
132
+ ### Tool-Specific Options
133
+
134
+ ```bash
135
+ # Exclude patterns
136
+ lintro check --exclude "migrations,node_modules,dist"
137
+
138
+ # Tool-specific options
139
+ lintro check --tool-options "ruff:--line-length=88,prettier:--print-width=80"
140
+
141
+ # Ruff fix configuration (fmt):
142
+ # By default, fmt applies both lint fixes and formatting for Ruff.
143
+ # Disable either stage as needed:
144
+ lintro format --tool-options ruff:lint_fix=False # format only
145
+ lintro format --tool-options ruff:format=False # lint fixes only
146
+ ```
147
+
148
+ ### CI/CD Integration
149
+
150
+ Lintro includes pre-built GitHub Actions workflows:
151
+
152
+ - **Automated code quality checks** on pull requests
153
+ - **Coverage reporting** with badges
154
+ - **Multi-tool analysis** across your entire codebase
155
+
156
+ See [GitHub Integration Guide](docs/github-integration.md) for setup instructions.
157
+
158
+ ## Documentation
159
+
160
+ For comprehensive documentation, see our **[Documentation Hub](docs/README.md)** which includes:
161
+
162
+ - **[Getting Started](docs/getting-started.md)** - Installation and basic usage
163
+ - **[Docker Usage](docs/docker.md)** - Containerized development
164
+ - **[GitHub Integration](docs/github-integration.md)** - CI/CD setup
165
+ - **[Configuration](docs/configuration.md)** - Tool configuration options
166
+ - **[Contributing](docs/contributing.md)** - Developer guide
167
+ - **[Tool Analysis](docs/tool-analysis/)** - Detailed tool comparisons
168
+
169
+ ## Development
170
+
171
+ ```bash
172
+ # Run tests
173
+ ./scripts/local/run-tests.sh
174
+
175
+ # Run Lintro on itself
176
+ ./scripts/local/local-lintro.sh check --output-format grid
177
+
178
+ # Docker development
179
+ ./scripts/docker/docker-test.sh
180
+ ./scripts/docker/docker-lintro.sh check --output-format grid
181
+ ```
182
+
183
+ For detailed information about all available scripts, see [Scripts Documentation](scripts/README.md).
184
+
185
+ ## Dependencies
186
+
187
+ - **Renovate** for automated dependency updates
188
+ - **Python 3.13+** with UV package manager
189
+ - **Optional**: Docker for containerized usage
190
+
191
+ ## License
192
+
193
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
194
+
195
+ ## Troubleshooting
196
+
197
+ ### Common Issues
198
+
199
+ #### "Command not found: lintro"
200
+
201
+ **Solution**: Ensure Lintro is installed correctly:
202
+
203
+ ```bash
204
+ pip install lintro
205
+ # or for development
206
+ pip install -e .
207
+ ```
208
+
209
+ #### "Tool not found" errors
210
+
211
+ **Solution**: Install the required tools or use Docker:
212
+
213
+ ```bash
214
+ # Install tools individually
215
+ pip install ruff darglint
216
+ npm install -g prettier
217
+ pip install yamllint
218
+ # or use Docker (recommended)
219
+ docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
220
+ ```
221
+
222
+ #### Permission errors on Windows
223
+
224
+ **Solution**: Run as administrator or use WSL:
225
+
226
+ ```bash
227
+ # Use WSL for better compatibility
228
+ wsl
229
+ pip install lintro
230
+ ```
231
+
232
+ #### Docker permission issues
233
+
234
+ **Solution**: Add your user to the docker group:
235
+
236
+ ```bash
237
+ sudo usermod -aG docker $USER
238
+ # Log out and back in
239
+ ```
240
+
241
+ #### Slow performance
242
+
243
+ **Solution**: Use exclude patterns and specific tools:
244
+
245
+ ```bash
246
+ # Exclude large directories
247
+ lintro check --exclude "node_modules,venv,.git"
248
+
249
+ # Run specific tools only
250
+ lintro check --tools ruff,prettier
251
+ ```
252
+
253
+ ### Getting Help
254
+
255
+ - 📖 **Documentation**: Check the [docs/](docs/) directory
256
+ - 🐛 **Bug Reports**: Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md)
257
+ - 💡 **Questions**: Use the [question template](.github/ISSUE_TEMPLATE/question.md)
258
+ - 🚀 **Feature Requests**: Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md)
259
+
260
+ ## Contributing
261
+
262
+ We welcome contributions! See our [Contributing Guide](docs/contributing.md) for details on:
263
+
264
+ - Adding new tools
265
+ - Reporting bugs
266
+ - Submitting features
267
+ - Code style guidelines
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="99" height="20">
3
+ <linearGradient id="b" x2="0" y2="100%">
4
+ <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
5
+ <stop offset="1" stop-opacity=".1"/>
6
+ </linearGradient>
7
+ <clipPath id="a">
8
+ <rect width="99" height="20" rx="3" fill="#fff"/>
9
+ </clipPath>
10
+ <g clip-path="url(#a)">
11
+ <path fill="#555" d="M0 0h63v20H0z"/>
12
+ <path fill="#4c1" d="M63 0h36v20H63z"/>
13
+ <path fill="url(#b)" d="M0 0h99v20H0z"/>
14
+ </g>
15
+ <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
16
+ <text x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">coverage</text>
17
+ <text x="325" y="140" transform="scale(.1)" textLength="530">coverage</text>
18
+ <text x="800" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="260">80.3%</text>
19
+ <text x="800" y="140" transform="scale(.1)" textLength="260">80.3%</text>
20
+ </g>
21
+ </svg>
Binary file