Files
CoolProp/.github/workflows/docs_docker-run.yml
Ian Bell d5761cb150 Use ninja for the examples (#2635)
* Use ninja for the examples

Should help a little bit with doc building

* FIx some templates

* Fix template deduction error in count_x_for_y_many functions

The count_x_for_y_many and count_x_for_y_manyC functions were using
a single template parameter for both input (double) and output (size_t)
arrays, causing template deduction failures in Cython bindings.

Changed to use separate template parameters YContainer and CountContainer
to properly support different types for input y values and output counts.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix types in PXD header too

* Docs should get ninja too

* Changes from clang-format

* Fix git diff argument order in clang-format script

The script was comparing PR_BRANCH to TARGET_BRANCH, which shows changes from the PR branch to the target (what's in target that's NOT in PR). For PR validation, we need the opposite: changes from target to PR (what's in PR that's NOT in target).

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Cython template deduction errors in solve_for_x_manyC and count_x_for_y_manyC

Add explicit template parameters [double, size_t] to both function calls
to resolve template type deduction errors when compiling with Cython.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix wheel building by removing return from void Cython template calls

The functions solve_for_x_manyC and count_x_for_y_manyC return void in C++.
When Cython sees a return statement with a void function call containing
template arguments with commas (e.g., [double, size_t]), it wraps the call
in the __Pyx_void_to_None macro. This macro is a simple preprocessor macro
that cannot handle the commas in template arguments, treating them as macro
argument separators instead.

The fix is to remove the return statements, making these simple void function
calls. This prevents the __Pyx_void_to_None wrapping and allows the wheel to
build successfully.

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

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-12 09:28:57 -04:00

182 lines
6.2 KiB
YAML

name: Documentation builds (HTML)
on:
schedule:
- cron: '0 2 * * *' # daily
- cron: '0 4 * * 1' # weekly
workflow_dispatch:
inputs:
expensive:
description: 'Build expensive docs'
required: false
type: boolean
push:
branches: [ 'master', 'main', 'develop', 'actions_docs' ]
tags: [ 'v*' ]
pull_request:
branches: [ 'master', 'main', 'develop' ]
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/coolprop/coolprop_docs_02_builder:dev
# options: --user 1001 --group 1001
credentials:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4.2.2
with:
submodules: recursive
fetch-depth: 0 # Fetch all history for git revision info
- name: Set up Git
run: |
git config --global --add safe.directory $GITHUB_WORKSPACE
# Get the full git revision hash
git rev-parse HEAD > dev/gitrevision.txt
echo "Git revision: $(cat dev/gitrevision.txt)"
- uses: actions/cache@v4
if: ${{ !env.ACT }} # skip during local actions testing
id: cached-props # steps.cached-props.outputs.cache-hit != 'true'
with:
path: |
./Web/fluid_properties/fluids/Consistencyplots
./Web/_static/fluid_properties/Incompressibles_reports
./Web/fluid_properties/Incompressibles_mass-based-fluids.csv
./Web/fluid_properties/Incompressibles_mole-based-fluids.csv
./Web/fluid_properties/Incompressibles_volume-based-fluids.csv
./Web/fluid_properties/Incompressibles_pure-fluids.csv
./Web/scripts/incompressibles_consistency
key: cached-props
#key: cached-props-${{ github.sha }}
#restore-keys: |
# cached-props-
- name: Schedule calculations
id: schedule_calculation
shell: bash
run: |
set -x
echo ${{ github.event.schedule }}
echo "COOLPROP_DAILY=${{ github.event.schedule == '0 2 * * *' }}" >> $GITHUB_ENV
echo "COOLPROP_WEEKLY=${{ github.event.schedule == '0 4 * * 1' }}" >> $GITHUB_ENV
echo ${{ github.ref }}
echo "COOLPROP_TAGGED=${{ contains(github.ref, 'refs/tags') }}" >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Variable calculations
id: variable_calculation
shell: bash
run: |
set -x
conda install -y packaging
echo "COOLPROP_VERSION=$(python dev/extract_version.py --cmake-only)" >> $GITHUB_ENV
echo "COOLPROP_EXPENSIVE=${{ (steps.cached-props.outputs.cache-hit != 'true') || inputs.expensive || env.COOLPROP_TAGGED || env.COOLPROP_WEEKLY }}" >> $GITHUB_ENV
cat $GITHUB_ENV
- name: Build and install wheel using bdist_wheel
shell: bash
run: |
source activate docs
# Ensure the gitrevision.txt is used for the build
python dev/generate_headers.py
# Build and install the wheel
pip -vv wheel .
pip install -vvv --force-reinstall --ignore-installed --upgrade --no-index `ls *.whl`
pip install pydata-sphinx-theme tqdm ninja
- name: Test the installed CoolProp version
shell: bash
run: |
source activate docs
python -c "import CoolProp; print(CoolProp.__version__)"
python -c "import CoolProp; print(CoolProp.__gitrevision__)"
python -c "import CoolProp; print(CoolProp.__file__)"
- name: Build homepage and create graphs
# Use a single argument with "True" or "1" to trigger a full rebuild
working-directory: ./Web/scripts/
shell: bash
run: |
source activate docs
echo "Calling: python -u __init__.py ${{ env.COOLPROP_EXPENSIVE }}"
python -u __init__.py ${{ env.COOLPROP_EXPENSIVE }}
- name: Build documentation with Doxygen
shell: bash
run: |
source activate docs
doxygen --version
doxygen Doxyfile
- name: Build documentation with Sphinx
working-directory: ./Web
shell: bash
run: |
source activate docs
sphinx-apidoc -T -f -e -o apidoc ../wrappers/Python/CoolProp
make html
- name: Upload GitHub Pages artifact
if: ${{ !env.ACT }} # skip during local actions testing
uses: actions/upload-pages-artifact@v3
with:
path: ./Web/_build/html/
- name: Zip the HTML documentation
working-directory: ./Web/_build/
shell: bash
run: |
tar -cvzf CoolProp-${{ env.COOLPROP_VERSION }}-documentation-html.tar.gz html/*
# zip -rq CoolProp-${{ env.COOLPROP_VERSION }}-documentation-html.zip html/*
- name: Archive TGZ or ZIP artifacts
if: ${{ !env.ACT }} # skip during local actions testing
uses: actions/upload-artifact@v4
with:
name: docs
path: |
Web/_build/CoolProp-${{ env.COOLPROP_VERSION }}-documentation-html.tar.gz
# Web/_build/CoolProp-${{ env.COOLPROP_VERSION }}-documentation-html.zip
#- name: Upload TGZ or ZIP to release
# if: contains(github.ref, 'refs/tags')
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: Web/_build/CoolProp-${{ env.COOLPROP_VERSION }}-documentation-html.tar.gz
# tag: ${{ github.ref }}
# overwrite: true
# file_glob: false
# Deploy job
deploy:
# Add a dependency to the build job
needs: build
# Do not deploy intermediate builds, only deploy on tags
if: ${{ startsWith(github.ref, 'refs/tags/') }}
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# Specify runner + deployment step
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
#if: contains(github.ref, 'refs/tags')
if: ${{ !env.ACT }} # skip during local actions testing
id: deployment
uses: actions/deploy-pages@v4