Commit Graph

742 Commits

Author SHA1 Message Date
Ian Bell
9b3c127cf4 Remove deprecated _py_backend custom build backend
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>
2025-10-11 09:52:16 -04:00
Ian Bell
1442cdf656 Update manylinux Docker script for scikit-build-core
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>
2025-10-11 09:48:20 -04:00
Ian Bell
55004163bd Update build scripts and documentation for scikit-build-core
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>
2025-10-11 09:45:15 -04:00
Ian Bell
11860838b2 Set CMAKE_POSITION_INDEPENDENT_CODE for shared library build
Enable -fPIC flag for all targets to ensure proper shared library compilation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-10 09:36:20 -04:00
Ian Bell
cdefacfb57 Add build-time file generation and ignore generated files
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>
2025-10-10 09:26:37 -04:00
Ian Bell
6e6363f7f8 Modernize Python build system to use scikit-build-core
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>
2025-10-10 09:26:37 -04:00
Ian Bell
238ca71e48 Python 3.14 support? (#2630)
* Python 3.14 support?

* Don't need explicit skip for pypy

* Explicit 3.14

* wrong python for pip?

* Another pyproject.toml to fix deps?
2025-10-10 08:59:01 -04:00
Omar Zaki
64f0bbdf52 Add Windows Instructions and example for Fluent Wrapper (#2624)
* Add Windows Instructions and example

I added how to use the wrapper for Windows through the shared library. There might be a better way using the static library, but I believe this method works for 99% of use cases.

* Update Windows setup instructions in Fluent README

Clarified and expanded the step-by-step instructions for setting up CoolProp with Fluent on Windows. Added details about launching Fluent, using absolute paths, and using '//' in paths. Improved clarity and fixed minor typos.

* Update Windows instructions in Fluent wrapper README

Added clarification about limitations of using the shared library method and recommended using a static library for more robust results. Minor formatting and wording improvements were also made to the step-by-step instructions.
2025-10-06 20:34:53 -04:00
Ian Bell
896e85d129 Add Ideal gas methods (#2626)
* 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
2025-10-04 16:00:30 -04:00
Ian Bell
2bf621c082 And tqdm (#2619) 2025-09-20 12:49:09 -04:00
Jon Finerty
c4140f5973 Disables profiling by default with flag to enable. (#2613)
Fixes issue #2612 by turning off cython profiling in build unless
explicitly set via an environment flag
2025-09-12 21:15:39 -04:00
Ian Bell
1c07b9b426 A more robust fix for #2587 (#2603) 2025-08-23 18:06:29 -04:00
Ian Bell
9b5d31c2c5 Fix #2587: Prevent incorrect splitting of chemical names with commas in get_aliases() (#2600)
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.
2025-08-23 14:20:28 -04:00
Ian Bell
8f84713ecd A couple more long
Must be something new in cython
2025-05-18 15:29:39 -04:00
Ian Bell
c8499a6c34 Fix the failing docs I hope.
Seems long is not a valid identifier anymore
2025-05-18 10:51:59 -04:00
Ian Bell
267d64533a Superancillaries for pure fluids (#2511)
* 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
2025-05-17 20:27:19 -04:00
Ian Bell
319abc1629 Modernize (and test!) embind wrapping for Javascript (#2551)
* Modernization of the embind wrapping

* Try a newer node, worked on windows?
2025-05-08 21:10:49 -04:00
Ian Bell
5bae01a5e9 Use pickle instead of cPickle; deprecation [skip ci] 2025-04-21 18:06:13 -04:00
Ian Bell
4d59587f82 Work on fixing CI git revision in sdist
See #2518
2025-04-10 18:00:38 -04:00
Ian Bell
1f9360ed5c Two more np.nan 2025-04-07 07:30:28 -04:00
Ian Bell
a72baafc77 Add fluid files with superancillary data (#2503)
* Add fluid files with superancillary data

* Delete the large generated z-compressed header
2025-03-22 21:33:18 -04:00
Ian Bell
0a1f13a006 Fix unicode issues with the deprecated State class
Vaguely more sane
Closes #2497
2025-03-16 10:40:30 -04:00
Jeff Henning
3aa58efc5e Merge pull request #2499 from henningjp/MCDOCS
Update Mathcad wrapper docs [skip-ci]
2025-03-14 16:42:29 -04:00
henningjp
84f9660180 Update Mathcad wrapper docs [skip-ci] 2025-03-14 16:09:51 -04:00
jakobreichert
83a253cf9b Add set_cubic_alpha_C function to python wrapper (#2496) 2025-03-10 13:02:47 -04:00
Ian Bell
747f2b0235 Move to more modern pyproject.toml builds
Backwards compatible with old approach
2025-03-09 12:50:09 -04:00
Ian Bell
dc360fc167 miniz fluids (#2495)
* 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...
2025-03-09 10:38:56 -04:00
Ian Bell
906fdfe2d1 On PYPI project names are soon to be required to be all lowercase (#2489)
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
2025-03-01 15:45:56 -05:00
Ian Bell
3f885db54f Bump fmtlib to 11.1.3 (#2478)
* Bump fmtlib to 11.1.3

Required addition of unicode support

Add the flag for python wheel builds too
2025-02-23 15:48:28 -05:00
Jeff Henning
f3fa94d284 Minor edit to Mathcad libs README 2025-02-22 06:03:15 -04:00
Jeff Henning
276ac4ae01 Get Mathcad Workflow Running Again (#2471)
* Add PTC Libs and Terms of Use to wrappers/Mathcad

* Convert Mathcad README files from RST to MD

* Run Mathcad workflow with local Repo Files

* Allow Mathcad workflow to be called by other workflows
2025-02-18 21:59:43 -05:00
Ian Bell
275581e1ab Move to a more sane option for managing boost archive expansion 2025-01-01 15:07:45 -05:00
Ian Bell
6d23854efe No string in pxd either 2024-12-30 15:27:56 -05:00
Ian Bell
1f428fd935 Try to fix the python 3.13 builds on windows
Remove the string in interface. It seems like the string here should be left untyped to allow auto conversion of strings
2024-12-30 15:21:58 -05:00
MasterGPT9821
233e275b27 Fix Plots of log-p-h diagrams (#2446)
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.
2024-12-04 14:14:26 -05:00
gitsdfawfevi
a988270be2 Fix np.NaN for numpy >=2 (#2439)
Co-authored-by: gitsdfawfevi <user@server.fake>
2024-11-15 09:44:41 -05:00
Niels Holswilder
fbb2d587bd Python 3.13 and replace distutils with setuptools PEP 632 – Deprecate distutils (#2436)
* 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.
2024-11-07 20:45:25 -05:00
Ian Bell
730620f7b1 Expose the neff function 2024-10-03 20:00:15 -04:00
Ian Bell
01b6804a60 Fix source searching in python build
On OSX you get the dreaded .DS_Store files to contend with
2024-08-01 11:25:06 -04:00
stephen-young
d06b84b02a Add link to coolprop-mat repo (#2396)
This commit adds a link to a repo that contains information on how to
call `CoolProp` through MATLAB's C interface with the `CoolProp` shared
library.
2024-07-29 17:58:40 -04:00
spinnau
956d949bbd Update build process for LibreOffice wrapper (#2341)
* Fix build of LibreOffice wrapper for LibreOffice SDK >= 7.5

In the LibreOffice SDK version 7.4 the "idlc" and "regmerge" tools were
deprecated and replaced by the new UNOIDL compiler "unoidl-write". The
old tools have been removed from version 7.5 onwards. Thus, the build
process is changed to use the new compiler.

- The new binary type libary format produced by "unoidl-write" has
  already been used internally since LibreOffice 4.1 in 2013, so that
  extensions built with the new compiler will also run on older office
  versions. The minimal LibreOffice version for the extension is
  therefore changed to 4.1
- With the "unoidl-write" compiler some API changes were introduced.
  Identifiers containing underscores must start with an uppercase
  letter, as identifiers with underscores and starting with a lowercase
  letter are reserved for internal purposes. Thus, the naming of some
  functions used in the extension is changed.

* Enable install of CoolProp python package dev versions

If the LibreOffice extension was built for a development version, then
it should also download the appropriate development version of the
CoolProp python package.

* Add a builder for LibreOffice wrapper

* Add LibreOffice builder to release workflow
2024-01-11 12:46:33 -05:00
Jeff Henning
edbb4920b8 Mathcad Wrapper README Formatting (#2296)
* Mathcad wrapper README formatting fix

* Rename MATHCADPrime.rst to MathcadPrime.rst

Was failing to build TOCtree
2023-09-24 07:41:46 -04:00
Jeff Henning
e1dde6cbff Update Mathcad docs for pre-compiled and discontinuation of Legacy Mathcad [skip-ci] (#2294)
* Update docs for Mathcad Prime install and Legacy Mathcad deprecation
2023-09-20 19:29:02 -04:00
Ian Bell
f0258a8d15 Prepare for cython 3.0
There is a bug in cython 3.0 with module-level dicts it seems
2023-08-06 11:56:09 -04:00
Ian Bell
de38f085cb Turn off the shared_ptr hacks 2023-08-06 11:55:05 -04:00
Ian Bell
39b5519ddb Make the AbstractState owned by State class public 2023-08-03 20:23:19 -04:00
Ian Bell
37c18d5006 Allow predefined mixtures to be added at runtime 2023-07-27 10:04:51 -04:00
Ian Bell
1c5f1768e5 Fix copying of State object with mixtures
need to keep phase imposed
2023-07-26 22:43:50 -04:00
Ian Bell
8066bc0a38 Fix two bugs in phase imposition for State class
The string comparison for phase will always fail because comparison is between bytes and str and phase setting should happen before update
2023-07-26 22:43:09 -04:00
Ian Bell
1ac6ee5383 Fix include path for fmtlib 2023-05-13 09:12:15 -04:00