@@ -211,29 +211,40 @@ jobs:
211211 # Things to exclude if not a full matrix run #
212212 # #############################################
213213 - is-full-run : false
214- os : windows-2022
214+ os : ubuntu-24.04
215215 cibuildwheel : " cp310"
216216
217+ - is-full-run : false
218+ os : ubuntu-24.04
219+ cibuildwheel : " cp312"
220+
221+ - is-full-run : false
222+ os : ubuntu-24.04
223+ cibuildwheel : " cp313"
224+
217225 - is-full-run : false
218226 os : windows-2022
219- cibuildwheel : " cp311 "
227+ cibuildwheel : " cp310 "
220228
221229 - is-full-run : false
222230 os : windows-2022
223231 cibuildwheel : " cp312"
224232
225- # avoid unnecessary use of mac resources
233+ - is-full-run : false
234+ os : windows-2022
235+ cibuildwheel : " cp313"
236+
226237 - is-full-run : false
227238 os : macos-14
228239 cibuildwheel : " cp310"
229240
230241 - is-full-run : false
231242 os : macos-14
232- cibuildwheel : " cp311 "
243+ cibuildwheel : " cp312 "
233244
234245 - is-full-run : false
235246 os : macos-14
236- cibuildwheel : " cp312 "
247+ cibuildwheel : " cp313 "
237248
238249 runs-on : ${{ matrix.os }}
239250
@@ -417,32 +428,41 @@ jobs:
417428 # #############################################
418429 # Things to exclude if not a full matrix run #
419430 # #############################################
420-
421- # Avoid extra resources for windows build
422431 - is-full-run : false
423- os : windows-2022
432+ os : ubuntu-24.04
424433 python-version : " 3.10"
425434
435+ - is-full-run : false
436+ os : ubuntu-24.04
437+ python-version : " 3.12"
438+
439+ - is-full-run : false
440+ os : ubuntu-24.04
441+ python-version : " 3.13"
442+
426443 - is-full-run : false
427444 os : windows-2022
428- python-version : " 3.11 "
445+ python-version : " 3.10 "
429446
430447 - is-full-run : false
431448 os : windows-2022
432449 python-version : " 3.12"
433450
434- # avoid unnecessary use of mac resources
451+ - is-full-run : false
452+ os : windows-2022
453+ python-version : " 3.13"
454+
435455 - is-full-run : false
436456 os : macos-14
437457 python-version : " 3.10"
438458
439459 - is-full-run : false
440460 os : macos-14
441- python-version : " 3.11 "
461+ python-version : " 3.12 "
442462
443463 - is-full-run : false
444464 os : macos-14
445- python-version : " 3.12 "
465+ python-version : " 3.13 "
446466
447467 runs-on : ${{ matrix.os }}
448468
@@ -515,6 +535,106 @@ jobs:
515535 - name : Python Test Steps
516536 run : make test
517537
538+ # ###################################################################################################################
539+ # ..................................................................................................................#
540+ # ..|########|..|########|..../####\....|########|.............../####\...|########\..|########\....................#
541+ # ..|########|..|##|......../##/..\##\..|########|............./##/.\##\..|##|../##/..|##|../##/....................#
542+ # .....|##|.....|##|.........\##\..........|##|...............|##|........|##|./##/...|##|./##/.....................#
543+ # .....|##|.....|########|.....\##\........|##|...............|##|........|##||##/....|##||##/......................#
544+ # .....|##|.....|##|.............\##\......|##|...............|##|........|##|........|##|..........................#
545+ # .....|##|.....|##|........\##\../##/.....|##|................\##\./##/..|##|........|##|..........................#
546+ # .....|##|.....|########|...\####/........|##|.................\####/....|##|........|##|..........................#
547+ # ..................................................................................................................#
548+ # ...|########|...\##\..../##/...../#####\......./|\........./|\....|########\..|##|........|########|..../####\....#
549+ # ...|##|..........\##\../##/...../##/.\##\...../#|#\......./#|#\...|##|../##/..|##|........|##|......../##/..\##\..#
550+ # ...|##|...........\##\/##/...../##/...\##\...|##|\#\...../#/|##|..|##|./##/...|##|........|##|.........\##\.......#
551+ # ...|########|......|####|...../###########\..|##|.\#\.../#/.|##|..|##||##/....|##|........|########|.....\##\.....#
552+ # ...|##|.........../##/\##\....|##|.....|##|..|##|..\#\./#/..|##|..|##|........|##|........|##|.............\##\...#
553+ # ...|##|........../##/..\##\...|##|.....|##|..|##|...\#|#/...|##|..|##|........|########|..|##|........\##\./##/...#
554+ # ...|########|.../##/....\##\..|##|.....|##|..|##|....\|/....|##|..|##|........|########|..|########|...\####/.....#
555+ # .........................................................................................................#
556+ # #############################################################
557+ # Build / test C++ examples (05_cpp) #
558+ # #############################################################
559+ test_cpp_examples :
560+ needs :
561+ - initialize
562+ - build
563+
564+ strategy :
565+ matrix :
566+ os :
567+ - ubuntu-24.04
568+ - macos-14
569+ example :
570+ - 1_cpp_node
571+ - 2_cpp_node_with_struct
572+ - 3_cpp_adapter
573+ - 4_c_api_adapter
574+ - 5_c_api_adapter_rust
575+ python-version :
576+ - 3.11
577+
578+ runs-on : ${{ matrix.os }}
579+
580+ steps :
581+ - name : Checkout
582+ uses : actions/checkout@v6
583+ with :
584+ submodules : recursive
585+
586+ - name : Set up Python ${{ matrix.python-version }}
587+ uses : ./.github/actions/setup-python
588+ with :
589+ version : ' ${{ matrix.python-version }}'
590+ cibuildwheel : false
591+
592+ - name : Set up Caches
593+ uses : ./.github/actions/setup-caches
594+
595+ - name : Install python dependencies
596+ run : make requirements
597+
598+ - name : Download wheel
599+ uses : actions/download-artifact@v7
600+ with :
601+ name : csp-dist-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python-version }}
602+
603+ # #######
604+ # Linux
605+ - name : Install wheel (Linux)
606+ run : |
607+ python -m pip install -U *manylinux*.whl
608+ if : ${{ runner.os == 'Linux' }}
609+
610+ - name : Install build tools (Linux)
611+ run : sudo apt-get install -y cmake build-essential
612+ if : ${{ runner.os == 'Linux' }}
613+
614+ # #######
615+ # MacOS
616+ - name : Install wheel (OSX arm)
617+ run : |
618+ python -m pip install -U *arm64*.whl
619+ if : ${{ runner.os == 'macOS' && runner.arch == 'ARM64' }}
620+
621+ - name : Install wheel (OSX x86)
622+ run : |
623+ python -m pip install -U *x86*.whl
624+ if : ${{ runner.os == 'macOS' && runner.arch == 'X64' }}
625+
626+ # #########
627+ # Steps for Rust depend C API Rust Example (5_c_api_adapter_rust)
628+ - name : Setup Rust
629+ uses : ./.github/actions/setup-rust
630+ if : ${{ matrix.example == '5_c_api_adapter_rust' }}
631+
632+ - name : Build example ${{ matrix.example }} and run tests
633+ run : |
634+ cd examples/05_cpp/${{ matrix.example }}
635+ hatch-build --hooks-only -t wheel
636+ python -m pytest -vvv .
637+
518638 # ###############################################################
519639 # ..............................................................#
520640 # ..|########|..|########|..../####\....|########|..............#
@@ -731,6 +851,7 @@ jobs:
731851 - test
732852 - test_sdist
733853 - test_dependencies
854+ - test_cpp_examples
734855
735856 if : startsWith(github.ref, 'refs/tags/v')
736857 runs-on : ubuntu-24.04
0 commit comments