lintro 0.13.0__tar.gz → 0.23.1__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.23.1/PKG-INFO +287 -0
- lintro-0.23.1/README.md +205 -0
- {lintro-0.13.0 → lintro-0.23.1}/assets/images/coverage-badge.svg +3 -3
- {lintro-0.13.0 → lintro-0.23.1}/docs/README.md +80 -33
- lintro-0.23.1/docs/SHELL-SCRIPT-STYLE-GUIDE.md +431 -0
- lintro-0.23.1/docs/architecture/ARCHITECTURE.md +570 -0
- lintro-0.23.1/docs/architecture/README.md +58 -0
- lintro-0.23.1/docs/architecture/ROADMAP.md +478 -0
- lintro-0.23.1/docs/architecture/VISION.md +271 -0
- {lintro-0.13.0 → lintro-0.23.1}/docs/configuration.md +432 -43
- {lintro-0.13.0 → lintro-0.23.1}/docs/contributing.md +122 -32
- {lintro-0.13.0 → lintro-0.23.1}/docs/docker.md +11 -4
- {lintro-0.13.0 → lintro-0.23.1}/docs/getting-started.md +98 -8
- {lintro-0.13.0 → lintro-0.23.1}/docs/github-integration.md +34 -20
- {lintro-0.13.0 → lintro-0.23.1}/docs/lintro-self-use.md +3 -1
- lintro-0.23.1/docs/plugins.md +220 -0
- {lintro-0.13.0 → lintro-0.23.1}/docs/security/assurance.md +9 -4
- {lintro-0.13.0 → lintro-0.23.1}/docs/security/requirements.md +4 -2
- {lintro-0.13.0 → lintro-0.23.1}/docs/style-guide.md +172 -72
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/README.md +47 -4
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/actionlint-analysis.md +2 -2
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/bandit-analysis.md +6 -6
- lintro-0.23.1/docs/tool-analysis/biome-analysis.md +211 -0
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/black-analysis.md +11 -12
- lintro-0.23.1/docs/tool-analysis/clippy-analysis.md +66 -0
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/darglint-analysis.md +18 -11
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/hadolint-analysis.md +24 -14
- lintro-0.23.1/docs/tool-analysis/markdownlint-analysis.md +79 -0
- lintro-0.23.1/docs/tool-analysis/mypy-analysis.md +82 -0
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/prettier-analysis.md +26 -11
- lintro-0.23.1/docs/tool-analysis/pytest-analysis.md +564 -0
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/ruff-analysis.md +34 -23
- {lintro-0.13.0 → lintro-0.23.1}/docs/tool-analysis/yamllint-analysis.md +12 -8
- lintro-0.23.1/docs/troubleshooting.md +168 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/__init__.py +1 -1
- lintro-0.23.1/lintro/cli.py +201 -0
- lintro-0.23.1/lintro/cli_utils/command_chainer.py +223 -0
- lintro-0.23.1/lintro/cli_utils/commands/__init__.py +15 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/cli_utils/commands/check.py +66 -27
- lintro-0.23.1/lintro/cli_utils/commands/config.py +393 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/cli_utils/commands/format.py +54 -15
- lintro-0.23.1/lintro/cli_utils/commands/init.py +348 -0
- lintro-0.23.1/lintro/cli_utils/commands/list_tools.py +300 -0
- lintro-0.23.1/lintro/cli_utils/commands/test.py +306 -0
- lintro-0.23.1/lintro/cli_utils/commands/versions.py +105 -0
- lintro-0.23.1/lintro/config/__init__.py +51 -0
- lintro-0.23.1/lintro/config/config_loader.py +413 -0
- lintro-0.23.1/lintro/config/enforce_config.py +22 -0
- lintro-0.23.1/lintro/config/execution_config.py +38 -0
- lintro-0.23.1/lintro/config/lintro_config.py +120 -0
- lintro-0.23.1/lintro/config/tool_config.py +22 -0
- lintro-0.23.1/lintro/config/tool_config_generator.py +364 -0
- lintro-0.23.1/lintro/enums/action.py +57 -0
- lintro-0.23.1/lintro/enums/bandit_levels.py +82 -0
- lintro-0.23.1/lintro/enums/boolean_string.py +15 -0
- lintro-0.23.1/lintro/enums/config_format.py +41 -0
- lintro-0.23.1/lintro/enums/config_key.py +14 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/darglint_strictness.py +6 -1
- lintro-0.23.1/lintro/enums/env_bool.py +13 -0
- lintro-0.23.1/lintro/enums/git_command.py +16 -0
- lintro-0.23.1/lintro/enums/git_ref.py +14 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/group_by.py +4 -1
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/hadolint_enums.py +11 -2
- lintro-0.23.1/lintro/enums/hyphenated_str_enum.py +49 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/output_format.py +4 -2
- lintro-0.23.1/lintro/enums/pytest_enums.py +130 -0
- lintro-0.23.1/lintro/enums/severity_level.py +44 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/tool_name.py +15 -3
- lintro-0.23.1/lintro/enums/tool_option_key.py +14 -0
- lintro-0.23.1/lintro/enums/tool_order.py +43 -0
- lintro-0.23.1/lintro/enums/tool_type.py +62 -0
- lintro-0.23.1/lintro/enums/tools_value.py +39 -0
- lintro-0.23.1/lintro/enums/uppercase_str_enum.py +45 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/yamllint_format.py +6 -1
- lintro-0.23.1/lintro/exceptions/errors.py +35 -0
- lintro-0.23.1/lintro/formatters/__init__.py +31 -0
- lintro-0.23.1/lintro/formatters/core/__init__.py +22 -0
- lintro-0.23.1/lintro/formatters/core/format_registry.py +178 -0
- lintro-0.23.1/lintro/formatters/formatter.py +273 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/csv.py +5 -1
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/grid.py +5 -1
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/html.py +5 -1
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/json.py +7 -8
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/markdown.py +5 -1
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/plain.py +5 -1
- lintro-0.23.1/lintro/models/core/__init__.py +17 -0
- lintro-0.23.1/lintro/models/core/base_tool_options.py +18 -0
- lintro-0.23.1/lintro/models/core/black_options.py +22 -0
- lintro-0.23.1/lintro/models/core/prettier_options.py +38 -0
- lintro-0.23.1/lintro/models/core/pytest_options.py +50 -0
- lintro-0.23.1/lintro/models/core/ruff_options.py +38 -0
- lintro-0.23.1/lintro/models/core/tool_result.py +70 -0
- lintro-0.23.1/lintro/models/core/yamllint_options.py +18 -0
- lintro-0.23.1/lintro/parsers/__init__.py +102 -0
- lintro-0.23.1/lintro/parsers/actionlint/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/actionlint/actionlint_issue.py +24 -0
- lintro-0.23.1/lintro/parsers/bandit/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/bandit/bandit_issue.py +60 -0
- lintro-0.23.1/lintro/parsers/bandit/bandit_parser.py +106 -0
- lintro-0.23.1/lintro/parsers/base_issue.py +88 -0
- lintro-0.23.1/lintro/parsers/base_parser.py +295 -0
- lintro-0.23.1/lintro/parsers/biome/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/biome/biome_issue.py +24 -0
- lintro-0.23.1/lintro/parsers/biome/biome_parser.py +174 -0
- lintro-0.23.1/lintro/parsers/black/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/black/black_issue.py +30 -0
- lintro-0.23.1/lintro/parsers/black/black_parser.py +106 -0
- lintro-0.23.1/lintro/parsers/clippy/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/clippy/clippy_issue.py +30 -0
- lintro-0.23.1/lintro/parsers/clippy/clippy_parser.py +138 -0
- lintro-0.23.1/lintro/parsers/darglint/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/darglint/darglint_issue.py +16 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/parsers/darglint/darglint_parser.py +24 -13
- lintro-0.23.1/lintro/parsers/hadolint/__init__.py +31 -0
- lintro-0.23.1/lintro/parsers/hadolint/hadolint_issue.py +25 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/parsers/hadolint/hadolint_parser.py +1 -1
- lintro-0.23.1/lintro/parsers/markdownlint/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/markdownlint/markdownlint_issue.py +17 -0
- lintro-0.23.1/lintro/parsers/markdownlint/markdownlint_parser.py +119 -0
- lintro-0.23.1/lintro/parsers/mypy/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/mypy/mypy_issue.py +47 -0
- lintro-0.23.1/lintro/parsers/mypy/mypy_parser.py +134 -0
- lintro-0.23.1/lintro/parsers/prettier/__init__.py +6 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/parsers/prettier/prettier_issue.py +6 -10
- lintro-0.23.1/lintro/parsers/prettier/prettier_parser.py +65 -0
- lintro-0.23.1/lintro/parsers/pytest/__init__.py +17 -0
- lintro-0.23.1/lintro/parsers/pytest/format_parsers.py +397 -0
- lintro-0.23.1/lintro/parsers/pytest/models.py +33 -0
- lintro-0.23.1/lintro/parsers/pytest/pytest_issue.py +31 -0
- lintro-0.23.1/lintro/parsers/pytest/pytest_parser.py +58 -0
- lintro-0.23.1/lintro/parsers/pytest/summary_extractor.py +84 -0
- lintro-0.23.1/lintro/parsers/ruff/__init__.py +15 -0
- lintro-0.23.1/lintro/parsers/ruff/ruff_format_issue.py +18 -0
- lintro-0.23.1/lintro/parsers/ruff/ruff_issue.py +26 -0
- lintro-0.23.1/lintro/parsers/ruff/ruff_parser.py +213 -0
- lintro-0.23.1/lintro/parsers/streaming.py +314 -0
- lintro-0.23.1/lintro/parsers/yamllint/__init__.py +6 -0
- lintro-0.23.1/lintro/parsers/yamllint/yamllint_issue.py +26 -0
- lintro-0.23.1/lintro/parsers/yamllint/yamllint_parser.py +93 -0
- lintro-0.23.1/lintro/plugins/__init__.py +57 -0
- lintro-0.23.1/lintro/plugins/base.py +484 -0
- lintro-0.23.1/lintro/plugins/discovery.py +190 -0
- lintro-0.23.1/lintro/plugins/execution_preparation.py +306 -0
- lintro-0.23.1/lintro/plugins/file_discovery.py +157 -0
- lintro-0.23.1/lintro/plugins/protocol.py +144 -0
- lintro-0.23.1/lintro/plugins/registry.py +245 -0
- lintro-0.23.1/lintro/plugins/subprocess_executor.py +267 -0
- lintro-0.23.1/lintro/tools/__init__.py +22 -0
- lintro-0.23.1/lintro/tools/core/command_builders.py +452 -0
- lintro-0.23.1/lintro/tools/core/config_injection.py +163 -0
- lintro-0.23.1/lintro/tools/core/line_length_checker.py +166 -0
- lintro-0.23.1/lintro/tools/core/option_spec.py +394 -0
- lintro-0.23.1/lintro/tools/core/option_validators.py +133 -0
- lintro-0.23.1/lintro/tools/core/runtime_discovery.py +295 -0
- lintro-0.23.1/lintro/tools/core/timeout_utils.py +126 -0
- lintro-0.23.1/lintro/tools/core/tool_manager.py +207 -0
- lintro-0.23.1/lintro/tools/core/version_checking.py +300 -0
- lintro-0.23.1/lintro/tools/core/version_parsing.py +313 -0
- lintro-0.23.1/lintro/tools/core/version_requirements.py +78 -0
- lintro-0.23.1/lintro/tools/definitions/__init__.py +31 -0
- lintro-0.23.1/lintro/tools/definitions/actionlint.py +222 -0
- lintro-0.23.1/lintro/tools/definitions/bandit.py +397 -0
- lintro-0.23.1/lintro/tools/definitions/biome.py +361 -0
- lintro-0.23.1/lintro/tools/definitions/black.py +396 -0
- lintro-0.23.1/lintro/tools/definitions/clippy.py +372 -0
- lintro-0.23.1/lintro/tools/definitions/darglint.py +435 -0
- lintro-0.23.1/lintro/tools/definitions/hadolint.py +319 -0
- lintro-0.23.1/lintro/tools/definitions/markdownlint.py +324 -0
- lintro-0.23.1/lintro/tools/definitions/mypy.py +372 -0
- lintro-0.23.1/lintro/tools/definitions/prettier.py +529 -0
- lintro-0.23.1/lintro/tools/definitions/pytest.py +365 -0
- lintro-0.23.1/lintro/tools/definitions/ruff.py +212 -0
- lintro-0.23.1/lintro/tools/definitions/yamllint.py +481 -0
- lintro-0.23.1/lintro/tools/implementations/__init__.py +28 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/__init__.py +16 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/collection.py +266 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/coverage_processor.py +142 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/formatters.py +314 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/markers.py +188 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/output.py +219 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/output_parsers.py +149 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_command_builder.py +336 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_config.py +193 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_error_handler.py +128 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_executor.py +139 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_handlers.py +385 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_option_validators.py +215 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_output_processor.py +57 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/pytest_result_processor.py +111 -0
- lintro-0.23.1/lintro/tools/implementations/pytest/test_analytics.py +150 -0
- lintro-0.23.1/lintro/tools/implementations/ruff/__init__.py +18 -0
- lintro-0.23.1/lintro/tools/implementations/ruff/check.py +213 -0
- lintro-0.23.1/lintro/tools/implementations/ruff/commands.py +174 -0
- lintro-0.23.1/lintro/tools/implementations/ruff/fix.py +349 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/utils/ascii_normalize_cli.py +2 -2
- lintro-0.23.1/lintro/utils/async_tool_executor.py +247 -0
- lintro-0.23.1/lintro/utils/config.py +349 -0
- lintro-0.23.1/lintro/utils/config_constants.py +108 -0
- lintro-0.23.1/lintro/utils/config_priority.py +202 -0
- lintro-0.23.1/lintro/utils/config_reporting.py +102 -0
- lintro-0.23.1/lintro/utils/config_validation.py +113 -0
- lintro-0.23.1/lintro/utils/console/__init__.py +56 -0
- lintro-0.23.1/lintro/utils/console/constants.py +83 -0
- lintro-0.23.1/lintro/utils/console/logger.py +443 -0
- lintro-0.23.1/lintro/utils/display_helpers.py +136 -0
- lintro-0.23.1/lintro/utils/execution/__init__.py +33 -0
- lintro-0.23.1/lintro/utils/execution/exit_codes.py +84 -0
- lintro-0.23.1/lintro/utils/execution/parallel_executor.py +159 -0
- lintro-0.23.1/lintro/utils/execution/tool_configuration.py +186 -0
- lintro-0.23.1/lintro/utils/file_cache.py +235 -0
- lintro-0.23.1/lintro/utils/json_output.py +59 -0
- lintro-0.23.1/lintro/utils/logger_setup.py +57 -0
- lintro-0.23.1/lintro/utils/native_parsers.py +286 -0
- lintro-0.23.1/lintro/utils/output/__init__.py +36 -0
- lintro-0.23.1/lintro/utils/output/constants.py +8 -0
- lintro-0.23.1/lintro/utils/output/file_writer.py +268 -0
- lintro-0.23.1/lintro/utils/output/helpers.py +48 -0
- lintro-0.13.0/lintro/utils/output_manager.py → lintro-0.23.1/lintro/utils/output/manager.py +47 -62
- lintro-0.23.1/lintro/utils/output/parser_registration.py +199 -0
- lintro-0.23.1/lintro/utils/output/parser_registry.py +126 -0
- lintro-0.23.1/lintro/utils/path_filtering.py +205 -0
- lintro-0.23.1/lintro/utils/path_utils.py +174 -0
- lintro-0.23.1/lintro/utils/post_checks.py +212 -0
- lintro-0.23.1/lintro/utils/result_formatters.py +341 -0
- lintro-0.23.1/lintro/utils/streaming_output.py +262 -0
- lintro-0.23.1/lintro/utils/summary_tables.py +310 -0
- lintro-0.23.1/lintro/utils/tool_config_info.py +13 -0
- lintro-0.23.1/lintro/utils/tool_executor.py +415 -0
- lintro-0.23.1/lintro/utils/tool_options.py +91 -0
- lintro-0.23.1/lintro/utils/tool_utils.py +33 -0
- lintro-0.23.1/lintro/utils/unified_config.py +82 -0
- lintro-0.23.1/lintro/utils/unified_config_manager.py +173 -0
- lintro-0.23.1/lintro.egg-info/PKG-INFO +287 -0
- lintro-0.23.1/lintro.egg-info/SOURCES.txt +609 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro.egg-info/requires.txt +13 -7
- lintro-0.23.1/pyproject.toml +349 -0
- lintro-0.23.1/test_samples/tools/config/yaml/yaml_violations.yml +23 -0
- lintro-0.23.1/test_samples/tools/javascript/biome/biome_violations.js +16 -0
- lintro-0.23.1/test_samples/tools/javascript/prettier/prettier_violations.js +43 -0
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/bandit}/bandit_violations.py +1 -2
- lintro-0.23.1/test_samples/tools/python/mypy/mypy_violations.py +3 -0
- lintro-0.23.1/test_samples/tools/python/pytest/pytest_clean.py +192 -0
- lintro-0.23.1/test_samples/tools/python/pytest/pytest_failures.py +132 -0
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_annotations_violations.py +2 -2
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_black_e501_wrappable.py +2 -3
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_bugbear_violations.py +3 -7
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_c4_comprehensions_violations.py +49 -51
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_clean.py +1 -0
- lintro-0.13.0/test_samples/ruff_violations.py → lintro-0.23.1/test_samples/tools/python/ruff/ruff_e501_f401_violations.py +13 -2
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_naming_violations.py +0 -2
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/ruff}/ruff_sim_simplify_violations.py +107 -325
- {lintro-0.13.0 → lintro-0.23.1}/tests/cli/conftest.py +3 -3
- lintro-0.23.1/tests/cli/test_cli.py +136 -0
- lintro-0.23.1/tests/cli/test_config_command.py +256 -0
- lintro-0.23.1/tests/cli/test_init_command.py +114 -0
- lintro-0.23.1/tests/config/__init__.py +1 -0
- lintro-0.23.1/tests/config/test_config_loader.py +226 -0
- lintro-0.23.1/tests/config/test_init_command.py +173 -0
- lintro-0.23.1/tests/config/test_lintro_config.py +115 -0
- lintro-0.23.1/tests/config/test_tool_config_generator.py +115 -0
- lintro-0.23.1/tests/conftest.py +102 -0
- lintro-0.23.1/tests/constants.py +52 -0
- lintro-0.23.1/tests/formatters/test_formatters.py +109 -0
- lintro-0.23.1/tests/integration/conftest.py +114 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/integration/test_actionlint_integration.py +11 -8
- {lintro-0.13.0 → lintro-0.23.1}/tests/integration/test_bandit_integration.py +10 -6
- lintro-0.23.1/tests/integration/test_built_package.py +112 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/integration/test_darglint_integration.py +42 -32
- lintro-0.23.1/tests/integration/test_markdownlint_integration.py +159 -0
- lintro-0.23.1/tests/integration/test_mypy_integration.py +144 -0
- lintro-0.23.1/tests/integration/test_parallel_execution.py +225 -0
- lintro-0.23.1/tests/integration/tools/__init__.py +1 -0
- lintro-0.23.1/tests/integration/tools/test_bandit_integration.py +238 -0
- lintro-0.23.1/tests/integration/tools/test_black_integration.py +281 -0
- lintro-0.23.1/tests/integration/tools/test_mypy_integration.py +228 -0
- lintro-0.23.1/tests/integration/tools/test_prettier_integration.py +289 -0
- lintro-0.23.1/tests/integration/tools/test_ruff_integration.py +453 -0
- lintro-0.23.1/tests/scripts/conftest.py +43 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/scripts/test_ci_post_pr_comment.py +6 -2
- {lintro-0.13.0 → lintro-0.23.1}/tests/scripts/test_delete_previous_lintro_comments.py +22 -10
- {lintro-0.13.0 → lintro-0.23.1}/tests/scripts/test_extract_version.py +5 -4
- {lintro-0.13.0 → lintro-0.23.1}/tests/scripts/test_ghcr_prune_untagged.py +45 -26
- lintro-0.23.1/tests/scripts/test_github_comment_utilities.py +20 -0
- lintro-0.23.1/tests/scripts/test_github_comment_utilities_encode.py +195 -0
- lintro-0.23.1/tests/scripts/test_github_comment_utilities_extract.py +172 -0
- lintro-0.23.1/tests/scripts/test_github_comment_utilities_find.py +204 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/scripts/test_semantic_release_compute_next.py +16 -15
- lintro-0.23.1/tests/scripts/test_shell_scripts.py +30 -0
- lintro-0.23.1/tests/test_documentation.py +181 -0
- lintro-0.23.1/tests/unit/cli/__init__.py +0 -0
- lintro-0.23.1/tests/unit/cli/conftest.py +96 -0
- lintro-0.23.1/tests/unit/cli/test_check_command.py +383 -0
- lintro-0.23.1/tests/unit/cli/test_cli.py +291 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/cli}/test_cli_commands_more.py +14 -10
- lintro-0.23.1/tests/unit/cli/test_cli_lintro_group.py +280 -0
- lintro-0.23.1/tests/unit/cli/test_cli_programmatic.py +138 -0
- lintro-0.23.1/tests/unit/cli/test_format_command.py +490 -0
- lintro-0.23.1/tests/unit/cli_utils/__init__.py +1 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/__init__.py +1 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/conftest.py +57 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/test_execute.py +206 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/test_group_commands.py +73 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/test_init.py +62 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/test_integration.py +46 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/test_normalize_args.py +73 -0
- lintro-0.23.1/tests/unit/cli_utils/command_chainer/test_should_chain.py +63 -0
- lintro-0.23.1/tests/unit/cli_utils/commands/test_format.py +251 -0
- lintro-0.23.1/tests/unit/compatibility/conftest.py +7 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/compatibility}/test_compatibility_ruff_black.py +90 -33
- lintro-0.23.1/tests/unit/config/conftest.py +52 -0
- lintro-0.23.1/tests/unit/config/test_config_compatibility.py +71 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/config}/test_config_loader.py +25 -9
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/config}/test_config_loader_more.py +14 -2
- lintro-0.23.1/tests/unit/config/test_config_loaders.py +382 -0
- lintro-0.23.1/tests/unit/config/test_config_tool_specific.py +238 -0
- lintro-0.23.1/tests/unit/config/test_enforce_config.py +63 -0
- lintro-0.23.1/tests/unit/config/test_execution_config.py +119 -0
- lintro-0.23.1/tests/unit/config/test_lintro_config.py +158 -0
- lintro-0.23.1/tests/unit/config/test_unified_config.py +114 -0
- lintro-0.23.1/tests/unit/conftest.py +144 -0
- lintro-0.23.1/tests/unit/core/conftest.py +9 -0
- lintro-0.23.1/tests/unit/core/test_version_requirements.py +303 -0
- lintro-0.23.1/tests/unit/enums/__init__.py +1 -0
- lintro-0.23.1/tests/unit/enums/test_bandit_levels.py +109 -0
- lintro-0.23.1/tests/unit/enums/test_base.py +87 -0
- lintro-0.23.1/tests/unit/enums/test_enum_normalizers.py +214 -0
- lintro-0.23.1/tests/unit/enums/test_output_format.py +63 -0
- lintro-0.23.1/tests/unit/enums/test_tool_name.py +69 -0
- lintro-0.23.1/tests/unit/exceptions/conftest.py +7 -0
- lintro-0.23.1/tests/unit/exceptions/test_exceptions.py +128 -0
- lintro-0.23.1/tests/unit/formatters/__init__.py +3 -0
- {lintro-0.13.0/tests → lintro-0.23.1/tests/unit}/formatters/conftest.py +6 -21
- lintro-0.23.1/tests/unit/formatters/styles/__init__.py +3 -0
- lintro-0.23.1/tests/unit/formatters/styles/conftest.py +89 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_csv.py +100 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_html.py +101 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_json.py +127 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_markdown.py +104 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_plain.py +119 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_common.py +47 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_csv.py +63 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_grid.py +64 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_html.py +76 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_json.py +140 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_markdown.py +66 -0
- lintro-0.23.1/tests/unit/formatters/styles/test_style_plain.py +64 -0
- lintro-0.23.1/tests/unit/formatters/test_format_registry.py +190 -0
- lintro-0.23.1/tests/unit/logging/conftest.py +7 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/logging}/test_console_logger.py +14 -10
- lintro-0.23.1/tests/unit/logging/test_console_logger_more.py +138 -0
- lintro-0.23.1/tests/unit/output/conftest.py +7 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/output}/test_output_manager_reports.py +7 -3
- lintro-0.23.1/tests/unit/parsers/base_parser/__init__.py +1 -0
- lintro-0.23.1/tests/unit/parsers/base_parser/test_continuation_lines.py +67 -0
- lintro-0.23.1/tests/unit/parsers/base_parser/test_extract_fields.py +132 -0
- lintro-0.23.1/tests/unit/parsers/base_parser/test_safe_parse.py +82 -0
- lintro-0.23.1/tests/unit/parsers/base_parser/test_strip_ansi.py +41 -0
- lintro-0.23.1/tests/unit/parsers/base_parser/test_validate_fields.py +82 -0
- lintro-0.23.1/tests/unit/parsers/conftest.py +68 -0
- lintro-0.23.1/tests/unit/parsers/pytest/test_pytest_parser.py +394 -0
- lintro-0.23.1/tests/unit/parsers/streaming/__init__.py +1 -0
- lintro-0.23.1/tests/unit/parsers/streaming/conftest.py +71 -0
- lintro-0.23.1/tests/unit/parsers/streaming/test_collect.py +40 -0
- lintro-0.23.1/tests/unit/parsers/streaming/test_json_array.py +83 -0
- lintro-0.23.1/tests/unit/parsers/streaming/test_json_lines.py +140 -0
- lintro-0.23.1/tests/unit/parsers/streaming/test_parser_class.py +84 -0
- lintro-0.23.1/tests/unit/parsers/streaming/test_text_lines.py +86 -0
- lintro-0.13.0/tests/unit/test_bandit_parsing.py → lintro-0.23.1/tests/unit/parsers/test_bandit_parser.py +58 -16
- lintro-0.23.1/tests/unit/parsers/test_base_issue.py +165 -0
- lintro-0.23.1/tests/unit/parsers/test_base_parser.py +359 -0
- lintro-0.23.1/tests/unit/parsers/test_biome_parser.py +214 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/parsers}/test_black_parser.py +8 -6
- lintro-0.23.1/tests/unit/parsers/test_clippy_parser.py +115 -0
- lintro-0.23.1/tests/unit/parsers/test_darglint_parser.py +113 -0
- lintro-0.23.1/tests/unit/parsers/test_hadolint_parser.py +175 -0
- lintro-0.23.1/tests/unit/parsers/test_markdownlint_parser.py +139 -0
- lintro-0.23.1/tests/unit/parsers/test_mypy_parser.py +151 -0
- lintro-0.23.1/tests/unit/parsers/test_prettier_parser.py +96 -0
- lintro-0.23.1/tests/unit/parsers/test_ruff_parser_additional.py +127 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/parsers}/test_ruff_parser_more.py +2 -2
- lintro-0.23.1/tests/unit/parsers/test_yamllint_parser.py +106 -0
- lintro-0.23.1/tests/unit/plugins/base/__init__.py +1 -0
- lintro-0.23.1/tests/unit/plugins/base/conftest.py +44 -0
- lintro-0.23.1/tests/unit/plugins/base/test_execution.py +407 -0
- lintro-0.23.1/tests/unit/plugins/base/test_options.py +182 -0
- lintro-0.23.1/tests/unit/plugins/base/test_subprocess.py +245 -0
- lintro-0.23.1/tests/unit/plugins/conftest.py +151 -0
- lintro-0.23.1/tests/unit/plugins/test_base_plugin_config.py +336 -0
- lintro-0.23.1/tests/unit/plugins/test_discovery.py +229 -0
- lintro-0.23.1/tests/unit/plugins/test_registry.py +423 -0
- lintro-0.23.1/tests/unit/pytest/conftest.py +7 -0
- lintro-0.23.1/tests/unit/pytest/test_pytest_cli_commands.py +205 -0
- lintro-0.23.1/tests/unit/pytest/test_pytest_cli_options.py +148 -0
- lintro-0.23.1/tests/unit/pytest/test_pytest_handlers.py +550 -0
- lintro-0.23.1/tests/unit/pytest/test_pytest_programmatic_api.py +254 -0
- lintro-0.23.1/tests/unit/security/__init__.py +1 -0
- lintro-0.23.1/tests/unit/security/conftest.py +23 -0
- lintro-0.23.1/tests/unit/security/test_json_edge_cases.py +309 -0
- lintro-0.23.1/tests/unit/security/test_path_traversal.py +316 -0
- lintro-0.23.1/tests/unit/security/test_subprocess_injection.py +225 -0
- lintro-0.23.1/tests/unit/tools/assertions/__init__.py +3 -0
- lintro-0.23.1/tests/unit/tools/assertions/conftest.py +104 -0
- lintro-0.23.1/tests/unit/tools/base/conftest.py +7 -0
- lintro-0.23.1/tests/unit/tools/biome/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/biome/conftest.py +17 -0
- lintro-0.23.1/tests/unit/tools/biome/test_check_method.py +68 -0
- lintro-0.23.1/tests/unit/tools/biome/test_default_options.py +44 -0
- lintro-0.23.1/tests/unit/tools/biome/test_fix_method.py +241 -0
- lintro-0.23.1/tests/unit/tools/biome/test_set_options.py +72 -0
- lintro-0.23.1/tests/unit/tools/biome/test_timeout_handling.py +104 -0
- lintro-0.23.1/tests/unit/tools/conftest.py +287 -0
- lintro-0.23.1/tests/unit/tools/core/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/core/conftest.py +32 -0
- lintro-0.23.1/tests/unit/tools/core/test_command_builders.py +267 -0
- lintro-0.23.1/tests/unit/tools/core/test_line_length_checker.py +308 -0
- lintro-0.23.1/tests/unit/tools/core/test_option_spec.py +121 -0
- lintro-0.23.1/tests/unit/tools/core/test_option_validators.py +348 -0
- lintro-0.23.1/tests/unit/tools/core/test_runtime_discovery.py +228 -0
- lintro-0.23.1/tests/unit/tools/core/test_tool_options_spec.py +107 -0
- lintro-0.23.1/tests/unit/tools/core/test_version_checking.py +355 -0
- lintro-0.23.1/tests/unit/tools/darglint/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/darglint/test_darglint_plugin.py +502 -0
- lintro-0.23.1/tests/unit/tools/executor/conftest.py +10 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/tools/executor}/test_tool_executor.py +116 -162
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/tools/executor}/test_tool_executor_fmt_exclusion.py +5 -5
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/tools/executor}/test_tool_executor_more.py +153 -81
- lintro-0.23.1/tests/unit/tools/executor/test_tool_executor_post_checks.py +215 -0
- lintro-0.23.1/tests/unit/tools/executor/test_tool_executor_pytest.py +317 -0
- lintro-0.23.1/tests/unit/tools/hadolint/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/hadolint/conftest.py +17 -0
- lintro-0.23.1/tests/unit/tools/hadolint/test_execution.py +173 -0
- lintro-0.23.1/tests/unit/tools/hadolint/test_options.py +295 -0
- lintro-0.23.1/tests/unit/tools/manager/conftest.py +7 -0
- lintro-0.23.1/tests/unit/tools/manager/test_tool_manager.py +159 -0
- lintro-0.23.1/tests/unit/tools/mypy/test_mypy_plugin.py +197 -0
- lintro-0.23.1/tests/unit/tools/prettier/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/prettier/conftest.py +17 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_check_method.py +3 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_config_discovery.py +81 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_default_options.py +52 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_fix_method.py +159 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_output_parsing.py +50 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_set_options.py +83 -0
- lintro-0.23.1/tests/unit/tools/prettier/test_timeout_handling.py +87 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/conftest.py +406 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_check_method.py +191 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_configuration.py +97 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_json_parsing.py +64 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_junit_parsing.py +57 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_output_parsing.py +107 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_output_processing.py +158 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_pytest_handlers.py +320 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_pytest_issue.py +39 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_pytest_output_processor.py +94 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_result_processor.py +126 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_set_options.py +135 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_text_parsing.py +42 -0
- lintro-0.23.1/tests/unit/tools/pytest_tool/test_validators.py +48 -0
- lintro-0.23.1/tests/unit/tools/ruff/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/conftest.py +4 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_config_detection.py +85 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_error_handling.py +135 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_format_normalization.py +55 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_json_parsing.py +136 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_no_issues.py +108 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_output_format.py +72 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_path_filtering.py +213 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_real_plugin.py +52 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_timeout.py +51 -0
- lintro-0.23.1/tests/unit/tools/ruff/check/test_with_issues.py +166 -0
- lintro-0.23.1/tests/unit/tools/ruff/conftest.py +154 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/__init__.py +1 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/conftest.py +4 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_combined_issues.py +91 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_config.py +35 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_edge_cases.py +117 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_format_option.py +98 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_no_files.py +49 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_real_plugin.py +65 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_successful_fix.py +106 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_temporary_option.py +79 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_timeout.py +177 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_unsafe_fixes.py +76 -0
- lintro-0.23.1/tests/unit/tools/ruff/fix/test_version_check.py +29 -0
- lintro-0.23.1/tests/unit/tools/test_common_behaviors.py +504 -0
- lintro-0.23.1/tests/unit/tools/test_edge_cases.py +350 -0
- lintro-0.23.1/tests/unit/tools/test_helpers.py +327 -0
- lintro-0.23.1/tests/unit/tools/test_plugin_definitions.py +453 -0
- lintro-0.23.1/tests/unit/tools/test_tool_definitions.py +418 -0
- lintro-0.23.1/tests/unit/utils/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/conftest.py +121 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_callbacks.py +100 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_exceptions.py +51 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_init.py +32 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_parallel_batches.py +164 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_run_tool_async.py +137 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_run_tools_parallel.py +190 -0
- lintro-0.23.1/tests/unit/utils/async_tool_executor/test_shutdown.py +28 -0
- lintro-0.23.1/tests/unit/utils/config/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/config/conftest.py +65 -0
- lintro-0.23.1/tests/unit/utils/config/test_manager_configuration.py +420 -0
- lintro-0.23.1/tests/unit/utils/config/test_manager_core.py +337 -0
- lintro-0.23.1/tests/unit/utils/conftest.py +128 -0
- lintro-0.23.1/tests/unit/utils/console/conftest.py +39 -0
- lintro-0.23.1/tests/unit/utils/console/summary/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/console/summary/test_delegation.py +364 -0
- lintro-0.23.1/tests/unit/utils/console/summary/test_execution_summary.py +353 -0
- lintro-0.23.1/tests/unit/utils/console/test_logger_headers.py +123 -0
- lintro-0.23.1/tests/unit/utils/console/test_logger_initialization.py +36 -0
- lintro-0.23.1/tests/unit/utils/console/test_logger_levels.py +129 -0
- lintro-0.23.1/tests/unit/utils/console/test_logger_metadata.py +140 -0
- lintro-0.23.1/tests/unit/utils/console/test_logger_output_methods.py +149 -0
- lintro-0.23.1/tests/unit/utils/console/test_logger_results.py +111 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/conftest.py +36 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_biome_config.py +78 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_config_constants.py +45 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_json_config.py +109 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_jsonc_comments.py +189 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_markdownlint_config.py +130 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_prettier_config.py +94 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_pyproject_tools.py +66 -0
- lintro-0.23.1/tests/unit/utils/native_parsers/test_yamllint_config.py +89 -0
- lintro-0.23.1/tests/unit/utils/output/__init__.py +3 -0
- lintro-0.23.1/tests/unit/utils/output/conftest.py +102 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_common.py +47 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_csv.py +83 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_format.py +265 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_html.py +118 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_json.py +92 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_markdown.py +115 -0
- lintro-0.23.1/tests/unit/utils/output/test_file_writer_plain.py +78 -0
- lintro-0.23.1/tests/unit/utils/output/test_helpers.py +135 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/conftest.py +32 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_action_normalization.py +87 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_fix_action.py +165 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_fixable_hints.py +151 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_generic_output.py +139 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_output_display.py +96 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_pytest_output.py +176 -0
- lintro-0.23.1/tests/unit/utils/result_formatters/test_ruff_formatting.py +114 -0
- lintro-0.23.1/tests/unit/utils/summary/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/summary/test_display.py +403 -0
- lintro-0.23.1/tests/unit/utils/summary/test_safe_cast.py +119 -0
- lintro-0.23.1/tests/unit/utils/test_ascii_normalize_cli.py +202 -0
- lintro-0.23.1/tests/unit/utils/test_config_reporting.py +359 -0
- lintro-0.23.1/tests/unit/utils/test_console_output_writer.py +245 -0
- lintro-0.23.1/tests/unit/utils/test_display_helpers.py +354 -0
- lintro-0.23.1/tests/unit/utils/test_display_helpers_fallback.py +312 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/utils}/test_enums_and_normalizers.py +40 -0
- lintro-0.23.1/tests/unit/utils/test_file_cache.py +194 -0
- lintro-0.23.1/tests/unit/utils/test_logger_setup.py +152 -0
- lintro-0.23.1/tests/unit/utils/test_output_writers.py +393 -0
- lintro-0.23.1/tests/unit/utils/test_parser_registry.py +232 -0
- lintro-0.23.1/tests/unit/utils/test_path_filtering.py +297 -0
- lintro-0.23.1/tests/unit/utils/test_path_utils.py +232 -0
- lintro-0.23.1/tests/unit/utils/test_streaming_output.py +389 -0
- lintro-0.23.1/tests/unit/utils/test_timeout_utils.py +139 -0
- lintro-0.23.1/tests/unit/utils/test_tool_config_info.py +20 -0
- lintro-0.23.1/tests/unit/utils/test_tool_utils.py +44 -0
- lintro-0.23.1/tests/unit/utils/unified_config/__init__.py +1 -0
- lintro-0.23.1/tests/unit/utils/unified_config/conftest.py +47 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_config_summary.py +90 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_consistency.py +55 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_constants.py +77 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_dataclasses.py +47 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_enums.py +36 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_injectable.py +46 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_line_length.py +109 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_nested_value.py +65 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_ordered_tools.py +57 -0
- lintro-0.23.1/tests/unit/utils/unified_config/test_tool_priority.py +82 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/utils/test_output_manager.py +18 -12
- {lintro-0.13.0 → lintro-0.23.1}/tests/utils/test_path_utils.py +6 -1
- lintro-0.13.0/PKG-INFO +0 -385
- lintro-0.13.0/README.md +0 -311
- lintro-0.13.0/docs/coverage-setup.md +0 -42
- lintro-0.13.0/lintro/cli.py +0 -76
- lintro-0.13.0/lintro/cli_utils/commands/__init__.py +0 -7
- lintro-0.13.0/lintro/cli_utils/commands/list_tools.py +0 -114
- lintro-0.13.0/lintro/enums/action.py +0 -29
- lintro-0.13.0/lintro/enums/tool_type.py +0 -27
- lintro-0.13.0/lintro/exceptions/errors.py +0 -15
- lintro-0.13.0/lintro/formatters/__init__.py +0 -1
- lintro-0.13.0/lintro/formatters/core/__init__.py +0 -1
- lintro-0.13.0/lintro/formatters/core/output_style.py +0 -32
- lintro-0.13.0/lintro/formatters/core/table_descriptor.py +0 -32
- lintro-0.13.0/lintro/formatters/tools/__init__.py +0 -47
- lintro-0.13.0/lintro/formatters/tools/actionlint_formatter.py +0 -82
- lintro-0.13.0/lintro/formatters/tools/bandit_formatter.py +0 -100
- lintro-0.13.0/lintro/formatters/tools/black_formatter.py +0 -70
- lintro-0.13.0/lintro/formatters/tools/darglint_formatter.py +0 -89
- lintro-0.13.0/lintro/formatters/tools/hadolint_formatter.py +0 -97
- lintro-0.13.0/lintro/formatters/tools/prettier_formatter.py +0 -91
- lintro-0.13.0/lintro/formatters/tools/ruff_formatter.py +0 -137
- lintro-0.13.0/lintro/formatters/tools/yamllint_formatter.py +0 -100
- lintro-0.13.0/lintro/models/core/__init__.py +0 -1
- lintro-0.13.0/lintro/models/core/tool.py +0 -104
- lintro-0.13.0/lintro/models/core/tool_config.py +0 -27
- lintro-0.13.0/lintro/models/core/tool_result.py +0 -39
- lintro-0.13.0/lintro/parsers/__init__.py +0 -21
- lintro-0.13.0/lintro/parsers/actionlint/__init__.py +0 -1
- lintro-0.13.0/lintro/parsers/actionlint/actionlint_issue.py +0 -24
- lintro-0.13.0/lintro/parsers/black/black_issue.py +0 -22
- lintro-0.13.0/lintro/parsers/black/black_parser.py +0 -90
- lintro-0.13.0/lintro/parsers/darglint/__init__.py +0 -1
- lintro-0.13.0/lintro/parsers/darglint/darglint_issue.py +0 -20
- lintro-0.13.0/lintro/parsers/hadolint/__init__.py +0 -1
- lintro-0.13.0/lintro/parsers/hadolint/hadolint_issue.py +0 -24
- lintro-0.13.0/lintro/parsers/prettier/__init__.py +0 -1
- lintro-0.13.0/lintro/parsers/prettier/prettier_parser.py +0 -60
- lintro-0.13.0/lintro/parsers/ruff/__init__.py +0 -1
- lintro-0.13.0/lintro/parsers/ruff/ruff_issue.py +0 -43
- lintro-0.13.0/lintro/parsers/ruff/ruff_parser.py +0 -144
- lintro-0.13.0/lintro/parsers/yamllint/__init__.py +0 -1
- lintro-0.13.0/lintro/parsers/yamllint/yamllint_issue.py +0 -24
- lintro-0.13.0/lintro/parsers/yamllint/yamllint_parser.py +0 -68
- lintro-0.13.0/lintro/tools/__init__.py +0 -44
- lintro-0.13.0/lintro/tools/core/tool_base.py +0 -378
- lintro-0.13.0/lintro/tools/core/tool_manager.py +0 -167
- lintro-0.13.0/lintro/tools/implementations/__init__.py +0 -1
- lintro-0.13.0/lintro/tools/implementations/tool_actionlint.py +0 -151
- lintro-0.13.0/lintro/tools/implementations/tool_bandit.py +0 -436
- lintro-0.13.0/lintro/tools/implementations/tool_black.py +0 -261
- lintro-0.13.0/lintro/tools/implementations/tool_darglint.py +0 -247
- lintro-0.13.0/lintro/tools/implementations/tool_hadolint.py +0 -302
- lintro-0.13.0/lintro/tools/implementations/tool_prettier.py +0 -276
- lintro-0.13.0/lintro/tools/implementations/tool_ruff.py +0 -657
- lintro-0.13.0/lintro/tools/implementations/tool_yamllint.py +0 -240
- lintro-0.13.0/lintro/tools/tool_enum.py +0 -25
- lintro-0.13.0/lintro/utils/config.py +0 -55
- lintro-0.13.0/lintro/utils/console_logger.py +0 -847
- lintro-0.13.0/lintro/utils/path_utils.py +0 -41
- lintro-0.13.0/lintro/utils/tool_executor.py +0 -652
- lintro-0.13.0/lintro/utils/tool_utils.py +0 -452
- lintro-0.13.0/lintro.egg-info/PKG-INFO +0 -385
- lintro-0.13.0/lintro.egg-info/SOURCES.txt +0 -208
- lintro-0.13.0/pyproject.toml +0 -85
- lintro-0.13.0/test_samples/prettier_violations.js +0 -46
- lintro-0.13.0/test_samples/yaml_violations.yml +0 -42
- lintro-0.13.0/tests/cli/test_cli.py +0 -95
- lintro-0.13.0/tests/conftest.py +0 -110
- lintro-0.13.0/tests/formatters/test_formatters.py +0 -179
- lintro-0.13.0/tests/integration/conftest.py +0 -61
- lintro-0.13.0/tests/integration/test_hadolint_integration.py +0 -269
- lintro-0.13.0/tests/integration/test_prettier_integration.py +0 -209
- lintro-0.13.0/tests/integration/test_ruff_additional_coverage.py +0 -477
- lintro-0.13.0/tests/integration/test_ruff_annotations.py +0 -78
- lintro-0.13.0/tests/integration/test_ruff_black_policy.py +0 -84
- lintro-0.13.0/tests/integration/test_ruff_bugbear.py +0 -165
- lintro-0.13.0/tests/integration/test_ruff_integration.py +0 -567
- lintro-0.13.0/tests/integration/test_ruff_naming.py +0 -31
- lintro-0.13.0/tests/integration/test_yamllint_integration.py +0 -298
- lintro-0.13.0/tests/scripts/test_github_comment_utilities.py +0 -433
- lintro-0.13.0/tests/scripts/test_script_environment.py +0 -621
- lintro-0.13.0/tests/scripts/test_shell_scripts.py +0 -541
- lintro-0.13.0/tests/test_documentation.py +0 -371
- lintro-0.13.0/tests/unit/test_bandit_command_building.py +0 -51
- lintro-0.13.0/tests/unit/test_bandit_config_hydration.py +0 -47
- lintro-0.13.0/tests/unit/test_bandit_formatter_mapping.py +0 -41
- lintro-0.13.0/tests/unit/test_black_formatter.py +0 -43
- lintro-0.13.0/tests/unit/test_black_tool.py +0 -262
- lintro-0.13.0/tests/unit/test_black_tool_more.py +0 -48
- lintro-0.13.0/tests/unit/test_cli_programmatic.py +0 -90
- lintro-0.13.0/tests/unit/test_console_logger_more.py +0 -44
- lintro-0.13.0/tests/unit/test_exceptions.py +0 -24
- lintro-0.13.0/tests/unit/test_formatters_tables.py +0 -158
- lintro-0.13.0/tests/unit/test_ruff_parser_additional.py +0 -32
- lintro-0.13.0/tests/unit/test_subprocess_validator.py +0 -80
- lintro-0.13.0/tests/unit/test_tool_base_subprocess.py +0 -94
- lintro-0.13.0/tests/unit/test_tool_executor_post_checks.py +0 -256
- lintro-0.13.0/tests/unit/test_tool_manager.py +0 -64
- lintro-0.13.0/tests/unit/test_tool_utils.py +0 -88
- lintro-0.13.0/tests/unit/test_tool_utils_fallbacks.py +0 -36
- lintro-0.13.0/tests/unit/test_tool_utils_more.py +0 -94
- lintro-0.13.0/tests/utils/conftest.py +0 -42
- {lintro-0.13.0 → lintro-0.23.1}/LICENSE +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/MANIFEST.in +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/assets/images/lintro.png +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/__main__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/ascii-art/fail.txt +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/ascii-art/success.txt +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/cli_utils/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/enums/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/exceptions/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/formatters/styles/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/models/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/parsers/actionlint/actionlint_parser.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/tools/core/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/utils/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro/utils/formatting.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro.egg-info/dependency_links.txt +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro.egg-info/entry_points.txt +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/lintro.egg-info/top_level.txt +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/setup.cfg +0 -0
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/config/docker}/Dockerfile.violations +0 -0
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/config/github_actions}/actionlint_violations.yml +0 -0
- {lintro-0.13.0/test_samples → lintro-0.23.1/test_samples/tools/python/darglint}/darglint_violations.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/cli/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/formatters/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/integration/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/scripts/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/unit/__init__.py +0 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/cli}/test_cli_commands.py +0 -0
- /lintro-0.13.0/tests/unit/test_parsers_actionlint.py → /lintro-0.23.1/tests/unit/parsers/test_actionlint_parser.py +0 -0
- {lintro-0.13.0/tests/unit → lintro-0.23.1/tests/unit/utils}/test_ascii_normalize.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/utils/__init__.py +0 -0
- {lintro-0.13.0 → lintro-0.23.1}/tests/utils/test_formatting.py +0 -0
lintro-0.23.1/PKG-INFO
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: lintro
|
|
3
|
+
Version: 0.23.1
|
|
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 TurboCoder13
|
|
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.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: darglint==1.8.1
|
|
47
|
+
Requires-Dist: loguru==0.7.3
|
|
48
|
+
Requires-Dist: pathspec>=0.12.0
|
|
49
|
+
Requires-Dist: pydantic>=2.10.0
|
|
50
|
+
Requires-Dist: tabulate==0.9.0
|
|
51
|
+
Requires-Dist: yamllint==1.37.1
|
|
52
|
+
Requires-Dist: httpx==0.28.1
|
|
53
|
+
Requires-Dist: defusedxml==0.7.1
|
|
54
|
+
Requires-Dist: ruff>=0.14.0
|
|
55
|
+
Requires-Dist: black>=25.0.0
|
|
56
|
+
Requires-Dist: bandit>=1.8.0
|
|
57
|
+
Requires-Dist: mypy>=1.14.1
|
|
58
|
+
Provides-Extra: dev
|
|
59
|
+
Requires-Dist: pytest==9.0.2; extra == "dev"
|
|
60
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "dev"
|
|
61
|
+
Requires-Dist: pytest-mock==3.15.1; extra == "dev"
|
|
62
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "dev"
|
|
63
|
+
Requires-Dist: pytest-sugar==1.1.1; extra == "dev"
|
|
64
|
+
Requires-Dist: tox==4.32.0; extra == "dev"
|
|
65
|
+
Requires-Dist: allure-pytest==2.15.3; extra == "dev"
|
|
66
|
+
Requires-Dist: ruff; extra == "dev"
|
|
67
|
+
Requires-Dist: mypy; extra == "dev"
|
|
68
|
+
Requires-Dist: coverage-badge==1.1.2; extra == "dev"
|
|
69
|
+
Requires-Dist: python-semantic-release==10.5.3; extra == "dev"
|
|
70
|
+
Requires-Dist: assertpy==1.1; extra == "dev"
|
|
71
|
+
Requires-Dist: httpx==0.28.1; extra == "dev"
|
|
72
|
+
Provides-Extra: test
|
|
73
|
+
Requires-Dist: pytest==9.0.2; extra == "test"
|
|
74
|
+
Requires-Dist: pytest-cov==7.0.0; extra == "test"
|
|
75
|
+
Requires-Dist: pytest-mock==3.15.1; extra == "test"
|
|
76
|
+
Requires-Dist: pytest-xdist==3.8.0; extra == "test"
|
|
77
|
+
Requires-Dist: assertpy==1.1; extra == "test"
|
|
78
|
+
Provides-Extra: typing
|
|
79
|
+
Requires-Dist: types-setuptools==80.9.0.20251223; extra == "typing"
|
|
80
|
+
Requires-Dist: types-tabulate==0.9.0.20241207; extra == "typing"
|
|
81
|
+
Dynamic: license-file
|
|
82
|
+
|
|
83
|
+
# Lintro
|
|
84
|
+
|
|
85
|
+
<!-- markdownlint-disable MD033 MD013 -->
|
|
86
|
+
<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;">
|
|
87
|
+
<!-- markdownlint-enable MD033 MD013 -->
|
|
88
|
+
|
|
89
|
+
A comprehensive CLI tool that unifies various code formatting, linting, and quality
|
|
90
|
+
assurance tools under a single command-line interface.
|
|
91
|
+
|
|
92
|
+
<!-- Badges: Build & Quality -->
|
|
93
|
+
|
|
94
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml?query=branch%3Amain)
|
|
95
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
|
|
96
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
|
|
97
|
+
[](https://codecov.io/gh/TurboCoder13/py-lintro)
|
|
98
|
+
|
|
99
|
+
<!-- Badges: Releases -->
|
|
100
|
+
|
|
101
|
+
[](https://github.com/TurboCoder13/py-lintro/releases/latest)
|
|
102
|
+
[](https://pypi.org/project/lintro/)
|
|
103
|
+
[](https://www.python.org/downloads/)
|
|
104
|
+
[](LICENSE)
|
|
105
|
+
|
|
106
|
+
<!-- Badges: Security & Supply Chain -->
|
|
107
|
+
|
|
108
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
|
|
109
|
+
[](https://scorecard.dev/viewer/?uri=github.com/TurboCoder13/py-lintro)
|
|
110
|
+
[](https://www.bestpractices.dev/projects/11142)
|
|
111
|
+
[](docs/security/assurance.md)
|
|
112
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/sbom-on-main.yml?query=branch%3Amain)
|
|
113
|
+
|
|
114
|
+
## 🚀 Quick Start
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pip install lintro # Install
|
|
118
|
+
lintro check . # Find issues
|
|
119
|
+
lintro format . # Fix issues
|
|
120
|
+
lintro check --output-format grid # Beautiful output
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
<!-- TODO: Add screenshot of grid output -->
|
|
124
|
+
|
|
125
|
+
## ✨ Why Lintro?
|
|
126
|
+
|
|
127
|
+
- **🎯 Unified Interface** - One command for all your linting and formatting tools
|
|
128
|
+
- **📊 Consistent Output** - Beautiful, standardized output formats across all tools
|
|
129
|
+
- **🔧 Auto-fixing** - Automatically fix issues where possible
|
|
130
|
+
- **🐳 Docker Ready** - Run in isolated containers for consistent environments
|
|
131
|
+
- **📈 Rich Reporting** - Multiple formats: grid, JSON, HTML, CSV, Markdown
|
|
132
|
+
- **⚡ Fast** - Optimized parallel execution
|
|
133
|
+
|
|
134
|
+
## 🔌 Works With Your Existing Configs
|
|
135
|
+
|
|
136
|
+
Lintro respects your native tool configurations. If you have a `.prettierrc`,
|
|
137
|
+
`pyproject.toml [tool.ruff]`, or `.yamllint`, Lintro uses them automatically - no
|
|
138
|
+
migration required.
|
|
139
|
+
|
|
140
|
+
- **Native configs are detected** - Your existing `.prettierrc`, `.eslintrc`, etc. work
|
|
141
|
+
as-is
|
|
142
|
+
- **Enforce settings override consistently** - Set `line_length: 88` once, applied
|
|
143
|
+
everywhere
|
|
144
|
+
- **Fallback defaults when needed** - Tools without native configs use sensible defaults
|
|
145
|
+
|
|
146
|
+
See the [Configuration Guide](docs/configuration.md) for details on the 4-tier config
|
|
147
|
+
system.
|
|
148
|
+
|
|
149
|
+
## 🛠️ Supported Tools
|
|
150
|
+
|
|
151
|
+
<!-- markdownlint-disable MD013 MD060 -->
|
|
152
|
+
|
|
153
|
+
| Tool | Language | Auto-fix |
|
|
154
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | -------- |
|
|
155
|
+
| [](https://github.com/astral-sh/ruff) | 🐍 Python | ✅ |
|
|
156
|
+
| [](https://github.com/psf/black) | 🐍 Python | ✅ |
|
|
157
|
+
| [](https://mypy-lang.org/) | 🐍 Python | - |
|
|
158
|
+
| [](https://github.com/PyCQA/bandit) | 🐍 Python | - |
|
|
159
|
+
| [](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | ✅ |
|
|
160
|
+
| [](https://biomejs.dev/) | 🟨 JS/TS · 🧾 JSON/CSS | ✅ |
|
|
161
|
+
| [](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
|
|
162
|
+
| [](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
|
|
163
|
+
| [](https://github.com/rhysd/actionlint) | ⚙️ GitHub Actions | - |
|
|
164
|
+
| [](https://github.com/DavidAnson/markdownlint-cli2) | 📝 Markdown | - |
|
|
165
|
+
| [](https://github.com/rust-lang/rust-clippy) | 🦀 Rust | ✅ |
|
|
166
|
+
| [](https://github.com/terrencepreilly/darglint) | 🐍 Python | - |
|
|
167
|
+
|
|
168
|
+
<!-- markdownlint-enable MD013 MD060 -->
|
|
169
|
+
|
|
170
|
+
## 📋 Requirements
|
|
171
|
+
|
|
172
|
+
### Python Version
|
|
173
|
+
|
|
174
|
+
**Python 3.11+** is required. Lintro uses modern Python features not available in older
|
|
175
|
+
versions.
|
|
176
|
+
|
|
177
|
+
### Bundled Tools
|
|
178
|
+
|
|
179
|
+
These Python tools are automatically installed with Lintro:
|
|
180
|
+
|
|
181
|
+
- **Ruff** - Fast Python linter and formatter
|
|
182
|
+
- **Black** - Python code formatter
|
|
183
|
+
- **Bandit** - Python security linter
|
|
184
|
+
- **Mypy** - Python static type checker
|
|
185
|
+
- **Yamllint** - YAML linter
|
|
186
|
+
- **Darglint** - Python docstring linter
|
|
187
|
+
|
|
188
|
+
### Optional External Tools
|
|
189
|
+
|
|
190
|
+
For full functionality, install these additional tools:
|
|
191
|
+
|
|
192
|
+
- **Prettier** - `npm install -g prettier`
|
|
193
|
+
- **Markdownlint-cli2** - `npm install -g markdownlint-cli2`
|
|
194
|
+
- **Hadolint** - [GitHub Releases](https://github.com/hadolint/hadolint/releases)
|
|
195
|
+
- **Actionlint** - [GitHub Releases](https://github.com/rhysd/actionlint/releases)
|
|
196
|
+
|
|
197
|
+
Check all tool versions with: `lintro list-tools`
|
|
198
|
+
|
|
199
|
+
## 📦 Installation
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
# PyPI (recommended)
|
|
203
|
+
pip install lintro
|
|
204
|
+
|
|
205
|
+
# Homebrew (macOS binary)
|
|
206
|
+
brew tap TurboCoder13/tap && brew install lintro-bin
|
|
207
|
+
|
|
208
|
+
# Docker (includes all tools)
|
|
209
|
+
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
See [Getting Started](docs/getting-started.md) for detailed installation options.
|
|
213
|
+
|
|
214
|
+
## 💻 Usage
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Check all files
|
|
218
|
+
lintro check .
|
|
219
|
+
|
|
220
|
+
# Auto-fix issues
|
|
221
|
+
lintro format .
|
|
222
|
+
|
|
223
|
+
# Grid output with grouping
|
|
224
|
+
lintro check --output-format grid --group-by file
|
|
225
|
+
|
|
226
|
+
# Run specific tools
|
|
227
|
+
lintro check --tools ruff,prettier,mypy
|
|
228
|
+
|
|
229
|
+
# Exclude directories
|
|
230
|
+
lintro check --exclude "node_modules,dist,venv"
|
|
231
|
+
|
|
232
|
+
# List available tools
|
|
233
|
+
lintro list-tools
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 🐳 Docker
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# Run from GHCR
|
|
240
|
+
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
|
|
241
|
+
|
|
242
|
+
# With formatting
|
|
243
|
+
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --output-format grid
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## 📚 Documentation
|
|
247
|
+
|
|
248
|
+
| Guide | Description |
|
|
249
|
+
| ------------------------------------------------ | --------------------------------------- |
|
|
250
|
+
| [Getting Started](docs/getting-started.md) | Installation, first steps, requirements |
|
|
251
|
+
| [Configuration](docs/configuration.md) | Tool configuration, options, presets |
|
|
252
|
+
| [Docker Usage](docs/docker.md) | Containerized development |
|
|
253
|
+
| [GitHub Integration](docs/github-integration.md) | CI/CD setup, workflows |
|
|
254
|
+
| [Contributing](docs/contributing.md) | Development guide, adding tools |
|
|
255
|
+
| [Troubleshooting](docs/troubleshooting.md) | Common issues and solutions |
|
|
256
|
+
|
|
257
|
+
**Advanced:** [Tool Analysis](docs/tool-analysis/) | [Architecture](docs/architecture/)
|
|
258
|
+
| [Security](docs/security/)
|
|
259
|
+
|
|
260
|
+
## 🔨 Development
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Clone and install
|
|
264
|
+
git clone https://github.com/TurboCoder13/py-lintro.git
|
|
265
|
+
cd py-lintro
|
|
266
|
+
uv sync --dev
|
|
267
|
+
|
|
268
|
+
# Run tests
|
|
269
|
+
./scripts/local/run-tests.sh
|
|
270
|
+
|
|
271
|
+
# Run lintro on itself
|
|
272
|
+
./scripts/local/local-lintro.sh check --output-format grid
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## 🤝 Community
|
|
276
|
+
|
|
277
|
+
- 🐛
|
|
278
|
+
[Bug Reports](https://github.com/TurboCoder13/py-lintro/issues/new?template=bug_report.md)
|
|
279
|
+
- 💡
|
|
280
|
+
[Feature Requests](https://github.com/TurboCoder13/py-lintro/issues/new?template=feature_request.md)
|
|
281
|
+
- ❓
|
|
282
|
+
[Questions](https://github.com/TurboCoder13/py-lintro/issues/new?template=question.md)
|
|
283
|
+
- 📖 [Contributing Guide](docs/contributing.md)
|
|
284
|
+
|
|
285
|
+
## 📄 License
|
|
286
|
+
|
|
287
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
lintro-0.23.1/README.md
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Lintro
|
|
2
|
+
|
|
3
|
+
<!-- markdownlint-disable MD033 MD013 -->
|
|
4
|
+
<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;">
|
|
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/TurboCoder13/py-lintro/actions/workflows/test-and-coverage.yml?query=branch%3Amain)
|
|
13
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/ci-lintro-analysis.yml?query=branch%3Amain)
|
|
14
|
+
[](https://github.com/TurboCoder13/py-lintro/actions/workflows/docker-build-publish.yml?query=branch%3Amain)
|
|
15
|
+
[](https://codecov.io/gh/TurboCoder13/py-lintro)
|
|
16
|
+
|
|
17
|
+
<!-- Badges: Releases -->
|
|
18
|
+
|
|
19
|
+
[](https://github.com/TurboCoder13/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/TurboCoder13/py-lintro/actions/workflows/codeql.yml?query=branch%3Amain)
|
|
27
|
+
[](https://scorecard.dev/viewer/?uri=github.com/TurboCoder13/py-lintro)
|
|
28
|
+
[](https://www.bestpractices.dev/projects/11142)
|
|
29
|
+
[](docs/security/assurance.md)
|
|
30
|
+
[](https://github.com/TurboCoder13/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/astral-sh/ruff) | 🐍 Python | ✅ |
|
|
74
|
+
| [](https://github.com/psf/black) | 🐍 Python | ✅ |
|
|
75
|
+
| [](https://mypy-lang.org/) | 🐍 Python | - |
|
|
76
|
+
| [](https://github.com/PyCQA/bandit) | 🐍 Python | - |
|
|
77
|
+
| [](https://prettier.io/) | 🟨 JS/TS · 🧾 JSON | ✅ |
|
|
78
|
+
| [](https://biomejs.dev/) | 🟨 JS/TS · 🧾 JSON/CSS | ✅ |
|
|
79
|
+
| [](https://github.com/adrienverge/yamllint) | 🧾 YAML | - |
|
|
80
|
+
| [](https://github.com/hadolint/hadolint) | 🐳 Dockerfile | - |
|
|
81
|
+
| [](https://github.com/rhysd/actionlint) | ⚙️ GitHub Actions | - |
|
|
82
|
+
| [](https://github.com/DavidAnson/markdownlint-cli2) | 📝 Markdown | - |
|
|
83
|
+
| [](https://github.com/rust-lang/rust-clippy) | 🦀 Rust | ✅ |
|
|
84
|
+
| [](https://github.com/terrencepreilly/darglint) | 🐍 Python | - |
|
|
85
|
+
|
|
86
|
+
<!-- markdownlint-enable MD013 MD060 -->
|
|
87
|
+
|
|
88
|
+
## 📋 Requirements
|
|
89
|
+
|
|
90
|
+
### Python Version
|
|
91
|
+
|
|
92
|
+
**Python 3.11+** is required. Lintro uses modern Python features not available in older
|
|
93
|
+
versions.
|
|
94
|
+
|
|
95
|
+
### Bundled Tools
|
|
96
|
+
|
|
97
|
+
These Python tools are automatically installed with Lintro:
|
|
98
|
+
|
|
99
|
+
- **Ruff** - Fast Python linter and formatter
|
|
100
|
+
- **Black** - Python code formatter
|
|
101
|
+
- **Bandit** - Python security linter
|
|
102
|
+
- **Mypy** - Python static type checker
|
|
103
|
+
- **Yamllint** - YAML linter
|
|
104
|
+
- **Darglint** - Python docstring linter
|
|
105
|
+
|
|
106
|
+
### Optional External Tools
|
|
107
|
+
|
|
108
|
+
For full functionality, install these additional tools:
|
|
109
|
+
|
|
110
|
+
- **Prettier** - `npm install -g prettier`
|
|
111
|
+
- **Markdownlint-cli2** - `npm install -g markdownlint-cli2`
|
|
112
|
+
- **Hadolint** - [GitHub Releases](https://github.com/hadolint/hadolint/releases)
|
|
113
|
+
- **Actionlint** - [GitHub Releases](https://github.com/rhysd/actionlint/releases)
|
|
114
|
+
|
|
115
|
+
Check all tool versions with: `lintro list-tools`
|
|
116
|
+
|
|
117
|
+
## 📦 Installation
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# PyPI (recommended)
|
|
121
|
+
pip install lintro
|
|
122
|
+
|
|
123
|
+
# Homebrew (macOS binary)
|
|
124
|
+
brew tap TurboCoder13/tap && brew install lintro-bin
|
|
125
|
+
|
|
126
|
+
# Docker (includes all tools)
|
|
127
|
+
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
See [Getting Started](docs/getting-started.md) for detailed installation options.
|
|
131
|
+
|
|
132
|
+
## 💻 Usage
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Check all files
|
|
136
|
+
lintro check .
|
|
137
|
+
|
|
138
|
+
# Auto-fix issues
|
|
139
|
+
lintro format .
|
|
140
|
+
|
|
141
|
+
# Grid output with grouping
|
|
142
|
+
lintro check --output-format grid --group-by file
|
|
143
|
+
|
|
144
|
+
# Run specific tools
|
|
145
|
+
lintro check --tools ruff,prettier,mypy
|
|
146
|
+
|
|
147
|
+
# Exclude directories
|
|
148
|
+
lintro check --exclude "node_modules,dist,venv"
|
|
149
|
+
|
|
150
|
+
# List available tools
|
|
151
|
+
lintro list-tools
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 🐳 Docker
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Run from GHCR
|
|
158
|
+
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check
|
|
159
|
+
|
|
160
|
+
# With formatting
|
|
161
|
+
docker run --rm -v $(pwd):/code ghcr.io/turbocoder13/py-lintro:latest check --output-format grid
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 📚 Documentation
|
|
165
|
+
|
|
166
|
+
| Guide | Description |
|
|
167
|
+
| ------------------------------------------------ | --------------------------------------- |
|
|
168
|
+
| [Getting Started](docs/getting-started.md) | Installation, first steps, requirements |
|
|
169
|
+
| [Configuration](docs/configuration.md) | Tool configuration, options, presets |
|
|
170
|
+
| [Docker Usage](docs/docker.md) | Containerized development |
|
|
171
|
+
| [GitHub Integration](docs/github-integration.md) | CI/CD setup, workflows |
|
|
172
|
+
| [Contributing](docs/contributing.md) | Development guide, adding tools |
|
|
173
|
+
| [Troubleshooting](docs/troubleshooting.md) | Common issues and solutions |
|
|
174
|
+
|
|
175
|
+
**Advanced:** [Tool Analysis](docs/tool-analysis/) | [Architecture](docs/architecture/)
|
|
176
|
+
| [Security](docs/security/)
|
|
177
|
+
|
|
178
|
+
## 🔨 Development
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Clone and install
|
|
182
|
+
git clone https://github.com/TurboCoder13/py-lintro.git
|
|
183
|
+
cd py-lintro
|
|
184
|
+
uv sync --dev
|
|
185
|
+
|
|
186
|
+
# Run tests
|
|
187
|
+
./scripts/local/run-tests.sh
|
|
188
|
+
|
|
189
|
+
# Run lintro on itself
|
|
190
|
+
./scripts/local/local-lintro.sh check --output-format grid
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 🤝 Community
|
|
194
|
+
|
|
195
|
+
- 🐛
|
|
196
|
+
[Bug Reports](https://github.com/TurboCoder13/py-lintro/issues/new?template=bug_report.md)
|
|
197
|
+
- 💡
|
|
198
|
+
[Feature Requests](https://github.com/TurboCoder13/py-lintro/issues/new?template=feature_request.md)
|
|
199
|
+
- ❓
|
|
200
|
+
[Questions](https://github.com/TurboCoder13/py-lintro/issues/new?template=question.md)
|
|
201
|
+
- 📖 [Contributing Guide](docs/contributing.md)
|
|
202
|
+
|
|
203
|
+
## 📄 License
|
|
204
|
+
|
|
205
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
</clipPath>
|
|
10
10
|
<g clip-path="url(#a)">
|
|
11
11
|
<path fill="#555" d="M0 0h63v20H0z"/>
|
|
12
|
-
<path fill="#
|
|
12
|
+
<path fill="#4c1" d="M63 0h36v20H63z"/>
|
|
13
13
|
<path fill="url(#b)" d="M0 0h99v20H0z"/>
|
|
14
14
|
</g>
|
|
15
15
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
|
|
16
16
|
<text x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">coverage</text>
|
|
17
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">
|
|
19
|
-
<text x="800" y="140" transform="scale(.1)" textLength="260">
|
|
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
20
|
</g>
|
|
21
21
|
</svg>
|