Ner evaluation proposal #244
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: Python Tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| unit: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] # For demonstration, other OSes are commented out: macos-latest, windows-latest | |
| python-version: ['3.13', '3.12', '3.11', '3.10'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: # no need for the history | |
| fetch-depth: 1 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install poetry | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install poetry==2.3.2 | |
| - name: Install dependencies with Poetry | |
| run: | | |
| poetry lock | |
| poetry install --with dev | |
| shell: bash | |
| - name: Run unit tests | |
| id: run-tests | |
| run: > | |
| poetry run pytest \ | |
| -m "not requires_openrouter" \ | |
| --junitxml=pytest.xml \ | |
| --cov-report=term-missing:skip-covered \ | |
| --cov-report=xml:coverage.xml \ | |
| --cov=src src/tests \ | |
| --log-level=DEBUG \ | |
| --verbose | |
| shell: bash | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| check-secrets: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| has-openrouter-key: ${{ steps.check.outputs.has-key }} | |
| steps: | |
| - id: check | |
| env: | |
| KEY: ${{ secrets.OPENROUTER_API_KEY }} | |
| run: | | |
| if [ -n "$KEY" ]; then | |
| echo "has-key=true" >> $GITHUB_OUTPUT | |
| echo "OPENROUTER_API_KEY is set — integration tests will run." | |
| else | |
| echo "has-key=false" >> $GITHUB_OUTPUT | |
| echo "OPENROUTER_API_KEY is not set — skipping integration tests." | |
| fi | |
| shell: bash | |
| integration: | |
| needs: check-secrets | |
| if: needs.check-secrets.outputs.has-openrouter-key == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 1 | |
| - name: Set up Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install poetry | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install poetry==2.3.2 | |
| - name: Install dependencies with Poetry | |
| run: | | |
| poetry lock | |
| poetry install --with dev | |
| shell: bash | |
| - name: Run OpenRouter integration tests | |
| env: | |
| OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }} | |
| run: > | |
| poetry run pytest \ | |
| -m "requires_openrouter" \ | |
| --junitxml=pytest.xml \ | |
| --cov-report=term-missing:skip-covered \ | |
| --cov-report=xml:coverage.xml \ | |
| --cov=src src/tests \ | |
| --log-level=DEBUG \ | |
| --verbose | |
| shell: bash | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| pre-commit: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| python-version: ['3.10'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: # no need for the history | |
| fetch-depth: 1 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Poetry | |
| run: pip install poetry==2.1.3 | |
| shell: bash | |
| - name: Install dependencies with Poetry | |
| run: | | |
| poetry env use ${{ matrix.python-version }} | |
| poetry lock | |
| poetry install --with dev | |
| poetry env info | |
| shell: bash | |
| - name: Install pre-commit | |
| run: pip install pre-commit | |
| shell: bash | |
| - name: Run pre-commit | |
| run: | | |
| poetry run pre-commit run --all-files --show-diff-on-failure | |
| shell: bash |