Spaces:
Runtime error
Runtime error
| name: PyLint and flake8 linting | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened, labeled, unlabeled] | |
| workflow_call: | |
| jobs: | |
| linting: | |
| name: "Domain: ${{ matrix.domain }}" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| domain: [speech, other] | |
| env: | |
| DOMAIN: ${{ matrix.domain }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Select filter | |
| id: filter | |
| run: | | |
| if [[ "$DOMAIN" == "speech" ]]; then | |
| FILTER=$(jq -crn '[ | |
| "nemo/collections/common/data/lhotse/*.py", | |
| "nemo/collections/asr/**/*.py", | |
| "nemo/collections/tts/**/*.py", | |
| "nemo/collections/audio/**/*.py", | |
| "nemo/collections/multimodal/speech_llm/**/*.py", | |
| "nemo/collections/speechlm/**/*.py", | |
| "nemo/collections/speechlm2/**/*.py" | |
| ] | join(",")') | |
| else | |
| FILTER=$(jq -crn '[ | |
| "nemo/**/*.py", | |
| "!nemo/collections/common/data/lhotse/*.py", | |
| "!nemo/collections/asr/**/*.py", | |
| "!nemo/collections/tts/**/*.py", | |
| "!nemo/collections/audio/**/*.py", | |
| "!nemo/collections/multimodal/speech_llm/**/*.py", | |
| "!nemo/collections/speechlm/**/*.py", | |
| "!nemo/collections/speechlm2/**/*.py", | |
| "!nemo/export/**/*.py" | |
| ] | join(",")') | |
| fi | |
| echo "main=$FILTER" | tee -a "$GITHUB_OUTPUT" | |
| - name: Get changed files | |
| id: changed-files | |
| uses: step-security/[email protected] | |
| with: | |
| files: ${{ steps.filter.outputs.main }} | |
| files_separator: "," | |
| separator: " " | |
| - name: Run PyLint | |
| id: pylint | |
| env: | |
| CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} | |
| SKIP_DOCS: ${{ contains(github.event.pull_request.labels.*.name, 'skip-docs') }} | |
| SKIP_LINTING: ${{ contains(github.event.pull_request.labels.*.name, 'skip-linting') }} | |
| run: | | |
| if [[ -z "$CHANGED_FILES" ]]; then | |
| echo Nothing to lint. | |
| echo "exit-code=0" | tee -a "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| if [[ $SKIP_DOCS == true ]]; then | |
| ADDITIONAL_PYLINT_ARGS="--disable=C0115,C0116" | |
| else | |
| ADDITIONAL_PYLINT_ARGS="" | |
| fi | |
| if [[ $SKIP_LINTING == true ]]; then | |
| ADDITIONAL_PYLINT_ARGS="--exit-zero" | |
| fi | |
| pip install pylint | |
| set +e | |
| pylint $ADDITIONAL_PYLINT_ARGS --output "pylintrc.$DOMAIN.txt" --rcfile ".pylintrc.$DOMAIN" ${CHANGED_FILES[@]} | |
| echo "exit-code=$?" | tee -a "$GITHUB_OUTPUT" | |
| - name: Run flake8 | |
| id: flake8 | |
| env: | |
| CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} | |
| SKIP_LINTING: ${{ contains(github.event.pull_request.labels.*.name, 'skip-linting') }} | |
| run: | | |
| if [[ -z "$CHANGED_FILES" ]]; then | |
| echo Nothing to lint. | |
| echo "exit-code=0" | tee -a "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| if [[ $SKIP_LINTING == true ]]; then | |
| ADDITIONAL_FLAKE8_ARGS="--exit-zero" | |
| else | |
| ADDITIONAL_FLAKE8_ARGS="" | |
| fi | |
| pip install flake8 | |
| set +e | |
| flake8 $ADDITIONAL_FLAKE8_ARGS --output "flake8.$DOMAIN.txt" --config ".flake8.$DOMAIN" ${CHANGED_FILES[@]} | |
| echo "exit-code=$?" | tee -a "$GITHUB_OUTPUT" | |
| - name: Summary | |
| env: | |
| PYLINT: ${{ steps.pylint.outputs.exit-code == 0 }} | |
| FLAKE8: ${{ steps.flake8.outputs.exit-code == 0 }} | |
| run: | | |
| if [[ "$PYLINT" != "true" ]]; then | |
| echo "Pylint output:" | tee -a $GITHUB_STEP_SUMMARY | |
| echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
| cat pylintrc.$DOMAIN.txt | tee -a $GITHUB_STEP_SUMMARY | |
| echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
| fi | |
| if [[ "$FLAKE8" != "true" ]]; then | |
| echo "Flake8 output:" | tee -a $GITHUB_STEP_SUMMARY | |
| echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
| cat flake8.$DOMAIN.txt | tee -a $GITHUB_STEP_SUMMARY | |
| echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
| fi | |
| if [[ "$PYLINT" != "true" || "$FLAKE8" != "true" ]]; then | |
| echo "The following directories got scanned:" | tee -a $GITHUB_STEP_SUMMARY | |
| echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
| echo ${{ steps.filter.outputs.main }} | tee -a $GITHUB_STEP_SUMMARY | |
| echo '```' | tee -a $GITHUB_STEP_SUMMARY | |
| exit 1 | |
| fi | |
| Nemo_Linting_Test: | |
| needs: linting | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - name: Main | |
| env: | |
| RESULTS: ${{ toJson(needs.linting) }} | |
| run: | | |
| RESULT=$(echo "$RESULTS" | jq -r '.result') | |
| if [[ "$RESULT" == "success" ]]; then | |
| echo "All passed." | |
| exit 0 | |
| else | |
| echo "Some linting domains failed." | |
| exit 1 | |
| fi | |