Skip to content

Commit 47d7cab

Browse files
committed
ci: pin FLET_VERSION + scope flet_example matrix to Python 3.12
Two changes addressing the same root cause: 1. Pin `--requirements flet==${FLET_VERSION}` (set at the workflow env level to 0.85.3). With `--only-binary :all:` (used for mobile targets), pip otherwise silently downgrades flet to an older version whose transitive deps have wheels for the target python_version / platform. The Dart side then talks the new protocol while Python runs an old flet — silent stall on the IPC socket. 2. Scope the flet_example matrix to Python 3.12 only. msgpack 1.x has no wheel for Android/iOS arm64 on Python 3.13/3.14, and pip with `--only-binary :all:` falls back to an incompatible flet version. Keeping the matrix uniform across platforms (vs. Python-version- filtered) to avoid skew between platform/version coverage. bridge_example keeps its full 3.12/3.13/3.14 × 5-platform matrix — it doesn't depend on flet, so it's a clean regression net for the absorption architecture across all Python minors. Once msgpack wheels for Android/iOS Python 3.13/3.14 land on pypi.flet.dev, the flet_example matrix can be widened back.
1 parent 300cd94 commit 47d7cab

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ env:
1212
SCRIPTS: "${{ github.workspace }}/.github/scripts"
1313
SERIOUS_PYTHON_SITE_PACKAGES: "${{ github.workspace }}/site-packages"
1414
UV_PYTHON: "3.12"
15+
# Pin flet so the Python side matches the Dart-side flet version. With
16+
# `--only-binary :all:`, pip would otherwise silently downgrade to an
17+
# older flet whose transitive deps (e.g. msgpack) have wheels for the
18+
# target python_version / platform, leaving the two halves mismatched.
19+
FLET_VERSION: "0.85.3"
1520

1621
jobs:
1722
macos:
@@ -20,7 +25,12 @@ jobs:
2025
strategy:
2126
fail-fast: false
2227
matrix:
23-
python_version: ['3.12', '3.13', '3.14']
28+
# 3.13/3.14 disabled until msgpack wheels for those Python versions
29+
# land on pypi.flet.dev for Android/iOS — with `--only-binary :all:`
30+
# pip silently downgrades flet to an older version on the mobile
31+
# platforms, leaving Python/Dart sides out of sync. Keeping the
32+
# version matrix consistent across platforms for now.
33+
python_version: ['3.12']
2434
env:
2535
SERIOUS_PYTHON_VERSION: ${{ matrix.python_version }}
2636
steps:
@@ -36,7 +46,7 @@ jobs:
3646
- name: Run tests
3747
working-directory: "src/serious_python/example/flet_example"
3848
run: |
39-
dart run serious_python:main package app/src --platform Darwin --python-version ${{ matrix.python_version }} --requirements flet
49+
dart run serious_python:main package app/src --platform Darwin --python-version ${{ matrix.python_version }} --requirements flet==${{ env.FLET_VERSION }}
4050
flutter test integration_test --device-id macos --dart-define=EXPECTED_PYTHON_VERSION=${{ matrix.python_version }}
4151
4252
ios:
@@ -45,7 +55,7 @@ jobs:
4555
strategy:
4656
fail-fast: false
4757
matrix:
48-
python_version: ['3.12', '3.13', '3.14']
58+
python_version: ['3.12'] # see macos job for the 3.13/3.14 gate
4959
env:
5060
SERIOUS_PYTHON_VERSION: ${{ matrix.python_version }}
5161
steps:
@@ -72,7 +82,7 @@ jobs:
7282
- name: Run tests
7383
working-directory: "src/serious_python/example/flet_example"
7484
run: |
75-
dart run serious_python:main package app/src --platform iOS --python-version ${{ matrix.python_version }} --requirements flet
85+
dart run serious_python:main package app/src --platform iOS --python-version ${{ matrix.python_version }} --requirements flet==${{ env.FLET_VERSION }}
7686
flutter test integration_test --device-id ${{ steps.simulator.outputs.udid }} --dart-define=EXPECTED_PYTHON_VERSION=${{ matrix.python_version }}
7787
7888
android:
@@ -81,7 +91,7 @@ jobs:
8191
strategy:
8292
fail-fast: false
8393
matrix:
84-
python_version: ['3.12', '3.13', '3.14']
94+
python_version: ['3.12'] # see macos job for the 3.13/3.14 gate
8595
env:
8696
SERIOUS_PYTHON_VERSION: ${{ matrix.python_version }}
8797
steps:
@@ -131,7 +141,7 @@ jobs:
131141
pre-emulator-launch-script: |
132142
sdkmanager --list_installed
133143
script: |
134-
cd src/serious_python/example/flet_example && dart run serious_python:main package app/src --platform Android --python-version ${{ matrix.python_version }} --requirements flet
144+
cd src/serious_python/example/flet_example && dart run serious_python:main package app/src --platform Android --python-version ${{ matrix.python_version }} --requirements flet==${{ env.FLET_VERSION }}
135145
cd src/serious_python/example/flet_example && flutter test integration_test --device-id emulator-${{ env.EMULATOR_PORT }} --dart-define=EXPECTED_PYTHON_VERSION=${{ matrix.python_version }}
136146
137147
windows:
@@ -140,7 +150,7 @@ jobs:
140150
strategy:
141151
fail-fast: false
142152
matrix:
143-
python_version: ['3.12', '3.13', '3.14']
153+
python_version: ['3.12'] # see macos job for the 3.13/3.14 gate
144154
env:
145155
SERIOUS_PYTHON_VERSION: ${{ matrix.python_version }}
146156
steps:
@@ -156,7 +166,7 @@ jobs:
156166
- name: Run tests
157167
working-directory: "src/serious_python/example/flet_example"
158168
run: |
159-
dart run serious_python:main package app/src --platform Windows --python-version ${{ matrix.python_version }} --requirements flet
169+
dart run serious_python:main package app/src --platform Windows --python-version ${{ matrix.python_version }} --requirements flet==${{ env.FLET_VERSION }}
160170
flutter test integration_test -d windows --dart-define=EXPECTED_PYTHON_VERSION=${{ matrix.python_version }}
161171
162172
linux:
@@ -165,7 +175,7 @@ jobs:
165175
strategy:
166176
fail-fast: false
167177
matrix:
168-
python_version: ['3.12', '3.13', '3.14']
178+
python_version: ['3.12'] # see macos job for the 3.13/3.14 gate
169179
arch: [arm64, amd64]
170180
include:
171181
- arch: arm64
@@ -231,7 +241,7 @@ jobs:
231241
working-directory: src/serious_python/example/flet_example
232242
run: |
233243
flutter pub get
234-
dart run serious_python:main package app/src --platform Linux --python-version ${{ matrix.python_version }} --requirements flet
244+
dart run serious_python:main package app/src --platform Linux --python-version ${{ matrix.python_version }} --requirements flet==${{ env.FLET_VERSION }}
235245
xvfb-run flutter test integration_test -d linux --dart-define=EXPECTED_PYTHON_VERSION=${{ matrix.python_version }}
236246
237247
bridge_example_macos:

0 commit comments

Comments
 (0)