# This workflow will install Python dependencies, run tests and lint with a variety of Python versions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Build on: push: branches: ["main"] paths: - "autogen/**" - "test/**" - ".github/workflows/build.yml" - "setup.py" pull_request: branches: ["main"] merge_group: types: [checks_requested] concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} permissions: {} jobs: build: runs-on: ${{ matrix.os }} env: AUTOGEN_USE_DOCKER: ${{ matrix.os != 'ubuntu-latest' && 'False' }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install packages and dependencies run: | python -m pip install --upgrade pip wheel pip install -e . python -c "import autogen" pip install pytest mock - name: Install optional dependencies for code executors # code executors auto skip without deps, so only run for python 3.11 if: matrix.python-version == '3.11' run: | pip install -e ".[jupyter-executor]" python -m ipykernel install --user --name python3 - name: Set AUTOGEN_USE_DOCKER based on OS shell: bash run: | if [[ ${{ matrix.os }} != ubuntu-latest ]]; then echo "AUTOGEN_USE_DOCKER=False" >> $GITHUB_ENV fi - name: Test with pytest skipping openai tests if: matrix.python-version != '3.10' && matrix.os == 'ubuntu-latest' run: | pytest test --skip-openai --durations=10 --durations-min=1.0 - name: Test with pytest skipping openai and docker tests if: matrix.python-version != '3.10' && matrix.os != 'ubuntu-latest' run: | pytest test --skip-openai --skip-docker --durations=10 --durations-min=1.0 - name: Coverage if: matrix.python-version == '3.10' run: | pip install -e .[test,redis] coverage run -a -m pytest test --ignore=test/agentchat/contrib --skip-openai --durations=10 --durations-min=1.0 coverage xml - name: Upload coverage to Codecov if: matrix.python-version == '3.10' uses: codecov/codecov-action@v3 with: file: ./coverage.xml flags: unittests