ReactionMechanismGenerator / RMG-Py

Python version of the amazing Reaction Mechanism Generator (RMG).
http://reactionmechanismgenerator.github.io/RMG-Py/
Other
400 stars 228 forks source link

Upgrading to Python 3.11 #2635

Closed JacksonBurns closed 5 months ago

JacksonBurns commented 8 months ago

This PR will (eventually) move RMG from Python 3.7 to 3.11/2. Python 3.7 is deprecated, which reason enough on its own to move, but doing so will also unblock a number of other improvements.

Opening this now to track the progress of the change and so that I can use the CI to test what packages need to be rebuilt, etc. Will edit this description and clean up the git history when things actually stand a chance of working.

github-actions[bot] commented 5 months ago

This pull request is being automatically marked as stale because it has not received any interaction in the last 90 days. Please leave a comment if this is still a relevant pull request, otherwise it will automatically be closed in 30 days.

rwest commented 5 months ago

I just rebased this, to see what would happen. It sounds like getting past Python 3.7 is needed for https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2640 etc.

JacksonBurns commented 5 months ago

Thanks!

Currently the runners are not providing any useful info, I think because conda cannot immediately solve the environment, so it attempts to go through its diagnostics and figure out why to suggest fixes, and that takes too long since the fixes are super complex.

Manually checking makes me think that we will definitely need to deal with these:

rwest commented 5 months ago

2640 removes pyrms and diffeqpy, and I see a main reason for getting to a newer python is to enable #2640.

That leaves PyDAS, PyDQED, and Symmetry? For the latter, how far did you get with #2461 ? I notice you found someone maintaining a newer version or something? is it the same?

JacksonBurns commented 5 months ago

I fixed our existing recipe for symmetry on https://github.com/ReactionMechanismGenerator/conda-recipes/pull/18 but forgot about this more updated version - do we want to stick with the existing or try the new one?

rwest commented 5 months ago

If you got ours working again then maybe we change one thing at a time, and stick with it for now? If someone wants to look into why the other might be better, that's great, but IMHO should not impede other progress or become a pre-requisite to things.

rwest commented 5 months ago

Try relaxing Cantera to >=2.6 ?

JacksonBurns commented 5 months ago

Cantera 2.6 actually does have a python 3.11 build: linux-aarch64/libcantera-2.6.0-py311h4136c43_5.tar.bz2

So I think that one is ok

You were right @rwest this was part of the issue!

JacksonBurns commented 5 months ago

A manual scroll through the anaconda repo list shows that a ton of packages are missing 3.12, so we can go ahead and give up on that for now...

JacksonBurns commented 5 months ago

The good news is that the solver finally spat out something useful, in this case the following conflicts for the 3.11 environment on linux without our packages:

  The following packages are incompatible
  ├─ cantera 2.6*  is installable with the potential options
  │  ├─ cantera 2.6.0 would require
  │  │  └─ python >=3.10,<3.11.0a0  with the potential options
  │  │     ├─ python [3.10.0|3.10.3|3.10.4|3.10.6|3.10.8] would require
  │  │     │  └─ libuuid >=1.0.3,<2.0a0 , which can be installed;
  │  │     ├─ python [3.10.10|3.10.11|...|3.10.9] would require
  │  │     │  └─ libuuid >=1.41.5,<2.0a0 , which can be installed;
  │  │     ├─ python [3.10.0|3.10.1|...|3.10.9], which can be installed;
  │  │     ├─ python 3.10.2 would require
  │  │     │  └─ ncurses >=6.2,<6.3.0a0 , which can be installed;
  │  │     └─ python [3.10.11|3.10.12|...|3.9.19] would require
  │  │        └─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
  │  ├─ cantera 2.6.0 would require
  │  │  └─ python >=3.7,<3.8.0a0 , which can be installed;
  │  ├─ cantera 2.6.0 would require
  │  │  └─ python >=3.8,<3.9.0a0  with the potential options
  │  │     ├─ python [3.10.11|3.10.12|...|3.9.19], which cannot be installed (as previously explained);
  │  │     └─ python [3.8.0|3.8.1|...|3.8.8], which can be installed;
  │  └─ cantera 2.6.0 would require
  │     └─ python >=3.9,<3.10.0a0  with the potential options
  │        ├─ python [3.10.11|3.10.12|...|3.9.19], which cannot be installed (as previously explained);
  │        └─ python [3.9.0|3.9.1|...|3.9.9], which can be installed;
  ├─ ncurses is installable with the potential options
  │  ├─ ncurses 6.3 conflicts with any installable versions previously reported;
  │  ├─ ncurses 6.4 conflicts with any installable versions previously reported;
  │  ├─ ncurses [6.4.20240210|6.5] conflicts with any installable versions previously reported;
  │  ├─ ncurses [5.9|6.1], which can be installed;
  │  └─ ncurses 6.2, which can be installed;
  └─ python 3.11.*,3.11.*  is not installable because there are no viable options
     ├─ python 3.11.0 would require
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python 3.11.0 would require
     │  ├─ libuuid >=1.41.5,<2.0a0 , which can be installed;
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python [3.11.0|3.11.2|...|3.11.9] would require
     │  ├─ libuuid >=1.41.5,<2.0a0 , which can be installed;
     │  └─ ncurses >=6.4,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python 3.11.0 would require
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python [3.11.1|3.11.2|3.11.3] would require
     │  ├─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python [3.11.4|3.11.5|3.11.6|3.11.7|3.11.8] would require
     │  ├─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
     │  └─ ncurses >=6.4,<7.0a0 , which conflicts with any installable versions previously reported;
     └─ python 3.11.9 would require
        ├─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
        └─ ncurses >=6.4.20240210,<7.0a0 , which conflicts with any installable versions previously reported.

  LibMambaUnsatisfiableError: Encountered problems while solving:
    - package cantera-2.6.0-py310h6cd0baa_0 requires python >=3.10,<3.11.0a0, but none of the providers can be installed

  Could not solve for environment specs
  The following packages are incompatible
  ├─ cantera 2.6*  is installable with the potential options
  │  ├─ cantera 2.6.0 would require
  │  │  └─ python >=3.10,<3.11.0a0  with the potential options
  │  │     ├─ python [3.10.0|3.10.3|3.10.4|3.10.6|3.10.8] would require
  │  │     │  └─ libuuid >=1.0.3,<2.0a0 , which can be installed;
  │  │     ├─ python [3.10.10|3.10.11|...|3.10.9] would require
  │  │     │  └─ libuuid >=1.41.5,<2.0a0 , which can be installed;
  │  │     ├─ python [3.10.0|3.10.1|...|3.10.9], which can be installed;
  │  │     ├─ python 3.10.2 would require
  │  │     │  └─ ncurses >=6.2,<6.3.0a0 , which can be installed;
  │  │     └─ python [3.10.11|3.10.12|...|3.9.19] would require
  │  │        └─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
  │  ├─ cantera 2.6.0 would require
  │  │  └─ python >=3.7,<3.8.0a0 , which can be installed;
  │  ├─ cantera 2.6.0 would require
  │  │  └─ python >=3.8,<3.9.0a0  with the potential options
  │  │     ├─ python [3.10.11|3.10.12|...|3.9.19], which cannot be installed (as previously explained);
  │  │     └─ python [3.8.0|3.8.1|...|3.8.8], which can be installed;
  │  └─ cantera 2.6.0 would require
  │     └─ python >=3.9,<3.10.0a0  with the potential options
  │        ├─ python [3.10.11|3.10.12|...|3.9.19], which cannot be installed (as previously explained);
  │        └─ python [3.9.0|3.9.1|...|3.9.9], which can be installed;
  ├─ ncurses is installable with the potential options
  │  ├─ ncurses 6.3 conflicts with any installable versions previously reported;
  │  ├─ ncurses 6.4 conflicts with any installable versions previously reported;
  │  ├─ ncurses [6.4.20240210|6.5] conflicts with any installable versions previously reported;
  │  ├─ ncurses [5.9|6.1], which can be installed;
  │  └─ ncurses 6.2, which can be installed;
  └─ python 3.11.*,3.11.*  is not installable because there are no viable options
     ├─ python 3.11.0 would require
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python 3.11.0 would require
     │  ├─ libuuid >=1.41.5,<2.0a0 , which can be installed;
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python [3.11.0|3.11.2|...|3.11.9] would require
     │  ├─ libuuid >=1.41.5,<2.0a0 , which can be installed;
     │  └─ ncurses >=6.4,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python 3.11.0 would require
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python [3.11.1|3.11.2|3.11.3] would require
     │  ├─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
     │  └─ ncurses >=6.3,<7.0a0 , which conflicts with any installable versions previously reported;
     ├─ python [3.11.4|3.11.5|3.11.6|3.11.7|3.11.8] would require
     │  ├─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
     │  └─ ncurses >=6.4,<7.0a0 , which conflicts with any installable versions previously reported;
     └─ python 3.11.9 would require
        ├─ libuuid >=2.38.1,<3.0a0 , which conflicts with any installable versions previously reported;
JacksonBurns commented 5 months ago

Ok so the new problem is muq. It requires an absurdly specific version of the boost library (boost-cpp >=1.72.0,<1.72.1.0a0) which is totally incompatible with rdkit (or at least, the version which we have specified in our environment file which @xiaoruiDong and I discovered to be less buggy than previous versions in #2553), which only restricts to minor versions rather than patches but hasn't supported 1.72 for a long time.

I'm going to comment out muq for the time being. We do actually say that is is optional... https://github.com/ReactionMechanismGenerator/RMG-Py/blob/36bceb35bc6b0d58beb2f2fa53faa12cf35c7034/documentation/source/users/rmg/installation/dependencies.rst?plain=1#L33 Might need to require people to build it themselves...

JacksonBurns commented 5 months ago

Latest problems:

JacksonBurns commented 5 months ago

I've started an issue on the conda feedstock for rdl asking to support the latest versions of Python: https://github.com/conda-forge/ringdecomposerlib-feedstock/issues/3

JacksonBurns commented 5 months ago

Current Status

This has turned out to be a huge pain:

(and we still need to rebuild a number of our deps on the rmg channel for Python 3.11)

Where to go from here... suggestions @rwest?

rwest commented 5 months ago

I think the only thing to do is tick things off one at a time so we can move forward? (The only alternative is never upgrade anything?). Maybe update the top summary of this PR with a checklist to track what's needed.

I thought you'd dealt with muq in https://github.com/ReactionMechanismGenerator/RMG-Py/issues/2678 ? is the RDKit problem new?

What are the Cantera 3.0 issues? Maybe they should be listed in a separate issue or PR stub. (One is https://github.com/ReactionMechanismGenerator/RMG-Py/issues/2676)

JacksonBurns commented 5 months ago

I think the Cantera and Cython problems are tick-off-able, just a matter of sitting in front of the unit tests and fixing individual lines until it all passes. The others are more difficult, and not under our control:

I don't know the full scope of the Cantera issue, but that issue you opened is a good example. The function we use for testing will no longer exist, and need to be updated to the new syntax. The rest will become clear when the unit tests are finally run on Python 3.11

rwest commented 5 months ago

I ran this experiment conda create --name rmgtest1 conda-forge::muq conda-forge::rdkit with promising output (on my intel mac):

conda create --name rmgtest1 conda-forge::muq conda-forge::rdkit 
Channels:
 - defaults
 - conda-forge
Platform: osx-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /Users/rwest/miniconda3/envs/rmgtest1

  added / updated specs:
    - conda-forge::muq
    - conda-forge::rdkit

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    boost-1.74.0               |  py310h509978a_5         320 KB  conda-forge
    bottleneck-1.4.0           |  py310hde789be_1         121 KB  conda-forge
    chardet-5.2.0              |  py310h2ec42d9_1         240 KB  conda-forge
    cmake-3.29.4               |       h1304840_0        16.6 MB  conda-forge
    contourpy-1.2.1            |  py310hb3b189b_0         228 KB  conda-forge
    fonttools-4.53.0           |  py310h936d840_0         2.1 MB  conda-forge
    gmp-6.3.0                  |       hf036a51_2         419 KB  conda-forge
    greenlet-3.0.3             |  py310h5daac23_0         195 KB  conda-forge
    kiwisolver-1.4.5           |  py310h88cfcbd_1          59 KB  conda-forge
    libcurl-8.8.0              |       hf9fcc65_0         377 KB  conda-forge
    llvm-openmp-18.1.8         |       h15ab845_0         294 KB  conda-forge
    matplotlib-base-3.8.4      |  py310hb47e01b_0         6.8 MB
    muq-0.4.2                  |  py310h357aa3a_1         4.3 MB  conda-forge
    nanoflann-1.3.1            |                0          18 KB  conda-forge
    numexpr-2.10.0             |  py310hbf2a7f0_0         125 KB  conda-forge
    numpy-1.26.4               |  py310hf6dca73_0          12 KB
    numpy-base-1.26.4          |  py310hd8f4981_0         6.7 MB
    openssl-3.3.1              |       h87427d6_1         2.4 MB  conda-forge
    pandas-2.2.2               |  py310h6d0c2b6_0        12.2 MB
    pillow-10.3.0              |  py310h6c40b1e_0         745 KB
    pip-24.0                   |  py310hecd8cb5_0         2.7 MB
    pycairo-1.25.0             |  py310h0b97775_1          99 KB  conda-forge
    pyparsing-3.0.9            |  py310hecd8cb5_0         151 KB
    python-3.10.14             |       h5ee71fb_1        13.2 MB
    python-dateutil-2.9.0post0 |  py310hecd8cb5_2         280 KB
    python_abi-3.10            |          2_cp310           4 KB  conda-forge
    pytz-2024.1                |  py310hecd8cb5_0         217 KB
    rdkit-2022.09.1            |  py310h5b22e64_0        37.9 MB  conda-forge
    reportlab-4.2.2            |  py310h936d840_0         2.3 MB  conda-forge
    setuptools-70.1.1          |     pyhd8ed1ab_0         485 KB  conda-forge
    sqlalchemy-2.0.31          |  py310h936d840_0         2.7 MB  conda-forge
    unicodedata2-15.1.0        |  py310h6c40b1e_0         517 KB
    wheel-0.43.0               |  py310hecd8cb5_0         109 KB
    ------------------------------------------------------------
                                           Total:       114.9 MB

The following NEW packages will be INSTALLED:

  blas               conda-forge/osx-64::blas-2.122-openblas 
  blas-devel         conda-forge/osx-64::blas-devel-3.9.0-22_osx64_openblas 
  boost              conda-forge/osx-64::boost-1.74.0-py310h509978a_5 
  boost-cpp          conda-forge/osx-64::boost-cpp-1.74.0-h8b082ac_8 
  bottleneck         conda-forge/osx-64::bottleneck-1.4.0-py310hde789be_1 
  brotli             conda-forge/osx-64::brotli-1.1.0-h0dc2134_1 
  brotli-bin         conda-forge/osx-64::brotli-bin-1.1.0-h0dc2134_1 
  bzip2              pkgs/main/osx-64::bzip2-1.0.8-h6c40b1e_6 
  c-ares             conda-forge/osx-64::c-ares-1.28.1-h10d778d_0 
  ca-certificates    conda-forge/osx-64::ca-certificates-2024.6.2-h8857fd0_0 
  cairo              pkgs/main/osx-64::cairo-1.16.0-h3ce6f7e_5 
  cctools_osx-64     conda-forge/osx-64::cctools_osx-64-973.0.1-hcc6d90d_13 
  chardet            conda-forge/osx-64::chardet-5.2.0-py310h2ec42d9_1 
  clang              pkgs/main/osx-64::clang-14.0.6-hecd8cb5_1 
  clang-14           pkgs/main/osx-64::clang-14-14.0.6-default_hd95374b_1 
  clang_osx-64       pkgs/main/osx-64::clang_osx-64-14.0.6-hb1e4b1b_0 
  clangxx            pkgs/main/osx-64::clangxx-14.0.6-default_hd95374b_1 
  clangxx_osx-64     pkgs/main/osx-64::clangxx_osx-64-14.0.6-hd8b9576_0 
  cmake              conda-forge/osx-64::cmake-3.29.4-h1304840_0 
  compiler-rt        pkgs/main/osx-64::compiler-rt-14.0.6-hda8b6b8_0 
  compiler-rt_osx-64 pkgs/main/osx-64::compiler-rt_osx-64-14.0.6-h8d5cb93_0 
  contourpy          conda-forge/osx-64::contourpy-1.2.1-py310hb3b189b_0 
  cycler             conda-forge/noarch::cycler-0.12.1-pyhd8ed1ab_0 
  eigen              pkgs/main/osx-64::eigen-3.4.0-ha357a0b_0 
  expat              pkgs/main/osx-64::expat-2.6.2-hcec6c5f_0 
  fontconfig         conda-forge/osx-64::fontconfig-2.14.2-h5bb23bf_0 
  fonttools          conda-forge/osx-64::fonttools-4.53.0-py310h936d840_0 
  freetype           pkgs/main/osx-64::freetype-2.12.1-hd8bbffd_0 
  freetype-py        conda-forge/noarch::freetype-py-2.3.0-pyhd8ed1ab_0 
  glib               conda-forge/osx-64::glib-2.80.2-h0f68cf7_0 
  glib-tools         conda-forge/osx-64::glib-tools-2.80.2-hc27840c_0 
  gmp                conda-forge/osx-64::gmp-6.3.0-hf036a51_2 
  greenlet           conda-forge/osx-64::greenlet-3.0.3-py310h5daac23_0 
  hdf5               conda-forge/osx-64::hdf5-1.12.2-nompi_h48135f9_101 
  icu                conda-forge/osx-64::icu-70.1-h96cf925_0 
  jpeg               pkgs/main/osx-64::jpeg-9e-h6c40b1e_1 
  kiwisolver         conda-forge/osx-64::kiwisolver-1.4.5-py310h88cfcbd_1 
  krb5               conda-forge/osx-64::krb5-1.21.2-hb884880_0 
  lcms2              conda-forge/osx-64::lcms2-2.15-h29502cd_0 
  ld64_osx-64        conda-forge/osx-64::ld64_osx-64-609-hfd63004_13 
  lerc               pkgs/main/osx-64::lerc-3.0-he9d5cce_0 
  libaec             conda-forge/osx-64::libaec-1.1.3-h73e2aa4_0 
  libblas            conda-forge/osx-64::libblas-3.9.0-22_osx64_openblas 
  libbrotlicommon    conda-forge/osx-64::libbrotlicommon-1.1.0-h0dc2134_1 
  libbrotlidec       conda-forge/osx-64::libbrotlidec-1.1.0-h0dc2134_1 
  libbrotlienc       conda-forge/osx-64::libbrotlienc-1.1.0-h0dc2134_1 
  libcblas           conda-forge/osx-64::libcblas-3.9.0-22_osx64_openblas 
  libclang-cpp14     pkgs/main/osx-64::libclang-cpp14-14.0.6-default_hd95374b_1 
  libcurl            conda-forge/osx-64::libcurl-8.8.0-hf9fcc65_0 
  libcxx             conda-forge/osx-64::libcxx-17.0.6-h88467a6_0 
  libdeflate         pkgs/main/osx-64::libdeflate-1.17-hb664fd8_1 
  libedit            pkgs/main/osx-64::libedit-3.1.20230828-h6c40b1e_0 
  libev              pkgs/main/osx-64::libev-4.33-h9ed2024_1 
  libexpat           conda-forge/osx-64::libexpat-2.6.2-h73e2aa4_0 
  libffi             pkgs/main/osx-64::libffi-3.4.4-hecd8cb5_1 
  libgfortran        conda-forge/osx-64::libgfortran-5.0.0-13_2_0_h97931a8_3 
  libgfortran5       conda-forge/osx-64::libgfortran5-13.2.0-h2873a65_3 
  libglib            conda-forge/osx-64::libglib-2.80.2-h0f68cf7_0 
  libiconv           conda-forge/osx-64::libiconv-1.17-hd75f5a5_2 
  libintl            conda-forge/osx-64::libintl-0.22.5-h5ff76d1_2 
  libintl-devel      conda-forge/osx-64::libintl-devel-0.22.5-h5ff76d1_2 
  liblapack          conda-forge/osx-64::liblapack-3.9.0-22_osx64_openblas 
  liblapacke         conda-forge/osx-64::liblapacke-3.9.0-22_osx64_openblas 
  libllvm14          pkgs/main/osx-64::libllvm14-14.0.6-h91fad77_3 
  libnghttp2         conda-forge/osx-64::libnghttp2-1.58.0-h64cf6d3_1 
  libopenblas        conda-forge/osx-64::libopenblas-0.3.27-openmp_hfef2a42_0 
  libpng             conda-forge/osx-64::libpng-1.6.43-h92b6c6a_0 
  libsqlite          conda-forge/osx-64::libsqlite-3.46.0-h1b8f9f3_0 
  libssh2            pkgs/main/osx-64::libssh2-1.11.0-hf20ceda_0 
  libtiff            pkgs/main/osx-64::libtiff-4.5.1-hcec6c5f_0 
  libuv              conda-forge/osx-64::libuv-1.48.0-h67532ce_0 
  libwebp-base       conda-forge/osx-64::libwebp-base-1.4.0-h10d778d_0 
  libzlib            conda-forge/osx-64::libzlib-1.2.13-h87427d6_6 
  llvm-openmp        conda-forge/osx-64::llvm-openmp-18.1.8-h15ab845_0 
  llvm-tools         pkgs/main/osx-64::llvm-tools-14.0.6-he0576d7_3 
  make               conda-forge/osx-64::make-4.3-h22f3db7_1 
  matplotlib-base    pkgs/main/osx-64::matplotlib-base-3.8.4-py310hb47e01b_0 
  metis              conda-forge/osx-64::metis-5.2.1-h10d778d_0 
  mpfr               conda-forge/osx-64::mpfr-4.2.1-h4f6b447_1 
  munkres            pkgs/main/noarch::munkres-1.1.4-py_0 
  muq                conda-forge/osx-64::muq-0.4.2-py310h357aa3a_1 
  nanoflann          conda-forge/osx-64::nanoflann-1.3.1-0 
  ncurses            conda-forge/osx-64::ncurses-6.5-h5846eda_0 
  nlopt              pkgs/main/osx-64::nlopt-2.7.1-hcec6c5f_0 
  numexpr            conda-forge/osx-64::numexpr-2.10.0-py310hbf2a7f0_0 
  numpy              pkgs/main/osx-64::numpy-1.26.4-py310hf6dca73_0 
  numpy-base         pkgs/main/osx-64::numpy-base-1.26.4-py310hd8f4981_0 
  openblas           conda-forge/osx-64::openblas-0.3.27-openmp_h6794695_0 
  openjpeg           conda-forge/osx-64::openjpeg-2.5.0-h13ac156_2 
  openssl            conda-forge/osx-64::openssl-3.3.1-h87427d6_1 
  packaging          conda-forge/noarch::packaging-24.1-pyhd8ed1ab_0 
  pandas             pkgs/main/osx-64::pandas-2.2.2-py310h6d0c2b6_0 
  pcre2              conda-forge/osx-64::pcre2-10.43-h0ad2156_0 
  pillow             pkgs/main/osx-64::pillow-10.3.0-py310h6c40b1e_0 
  pip                pkgs/main/osx-64::pip-24.0-py310hecd8cb5_0 
  pixman             conda-forge/osx-64::pixman-0.43.4-h73e2aa4_0 
  pycairo            conda-forge/osx-64::pycairo-1.25.0-py310h0b97775_1 
  pyparsing          pkgs/main/osx-64::pyparsing-3.0.9-py310hecd8cb5_0 
  python             pkgs/main/osx-64::python-3.10.14-h5ee71fb_1 
  python-dateutil    pkgs/main/osx-64::python-dateutil-2.9.0post0-py310hecd8cb5_2 
  python-tzdata      conda-forge/noarch::python-tzdata-2024.1-pyhd8ed1ab_0 
  python_abi         conda-forge/osx-64::python_abi-3.10-2_cp310 
  pytz               pkgs/main/osx-64::pytz-2024.1-py310hecd8cb5_0 
  rdkit              conda-forge/osx-64::rdkit-2022.09.1-py310h5b22e64_0 
  readline           pkgs/main/osx-64::readline-8.2-hca72f7f_0 
  reportlab          conda-forge/osx-64::reportlab-4.2.2-py310h936d840_0 
  rhash              conda-forge/osx-64::rhash-1.4.4-h0dc2134_0 
  rlpycairo          conda-forge/noarch::rlpycairo-0.2.0-pyhd8ed1ab_0 
  setuptools         conda-forge/noarch::setuptools-70.1.1-pyhd8ed1ab_0 
  sigtool            conda-forge/osx-64::sigtool-0.1.3-h88f4db0_0 
  six                pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1 
  sqlalchemy         conda-forge/osx-64::sqlalchemy-2.0.31-py310h936d840_0 
  sqlite             conda-forge/osx-64::sqlite-3.46.0-h28673e1_0 
  suitesparse        pkgs/main/osx-64::suitesparse-5.10.1-h577c77e_2 
  sundials           conda-forge/osx-64::sundials-5.8.0-h7ddfbfd_0 
  tapi               pkgs/main/osx-64::tapi-1100.0.11-h1527ee5_1 
  tbb                conda-forge/osx-64::tbb-2021.10.0-h1c7c39f_2 
  tk                 pkgs/main/osx-64::tk-8.6.14-h4d00af3_0 
  typing-extensions  conda-forge/noarch::typing-extensions-4.12.2-hd8ed1ab_0 
  typing_extensions  conda-forge/noarch::typing_extensions-4.12.2-pyha770c72_0 
  tzdata             pkgs/main/noarch::tzdata-2024a-h04d1e81_0 
  unicodedata2       pkgs/main/osx-64::unicodedata2-15.1.0-py310h6c40b1e_0 
  wheel              pkgs/main/osx-64::wheel-0.43.0-py310hecd8cb5_0 
  xz                 pkgs/main/osx-64::xz-5.4.6-h6c40b1e_1 
  zlib               conda-forge/osx-64::zlib-1.2.13-h87427d6_6 
  zstd               conda-forge/osx-64::zstd-1.5.6-h915ae27_0 

Proceed ([y]/n)? y

Downloading and Extracting Packages

Preparing transaction: done                                                                                                                                      
Verifying transaction: done                                                                                                                                      
Executing transaction: done        

It picked Python 3.10.14.

When I force it to use 3.11 with conda create --name rmgtest2 python=3.11 conda-forge::muq conda-forge::rdkit it can't solve the environment.

From the discussion in #2678 the muq developers are pretty responsive and, in the longer term, may help us by building binaries with boost libraries that are compatible with rdkit?

But in the short term, is using Python 3.10 a way out of this stalemate, breaking the 3.7 roadblock and getting us closer to #2640?

JacksonBurns commented 5 months ago

Great minds think alike, I was just running with locally with 3.8 and 3.9 and also getting promising results. 3.10 is much better though, that buys us a much longer window before it gets deprecated again.

Let's stick 3.10 into this PR and see where we get.

JacksonBurns commented 5 months ago

Actually on second thought, I am going to move this to a new PR so that the branch name will make sense and target python 3.9 instead, only because ringdecomposerlib-python only supports up to 3.9 ATM.