Files
actions/python-lint-fix
Ismo Vuorinen e96a5a958d refactor: inline Python detection into python-lint-fix
Replace language-version-detect dependency with inline version detection
for the Python linting action.

Detection logic checks (in priority order):
- .tool-versions file (python key)
- Dockerfile (FROM python: image)
- devcontainer.json (python: image)
- .python-version file
- pyproject.toml (requires-python field)

Implementation details:
- POSIX sh compliant with `set -eu`
- Validates version format: X.Y or X.Y.Z
- Normalizes versions: strips 'v' prefix, whitespace, line endings
- Uses `sed -E` for portable extended regex (Dockerfile/devcontainer)
- Uses basic sed for pyproject.toml (POSIX-compatible backslash escapes)
- Conditional jq usage with diagnostic messages
- Maintains output contract (detected-version)

Changes:
- python-lint-fix: ~110 lines of inline detection + jq diagnostics
- README regenerated with action-docs

Benefits:
- Eliminates external dependency for Python version detection
- Reduces action initialization time
- Improved debugging (diagnostic messages, all logic in one file)
- Consistent with go-build and csharp pattern
2025-11-20 10:15:32 +02:00
..

ivuorinen/actions/python-lint-fix

Python Lint and Fix

Description

Lints and fixes Python files, commits changes, and uploads SARIF report.

Inputs

name description required default
python-version

Python version to use

false 3.11
flake8-version

Flake8 version to use

false 7.0.0
autopep8-version

Autopep8 version to use

false 2.0.4
max-retries

Maximum number of retry attempts for installations and linting

false 3
working-directory

Directory containing Python files to lint

false .
fail-on-error

Whether to fail the action if linting errors are found

false true
token

GitHub token for authentication

false ""
username

GitHub username for commits

false github-actions
email

GitHub email for commits

false github-actions@github.com

Outputs

name description
lint-result

Result of the linting process (success/failure)

fixed-files

Number of files that were fixed

error-count

Number of errors found

Runs

This action is a composite action.

Usage

- uses: ivuorinen/actions/python-lint-fix@main
  with:
    python-version:
    # Python version to use
    #
    # Required: false
    # Default: 3.11

    flake8-version:
    # Flake8 version to use
    #
    # Required: false
    # Default: 7.0.0

    autopep8-version:
    # Autopep8 version to use
    #
    # Required: false
    # Default: 2.0.4

    max-retries:
    # Maximum number of retry attempts for installations and linting
    #
    # Required: false
    # Default: 3

    working-directory:
    # Directory containing Python files to lint
    #
    # Required: false
    # Default: .

    fail-on-error:
    # Whether to fail the action if linting errors are found
    #
    # Required: false
    # Default: true

    token:
    # GitHub token for authentication
    #
    # Required: false
    # Default: ""

    username:
    # GitHub username for commits
    #
    # Required: false
    # Default: github-actions

    email:
    # GitHub email for commits
    #
    # Required: false
    # Default: github-actions@github.com