mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2026-10-24 22:07:40 -05:00
Both workflows ran their full pipelines on every push, including docs-only and opposite-language changes, which wasted runner time and reported failures unrelated to the change under test. Add a shared detect-changes workflow that diffs the pushed or PR range against per-group patterns and exposes a matched output. The heavy jobs run only when their group changed, or when detection itself fails, so a broken detector cannot silently skip checks. Tag pushes and unknown events fall back to running everything. Include .github/scripts/test-changed-files.sh, a manual harness for the detection logic that follows the repo's existing shell self-tests.
41 lines
1.8 KiB
YAML
41 lines
1.8 KiB
YAML
name: lint_python
|
|
on: [pull_request, push]
|
|
jobs:
|
|
changes:
|
|
uses: ./.github/workflows/detect-changes.yml
|
|
with:
|
|
group: python
|
|
|
|
# Python checks only run when Python sources or dependencies changed.
|
|
# Skipped jobs report success, so required status checks stay compatible;
|
|
# if change detection fails, the checks run anyway.
|
|
lint_python:
|
|
needs: changes
|
|
if: needs.changes.result != 'success' || needs.changes.outputs.matched == 'true'
|
|
runs-on: lq_run
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.x
|
|
- run: pip install --upgrade pip wheel
|
|
- run: pip install bandit black codespell flake8 flake8-2020 flake8-bugbear
|
|
flake8-comprehensions isort mypy pytest pyupgrade safety
|
|
- run: bandit --recursive --skip B105,B110,B404,B602,B603,B605,B501,B607 -x ./rust/target/ .
|
|
- run: black --check . || true
|
|
# - run: codespell --skip="./.*,./old" # --ignore-words-list=""
|
|
- run: flake8 . --count --exclude="./.*,./old/" --select=E9,F63,F7,F82 --show-source --statistics
|
|
- run: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=88
|
|
--show-source --statistics
|
|
- run: isort --check-only --profile black . || true
|
|
- run: pip install -r requirements.txt || pip install --editable . || pip install . || true
|
|
- run: mkdir --parents --verbose .mypy_cache
|
|
- run: mypy --ignore-missing-imports --install-types --non-interactive . || true
|
|
- run: pytest . || true
|
|
- run: pytest --doctest-modules . || true
|
|
- run: shopt -s globstar && pyupgrade --py37-plus **/*.py || true
|
|
- run: safety check --ignore=62044,70612,66742,67895
|
|
#- uses: pyupio/safety@2.3.4
|
|
# with:
|
|
# api-key: ${{secrets.SAFETY_API_KEY}}
|