cite update #13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Lint and Code Quality | |
| on: | |
| push: | |
| branches: [main, dev/**, release/**] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.8", "3.9"] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Cache pip packages | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('**/requirements*.txt') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip-${{ matrix.python-version }}- | |
| ${{ runner.os }}-pip- | |
| - name: Install linting dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install black==24.4.2 flake8==7.0.0 isort==5.13.2 | |
| - name: Check code formatting with black | |
| run: | | |
| black --check --line-length 120 --exclude '/(\.git|\.venv|build|dist|\.eggs)/' . | |
| continue-on-error: true | |
| - name: Check import sorting with isort | |
| run: | | |
| isort --check-only --profile black --line-length 120 --skip .venv --skip build . | |
| continue-on-error: true | |
| - name: Lint with flake8 | |
| run: | | |
| # Stop the build if there are Python syntax errors or undefined names | |
| flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=.venv,build,dist,.eggs | |
| # Check for other style issues (warnings only) | |
| flake8 . --count --max-line-length=120 --ignore=E203,E501,W503 --statistics --exclude=.venv,build,dist,.eggs | |
| continue-on-error: true | |
| type-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.9 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.9" | |
| - name: Install mypy | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install mypy==1.10.0 | |
| - name: Type check with mypy | |
| run: | | |
| mypy --install-types --non-interactive --ignore-missing-imports projects/ | |
| continue-on-error: true | |
| markdown-lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Lint markdown files | |
| uses: avto-dev/markdown-lint@v1 | |
| with: | |
| args: "**/*.md" | |
| ignore: "CHANGELOG.md" | |
| continue-on-error: true | |
| check-dependencies: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.9 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.9" | |
| - name: Check for security vulnerabilities | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install safety==3.2.0 | |
| # Check SimEngine dependencies | |
| if [ -f projects/SimEngine/requirements.txt ]; then | |
| safety check --file projects/SimEngine/requirements.txt --continue-on-error | |
| fi | |
| # Check AlgEngine dependencies | |
| if [ -f projects/AlgEngine/requirements.txt ]; then | |
| safety check --file projects/AlgEngine/requirements.txt --continue-on-error | |
| fi | |
| continue-on-error: true |