Add Pydantic models for configuration validation #294
Workflow file for this run
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: Pipeline | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| jobs: | |
| black: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: psf/black@stable | |
| with: | |
| options: "--check --diff" | |
| src: ./src/${{ github.event.repository.name }} | |
| black_fix: # in most cases pre-commit is faster | |
| needs: [black] | |
| if: failure() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| token: ${{ secrets.DEPENDABOT_WORKFLOW_TOKEN }} | |
| ref: ${{ github.event.pull_request.head.ref }} # Check out the head of the actual branch, not the PR | |
| fetch-depth: 0 # otherwise, you will fail to push refs to dest repo | |
| - name: format black | |
| uses: psf/black@stable | |
| with: | |
| options: "" | |
| src: "./src/${{ github.event.repository.name }}" | |
| - name: commit | |
| run: | | |
| git config --local user.email "[email protected]" | |
| git config --local user.name "pyiron-runner" | |
| git commit -m "Format black" -a | |
| - name: push | |
| uses: ad-m/github-push-action@master | |
| with: | |
| github_token: ${{ secrets.DEPENDABOT_WORKFLOW_TOKEN }} | |
| branch: ${{ github.event.pull_request.head.ref }} | |
| mypy: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.14" | |
| architecture: x64 | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Test | |
| run: | | |
| pip install mypy types-PyYAML types-paramiko | |
| mypy --ignore-missing-imports src/${{ github.event.repository.name }} | |
| coverage: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup environment | |
| run: | | |
| cp .ci_support/environment.yml environment.yml | |
| echo "- flux-core =0.81.0" >> environment.yml | |
| echo -e "channels:\n - conda-forge\n" > .condarc | |
| mkdir -p /home/runner/.ssh | |
| echo "test.rebex.net,195.144.107.198 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLZcZopPvkxYERubWeSrWOSHpxJdR14WFVES/Q3hFguTn6L+0EANqYcbRXhGBUV6SjR7SaxZACXSxOzgCtG4kwc=" > /home/runner/.ssh/known_hosts | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: '3.13' | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: environment.yml | |
| - name: Install | |
| shell: bash -l {0} | |
| run: pip install . --no-deps --no-build-isolation | |
| - name: Test | |
| shell: bash -l {0} | |
| run: > | |
| flux start | |
| coverage run | |
| - name: Collect Coverage | |
| shell: bash -l {0} | |
| run: coverage xml | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| minimal: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup environment | |
| run: | | |
| cp .ci_support/environment.yml environment.yml | |
| sed -i '/defusedxml/d' environment.yml | |
| sed -i '/paramiko/d' environment.yml | |
| sed -i '/tqdm/d' environment.yml | |
| echo -e "channels:\n - conda-forge\n" > .condarc | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: '3.14' | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: environment.yml | |
| - name: Test | |
| shell: bash -l {0} | |
| run: | | |
| pip install . --no-deps --no-build-isolation | |
| python -m unittest discover tests | |
| notebooks: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Merge Notebook environment | |
| run: | | |
| cp binder/environment.yml environment.yml | |
| tail --lines=+4 .ci_support/environment-notebooks.yml >> environment.yml | |
| echo -e "channels:\n - conda-forge\n" > .condarc | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: "3.13" | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: environment.yml | |
| - name: Install | |
| shell: bash -l {0} | |
| run: | | |
| pip install . --no-deps --no-build-isolation | |
| mkdir config | |
| cp -r tests/static/flux config | |
| - name: Notebooks with config | |
| shell: bash -l {0} | |
| run: > | |
| flux start | |
| papermill notebooks/example_config.ipynb example-config-out.ipynb -k "python3" | |
| - name: Notebooks dynamic | |
| shell: bash -l {0} | |
| run: > | |
| flux start | |
| papermill notebooks/example_queue_type.ipynb example-queue-type-out.ipynb -k "python3" | |
| pip_check: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Conda config | |
| run: echo -e "channels:\n - conda-forge\n" > .condarc | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: '3.14' | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: .ci_support/environment.yml | |
| - name: Pip check | |
| shell: bash -l {0} | |
| run: | | |
| pip install tomlkit | |
| python .ci_support/check.py | |
| cat pyproject.toml | |
| pip install . --no-deps --no-build-isolation | |
| pip check | |
| uv_check: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: astral-sh/setup-uv@v7 | |
| - name: Install the project and pip check | |
| shell: bash -l {0} | |
| run: | | |
| uv sync --all-extras --dev | |
| pip check | |
| unittest_matrix: | |
| needs: [black] | |
| runs-on: ${{ matrix.operating-system }} | |
| strategy: | |
| matrix: | |
| include: | |
| - operating-system: macos-latest | |
| python-version: '3.14' | |
| - operating-system: windows-latest | |
| python-version: '3.14' | |
| - operating-system: ubuntu-24.04-arm | |
| python-version: '3.14' | |
| - operating-system: ubuntu-22.04-arm | |
| python-version: '3.14' | |
| - operating-system: ubuntu-latest | |
| python-version: '3.14' | |
| - operating-system: ubuntu-latest | |
| python-version: '3.13' | |
| - operating-system: ubuntu-latest | |
| python-version: '3.12' | |
| - operating-system: ubuntu-latest | |
| python-version: '3.11' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Conda config | |
| shell: bash -l {0} | |
| run: echo -e "channels:\n - conda-forge\n" > .condarc | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: .ci_support/environment.yml | |
| - name: Test | |
| shell: bash -l {0} | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo "test.rebex.net,195.144.107.198 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLZcZopPvkxYERubWeSrWOSHpxJdR14WFVES/Q3hFguTn6L+0EANqYcbRXhGBUV6SjR7SaxZACXSxOzgCtG4kwc=" > ~/.ssh/known_hosts | |
| pip install . --no-deps --no-build-isolation | |
| python -m unittest discover tests | |
| unittest_old: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Conda config | |
| run: echo -e "channels:\n - conda-forge\n" > .condarc | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: '3.9' | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: .ci_support/environment-old.yml | |
| - name: Test | |
| shell: bash -l {0} | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo "test.rebex.net,195.144.107.198 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLZcZopPvkxYERubWeSrWOSHpxJdR14WFVES/Q3hFguTn6L+0EANqYcbRXhGBUV6SjR7SaxZACXSxOzgCtG4kwc=" > ~/.ssh/known_hosts | |
| pip install . --no-deps --no-build-isolation | |
| python -m unittest discover tests | |
| unittest_slurm: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| services: | |
| mysql: | |
| image: mysql:8.0 | |
| env: | |
| MYSQL_ROOT_PASSWORD: root | |
| ports: | |
| - "8888:3306" | |
| options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: koesterlab/setup-slurm-action@v1 | |
| timeout-minutes: 5 | |
| - name: Conda config | |
| run: echo -e "channels:\n - conda-forge\n" > .condarc | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: "3.13" | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: .ci_support/environment.yml | |
| - name: Test | |
| shell: bash -l {0} | |
| timeout-minutes: 5 | |
| run: | | |
| pip install . --no-deps --no-build-isolation | |
| cd tests | |
| sinfo -o "%n %e %m %a %c %C" | |
| srun --mpi=list | |
| python -m unittest integration/test_slurm_integration.py | |
| unittest_flux: | |
| needs: [black] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Conda config | |
| run: | | |
| echo -e "channels:\n - conda-forge\n" > .condarc | |
| echo "- flux-core=0.81.0" >> .ci_support/environment.yml | |
| - uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| python-version: "3.13" | |
| miniforge-version: latest | |
| condarc-file: .condarc | |
| environment-file: .ci_support/environment.yml | |
| - name: Test | |
| shell: bash -l {0} | |
| timeout-minutes: 5 | |
| run: | | |
| pip install . --no-deps --no-build-isolation | |
| cd tests | |
| flux start python -m unittest integration/test_flux_integration.py | |
| autobot: | |
| needs: [uv_check, unittest_old, unittest_matrix, pip_check, notebooks, minimal, coverage] | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| runs-on: ubuntu-latest | |
| if: (github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'pre-commit-ci[bot]') | |
| steps: | |
| - name: Enable auto-merge for bot PRs | |
| run: gh pr merge --auto --squash "$PR_URL" | |
| env: | |
| PR_URL: ${{github.event.pull_request.html_url}} | |
| GH_TOKEN: ${{secrets.GITHUB_TOKEN}} |