name: Python CI on: push: branches: [ master, ci-test* ] pull_request: branches: [ stable, master, release-* ] jobs: lint: runs-on: ubuntu-latest env: min-python-version: "3.10" steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Set up Python ${{ env.min-python-version }} uses: actions/setup-python@v2 with: python-version: ${{ env.min-python-version }} - id: get_date name: Get date run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - name: Install Poetry run: | curl -sSL https://install.python-poetry.org | python - - name: Set up Poetry cache uses: actions/cache@v2 with: path: | ~/.cache/pypoetry .venv key: ${{ runner.os }}-poetry-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/poetry.lock') }}-${{ steps.get_date.outputs.date }} - name: Install dependencies run: | poetry install - name: Lint with flake8 run: poetry run flake8 - name: Check black formatting run: poetry run black . --check if: success() || failure() - name: Check isort formatting run: poetry run isort . --check if: success() || failure() - name: Check mypy formatting run: poetry run mypy --ignore-missing-imports . if: success() || failure() - name: Check for unused imports and pass statements run: | cmd="poetry run autoflake --remove-all-unused-imports --recursive --ignore-init-module-imports --ignore-pass-after-docstring agbenchmark" $cmd --check || (echo "You have unused imports or pass statements, please run '${cmd} --in-place'" && exit 1) if: success() || failure() tests: runs-on: ubuntu-latest env: min-python-version: "3.10" steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} - name: Set up Python ${{ env.min-python-version }} uses: actions/setup-python@v2 with: python-version: ${{ env.min-python-version }} - id: get_date name: Get date run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - name: Install Poetry run: | curl -sSL https://install.python-poetry.org | python - - name: Set up Poetry cache uses: actions/cache@v2 with: path: | ~/.cache/pypoetry .venv key: ${{ runner.os }}-poetry-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/poetry.lock') }}-${{ steps.get_date.outputs.date }} - name: Install dependencies run: | poetry install poetry run agbenchmark start --mock poetry run agbenchmark start --mock --maintain