Spaces:
Sleeping
Sleeping
Commit
•
a90c881
1
Parent(s):
acee094
Refactor update_backend.yml workflow (#562)
Browse files* Moves backend update code to python script
* Account for move from pysr/version.py to pyproject.toml
* Remove need for installing pysr during backend update
---------
Co-authored-by: MilesCranmer <[email protected]>
.github/workflows/update_backend.yml
CHANGED
@@ -10,16 +10,13 @@ jobs:
|
|
10 |
- uses: actions/checkout@v4
|
11 |
- uses: actions/setup-python@v5
|
12 |
with:
|
13 |
-
python-version: 3.
|
14 |
cache: pip
|
15 |
|
16 |
-
- name: "Install
|
17 |
run: |
|
18 |
python -m pip install --upgrade pip
|
19 |
-
pip install
|
20 |
-
python setup.py install
|
21 |
-
# Not needed:
|
22 |
-
# python -c 'import pysr; pysr.install()'
|
23 |
|
24 |
- name: "Get SymbolicRegression.jl latest version"
|
25 |
id: get-latest
|
@@ -27,32 +24,20 @@ jobs:
|
|
27 |
cd $(mktemp -d)
|
28 |
git clone https://github.com/MilesCranmer/SymbolicRegression.jl
|
29 |
cd SymbolicRegression.jl
|
30 |
-
echo "version=$(git describe --tags --abbrev=0 | sed 's/^v//')" >> $GITHUB_OUTPUT
|
31 |
|
32 |
-
- name: "
|
33 |
-
id: get-current
|
34 |
run: |
|
35 |
-
|
36 |
|
37 |
-
|
38 |
-
# create a new branch called "update_compat_{...}", where the "..."
|
39 |
-
# is a timestamp. We then want to
|
40 |
-
# go to pysr/version.py, bump the patch version of PySR (__version__),
|
41 |
-
# set the version of __symbolic_regression_jl_version__ to the latest
|
42 |
-
# version of SymbolicRegression.jl, and then commit and push.
|
43 |
-
# Finally, we will open a PR from this branch to master.
|
44 |
-
- name: "Update versions"
|
45 |
-
if: ${{ steps.get-latest.outputs.version != steps.get-current.outputs.version }}
|
46 |
run: |
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
|
52 |
-
|
53 |
-
sed -i "s/^__symbolic_regression_jl_version__ = .*/__symbolic_regression_jl_version__ = \"${{ steps.get-latest.outputs.version }}\"/" pysr/version.py
|
54 |
-
|
55 |
-
- name: "Create PR"
|
56 |
uses: peter-evans/create-pull-request@v6
|
57 |
with:
|
58 |
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
@@ -63,4 +48,6 @@ jobs:
|
|
63 |
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 }}).
|
64 |
delete-branch: true
|
65 |
commit-message: "Update backend version to v${{ steps.get-latest.outputs.version }}"
|
66 |
-
add-paths:
|
|
|
|
|
|
10 |
- uses: actions/checkout@v4
|
11 |
- uses: actions/setup-python@v5
|
12 |
with:
|
13 |
+
python-version: 3.12
|
14 |
cache: pip
|
15 |
|
16 |
+
- name: "Install dependencies"
|
17 |
run: |
|
18 |
python -m pip install --upgrade pip
|
19 |
+
pip install tomlkit
|
|
|
|
|
|
|
20 |
|
21 |
- name: "Get SymbolicRegression.jl latest version"
|
22 |
id: get-latest
|
|
|
24 |
cd $(mktemp -d)
|
25 |
git clone https://github.com/MilesCranmer/SymbolicRegression.jl
|
26 |
cd SymbolicRegression.jl
|
27 |
+
echo "version=$(git describe --tags --match='v*' --abbrev=0 | sed 's/^v//')" >> $GITHUB_OUTPUT
|
28 |
|
29 |
+
- name: "Update SymbolicRegression.jl version in PySR"
|
|
|
30 |
run: |
|
31 |
+
python .github/workflows/update_backend_version.py ${{ steps.get-latest.outputs.version }}
|
32 |
|
33 |
+
- name: "Restore changes if no diff to `pysr/juliapkg.json`"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
run: |
|
35 |
+
if git diff --quiet pysr/juliapkg.json; then
|
36 |
+
echo "No changes to pysr/juliapkg.json. Restoring changes."
|
37 |
+
git restore pyproject.toml
|
38 |
+
fi
|
39 |
|
40 |
+
- name: "Create PR if necessary"
|
|
|
|
|
|
|
41 |
uses: peter-evans/create-pull-request@v6
|
42 |
with:
|
43 |
token: ${{ secrets.REPO_SCOPED_TOKEN }}
|
|
|
48 |
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 }}).
|
49 |
delete-branch: true
|
50 |
commit-message: "Update backend version to v${{ steps.get-latest.outputs.version }}"
|
51 |
+
add-paths: |
|
52 |
+
pyproject.toml
|
53 |
+
pysr/juliapkg.json
|
.github/workflows/update_backend_version.py
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import json
|
2 |
+
import sys
|
3 |
+
from pathlib import Path
|
4 |
+
|
5 |
+
import tomlkit
|
6 |
+
|
7 |
+
new_backend_version = sys.argv[1]
|
8 |
+
|
9 |
+
assert not new_backend_version.startswith("v"), "Version should not start with 'v'"
|
10 |
+
|
11 |
+
pyproject_toml = Path(__file__).parent / ".." / ".." / "pyproject.toml"
|
12 |
+
juliapkg_json = Path(__file__).parent / ".." / ".." / "pysr" / "juliapkg.json"
|
13 |
+
|
14 |
+
with open(pyproject_toml) as toml_file:
|
15 |
+
pyproject_data = tomlkit.parse(toml_file.read())
|
16 |
+
|
17 |
+
with open(juliapkg_json) as f:
|
18 |
+
juliapkg_data = json.load(f)
|
19 |
+
|
20 |
+
major, minor, patch, *dev = pyproject_data["project"]["version"].split(".")
|
21 |
+
pyproject_data["project"]["version"] = f"{major}.{minor}.{int(patch)+1}"
|
22 |
+
|
23 |
+
juliapkg_data["packages"]["SymbolicRegression"]["version"] = f"={new_backend_version}"
|
24 |
+
|
25 |
+
with open(pyproject_toml, "w") as toml_file:
|
26 |
+
toml_file.write(tomlkit.dumps(pyproject_data))
|
27 |
+
|
28 |
+
with open(juliapkg_json, "w") as f:
|
29 |
+
json.dump(juliapkg_data, f, indent=4)
|