docs: Add agent contribution guidance (#534) #662
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: Tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| concurrency: | |
| group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name != 'pull_request' && github.sha || '' }} | |
| cancel-in-progress: true | |
| jobs: | |
| quality: | |
| name: Quality | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.x" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install -U pip | |
| python -m pip install -e '.[dev]' | |
| - name: Check | |
| run: ./check.sh | |
| documentation: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.x" | |
| cache: pip | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install -U pip | |
| python -m pip install -e '.[docs]' | |
| - name: Build | |
| run: | | |
| sphinx-build -d docs docs/source docs_out --color -W -bhtml | |
| tests: | |
| name: "${{ matrix.os.emoji }} ${{ matrix.python.name }}" | |
| runs-on: ${{ matrix.os.runs-on }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - emoji: 🐧 | |
| name: linux | |
| runs-on: [ubuntu-latest] | |
| - emoji: 🍎 | |
| name: macos | |
| runs-on: [macos-latest] | |
| - emoji: 🪟 | |
| name: windows | |
| runs-on: [windows-latest] | |
| python: | |
| - name: CPython 3.10 | |
| runs-on: "3.10" | |
| - name: CPython 3.11 | |
| runs-on: "3.11" | |
| - name: CPython 3.12 | |
| runs-on: "3.12" | |
| - name: CPython 3.13 | |
| runs-on: "3.13" | |
| - name: CPython 3.14 | |
| runs-on: "3.14-dev" | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python.runs-on }} | |
| cache: pip | |
| check-latest: true | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install -U pip | |
| python -m pip install -e '.[dev,tests]' | |
| # We don't include PyTorch or TensorFlow in the dependencies. This is partly because they are large and not | |
| # needed for most users. But it's mostly because the right way to install them depends a lot on the user's | |
| # needs (such as GPU support) and OS. | |
| # The PyPI versions of PyTorch for Linux include CUDA for Linux, so we use an index with a CPU-only version there. | |
| # For the other OSs, the PyPI versions are CPU-only. | |
| - name: Install PyTorch (Linux CPU) | |
| if: matrix.os.name == 'linux' | |
| run: python -m pip install torch --index-url https://download.pytorch.org/whl/cpu | |
| - name: Install PyTorch (macOS/Windows) | |
| if: matrix.os.name != 'linux' | |
| run: python -m pip install torch | |
| # TensorFlow stable (as of this June 2026) only supports up to Python 3.12; see | |
| # https://www.tensorflow.org/install/pip#software_requirements | |
| - name: Install TensorFlow (Python 3.10-3.12) | |
| if: contains(fromJSON('["3.10", "3.11", "3.12"]'), matrix.python.runs-on) | |
| run: python -m pip install tensorflow | |
| - name: Tests (GNU/Linux) | |
| timeout-minutes: 10 | |
| if: matrix.os.name == 'linux' | |
| run: xvfb-run python -m pytest | |
| - name: Tests (macOS, Windows) | |
| timeout-minutes: 10 | |
| if: matrix.os.name != 'linux' | |
| run: python -m pytest | |
| automerge: | |
| name: Automerge | |
| runs-on: ubuntu-latest | |
| needs: [documentation, quality, tests] | |
| if: ${{ github.actor == 'dependabot[bot]' }} | |
| steps: | |
| - name: Automerge | |
| run: gh pr merge --auto --rebase "$PR_URL" | |
| env: | |
| PR_URL: ${{github.event.pull_request.html_url}} | |
| GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} |