name: PySR backend update on: schedule: - cron: '00 00 * * *' workflow_dispatch: jobs: update_compat: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.9 cache: pip - name: "Install PySR" run: | python -m pip install --upgrade pip pip install -r requirements.txt python setup.py install # Not needed: # python -c 'import pysr; pysr.install()' - name: "Get SymbolicRegression.jl latest version" id: get-latest run: | cd $(mktemp -d) git clone https://github.com/MilesCranmer/SymbolicRegression.jl cd SymbolicRegression.jl echo "version=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $GITHUB_OUTPUT - name: "Get SymbolicRegression.jl version used in PySR" id: get-current run: | echo "version=$(python -c 'import pysr; print(pysr.version.__symbolic_regression_jl_version__)' 2>/dev/null)" >> $GITHUB_OUTPUT # If versions are different, we want to take our checked-out version, # create a new branch called "update_compat_{...}", where the "..." # is a timestamp. We then want to # go to pysr/version.py, bump the patch version of PySR (__version__), # set the version of __symbolic_regression_jl_version__ to the latest # version of SymbolicRegression.jl, and then commit and push. # Finally, we will open a PR from this branch to master. - name: "Update versions" if: ${{ steps.get-latest.outputs.version != steps.get-current.outputs.version }} run: | # Bump PySR patch number: CURRENT_PYSR_PATCH_VERSION=$(python -c 'import pysr; print(pysr.version.__version__.split(".")[-1], end="")' 2>/dev/null) NEW_PYSR_PATCH_VERSION=$((CURRENT_PYSR_PATCH_VERSION + 1)) sed -i "s/^__version__ = .*/__version__ = \"$(python -c 'import pysr; print(".".join(pysr.version.__version__.split(".")[:-1]), end="")' 2>/dev/null).${NEW_PYSR_PATCH_VERSION}\"/" pysr/version.py # Set SymbolicRegression.jl version: sed -i "s/^__symbolic_regression_jl_version__ = .*/__symbolic_regression_jl_version__ = \"${{ steps.get-latest.outputs.version }}\"/" pysr/version.py - name: "Create PR" uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.REPO_SCOPED_TOKEN }} title: "Automated update to backend: v${{ steps.get-latest.outputs.version }}" body: | This PR was automatically generated by the GitHub Action `.github/workflows/update-backend.yml` It updates the backend version to v${{ steps.get-latest.outputs.version }}. For a full description of the changes, see the backend changelog: [v${{ steps.get-latest.outputs.version }}](https://github.com/MilesCranmer/SymbolicRegression.jl/releases/tag/v${{ steps.get-latest.outputs.version }}). delete-branch: true commit-message: "Update backend version to v${{ steps.get-latest.outputs.version }}" add-paths: pysr/version.py