pythonnative 0.46.0__tar.gz → 0.48.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pythonnative-0.46.0/src/pythonnative.egg-info → pythonnative-0.48.0}/PKG-INFO +5 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/README.md +4 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/pyproject.toml +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/__init__.py +68 -46
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/animated.py +4 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/appearance.py +3 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/assets/__init__.py +1 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bootstrap.py +2 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/__init__.py +6 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/android.py +1 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/codec.py +8 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/commits.py +27 -5
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/fake.py +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/ios.py +1 -0
- pythonnative-0.48.0/src/pythonnative/bridge/list_store.py +135 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/bridge/web.py +1 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/cli/pn.py +127 -40
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/component.py +70 -45
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/__init__.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/_base.py +13 -7
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/controls.py +27 -170
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/graphics.py +18 -58
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/layout.py +27 -180
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/lists.py +371 -101
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/media.py +15 -87
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/overlays.py +3 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/pressable.py +27 -132
- pythonnative-0.48.0/src/pythonnative/components/props.py +97 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/structural.py +3 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/text.py +14 -136
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devclient.py +71 -33
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/__init__.py +5 -0
- pythonnative-0.48.0/src/pythonnative/devserver/auth.py +158 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/server.py +117 -13
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/host.js +16 -0
- pythonnative-0.48.0/src/pythonnative/devserver/static/layout.js +135 -0
- pythonnative-0.48.0/src/pythonnative/devserver/static/list-store.js +90 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/renderer.js +59 -30
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/shell.js +17 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/element.py +37 -10
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/equality.py +7 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/hooks.py +34 -10
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/hosts/base.py +111 -89
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/hosts/native.py +13 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/hot_reload.py +274 -26
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/icons/__init__.py +10 -13
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/journal.py +8 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/layout.py +3 -3
- pythonnative-0.48.0/src/pythonnative/lint.py +773 -0
- pythonnative-0.48.0/src/pythonnative/list_data.py +206 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/cpp/yoga_jni.cpp +0 -3
- pythonnative-0.48.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +1324 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeValues.kt +33 -17
- pythonnative-0.48.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +5518 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +13 -5
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +16 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +7 -7
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/EffectManagers.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +1 -1
- pythonnative-0.48.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ListStore.kt +97 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SvgManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +85 -30
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +32 -9
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +0 -1
- pythonnative-0.48.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/ErrorOverlay.kt +42 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +5 -0
- pythonnative-0.48.0/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +143 -0
- pythonnative-0.48.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +33 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoRobolectricTest.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +14 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +14 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +3 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +2 -10
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +7 -7
- pythonnative-0.48.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNListStore.swift +122 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +104 -64
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +1 -1
- pythonnative-0.48.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +1425 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeValues.swift +158 -29
- pythonnative-0.48.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +5542 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +33 -14
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +6 -0
- pythonnative-0.48.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNErrorOverlay.swift +47 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +44 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractFixtureTests.swift +14 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNLifecycleTests.swift +4 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +2 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNParityTests.swift +2 -2
- pythonnative-0.48.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +155 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/style.cpp +61 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_views/bridge_backend.py +149 -12
- pythonnative-0.48.0/src/pythonnative/navigation/__init__.py +110 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/navigation/container.py +47 -47
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/navigation/handle.py +263 -160
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/navigation/hooks.py +12 -55
- pythonnative-0.48.0/src/pythonnative/navigation/linking.py +302 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/navigation/navigators.py +388 -335
- pythonnative-0.48.0/src/pythonnative/navigation/ref.py +104 -0
- pythonnative-0.48.0/src/pythonnative/navigation/screen.py +387 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/navigation/state.py +16 -33
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/preview.py +7 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/profiling.py +29 -6
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/android.py +10 -14
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/builder.py +3 -7
- pythonnative-0.48.0/src/pythonnative/project/bundle.py +77 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/doctor.py +6 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/icons.py +7 -7
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/ios.py +19 -9
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/permissions.py +3 -3
- pythonnative-0.48.0/src/pythonnative/prop_checks.py +116 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/reconciler/boundaries.py +12 -6
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/reconciler/core.py +243 -74
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/reconciler/layout_pass.py +4 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/reconciler/vnode.py +5 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/scheduler.py +13 -5
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/__init__.py +0 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/_components.py +3 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/builtins.py +34 -8
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/codegen.py +13 -20
- pythonnative-0.48.0/src/pythonnative/sdk/contract_codegen.py +197 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/module_codegen.py +10 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/schema.py +4 -3
- pythonnative-0.48.0/src/pythonnative/sdk/templates/contracts.kt +60 -0
- pythonnative-0.48.0/src/pythonnative/sdk/templates/contracts.swift +84 -0
- pythonnative-0.48.0/src/pythonnative/sdk/templates/values.swift +180 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/types.py +5 -3
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/storage.py +50 -27
- pythonnative-0.48.0/src/pythonnative/store.py +188 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/style.py +52 -259
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/svg.py +1 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/testing/backend.py +31 -7
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/testing/pytest_plugin.py +8 -3
- pythonnative-0.48.0/src/pythonnative/theme.py +297 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/utils.py +18 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0/src/pythonnative.egg-info}/PKG-INFO +5 -4
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative.egg-info/SOURCES.txt +22 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_appearance.py +9 -37
- pythonnative-0.48.0/tests/test_authoring.py +341 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_bridge.py +11 -6
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_cli.py +89 -10
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_codegen.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_components.py +5 -5
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_core_semantics.py +1 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_devclient.py +64 -12
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_devserver.py +190 -6
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_devserver_ws.py +47 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_e2e_suite_renders.py +65 -2
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_extended_components.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_hooks.py +7 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_hosts.py +36 -15
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_hot_reload.py +279 -0
- pythonnative-0.48.0/tests/test_identity_bailout.py +430 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_inbox.py +11 -10
- pythonnative-0.48.0/tests/test_incremental_pipeline.py +472 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_incremental_render.py +2 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_layout.py +17 -5
- pythonnative-0.48.0/tests/test_lint.py +1000 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_list_features.py +46 -31
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_mutations.py +4 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_native_lists.py +16 -13
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_native_views.py +1 -1
- pythonnative-0.48.0/tests/test_navigation.py +2052 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_new_components.py +14 -12
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_reconciler.py +7 -2
- pythonnative-0.48.0/tests/test_release_packaging.py +318 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_runtime_correctness.py +7 -6
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_runtime_overhaul.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_smoke.py +28 -3
- pythonnative-0.48.0/tests/test_store.py +555 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_style.py +42 -71
- pythonnative-0.48.0/tests/test_theme.py +416 -0
- pythonnative-0.48.0/tests/test_typing_conformance.py +47 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_web_transport.py +4 -2
- pythonnative-0.46.0/src/pythonnative/devserver/static/layout.js +0 -103
- pythonnative-0.46.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +0 -1327
- pythonnative-0.46.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +0 -245
- pythonnative-0.46.0/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +0 -49
- pythonnative-0.46.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +0 -19
- pythonnative-0.46.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +0 -1428
- pythonnative-0.46.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +0 -108
- pythonnative-0.46.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +0 -52
- pythonnative-0.46.0/src/pythonnative/navigation/__init__.py +0 -136
- pythonnative-0.46.0/src/pythonnative/navigation/linking.py +0 -200
- pythonnative-0.46.0/src/pythonnative/navigation/ref.py +0 -121
- pythonnative-0.46.0/src/pythonnative/navigation/screen.py +0 -299
- pythonnative-0.46.0/src/pythonnative/navigation/theme.py +0 -159
- pythonnative-0.46.0/src/pythonnative/sdk/templates/contracts.kt +0 -96
- pythonnative-0.46.0/src/pythonnative/sdk/templates/contracts.swift +0 -108
- pythonnative-0.46.0/src/pythonnative/sdk/templates/values.swift +0 -71
- pythonnative-0.46.0/tests/test_navigation.py +0 -1805
- pythonnative-0.46.0/tests/test_navigation_theme.py +0 -274
- pythonnative-0.46.0/tests/test_release_packaging.py +0 -160
- {pythonnative-0.46.0 → pythonnative-0.48.0}/.github/workflows/release.yml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/LICENSE +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/MANIFEST.in +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/scripts/check-distributions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/scripts/cibuildwheel.toml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/scripts/release-assets.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/setup.cfg +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/setup.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/_ios_log.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/alerts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/animation_graph.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/assets/fonts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/cli/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/components/events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/animation_graph.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/assets.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/bridge.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/colors.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/contracts.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/index.html +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/preview.css +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/LICENSE +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/index.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/index.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/index.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/load.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/load.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/load.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/watcher.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/devserver/ws.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/diagnostics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/gestures.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/handles.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/hosts/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/icons/LICENSE-lucide.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/icons/_lucide.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/icons/_names.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/mutations.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/build.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/gradle.properties +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/settings.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/cpp/CMakeLists.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/assets/PNAssets.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNTheme.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenTransitions.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/graphics/SvgPath.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/AssetModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PlatformModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNKeyboard.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNScrollViews.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_in.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_out.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_hold.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_bottom.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_left.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_right.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_bottom.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_left.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_right.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/drawable/pn_ic_arrow_back.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/values/pn_ids.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/main/res/xml/pn_file_paths.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AssetsAndSvgTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/NativeLifecycleTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundOneRobolectricTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoLogicTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ScreenTransitionsTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/StyleAccessibilityDeviceTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Package.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNEffectManagers.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSvgManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/EnvironmentModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/ImagesModule.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Resources/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNAssets.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/xcshareddata/xcschemes/NativeTests.xcscheme +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/validation.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAssetTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractParityTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/ios/Tests/TestHost/main.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/LICENSE +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/Package.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/VENDORED.md +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/PNStyle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/module.modulemap +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGConfig.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGEnums.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGMacros.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGNode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGNodeLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGNodeStyle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGPixelGrid.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/YGValue.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/include/yoga/Yoga.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/python.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/CMakeLists.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGConfig.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGConfig.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGEnums.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGEnums.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGMacros.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGNode.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGNode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGValue.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/YGValue.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/Yoga.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/Align.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/SizingMode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/config/Config.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/config/Config.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/debug/Log.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/debug/Log.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Align.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/BoxSizing.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Dimension.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Direction.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Display.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Edge.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Errata.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/FlexDirection.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Gutter.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Justify.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/LogLevel.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/MeasureMode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/NodeType.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Overflow.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/PositionType.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Unit.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/Wrap.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/enums/YogaEnums.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/event/event.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/event/event.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/module.modulemap +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/node/CachedMeasurement.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/node/LayoutableChildren.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/node/Node.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/node/Node.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/numeric/Comparison.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/numeric/FloatOptional.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/style/Style.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/style/StyleLength.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/style/StyleValueHandle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native/yoga/yoga/style/StyleValuePool.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/accessibility_info.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/app_state.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/battery.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/biometrics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/camera.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/clipboard.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/device.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/dimensions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/fallback.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/file_system.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/haptics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/images.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/keyboard.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/linking.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/localization.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/location.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/net_info.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/notifications.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/permissions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/registry.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/secure_store.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_modules/share.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/native_views/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/navigation/host.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/net.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/platform.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/platform_metrics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/artifacts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/config.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/deps.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/devices.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/fingerprint.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/lockfile.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/plugins.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/project/runtime_assets.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/py.typed +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/query.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/reconciler/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/reconciler/children.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/refresh.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/runtime.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/commands.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/native_types.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/services.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/sdk/templates/values.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/suspense.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/build.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/build.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/gradle.properties +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/gradlew +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/android_template/settings.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/testing/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/testing/clock.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/testing/harness.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative/testing/queries.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative.egg-info/dependency_links.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative.egg-info/entry_points.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative.egg-info/requires.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/src/pythonnative.egg-info/top_level.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_alert.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_animated.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_animated_easing.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_animated_graph.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_assets.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_async_hooks.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_contract_fixtures.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_device_modules.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_element.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_gesture_activation.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_gesture_composition.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_gestures.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_handles.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_interaction_props.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_ios_log.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_metric_hooks.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_native_modules.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_native_values.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_net.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_platform.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_platform_metrics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_ref.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_release_workflow.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_runtime.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_runtime_contracts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_sdk.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_storage.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_suspense.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_testing_library.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_transitions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_typed_events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.48.0}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythonnative
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.48.0
|
|
4
4
|
Summary: Cross-platform native UI toolkit for Android and iOS
|
|
5
5
|
Author: Owen Carey
|
|
6
6
|
License: MIT License
|
|
@@ -81,7 +81,8 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
81
81
|
- **Native widgets and layout:** Swift and Kotlin component managers own UIKit and Android widgets. The shared Yoga C++ engine computes layout beside the controls, using platform measurements for text and intrinsic sizes.
|
|
82
82
|
- **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling, and animation frames. Component-owned tasks are canceled on unmount.
|
|
83
83
|
- **Incremental reconciliation:** State changes update affected component subtrees. Versioned bridge commits validate operations and acknowledge revisions; events and controlled text inputs carry identities that prevent stale updates.
|
|
84
|
-
- **
|
|
84
|
+
- **Typed, Pythonic authoring:** Components return `pn.Node` and their signatures are their props, so a strict type checker verifies element trees and conditional children. Screens are components whose parameters are their route params (`nav.push(ItemScreen(id=42))`), navigators are module-level values with deep links derived from each screen's `path`, one `Theme` dataclass styles the app and its navigators, `StyleSheet` namespaces give styles typed names, and `pn.Store` holds app state with selector-based re-renders. `pn lint` checks the rules of hooks.
|
|
85
|
+
- **Native lists and navigation:** UIKit collection views and Android recycler views recycle cells for fixed or variable row sizes, grids, sections, and horizontal lists. Native navigation containers present logical screen roots at every nesting level while providers and component state remain in the shared Python tree; navigators take screen options, groups, tab-bar styles, and a navigation ref usable outside components.
|
|
85
86
|
- **Animation and gestures:** Serialized animation graphs support timing with named or bezier easing, springs, React Native's decay model, arithmetic, interpolation, and native scroll and gesture bindings. Swift and Kotlin recognize mobile gestures with Gesture Handler-style activation offsets and update supported animation bindings without Python work on every frame.
|
|
86
87
|
- **Assets and graphics:** Drop images, fonts, and SVGs under `app/assets/` and reference them by path. Density variants, bundled fonts, a vector `Icon` set, `Svg` drawing, gradients, and blur render natively on both platforms and in the browser preview.
|
|
87
88
|
- **Device APIs:** Python facades expose camera, location, notifications, storage, permissions, keyboard, dimensions and pixel ratio, device info, localization, accessibility settings, and other native services, with a Python fallback for headless tests. Test permissions and platform behavior on your deployment targets.
|
|
@@ -108,7 +109,7 @@ import pythonnative as pn
|
|
|
108
109
|
|
|
109
110
|
|
|
110
111
|
@pn.component
|
|
111
|
-
def App():
|
|
112
|
+
def App() -> pn.Node:
|
|
112
113
|
count, set_count = pn.use_state(0)
|
|
113
114
|
return pn.Column(
|
|
114
115
|
pn.Text(f"Count: {count}", style=pn.style(font_size=24, bold=True)),
|
|
@@ -116,7 +117,7 @@ def App():
|
|
|
116
117
|
"Tap me",
|
|
117
118
|
on_press=lambda: set_count(count + 1),
|
|
118
119
|
),
|
|
119
|
-
style=pn.style(
|
|
120
|
+
style=pn.style(gap=12, padding=16),
|
|
120
121
|
)
|
|
121
122
|
```
|
|
122
123
|
|
|
@@ -35,7 +35,8 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
35
35
|
- **Native widgets and layout:** Swift and Kotlin component managers own UIKit and Android widgets. The shared Yoga C++ engine computes layout beside the controls, using platform measurements for text and intrinsic sizes.
|
|
36
36
|
- **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling, and animation frames. Component-owned tasks are canceled on unmount.
|
|
37
37
|
- **Incremental reconciliation:** State changes update affected component subtrees. Versioned bridge commits validate operations and acknowledge revisions; events and controlled text inputs carry identities that prevent stale updates.
|
|
38
|
-
- **
|
|
38
|
+
- **Typed, Pythonic authoring:** Components return `pn.Node` and their signatures are their props, so a strict type checker verifies element trees and conditional children. Screens are components whose parameters are their route params (`nav.push(ItemScreen(id=42))`), navigators are module-level values with deep links derived from each screen's `path`, one `Theme` dataclass styles the app and its navigators, `StyleSheet` namespaces give styles typed names, and `pn.Store` holds app state with selector-based re-renders. `pn lint` checks the rules of hooks.
|
|
39
|
+
- **Native lists and navigation:** UIKit collection views and Android recycler views recycle cells for fixed or variable row sizes, grids, sections, and horizontal lists. Native navigation containers present logical screen roots at every nesting level while providers and component state remain in the shared Python tree; navigators take screen options, groups, tab-bar styles, and a navigation ref usable outside components.
|
|
39
40
|
- **Animation and gestures:** Serialized animation graphs support timing with named or bezier easing, springs, React Native's decay model, arithmetic, interpolation, and native scroll and gesture bindings. Swift and Kotlin recognize mobile gestures with Gesture Handler-style activation offsets and update supported animation bindings without Python work on every frame.
|
|
40
41
|
- **Assets and graphics:** Drop images, fonts, and SVGs under `app/assets/` and reference them by path. Density variants, bundled fonts, a vector `Icon` set, `Svg` drawing, gradients, and blur render natively on both platforms and in the browser preview.
|
|
41
42
|
- **Device APIs:** Python facades expose camera, location, notifications, storage, permissions, keyboard, dimensions and pixel ratio, device info, localization, accessibility settings, and other native services, with a Python fallback for headless tests. Test permissions and platform behavior on your deployment targets.
|
|
@@ -62,7 +63,7 @@ import pythonnative as pn
|
|
|
62
63
|
|
|
63
64
|
|
|
64
65
|
@pn.component
|
|
65
|
-
def App():
|
|
66
|
+
def App() -> pn.Node:
|
|
66
67
|
count, set_count = pn.use_state(0)
|
|
67
68
|
return pn.Column(
|
|
68
69
|
pn.Text(f"Count: {count}", style=pn.style(font_size=24, bold=True)),
|
|
@@ -70,7 +71,7 @@ def App():
|
|
|
70
71
|
"Tap me",
|
|
71
72
|
on_press=lambda: set_count(count + 1),
|
|
72
73
|
),
|
|
73
|
-
style=pn.style(
|
|
74
|
+
style=pn.style(gap=12, padding=16),
|
|
74
75
|
)
|
|
75
76
|
```
|
|
76
77
|
|
|
@@ -18,16 +18,20 @@ Key building blocks:
|
|
|
18
18
|
[`use_effect`][pythonnative.use_effect],
|
|
19
19
|
[`use_reducer`][pythonnative.use_reducer], etc.) manage state, side
|
|
20
20
|
effects, and context inside `@component` functions.
|
|
21
|
-
- **Navigation
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
[`
|
|
25
|
-
[`
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
- **Navigation**: screens are components whose parameters are their
|
|
22
|
+
route params, listed in module-level
|
|
23
|
+
[`StackNavigator`][pythonnative.StackNavigator],
|
|
24
|
+
[`TabNavigator`][pythonnative.TabNavigator], or
|
|
25
|
+
[`DrawerNavigator`][pythonnative.DrawerNavigator] values and rendered
|
|
26
|
+
by [`NavigationContainer`][pythonnative.NavigationContainer].
|
|
27
|
+
``nav.push(ItemScreen(id=42))`` is checked by the type checker.
|
|
28
|
+
- **Styling** uses a ``style`` dict per element (or a list of dicts),
|
|
29
|
+
typed by the [`Style`][pythonnative.style.Style] ``TypedDict``.
|
|
30
|
+
[`StyleSheet`][pythonnative.StyleSheet] namespaces group named
|
|
31
|
+
styles, and one [`Theme`][pythonnative.Theme] styles the app and
|
|
32
|
+
its navigators.
|
|
33
|
+
- **State** lives in hooks for a component and in a typed
|
|
34
|
+
[`Store`][pythonnative.Store] for the app.
|
|
31
35
|
- **Animations** use the ``Animated`` namespace. Serialized graphs
|
|
32
36
|
connect values, arithmetic, interpolation, and style bindings.
|
|
33
37
|
Native timing, spring, decay, scroll, and gesture drivers update
|
|
@@ -52,17 +56,17 @@ Example:
|
|
|
52
56
|
import pythonnative as pn
|
|
53
57
|
|
|
54
58
|
@pn.component
|
|
55
|
-
def App():
|
|
59
|
+
def App() -> pn.Node:
|
|
56
60
|
count, set_count = pn.use_state(0)
|
|
57
61
|
return pn.Column(
|
|
58
62
|
pn.Text(f"Count: {count}", style=pn.style(font_size=24)),
|
|
59
63
|
pn.Button("+", on_press=lambda: set_count(count + 1)),
|
|
60
|
-
style=pn.style(
|
|
64
|
+
style=pn.style(gap=12),
|
|
61
65
|
)
|
|
62
66
|
```
|
|
63
67
|
"""
|
|
64
68
|
|
|
65
|
-
__version__ = "0.
|
|
69
|
+
__version__ = "0.48.0"
|
|
66
70
|
|
|
67
71
|
from . import appearance, diagnostics, gestures, icons, runtime, sdk, svg
|
|
68
72
|
from .alerts import Alert
|
|
@@ -117,8 +121,9 @@ from .components import (
|
|
|
117
121
|
WebNavigationEvent,
|
|
118
122
|
WebView,
|
|
119
123
|
)
|
|
124
|
+
from .components.props import AccessibilityProps, ViewProps
|
|
120
125
|
from .diagnostics import HookOrderError
|
|
121
|
-
from .element import Element
|
|
126
|
+
from .element import Element, Node
|
|
122
127
|
from .gestures import GestureSpec, SwipeDirection
|
|
123
128
|
from .handles import ScrollOffset, ScrollViewHandle, TextInputHandle, ViewHandle, WebViewHandle
|
|
124
129
|
from .hooks import (
|
|
@@ -190,28 +195,24 @@ from .native_modules import (
|
|
|
190
195
|
use_screen_reader_enabled,
|
|
191
196
|
)
|
|
192
197
|
from .navigation import (
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
LinkingConfig,
|
|
198
|
+
DrawerNavigator,
|
|
199
|
+
Group,
|
|
196
200
|
Navigation,
|
|
197
|
-
NavigationColors,
|
|
198
201
|
NavigationContainer,
|
|
199
202
|
NavigationRef,
|
|
200
203
|
NavigationState,
|
|
201
|
-
|
|
204
|
+
Navigator,
|
|
202
205
|
Route,
|
|
203
|
-
|
|
206
|
+
Screen,
|
|
204
207
|
ScreenOptions,
|
|
208
|
+
StackNavigator,
|
|
205
209
|
TabBarStyle,
|
|
206
|
-
|
|
207
|
-
create_navigation_ref,
|
|
208
|
-
create_stack_navigator,
|
|
209
|
-
create_tab_navigator,
|
|
210
|
+
TabNavigator,
|
|
210
211
|
use_focus_effect,
|
|
211
212
|
use_is_focused,
|
|
212
213
|
use_navigation,
|
|
213
|
-
use_navigation_theme,
|
|
214
214
|
use_route,
|
|
215
|
+
use_screen_options,
|
|
215
216
|
)
|
|
216
217
|
from .net import HTTPError, Response, fetch
|
|
217
218
|
from .platform import Platform, get_platform
|
|
@@ -220,9 +221,9 @@ from .runtime import run_async, run_blocking
|
|
|
220
221
|
from .scheduler import batch_updates
|
|
221
222
|
from .sdk import Props, define_component, element_factory
|
|
222
223
|
from .storage import AsyncStorage, use_persisted_state
|
|
224
|
+
from .store import Store, use_store
|
|
223
225
|
from .style import (
|
|
224
|
-
|
|
225
|
-
DEFAULT_LIGHT_THEME,
|
|
226
|
+
ABSOLUTE_FILL,
|
|
226
227
|
AccessibilityAction,
|
|
227
228
|
AccessibilityState,
|
|
228
229
|
AccessibilityValue,
|
|
@@ -254,15 +255,23 @@ from .style import (
|
|
|
254
255
|
TextAlign,
|
|
255
256
|
TextDecoration,
|
|
256
257
|
TextTransform,
|
|
257
|
-
Theme,
|
|
258
|
-
ThemeContext,
|
|
259
258
|
TransformSpec,
|
|
260
|
-
default_theme,
|
|
261
259
|
resolve_style,
|
|
262
260
|
style,
|
|
263
|
-
use_theme,
|
|
264
261
|
)
|
|
265
262
|
from .suspense import Resource, lazy, start_resource
|
|
263
|
+
from .theme import (
|
|
264
|
+
DARK_THEME,
|
|
265
|
+
LIGHT_THEME,
|
|
266
|
+
Colors,
|
|
267
|
+
Radii,
|
|
268
|
+
Spacing,
|
|
269
|
+
Theme,
|
|
270
|
+
ThemeProvider,
|
|
271
|
+
Typography,
|
|
272
|
+
use_styles,
|
|
273
|
+
use_theme,
|
|
274
|
+
)
|
|
266
275
|
|
|
267
276
|
__all__ = [
|
|
268
277
|
"UNSET",
|
|
@@ -276,6 +285,9 @@ __all__ = [
|
|
|
276
285
|
"DatePicker",
|
|
277
286
|
"ErrorBoundary",
|
|
278
287
|
"FlatList",
|
|
288
|
+
"ListData",
|
|
289
|
+
"Section",
|
|
290
|
+
"ViewableItem",
|
|
279
291
|
"Fragment",
|
|
280
292
|
"Icon",
|
|
281
293
|
"IconName",
|
|
@@ -311,6 +323,9 @@ __all__ = [
|
|
|
311
323
|
"TouchableOpacity",
|
|
312
324
|
"View",
|
|
313
325
|
"WebView",
|
|
326
|
+
# Shared props
|
|
327
|
+
"AccessibilityProps",
|
|
328
|
+
"ViewProps",
|
|
314
329
|
# Typed events
|
|
315
330
|
"ContentSizeEvent",
|
|
316
331
|
"KeyPressEvent",
|
|
@@ -331,6 +346,7 @@ __all__ = [
|
|
|
331
346
|
# Core
|
|
332
347
|
"Component",
|
|
333
348
|
"Element",
|
|
349
|
+
"Node",
|
|
334
350
|
"component",
|
|
335
351
|
"create_screen",
|
|
336
352
|
"memo",
|
|
@@ -370,28 +386,24 @@ __all__ = [
|
|
|
370
386
|
"lazy",
|
|
371
387
|
"start_resource",
|
|
372
388
|
# Navigation
|
|
373
|
-
"
|
|
374
|
-
"
|
|
375
|
-
"LinkingConfig",
|
|
389
|
+
"DrawerNavigator",
|
|
390
|
+
"Group",
|
|
376
391
|
"Navigation",
|
|
377
|
-
"NavigationColors",
|
|
378
392
|
"NavigationContainer",
|
|
379
393
|
"NavigationRef",
|
|
380
394
|
"NavigationState",
|
|
381
|
-
"
|
|
395
|
+
"Navigator",
|
|
382
396
|
"Route",
|
|
383
|
-
"
|
|
397
|
+
"Screen",
|
|
384
398
|
"ScreenOptions",
|
|
399
|
+
"StackNavigator",
|
|
385
400
|
"TabBarStyle",
|
|
386
|
-
"
|
|
387
|
-
"use_navigation_theme",
|
|
388
|
-
"create_drawer_navigator",
|
|
389
|
-
"create_stack_navigator",
|
|
390
|
-
"create_tab_navigator",
|
|
401
|
+
"TabNavigator",
|
|
391
402
|
"use_focus_effect",
|
|
392
403
|
"use_is_focused",
|
|
393
404
|
"use_navigation",
|
|
394
405
|
"use_route",
|
|
406
|
+
"use_screen_options",
|
|
395
407
|
# Styling - typed primitives
|
|
396
408
|
"AccessibilityAction",
|
|
397
409
|
"AccessibilityState",
|
|
@@ -402,8 +414,6 @@ __all__ = [
|
|
|
402
414
|
"AutoCapitalize",
|
|
403
415
|
"BorderStyle",
|
|
404
416
|
"Color",
|
|
405
|
-
"DEFAULT_DARK_THEME",
|
|
406
|
-
"DEFAULT_LIGHT_THEME",
|
|
407
417
|
"Dimension",
|
|
408
418
|
"Display",
|
|
409
419
|
"DynamicColor",
|
|
@@ -427,9 +437,16 @@ __all__ = [
|
|
|
427
437
|
"TextDecoration",
|
|
428
438
|
"TextTransform",
|
|
429
439
|
"Theme",
|
|
430
|
-
"
|
|
440
|
+
"ThemeProvider",
|
|
441
|
+
"Colors",
|
|
442
|
+
"Typography",
|
|
443
|
+
"Spacing",
|
|
444
|
+
"Radii",
|
|
445
|
+
"LIGHT_THEME",
|
|
446
|
+
"DARK_THEME",
|
|
447
|
+
"ABSOLUTE_FILL",
|
|
448
|
+
"use_styles",
|
|
431
449
|
"TransformSpec",
|
|
432
|
-
"default_theme",
|
|
433
450
|
"resolve_style",
|
|
434
451
|
"style",
|
|
435
452
|
"use_theme",
|
|
@@ -484,6 +501,9 @@ __all__ = [
|
|
|
484
501
|
"Vibration",
|
|
485
502
|
"use_app_state",
|
|
486
503
|
"use_net_info",
|
|
504
|
+
# Stores
|
|
505
|
+
"Store",
|
|
506
|
+
"use_store",
|
|
487
507
|
# Networking + persistence
|
|
488
508
|
"AsyncStorage",
|
|
489
509
|
"fetch",
|
|
@@ -505,3 +525,5 @@ __all__ = [
|
|
|
505
525
|
"element_factory",
|
|
506
526
|
"sdk",
|
|
507
527
|
]
|
|
528
|
+
|
|
529
|
+
from .list_data import ListData, Section, ViewableItem
|
|
@@ -2180,7 +2180,10 @@ def use_animated_value(initial: float = 0.0) -> AnimatedValue:
|
|
|
2180
2180
|
"""
|
|
2181
2181
|
from .hooks import use_memo
|
|
2182
2182
|
|
|
2183
|
-
return use_memo(
|
|
2183
|
+
return use_memo(
|
|
2184
|
+
lambda: AnimatedValue(initial),
|
|
2185
|
+
[], # pn: ignore[PN103] the initial value is read once, like use_state
|
|
2186
|
+
)
|
|
2184
2187
|
|
|
2185
2188
|
|
|
2186
2189
|
__all__ = [
|
|
@@ -120,5 +120,8 @@ def get_system_color_scheme() -> str:
|
|
|
120
120
|
def reset_color_scheme() -> None:
|
|
121
121
|
"""Reset to system ``"light"`` with no override. Intended for tests."""
|
|
122
122
|
global _system_scheme, _override_scheme
|
|
123
|
+
changed = get_color_scheme() != "light"
|
|
123
124
|
_system_scheme = "light"
|
|
124
125
|
_override_scheme = None
|
|
126
|
+
if changed:
|
|
127
|
+
_notify_subscribers()
|
|
@@ -44,6 +44,7 @@ from dataclasses import dataclass, field
|
|
|
44
44
|
from pathlib import Path
|
|
45
45
|
from typing import Any, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple, Union
|
|
46
46
|
|
|
47
|
+
from ..utils import overlay_root
|
|
47
48
|
from .fonts import FontFace, FontParseError, read_font_face, weight_from_name
|
|
48
49
|
|
|
49
50
|
__all__ = [
|
|
@@ -437,8 +438,6 @@ def assets_roots() -> List[Path]:
|
|
|
437
438
|
back to the native ``Assets`` module.
|
|
438
439
|
"""
|
|
439
440
|
roots: List[Path] = []
|
|
440
|
-
from ..hot_reload import overlay_root
|
|
441
|
-
|
|
442
441
|
overlay = overlay_root()
|
|
443
442
|
if overlay:
|
|
444
443
|
roots.append(Path(overlay) / "app" / ASSETS_DIR)
|
|
@@ -560,7 +559,6 @@ def configure_native(paths: Optional[Iterable[str]] = None) -> bool:
|
|
|
560
559
|
if paths is not None and not any(_is_asset_path(path) for path in paths):
|
|
561
560
|
return False
|
|
562
561
|
from ..bridge import has_transport
|
|
563
|
-
from ..hot_reload import overlay_root
|
|
564
562
|
|
|
565
563
|
overlay = overlay_root()
|
|
566
564
|
if not overlay or not has_transport():
|
|
@@ -79,10 +79,11 @@ def start(dev: bool = False, strict: bool = False) -> Dict[str, Any]:
|
|
|
79
79
|
if dev_mode:
|
|
80
80
|
# Debug builds are dev clients: connect to `pn start` when
|
|
81
81
|
# the build (or a remembered connection) names a server.
|
|
82
|
+
# Release bundles omit this module; they never pass dev=True.
|
|
82
83
|
from . import devclient
|
|
83
84
|
|
|
84
85
|
client = devclient.start_if_configured()
|
|
85
|
-
status_["dev_server"] = client.
|
|
86
|
+
status_["dev_server"] = client.server_label if client is not None else None
|
|
86
87
|
# An overlay from the last session may already hold assets the
|
|
87
88
|
# bundle doesn't; point the native resolver at it right away.
|
|
88
89
|
from .assets import configure_native
|
|
@@ -199,7 +199,7 @@ def native_callback(kind: str, tag: int, name: str, payload: str) -> Optional[st
|
|
|
199
199
|
|
|
200
200
|
loop = get_loop()
|
|
201
201
|
if loop.is_running() and not _on_loop_thread(loop):
|
|
202
|
-
if kind == "event" and name in {"on_scroll", "on_selection_change", "on_gesture_update"}:
|
|
202
|
+
if kind == "event" and name in {"on_scroll", "on_window", "on_selection_change", "on_gesture_update"}:
|
|
203
203
|
key = (tag, name)
|
|
204
204
|
slot = _continuous.get(key)
|
|
205
205
|
if slot is None:
|
|
@@ -252,7 +252,11 @@ def _on_event(tag: int, name: str, payload: str) -> Optional[str]:
|
|
|
252
252
|
args = codec.loads(payload)
|
|
253
253
|
from ..native_views import get_backend
|
|
254
254
|
|
|
255
|
-
|
|
255
|
+
backend = get_backend()
|
|
256
|
+
defer = getattr(backend, "defer_event", None)
|
|
257
|
+
if defer is not None and defer(tag, name, args):
|
|
258
|
+
return None
|
|
259
|
+
accept = getattr(backend, "accept_event", None)
|
|
256
260
|
if accept is not None:
|
|
257
261
|
if not accept(tag, name, args):
|
|
258
262
|
return None
|
|
@@ -131,15 +131,20 @@ def build_transaction(
|
|
|
131
131
|
"""
|
|
132
132
|
from ..sdk.schema import COMPONENTS
|
|
133
133
|
|
|
134
|
-
names
|
|
134
|
+
names: dict[int, str] = {}
|
|
135
|
+
base_names = types or {}
|
|
136
|
+
fields_cache: dict[str, frozenset[str]] = {}
|
|
135
137
|
|
|
136
138
|
def python_fields(name: str) -> frozenset[str]:
|
|
139
|
+
if name in fields_cache:
|
|
140
|
+
return fields_cache[name]
|
|
137
141
|
schema = COMPONENTS.get(name)
|
|
138
|
-
|
|
142
|
+
fields_cache[name] = (
|
|
139
143
|
frozenset(key for key, field in schema.props.items() if field.get("native", {}).get("python_only"))
|
|
140
144
|
if schema
|
|
141
145
|
else frozenset()
|
|
142
146
|
)
|
|
147
|
+
return fields_cache[name]
|
|
143
148
|
|
|
144
149
|
encoded: List[Any] = []
|
|
145
150
|
sidecar: List[Tuple[int, Dict[str, Any]]] = []
|
|
@@ -152,7 +157,7 @@ def build_transaction(
|
|
|
152
157
|
sidecar.append((op.tag, python))
|
|
153
158
|
elif isinstance(op, UpdateOp):
|
|
154
159
|
removed = [key for key, value in op.changed_props.items() if value is UNSET]
|
|
155
|
-
wire, python = split_props(op.changed_props, python_fields(names.get(op.tag, "")))
|
|
160
|
+
wire, python = split_props(op.changed_props, python_fields(names.get(op.tag) or base_names.get(op.tag, "")))
|
|
156
161
|
encoded.append(["u", op.tag, wire, removed])
|
|
157
162
|
if python:
|
|
158
163
|
sidecar.append((op.tag, python))
|
|
@@ -10,11 +10,12 @@ from __future__ import annotations
|
|
|
10
10
|
import math
|
|
11
11
|
from collections.abc import Iterator, MutableMapping
|
|
12
12
|
from dataclasses import dataclass, field
|
|
13
|
-
from typing import Any
|
|
13
|
+
from typing import Any, Callable
|
|
14
14
|
|
|
15
15
|
from ..profiling import count, profiled
|
|
16
|
+
from .list_store import ListStore
|
|
16
17
|
|
|
17
|
-
PROTOCOL_VERSION =
|
|
18
|
+
PROTOCOL_VERSION = 4
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class CommitError(RuntimeError):
|
|
@@ -29,6 +30,7 @@ class ViewState:
|
|
|
29
30
|
props: dict[str, Any]
|
|
30
31
|
parent: int | None = None
|
|
31
32
|
children: list[int] = field(default_factory=list)
|
|
33
|
+
list_store: ListStore | None = None
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
class ViewOverlay(MutableMapping[int, ViewState]):
|
|
@@ -72,7 +74,9 @@ class ViewOverlay(MutableMapping[int, ViewState]):
|
|
|
72
74
|
"""Return a writable copy of this record, copying it at most once."""
|
|
73
75
|
if tag not in self.changed:
|
|
74
76
|
view = self[tag]
|
|
75
|
-
self.changed[tag] = ViewState(
|
|
77
|
+
self.changed[tag] = ViewState(
|
|
78
|
+
view.type_name, dict(view.props), view.parent, list(view.children), view.list_store
|
|
79
|
+
)
|
|
76
80
|
count("commit.records_copied")
|
|
77
81
|
return self.changed[tag]
|
|
78
82
|
|
|
@@ -93,11 +97,13 @@ class CommitState:
|
|
|
93
97
|
revision: int = 0
|
|
94
98
|
views: MutableMapping[int, ViewState] = field(default_factory=dict)
|
|
95
99
|
|
|
100
|
+
_list_publications: dict[int, Callable[[], None]] = field(default_factory=dict)
|
|
101
|
+
|
|
96
102
|
@profiled("validation")
|
|
97
103
|
def prepare(self, envelope: Any) -> CommitState:
|
|
98
104
|
"""Validate without mutating this state and return the candidate state."""
|
|
99
105
|
if not isinstance(envelope, dict) or envelope.get("version") != PROTOCOL_VERSION:
|
|
100
|
-
raise CommitError("Expected a protocol
|
|
106
|
+
raise CommitError("Expected a protocol v4 commit envelope; rebuild the native client")
|
|
101
107
|
application, surface, revision = (envelope.get(k) for k in ("application", "surface", "revision"))
|
|
102
108
|
if not isinstance(application, str) or not application or type(surface) is not int or surface <= 0:
|
|
103
109
|
raise CommitError("Invalid application or surface identity")
|
|
@@ -120,6 +126,9 @@ class CommitState:
|
|
|
120
126
|
|
|
121
127
|
def publish(self) -> CommitState:
|
|
122
128
|
"""Accept a successfully mounted candidate; the prior state is consumed."""
|
|
129
|
+
for publish in self._list_publications.values():
|
|
130
|
+
publish()
|
|
131
|
+
self._list_publications.clear()
|
|
123
132
|
if isinstance(self.views, ViewOverlay):
|
|
124
133
|
self.views = self.views.publish()
|
|
125
134
|
return self
|
|
@@ -139,7 +148,11 @@ class CommitState:
|
|
|
139
148
|
if tag in self.views or not isinstance(op[2], str) or not op[2] or not isinstance(op[3], dict):
|
|
140
149
|
raise ValueError("Invalid or duplicate create")
|
|
141
150
|
self._validate_props(op[2], op[3], False)
|
|
142
|
-
|
|
151
|
+
view = ViewState(op[2], dict(op[3]))
|
|
152
|
+
self.views[tag] = view
|
|
153
|
+
if op[2] == "VirtualList":
|
|
154
|
+
view.list_store = ListStore()
|
|
155
|
+
self._prepare_list(tag, view, op[3])
|
|
143
156
|
return
|
|
144
157
|
view = self.views[tag] if code == "f" else self._edit(tag)
|
|
145
158
|
if code == "u":
|
|
@@ -154,6 +167,8 @@ class CommitState:
|
|
|
154
167
|
from ..mutations import UNSET
|
|
155
168
|
|
|
156
169
|
self._validate_props(view.type_name, {name: UNSET for name in removed}, True)
|
|
170
|
+
if view.list_store is not None:
|
|
171
|
+
self._prepare_list(tag, view, op[2])
|
|
157
172
|
view.props.update(op[2])
|
|
158
173
|
for name in removed:
|
|
159
174
|
view.props.pop(name, None)
|
|
@@ -185,6 +200,13 @@ class CommitState:
|
|
|
185
200
|
if op[4] < 0 or op[5] < 0:
|
|
186
201
|
raise ValueError("Frame sizes must be nonnegative")
|
|
187
202
|
|
|
203
|
+
def _prepare_list(self, tag: int, view: ViewState, props: dict[str, Any]) -> None:
|
|
204
|
+
if "dataset" in props:
|
|
205
|
+
if tag in self._list_publications:
|
|
206
|
+
raise ValueError("A list may receive only one dataset patch per commit")
|
|
207
|
+
assert view.list_store is not None
|
|
208
|
+
self._list_publications[tag] = view.list_store.prepare(props["dataset"])
|
|
209
|
+
|
|
188
210
|
@staticmethod
|
|
189
211
|
def _validate_props(name: str, props: dict[str, Any], partial: bool) -> None:
|
|
190
212
|
from ..sdk.schema import COMPONENTS
|
|
@@ -125,9 +125,9 @@ class FakeTransport:
|
|
|
125
125
|
child.parent = parent
|
|
126
126
|
elif code == "d":
|
|
127
127
|
_, tag = op
|
|
128
|
-
|
|
129
|
-
if view is None:
|
|
128
|
+
if tag not in self.views:
|
|
130
129
|
raise AssertionError(f"destroy: unknown tag {tag}")
|
|
130
|
+
view = self.views.pop(tag)
|
|
131
131
|
if view.parent is not None:
|
|
132
132
|
view.parent.children.remove(view)
|
|
133
133
|
view.parent = None
|