Skip to content

wheel: Bump to C++20 std in CMake config#2082

Open
bryanwweber wants to merge 1 commit intoCantera:mainfrom
bryanwweber:bryan-pypi-package-update
Open

wheel: Bump to C++20 std in CMake config#2082
bryanwweber wants to merge 1 commit intoCantera:mainfrom
bryanwweber:bryan-pypi-package-update

Conversation

@bryanwweber
Copy link
Member

@bryanwweber bryanwweber commented Feb 2, 2026

Changes proposed in this pull request

  • Bump to C++20 in the CMake config for the wheel

The job showing this change is sufficient is here in the PyPI packages repo.

AI Statement (required)

  • No generative AI was used. This contribution was written entirely without AI
    assistance.

Checklist

  • The pull request includes a clear description of this code change
  • Commit messages have short titles and reference relevant issues
  • Build passes (scons build & scons test) and unit tests address code coverage
  • Style & formatting of contributed code follows contributing guidelines
  • AI Statement is included
  • The pull request is ready for review

@bryanwweber bryanwweber self-assigned this Feb 2, 2026
@bryanwweber bryanwweber marked this pull request as draft February 2, 2026 20:44
@bryanwweber bryanwweber requested a review from a team February 3, 2026 11:04
@bryanwweber bryanwweber marked this pull request as ready for review February 3, 2026 11:04
@bryanwweber
Copy link
Member Author

The macOS build is failing the tests for 3.14 on the test_memory_management https://github.com/Cantera/pypi-packages/actions/runs/21628589062/job/62335120666#step:15:11281 any ideas?

ischoegl
ischoegl previously approved these changes Feb 4, 2026
Copy link
Member

@ischoegl ischoegl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@bryanwweber
Copy link
Member Author

Thanks @ischoegl but I'm not sure if this change is sufficient, since the tests are failing for macOS 😭

@ischoegl ischoegl dismissed their stale review February 4, 2026 03:29

Fair enough!

@speth
Copy link
Member

speth commented Feb 5, 2026

Can we adjust that workflow to upload the wheel files (as GitHub artifacts) before running the test suite? That would allow us to download and do some testing locally. I don't think any similar issue has appeared on the main repo's CI, which tests what is nominally the same configuration (Python 3.14 and macOS 15).

@bryanwweber
Copy link
Member Author

I have two thoughts:

  1. You can run cibuildwheel locally on your Mac. Build the sdist, unzip it somewhere, and use pipx to run cibuildwheel from the extracted folder. You can set the selector variables to only build the 3.14 version. It will use your system installs of the dependencies, which won't be quite the same as the CI version
  2. I'll try to edit the workflow to continue on failures and upload the wheels to the action archive. It should work for at least Windows and macOS, since those run natively on the host (Linux builds run in a docker container, and there's a feature request open about that: Allow copying artifacts to /output in case of test failure on docker pypa/cibuildwheel#1756)

@bryanwweber
Copy link
Member Author

bryanwweber commented Feb 8, 2026

@speth
Copy link
Member

speth commented Feb 9, 2026

Thanks, @bryanwweber. I tried the Python 3.14 wheel locally in both Conda and uv environments, and had no trouble running the test suite, so I'm really not sure what the issue is running in CI.

Here are the package versions installed in each environment:

uv
Using Python 3.14.0rc2 environment at: /Users/speth/src/ct314tmp/.venv
Package           Version
----------------- -----------
cantera           4.0.0a1
flexcache         0.3
flexparser        0.4
graphviz          0.21
iniconfig         2.3.0
numpy             2.4.2
packaging         26.0
pandas            3.0.0
pint              0.25.2
platformdirs      4.5.1
pluggy            1.6.0
pygments          2.19.2
pytest            9.0.2
python-dateutil   2.9.0.post0
ruamel-yaml       0.19.1
scipy             1.17.0
six               1.17.0
typing-extensions 4.15.0
Conda
# packages in environment at /Users/speth/mambaforge/envs/ct314tmp:
#
# Name                    Version                   Build  Channel
_openmp_mutex             4.5                  7_kmp_llvm    conda-forge
adwaita-icon-theme        49.0                     unix_0    conda-forge
atk-1.0                   2.38.0               hd03087b_2    conda-forge
bzip2                     1.0.8                hd037594_8    conda-forge
ca-certificates           2026.1.4             hbd8a1cb_0    conda-forge
cairo                     1.18.4               he0f2337_1    conda-forge
cantera                   4.0.0a1                  pypi_0    pypi
colorama                  0.4.6              pyhd8ed1ab_1    conda-forge
epoxy                     1.5.10               hc919400_2    conda-forge
exceptiongroup            1.3.1              pyhd8ed1ab_0    conda-forge
flexcache                 0.3                pyhd8ed1ab_1    conda-forge
flexparser                0.4                pyhd8ed1ab_1    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 h77eed37_3    conda-forge
fontconfig                2.15.0               h1383a14_1    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                    hc364b38_1    conda-forge
freetype                  2.14.1               hce30654_0    conda-forge
fribidi                   1.0.16               hc919400_0    conda-forge
gdk-pixbuf                2.44.5               h5a2fd1c_0    conda-forge
glib-tools                2.86.3               hb9d6e3a_0    conda-forge
graphite2                 1.3.14               hec049ff_2    conda-forge
graphviz                  14.1.2               hec8c438_0    conda-forge
gtk3                      3.24.43              h5febe37_6    conda-forge
gts                       0.7.6                he42f4ea_4    conda-forge
harfbuzz                  12.3.2               h3103d1b_0    conda-forge
hicolor-icon-theme        0.17                 hce30654_2    conda-forge
icu                       78.2                 h38cb7af_0    conda-forge
iniconfig                 2.3.0              pyhd8ed1ab_0    conda-forge
lerc                      4.0.0                hd64df32_1    conda-forge
libblas                   3.11.0          5_h51639a9_openblas    conda-forge
libcblas                  3.11.0          5_hb0561ab_openblas    conda-forge
libcxx                    21.1.8               h55c6f16_2    conda-forge
libdeflate                1.25                 hc11a715_0    conda-forge
libexpat                  2.7.3                haf25636_0    conda-forge
libffi                    3.5.2                hcf2aa1b_0    conda-forge
libfreetype               2.14.1               hce30654_0    conda-forge
libfreetype6              2.14.1               h6da58f4_0    conda-forge
libgcc                    15.2.0              hcbb3090_17    conda-forge
libgd                     2.3.3               h05bcc79_12    conda-forge
libgfortran               15.2.0              h07b0088_17    conda-forge
libgfortran5              15.2.0              hdae7583_17    conda-forge
libglib                   2.86.3               hfe11c1f_0    conda-forge
libiconv                  1.18                 h23cfdf5_2    conda-forge
libintl                   0.25.1               h493aca8_0    conda-forge
libjpeg-turbo             3.1.2                hc919400_0    conda-forge
liblapack                 3.11.0          5_hd9741b5_openblas    conda-forge
liblzma                   5.8.2                h8088a28_0    conda-forge
libmpdec                  4.0.0                h84a0fba_1    conda-forge
libopenblas               0.3.30          openmp_ha158390_4    conda-forge
libpng                    1.6.54               h132b30e_0    conda-forge
librsvg                   2.60.0               h5c55ec3_0    conda-forge
libsqlite                 3.51.2               h1ae2325_0    conda-forge
libtiff                   4.7.1                h4030677_1    conda-forge
libwebp-base              1.6.0                h07db88b_0    conda-forge
libxml2-16                2.15.1               h5ef1a60_1    conda-forge
libzlib                   1.3.1                h8359307_2    conda-forge
llvm-openmp               21.1.8               h4a912ad_0    conda-forge
ncurses                   6.5                  h5e97a16_3    conda-forge
numpy                     2.4.2           py314hae46ccb_1    conda-forge
openssl                   3.6.1                hd24854e_1    conda-forge
packaging                 26.0               pyhcf101f3_0    conda-forge
pandas                    3.0.0           py314h5e21a50_0    conda-forge
pango                     1.56.4               h875632e_0    conda-forge
pcre2                     10.47                h30297fc_0    conda-forge
pint                      0.25.2             pyhcf101f3_0    conda-forge
pip                       26.0.1             pyh145f28c_0    conda-forge
pixman                    0.46.4               h81086ad_1    conda-forge
platformdirs              4.5.1              pyhcf101f3_0    conda-forge
pluggy                    1.6.0              pyhf9edf01_1    conda-forge
pygments                  2.19.2             pyhd8ed1ab_0    conda-forge
pytest                    9.0.2              pyhcf101f3_0    conda-forge
python                    3.14.3          h4c637c5_100_cp314    conda-forge
python-dateutil           2.9.0.post0        pyhe01879c_2    conda-forge
python-graphviz           0.21               pyhbacfb6d_0    conda-forge
python_abi                3.14                    8_cp314    conda-forge
readline                  8.3                  h46df422_0    conda-forge
ruamel.yaml               0.19.1             pyhcf101f3_0    conda-forge
ruamel.yaml.clib          0.2.15          py314ha14b1ff_1    conda-forge
scipy                     1.17.0          py314hfc1f868_1    conda-forge
six                       1.17.0             pyhe01879c_1    conda-forge
tk                        8.6.13               h010d191_3    conda-forge
tomli                     2.4.0              pyhcf101f3_0    conda-forge
typing-extensions         4.15.0               h396c80c_0    conda-forge
typing_extensions         4.15.0             pyhcf101f3_0    conda-forge
tzdata                    2025c                hc9c84f9_1    conda-forge
zstd                      1.5.7                hbf9d68e_6    conda-forge

I haven't checked to see if there are any notable differences to the CI environment, but I'm not sure what they would be. The only slightly weird thing I have locally is that uv really wants to install Python 3.14.0rc2 rather than a more recent minor release.

@ischoegl
Copy link
Member

ischoegl commented Feb 9, 2026

On the python side, the uv.lock file should be conclusive if it's attached as an artifact?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants