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
6 changes: 6 additions & 0 deletions src/serious_python/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 6.0.0

* **Breaking (iOS/macOS):** the minimum supported OS is now **iOS 15.0** and **macOS 12.0** (was iOS 13.0 / macOS 11.0), the lowest deployment targets Xcode 27 accepts. Apps must set `platform :ios, '15.0'` / `platform :osx, '12.0'` in their Podfiles and the matching `IPHONEOS_DEPLOYMENT_TARGET` / `MACOSX_DEPLOYMENT_TARGET`. See `serious_python_darwin` 6.0.0 ([#254](https://github.com/flet-dev/serious-python/issues/254)).
* **Packaging (iOS):** the `package` command targets the `ios-15.0-*` wheel platform tags. Wheels tagged for older iOS versions, such as `ios_13_0`, are still accepted ([#254](https://github.com/flet-dev/serious-python/issues/254)).
* Update the bundled CPython to **3.12.15 / 3.13.16 / 3.14.8** ([python-build#46](https://github.com/flet-dev/python-build/pull/46)).

## 5.0.0

* **Breaking (`package` command):** `--exclude`, `--cleanup-app-files` and `--cleanup-package-files` no longer split their values on commas, so paths containing `,` and brace globs such as `**/{tests,docs}` can be passed. Previously a hidden file named `.a,main.py` passed to `--exclude` became two exclusions, dropping `main.py`, and `**/{tests,docs}` was split into two broken globs. Pass each value as its own option: `--exclude build --exclude tests` instead of `--exclude build,tests`. A comma-separated value is now matched as a single path, so an unmigrated command packages the files it used to exclude without failing. The Dart API and runtime are unchanged. `flet build` pins serious_python exactly, so existing Flet releases are unaffected ([#253](https://github.com/flet-dev/serious-python/pull/253), [flet#6839](https://github.com/flet-dev/flet/issues/6839)).
Expand Down
18 changes: 9 additions & 9 deletions src/serious_python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ is specified.

| Short | CPython runtime | Pyodide (web) | Pyodide wheel platform tag |
| ----- | --------------- | ------------- | -------------------------------- |
| 3.12 | 3.12.14 | 0.27.7 | `pyodide-2024.0-wasm32` |
| 3.13 | 3.13.15 | 0.29.4 | `pyemscripten-2025.0-wasm32` |
| 3.14 | 3.14.7 | 314.0.6 | `pyemscripten-2026.0-wasm32` |
| 3.12 | 3.12.15 | 0.27.8 | `pyodide-2024.0-wasm32` |
| 3.13 | 3.13.16 | 0.29.5 | `pyemscripten-2025.0-wasm32` |
| 3.14 | 3.14.8 | 314.0.7 | `pyemscripten-2026.0-wasm32` |

The default is the latest stable row (currently **3.14**) when neither
`--python-version` nor `SERIOUS_PYTHON_VERSION` is set. When running through
Expand Down Expand Up @@ -57,11 +57,11 @@ Import Serious Python package into your app:

`import 'package:serious_python/serious_python.dart';`

The plugin is built against iOS 13.0, so you might need to update iOS version in `ios/Podfile`:
The plugin is built against iOS 15.0, so you might need to update iOS version in `ios/Podfile`:

```bash
# Uncomment this line to define a global platform for your project
platform :ios, '13.0'
platform :ios, '15.0'
```

Package your Python app with the CLI (see [Packaging Python app](#packaging-python-app) below). Its sources are placed **unpacked inside the app bundle**, next to the Python stdlib and site-packages — on Android they ship as a *stored* `app.zip` asset inside the APK and are unpacked once on first launch. Then run it:
Expand Down Expand Up @@ -370,19 +370,19 @@ The following matrix shows which platform you should build on to target specific

### macOS

macOS 11.0 (Big Sur) is the minimal supported version of macOS (the bundled
`Python.framework` requires 11.0).
macOS 12.0 (Monterey) is the minimal supported version of macOS (the bundled
`Python.framework` requires 12.0).

You have to update your Flutter app's `macos/Podfile` to have this line at the very top:

```ruby
platform :osx, '11.0'
platform :osx, '12.0'
```

Also, make sure `macos/Runner.xcodeproj/project.pbxproj` contains:

```objc
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
```

### Android
Expand Down
6 changes: 3 additions & 3 deletions src/serious_python/bin/package_command.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ const spmKeyFileEnvironmentVariable = "SERIOUS_PYTHON_SPM_KEY_FILE";

const platforms = {
"iOS": {
"iphoneos.arm64": {"tag": "ios-13.0-arm64-iphoneos", "mac_ver": ""},
"iphoneos.arm64": {"tag": "ios-15.0-arm64-iphoneos", "mac_ver": ""},
"iphonesimulator.arm64": {
"tag": "ios-13.0-arm64-iphonesimulator",
"tag": "ios-15.0-arm64-iphonesimulator",
"mac_ver": ""
},
"iphonesimulator.x86_64": {
"tag": "ios-13.0-x86_64-iphonesimulator",
"tag": "ios-15.0-x86_64-iphonesimulator",
"mac_ver": ""
}
},
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/bridge_example/ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '13.0'
# platform :ios, '15.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/bridge_example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467

PODFILE CHECKSUM: 3c63482e143d1b91d2d2560aee9fb04ecc74ac7e
PODFILE CHECKSUM: 3ba3a73b1b12adcf321a227a745625fe0888cc82

COCOAPODS: 1.14.3
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down Expand Up @@ -580,7 +580,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -631,7 +631,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/bridge_example/macos/Podfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform :osx, '11.0'
platform :osx, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1

PODFILE CHECKSUM: 346bfb2deb41d4a6ebd6f6799f92188bde2d246f
PODFILE CHECKSUM: 1e95c36afbfd1cb6423ceca4de7a8e1b256fb6ac

COCOAPODS: 1.14.3
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
Expand Down Expand Up @@ -631,7 +631,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
Expand Down Expand Up @@ -681,7 +681,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
Expand Down
9 changes: 0 additions & 9 deletions src/serious_python/example/bridge_example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,5 @@ dev_dependencies:
sdk: flutter
flutter_lints: ^2.0.0

# jni arrives transitively (path_provider -> path_provider_android ->
# jni_flutter -> jni). 1.0.1 added global_jni_env.c, which passes a `va_list`
# where a `void *` is expected: fine on x86_64, where va_list is an array type
# that decays to a pointer, but a hard error on aarch64, where it's a struct.
# That breaks `flutter build linux` on ARM64 hosts. Tracked upstream at
# dart-lang/native#3498 — drop this override once a fixed jni is released.
dependency_overrides:
jni: 1.0.0

flutter:
uses-material-design: true
2 changes: 1 addition & 1 deletion src/serious_python/example/flask_example/ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '13.0'
# platform :ios, '15.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/flask_example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
serious_python_darwin: 4858dfeb2d3d99e30a645bc25851c8f702db1890

PODFILE CHECKSUM: 4f1c12611da7338d21589c0b2ecd6bd20b109694
PODFILE CHECKSUM: 0e525152e3ec397947996fbf92d176f885bd8b2a

COCOAPODS: 1.14.3
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down Expand Up @@ -606,7 +606,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -657,7 +657,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/flask_example/macos/Podfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
platform :osx, '11.0'
platform :osx, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1

PODFILE CHECKSUM: c2e95c8c0fe03c5c57e438583cae4cc732296009
PODFILE CHECKSUM: f0c21717cb7ee9112f915044c74bfceb5b12e02a

COCOAPODS: 1.14.3
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
Expand Down Expand Up @@ -631,7 +631,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
Expand Down Expand Up @@ -681,7 +681,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 11.0;
MACOSX_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
Expand Down
30 changes: 19 additions & 11 deletions src/serious_python/example/flask_example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -156,21 +156,29 @@ packages:
source: hosted
version: "4.1.2"
jni:
dependency: "direct overridden"
dependency: transitive
description:
name: jni
sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f
sha256: "6b9ca0602fef0230e83149afbe3f9f8227e94f2bbe84a1da4f14d699742f402d"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
version: "1.1.0"
jni_flutter:
dependency: transitive
description:
name: jni_flutter
sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6"
sha256: "0dd33d67797560f66e961a6053882d4df54bd345bf063b8fe7ea133f7ad8b191"
url: "https://pub.dev"
source: hosted
version: "1.0.4+1"
jni_util:
dependency: transitive
description:
name: jni_util
sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
version: "1.0.0"
leak_tracker:
dependency: transitive
description:
Expand Down Expand Up @@ -361,42 +369,42 @@ packages:
path: "../.."
relative: true
source: path
version: "5.0.0"
version: "6.0.0"
serious_python_android:
dependency: transitive
description:
path: "../../../serious_python_android"
relative: true
source: path
version: "5.0.0"
version: "6.0.0"
serious_python_darwin:
dependency: transitive
description:
path: "../../../serious_python_darwin"
relative: true
source: path
version: "5.0.0"
version: "6.0.0"
serious_python_linux:
dependency: transitive
description:
path: "../../../serious_python_linux"
relative: true
source: path
version: "5.0.0"
version: "6.0.0"
serious_python_platform_interface:
dependency: transitive
description:
path: "../../../serious_python_platform_interface"
relative: true
source: path
version: "5.0.0"
version: "6.0.0"
serious_python_windows:
dependency: transitive
description:
path: "../../../serious_python_windows"
relative: true
source: path
version: "5.0.0"
version: "6.0.0"
shelf:
dependency: transitive
description:
Expand Down
9 changes: 0 additions & 9 deletions src/serious_python/example/flask_example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,6 @@ dev_dependencies:
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter packages.
# jni arrives transitively (path_provider -> path_provider_android ->
# jni_flutter -> jni). 1.0.1 added global_jni_env.c, which passes a `va_list`
# where a `void *` is expected: fine on x86_64, where va_list is an array type
# that decays to a pointer, but a hard error on aarch64, where it's a struct.
# That breaks `flutter build linux` on ARM64 hosts. Tracked upstream at
# dart-lang/native#3498 — drop this override once a fixed jni is released.
dependency_overrides:
jni: 1.0.0

flutter:

# The following line ensures that the Material Icons font is
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/run_example/ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '13.0'
# platform :ios, '15.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
2 changes: 1 addition & 1 deletion src/serious_python/example/run_example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467

PODFILE CHECKSUM: 4f1c12611da7338d21589c0b2ecd6bd20b109694
PODFILE CHECKSUM: 0e525152e3ec397947996fbf92d176f885bd8b2a

COCOAPODS: 1.14.3
Loading
Loading