Spaces:
Running
Running
| name: Linux | |
| on: | |
| push: | |
| branches: | |
| - '**' | |
| paths: | |
| - '**' | |
| tags: | |
| - 'v*.*.*' | |
| pull_request: | |
| branches: | |
| - 'master' | |
| paths: | |
| - '**' | |
| jobs: | |
| test: | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 60 | |
| env: | |
| COVERAGE_PROCESS_START: "${{ github.workspace }}/.coveragerc" | |
| defaults: | |
| run: | |
| shell: bash | |
| strategy: | |
| matrix: | |
| julia-version: ['1'] | |
| python-version: ['3.12'] | |
| os: [ubuntu-latest] | |
| test-id: [main] | |
| include: | |
| - julia-version: '1.6' | |
| python-version: '3.8' | |
| os: ubuntu-latest | |
| test-id: include | |
| - julia-version: '1' | |
| python-version: '3.12' | |
| os: ubuntu-latest | |
| test-id: include | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: "Set up Julia" | |
| uses: julia-actions/setup-julia@v2 | |
| with: | |
| version: ${{ matrix.julia-version }} | |
| - name: "Cache Julia" | |
| uses: julia-actions/cache@v2 | |
| with: | |
| cache-name: ${{ matrix.os }}-test-${{ matrix.julia-version }}-${{ matrix.python-version }} | |
| cache-packages: false | |
| - name: "Set up Python" | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: "Install PySR" | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install . | |
| python -c 'import pysr' | |
| - name: "Assert Julia version" | |
| if: ${{ matrix.julia-version != '1'}} | |
| run: python3 -c "from pysr import jl; assert jl.VERSION.major == jl.seval('v\"${{ matrix.julia-version }}\"').major; assert jl.VERSION.minor == jl.seval('v\"${{ matrix.julia-version }}\"').minor" | |
| - name: "Install test dependencies" | |
| run: pip install coverage coveralls pytest nbval | |
| - name: "Set up coverage for subprocesses" | |
| run: echo 'import coverage; coverage.process_startup()' > "${{ github.workspace }}/sitecustomize.py" | |
| - name: "Run tests" | |
| run: coverage run -m pysr test main,cli,startup | |
| - name: "Install JAX" | |
| run: pip install jax jaxlib # (optional import) | |
| if: ${{ matrix.test-id == 'main' }} | |
| - name: "Run JAX tests" | |
| run: coverage run --append -m pysr test jax | |
| if: ${{ matrix.test-id == 'main' }} | |
| - name: "Install Torch" | |
| run: pip install torch # (optional import) | |
| if: ${{ matrix.test-id == 'main' }} | |
| - name: "Run Torch tests" | |
| run: coverage run --append -m pysr test torch | |
| if: ${{ matrix.test-id == 'main' }} | |
| - name: "Coveralls" | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| COVERALLS_FLAG_NAME: test-${{ matrix.julia-version }}-${{ matrix.python-version }}-${{ matrix.test-id }} | |
| COVERALLS_PARALLEL: true | |
| run: coveralls --service=github | |
| dev_install: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: ['ubuntu-latest'] | |
| python-version: ['3.12'] | |
| julia-version: ['1'] | |
| include: | |
| - os: ubuntu-latest | |
| python-version: '3.8' | |
| julia-version: '1.6' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| - name: "Install PySR" | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install . | |
| - name: "Run development test" | |
| run: PYSR_TEST_JULIA_VERSION=${{ matrix.julia-version }} PYSR_TEST_PYTHON_VERSION=${{ matrix.python-version }} python -m pysr test dev | |
| conda_test: | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash -l {0} | |
| strategy: | |
| matrix: | |
| python-version: ['3.12'] | |
| os: ['ubuntu-latest'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: "Cache conda" | |
| uses: actions/cache@v4 | |
| env: | |
| CACHE_NUMBER: 0 | |
| with: | |
| path: ~/conda_pkgs_dir | |
| key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('environment.yml') }} | |
| - name: "Set up Conda" | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| miniforge-variant: Mambaforge | |
| miniforge-version: latest | |
| auto-activate-base: true | |
| python-version: ${{ matrix.python-version }} | |
| activate-environment: pysr-test | |
| environment-file: environment.yml | |
| - name: "Cache Julia" | |
| uses: julia-actions/cache@v2 | |
| with: | |
| cache-name: ${{ matrix.os }}-conda-${{ matrix.python-version }} | |
| cache-packages: false | |
| - name: "Install PySR" | |
| run: | | |
| python3 -m pip install . | |
| python3 -c 'import pysr' | |
| - name: "Run tests" | |
| run: cd /tmp && python -m pysr test main | |
| coveralls: | |
| name: Indicate completion to coveralls.io | |
| needs: | |
| - test | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash -l {0} | |
| container: python:3-slim | |
| steps: | |
| - name: Finished | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| pip install coveralls | |
| coveralls --finish | |
| types: | |
| name: Check types | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash -l {0} | |
| strategy: | |
| matrix: | |
| python-version: | |
| - '3.12' | |
| - '3.8' | |
| os: ['ubuntu-latest'] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: "Set up Python" | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: "Install PySR and all dependencies" | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install . | |
| pip install mypy | |
| - name: "Install additional dependencies" | |
| run: python -m pip install jax jaxlib torch | |
| if: ${{ matrix.python-version != '3.8' }} | |
| - name: "Run mypy" | |
| run: python -m mypy --install-types --non-interactive pysr | |
| if: ${{ matrix.python-version != '3.8' }} | |
| - name: "Run compatible mypy" | |
| run: python -m mypy --ignore-missing-imports pysr | |
| if: ${{ matrix.python-version == '3.8' }} | |