Spaces:
Running
Running
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@v5 | |
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 | |