name: Python build one single wheel

on:
  workflow_call:
    inputs:
      python-version:
        required: true
        type: string
      os:
        required: true
        type: string
      arch:
        required: true
        type: string
      TESTPYPI_VERSION:
        required: true 
        type: string

jobs:

  build:
    #name: py${{ inputs.python-version }}-${{ inputs.os }}-${{ inputs.arch }}
    runs-on: ${{ inputs.os }}

    steps:
    - name: Show the context for this job
      env:
        EVENT_CONTEXT: ${{ toJSON(github.event) }}
      run: |
        echo $EVENT_CONTEXT

    - uses: actions/checkout@v4.2.2
      with:
        submodules: recursive

    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: 3.13.x

    - name: Install Python dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install requests packaging

    - name: Figure out the TestPyPi/PyPi Version
      shell: bash
      run: |
        if [[ "$GITHUB_REF" == *"refs/tags"* ]]; then
          python dev/extract_version.py --pypi --replace-setup-py
        else
          python dev/extract_version.py --replace-setup-py --version "${{ inputs.TESTPYPI_VERSION }}"
        fi;
        
    - name: Set up QEMU
      if: ${{ runner.os == 'Linux' }}
      uses: docker/setup-qemu-action@v3.2.0
      with:
        platforms: all
        
    - name: Build and test wheels
      uses: pypa/cibuildwheel@v2.23.2
      env:
        MACOSX_DEPLOYMENT_TARGET: 11.0
        CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=11.0 SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
        CIBW_BEFORE_BUILD: >
          pip install setuptools wheel Cython requests jinja2 pyyaml
        CIBW_BEFORE_BUILD_LINUX: >
          pip install setuptools wheel Cython requests jinja2 pyyaml && git config --global --add safe.directory "*"
        CIBW_ENVIRONMENT_LINUX: COOLPROP_CMAKE=default,NATIVE
        CIBW_BUILD: cp${{ inputs.python-version }}-*
        CIBW_ARCHS_MACOS: ${{ inputs.arch }} # x86_64 arm64 # universal2 is redundant
        CIBW_ARCHS_WINDOWS: ${{ inputs.arch }} # AMD64 x86 # ARM64 creates problems with msgpack-c
        CIBW_ARCHS_LINUX: ${{ inputs.arch }} # i686 x86_64 aarch64 ppc64le s390x
        CIBW_TEST_COMMAND: python -c "import CoolProp; assert '?' not in CoolProp.__gitrevision__"
        CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
        CIBW_MANYLINUX_I686_IMAGE: manylinux2014
        CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
        CIBW_SKIP: "pp*"
        CIBW_TEST_SKIP: "*-macosx_arm64 *-win_arm64"
      with:
        package-dir: ./wrappers/Python/
        output-dir: Python

    - name: Upload Files
      uses: actions/upload-artifact@v4
      with:
        name: Python-${{ inputs.os }}-${{ inputs.python-version }}-${{ inputs.arch }}
        path: |
          ./Python/*.whl
