4848 strategy :
4949 fail-fast : false
5050 matrix :
51- python-version : [ "3.10", "3.11", "3.12", "3.13" ]
51+ python-version : [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
5252 steps :
5353 - name : Checkout repository
5454 uses : actions/checkout@v4
@@ -547,6 +547,90 @@ jobs:
547547 sdk/python/dist/*.whl
548548 sdk/python/dist/*.tar.gz
549549
550+ # ============================================
551+ # Build Flet extension Python packages
552+ # ============================================
553+ build_flet_extensions :
554+ name : Build ${{ matrix.package }} extension
555+ runs-on : ubuntu-latest
556+ needs :
557+ - python_tests
558+ - build_flet_package
559+ env :
560+ PYPI_VER : ${{ needs.build_flet_package.outputs.PYPI_VER }}
561+ strategy :
562+ fail-fast : false
563+ matrix :
564+ package :
565+ - flet-ads
566+ - flet-audio
567+ - flet-audio-recorder
568+ - flet-charts
569+ - flet-datatable2
570+ - flet-flashlight
571+ - flet-geolocator
572+ - flet-lottie
573+ - flet-map
574+ - flet-permission-handler
575+ - flet-rive
576+ - flet-video
577+ - flet-webview
578+ steps :
579+ - name : Checkout repository
580+ uses : actions/checkout@v4
581+
582+ - name : Setup uv
583+ uses : astral-sh/setup-uv@v6
584+
585+ - name : Setup Flutter
586+ uses : kuhnroyal/flutter-fvm-config-action/setup@v3
587+ with :
588+ path : ' .fvmrc'
589+ cache : true
590+
591+ - name : Analyze Flutter package with dart analyze
592+ shell : bash
593+ run : |
594+ set -euo pipefail
595+ PACKAGE="${{ matrix.package }}"
596+ FLUTTER_PACKAGE="${PACKAGE//-/_}"
597+ FLUTTER_DIR="${SDK_PYTHON}/packages/${PACKAGE}/src/flutter/${FLUTTER_PACKAGE}"
598+
599+ if [[ ! -d "$FLUTTER_DIR" ]]; then
600+ echo "Flutter directory $FLUTTER_DIR not found"
601+ exit 1
602+ fi
603+
604+ pushd "$FLUTTER_DIR"
605+ flutter pub get
606+ dart analyze
607+ rm -f pubspec.lock
608+ popd
609+
610+ - name : Build Python package
611+ shell : bash
612+ working-directory : ${{ env.SDK_PYTHON }}
613+ run : |
614+ set -euo pipefail
615+ PACKAGE="${{ matrix.package }}"
616+ PYPROJECT="packages/${PACKAGE}/pyproject.toml"
617+
618+ source "$SCRIPTS/common.sh"
619+ patch_toml_versions "$PYPROJECT" "$PYPI_VER"
620+
621+ rm -rf dist
622+ uv build --package "$PACKAGE" --wheel
623+ uv build --package "$PACKAGE" --sdist
624+
625+ - name : Upload artifacts
626+ uses : actions/upload-artifact@v4
627+ with :
628+ name : python-extension-${{ matrix.package }}
629+ if-no-files-found : error
630+ path : |
631+ sdk/python/dist/*.whl
632+ sdk/python/dist/*.tar.gz
633+
550634 # =====================================
551635 # Build flet, flet-cli and flet-desktop
552636 # =====================================
@@ -598,6 +682,7 @@ jobs:
598682 - build_macos
599683 - build_linux
600684 - build_web
685+ - build_flet_extensions
601686 steps :
602687 - name : Setup uv
603688 uses : astral-sh/setup-uv@v6
@@ -613,7 +698,25 @@ jobs:
613698 # remove client to avoid glob conflicts with its contents
614699 rm -rf dist/client
615700
616- for pkg in flet flet_cli flet_desktop flet_desktop_light flet_web; do
701+ for pkg in \
702+ flet \
703+ flet_cli \
704+ flet_desktop \
705+ flet_desktop_light \
706+ flet_web \
707+ flet_ads \
708+ flet_audio \
709+ flet_audio_recorder \
710+ flet_charts \
711+ flet_datatable2 \
712+ flet_flashlight \
713+ flet_geolocator \
714+ flet_lottie \
715+ flet_map \
716+ flet_permission_handler \
717+ flet_rive \
718+ flet_video \
719+ flet_webview; do
617720 uv publish dist/**/${pkg}-*
618721 done
619722
0 commit comments