# DO NOT EDIT - GENERATED FROM .github/workflows-in/api.ys

name: api
defaults:
  run:
    shell: bash -e -x {0}
'on':
  workflow_dispatch: null
  push:
    branches:
    - master
  pull_request:
    branches:
    - '*'
env:
  PROJ_PKG_NAME: rapidyaml-
  PROJ_PFX_TARGET: ryml-
  PROJ_PFX_CMAKE: RYML_
  CMAKE_FLAGS: -DRYML_TEST_SUITE=ON
  NUM_JOBS_BUILD: null
jobs:
  pybare:
    if: always()
    continue-on-error: false
    name: pybare/${{matrix.config.pythonv}}/${{matrix.config.os}}
    runs-on: ${{matrix.config.os}}
    strategy:
      fail-fast: false
      matrix:
        config:
        - pythonv: '3.13'
          os: ubuntu-latest
        - pythonv: '3.13'
          os: macos-15-intel
    steps:
    - name: checkout (action)
      uses: actions/checkout@v4
      with:
        submodules: recursive
        fetch-depth: 0
    - name: install python ${{matrix.config.pythonv}}
      uses: actions/setup-python@v5
      with:
        python-version: ${{matrix.config.pythonv}}
    - name: deps
      run: |
        if [[ "${{matrix.config.os}}" == macos* ]] ; then
           brew install swig
        elif [[ "${{matrix.config.os}}" == windows* ]] ; then
           choco install swig
        fi
        pip install build deprecation pytest
        pip install -r requirements.txt
    - name: configure
      run: |
        cmake -B build/py \
           -D CMAKE_BUILD_TYPE=Release \
           -D BUILD_SHARED_LIBS=ON \
           -D RYML_DEFAULT_CALLBACK_USES_EXCEPTIONS=ON \
           -D RYML_BUILD_API=ON \
           -D RYML_API_TESTS=ON \
           -D RYML_BUILD_TESTS=ON
    - name: build
      run: |
        cmake --build build/py -j -v --config Release --target ryml-api-python3
        cp -fv api/python/ryml/__init__.py build/py/api/python3/.
        ls -lFpAR build/py/api/python3/
    - name: test with ctest
      run: |
        export PYTHONPATH=`pwd`/build/py/api/python3:$PYTHONPATH
        cmake --build build/py -j -v --config Release --target ryml-api-test-python3
    - name: test with pytest
      run: |
        export PYTHONPATH=`pwd`/build/py/api/python3:$PYTHONPATH
        python -m pytest -vvv api/python/tests
  pywheel:
    if: always()
    continue-on-error: false
    name: pywheel/${{matrix.config.pythonv}}/${{matrix.config.os}}
    runs-on: ${{matrix.config.os}}
    strategy:
      fail-fast: false
      matrix:
        config:
        - pythonv: '3.13'
          os: ubuntu-latest
        - pythonv: '3.13'
          os: macos-15-intel
    env:
      CMAKE_FLAGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILES=ON
    steps:
    - name: checkout (action)
      uses: actions/checkout@v4
      with:
        submodules: recursive
        fetch-depth: 0
    - name: install python ${{matrix.config.pythonv}}
      uses: actions/setup-python@v5
      with:
        python-version: ${{matrix.config.pythonv}}
    - name: deps
      run: |
        if [[ "${{matrix.config.os}}" == macos* ]] ; then
           brew install swig
        elif [[ "${{matrix.config.os}}" == windows* ]] ; then
           choco install swig
        fi
        pip install build deprecation pytest
        pip install -r requirements.txt
    - name: '------------------- using setup.py'
      run: |
        rm -rf build/ dist/ || echo "no files found"
        pip uninstall -y -v rapidyaml || echo "was not installed"
    - name: create wheel with python setup.py bdist_wheel -v
      run: |
        python setup.py bdist_wheel -v
    - name: install wheel
      run: pip install dist/*.whl
    - name: test with pytest
      run: python -m pytest -vvv api/python/tests
    - name: '------------------- using pip'
      run: |
        rm -rf build/ dist/ || echo "no files found"
        pip uninstall -y -v rapidyaml || echo "was not installed"
    - name: create wheel with pip wheel -w dist/ .
      run: |
        pip wheel -w dist/ .
    - name: install wheel
      run: pip install dist/*.whl
    - name: test with pytest
      run: python -m pytest -vvv api/python/tests
    - name: '------------------- using pypa/build'
      run: |
        rm -rf build/ dist/ || echo "no files found"
        pip uninstall -y -v rapidyaml || echo "was not installed"
    - name: create wheel with python -m build --wheel
      run: |
        python -m build --wheel
    - name: install wheel
      run: pip install dist/*.whl
    - name: test with pytest
      run: python -m pytest -vvv api/python/tests
  pywheelwin:
    if: always()
    continue-on-error: false
    name: pywheel/${{matrix.config.pythonv}}/${{matrix.config.os}}
    runs-on: ${{matrix.config.os}}
    strategy:
      fail-fast: false
      matrix:
        config:
        - pythonv: '3.13'
          os: windows-latest
          vsenvarch: x64
    env:
      CMAKE_FLAGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILES=ON
    steps:
    - name: checkout (action)
      uses: actions/checkout@v4
      with:
        submodules: recursive
        fetch-depth: 0
    - name: install python ${{matrix.config.pythonv}}
      uses: actions/setup-python@v5
      with:
        python-version: ${{matrix.config.pythonv}}
    - name: deps
      run: |
        if [[ "${{matrix.config.os}}" == macos* ]] ; then
           brew install swig
        elif [[ "${{matrix.config.os}}" == windows* ]] ; then
           choco install swig
        fi
        pip install build deprecation pytest
        pip install -r requirements.txt
    - name: setup env (Visual Studio)
      uses: TheMrMilchmann/setup-msvc-dev@v3
      with:
        arch: ${{matrix.config.vsenvarch}}
    - name: '------------------- using setup.py'
      run: |
        rm -rf build/ dist/ || echo "no files found"
        pip uninstall -y -v rapidyaml || echo "was not installed"
    - name: create wheel with python setup.py bdist_wheel -v
      run: |
        python setup.py bdist_wheel -v
    - name: install wheel
      run: pip install dist/*.whl
    - name: test with pytest
      run: python -m pytest -vvv api/python/tests
    - name: '------------------- using pip'
      run: |
        rm -rf build/ dist/ || echo "no files found"
        pip uninstall -y -v rapidyaml || echo "was not installed"
    - name: create wheel with pip wheel -w dist/ .
      run: |
        pip wheel -w dist/ .
    - name: install wheel
      run: pip install dist/*.whl
    - name: test with pytest
      run: python -m pytest -vvv api/python/tests
    - name: '------------------- using pypa/build'
      run: |
        rm -rf build/ dist/ || echo "no files found"
        pip uninstall -y -v rapidyaml || echo "was not installed"
    - name: create wheel with python -m build --wheel
      run: |
        python -m build --wheel
    - name: install wheel
      run: pip install dist/*.whl
    - name: test with pytest
      run: python -m pytest -vvv api/python/tests
