The _py_backend was a custom setuptools build backend wrapper used
with the old setup.py build system. It's no longer needed with
scikit-build-core.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Removed SETUP_PY_ARGS since cmake options are no longer passed via
setup.py arguments. The new build system uses CMake directly via
scikit-build-core. Also fixed typo and updated install_root path.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- Updated documentation to show modern pip-based installation
- Updated manylinux build script to use pip wheel instead of setup.py
- Updated conda metadata generator to use pip install
- Removed deprecated PyPI preparation script (replaced by `python -m build --sdist`)
All build infrastructure now uses the new scikit-build-core build system.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds the missing build-time steps from setup.py:
- Header generation from JSON files (generate_headers.py)
- Cython constants module generation (generate_constants_module.py)
- Copying headers, fmtlib, and BibTeX file to package directory
Also updates .gitignore to ignore:
- wrappers/Python/CoolProp/include/ (generated during build)
- wrappers/Python/CoolProp/CoolPropBibTeXLibrary.bib (copied during build)
Includes test script to verify wheel contents match between old and new build approaches.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit replaces the old setuptools-based build system with a modern
scikit-build-core + CMake build system for the Python bindings.
Key changes:
- Replace setup.py with pyproject.toml using scikit-build-core backend
- Create new CMakeLists.txt for Cython module compilation
- Add FindCython.cmake helper module
- Update README from .rst to .md format
- Enable incremental builds with proper CMake dependency tracking
- Support Python 3.8-3.14 with proper Cython directives
Benefits:
- Incremental builds work correctly (only rebuild changed files)
- Modern PEP 517/518 compliant build system
- Build artifacts cached in build/{wheel_tag} directories
- Better integration with pip and modern Python tooling
- No more need for custom _py_backend build hooks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add ability to get at the ideal-gas properties directly
Also through the python interface
* And python interface files
* Fixes the missing reference to ideal gas notebook
Use regex with negative lookbehind to avoid splitting names like '1,2-dichloroethane'
into separate aliases. This fixes the issue where chemical names containing
numbers and commas were being incorrectly split.
* Expansions are fully wrapped, looking good. Next step is the set of expansions that is the 1D approximation
* Get 1D approx working via cython
* Count solutions
* SuperAncillary class is working
>1000x speedup for water
Time for C++!
* Superancillaries are working!
In C++, speedup is more than 2000x. In Python, more like 150x because of Python <-> C++ overhead
* Add pmax check for PQ superancillary calls
* Update tests
* Allow T limits to be obtained
* Implement get_fluid_parameter_double for getting superanc value
* Add tests for getting parameters from superanc
* Script for testing superancillaries for sphinx
* Microoptimizations; don't help speed
The limiting factor remains the clear function, which takes about 30 ns
* Add R125 superancillary
* Use the release from fastchebpure for the files
* Drop a .gitignore in the unzipped folder
* Update superancillary injection script
* Turn on superancillaries by default
* Missing header
* Many int conversions in superancillary
* Another int cast
* More annoying solution for boost iter max
* Fix warnings
* One more warning
* Clear up the calculation of rho
* Update docs_docker-build.yml
Use arm64 since the containers were built on mac
* Superfluous ;
* Update backend.py
* Get the critical points working for superancillaries
* Fix wrapping changes of xmin&xmax methods
* squelch warnings
* Version 0 of jupyter notebook for docs
* Try to add the notebook to the docs
* Add jupyter notebook for superancillary
* Lots of updates to superancillary notebook
* More updates to docs
* Skip pseudo-pure for superancillary docs
* Fix output of superancillary figures
* Add superancillary plots to docs for the page for each fluid
* Make a placeholder figure for fluids without superancillary
* Add superancillary plots to task list
* Bump to release fixing m-xylene
* Relax the location of the REFPROP stuff
* Change default name for R-1336mzz(E)
* No need for figures to be so large
* Don't need REFPROP setting
* Bump to fastchebpure release with methanol
* Benchmark caching options
* Benchmark more granularly
* Add the fast methods to public API for HEOS class
* Back to memset - can memset with 0 but no other value
* Fix how caching is managed in Helmholtz class
* Close to final implementation
Perhaps a tiny bit more optimization possible?
* Update function name
* Make message more accurate
* Fix init order
* Expose update_QT_pure_superanc to Python
* Fix when _reducing is set for pures
* Fix the post_update
* Indent
* Notebook
* Notebook
* Make ln(p) construction lazy
Only really matters for debug builds
* Also make reference non-const
* Inject superancillary for methanol
* Make the superancillary loading entirely lazy in debug
* Fix PH bug for Nitrogen
Closes#2470
* Force the clear to be called on SatL and SatV
To invalidate them at start
* Default is non-lazy superancillary loading
* Add CMake option to have lazy-loading superancillaries [skip ci]
Not a good idea unless doing very narrow testing
* Ignore depcache files [skip ci]
* Z lib compress the fluid data
And migrate to newer version of miniz
* Add the writing of the .z file
* This works on MSVC, not sure about any other platform
How does one inform the linker about what locations to search for this file?
* Does this give the necessary linking info to the compiler?
* Include the header only for MSVC
* The incbin is still needed for non-windows
* Missing headers for Python
* Add miniz source file
* Missing import
* Provide a solution for compilers that don't support assembly to embed files
* Don't specify standard since we have mixed C/C++
https://stackoverflow.com/questions/49000674/cython-std-c11-error-using-both-c-and-c
* rename miniz to cpp
* And cmake
* Back to .c again
Not sure what to do about Python now
* Build the C library and then link it in
* FIx cmake too
* Location for .z file
* arg to setup function
* Check for z file [skip ci]
* Force build temp to be here
* Try switching to setuptools version
* Force the build_temp to be build before clib construction begins
That was subtle...
Test whether renaming the project in setup.py is enough. Does not impact the package name (CoolProp) that is included in the wheel so user code should not change
When i tried to plot log(p)-h-diagrams there always had been an issue in the common.py file in line 481. By deleting the "Isoline, self" between the () of super in this line i could fix this an the plots were generated. So i made this pull request.
* Update setup.py replace distutils with setuptools
PEP 632 – Deprecate distutils module.
Edit line 4-6:
from distutils.version import LooseVersion
from distutils.sysconfig import get_config_var
from setuptools.command.build_ext import build_ext
To
from packaging.version import Version
from sysconfig import get_config_var
from setuptools.command.build_ext import build_ext
Edit line 291:
cython_version = Version (Cython.__version__)
To
cython_version = str(Version (Cython.__version__))
Edit line 353:
from distutils.errors import CompileError
To
from setuptools import CompileError
Edit line 394:
from Cython.Distutils.extension import Extension
To
from setuptools.extension import Extension
Delete line 396:
from Cython.Distutils import build_ext
This is now handled with line 6 and thus redundant
from setuptools.command.build_ext import build_ext
Edit line 3, 60, 61 62, 66, 77, 229, and 291
Replace all instances of LooseVersion with Version
* Update python_buildwheels.yml
* Update python_cibuildwheel.yml
* Update setup.py
* Update setup.py
* Update setup.py
* Update python_buildwheels.yml
Added module packaging to the list of dependencies.
* Update python_cibuildwheel.yml
Updated cibuildwheel version form 2.17.0 to latest edition 2.21.3 for python 3.13 support.
* Update python_buildwheels.yml
Deleted lines with python specific exclusions for Windows ARM64 as it already excluded generically.
* Update python_buildwheels.yml
Deleted lines with python specific exclusions for MacOS as these are no longer supported.
* Fix build error: `src/Backends/IF97/IF97Backend.h:54:34: error: call of overloaded ‘abs(double)’ is ambiguous`
Found with the manylinux_2_24_x86_64
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
* Register MSVC 2019 and 2022 in setup.py
* setup.py: when calling cmake, build in parallel
* Enable using Env variables instead of passing them as args to setup.py
* Github actions for linux: try 1
* use actions/checkout@v3 for submodules
* mod setup.py:; typo
* Random shot for cibuildwheel for all platforms
* I thought package_dir was a flag, but it's positional
* typo in cmake_compiler
* add cython to setup_requires
* try a pryproject.toml to install cython
* try more requirements?
* pywin32 only found on win32 I guess
* Try with CIBW_BEFORE_BUILD instead
* try to enable msvc via vcvarsall on windows, and pass MACOSX_DEPLOYMENT_TARGET
* more tweaks for windoze
* disable tests for now (fails on windows)
* tweak mac again: it seems mac doesn't understand a C++ lambda, so like it's using pre C++11
* tweak
* try 10.15 for mac...
* try to force C++11 since mac picks up the path where lambdas are used...
* Move back down to 10.9 now that C++11 is enabled and it works on mac, it should be enough
* Try to debug win32
* Enable part of the upload step (minus the upload) to list the wheels
* try to allow win32 to fail for now (instead of plain disabling)
* Disable the python_linux.yml workflow, so cibuildwheels works fine.
* Adjust the upload step to point to the right folder
* make LGTM python happy