lintro 0.42.5__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.
- lintro-0.42.5/LICENSE +21 -0
- lintro-0.42.5/MANIFEST.in +17 -0
- lintro-0.42.5/PKG-INFO +313 -0
- lintro-0.42.5/README.md +226 -0
- lintro-0.42.5/assets/images/coverage-badge.svg +21 -0
- lintro-0.42.5/assets/images/lintro.png +0 -0
- lintro-0.42.5/docs/README.md +244 -0
- lintro-0.42.5/docs/SHELL-SCRIPT-STYLE-GUIDE.md +431 -0
- lintro-0.42.5/docs/architecture/ARCHITECTURE.md +570 -0
- lintro-0.42.5/docs/architecture/README.md +58 -0
- lintro-0.42.5/docs/architecture/ROADMAP.md +471 -0
- lintro-0.42.5/docs/architecture/VISION.md +271 -0
- lintro-0.42.5/docs/configuration.md +1738 -0
- lintro-0.42.5/docs/contributing.md +247 -0
- lintro-0.42.5/docs/debugging.md +172 -0
- lintro-0.42.5/docs/docker.md +387 -0
- lintro-0.42.5/docs/getting-started.md +564 -0
- lintro-0.42.5/docs/github-integration.md +520 -0
- lintro-0.42.5/docs/lintro-self-use.md +133 -0
- lintro-0.42.5/docs/plugins.md +220 -0
- lintro-0.42.5/docs/security/assurance.md +84 -0
- lintro-0.42.5/docs/security/requirements.md +44 -0
- lintro-0.42.5/docs/style-guide.md +555 -0
- lintro-0.42.5/docs/tool-analysis/README.md +189 -0
- lintro-0.42.5/docs/tool-analysis/actionlint-analysis.md +68 -0
- lintro-0.42.5/docs/tool-analysis/bandit-analysis.md +76 -0
- lintro-0.42.5/docs/tool-analysis/black-analysis.md +110 -0
- lintro-0.42.5/docs/tool-analysis/clippy-analysis.md +66 -0
- lintro-0.42.5/docs/tool-analysis/hadolint-analysis.md +249 -0
- lintro-0.42.5/docs/tool-analysis/markdownlint-analysis.md +79 -0
- lintro-0.42.5/docs/tool-analysis/mypy-analysis.md +82 -0
- lintro-0.42.5/docs/tool-analysis/oxc-analysis.md +393 -0
- lintro-0.42.5/docs/tool-analysis/prettier-analysis.md +139 -0
- lintro-0.42.5/docs/tool-analysis/pydoclint-analysis.md +280 -0
- lintro-0.42.5/docs/tool-analysis/pytest-analysis.md +564 -0
- lintro-0.42.5/docs/tool-analysis/ruff-analysis.md +273 -0
- lintro-0.42.5/docs/tool-analysis/tsc-analysis.md +159 -0
- lintro-0.42.5/docs/tool-analysis/yamllint-analysis.md +232 -0
- lintro-0.42.5/docs/troubleshooting.md +168 -0
- lintro-0.42.5/lintro/__init__.py +3 -0
- lintro-0.42.5/lintro/__main__.py +6 -0
- lintro-0.42.5/lintro/_tool_versions.py +180 -0
- lintro-0.42.5/lintro/ascii-art/fail.txt +404 -0
- lintro-0.42.5/lintro/ascii-art/success.txt +484 -0
- lintro-0.42.5/lintro/cli.py +212 -0
- lintro-0.42.5/lintro/cli_utils/__init__.py +7 -0
- lintro-0.42.5/lintro/cli_utils/command_chainer.py +223 -0
- lintro-0.42.5/lintro/cli_utils/commands/__init__.py +15 -0
- lintro-0.42.5/lintro/cli_utils/commands/check.py +247 -0
- lintro-0.42.5/lintro/cli_utils/commands/config.py +386 -0
- lintro-0.42.5/lintro/cli_utils/commands/doctor.py +263 -0
- lintro-0.42.5/lintro/cli_utils/commands/format.py +206 -0
- lintro-0.42.5/lintro/cli_utils/commands/init.py +292 -0
- lintro-0.42.5/lintro/cli_utils/commands/list_tools.py +300 -0
- lintro-0.42.5/lintro/cli_utils/commands/test.py +325 -0
- lintro-0.42.5/lintro/cli_utils/commands/versions.py +105 -0
- lintro-0.42.5/lintro/config/__init__.py +51 -0
- lintro-0.42.5/lintro/config/config_loader.py +415 -0
- lintro-0.42.5/lintro/config/enforce_config.py +23 -0
- lintro-0.42.5/lintro/config/execution_config.py +39 -0
- lintro-0.42.5/lintro/config/lintro_config.py +121 -0
- lintro-0.42.5/lintro/config/tool_config.py +23 -0
- lintro-0.42.5/lintro/config/tool_config_generator.py +414 -0
- lintro-0.42.5/lintro/enums/__init__.py +1 -0
- lintro-0.42.5/lintro/enums/action.py +57 -0
- lintro-0.42.5/lintro/enums/bandit_levels.py +82 -0
- lintro-0.42.5/lintro/enums/boolean_string.py +15 -0
- lintro-0.42.5/lintro/enums/config_format.py +41 -0
- lintro-0.42.5/lintro/enums/config_key.py +14 -0
- lintro-0.42.5/lintro/enums/display_column.py +35 -0
- lintro-0.42.5/lintro/enums/env_bool.py +13 -0
- lintro-0.42.5/lintro/enums/git_command.py +16 -0
- lintro-0.42.5/lintro/enums/git_ref.py +14 -0
- lintro-0.42.5/lintro/enums/group_by.py +34 -0
- lintro-0.42.5/lintro/enums/hadolint_enums.py +77 -0
- lintro-0.42.5/lintro/enums/hyphenated_str_enum.py +49 -0
- lintro-0.42.5/lintro/enums/output_format.py +42 -0
- lintro-0.42.5/lintro/enums/pydoclint_style.py +37 -0
- lintro-0.42.5/lintro/enums/pytest_enums.py +130 -0
- lintro-0.42.5/lintro/enums/semgrep_enums.py +36 -0
- lintro-0.42.5/lintro/enums/severity_level.py +44 -0
- lintro-0.42.5/lintro/enums/tool_name.py +58 -0
- lintro-0.42.5/lintro/enums/tool_option_key.py +14 -0
- lintro-0.42.5/lintro/enums/tool_order.py +43 -0
- lintro-0.42.5/lintro/enums/tool_type.py +60 -0
- lintro-0.42.5/lintro/enums/tools_value.py +39 -0
- lintro-0.42.5/lintro/enums/uppercase_str_enum.py +45 -0
- lintro-0.42.5/lintro/enums/yamllint_format.py +38 -0
- lintro-0.42.5/lintro/exceptions/__init__.py +1 -0
- lintro-0.42.5/lintro/exceptions/errors.py +35 -0
- lintro-0.42.5/lintro/formatters/__init__.py +30 -0
- lintro-0.42.5/lintro/formatters/core/__init__.py +22 -0
- lintro-0.42.5/lintro/formatters/core/format_registry.py +178 -0
- lintro-0.42.5/lintro/formatters/formatter.py +237 -0
- lintro-0.42.5/lintro/formatters/styles/__init__.py +17 -0
- lintro-0.42.5/lintro/formatters/styles/csv.py +47 -0
- lintro-0.42.5/lintro/formatters/styles/grid.py +97 -0
- lintro-0.42.5/lintro/formatters/styles/html.py +54 -0
- lintro-0.42.5/lintro/formatters/styles/json.py +62 -0
- lintro-0.42.5/lintro/formatters/styles/markdown.py +47 -0
- lintro-0.42.5/lintro/formatters/styles/plain.py +45 -0
- lintro-0.42.5/lintro/models/__init__.py +1 -0
- lintro-0.42.5/lintro/models/core/__init__.py +15 -0
- lintro-0.42.5/lintro/models/core/base_tool_options.py +18 -0
- lintro-0.42.5/lintro/models/core/black_options.py +22 -0
- lintro-0.42.5/lintro/models/core/prettier_options.py +38 -0
- lintro-0.42.5/lintro/models/core/pytest_options.py +50 -0
- lintro-0.42.5/lintro/models/core/ruff_options.py +38 -0
- lintro-0.42.5/lintro/models/core/tool_result.py +70 -0
- lintro-0.42.5/lintro/models/core/yamllint_options.py +18 -0
- lintro-0.42.5/lintro/parsers/__init__.py +100 -0
- lintro-0.42.5/lintro/parsers/actionlint/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/actionlint/actionlint_issue.py +25 -0
- lintro-0.42.5/lintro/parsers/actionlint/actionlint_parser.py +67 -0
- lintro-0.42.5/lintro/parsers/bandit/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/bandit/bandit_issue.py +61 -0
- lintro-0.42.5/lintro/parsers/bandit/bandit_parser.py +106 -0
- lintro-0.42.5/lintro/parsers/base_issue.py +86 -0
- lintro-0.42.5/lintro/parsers/base_parser.py +295 -0
- lintro-0.42.5/lintro/parsers/black/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/black/black_issue.py +30 -0
- lintro-0.42.5/lintro/parsers/black/black_parser.py +106 -0
- lintro-0.42.5/lintro/parsers/cargo_audit/__init__.py +1 -0
- lintro-0.42.5/lintro/parsers/cargo_audit/cargo_audit_issue.py +56 -0
- lintro-0.42.5/lintro/parsers/cargo_audit/cargo_audit_parser.py +174 -0
- lintro-0.42.5/lintro/parsers/clippy/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/clippy/clippy_issue.py +31 -0
- lintro-0.42.5/lintro/parsers/clippy/clippy_parser.py +138 -0
- lintro-0.42.5/lintro/parsers/gitleaks/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/gitleaks/gitleaks_issue.py +70 -0
- lintro-0.42.5/lintro/parsers/gitleaks/gitleaks_parser.py +177 -0
- lintro-0.42.5/lintro/parsers/hadolint/__init__.py +31 -0
- lintro-0.42.5/lintro/parsers/hadolint/hadolint_issue.py +25 -0
- lintro-0.42.5/lintro/parsers/hadolint/hadolint_parser.py +65 -0
- lintro-0.42.5/lintro/parsers/markdownlint/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/markdownlint/markdownlint_issue.py +16 -0
- lintro-0.42.5/lintro/parsers/markdownlint/markdownlint_parser.py +119 -0
- lintro-0.42.5/lintro/parsers/mypy/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/mypy/mypy_issue.py +47 -0
- lintro-0.42.5/lintro/parsers/mypy/mypy_parser.py +134 -0
- lintro-0.42.5/lintro/parsers/oxfmt/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/oxfmt/oxfmt_issue.py +16 -0
- lintro-0.42.5/lintro/parsers/oxfmt/oxfmt_parser.py +100 -0
- lintro-0.42.5/lintro/parsers/oxlint/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/oxlint/oxlint_issue.py +22 -0
- lintro-0.42.5/lintro/parsers/oxlint/oxlint_parser.py +114 -0
- lintro-0.42.5/lintro/parsers/prettier/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/prettier/prettier_issue.py +16 -0
- lintro-0.42.5/lintro/parsers/prettier/prettier_parser.py +65 -0
- lintro-0.42.5/lintro/parsers/pydoclint/__init__.py +10 -0
- lintro-0.42.5/lintro/parsers/pydoclint/pydoclint_issue.py +25 -0
- lintro-0.42.5/lintro/parsers/pydoclint/pydoclint_parser.py +105 -0
- lintro-0.42.5/lintro/parsers/pytest/__init__.py +17 -0
- lintro-0.42.5/lintro/parsers/pytest/format_parsers.py +397 -0
- lintro-0.42.5/lintro/parsers/pytest/models.py +33 -0
- lintro-0.42.5/lintro/parsers/pytest/pytest_issue.py +32 -0
- lintro-0.42.5/lintro/parsers/pytest/pytest_parser.py +58 -0
- lintro-0.42.5/lintro/parsers/pytest/summary_extractor.py +84 -0
- lintro-0.42.5/lintro/parsers/ruff/__init__.py +15 -0
- lintro-0.42.5/lintro/parsers/ruff/ruff_format_issue.py +23 -0
- lintro-0.42.5/lintro/parsers/ruff/ruff_issue.py +26 -0
- lintro-0.42.5/lintro/parsers/ruff/ruff_parser.py +213 -0
- lintro-0.42.5/lintro/parsers/rustfmt/__init__.py +1 -0
- lintro-0.42.5/lintro/parsers/rustfmt/rustfmt_issue.py +27 -0
- lintro-0.42.5/lintro/parsers/rustfmt/rustfmt_parser.py +87 -0
- lintro-0.42.5/lintro/parsers/semgrep/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/semgrep/semgrep_issue.py +61 -0
- lintro-0.42.5/lintro/parsers/semgrep/semgrep_parser.py +138 -0
- lintro-0.42.5/lintro/parsers/shellcheck/__init__.py +10 -0
- lintro-0.42.5/lintro/parsers/shellcheck/shellcheck_issue.py +45 -0
- lintro-0.42.5/lintro/parsers/shellcheck/shellcheck_parser.py +112 -0
- lintro-0.42.5/lintro/parsers/shfmt/__init__.py +10 -0
- lintro-0.42.5/lintro/parsers/shfmt/shfmt_issue.py +31 -0
- lintro-0.42.5/lintro/parsers/shfmt/shfmt_parser.py +127 -0
- lintro-0.42.5/lintro/parsers/sqlfluff/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/sqlfluff/sqlfluff_issue.py +31 -0
- lintro-0.42.5/lintro/parsers/sqlfluff/sqlfluff_parser.py +126 -0
- lintro-0.42.5/lintro/parsers/streaming.py +322 -0
- lintro-0.42.5/lintro/parsers/taplo/__init__.py +11 -0
- lintro-0.42.5/lintro/parsers/taplo/taplo_issue.py +31 -0
- lintro-0.42.5/lintro/parsers/taplo/taplo_parser.py +120 -0
- lintro-0.42.5/lintro/parsers/tsc/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/tsc/tsc_issue.py +42 -0
- lintro-0.42.5/lintro/parsers/tsc/tsc_parser.py +90 -0
- lintro-0.42.5/lintro/parsers/yamllint/__init__.py +6 -0
- lintro-0.42.5/lintro/parsers/yamllint/yamllint_issue.py +27 -0
- lintro-0.42.5/lintro/parsers/yamllint/yamllint_parser.py +93 -0
- lintro-0.42.5/lintro/plugins/__init__.py +60 -0
- lintro-0.42.5/lintro/plugins/base.py +571 -0
- lintro-0.42.5/lintro/plugins/discovery.py +191 -0
- lintro-0.42.5/lintro/plugins/execution_preparation.py +309 -0
- lintro-0.42.5/lintro/plugins/file_discovery.py +160 -0
- lintro-0.42.5/lintro/plugins/file_processor.py +144 -0
- lintro-0.42.5/lintro/plugins/protocol.py +150 -0
- lintro-0.42.5/lintro/plugins/registry.py +240 -0
- lintro-0.42.5/lintro/plugins/subprocess_executor.py +321 -0
- lintro-0.42.5/lintro/tools/__init__.py +22 -0
- lintro-0.42.5/lintro/tools/core/__init__.py +1 -0
- lintro-0.42.5/lintro/tools/core/command_builders.py +510 -0
- lintro-0.42.5/lintro/tools/core/config_injection.py +163 -0
- lintro-0.42.5/lintro/tools/core/line_length_checker.py +166 -0
- lintro-0.42.5/lintro/tools/core/option_spec.py +394 -0
- lintro-0.42.5/lintro/tools/core/option_validators.py +133 -0
- lintro-0.42.5/lintro/tools/core/runtime_discovery.py +293 -0
- lintro-0.42.5/lintro/tools/core/timeout_utils.py +126 -0
- lintro-0.42.5/lintro/tools/core/tool_manager.py +207 -0
- lintro-0.42.5/lintro/tools/core/version_checking.py +172 -0
- lintro-0.42.5/lintro/tools/core/version_parsing.py +321 -0
- lintro-0.42.5/lintro/tools/core/version_requirements.py +86 -0
- lintro-0.42.5/lintro/tools/definitions/__init__.py +31 -0
- lintro-0.42.5/lintro/tools/definitions/actionlint.py +227 -0
- lintro-0.42.5/lintro/tools/definitions/bandit.py +414 -0
- lintro-0.42.5/lintro/tools/definitions/black.py +396 -0
- lintro-0.42.5/lintro/tools/definitions/cargo_audit.py +188 -0
- lintro-0.42.5/lintro/tools/definitions/clippy.py +386 -0
- lintro-0.42.5/lintro/tools/definitions/gitleaks.py +302 -0
- lintro-0.42.5/lintro/tools/definitions/hadolint.py +282 -0
- lintro-0.42.5/lintro/tools/definitions/markdownlint.py +329 -0
- lintro-0.42.5/lintro/tools/definitions/mypy.py +375 -0
- lintro-0.42.5/lintro/tools/definitions/oxfmt.py +425 -0
- lintro-0.42.5/lintro/tools/definitions/oxlint.py +471 -0
- lintro-0.42.5/lintro/tools/definitions/prettier.py +529 -0
- lintro-0.42.5/lintro/tools/definitions/pydoclint.py +159 -0
- lintro-0.42.5/lintro/tools/definitions/pytest.py +370 -0
- lintro-0.42.5/lintro/tools/definitions/ruff.py +212 -0
- lintro-0.42.5/lintro/tools/definitions/rustfmt.py +374 -0
- lintro-0.42.5/lintro/tools/definitions/semgrep.py +348 -0
- lintro-0.42.5/lintro/tools/definitions/shellcheck.py +261 -0
- lintro-0.42.5/lintro/tools/definitions/shfmt.py +414 -0
- lintro-0.42.5/lintro/tools/definitions/sqlfluff.py +324 -0
- lintro-0.42.5/lintro/tools/definitions/taplo.py +414 -0
- lintro-0.42.5/lintro/tools/definitions/tsc.py +424 -0
- lintro-0.42.5/lintro/tools/definitions/yamllint.py +501 -0
- lintro-0.42.5/lintro/tools/implementations/__init__.py +28 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/__init__.py +16 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/collection.py +266 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/coverage_processor.py +142 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/formatters.py +314 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/markers.py +188 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/output.py +219 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/output_parsers.py +149 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_command_builder.py +336 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_config.py +193 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_error_handler.py +128 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_executor.py +139 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_handlers.py +385 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_option_validators.py +215 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_output_processor.py +57 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/pytest_result_processor.py +111 -0
- lintro-0.42.5/lintro/tools/implementations/pytest/test_analytics.py +150 -0
- lintro-0.42.5/lintro/tools/implementations/ruff/__init__.py +18 -0
- lintro-0.42.5/lintro/tools/implementations/ruff/check.py +215 -0
- lintro-0.42.5/lintro/tools/implementations/ruff/commands.py +174 -0
- lintro-0.42.5/lintro/tools/implementations/ruff/fix.py +349 -0
- lintro-0.42.5/lintro/utils/__init__.py +1 -0
- lintro-0.42.5/lintro/utils/ascii_normalize_cli.py +91 -0
- lintro-0.42.5/lintro/utils/async_tool_executor.py +247 -0
- lintro-0.42.5/lintro/utils/config.py +348 -0
- lintro-0.42.5/lintro/utils/config_constants.py +105 -0
- lintro-0.42.5/lintro/utils/config_priority.py +202 -0
- lintro-0.42.5/lintro/utils/config_reporting.py +102 -0
- lintro-0.42.5/lintro/utils/config_validation.py +111 -0
- lintro-0.42.5/lintro/utils/console/__init__.py +56 -0
- lintro-0.42.5/lintro/utils/console/constants.py +84 -0
- lintro-0.42.5/lintro/utils/console/logger.py +443 -0
- lintro-0.42.5/lintro/utils/display_helpers.py +136 -0
- lintro-0.42.5/lintro/utils/execution/__init__.py +33 -0
- lintro-0.42.5/lintro/utils/execution/exit_codes.py +84 -0
- lintro-0.42.5/lintro/utils/execution/parallel_executor.py +159 -0
- lintro-0.42.5/lintro/utils/execution/tool_configuration.py +201 -0
- lintro-0.42.5/lintro/utils/file_cache.py +246 -0
- lintro-0.42.5/lintro/utils/formatting.py +175 -0
- lintro-0.42.5/lintro/utils/json_output.py +59 -0
- lintro-0.42.5/lintro/utils/logger_setup.py +57 -0
- lintro-0.42.5/lintro/utils/native_parsers.py +377 -0
- lintro-0.42.5/lintro/utils/output/__init__.py +36 -0
- lintro-0.42.5/lintro/utils/output/constants.py +8 -0
- lintro-0.42.5/lintro/utils/output/file_writer.py +277 -0
- lintro-0.42.5/lintro/utils/output/helpers.py +48 -0
- lintro-0.42.5/lintro/utils/output/manager.py +292 -0
- lintro-0.42.5/lintro/utils/output/parser_registration.py +165 -0
- lintro-0.42.5/lintro/utils/output/parser_registry.py +126 -0
- lintro-0.42.5/lintro/utils/path_filtering.py +205 -0
- lintro-0.42.5/lintro/utils/path_utils.py +174 -0
- lintro-0.42.5/lintro/utils/post_checks.py +212 -0
- lintro-0.42.5/lintro/utils/result_formatters.py +341 -0
- lintro-0.42.5/lintro/utils/streaming_output.py +262 -0
- lintro-0.42.5/lintro/utils/summary_tables.py +324 -0
- lintro-0.42.5/lintro/utils/tool_config_info.py +13 -0
- lintro-0.42.5/lintro/utils/tool_executor.py +415 -0
- lintro-0.42.5/lintro/utils/tool_options.py +91 -0
- lintro-0.42.5/lintro/utils/tool_utils.py +33 -0
- lintro-0.42.5/lintro/utils/unified_config.py +82 -0
- lintro-0.42.5/lintro/utils/unified_config_manager.py +173 -0
- lintro-0.42.5/lintro.egg-info/PKG-INFO +313 -0
- lintro-0.42.5/lintro.egg-info/SOURCES.txt +772 -0
- lintro-0.42.5/lintro.egg-info/dependency_links.txt +1 -0
- lintro-0.42.5/lintro.egg-info/entry_points.txt +2 -0
- lintro-0.42.5/lintro.egg-info/requires.txt +46 -0
- lintro-0.42.5/lintro.egg-info/top_level.txt +1 -0
- lintro-0.42.5/pyproject.toml +300 -0
- lintro-0.42.5/setup.cfg +4 -0
- lintro-0.42.5/test_samples/tools/config/docker/Dockerfile.violations +38 -0
- lintro-0.42.5/test_samples/tools/config/github_actions/actionlint_violations.yml +9 -0
- lintro-0.42.5/test_samples/tools/config/yaml/yaml_violations.yml +20 -0
- lintro-0.42.5/test_samples/tools/javascript/oxfmt/oxfmt_clean.js +6 -0
- lintro-0.42.5/test_samples/tools/javascript/oxfmt/oxfmt_violations.js +4 -0
- lintro-0.42.5/test_samples/tools/javascript/oxlint/oxlint_clean.js +9 -0
- lintro-0.42.5/test_samples/tools/javascript/oxlint/oxlint_violations.js +19 -0
- lintro-0.42.5/test_samples/tools/javascript/prettier/prettier_violations.js +43 -0
- lintro-0.42.5/test_samples/tools/python/bandit/bandit_violations.py +42 -0
- lintro-0.42.5/test_samples/tools/python/mypy/mypy_violations.py +3 -0
- lintro-0.42.5/test_samples/tools/python/pydoclint/pydoclint_violations.py +145 -0
- lintro-0.42.5/test_samples/tools/python/pytest/pytest_clean.py +192 -0
- lintro-0.42.5/test_samples/tools/python/pytest/pytest_failures.py +132 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_annotations_violations.py +53 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_black_e501_wrappable.py +7 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_bugbear_violations.py +239 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_c4_comprehensions_violations.py +805 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_clean.py +15 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_e501_f401_violations.py +40 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_naming_violations.py +24 -0
- lintro-0.42.5/test_samples/tools/python/ruff/ruff_sim_simplify_violations.py +936 -0
- lintro-0.42.5/test_samples/tools/python/semgrep/semgrep_violations.py +93 -0
- lintro-0.42.5/test_samples/tools/security/gitleaks/gitleaks_clean.py +30 -0
- lintro-0.42.5/test_samples/tools/security/gitleaks/gitleaks_violations.py +18 -0
- lintro-0.42.5/tests/__init__.py +1 -0
- lintro-0.42.5/tests/cli/__init__.py +1 -0
- lintro-0.42.5/tests/cli/conftest.py +41 -0
- lintro-0.42.5/tests/cli/test_cli.py +136 -0
- lintro-0.42.5/tests/cli/test_config_command.py +256 -0
- lintro-0.42.5/tests/cli/test_init_command.py +110 -0
- lintro-0.42.5/tests/config/__init__.py +1 -0
- lintro-0.42.5/tests/config/test_config_loader.py +226 -0
- lintro-0.42.5/tests/config/test_init_command.py +173 -0
- lintro-0.42.5/tests/config/test_lintro_config.py +115 -0
- lintro-0.42.5/tests/config/test_tool_config_generator.py +336 -0
- lintro-0.42.5/tests/conftest.py +102 -0
- lintro-0.42.5/tests/constants.py +51 -0
- lintro-0.42.5/tests/formatters/__init__.py +1 -0
- lintro-0.42.5/tests/formatters/test_formatters.py +109 -0
- lintro-0.42.5/tests/integration/__init__.py +1 -0
- lintro-0.42.5/tests/integration/conftest.py +114 -0
- lintro-0.42.5/tests/integration/test_actionlint_integration.py +90 -0
- lintro-0.42.5/tests/integration/test_bandit_integration.py +54 -0
- lintro-0.42.5/tests/integration/test_built_package.py +112 -0
- lintro-0.42.5/tests/integration/test_markdownlint_integration.py +159 -0
- lintro-0.42.5/tests/integration/test_mypy_integration.py +144 -0
- lintro-0.42.5/tests/integration/test_parallel_execution.py +225 -0
- lintro-0.42.5/tests/integration/test_pydoclint_integration.py +198 -0
- lintro-0.42.5/tests/integration/tools/__init__.py +1 -0
- lintro-0.42.5/tests/integration/tools/gitleaks/__init__.py +1 -0
- lintro-0.42.5/tests/integration/tools/gitleaks/conftest.py +61 -0
- lintro-0.42.5/tests/integration/tools/gitleaks/test_check.py +83 -0
- lintro-0.42.5/tests/integration/tools/gitleaks/test_definition.py +69 -0
- lintro-0.42.5/tests/integration/tools/gitleaks/test_options.py +59 -0
- lintro-0.42.5/tests/integration/tools/shellcheck/__init__.py +1 -0
- lintro-0.42.5/tests/integration/tools/shellcheck/conftest.py +76 -0
- lintro-0.42.5/tests/integration/tools/shellcheck/test_check.py +135 -0
- lintro-0.42.5/tests/integration/tools/shellcheck/test_definition.py +73 -0
- lintro-0.42.5/tests/integration/tools/shellcheck/test_options.py +152 -0
- lintro-0.42.5/tests/integration/tools/test_bandit_integration.py +238 -0
- lintro-0.42.5/tests/integration/tools/test_black_integration.py +281 -0
- lintro-0.42.5/tests/integration/tools/test_mypy_integration.py +228 -0
- lintro-0.42.5/tests/integration/tools/test_oxfmt_integration.py +511 -0
- lintro-0.42.5/tests/integration/tools/test_oxlint_integration.py +544 -0
- lintro-0.42.5/tests/integration/tools/test_prettier_integration.py +219 -0
- lintro-0.42.5/tests/integration/tools/test_ruff_integration.py +453 -0
- lintro-0.42.5/tests/integration/tools/test_rustfmt_integration.py +463 -0
- lintro-0.42.5/tests/integration/tools/test_semgrep_integration.py +260 -0
- lintro-0.42.5/tests/integration/tools/test_shfmt_integration.py +424 -0
- lintro-0.42.5/tests/integration/tools/test_sqlfluff_integration.py +294 -0
- lintro-0.42.5/tests/integration/tools/test_taplo_integration.py +283 -0
- lintro-0.42.5/tests/integration/tools/test_yamllint_integration.py +321 -0
- lintro-0.42.5/tests/integration/tools/tsc/__init__.py +0 -0
- lintro-0.42.5/tests/integration/tools/tsc/conftest.py +86 -0
- lintro-0.42.5/tests/integration/tools/tsc/test_check.py +249 -0
- lintro-0.42.5/tests/scripts/__init__.py +1 -0
- lintro-0.42.5/tests/scripts/conftest.py +44 -0
- lintro-0.42.5/tests/scripts/test_ci_post_pr_comment.py +341 -0
- lintro-0.42.5/tests/scripts/test_coverage_pipeline_integration.py +192 -0
- lintro-0.42.5/tests/scripts/test_delete_previous_lintro_comments.py +106 -0
- lintro-0.42.5/tests/scripts/test_extract_test_summary.py +218 -0
- lintro-0.42.5/tests/scripts/test_extract_version.py +54 -0
- lintro-0.42.5/tests/scripts/test_ghcr_prune_untagged.py +299 -0
- lintro-0.42.5/tests/scripts/test_github_comment_utilities.py +20 -0
- lintro-0.42.5/tests/scripts/test_github_comment_utilities_encode.py +195 -0
- lintro-0.42.5/tests/scripts/test_github_comment_utilities_extract.py +172 -0
- lintro-0.42.5/tests/scripts/test_github_comment_utilities_find.py +204 -0
- lintro-0.42.5/tests/scripts/test_merge_pr_comment.py +354 -0
- lintro-0.42.5/tests/scripts/test_semantic_release_compute_next.py +141 -0
- lintro-0.42.5/tests/scripts/test_shell_scripts.py +30 -0
- lintro-0.42.5/tests/test_documentation.py +181 -0
- lintro-0.42.5/tests/unit/__init__.py +1 -0
- lintro-0.42.5/tests/unit/cli/__init__.py +0 -0
- lintro-0.42.5/tests/unit/cli/conftest.py +96 -0
- lintro-0.42.5/tests/unit/cli/test_check_command.py +383 -0
- lintro-0.42.5/tests/unit/cli/test_cli.py +291 -0
- lintro-0.42.5/tests/unit/cli/test_cli_commands.py +21 -0
- lintro-0.42.5/tests/unit/cli/test_cli_commands_more.py +67 -0
- lintro-0.42.5/tests/unit/cli/test_cli_lintro_group.py +280 -0
- lintro-0.42.5/tests/unit/cli/test_cli_programmatic.py +138 -0
- lintro-0.42.5/tests/unit/cli/test_format_command.py +490 -0
- lintro-0.42.5/tests/unit/cli_utils/__init__.py +1 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/__init__.py +1 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/conftest.py +57 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/test_execute.py +206 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/test_group_commands.py +73 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/test_init.py +62 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/test_integration.py +46 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/test_normalize_args.py +73 -0
- lintro-0.42.5/tests/unit/cli_utils/command_chainer/test_should_chain.py +63 -0
- lintro-0.42.5/tests/unit/cli_utils/commands/test_format.py +251 -0
- lintro-0.42.5/tests/unit/compatibility/conftest.py +7 -0
- lintro-0.42.5/tests/unit/compatibility/test_compatibility_ruff_black.py +265 -0
- lintro-0.42.5/tests/unit/config/conftest.py +52 -0
- lintro-0.42.5/tests/unit/config/test_config_compatibility.py +71 -0
- lintro-0.42.5/tests/unit/config/test_config_loader.py +141 -0
- lintro-0.42.5/tests/unit/config/test_config_loader_more.py +44 -0
- lintro-0.42.5/tests/unit/config/test_config_loaders.py +382 -0
- lintro-0.42.5/tests/unit/config/test_config_tool_specific.py +230 -0
- lintro-0.42.5/tests/unit/config/test_enforce_config.py +63 -0
- lintro-0.42.5/tests/unit/config/test_execution_config.py +119 -0
- lintro-0.42.5/tests/unit/config/test_lintro_config.py +158 -0
- lintro-0.42.5/tests/unit/config/test_unified_config.py +112 -0
- lintro-0.42.5/tests/unit/conftest.py +144 -0
- lintro-0.42.5/tests/unit/core/conftest.py +9 -0
- lintro-0.42.5/tests/unit/core/test_version_requirements.py +394 -0
- lintro-0.42.5/tests/unit/enums/__init__.py +1 -0
- lintro-0.42.5/tests/unit/enums/test_bandit_levels.py +109 -0
- lintro-0.42.5/tests/unit/enums/test_base.py +87 -0
- lintro-0.42.5/tests/unit/enums/test_enum_normalizers.py +227 -0
- lintro-0.42.5/tests/unit/enums/test_output_format.py +63 -0
- lintro-0.42.5/tests/unit/enums/test_tool_name.py +66 -0
- lintro-0.42.5/tests/unit/exceptions/conftest.py +7 -0
- lintro-0.42.5/tests/unit/exceptions/test_exceptions.py +124 -0
- lintro-0.42.5/tests/unit/formatters/__init__.py +3 -0
- lintro-0.42.5/tests/unit/formatters/conftest.py +45 -0
- lintro-0.42.5/tests/unit/formatters/styles/__init__.py +3 -0
- lintro-0.42.5/tests/unit/formatters/styles/conftest.py +89 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_csv.py +100 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_html.py +101 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_json.py +127 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_markdown.py +104 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_plain.py +119 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_common.py +47 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_csv.py +63 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_grid.py +64 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_html.py +76 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_json.py +140 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_markdown.py +66 -0
- lintro-0.42.5/tests/unit/formatters/styles/test_style_plain.py +64 -0
- lintro-0.42.5/tests/unit/formatters/test_format_issues.py +433 -0
- lintro-0.42.5/tests/unit/formatters/test_format_registry.py +190 -0
- lintro-0.42.5/tests/unit/logging/conftest.py +7 -0
- lintro-0.42.5/tests/unit/logging/test_console_logger.py +128 -0
- lintro-0.42.5/tests/unit/logging/test_console_logger_more.py +138 -0
- lintro-0.42.5/tests/unit/output/conftest.py +7 -0
- lintro-0.42.5/tests/unit/output/test_output_manager_reports.py +69 -0
- lintro-0.42.5/tests/unit/parsers/base_parser/__init__.py +1 -0
- lintro-0.42.5/tests/unit/parsers/base_parser/test_continuation_lines.py +67 -0
- lintro-0.42.5/tests/unit/parsers/base_parser/test_extract_fields.py +132 -0
- lintro-0.42.5/tests/unit/parsers/base_parser/test_safe_parse.py +82 -0
- lintro-0.42.5/tests/unit/parsers/base_parser/test_strip_ansi.py +41 -0
- lintro-0.42.5/tests/unit/parsers/base_parser/test_validate_fields.py +82 -0
- lintro-0.42.5/tests/unit/parsers/conftest.py +68 -0
- lintro-0.42.5/tests/unit/parsers/gitleaks_parser/__init__.py +1 -0
- lintro-0.42.5/tests/unit/parsers/gitleaks_parser/test_edge_cases.py +73 -0
- lintro-0.42.5/tests/unit/parsers/gitleaks_parser/test_field_parsing.py +117 -0
- lintro-0.42.5/tests/unit/parsers/gitleaks_parser/test_issue_model.py +43 -0
- lintro-0.42.5/tests/unit/parsers/gitleaks_parser/test_plugin_parsing.py +169 -0
- lintro-0.42.5/tests/unit/parsers/gitleaks_parser/test_valid_output.py +89 -0
- lintro-0.42.5/tests/unit/parsers/pydoclint_parser/__init__.py +1 -0
- lintro-0.42.5/tests/unit/parsers/pydoclint_parser/conftest.py +54 -0
- lintro-0.42.5/tests/unit/parsers/pydoclint_parser/test_edge_cases.py +120 -0
- lintro-0.42.5/tests/unit/parsers/pydoclint_parser/test_field_extraction.py +111 -0
- lintro-0.42.5/tests/unit/parsers/pydoclint_parser/test_invalid_input.py +64 -0
- lintro-0.42.5/tests/unit/parsers/pydoclint_parser/test_issue_model.py +70 -0
- lintro-0.42.5/tests/unit/parsers/pytest/test_pytest_parser.py +394 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/__init__.py +1 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/conftest.py +59 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/test_edge_cases.py +97 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/test_field_extraction.py +85 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/test_invalid_input.py +47 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/test_issue_model.py +34 -0
- lintro-0.42.5/tests/unit/parsers/shellcheck_parser/test_multiple_issues.py +65 -0
- lintro-0.42.5/tests/unit/parsers/streaming/__init__.py +1 -0
- lintro-0.42.5/tests/unit/parsers/streaming/conftest.py +71 -0
- lintro-0.42.5/tests/unit/parsers/streaming/test_collect.py +40 -0
- lintro-0.42.5/tests/unit/parsers/streaming/test_json_array.py +83 -0
- lintro-0.42.5/tests/unit/parsers/streaming/test_json_lines.py +140 -0
- lintro-0.42.5/tests/unit/parsers/streaming/test_parser_class.py +84 -0
- lintro-0.42.5/tests/unit/parsers/streaming/test_text_lines.py +86 -0
- lintro-0.42.5/tests/unit/parsers/test_actionlint_parser.py +31 -0
- lintro-0.42.5/tests/unit/parsers/test_bandit_parser.py +263 -0
- lintro-0.42.5/tests/unit/parsers/test_base_issue.py +165 -0
- lintro-0.42.5/tests/unit/parsers/test_base_parser.py +359 -0
- lintro-0.42.5/tests/unit/parsers/test_black_parser.py +36 -0
- lintro-0.42.5/tests/unit/parsers/test_cargo_audit_parser.py +224 -0
- lintro-0.42.5/tests/unit/parsers/test_clippy_parser.py +115 -0
- lintro-0.42.5/tests/unit/parsers/test_hadolint_parser.py +175 -0
- lintro-0.42.5/tests/unit/parsers/test_markdownlint_parser.py +139 -0
- lintro-0.42.5/tests/unit/parsers/test_mypy_parser.py +151 -0
- lintro-0.42.5/tests/unit/parsers/test_oxfmt_parser.py +183 -0
- lintro-0.42.5/tests/unit/parsers/test_oxlint_parser.py +284 -0
- lintro-0.42.5/tests/unit/parsers/test_prettier_parser.py +96 -0
- lintro-0.42.5/tests/unit/parsers/test_ruff_parser_additional.py +127 -0
- lintro-0.42.5/tests/unit/parsers/test_ruff_parser_more.py +63 -0
- lintro-0.42.5/tests/unit/parsers/test_rustfmt_parser.py +121 -0
- lintro-0.42.5/tests/unit/parsers/test_semgrep_parser.py +416 -0
- lintro-0.42.5/tests/unit/parsers/test_shfmt_parser.py +270 -0
- lintro-0.42.5/tests/unit/parsers/test_sqlfluff_parser.py +402 -0
- lintro-0.42.5/tests/unit/parsers/test_taplo_parser.py +323 -0
- lintro-0.42.5/tests/unit/parsers/test_tsc_parser.py +154 -0
- lintro-0.42.5/tests/unit/parsers/test_yamllint_parser.py +106 -0
- lintro-0.42.5/tests/unit/plugins/base/__init__.py +1 -0
- lintro-0.42.5/tests/unit/plugins/base/conftest.py +44 -0
- lintro-0.42.5/tests/unit/plugins/base/test_execution.py +442 -0
- lintro-0.42.5/tests/unit/plugins/base/test_options.py +182 -0
- lintro-0.42.5/tests/unit/plugins/base/test_subprocess.py +262 -0
- lintro-0.42.5/tests/unit/plugins/base/test_subprocess_streaming.py +163 -0
- lintro-0.42.5/tests/unit/plugins/conftest.py +151 -0
- lintro-0.42.5/tests/unit/plugins/test_base_plugin_config.py +336 -0
- lintro-0.42.5/tests/unit/plugins/test_discovery.py +229 -0
- lintro-0.42.5/tests/unit/plugins/test_file_processor.py +331 -0
- lintro-0.42.5/tests/unit/plugins/test_registry.py +423 -0
- lintro-0.42.5/tests/unit/pytest/conftest.py +7 -0
- lintro-0.42.5/tests/unit/pytest/test_pytest_cli_commands.py +205 -0
- lintro-0.42.5/tests/unit/pytest/test_pytest_cli_options.py +148 -0
- lintro-0.42.5/tests/unit/pytest/test_pytest_handlers.py +550 -0
- lintro-0.42.5/tests/unit/pytest/test_pytest_programmatic_api.py +254 -0
- lintro-0.42.5/tests/unit/security/__init__.py +1 -0
- lintro-0.42.5/tests/unit/security/conftest.py +23 -0
- lintro-0.42.5/tests/unit/security/test_json_edge_cases.py +309 -0
- lintro-0.42.5/tests/unit/security/test_path_traversal.py +316 -0
- lintro-0.42.5/tests/unit/security/test_subprocess_injection.py +260 -0
- lintro-0.42.5/tests/unit/tools/assertions/__init__.py +3 -0
- lintro-0.42.5/tests/unit/tools/assertions/conftest.py +104 -0
- lintro-0.42.5/tests/unit/tools/base/conftest.py +7 -0
- lintro-0.42.5/tests/unit/tools/cargo_audit/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/cargo_audit/test_cargo_audit_plugin.py +285 -0
- lintro-0.42.5/tests/unit/tools/conftest.py +283 -0
- lintro-0.42.5/tests/unit/tools/core/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/core/conftest.py +32 -0
- lintro-0.42.5/tests/unit/tools/core/test_command_builders.py +314 -0
- lintro-0.42.5/tests/unit/tools/core/test_line_length_checker.py +308 -0
- lintro-0.42.5/tests/unit/tools/core/test_option_spec.py +121 -0
- lintro-0.42.5/tests/unit/tools/core/test_option_validators.py +348 -0
- lintro-0.42.5/tests/unit/tools/core/test_runtime_discovery.py +228 -0
- lintro-0.42.5/tests/unit/tools/core/test_tool_options_spec.py +107 -0
- lintro-0.42.5/tests/unit/tools/core/test_version_checking.py +123 -0
- lintro-0.42.5/tests/unit/tools/executor/conftest.py +10 -0
- lintro-0.42.5/tests/unit/tools/executor/test_tool_configuration_enabled.py +387 -0
- lintro-0.42.5/tests/unit/tools/executor/test_tool_executor.py +401 -0
- lintro-0.42.5/tests/unit/tools/executor/test_tool_executor_fmt_exclusion.py +24 -0
- lintro-0.42.5/tests/unit/tools/executor/test_tool_executor_more.py +473 -0
- lintro-0.42.5/tests/unit/tools/executor/test_tool_executor_post_checks.py +215 -0
- lintro-0.42.5/tests/unit/tools/executor/test_tool_executor_pytest.py +317 -0
- lintro-0.42.5/tests/unit/tools/gitleaks/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/gitleaks/conftest.py +24 -0
- lintro-0.42.5/tests/unit/tools/gitleaks/test_error_handling.py +77 -0
- lintro-0.42.5/tests/unit/tools/gitleaks/test_execution.py +112 -0
- lintro-0.42.5/tests/unit/tools/gitleaks/test_options.py +279 -0
- lintro-0.42.5/tests/unit/tools/hadolint/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/hadolint/conftest.py +17 -0
- lintro-0.42.5/tests/unit/tools/hadolint/test_execution.py +173 -0
- lintro-0.42.5/tests/unit/tools/hadolint/test_options.py +295 -0
- lintro-0.42.5/tests/unit/tools/manager/conftest.py +7 -0
- lintro-0.42.5/tests/unit/tools/manager/test_tool_manager.py +155 -0
- lintro-0.42.5/tests/unit/tools/mypy/test_mypy_plugin.py +197 -0
- lintro-0.42.5/tests/unit/tools/oxfmt/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/oxfmt/conftest.py +24 -0
- lintro-0.42.5/tests/unit/tools/oxfmt/test_check_method.py +191 -0
- lintro-0.42.5/tests/unit/tools/oxfmt/test_default_options.py +150 -0
- lintro-0.42.5/tests/unit/tools/oxfmt/test_fix_method.py +304 -0
- lintro-0.42.5/tests/unit/tools/oxfmt/test_set_options.py +135 -0
- lintro-0.42.5/tests/unit/tools/oxlint/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/oxlint/conftest.py +17 -0
- lintro-0.42.5/tests/unit/tools/oxlint/test_check_method.py +167 -0
- lintro-0.42.5/tests/unit/tools/oxlint/test_default_options.py +57 -0
- lintro-0.42.5/tests/unit/tools/oxlint/test_fix_method.py +512 -0
- lintro-0.42.5/tests/unit/tools/oxlint/test_set_options.py +239 -0
- lintro-0.42.5/tests/unit/tools/prettier/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/prettier/conftest.py +17 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_check_method.py +3 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_config_discovery.py +81 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_default_options.py +52 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_fix_method.py +159 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_output_parsing.py +50 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_set_options.py +83 -0
- lintro-0.42.5/tests/unit/tools/prettier/test_timeout_handling.py +87 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/conftest.py +13 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/test_build_command.py +46 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/test_check_method.py +123 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/test_config_initialization.py +31 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/test_default_options.py +39 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/test_fix_method.py +26 -0
- lintro-0.42.5/tests/unit/tools/pydoclint/test_set_options.py +31 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/conftest.py +406 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_check_method.py +191 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_configuration.py +97 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_json_parsing.py +64 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_junit_parsing.py +57 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_output_parsing.py +107 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_output_processing.py +158 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_pytest_handlers.py +320 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_pytest_issue.py +39 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_pytest_output_processor.py +94 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_result_processor.py +126 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_set_options.py +135 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_text_parsing.py +42 -0
- lintro-0.42.5/tests/unit/tools/pytest_tool/test_validators.py +48 -0
- lintro-0.42.5/tests/unit/tools/ruff/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/conftest.py +4 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_config_detection.py +85 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_error_handling.py +135 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_format_normalization.py +55 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_json_parsing.py +136 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_no_issues.py +108 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_output_format.py +72 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_output_truncation.py +156 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_path_filtering.py +213 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_real_plugin.py +52 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_timeout.py +51 -0
- lintro-0.42.5/tests/unit/tools/ruff/check/test_with_issues.py +166 -0
- lintro-0.42.5/tests/unit/tools/ruff/conftest.py +154 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/conftest.py +4 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_combined_issues.py +91 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_config.py +35 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_edge_cases.py +117 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_format_option.py +98 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_no_files.py +49 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_real_plugin.py +65 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_successful_fix.py +106 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_temporary_option.py +79 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_timeout.py +177 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_unsafe_fixes.py +76 -0
- lintro-0.42.5/tests/unit/tools/ruff/fix/test_version_check.py +29 -0
- lintro-0.42.5/tests/unit/tools/rustfmt/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/rustfmt/conftest.py +23 -0
- lintro-0.42.5/tests/unit/tools/rustfmt/test_error_handling.py +247 -0
- lintro-0.42.5/tests/unit/tools/rustfmt/test_execution.py +254 -0
- lintro-0.42.5/tests/unit/tools/rustfmt/test_options.py +175 -0
- lintro-0.42.5/tests/unit/tools/semgrep/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/semgrep/conftest.py +24 -0
- lintro-0.42.5/tests/unit/tools/semgrep/test_error_handling.py +238 -0
- lintro-0.42.5/tests/unit/tools/semgrep/test_execution.py +171 -0
- lintro-0.42.5/tests/unit/tools/semgrep/test_options.py +353 -0
- lintro-0.42.5/tests/unit/tools/shellcheck/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/shellcheck/conftest.py +24 -0
- lintro-0.42.5/tests/unit/tools/shellcheck/test_error_handling.py +38 -0
- lintro-0.42.5/tests/unit/tools/shellcheck/test_execution.py +182 -0
- lintro-0.42.5/tests/unit/tools/shellcheck/test_options.py +282 -0
- lintro-0.42.5/tests/unit/tools/shfmt/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/shfmt/conftest.py +23 -0
- lintro-0.42.5/tests/unit/tools/shfmt/test_error_handling.py +144 -0
- lintro-0.42.5/tests/unit/tools/shfmt/test_execution.py +205 -0
- lintro-0.42.5/tests/unit/tools/shfmt/test_options.py +307 -0
- lintro-0.42.5/tests/unit/tools/sqlfluff/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/sqlfluff/conftest.py +27 -0
- lintro-0.42.5/tests/unit/tools/sqlfluff/test_error_handling.py +98 -0
- lintro-0.42.5/tests/unit/tools/sqlfluff/test_execution.py +171 -0
- lintro-0.42.5/tests/unit/tools/sqlfluff/test_options.py +385 -0
- lintro-0.42.5/tests/unit/tools/sqlfluff/test_output_parsing.py +134 -0
- lintro-0.42.5/tests/unit/tools/taplo/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/taplo/conftest.py +23 -0
- lintro-0.42.5/tests/unit/tools/taplo/test_error_handling.py +128 -0
- lintro-0.42.5/tests/unit/tools/taplo/test_execution.py +286 -0
- lintro-0.42.5/tests/unit/tools/taplo/test_options.py +279 -0
- lintro-0.42.5/tests/unit/tools/test_common_behaviors.py +450 -0
- lintro-0.42.5/tests/unit/tools/test_edge_cases.py +350 -0
- lintro-0.42.5/tests/unit/tools/test_helpers.py +327 -0
- lintro-0.42.5/tests/unit/tools/test_plugin_definitions.py +421 -0
- lintro-0.42.5/tests/unit/tools/test_tool_definitions.py +333 -0
- lintro-0.42.5/tests/unit/tools/tsc/__init__.py +1 -0
- lintro-0.42.5/tests/unit/tools/tsc/conftest.py +6 -0
- lintro-0.42.5/tests/unit/tools/tsc/test_execution.py +171 -0
- lintro-0.42.5/tests/unit/tools/tsc/test_options.py +347 -0
- lintro-0.42.5/tests/unit/tools/tsc/test_tsc_plugin.py +236 -0
- lintro-0.42.5/tests/unit/utils/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/conftest.py +121 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_callbacks.py +100 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_exceptions.py +51 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_init.py +32 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_parallel_batches.py +164 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_run_tool_async.py +137 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_run_tools_parallel.py +190 -0
- lintro-0.42.5/tests/unit/utils/async_tool_executor/test_shutdown.py +28 -0
- lintro-0.42.5/tests/unit/utils/config/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/config/conftest.py +65 -0
- lintro-0.42.5/tests/unit/utils/config/test_manager_configuration.py +420 -0
- lintro-0.42.5/tests/unit/utils/config/test_manager_core.py +337 -0
- lintro-0.42.5/tests/unit/utils/conftest.py +128 -0
- lintro-0.42.5/tests/unit/utils/console/conftest.py +39 -0
- lintro-0.42.5/tests/unit/utils/console/summary/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/console/summary/test_delegation.py +364 -0
- lintro-0.42.5/tests/unit/utils/console/summary/test_execution_summary.py +353 -0
- lintro-0.42.5/tests/unit/utils/console/test_logger_headers.py +123 -0
- lintro-0.42.5/tests/unit/utils/console/test_logger_initialization.py +36 -0
- lintro-0.42.5/tests/unit/utils/console/test_logger_levels.py +129 -0
- lintro-0.42.5/tests/unit/utils/console/test_logger_metadata.py +140 -0
- lintro-0.42.5/tests/unit/utils/console/test_logger_output_methods.py +149 -0
- lintro-0.42.5/tests/unit/utils/console/test_logger_results.py +111 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/conftest.py +36 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_config_constants.py +41 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_json_config.py +109 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_jsonc_comments.py +189 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_markdownlint_config.py +130 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_oxfmt_config.py +172 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_oxlint_config.py +115 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_pyproject_tools.py +66 -0
- lintro-0.42.5/tests/unit/utils/native_parsers/test_yamllint_config.py +89 -0
- lintro-0.42.5/tests/unit/utils/output/__init__.py +3 -0
- lintro-0.42.5/tests/unit/utils/output/conftest.py +102 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_common.py +47 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_csv.py +83 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_format.py +256 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_html.py +118 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_json.py +92 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_markdown.py +115 -0
- lintro-0.42.5/tests/unit/utils/output/test_file_writer_plain.py +78 -0
- lintro-0.42.5/tests/unit/utils/output/test_helpers.py +135 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/conftest.py +32 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_action_normalization.py +87 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_fix_action.py +165 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_fixable_hints.py +151 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_generic_output.py +139 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_output_display.py +96 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_pytest_output.py +176 -0
- lintro-0.42.5/tests/unit/utils/result_formatters/test_ruff_formatting.py +114 -0
- lintro-0.42.5/tests/unit/utils/summary/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/summary/test_display.py +451 -0
- lintro-0.42.5/tests/unit/utils/summary/test_safe_cast.py +119 -0
- lintro-0.42.5/tests/unit/utils/test_ascii_normalize.py +43 -0
- lintro-0.42.5/tests/unit/utils/test_ascii_normalize_cli.py +202 -0
- lintro-0.42.5/tests/unit/utils/test_config_reporting.py +359 -0
- lintro-0.42.5/tests/unit/utils/test_console_output_writer.py +245 -0
- lintro-0.42.5/tests/unit/utils/test_display_helpers.py +354 -0
- lintro-0.42.5/tests/unit/utils/test_display_helpers_fallback.py +312 -0
- lintro-0.42.5/tests/unit/utils/test_enums_and_normalizers.py +98 -0
- lintro-0.42.5/tests/unit/utils/test_file_cache.py +236 -0
- lintro-0.42.5/tests/unit/utils/test_logger_setup.py +152 -0
- lintro-0.42.5/tests/unit/utils/test_native_parsers.py +131 -0
- lintro-0.42.5/tests/unit/utils/test_output_writers.py +393 -0
- lintro-0.42.5/tests/unit/utils/test_parser_registry.py +265 -0
- lintro-0.42.5/tests/unit/utils/test_path_filtering.py +297 -0
- lintro-0.42.5/tests/unit/utils/test_path_utils.py +232 -0
- lintro-0.42.5/tests/unit/utils/test_streaming_output.py +389 -0
- lintro-0.42.5/tests/unit/utils/test_timeout_utils.py +139 -0
- lintro-0.42.5/tests/unit/utils/test_tool_config_info.py +20 -0
- lintro-0.42.5/tests/unit/utils/test_tool_utils.py +44 -0
- lintro-0.42.5/tests/unit/utils/unified_config/__init__.py +1 -0
- lintro-0.42.5/tests/unit/utils/unified_config/conftest.py +47 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_config_summary.py +89 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_consistency.py +55 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_constants.py +74 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_dataclasses.py +47 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_enums.py +36 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_injectable.py +46 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_line_length.py +109 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_nested_value.py +65 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_ordered_tools.py +57 -0
- lintro-0.42.5/tests/unit/utils/unified_config/test_tool_priority.py +78 -0
- lintro-0.42.5/tests/utils/__init__.py +1 -0
- lintro-0.42.5/tests/utils/test_formatting.py +45 -0
- lintro-0.42.5/tests/utils/test_output_manager.py +213 -0
- lintro-0.42.5/tests/utils/test_path_utils.py +89 -0
lintro-0.42.5/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 lgtm-hq
|
|
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.42.5/PKG-INFO
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lintro
|
|
3
|
+
Version: 0.42.5
|
|
4
|
+
Summary: A unified CLI tool for code formatting, linting, and quality assurance
|
|
5
|
+
Author-email: lgtm-hq <turbocoder13@gmail.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2024 lgtm-hq
|
|
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/lgtm-hq/py-lintro
|
|
28
|
+
Project-URL: Documentation, https://github.com/lgtm-hq/py-lintro/docs
|
|
29
|
+
Project-URL: Source, https://github.com/lgtm-hq/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.11
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
38
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
39
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
40
|
+
Classifier: Topic :: Utilities
|
|
41
|
+
Requires-Python: >=3.11
|
|
42
|
+
Description-Content-Type: text/markdown
|
|
43
|
+
License-File: LICENSE
|
|
44
|
+
Requires-Dist: click==8.1.8
|
|
45
|
+
Requires-Dist: coverage-badge==1.1.2
|
|
46
|
+
Requires-Dist: loguru==0.7.3
|
|
47
|
+
Requires-Dist: packaging>=25.0
|
|
48
|
+
Requires-Dist: pathspec>=0.12.1
|
|
49
|
+
Requires-Dist: pydantic>=2.12.5
|
|
50
|
+
Requires-Dist: rich>=14.2.0
|
|
51
|
+
Requires-Dist: tabulate==0.9.0
|
|
52
|
+
Requires-Dist: yamllint==1.37.1
|
|
53
|
+
Requires-Dist: httpx==0.28.1
|
|
54
|
+
Requires-Dist: defusedxml==0.7.1
|
|
55
|
+
Requires-Dist: ruff>=0.14.10
|
|
56
|
+
Requires-Dist: black>=25.12.0
|
|
57
|
+
Requires-Dist: bandit>=1.9.2
|
|
58
|
+
Requires-Dist: mypy>=1.19.1
|
|
59
|
+
Requires-Dist: pydoclint>=0.8.3
|
|
60
|
+
Provides-Extra: dev
|
|
61
|
+
Requires-Dist: pytest==9.0.2; extra == "dev"
|
|
62
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "dev"
|
|
63
|
+
Requires-Dist: pytest-mock==3.15.1; extra == "dev"
|
|
64
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
|
|
65
|
+
Requires-Dist: pytest-sugar==1.1.1; extra == "dev"
|
|
66
|
+
Requires-Dist: tox==4.34.1; extra == "dev"
|
|
67
|
+
Requires-Dist: allure-pytest==2.15.3; extra == "dev"
|
|
68
|
+
Requires-Dist: ruff; extra == "dev"
|
|
69
|
+
Requires-Dist: mypy; extra == "dev"
|
|
70
|
+
Requires-Dist: coverage-badge==1.1.2; extra == "dev"
|
|
71
|
+
Requires-Dist: python-semantic-release==10.5.3; extra == "dev"
|
|
72
|
+
Requires-Dist: assertpy==1.1; extra == "dev"
|
|
73
|
+
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
74
|
+
Provides-Extra: test
|
|
75
|
+
Requires-Dist: pytest==9.0.2; extra == "test"
|
|
76
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "test"
|
|
77
|
+
Requires-Dist: pytest-mock==3.15.1; extra == "test"
|
|
78
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "test"
|
|
79
|
+
Requires-Dist: assertpy==1.1; extra == "test"
|
|
80
|
+
Provides-Extra: typing
|
|
81
|
+
Requires-Dist: types-setuptools==80.9.0.20251223; extra == "typing"
|
|
82
|
+
Requires-Dist: types-tabulate==0.9.0.20241207; extra == "typing"
|
|
83
|
+
Provides-Extra: tools
|
|
84
|
+
Requires-Dist: semgrep>=1.85.0; extra == "tools"
|
|
85
|
+
Requires-Dist: sqlfluff>=4.0.0; extra == "tools"
|
|
86
|
+
Dynamic: license-file
|
|
87
|
+
|
|
88
|
+
# Lintro
|
|
89
|
+
|
|
90
|
+
<!-- markdownlint-disable MD033 MD013 -->
|
|
91
|
+
<img src="https://raw.githubusercontent.com/lgtm-hq/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;">
|
|
92
|
+
<!-- markdownlint-enable MD033 MD013 -->
|
|
93
|
+
|
|
94
|
+
A comprehensive CLI tool that unifies various code formatting, linting, and quality
|
|
95
|
+
assurance tools under a single command-line interface.
|
|
96
|
+
|
|
97
|
+
<!-- Badges: Build & Quality -->
|
|
98
|
+
|
|
99
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/test-and-coverage.yml?query=branch%3Amain)
|
|
100
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
|
|
101
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
|
|
102
|
+
[](https://codecov.io/gh/lgtm-hq/py-lintro)
|
|
103
|
+
|
|
104
|
+
<!-- Badges: Releases -->
|
|
105
|
+
|
|
106
|
+
[](https://github.com/lgtm-hq/py-lintro/releases/latest)
|
|
107
|
+
[](https://pypi.org/project/lintro/)
|
|
108
|
+
[](https://www.python.org/downloads/)
|
|
109
|
+
[](LICENSE)
|
|
110
|
+
|
|
111
|
+
<!-- Badges: Security & Supply Chain -->
|
|
112
|
+
|
|
113
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
|
|
114
|
+
[](https://scorecard.dev/viewer/?uri=github.com/lgtm-hq/py-lintro)
|
|
115
|
+
[](https://www.bestpractices.dev/projects/11142)
|
|
116
|
+
[](docs/security/assurance.md)
|
|
117
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/sbom-on-main.yml?query=branch%3Amain)
|
|
118
|
+
|
|
119
|
+
## 🚀 Quick Start
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pip install lintro # Install
|
|
123
|
+
lintro check . # Find issues
|
|
124
|
+
lintro format . # Fix issues
|
|
125
|
+
lintro check --output-format grid # Beautiful output
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
<!-- TODO: Add screenshot of grid output -->
|
|
129
|
+
|
|
130
|
+
## ✨ Why Lintro?
|
|
131
|
+
|
|
132
|
+
- **🎯 Unified Interface** - One command for all your linting and formatting tools
|
|
133
|
+
- **📊 Consistent Output** - Beautiful, standardized output formats across all tools
|
|
134
|
+
- **🔧 Auto-fixing** - Automatically fix issues where possible
|
|
135
|
+
- **🐳 Docker Ready** - Run in isolated containers for consistent environments
|
|
136
|
+
- **📈 Rich Reporting** - Multiple formats: grid, JSON, HTML, CSV, Markdown
|
|
137
|
+
- **⚡ Fast** - Optimized parallel execution
|
|
138
|
+
|
|
139
|
+
## 🔌 Works With Your Existing Configs
|
|
140
|
+
|
|
141
|
+
Lintro respects your native tool configurations. If you have a `.prettierrc`,
|
|
142
|
+
`pyproject.toml [tool.ruff]`, or `.yamllint`, Lintro uses them automatically - no
|
|
143
|
+
migration required.
|
|
144
|
+
|
|
145
|
+
- **Native configs are detected** - Your existing `.prettierrc`, `.eslintrc`, etc. work
|
|
146
|
+
as-is
|
|
147
|
+
- **Enforce settings override consistently** - Set `line_length: 88` once, applied
|
|
148
|
+
everywhere
|
|
149
|
+
- **Fallback defaults when needed** - Tools without native configs use sensible defaults
|
|
150
|
+
|
|
151
|
+
See the [Configuration Guide](docs/configuration.md) for details on the 4-tier config
|
|
152
|
+
system.
|
|
153
|
+
|
|
154
|
+
## 🛠️ Supported Tools
|
|
155
|
+
|
|
156
|
+
<!-- markdownlint-disable MD013 MD060 -->
|
|
157
|
+
|
|
158
|
+
| Tool | Language | Auto-fix |
|
|
159
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------- |
|
|
160
|
+
| [](https://github.com/rhysd/actionlint) | ⚙️ GitHub Actions | - |
|
|
161
|
+
| [](https://github.com/PyCQA/bandit) | 🐍 Python | - |
|
|
162
|
+
| [](https://github.com/psf/black) | 🐍 Python | ✅ |
|
|
163
|
+
| [](https://github.com/rust-lang/rust-clippy) | 🦀 Rust | ✅ |
|
|
164
|
+
| [](https://gitleaks.io/) | 🔐 Secret Detection | - |
|
|
165
|
+
| [](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
|
|
166
|
+
| [](https://github.com/DavidAnson/markdownlint-cli2) | 📝 Markdown | - |
|
|
167
|
+
| [](https://mypy-lang.org/) | 🐍 Python | - |
|
|
168
|
+
| [](https://oxc.rs/) | 🟨 JS/TS | ✅ |
|
|
169
|
+
| [](https://oxc.rs/) | 🟨 JS/TS | ✅ |
|
|
170
|
+
| [](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | ✅ |
|
|
171
|
+
| [](https://github.com/jsh9/pydoclint) | 🐍 Python | - |
|
|
172
|
+
| [](https://github.com/astral-sh/ruff) | 🐍 Python | ✅ |
|
|
173
|
+
| [](https://semgrep.dev/) | 🔒 Multi-language | - |
|
|
174
|
+
| [](https://www.shellcheck.net/) | 🐚 Shell Scripts | - |
|
|
175
|
+
| [](https://github.com/mvdan/sh) | 🐚 Shell Scripts | ✅ |
|
|
176
|
+
| [](https://sqlfluff.com/) | 🗃️ SQL | ✅ |
|
|
177
|
+
| [](https://taplo.tamasfe.dev/) | 🧾 TOML | ✅ |
|
|
178
|
+
| [](https://www.typescriptlang.org/) | 🟨 JS/TS | - |
|
|
179
|
+
| [](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
|
|
180
|
+
|
|
181
|
+
<!-- markdownlint-enable MD013 MD060 -->
|
|
182
|
+
|
|
183
|
+
## 📋 Requirements
|
|
184
|
+
|
|
185
|
+
### Python Version
|
|
186
|
+
|
|
187
|
+
**Python 3.11+** is required. Lintro uses modern Python features not available in older
|
|
188
|
+
versions.
|
|
189
|
+
|
|
190
|
+
### Bundled Tools
|
|
191
|
+
|
|
192
|
+
These Python tools are automatically installed with Lintro:
|
|
193
|
+
|
|
194
|
+
- **Ruff** - Fast Python linter and formatter
|
|
195
|
+
- **Black** - Python code formatter
|
|
196
|
+
- **Bandit** - Python security linter
|
|
197
|
+
- **Mypy** - Python static type checker
|
|
198
|
+
- **Yamllint** - YAML linter
|
|
199
|
+
- **pydoclint** - Python docstring linter
|
|
200
|
+
|
|
201
|
+
### Optional External Tools
|
|
202
|
+
|
|
203
|
+
For full functionality, install these additional tools:
|
|
204
|
+
|
|
205
|
+
- **Prettier** - `npm install -g prettier`
|
|
206
|
+
- **Markdownlint-cli2** - `npm install -g markdownlint-cli2`
|
|
207
|
+
- **Oxlint** - `bun add -g oxlint` or `npm install -g oxlint`
|
|
208
|
+
- **Oxfmt** - `bun add -g oxfmt` or `npm install -g oxfmt`
|
|
209
|
+
- **Hadolint** - [GitHub Releases](https://github.com/hadolint/hadolint/releases)
|
|
210
|
+
- **Actionlint** - [GitHub Releases](https://github.com/rhysd/actionlint/releases)
|
|
211
|
+
- **Semgrep** - `pipx install semgrep`, `pip install semgrep`, or `brew install semgrep`
|
|
212
|
+
- **Gitleaks** - `brew install gitleaks` or
|
|
213
|
+
[GitHub Releases](https://github.com/gitleaks/gitleaks/releases)
|
|
214
|
+
- **ShellCheck** - `brew install shellcheck` or
|
|
215
|
+
[GitHub Releases](https://github.com/koalaman/shellcheck/releases)
|
|
216
|
+
- **shfmt** - `brew install shfmt` or
|
|
217
|
+
[GitHub Releases](https://github.com/mvdan/sh/releases)
|
|
218
|
+
- **SQLFluff** - `pip install sqlfluff`
|
|
219
|
+
- **Taplo** - `brew install taplo` or
|
|
220
|
+
[GitHub Releases](https://github.com/tamasfe/taplo/releases)
|
|
221
|
+
- **TypeScript** - `brew install typescript`, `bun add -g typescript`, or
|
|
222
|
+
`npm install -g typescript`
|
|
223
|
+
|
|
224
|
+
Check all tool versions with: `lintro list-tools`
|
|
225
|
+
|
|
226
|
+
## 📦 Installation
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# PyPI (recommended)
|
|
230
|
+
pip install lintro
|
|
231
|
+
|
|
232
|
+
# Homebrew (macOS binary)
|
|
233
|
+
brew tap lgtm-hq/tap && brew install lintro-bin
|
|
234
|
+
|
|
235
|
+
# Docker (includes all tools)
|
|
236
|
+
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
See [Getting Started](docs/getting-started.md) for detailed installation options.
|
|
240
|
+
|
|
241
|
+
## 💻 Usage
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# Check all files
|
|
245
|
+
lintro check .
|
|
246
|
+
|
|
247
|
+
# Auto-fix issues
|
|
248
|
+
lintro format .
|
|
249
|
+
|
|
250
|
+
# Grid output with grouping
|
|
251
|
+
lintro check --output-format grid --group-by file
|
|
252
|
+
|
|
253
|
+
# Run specific tools
|
|
254
|
+
lintro check --tools ruff,prettier,mypy
|
|
255
|
+
|
|
256
|
+
# Exclude directories
|
|
257
|
+
lintro check --exclude "node_modules,dist,venv"
|
|
258
|
+
|
|
259
|
+
# List available tools
|
|
260
|
+
lintro list-tools
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### 🐳 Docker
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Run from GHCR
|
|
267
|
+
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check
|
|
268
|
+
|
|
269
|
+
# With formatting
|
|
270
|
+
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check --output-format grid
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## 📚 Documentation
|
|
274
|
+
|
|
275
|
+
| Guide | Description |
|
|
276
|
+
| ------------------------------------------------ | --------------------------------------- |
|
|
277
|
+
| [Getting Started](docs/getting-started.md) | Installation, first steps, requirements |
|
|
278
|
+
| [Configuration](docs/configuration.md) | Tool configuration, options, presets |
|
|
279
|
+
| [Docker Usage](docs/docker.md) | Containerized development |
|
|
280
|
+
| [GitHub Integration](docs/github-integration.md) | CI/CD setup, workflows |
|
|
281
|
+
| [Contributing](docs/contributing.md) | Development guide, adding tools |
|
|
282
|
+
| [Troubleshooting](docs/troubleshooting.md) | Common issues and solutions |
|
|
283
|
+
|
|
284
|
+
**Advanced:** [Tool Analysis](docs/tool-analysis/) | [Architecture](docs/architecture/)
|
|
285
|
+
| [Security](docs/security/)
|
|
286
|
+
|
|
287
|
+
## 🔨 Development
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Clone and install
|
|
291
|
+
git clone https://github.com/lgtm-hq/py-lintro.git
|
|
292
|
+
cd py-lintro
|
|
293
|
+
uv sync --dev
|
|
294
|
+
|
|
295
|
+
# Run tests
|
|
296
|
+
./scripts/local/run-tests.sh
|
|
297
|
+
|
|
298
|
+
# Run lintro on itself
|
|
299
|
+
./scripts/local/local-lintro.sh check --output-format grid
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## 🤝 Community
|
|
303
|
+
|
|
304
|
+
- 🐛
|
|
305
|
+
[Bug Reports](https://github.com/lgtm-hq/py-lintro/issues/new?template=bug_report.md)
|
|
306
|
+
- 💡
|
|
307
|
+
[Feature Requests](https://github.com/lgtm-hq/py-lintro/issues/new?template=feature_request.md)
|
|
308
|
+
- ❓ [Questions](https://github.com/lgtm-hq/py-lintro/issues/new?template=question.md)
|
|
309
|
+
- 📖 [Contributing Guide](docs/contributing.md)
|
|
310
|
+
|
|
311
|
+
## 📄 License
|
|
312
|
+
|
|
313
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
lintro-0.42.5/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Lintro
|
|
2
|
+
|
|
3
|
+
<!-- markdownlint-disable MD033 MD013 -->
|
|
4
|
+
<img src="https://raw.githubusercontent.com/lgtm-hq/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;">
|
|
5
|
+
<!-- markdownlint-enable MD033 MD013 -->
|
|
6
|
+
|
|
7
|
+
A comprehensive CLI tool that unifies various code formatting, linting, and quality
|
|
8
|
+
assurance tools under a single command-line interface.
|
|
9
|
+
|
|
10
|
+
<!-- Badges: Build & Quality -->
|
|
11
|
+
|
|
12
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/test-and-coverage.yml?query=branch%3Amain)
|
|
13
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
|
|
14
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
|
|
15
|
+
[](https://codecov.io/gh/lgtm-hq/py-lintro)
|
|
16
|
+
|
|
17
|
+
<!-- Badges: Releases -->
|
|
18
|
+
|
|
19
|
+
[](https://github.com/lgtm-hq/py-lintro/releases/latest)
|
|
20
|
+
[](https://pypi.org/project/lintro/)
|
|
21
|
+
[](https://www.python.org/downloads/)
|
|
22
|
+
[](LICENSE)
|
|
23
|
+
|
|
24
|
+
<!-- Badges: Security & Supply Chain -->
|
|
25
|
+
|
|
26
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
|
|
27
|
+
[](https://scorecard.dev/viewer/?uri=github.com/lgtm-hq/py-lintro)
|
|
28
|
+
[](https://www.bestpractices.dev/projects/11142)
|
|
29
|
+
[](docs/security/assurance.md)
|
|
30
|
+
[](https://github.com/lgtm-hq/py-lintro/actions/workflows/sbom-on-main.yml?query=branch%3Amain)
|
|
31
|
+
|
|
32
|
+
## 🚀 Quick Start
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pip install lintro # Install
|
|
36
|
+
lintro check . # Find issues
|
|
37
|
+
lintro format . # Fix issues
|
|
38
|
+
lintro check --output-format grid # Beautiful output
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
<!-- TODO: Add screenshot of grid output -->
|
|
42
|
+
|
|
43
|
+
## ✨ Why Lintro?
|
|
44
|
+
|
|
45
|
+
- **🎯 Unified Interface** - One command for all your linting and formatting tools
|
|
46
|
+
- **📊 Consistent Output** - Beautiful, standardized output formats across all tools
|
|
47
|
+
- **🔧 Auto-fixing** - Automatically fix issues where possible
|
|
48
|
+
- **🐳 Docker Ready** - Run in isolated containers for consistent environments
|
|
49
|
+
- **📈 Rich Reporting** - Multiple formats: grid, JSON, HTML, CSV, Markdown
|
|
50
|
+
- **⚡ Fast** - Optimized parallel execution
|
|
51
|
+
|
|
52
|
+
## 🔌 Works With Your Existing Configs
|
|
53
|
+
|
|
54
|
+
Lintro respects your native tool configurations. If you have a `.prettierrc`,
|
|
55
|
+
`pyproject.toml [tool.ruff]`, or `.yamllint`, Lintro uses them automatically - no
|
|
56
|
+
migration required.
|
|
57
|
+
|
|
58
|
+
- **Native configs are detected** - Your existing `.prettierrc`, `.eslintrc`, etc. work
|
|
59
|
+
as-is
|
|
60
|
+
- **Enforce settings override consistently** - Set `line_length: 88` once, applied
|
|
61
|
+
everywhere
|
|
62
|
+
- **Fallback defaults when needed** - Tools without native configs use sensible defaults
|
|
63
|
+
|
|
64
|
+
See the [Configuration Guide](docs/configuration.md) for details on the 4-tier config
|
|
65
|
+
system.
|
|
66
|
+
|
|
67
|
+
## 🛠️ Supported Tools
|
|
68
|
+
|
|
69
|
+
<!-- markdownlint-disable MD013 MD060 -->
|
|
70
|
+
|
|
71
|
+
| Tool | Language | Auto-fix |
|
|
72
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | -------- |
|
|
73
|
+
| [](https://github.com/rhysd/actionlint) | ⚙️ GitHub Actions | - |
|
|
74
|
+
| [](https://github.com/PyCQA/bandit) | 🐍 Python | - |
|
|
75
|
+
| [](https://github.com/psf/black) | 🐍 Python | ✅ |
|
|
76
|
+
| [](https://github.com/rust-lang/rust-clippy) | 🦀 Rust | ✅ |
|
|
77
|
+
| [](https://gitleaks.io/) | 🔐 Secret Detection | - |
|
|
78
|
+
| [](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
|
|
79
|
+
| [](https://github.com/DavidAnson/markdownlint-cli2) | 📝 Markdown | - |
|
|
80
|
+
| [](https://mypy-lang.org/) | 🐍 Python | - |
|
|
81
|
+
| [](https://oxc.rs/) | 🟨 JS/TS | ✅ |
|
|
82
|
+
| [](https://oxc.rs/) | 🟨 JS/TS | ✅ |
|
|
83
|
+
| [](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | ✅ |
|
|
84
|
+
| [](https://github.com/jsh9/pydoclint) | 🐍 Python | - |
|
|
85
|
+
| [](https://github.com/astral-sh/ruff) | 🐍 Python | ✅ |
|
|
86
|
+
| [](https://semgrep.dev/) | 🔒 Multi-language | - |
|
|
87
|
+
| [](https://www.shellcheck.net/) | 🐚 Shell Scripts | - |
|
|
88
|
+
| [](https://github.com/mvdan/sh) | 🐚 Shell Scripts | ✅ |
|
|
89
|
+
| [](https://sqlfluff.com/) | 🗃️ SQL | ✅ |
|
|
90
|
+
| [](https://taplo.tamasfe.dev/) | 🧾 TOML | ✅ |
|
|
91
|
+
| [](https://www.typescriptlang.org/) | 🟨 JS/TS | - |
|
|
92
|
+
| [](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
|
|
93
|
+
|
|
94
|
+
<!-- markdownlint-enable MD013 MD060 -->
|
|
95
|
+
|
|
96
|
+
## 📋 Requirements
|
|
97
|
+
|
|
98
|
+
### Python Version
|
|
99
|
+
|
|
100
|
+
**Python 3.11+** is required. Lintro uses modern Python features not available in older
|
|
101
|
+
versions.
|
|
102
|
+
|
|
103
|
+
### Bundled Tools
|
|
104
|
+
|
|
105
|
+
These Python tools are automatically installed with Lintro:
|
|
106
|
+
|
|
107
|
+
- **Ruff** - Fast Python linter and formatter
|
|
108
|
+
- **Black** - Python code formatter
|
|
109
|
+
- **Bandit** - Python security linter
|
|
110
|
+
- **Mypy** - Python static type checker
|
|
111
|
+
- **Yamllint** - YAML linter
|
|
112
|
+
- **pydoclint** - Python docstring linter
|
|
113
|
+
|
|
114
|
+
### Optional External Tools
|
|
115
|
+
|
|
116
|
+
For full functionality, install these additional tools:
|
|
117
|
+
|
|
118
|
+
- **Prettier** - `npm install -g prettier`
|
|
119
|
+
- **Markdownlint-cli2** - `npm install -g markdownlint-cli2`
|
|
120
|
+
- **Oxlint** - `bun add -g oxlint` or `npm install -g oxlint`
|
|
121
|
+
- **Oxfmt** - `bun add -g oxfmt` or `npm install -g oxfmt`
|
|
122
|
+
- **Hadolint** - [GitHub Releases](https://github.com/hadolint/hadolint/releases)
|
|
123
|
+
- **Actionlint** - [GitHub Releases](https://github.com/rhysd/actionlint/releases)
|
|
124
|
+
- **Semgrep** - `pipx install semgrep`, `pip install semgrep`, or `brew install semgrep`
|
|
125
|
+
- **Gitleaks** - `brew install gitleaks` or
|
|
126
|
+
[GitHub Releases](https://github.com/gitleaks/gitleaks/releases)
|
|
127
|
+
- **ShellCheck** - `brew install shellcheck` or
|
|
128
|
+
[GitHub Releases](https://github.com/koalaman/shellcheck/releases)
|
|
129
|
+
- **shfmt** - `brew install shfmt` or
|
|
130
|
+
[GitHub Releases](https://github.com/mvdan/sh/releases)
|
|
131
|
+
- **SQLFluff** - `pip install sqlfluff`
|
|
132
|
+
- **Taplo** - `brew install taplo` or
|
|
133
|
+
[GitHub Releases](https://github.com/tamasfe/taplo/releases)
|
|
134
|
+
- **TypeScript** - `brew install typescript`, `bun add -g typescript`, or
|
|
135
|
+
`npm install -g typescript`
|
|
136
|
+
|
|
137
|
+
Check all tool versions with: `lintro list-tools`
|
|
138
|
+
|
|
139
|
+
## 📦 Installation
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# PyPI (recommended)
|
|
143
|
+
pip install lintro
|
|
144
|
+
|
|
145
|
+
# Homebrew (macOS binary)
|
|
146
|
+
brew tap lgtm-hq/tap && brew install lintro-bin
|
|
147
|
+
|
|
148
|
+
# Docker (includes all tools)
|
|
149
|
+
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
See [Getting Started](docs/getting-started.md) for detailed installation options.
|
|
153
|
+
|
|
154
|
+
## 💻 Usage
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Check all files
|
|
158
|
+
lintro check .
|
|
159
|
+
|
|
160
|
+
# Auto-fix issues
|
|
161
|
+
lintro format .
|
|
162
|
+
|
|
163
|
+
# Grid output with grouping
|
|
164
|
+
lintro check --output-format grid --group-by file
|
|
165
|
+
|
|
166
|
+
# Run specific tools
|
|
167
|
+
lintro check --tools ruff,prettier,mypy
|
|
168
|
+
|
|
169
|
+
# Exclude directories
|
|
170
|
+
lintro check --exclude "node_modules,dist,venv"
|
|
171
|
+
|
|
172
|
+
# List available tools
|
|
173
|
+
lintro list-tools
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 🐳 Docker
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# Run from GHCR
|
|
180
|
+
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check
|
|
181
|
+
|
|
182
|
+
# With formatting
|
|
183
|
+
docker run --rm -v $(pwd):/code ghcr.io/lgtm-hq/py-lintro:latest check --output-format grid
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## 📚 Documentation
|
|
187
|
+
|
|
188
|
+
| Guide | Description |
|
|
189
|
+
| ------------------------------------------------ | --------------------------------------- |
|
|
190
|
+
| [Getting Started](docs/getting-started.md) | Installation, first steps, requirements |
|
|
191
|
+
| [Configuration](docs/configuration.md) | Tool configuration, options, presets |
|
|
192
|
+
| [Docker Usage](docs/docker.md) | Containerized development |
|
|
193
|
+
| [GitHub Integration](docs/github-integration.md) | CI/CD setup, workflows |
|
|
194
|
+
| [Contributing](docs/contributing.md) | Development guide, adding tools |
|
|
195
|
+
| [Troubleshooting](docs/troubleshooting.md) | Common issues and solutions |
|
|
196
|
+
|
|
197
|
+
**Advanced:** [Tool Analysis](docs/tool-analysis/) | [Architecture](docs/architecture/)
|
|
198
|
+
| [Security](docs/security/)
|
|
199
|
+
|
|
200
|
+
## 🔨 Development
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Clone and install
|
|
204
|
+
git clone https://github.com/lgtm-hq/py-lintro.git
|
|
205
|
+
cd py-lintro
|
|
206
|
+
uv sync --dev
|
|
207
|
+
|
|
208
|
+
# Run tests
|
|
209
|
+
./scripts/local/run-tests.sh
|
|
210
|
+
|
|
211
|
+
# Run lintro on itself
|
|
212
|
+
./scripts/local/local-lintro.sh check --output-format grid
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## 🤝 Community
|
|
216
|
+
|
|
217
|
+
- 🐛
|
|
218
|
+
[Bug Reports](https://github.com/lgtm-hq/py-lintro/issues/new?template=bug_report.md)
|
|
219
|
+
- 💡
|
|
220
|
+
[Feature Requests](https://github.com/lgtm-hq/py-lintro/issues/new?template=feature_request.md)
|
|
221
|
+
- ❓ [Questions](https://github.com/lgtm-hq/py-lintro/issues/new?template=question.md)
|
|
222
|
+
- 📖 [Contributing Guide](docs/contributing.md)
|
|
223
|
+
|
|
224
|
+
## 📄 License
|
|
225
|
+
|
|
226
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
@@ -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">86.7%</text>
|
|
19
|
+
<text x="800" y="140" transform="scale(.1)" textLength="260">86.7%</text>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
Binary file
|