Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/serious_python/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 4.2.0

* **Android:** `armeabi-v7a` (32-bit ARM) is now bundled for Python **3.13** and **3.14**, not just 3.12 — `flet-dev/python-build` `20260630` publishes 32-bit ARM runtimes for those minors (built with `dart_bridge` **1.4.1**). The `package` command's hardcoded "3.12-only" `armeabi-v7a` skip is replaced by a manifest-driven check against each minor's `PythonRelease.androidAbis`, so the wheel fan-out (and the Android plugin's `abiFilters`) follow whatever python-build publishes per minor.
* Bundle **3.12.13 / 3.13.14 / 3.14.6** (python-build `20260630`; CPython-standalone `20260623`); Pyodide **0.27.7 / 0.29.4 / 314.0.1** (3.14 bumped 314.0.0 → 314.0.1).

## 4.1.1

* **Android:** fix two startup crashes — apps crashing on launch on Android 8.1 and below (API < 28) due to an unguarded `getLongVersionCode()` call, and the interpreter failing to start on a non-primary ABI (e.g. an x86_64 emulator) with `ModuleNotFoundError: No module named '_sysconfigdata__android_<arch>-linux-android'`. See `serious_python_android` 4.1.1.
Expand Down
3 changes: 1 addition & 2 deletions src/serious_python/bin/gen_version_tables.dart
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,7 @@ String _dartFile(String release, String defaultPython, String dartBridge,
..writeln(' final String pyodidePlatformTag;')
..writeln('')
..writeln(' /// Android ABIs python-build publishes distributions for')
..writeln(' /// this minor. 32-bit Android was dropped in 3.13 (PEP 738);')
..writeln(' /// only 3.12 still carries `armeabi-v7a`.')
..writeln(' /// this minor (per the manifest\'s per-minor `android_abis`).')
..writeln(' final List<String> androidAbis;')
..writeln('')
..writeln(' final bool prerelease;')
Expand Down
10 changes: 5 additions & 5 deletions src/serious_python/bin/package_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -378,12 +378,12 @@ class PackageCommand extends Command {
if (archArg.isNotEmpty && !archArg.contains(arch.key)) {
continue;
}
// python-build dropped 32-bit Android in 3.13 (PEP 738); the
// platform plugin only bundles arm64-v8a + x86_64 for those
// versions, so installing 32-bit wheels would be wasted work.
// Only install wheels for ABIs python-build publishes for this
// minor (per python-build's manifest `android_abis`); installing
// for an unpublished ABI would be wasted work.
if (platform == "Android" &&
_pythonShortVersion != "3.12" &&
arch.key == "armeabi-v7a") {
!pythonReleases[_pythonShortVersion]!.androidAbis
.contains(arch.key)) {
continue;
}
String? sitePackagesDir;
Expand Down
21 changes: 10 additions & 11 deletions src/serious_python/lib/src/python_versions.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// GENERATED by `dart run serious_python:gen_version_tables` from python-build's
// manifest.json (release 20260621). Do not edit by hand — edit python-build's
// manifest.json (release 20260630). Do not edit by hand — edit python-build's
// manifest.json, cut a release, bump `pythonReleaseDate`, and regenerate.

const pythonVersionEnvironmentVariable = "SERIOUS_PYTHON_VERSION";
Expand All @@ -10,8 +10,8 @@ const pyodideVersionEnvironmentVariable = "SERIOUS_PYTHON_PYODIDE_VERSION";
const dartBridgeVersionEnvironmentVariable = "DART_BRIDGE_VERSION";

/// python-build release the bundled runtimes come from (YYYYMMDD).
const pythonReleaseDate = "20260621";
const dartBridgeVersion = "1.4.0";
const pythonReleaseDate = "20260630";
const dartBridgeVersion = "1.4.1";
const defaultPythonVersion = "3.14";

class PythonRelease {
Expand All @@ -30,8 +30,7 @@ class PythonRelease {
final String pyodidePlatformTag;

/// Android ABIs python-build publishes distributions for
/// this minor. 32-bit Android was dropped in 3.13 (PEP 738);
/// only 3.12 still carries `armeabi-v7a`.
/// this minor (per the manifest's per-minor `android_abis`).
final List<String> androidAbis;

final bool prerelease;
Expand All @@ -40,26 +39,26 @@ class PythonRelease {
const pythonReleases = <String, PythonRelease>{
"3.12": PythonRelease(
standaloneVersion: "3.12.13",
standaloneReleaseDate: "20260610",
standaloneReleaseDate: "20260623",
pyodideVersion: "0.27.7",
pyodidePlatformTag: "pyodide-2024.0-wasm32",
androidAbis: ["arm64-v8a", "x86_64", "armeabi-v7a"],
prerelease: false,
),
"3.13": PythonRelease(
standaloneVersion: "3.13.14",
standaloneReleaseDate: "20260610",
standaloneReleaseDate: "20260623",
pyodideVersion: "0.29.4",
pyodidePlatformTag: "pyemscripten-2025.0-wasm32",
androidAbis: ["arm64-v8a", "x86_64"],
androidAbis: ["arm64-v8a", "x86_64", "armeabi-v7a"],
prerelease: false,
),
"3.14": PythonRelease(
standaloneVersion: "3.14.6",
standaloneReleaseDate: "20260610",
pyodideVersion: "314.0.0",
standaloneReleaseDate: "20260623",
pyodideVersion: "314.0.1",
pyodidePlatformTag: "pyemscripten-2026.0-wasm32",
androidAbis: ["arm64-v8a", "x86_64"],
androidAbis: ["arm64-v8a", "x86_64", "armeabi-v7a"],
prerelease: false,
),
};
2 changes: 1 addition & 1 deletion src/serious_python/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: serious_python
description: A cross-platform plugin for adding embedded Python runtime to your Flutter apps.
homepage: https://flet.dev
repository: https://github.com/flet-dev/serious-python
version: 4.1.1
version: 4.2.0

platforms:
ios:
Expand Down
4 changes: 4 additions & 0 deletions src/serious_python_android/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 4.2.0

* **`armeabi-v7a` (32-bit ARM) is now bundled for Python 3.13 and 3.14**, not just 3.12. `flet-dev/python-build` `20260630` publishes 32-bit ARM runtimes for those minors (built with `dart_bridge` **1.4.1**), so the per-minor `android_abis` in `python_versions.properties` now include `armeabi-v7a` across the board and `defaultConfig.ndk.abiFilters` + the per-ABI download/copy fan-out pick it up automatically — no Gradle change needed.

## 4.1.1

* Fix app crashing on launch on Android 8.1 and below (API < 28). The `getAppVersion` method-channel handler, called on every startup, used `PackageInfo.getLongVersionCode()` (API 28+) unconditionally. R8 outlines this call into a synthetic class that it can merge with other API 28+ outlines — notably Flutter 3.41's `ImageDecoder`-based image decoder — and invoking that merged class on API < 28 fails verification with `NoClassDefFoundError: android.graphics.ImageDecoder$OnHeaderDecodedListener`. The call is now guarded with a `Build.VERSION.SDK_INT` check, falling back to the deprecated `versionCode` int field on older devices.
Expand Down
7 changes: 3 additions & 4 deletions src/serious_python_android/android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ buildscript {
}

group = "com.flet.serious_python_android"
version = "4.1.1"
version = "4.2.0"

rootProject.allprojects {
repositories {
Expand Down Expand Up @@ -50,9 +50,8 @@ if (pythonFullVersion == null) {
}

// ABIs come from python-build's manifest (the per-minor `android_abis` array,
// flattened into python_versions.properties by `gen_version_tables`). 3.12
// still ships armeabi-v7a; 3.13+ are 64-bit-only (PEP 738). A future minor
// only needs the manifest edit — no Gradle change here.
// flattened into python_versions.properties by `gen_version_tables`). A future
// minor only needs the manifest edit — no Gradle change here.
val abis: List<String> = (pv.getProperty("$pythonVersion.android_abis")
?: throw GradleException(
"serious_python: python_versions.properties has no '$pythonVersion.android_abis'"))
Expand Down
10 changes: 5 additions & 5 deletions src/serious_python_android/android/python_versions.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# GENERATED by `dart run serious_python:gen_version_tables` from
# python-build manifest.json (release 20260621). Do not edit by hand.
# python-build manifest.json (release 20260630). Do not edit by hand.
default_python_version=3.14
dart_bridge_version=1.4.0
python_build_release_date=20260621
dart_bridge_version=1.4.1
python_build_release_date=20260630
3.12.full_version=3.12.13
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.13.full_version=3.13.14
3.13.android_abis=arm64-v8a,x86_64
3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.14.full_version=3.14.6
3.14.android_abis=arm64-v8a,x86_64
3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a
2 changes: 1 addition & 1 deletion src/serious_python_android/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: serious_python_android
description: Android implementation of the serious_python plugin
homepage: https://flet.dev
repository: https://github.com/flet-dev/serious-python
version: 4.1.1
version: 4.2.0

environment:
sdk: ">=3.0.0 <4.0.0"
Expand Down
4 changes: 4 additions & 0 deletions src/serious_python_darwin/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 4.2.0

* Bump the bundled python-build snapshot to `20260630` (`dart_bridge` `1.4.1`); aligns with the `serious_python_*` 4.2.0 release.

## 4.1.1

* Version bump aligning with the `serious_python_*` 4.1.1 release.
Expand Down
10 changes: 5 additions & 5 deletions src/serious_python_darwin/darwin/python_versions.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# GENERATED by `dart run serious_python:gen_version_tables` from
# python-build manifest.json (release 20260621). Do not edit by hand.
# python-build manifest.json (release 20260630). Do not edit by hand.
default_python_version=3.14
dart_bridge_version=1.4.0
python_build_release_date=20260621
dart_bridge_version=1.4.1
python_build_release_date=20260630
3.12.full_version=3.12.13
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.13.full_version=3.13.14
3.13.android_abis=arm64-v8a,x86_64
3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.14.full_version=3.14.6
3.14.android_abis=arm64-v8a,x86_64
3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#
Pod::Spec.new do |s|
s.name = 'serious_python_darwin'
s.version = '4.1.1'
s.version = '4.2.0'
s.summary = 'A cross-platform plugin for adding embedded Python runtime to your Flutter apps.'
s.description = <<-DESC
A cross-platform plugin for adding embedded Python runtime to your Flutter apps.
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python_darwin/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: serious_python_darwin
description: iOS and macOS implementations of the serious_python plugin
homepage: https://flet.dev
repository: https://github.com/flet-dev/serious-python
version: 4.1.1
version: 4.2.0

environment:
# The Swift Package Manager build path needs Flutter 3.44 / Dart 3.11 (the
Expand Down
4 changes: 4 additions & 0 deletions src/serious_python_linux/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 4.2.0

* Bump the bundled python-build snapshot to `20260630` (`dart_bridge` `1.4.1`); aligns with the `serious_python_*` 4.2.0 release.

## 4.1.1

* Version bump aligning with the `serious_python_*` 4.1.1 release.
Expand Down
10 changes: 5 additions & 5 deletions src/serious_python_linux/linux/python_versions.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# GENERATED by `dart run serious_python:gen_version_tables` from
# python-build manifest.json (release 20260621). Do not edit by hand.
# python-build manifest.json (release 20260630). Do not edit by hand.
default_python_version=3.14
dart_bridge_version=1.4.0
python_build_release_date=20260621
dart_bridge_version=1.4.1
python_build_release_date=20260630
3.12.full_version=3.12.13
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.13.full_version=3.13.14
3.13.android_abis=arm64-v8a,x86_64
3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.14.full_version=3.14.6
3.14.android_abis=arm64-v8a,x86_64
3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a
2 changes: 1 addition & 1 deletion src/serious_python_linux/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: serious_python_linux
description: Linux implementations of the serious_python plugin
homepage: https://flet.dev
repository: https://github.com/flet-dev/serious-python
version: 4.1.1
version: 4.2.0

environment:
sdk: '>=3.1.3 <4.0.0'
Expand Down
4 changes: 4 additions & 0 deletions src/serious_python_platform_interface/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 4.2.0

* Version bump aligning with the `serious_python_*` 4.2.0 release.

## 4.1.1

* Version bump aligning with the `serious_python_*` 4.1.1 release.
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python_platform_interface/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: serious_python_platform_interface
description: A common platform interface for the serious_python plugin.
homepage: https://flet.dev
repository: https://github.com/flet-dev/serious-python
version: 4.1.1
version: 4.2.0

environment:
sdk: ">=3.0.0 <4.0.0"
Expand Down
4 changes: 4 additions & 0 deletions src/serious_python_windows/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 4.2.0

* Bump the bundled python-build snapshot to `20260630` (`dart_bridge` `1.4.1`); aligns with the `serious_python_*` 4.2.0 release.

## 4.1.1

* Version bump aligning with the `serious_python_*` 4.1.1 release.
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python_windows/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: serious_python_windows
description: Windows implementations of the serious_python plugin
homepage: https://flet.dev
repository: https://github.com/flet-dev/serious-python
version: 4.1.1
version: 4.2.0

environment:
sdk: '>=3.1.3 <4.0.0'
Expand Down
10 changes: 5 additions & 5 deletions src/serious_python_windows/windows/python_versions.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# GENERATED by `dart run serious_python:gen_version_tables` from
# python-build manifest.json (release 20260621). Do not edit by hand.
# python-build manifest.json (release 20260630). Do not edit by hand.
default_python_version=3.14
dart_bridge_version=1.4.0
python_build_release_date=20260621
dart_bridge_version=1.4.1
python_build_release_date=20260630
3.12.full_version=3.12.13
3.12.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.13.full_version=3.13.14
3.13.android_abis=arm64-v8a,x86_64
3.13.android_abis=arm64-v8a,x86_64,armeabi-v7a
3.14.full_version=3.14.6
3.14.android_abis=arm64-v8a,x86_64
3.14.android_abis=arm64-v8a,x86_64,armeabi-v7a
Loading