-
Notifications
You must be signed in to change notification settings - Fork 238
Python 3.9 #2741
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Python 3.9 #2741
Conversation
76fde71
to
d81a2c8
Compare
|
|
9d1377d
to
0a13902
Compare
0a13902 fixed the single remaining failing unit test. Rebased on the latest version on |
4381db7
to
f89c483
Compare
@jonwzheng I've rebased this onto RMG/main and the branch of RMS we are using onto RMS/for_rmg so let's see what happens |
TODO: update the docs to reference the new install_rms.sh script. The installation procedure for RMG was also changed so one no longer needs to modify any *PATH variables either |
Julia hanging during the RMS install seems like a known limitation: https://discourse.julialang.org/t/running-ci-for-julia-1-6-on-github-macos-runners-seems-to-fail/116577/4 So if it doesn't pass this time, we can probably just remove it. |
thanks for working on this Jackson. |
Oops I had the changes locally but forgot to push - they are up now in ec57780 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
first of all thanks for working on this huge upgrade! This is really great work.
In addition to the comments here, I wonder about our long-term strategy for getting RMS tests for M1 macOS. Our current workflow is blocked by Julia hanging w/ RMS install using the Github runners; maybe that's something we need RMS maintainers to prioritize if possible?
These squashed commits contain all of the initial efforts by HWP to switch from pythoncall to JuliaCall
These were the first commits to change to Python 3.9, and they do not work on their own but instead open the door to finding issues to make the rest of the changes
here are all the solutions that were implemented: - in a couple places we were implicitly casting a double to a numpy float, now need to explicitly grad the _real_ part of the double - Cython does not allow nested function declaration inside cpdef functions, move all of these outside of their parent functions or redefine them to be purely functional where practical - similar to the above, lambda function are no longer allowed - get the same treatment. what's different here is that usually we are using lambda in sorting calls, so we can replace these with operator.itemgetter or attrgetter, where relevant. this also involves re-writing a couple reduce calls, which also used lambda - modern cython does not allow re-declaring existing Cython variables (in previous versions this was a warning I think), so I just remove these where needed. (btw Cython is super cool, actually points out both of the declaration so that you can delete one) i made these fixes while listening to The Metal by Tenacious D, Talk Too Much by Renee Rapp, BEST INTEREST by Tyler, The Creator (love the bass line), mos thoser by food house, and Doritos & Fritos by 100 Gecs
as requested in: #2687 (comment)
These commits are the second (and final) round of attempting JuliaCall debugging by HWP
These commits reflect the initial effort by XD to re-implement the MILP for Clar optimization in SciPy. They were unsuccessful because at the time RMG could not actually run a required version of Python to install SciPy with MILP.
These commits rescued some abandoned work from another branch
Regression Testing Results/home/runner/work/_temp/f5e42a67-7c72-477a-8d0e-8362bc407555.sh: line 3: 12376 Segmentation fault (core dumped) python rmgpy/tools/regression.py test/regression/"$regr_test"/regression_input.py $REFERENCE/"$regr_test"/chemkin test/regression/"$regr_test"/chemkin Detailed regression test results.Regression test aromatics:Reference: Execution time (DD:HH:MM:SS): 00:00:01:06
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
aromatics Passed Core Comparison ✅Original model has 15 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
aromatics Passed Edge Comparison ✅Original model has 106 species. aromatics Failed Observable Testing ❌Regression test liquid_oxidation:Reference: Execution time (DD:HH:MM:SS): 00:00:02:20
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
liquid_oxidation Passed Core Comparison ✅Original model has 37 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
liquid_oxidation Passed Edge Comparison ✅Original model has 214 species. liquid_oxidation Failed Observable Testing ❌Regression test nitrogen:Reference: Execution time (DD:HH:MM:SS): 00:00:01:25
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
nitrogen Failed Core Comparison ❌Original model has 41 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
nitrogen Failed Edge Comparison ❌Original model has 133 species. Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(O2s-CdN3d) + group(N3d-OCd) + group(Cd-HN3dO) + ring(oxirene) + radical(CdJ-NdO) Non-identical kinetics! ❌
kinetics: nitrogen Failed Observable Testing ❌Regression test oxidation:Reference: Execution time (DD:HH:MM:SS): 00:00:02:26
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
oxidation Passed Core Comparison ✅Original model has 59 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
oxidation Passed Edge Comparison ✅Original model has 230 species. oxidation Failed Observable Testing ❌Regression test sulfur:Reference: Execution time (DD:HH:MM:SS): 00:00:00:54
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
sulfur Passed Core Comparison ✅Original model has 27 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
sulfur Failed Edge Comparison ❌Original model has 89 species. sulfur Failed Observable Testing ❌Regression test superminimal:Reference: Execution time (DD:HH:MM:SS): 00:00:00:38
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
superminimal Passed Core Comparison ✅Original model has 13 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
superminimal Failed Edge Comparison ❌Original model has 18 species. Non-identical thermo! ❌
Identical thermo comments: Regression test RMS_constantVIdealGasReactor_superminimal:Reference: Execution time (DD:HH:MM:SS): 00:00:02:22
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅Original model has 13 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅Original model has 13 species. RMS_constantVIdealGasReactor_superminimal Failed Observable Testing ❌Regression test RMS_CSTR_liquid_oxidation:Reference: Execution time (DD:HH:MM:SS): 00:00:06:12
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_CSTR_liquid_oxidation Failed Core Comparison ❌Original model has 37 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌Original model has 248 species. RMS_CSTR_liquid_oxidation Failed Observable Testing ❌Regression test fragment:Reference: Execution time (DD:HH:MM:SS): 00:00:00:43
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
fragment Passed Core Comparison ✅Original model has 10 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
fragment Passed Edge Comparison ✅Original model has 33 species. fragment Failed Observable Testing ❌Regression test RMS_constantVIdealGasReactor_fragment:Reference: Execution time (DD:HH:MM:SS): 00:00:03:06
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_fragment Failed Core Comparison ❌Original model has 10 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_fragment Failed Edge Comparison ❌Original model has 27 species. RMS_constantVIdealGasReactor_fragment Failed Observable Testing ❌Regression test minimal_surface:Reference: Execution time (DD:HH:MM:SS): 00:00:00:45
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
minimal_surface Passed Core Comparison ✅Original model has 11 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
minimal_surface Passed Edge Comparison ✅Original model has 38 species. minimal_surface Failed Observable Testing ❌beep boop this comment was written by a bot 🤖 |
One last (hopefully) hiccup - the regression test observables comparison seg faults with Julia installed but not otherwise. Going to diagnose locally. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for this work Jackson. Just a couple of very minor things (and also will await the seg fault hotfix before approving)
Dug this up with GDB for when the regression testing script for observables is called: Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007ffecbbf8b25 in Cantera::CVodesIntegrator::setTolerances(double, unsigned long, double*) ()
from /home/jackson/miniconda3/envs/rmg_env/lib/python3.9/site-packages/cantera/../../../libcantera.so.2 probably correlated with this error also in the job logs, which may be accounting for the reduced number of species found by RMS: 2025-04-14T01:20:18.6394596Z Making seed mechanism...
2025-04-14T01:20:18.6422368Z Conducting simulation of reaction system 1...
2025-04-14T01:21:21.6367141Z
2025-04-14T01:21:21.6367540Z [CVSLS ERROR] CVodeSetLinearSolver
2025-04-14T01:21:21.6367994Z LS must be non-NULL
2025-04-14T01:21:21.6368199Z
2025-04-14T01:21:21.6368221Z
2025-04-14T01:21:21.6374300Z [CVSLS ERROR] CVodeSetJacFn
2025-04-14T01:21:21.6374652Z Linear solver memory is NULL.
2025-04-14T01:21:21.6374868Z
2025-04-14T01:21:27.8278294Z
2025-04-14T01:21:27.8278826Z [CVODE ERROR] cvNlsInit
2025-04-14T01:21:27.8279349Z Setting linear solver solve function failed
2025-04-14T01:21:27.8279715Z
2025-04-14T01:21:27.8279721Z
2025-04-14T01:21:27.8279887Z [CVODES ERROR] cvInitialSetup
2025-04-14T01:21:27.8280349Z The nonlinear solver's init routine failed. |
Looks like Julia might be changing the installed/used version of Sundials/CVODE and causing Cantera to segfault? |
ChatGPT agrees with the above and points out that it is also possible that Julia is setting |
Regression Testing Results/home/runner/work/_temp/1ad778ff-01a8-4be1-9165-a7310def6f9c.sh: line 3: 12499 Segmentation fault (core dumped) python rmgpy/tools/regression.py test/regression/"$regr_test"/regression_input.py $REFERENCE/"$regr_test"/chemkin test/regression/"$regr_test"/chemkin Detailed regression test results.Regression test aromatics:Reference: Execution time (DD:HH:MM:SS): 00:00:01:07
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
aromatics Passed Core Comparison ✅Original model has 15 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
aromatics Failed Edge Comparison ❌Original model has 106 species. Non-identical thermo! ❌
Identical thermo comments: aromatics Failed Observable Testing ❌Regression test liquid_oxidation:Reference: Execution time (DD:HH:MM:SS): 00:00:02:20
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
liquid_oxidation Passed Core Comparison ✅Original model has 37 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
liquid_oxidation Passed Edge Comparison ✅Original model has 214 species. liquid_oxidation Failed Observable Testing ❌Regression test nitrogen:Reference: Execution time (DD:HH:MM:SS): 00:00:01:28
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
nitrogen Passed Core Comparison ✅Original model has 41 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
nitrogen Passed Edge Comparison ✅Original model has 133 species. nitrogen Failed Observable Testing ❌Regression test oxidation:Reference: Execution time (DD:HH:MM:SS): 00:00:02:27
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
oxidation Passed Core Comparison ✅Original model has 59 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
oxidation Passed Edge Comparison ✅Original model has 230 species. oxidation Failed Observable Testing ❌Regression test sulfur:Reference: Execution time (DD:HH:MM:SS): 00:00:00:55
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
sulfur Passed Core Comparison ✅Original model has 27 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
sulfur Failed Edge Comparison ❌Original model has 89 species. sulfur Failed Observable Testing ❌Regression test superminimal:Reference: Execution time (DD:HH:MM:SS): 00:00:00:38
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
superminimal Passed Core Comparison ✅Original model has 13 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
superminimal Failed Edge Comparison ❌Original model has 18 species. Non-identical thermo! ❌
Identical thermo comments: Regression test RMS_constantVIdealGasReactor_superminimal:Reference: Execution time (DD:HH:MM:SS): 00:00:02:24
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅Original model has 13 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅Original model has 13 species. RMS_constantVIdealGasReactor_superminimal Failed Observable Testing ❌Regression test RMS_CSTR_liquid_oxidation:Reference: Execution time (DD:HH:MM:SS): 00:00:06:15
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_CSTR_liquid_oxidation Failed Core Comparison ❌Original model has 37 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌Original model has 248 species. RMS_CSTR_liquid_oxidation Failed Observable Testing ❌Regression test fragment:Reference: Execution time (DD:HH:MM:SS): 00:00:00:41
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
fragment Passed Core Comparison ✅Original model has 10 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
fragment Passed Edge Comparison ✅Original model has 33 species. fragment Failed Observable Testing ❌Regression test RMS_constantVIdealGasReactor_fragment:Reference: Execution time (DD:HH:MM:SS): 00:00:03:06
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_fragment Failed Core Comparison ❌Original model has 10 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
RMS_constantVIdealGasReactor_fragment Failed Edge Comparison ❌Original model has 27 species. RMS_constantVIdealGasReactor_fragment Failed Observable Testing ❌Regression test minimal_surface:Reference: Execution time (DD:HH:MM:SS): 00:00:00:45
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
minimal_surface Passed Core Comparison ✅Original model has 11 species.
Detected IPython. Loading juliacall extension. See https://juliapy.github.io/PythonCall.jl/stable/compat/#IPython
minimal_surface Passed Edge Comparison ✅Original model has 38 species. minimal_surface Failed Observable Testing ❌beep boop this comment was written by a bot 🤖 |
Well @jonwzheng this seg fault error is hard to pin down. Going to just try and bump the Julia version... would appreciate any input you have on this as well! |
honestly just kinda out of ideas at this point
37145fe
to
1076ece
Compare
Incrementing Julia to 1.9 gave a slightly more actionable error (Enzyme.jl doesn't precompile because of an error in GPUCompiler.jl) so I'm going to try setting it down to 1.10 now. |
Guess it's time for me to upgrade my laptop? 👨💻 I think the segfault is indeed quite likely different CVODEs libraries conflicting. Wondering if @ssun30 has any tricks up his sleeve, having worked with both Cantera and RMS. |
@rwest @ssun30 from the installation instruction on Sundials it looks like we can tell it not to re-download CVODES by doing something like this: https://github.com/tshort/Sundials.jl/blob/master/README.md#installation |
…ials library This is an educated guess at implementing: #2741 (comment)
Co-authored-by: Jonathan Zheng <jonzheng@mit.edu>
@rwest I'll clarify that it doesn't work on intel mac runners - I believe it should still work on intel mac locally, it's just that the runners aren't up to it. @ssun30 I've taken an initial pass at trying to 'protect' the pre-installed libs from Julia. Now, in the |
#. Install and Link Julia dependencies: :: | ||
|
||
julia -e 'using Pkg; Pkg.add("PyCall");Pkg.build("PyCall");Pkg.add(PackageSpec(name="ReactionMechanismSimulator",rev="for_rmg")); using ReactionMechanismSimulator;' | ||
#. **Optional (Recommended)**: Install and Link Julia dependencies using ``install_rms.sh``. Ensure that you have modified your environment variables as described above, and then run the following: :: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As written I think it's important to do the step of adding RMG-Py to the $PATH, which was marked as Optional above, with the note "to launch rmg.py
from any folder.". That's a bit confusing. I imagine many people would skip the apparently-optional step, thinking they don't want to run rmg.py from anywhere.
@jonwzheng e675447 implements the attempt at setting the sundials .so path correctly that we discussed in person |
.github/workflows/CI.yml
Outdated
runs-on: ${{ matrix.os }} | ||
name: Python ${{ matrix.python-version }} ${{ matrix.os }} Build and Test ${{ matrix.include-rms }} | ||
# skip scheduled runs from forks | ||
if: ${{ !( github.repository != 'ReactionMechanismGenerator/RMG-Py' && github.event_name == 'schedule' ) }} | ||
defaults: | ||
run: | ||
shell: bash -l {0} | ||
steps: | ||
- name: Checkout RMG-Py | ||
uses: actions/checkout@v4 | ||
|
||
# Step to create a custom condarc.yml before setting up conda | ||
- name: Create custom conda config file | ||
run: | | ||
RUNNER_CWD=$(pwd) | ||
echo "channels:" > $RUNNER_CWD/condarc.yml | ||
echo " - conda-forge" >> $RUNNER_CWD/condarc.yml | ||
echo " - rmg" >> $RUNNER_CWD/condarc.yml | ||
echo " - cantera" >> $RUNNER_CWD/condarc.yml | ||
echo "show_channel_urls: true" >> $RUNNER_CWD/condarc.yml | ||
|
||
# configures the mamba environment manager and builds the environment | ||
- name: Setup Miniforge Python 3.7 | ||
- name: Setup Miniforge Python ${{ matrix.python-version }} | ||
uses: conda-incubator/setup-miniconda@v3 | ||
with: | ||
environment-file: environment.yml | ||
miniforge-variant: Miniforge3 | ||
miniforge-version: latest | ||
python-version: 3.7 | ||
condarc-file: condarc.yml | ||
python-version: ${{ matrix.python-version }} | ||
activate-environment: rmg_env | ||
use-mamba: true | ||
auto-update-conda: true | ||
show-channel-urls: true | ||
conda-remove-defaults: "true" | ||
|
||
# list the environment for debugging purposes | ||
- name: mamba info | ||
- name: conda info | ||
run: | | ||
mamba info | ||
mamba list | ||
conda info | ||
conda list | ||
|
||
# Clone RMG-database | ||
- name: Clone RMG-database | ||
run: | | ||
cd .. | ||
git clone -b $RMG_DATABASE_BRANCH https://github.com/ReactionMechanismGenerator/RMG-database.git | ||
|
||
# modify env variables as directed in the RMG installation instructions | ||
- name: Set Environment Variables | ||
# RMG build step | ||
- run: make install | ||
|
||
- name: Setup Juliaup | ||
if: matrix.include-rms == 'with RMS' | ||
uses: julia-actions/install-juliaup@v2 | ||
with: | ||
channel: '1.10' | ||
|
||
- name: Set some env vars | ||
if: matrix.include-rms == 'with RMS' | ||
run: | | ||
RUNNER_CWD=$(pwd) | ||
echo "PYTHONPATH=$RUNNER_CWD/RMG-Py:$PYTHONPATH" >> $GITHUB_ENV | ||
echo "$RUNNER_CWD/RMG-Py" >> $GITHUB_PATH | ||
# https://juliapy.github.io/PythonCall.jl/stable/pythoncall/#If-you-already-have-Python-and-required-Python-packages-installed | ||
echo "JULIA_CONDAPKG_BACKEND=Null" >> $GITHUB_ENV | ||
echo "JULIA_PYTHONCALL_EXE=$CONDA_PREFIX/bin/python" >> $GITHUB_ENV | ||
|
||
# RMG build step | ||
- name: make RMG | ||
# RMS installation and linking to Julia | ||
- name: Install and link Julia dependencies | ||
if: matrix.include-rms == 'with RMS' | ||
timeout-minutes: 120 # this usually takes 20-45 minutes (or hangs for 6+ hours). | ||
run: . install_rms.sh | ||
|
||
- name: Set some other env vars | ||
if: matrix.include-rms == 'with RMS' | ||
run: | | ||
make clean | ||
make | ||
# ensure that juliacall in Python uses the correct julia executable and packages: https://github.com/JuliaPy/PyJuliaPkg?tab=readme-ov-file#which-julia-gets-used | ||
echo "PYTHON_JULIAPKG_EXE=$(which julia)" >> $GITHUB_ENV | ||
echo "PYTHON_JULIAPKG_PROJECT=$HOME/.julia/packages" >> $GITHUB_ENV | ||
|
||
build-and-test-linux: | ||
- name: Install Q2DTor | ||
run: echo "" | make q2dtor | ||
|
||
# non-regression testing | ||
- name: Run Unit, Functional, and Database Tests | ||
run: make test-all | ||
|
||
regression-test: |
Check warning
Code scanning / CodeQL
Workflow does not contain permissions Medium
An update: I confirmed locally that the sundials binaries are definitely at the indicated location, so A new error has also come up - for some reason, Julia re-precompiles RMS every time it is called. This drops a few thousand lines of output into the regression test output and breaks the bot that comments regression test results. Current plan is to make a separate conda environment that has RMS in it and use that just for executing the regression tests. |
Upgrading RMG-Py to Python 3.9
The current version of Python used by RMG (3.7) is deprecated, so we are missing out on the latest updates to our various dependencies. This PR upgrade RMG to use Python 3.9 by doing the following:
lpsolve
is removed and replaced withscipy
's Linear Programming Solver (credit @xiaoruiDong and @JacksonBurns) becauselpsolve
doesn't support 3.9+ (no builds exist, and we can't get our build to work). Ported from Reimplement Clar Optimization with Scipy MILP #2623julia
overhaul, see below.Getting this merged
One feature that remains to be implemented and will have to be figured out in a separate PR into this one is the new
juliaup
+juliacall
setup implemented by @hwpang. It will be much better, but there are currently some bugs preventing it from working (at all), primarily related to the installedjulia
executable being able to 'see' the Python environment and its installed dependencies.After that, this should be good to merge. RMG-Py will be appreciably faster, easier to extend, and less buggy.