pythonnative 0.53.1__tar.gz → 0.54.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.53.1/src/pythonnative.egg-info → pythonnative-0.54.0}/PKG-INFO +4 -4
- {pythonnative-0.53.1 → pythonnative-0.54.0}/README.md +3 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/pyproject.toml +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/__init__.py +89 -28
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/audio/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/background/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/biometrics/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/__init__.py +8 -5
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/android.py +7 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/codec.py +2 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/core.py +72 -10
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/fake.py +84 -13
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/ios.py +7 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bridge/web.py +7 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/schema.json +45 -97
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/_base.py +1 -7
- pythonnative-0.54.0/src/pythonnative/components/bottom_sheet.py +284 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/controls.py +7 -7
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/events.py +4 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/graphics.py +4 -4
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/lists.py +55 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/media.py +3 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/props.py +43 -4
- pythonnative-0.54.0/src/pythonnative/components/swipeable.py +182 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/text.py +4 -4
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/compat.py +1 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/core/mount.js +76 -10
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/core/pn_core.js +1 -1
- pythonnative-0.54.0/src/pythonnative/devserver/static/core/pn_core.wasm +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/preview.css +3 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/renderer.js +604 -97
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/shell.js +2 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/events.py +43 -5
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/gestures.py +63 -33
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/hot_reload.py +14 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/icons/__init__.py +2 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/journal.py +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/lint.py +112 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/location/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/native/schema.json +45 -97
- pythonnative-0.54.0/src/pythonnative/motion/__init__.py +127 -0
- pythonnative-0.54.0/src/pythonnative/motion/animations.py +686 -0
- pythonnative-0.54.0/src/pythonnative/motion/compiler.py +766 -0
- pythonnative-0.54.0/src/pythonnative/motion/hooks.py +185 -0
- pythonnative-0.54.0/src/pythonnative/motion/layout.py +264 -0
- pythonnative-0.54.0/src/pythonnative/motion/precompile.py +159 -0
- pythonnative-0.54.0/src/pythonnative/motion/program.py +147 -0
- pythonnative-0.54.0/src/pythonnative/motion/runtime.py +478 -0
- pythonnative-0.54.0/src/pythonnative/motion/shared.py +95 -0
- pythonnative-0.54.0/src/pythonnative/motion/transitions.py +60 -0
- pythonnative-0.54.0/src/pythonnative/motion/worklets.py +360 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/cpp/pncore_jni.cpp +12 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +24 -4
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +2 -2
- pythonnative-0.54.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/MotionTiming.kt +163 -0
- pythonnative-0.54.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNItemAnimator.kt +212 -0
- pythonnative-0.54.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNMotionApplier.kt +53 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +28 -5
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +14 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +103 -1
- pythonnative-0.54.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SharedElementFlight.kt +158 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +0 -8
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +18 -31
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +37 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/core/PNCore.kt +35 -8
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/mount/MountDecoder.kt +32 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/mount/Mounter.kt +126 -3
- pythonnative-0.54.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/MotionRobolectricTest.kt +309 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/MountDecoderTest.kt +28 -10
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/include/pn_core.h +27 -7
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/core.cpp +46 -16
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/core.h +5 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/gestures.cpp +0 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/gestures.h +0 -1
- pythonnative-0.54.0/src/pythonnative/native/core/src/motion_anim.cpp +657 -0
- pythonnative-0.54.0/src/pythonnative/native/core/src/motion_anim.h +52 -0
- pythonnative-0.54.0/src/pythonnative/native/core/src/motion_runtime.cpp +1431 -0
- pythonnative-0.54.0/src/pythonnative/native/core/src/motion_runtime.h +230 -0
- pythonnative-0.54.0/src/pythonnative/native/core/src/motion_vm.cpp +1584 -0
- pythonnative-0.54.0/src/pythonnative/native/core/src/motion_vm.h +226 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/mount.cpp +102 -14
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/mount.h +9 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/shadow.cpp +170 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/shadow.h +35 -2
- pythonnative-0.54.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNMotionApplier.swift +177 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCoreBridge.swift +4 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +20 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +35 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +133 -6
- pythonnative-0.54.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSharedElementTransition.swift +302 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +5 -46
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +0 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +177 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +24 -4
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +2 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +31 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Mount/PNMountDecoder.swift +35 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Mount/PNMounter.swift +119 -17
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +14 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/project.pbxproj +4 -2
- pythonnative-0.54.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/contracts.json +1 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNCoreHarness.swift +10 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +47 -14
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +33 -0
- pythonnative-0.54.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNMotionTests.swift +479 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNMountTests.swift +2 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNParityTests.swift +1 -65
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_views/bridge_backend.py +40 -36
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/navigators.py +104 -26
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/notifications/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/pickers/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/builder.py +19 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/purchases/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/push/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/reconciler/core.py +17 -14
- pythonnative-0.54.0/src/pythonnative/sdk/_builtin_contracts.json +1 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/_components.py +5 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/builtins.py +14 -15
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/schema.py +13 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/types.py +13 -5
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sensors/native/schema.json +1 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/style.py +48 -6
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/testing/backend.py +18 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/testing/harness.py +61 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/testing/pytest_plugin.py +1 -2
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/video/native/schema.json +45 -95
- {pythonnative-0.53.1 → pythonnative-0.54.0/src/pythonnative.egg-info}/PKG-INFO +4 -4
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative.egg-info/SOURCES.txt +31 -9
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_bridge.py +6 -33
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_cli.py +2 -3
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_codegen.py +22 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_core.py +396 -79
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_e2e_suite_renders.py +271 -21
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_lint.py +47 -1
- pythonnative-0.54.0/tests/test_motion.py +605 -0
- pythonnative-0.54.0/tests/test_motion_compiler.py +182 -0
- pythonnative-0.53.1/tests/test_animated_easing.py → pythonnative-0.54.0/tests/test_motion_easing.py +10 -76
- pythonnative-0.54.0/tests/test_motion_vm.py +320 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_navigation.py +5 -5
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_release_packaging.py +0 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_runtime_contracts.py +0 -50
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_style.py +12 -1
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_typed_events.py +2 -10
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_web_transport.py +10 -8
- pythonnative-0.53.1/src/pythonnative/animated.py +0 -1988
- pythonnative-0.53.1/src/pythonnative/animation_graph.py +0 -108
- pythonnative-0.53.1/src/pythonnative/devserver/static/core/pn_core.wasm +0 -0
- pythonnative-0.53.1/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +0 -48
- pythonnative-0.53.1/src/pythonnative/native/core/src/animation.cpp +0 -643
- pythonnative-0.53.1/src/pythonnative/native/core/src/animation.h +0 -121
- pythonnative-0.53.1/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +0 -91
- pythonnative-0.53.1/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/contracts.json +0 -1
- pythonnative-0.53.1/src/pythonnative/sdk/_builtin_contracts.json +0 -1
- pythonnative-0.53.1/tests/test_animated.py +0 -714
- pythonnative-0.53.1/tests/test_animated_graph.py +0 -460
- {pythonnative-0.53.1 → pythonnative-0.54.0}/.github/workflows/release.yml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/LICENSE +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/MANIFEST.in +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/scripts/check-distributions.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/scripts/cibuildwheel.toml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/scripts/release-assets.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/setup.cfg +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/setup.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/_ios_log.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/alerts.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/appearance.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/assets/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/assets/fonts.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/audio/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/audio/native/android/com/pythonnative/plugins/audio/AudioPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/audio/native/ios/AudioPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/audio/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/audio/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/background/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/background/native/android/com/pythonnative/plugins/background/BackgroundPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/background/native/ios/BackgroundPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/background/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/biometrics/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/biometrics/native/android/com/pythonnative/plugins/biometrics/BiometricsPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/biometrics/native/ios/BiometricsPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/biometrics/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/bootstrap.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/android/application.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/android/com/pythonnative/plugins/camera/CameraPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/android/manifest.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/android/res/xml/pn_camera_file_paths.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/ios/CameraPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/camera/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/cli/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/cli/keys.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/cli/launch.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/cli/pn.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/component.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/layout.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/overlays.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/pressable.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/components/structural.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devclient.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/auth.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/editor.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/hub.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/packages.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/qr.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/server.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/assets.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/bridge.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/colors.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devsupport.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/connection.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/devtools.css +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/devtools.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/index.html +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/components.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/connect.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/console.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/network.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/panel.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/performance.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/panels/problems.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/report.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/tree.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/util.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/devtools/values.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/host.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/static/index.html +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/watcher.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devserver/ws.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devtools/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devtools/agent.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devtools/console.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devtools/debugger.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devtools/inspector.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/devtools/perf.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/diagnostics.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/element.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/equality.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/errors.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/handles.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/hooks.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/hosts/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/hosts/base.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/hosts/native.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/icons/LICENSE-lucide.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/icons/_lucide.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/icons/_names.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/list_data.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/location/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/location/native/android/com/pythonnative/plugins/location/LocationPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/location/native/ios/LocationPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/location/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/location/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/native/android/application.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/native/android/com/pythonnative/plugins/maps/MapsPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/native/ios/MapsPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/maps/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/mutations.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/build.gradle +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/gradle.properties +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/settings.gradle +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/cpp/CMakeLists.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeValues.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/FrameClock.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/assets/PNAssets.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/EffectManagers.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNTheme.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenTransitions.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SvgManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/TouchForwarder.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/graphics/SvgPath.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/Measurement.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/AssetModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DevSupportModule.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/ErrorOverlay.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PNLifecycle.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PlatformModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNKeyboard.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/text/PNTextLayout.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNScrollViews.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_in.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_out.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_hold.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_bottom.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_left.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_right.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_bottom.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_left.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_right.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/drawable/pn_ic_arrow_back.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/values/pn_ids.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/main/res/xml/pn_file_paths.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AssetsAndSvgTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/DevSupportRobolectricTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/NativeLifecycleTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundOneRobolectricTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoLogicTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoRobolectricTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ScreenTransitionsTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/StyleAccessibilityDeviceTest.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/CMakeLists.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/Package.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/include/module.modulemap +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/python.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/contracts.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/contracts.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/lists.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/lists.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/style.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/style.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/value.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/src/value.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/CMakeLists.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/LICENSE +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/VENDORED.md +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGConfig.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGConfig.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGEnums.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGEnums.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGMacros.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGNode.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGNode.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGNodeLayout.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGNodeLayout.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGNodeStyle.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGNodeStyle.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGPixelGrid.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGPixelGrid.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGValue.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/YGValue.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/Yoga.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/AbsoluteLayout.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/AbsoluteLayout.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/Align.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/Baseline.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/Baseline.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/BoundAxis.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/Cache.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/Cache.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/CalculateLayout.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/CalculateLayout.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/FlexDirection.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/FlexLine.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/FlexLine.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/PixelGrid.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/PixelGrid.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/SizingMode.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/algorithm/TrailingPosition.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/config/Config.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/config/Config.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/debug/AssertFatal.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/debug/AssertFatal.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/debug/Log.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/debug/Log.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Align.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/BoxSizing.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Dimension.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Direction.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Display.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Edge.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Errata.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/ExperimentalFeature.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/FlexDirection.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Gutter.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Justify.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/LogLevel.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/MeasureMode.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/NodeType.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Overflow.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/PhysicalEdge.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/PositionType.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Unit.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/Wrap.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/enums/YogaEnums.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/event/event.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/event/event.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/module.modulemap +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/node/CachedMeasurement.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/node/LayoutResults.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/node/LayoutResults.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/node/LayoutableChildren.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/node/Node.cpp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/node/Node.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/numeric/Comparison.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/numeric/FloatOptional.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/style/SmallValueBuffer.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/style/Style.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/style/StyleLength.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/style/StyleValueHandle.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/core/yoga/style/StyleValuePool.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Package.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNEffectManagers.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSvgManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeValues.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/DevSupportModule.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/EnvironmentModules.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/ImagesModule.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNAppLifecycle.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNErrorOverlay.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Resources/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNAssets.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Text/PNTextLayout.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/xcshareddata/xcschemes/NativeTests.xcscheme +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/mount.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/validation.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAssetTests.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractFixtureTests.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNLifecycleTests.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNTextLayoutTests.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native/ios/Tests/TestHost/main.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/accessibility_info.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/app_state.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/battery.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/clipboard.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/device.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/dimensions.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/fallback.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/file_system.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/haptics.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/images.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/keyboard.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/linking.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/localization.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/net_info.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/permissions.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/registry.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/secure_store.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_modules/share.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/native_views/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/container.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/handle.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/hooks.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/host.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/linking.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/ref.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/screen.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/navigation/state.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/net.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/notifications/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/notifications/native/android/application.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/notifications/native/android/com/pythonnative/plugins/notifications/NotificationsPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/notifications/native/ios/NotificationsPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/notifications/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/pickers/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/pickers/native/android/com/pythonnative/plugins/pickers/PickersPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/pickers/native/ios/PickersPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/pickers/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/pickers/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/platform.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/platform_metrics.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/preview.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/profiling.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/android.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/artifacts.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/bundle.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/bytecode.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/config.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/deps.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/devices.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/doctor.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/fingerprint.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/go.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/icons.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/ios.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/links.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/lockfile.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/permissions.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/plugin_config.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/plugins.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/runtime_assets.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/project/submit.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/prop_checks.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/purchases/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/purchases/native/android/com/pythonnative/plugins/purchases/PurchasesPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/purchases/native/ios/PurchasesPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/purchases/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/push/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/push/native/android/application.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/push/native/android/com/pythonnative/plugins/push/PushPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/push/native/ios/PushPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/push/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/py.typed +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/query.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/reconciler/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/reconciler/boundaries.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/reconciler/children.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/reconciler/layout_pass.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/reconciler/vnode.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/refresh.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/runtime.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/scheduler.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/codegen.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/commands.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/module_codegen.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/native_types.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/plugin.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/services.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/templates/contracts.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/templates/contracts.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/templates/values.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sdk/templates/values.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sensors/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sensors/native/android/com/pythonnative/plugins/sensors/SensorsPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sensors/native/ios/SensorsPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sensors/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/sensors/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/storage.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/store.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/suspense.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/svg.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/build.gradle +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/PNApplication.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/build.gradle +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/gradle.properties +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/gradlew +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/android_template/settings.gradle +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/PNFinalizePython.sh +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/testing/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/testing/clock.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/testing/queries.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/theme.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/utils.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/video/__init__.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/video/native/android/com/pythonnative/plugins/video/VideoPlugin.kt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/video/native/ios/VideoPlugin.swift +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/video/native/pn_plugin.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/video/native/web/index.js +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative/websocket.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative.egg-info/dependency_links.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative.egg-info/entry_points.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative.egg-info/requires.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/src/pythonnative.egg-info/top_level.txt +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/contracts/list-trace.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/contracts/validation.json +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_alert.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_appearance.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_assets.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_async_hooks.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_authoring.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_cli_keys.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_components.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_contract_fixtures.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_core_semantics.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_devclient.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_device_modules.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_devserver.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_devserver_session.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_devserver_ws.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_devtools.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_devtools_page.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_element.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_equality.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_errors.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_events.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_extended_components.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_failure_recovery.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_fieldnotes.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_gesture_activation.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_gesture_composition.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_gestures.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_handles.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_hooks.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_hosts.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_hot_reload.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_identity_bailout.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_inbox.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_incremental_pipeline.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_incremental_render.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_interaction_props.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_ios_log.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_layout.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_list_features.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_metric_hooks.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_mutations.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_native_lists.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_native_modules.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_native_values.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_native_views.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_net.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_new_components.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_performance_budgets.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_platform.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_platform_metrics.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_qr.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_reconciler.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_ref.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_release_workflow.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_runtime.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_runtime_correctness.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_runtime_overhaul.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_sdk.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_smoke.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_storage.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_store.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_suspense.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_testing_library.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_theme.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_transitions.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_typing_conformance.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_utils.py +0 -0
- {pythonnative-0.53.1 → pythonnative-0.54.0}/tests/test_websocket.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythonnative
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.54.0
|
|
4
4
|
Summary: Cross-platform native UI toolkit for Android and iOS
|
|
5
5
|
Author: Owen Carey
|
|
6
6
|
License: MIT License
|
|
@@ -80,11 +80,11 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
80
80
|
- **Declarative components and hooks:** Describe native UI with Python functions, immutable elements, and typed styles. State, effects, context, and suspense boundaries follow one logical application tree across screens, overlays, and mounted list rows. State updates batch automatically, effect errors reach the nearest error boundary, and event callbacks receive typed records instead of dicts.
|
|
81
81
|
- **React Native's core surface:** `Pressable`, `ScrollView`, `Text`, `TextInput`, `Image`, `Modal`, `FlatList`, and `SectionList` carry the props a React Native developer expects (disabled state and ripples, content insets and snapping, ellipsize modes and pressable spans, controlled selection and key events, sticky headers and inverted lists), plus typed imperative handles on `ref.current` and the full accessibility prop set.
|
|
82
82
|
- **Native widgets and layout:** Swift and Kotlin component managers own UIKit and Android widgets. The renderer core validates commits, lays out with Yoga off the UI thread using platform measurements for text and intrinsic sizes, and skips mounting layout-only wrappers.
|
|
83
|
-
- **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling,
|
|
83
|
+
- **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling, animation frames, and worklets. Component-owned tasks are canceled on unmount.
|
|
84
84
|
- **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.
|
|
85
|
-
- **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
|
+
- **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 and that worklets compile.
|
|
86
86
|
- **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.
|
|
87
|
-
- **
|
|
87
|
+
- **Motion:** Interaction logic runs on the UI thread as worklets, ordinary type-checked Python functions marked `@pn.worklet` that the renderer core compiles and runs, so a drag keeps tracking and a release decides where to settle while Python is busy. Shared values, `with_timing`, `with_spring`, and `with_decay` animations (awaitable from Python), and animated styles drive paint and layout properties; scroll events and gesture callbacks take worklets; `entering=`, `exiting=`, and `layout=` animate views as the tree changes, including native list rows; and `shared_tag=` flies an element between stack screens. `BottomSheet`, `Swipeable`, and a drawer that follows the finger are built on it. Gestures activate with Gesture Handler-style offsets and composition.
|
|
88
88
|
- **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.
|
|
89
89
|
- **Device APIs:** Python facades expose storage, permissions, keyboard, dimensions and pixel ratio, device info, localization, accessibility settings, haptics, and other native services in every app, with a Python fallback for headless tests. Test permissions and platform behavior on your deployment targets.
|
|
90
90
|
- **First-party capabilities:** Video, audio, camera, maps, location, notifications, push, pickers, sensors, biometrics, background tasks, and in-app purchases ship in the package and compile into your app only when you list them: `[plugins] use = ["camera", "maps"]` in `pythonnative.toml`, then `from pythonnative.camera import CameraView`. An app that doesn't list one contains none of its code, and calling it raises `plugin_not_enabled`. Simulators can't prove everything here: camera capture on iOS, remote push, and purchases need real hardware or store credentials.
|
|
@@ -33,11 +33,11 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
|
|
|
33
33
|
- **Declarative components and hooks:** Describe native UI with Python functions, immutable elements, and typed styles. State, effects, context, and suspense boundaries follow one logical application tree across screens, overlays, and mounted list rows. State updates batch automatically, effect errors reach the nearest error boundary, and event callbacks receive typed records instead of dicts.
|
|
34
34
|
- **React Native's core surface:** `Pressable`, `ScrollView`, `Text`, `TextInput`, `Image`, `Modal`, `FlatList`, and `SectionList` carry the props a React Native developer expects (disabled state and ripples, content insets and snapping, ellipsize modes and pressable spans, controlled selection and key events, sticky headers and inverted lists), plus typed imperative handles on `ref.current` and the full accessibility prop set.
|
|
35
35
|
- **Native widgets and layout:** Swift and Kotlin component managers own UIKit and Android widgets. The renderer core validates commits, lays out with Yoga off the UI thread using platform measurements for text and intrinsic sizes, and skips mounting layout-only wrappers.
|
|
36
|
-
- **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling,
|
|
36
|
+
- **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling, animation frames, and worklets. 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
|
-
- **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.
|
|
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 and that worklets compile.
|
|
39
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.
|
|
40
|
-
- **
|
|
40
|
+
- **Motion:** Interaction logic runs on the UI thread as worklets, ordinary type-checked Python functions marked `@pn.worklet` that the renderer core compiles and runs, so a drag keeps tracking and a release decides where to settle while Python is busy. Shared values, `with_timing`, `with_spring`, and `with_decay` animations (awaitable from Python), and animated styles drive paint and layout properties; scroll events and gesture callbacks take worklets; `entering=`, `exiting=`, and `layout=` animate views as the tree changes, including native list rows; and `shared_tag=` flies an element between stack screens. `BottomSheet`, `Swipeable`, and a drawer that follows the finger are built on it. Gestures activate with Gesture Handler-style offsets and composition.
|
|
41
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.
|
|
42
42
|
- **Device APIs:** Python facades expose storage, permissions, keyboard, dimensions and pixel ratio, device info, localization, accessibility settings, haptics, and other native services in every app, with a Python fallback for headless tests. Test permissions and platform behavior on your deployment targets.
|
|
43
43
|
- **First-party capabilities:** Video, audio, camera, maps, location, notifications, push, pickers, sensors, biometrics, background tasks, and in-app purchases ship in the package and compile into your app only when you list them: `[plugins] use = ["camera", "maps"]` in `pythonnative.toml`, then `from pythonnative.camera import CameraView`. An app that doesn't list one contains none of its code, and calling it raises `plugin_not_enabled`. Simulators can't prove everything here: camera capture on iOS, remote push, and purchases need real hardware or store credentials.
|
|
@@ -35,10 +35,13 @@ Key building blocks:
|
|
|
35
35
|
its navigators.
|
|
36
36
|
- **State** lives in hooks for a component and in a typed
|
|
37
37
|
[`Store`][pythonnative.Store] for the app.
|
|
38
|
-
- **
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
- **Motion** (RFC 0009): [`worklet`][pythonnative.worklet] functions run
|
|
39
|
+
on the UI thread inside the renderer core. They read and write
|
|
40
|
+
[`SharedValue`][pythonnative.SharedValue]s, which
|
|
41
|
+
[`use_animated_style`][pythonnative.use_animated_style] turns into
|
|
42
|
+
styles and ``with_timing`` / ``with_spring`` / ``with_decay`` animate.
|
|
43
|
+
Event props and gesture callbacks take worklets, and views take
|
|
44
|
+
``entering=``, ``exiting=``, ``layout=``, and ``shared_tag=``.
|
|
42
45
|
- **Gestures** attach to any view via the ``gestures=`` prop using
|
|
43
46
|
descriptors from ``pythonnative.gestures``
|
|
44
47
|
([`Tap`][pythonnative.gestures.Tap],
|
|
@@ -81,7 +84,7 @@ Example:
|
|
|
81
84
|
```
|
|
82
85
|
"""
|
|
83
86
|
|
|
84
|
-
__version__ = "0.
|
|
87
|
+
__version__ = "0.54.0"
|
|
85
88
|
|
|
86
89
|
import importlib
|
|
87
90
|
from typing import TYPE_CHECKING, Any
|
|
@@ -138,7 +141,7 @@ from .components import (
|
|
|
138
141
|
WebView,
|
|
139
142
|
set_error_fallback,
|
|
140
143
|
)
|
|
141
|
-
from .components.props import AccessibilityProps, ViewProps
|
|
144
|
+
from .components.props import AccessibilityProps, CommonProps, MotionProps, ViewProps
|
|
142
145
|
from .diagnostics import HookOrderError, set_error_handler
|
|
143
146
|
from .element import Element, Node
|
|
144
147
|
from .handles import ScrollOffset, ScrollViewHandle, TextInputHandle, ViewHandle, WebViewHandle
|
|
@@ -214,6 +217,7 @@ from .style import (
|
|
|
214
217
|
AccessibilityAction,
|
|
215
218
|
AccessibilityState,
|
|
216
219
|
AccessibilityValue,
|
|
220
|
+
AnimatedStyle,
|
|
217
221
|
Color,
|
|
218
222
|
DynamicColor,
|
|
219
223
|
EdgeInsets,
|
|
@@ -293,6 +297,8 @@ __all__ = [
|
|
|
293
297
|
"WebView",
|
|
294
298
|
# Shared props
|
|
295
299
|
"AccessibilityProps",
|
|
300
|
+
"CommonProps",
|
|
301
|
+
"MotionProps",
|
|
296
302
|
"ViewProps",
|
|
297
303
|
# Typed events
|
|
298
304
|
"ContentSizeEvent",
|
|
@@ -396,13 +402,34 @@ __all__ = [
|
|
|
396
402
|
"use_theme",
|
|
397
403
|
# Appearance
|
|
398
404
|
"appearance",
|
|
399
|
-
#
|
|
400
|
-
"
|
|
401
|
-
"
|
|
402
|
-
"
|
|
405
|
+
# Motion
|
|
406
|
+
"motion",
|
|
407
|
+
"AnimatedStyle",
|
|
408
|
+
"BottomSheet",
|
|
409
|
+
"BottomSheetHandle",
|
|
403
410
|
"Easing",
|
|
404
|
-
"
|
|
405
|
-
"
|
|
411
|
+
"FrameInfo",
|
|
412
|
+
"SharedValue",
|
|
413
|
+
"Spring",
|
|
414
|
+
"Swipeable",
|
|
415
|
+
"SwipeableHandle",
|
|
416
|
+
"clamp",
|
|
417
|
+
"interpolate",
|
|
418
|
+
"interpolate_color",
|
|
419
|
+
"run_on_python",
|
|
420
|
+
"snap_point",
|
|
421
|
+
"use_animated_reaction",
|
|
422
|
+
"use_animated_style",
|
|
423
|
+
"use_derived_value",
|
|
424
|
+
"use_frame_callback",
|
|
425
|
+
"use_shared_value",
|
|
426
|
+
"with_decay",
|
|
427
|
+
"with_delay",
|
|
428
|
+
"with_repeat",
|
|
429
|
+
"with_sequence",
|
|
430
|
+
"with_spring",
|
|
431
|
+
"with_timing",
|
|
432
|
+
"worklet",
|
|
406
433
|
# Gestures
|
|
407
434
|
"GestureSpec",
|
|
408
435
|
"SwipeDirection",
|
|
@@ -466,14 +493,31 @@ from .list_data import ListData, Section, ViewableItem
|
|
|
466
493
|
# ``import pythonnative`` stays fast on a phone. Names, ``__all__``, and
|
|
467
494
|
# documentation are unchanged, and type checkers see ordinary imports.
|
|
468
495
|
_LAZY_GROUPS: dict[str, tuple[str, ...]] = {
|
|
469
|
-
"
|
|
470
|
-
"Animated",
|
|
471
|
-
"AnimatedValue",
|
|
472
|
-
"AnimationResult",
|
|
496
|
+
"motion": (
|
|
473
497
|
"Easing",
|
|
474
|
-
"
|
|
475
|
-
"
|
|
498
|
+
"FrameInfo",
|
|
499
|
+
"SharedValue",
|
|
500
|
+
"Spring",
|
|
501
|
+
"clamp",
|
|
502
|
+
"interpolate",
|
|
503
|
+
"interpolate_color",
|
|
504
|
+
"run_on_python",
|
|
505
|
+
"snap_point",
|
|
506
|
+
"use_animated_reaction",
|
|
507
|
+
"use_animated_style",
|
|
508
|
+
"use_derived_value",
|
|
509
|
+
"use_frame_callback",
|
|
510
|
+
"use_shared_value",
|
|
511
|
+
"with_decay",
|
|
512
|
+
"with_delay",
|
|
513
|
+
"with_repeat",
|
|
514
|
+
"with_sequence",
|
|
515
|
+
"with_spring",
|
|
516
|
+
"with_timing",
|
|
517
|
+
"worklet",
|
|
476
518
|
),
|
|
519
|
+
"components.bottom_sheet": ("BottomSheet", "BottomSheetHandle"),
|
|
520
|
+
"components.swipeable": ("Swipeable", "SwipeableHandle"),
|
|
477
521
|
"gestures": ("GestureSpec", "SwipeDirection"),
|
|
478
522
|
"icons": ("Icon", "IconName"),
|
|
479
523
|
"navigation": (
|
|
@@ -500,20 +544,37 @@ _LAZY_GROUPS: dict[str, tuple[str, ...]] = {
|
|
|
500
544
|
"websocket": ("WebSocket", "WebSocketClosed", "WebSocketError"),
|
|
501
545
|
}
|
|
502
546
|
_LAZY = {name: module for module, names in _LAZY_GROUPS.items() for name in names}
|
|
503
|
-
_LAZY_MODULES = frozenset({"gestures", "icons"})
|
|
547
|
+
_LAZY_MODULES = frozenset({"gestures", "icons", "motion"})
|
|
504
548
|
|
|
505
549
|
if TYPE_CHECKING:
|
|
506
|
-
from . import gestures, icons
|
|
507
|
-
from .
|
|
508
|
-
|
|
509
|
-
AnimatedValue,
|
|
510
|
-
AnimationResult,
|
|
511
|
-
Easing,
|
|
512
|
-
EasingSpec,
|
|
513
|
-
use_animated_value,
|
|
514
|
-
)
|
|
550
|
+
from . import gestures, icons, motion
|
|
551
|
+
from .components.bottom_sheet import BottomSheet, BottomSheetHandle
|
|
552
|
+
from .components.swipeable import Swipeable, SwipeableHandle
|
|
515
553
|
from .gestures import GestureSpec, SwipeDirection
|
|
516
554
|
from .icons import Icon, IconName
|
|
555
|
+
from .motion import (
|
|
556
|
+
Easing,
|
|
557
|
+
FrameInfo,
|
|
558
|
+
SharedValue,
|
|
559
|
+
Spring,
|
|
560
|
+
clamp,
|
|
561
|
+
interpolate,
|
|
562
|
+
interpolate_color,
|
|
563
|
+
run_on_python,
|
|
564
|
+
snap_point,
|
|
565
|
+
use_animated_reaction,
|
|
566
|
+
use_animated_style,
|
|
567
|
+
use_derived_value,
|
|
568
|
+
use_frame_callback,
|
|
569
|
+
use_shared_value,
|
|
570
|
+
with_decay,
|
|
571
|
+
with_delay,
|
|
572
|
+
with_repeat,
|
|
573
|
+
with_sequence,
|
|
574
|
+
with_spring,
|
|
575
|
+
with_timing,
|
|
576
|
+
worklet,
|
|
577
|
+
)
|
|
517
578
|
from .navigation import (
|
|
518
579
|
DrawerNavigator,
|
|
519
580
|
Group,
|
|
@@ -59,8 +59,11 @@ class Transport(Protocol):
|
|
|
59
59
|
def command(self, surface: int, tag: int, name: str, args_json: str, call_id: int) -> str:
|
|
60
60
|
"""Queue a view command; its result arrives as a ``command`` message."""
|
|
61
61
|
|
|
62
|
-
def
|
|
63
|
-
"""Queue
|
|
62
|
+
def motion(self, surface: int, request_json: str) -> str:
|
|
63
|
+
"""Queue a motion request behind pending mounts (RFC 0009)."""
|
|
64
|
+
|
|
65
|
+
def shared_read(self, ident: int) -> str:
|
|
66
|
+
"""The latest value the UI thread published for a shared value, as JSON."""
|
|
64
67
|
|
|
65
68
|
def measure(self, surface: int, tag: int) -> str:
|
|
66
69
|
"""The shadow and window frames of a view, as JSON."""
|
|
@@ -286,10 +289,10 @@ def dispatch(kind: str, tag: int, name: str, payload: str, backend: Any = None)
|
|
|
286
289
|
from ..hosts.native import dispatch_host_event
|
|
287
290
|
|
|
288
291
|
dispatch_host_event(int(tag), name, codec.loads(payload))
|
|
289
|
-
elif kind == "
|
|
290
|
-
from ..
|
|
292
|
+
elif kind == "motion":
|
|
293
|
+
from ..motion.runtime import motion_message
|
|
291
294
|
|
|
292
|
-
|
|
295
|
+
motion_message(codec.loads(payload) or {})
|
|
293
296
|
else:
|
|
294
297
|
print(f"[pn.bridge] unknown callback kind {kind!r}")
|
|
295
298
|
except Exception as exc:
|
|
@@ -61,9 +61,13 @@ class AndroidTransport:
|
|
|
61
61
|
"""Queue a view command behind pending mounts."""
|
|
62
62
|
return self.core.command(surface, tag, name, args_json, call_id)
|
|
63
63
|
|
|
64
|
-
def
|
|
65
|
-
"""Queue
|
|
66
|
-
return self.core.
|
|
64
|
+
def motion(self, surface: int, request_json: str) -> str:
|
|
65
|
+
"""Queue a motion request behind pending mounts (RFC 0009)."""
|
|
66
|
+
return self.core.motion(surface, request_json)
|
|
67
|
+
|
|
68
|
+
def shared_read(self, ident: int) -> str:
|
|
69
|
+
"""The latest value the UI thread published for a shared value, as JSON."""
|
|
70
|
+
return self.core.shared_read(ident)
|
|
67
71
|
|
|
68
72
|
def measure(self, surface: int, tag: int) -> str:
|
|
69
73
|
"""The shadow and window frames of a view."""
|
|
@@ -95,8 +95,8 @@ def split_props(
|
|
|
95
95
|
``wire_props`` is JSON-ready; ``python_props`` holds callbacks and
|
|
96
96
|
fields explicitly declared Python-only. Other unsupported values
|
|
97
97
|
fail encoding. The backend keeps Python props in a per-tag sidecar.
|
|
98
|
-
(The reconciler has already
|
|
99
|
-
|
|
98
|
+
(The reconciler has already turned worklet handlers and animated
|
|
99
|
+
styles into ``_pn_motion`` bindings before props reach the codec.)
|
|
100
100
|
"""
|
|
101
101
|
wire: Dict[str, Any] = {}
|
|
102
102
|
python: Dict[str, Any] = {}
|
|
@@ -21,6 +21,7 @@ from dataclasses import dataclass, field
|
|
|
21
21
|
from typing import TYPE_CHECKING, Any, Callable, List, Optional, Sequence, Tuple
|
|
22
22
|
|
|
23
23
|
__all__ = [
|
|
24
|
+
"MotionWrite",
|
|
24
25
|
"MountOp",
|
|
25
26
|
"MountTransaction",
|
|
26
27
|
"Platform",
|
|
@@ -30,7 +31,7 @@ __all__ = [
|
|
|
30
31
|
"load_core",
|
|
31
32
|
]
|
|
32
33
|
|
|
33
|
-
PROTOCOL_VERSION =
|
|
34
|
+
PROTOCOL_VERSION = 8
|
|
34
35
|
"""The protocol ``include/pn_core.h`` defines as ``PN_CORE_PROTOCOL_VERSION``."""
|
|
35
36
|
|
|
36
37
|
MEASURE_TEXT = 1
|
|
@@ -130,6 +131,25 @@ class MountOp:
|
|
|
130
131
|
name: str = ""
|
|
131
132
|
arguments: Any = None
|
|
132
133
|
call_id: int = 0
|
|
134
|
+
owner: int = 0
|
|
135
|
+
"""``exit`` ops: 0 when the core animates the view out, 1 when the platform does."""
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
@dataclass(frozen=True)
|
|
139
|
+
class MotionWrite:
|
|
140
|
+
"""One record of the core's motion writes (RFC 0009).
|
|
141
|
+
|
|
142
|
+
``kind`` is ``"prop"`` (``tag``, ``prop``, ``value``), ``"frame"``
|
|
143
|
+
(``tag``, ``frame``), or ``"remove"`` (``tags``: an exit finished,
|
|
144
|
+
destroy each, children first).
|
|
145
|
+
"""
|
|
146
|
+
|
|
147
|
+
kind: str
|
|
148
|
+
tag: int = 0
|
|
149
|
+
prop: str = ""
|
|
150
|
+
value: Any = None
|
|
151
|
+
frame: Tuple[float, float, float, float] = (0.0, 0.0, 0.0, 0.0)
|
|
152
|
+
tags: Tuple[int, ...] = ()
|
|
133
153
|
|
|
134
154
|
|
|
135
155
|
@dataclass(frozen=True)
|
|
@@ -217,15 +237,34 @@ def decode_transaction(data: bytes) -> MountTransaction:
|
|
|
217
237
|
name = reader.string()
|
|
218
238
|
arguments = reader.value()
|
|
219
239
|
ops.append(MountOp("command", tag, name=name, arguments=arguments, call_id=reader.take("q")))
|
|
240
|
+
elif code == 8:
|
|
241
|
+
tag = reader.take("q")
|
|
242
|
+
ops.append(MountOp("exit", tag, owner=reader.take("B")))
|
|
220
243
|
else:
|
|
221
244
|
raise ValueError(f"Unknown mount op {code}")
|
|
222
245
|
return MountTransaction(surface, revision, ident, tuple(ops))
|
|
223
246
|
|
|
224
247
|
|
|
225
|
-
def decode_writes(data: bytes) -> List[
|
|
226
|
-
"""Decode
|
|
248
|
+
def decode_writes(data: bytes) -> List[MotionWrite]:
|
|
249
|
+
"""Decode the core's motion writes into [`MotionWrite`][pythonnative.bridge.core.MotionWrite] records."""
|
|
227
250
|
reader = _Reader(data)
|
|
228
|
-
|
|
251
|
+
writes: List[MotionWrite] = []
|
|
252
|
+
for _ in range(reader.take("I")):
|
|
253
|
+
kind = reader.take("B")
|
|
254
|
+
if kind == 0:
|
|
255
|
+
tag = reader.take("q")
|
|
256
|
+
prop = reader.string()
|
|
257
|
+
writes.append(MotionWrite("prop", tag, prop=prop, value=reader.value()))
|
|
258
|
+
elif kind == 1:
|
|
259
|
+
tag = reader.take("q")
|
|
260
|
+
frame = (reader.take("d"), reader.take("d"), reader.take("d"), reader.take("d"))
|
|
261
|
+
writes.append(MotionWrite("frame", tag, frame=frame))
|
|
262
|
+
elif kind == 2:
|
|
263
|
+
count = reader.take("I")
|
|
264
|
+
writes.append(MotionWrite("remove", tags=tuple(reader.take("q") for _ in range(count))))
|
|
265
|
+
else:
|
|
266
|
+
raise ValueError(f"Unknown motion write kind {kind}")
|
|
267
|
+
return writes
|
|
229
268
|
|
|
230
269
|
|
|
231
270
|
def decode_value(data: bytes) -> Any:
|
|
@@ -248,7 +287,14 @@ _SIGNATURES: dict[str, Tuple[Any, List[Any]]] = {
|
|
|
248
287
|
ctypes.c_void_p,
|
|
249
288
|
[ctypes.c_void_p, ctypes.c_int64, ctypes.c_int64, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_int64],
|
|
250
289
|
),
|
|
251
|
-
"
|
|
290
|
+
"pn_core_motion": (ctypes.c_void_p, [ctypes.c_void_p, ctypes.c_int64, ctypes.c_char_p]),
|
|
291
|
+
"pn_core_shared_read": (ctypes.c_void_p, [ctypes.c_void_p, ctypes.c_int64]),
|
|
292
|
+
"pn_core_worklet_eval": (ctypes.c_void_p, [ctypes.c_char_p]),
|
|
293
|
+
"pn_core_exit_finished": (None, [ctypes.c_void_p, ctypes.c_int64, ctypes.c_int64]),
|
|
294
|
+
"pn_core_shared_elements": (
|
|
295
|
+
ctypes.c_void_p,
|
|
296
|
+
[ctypes.c_void_p, ctypes.c_int64, ctypes.c_int64, ctypes.c_int64],
|
|
297
|
+
),
|
|
252
298
|
"pn_core_measure": (ctypes.c_void_p, [ctypes.c_void_p, ctypes.c_int64, ctypes.c_int64]),
|
|
253
299
|
"pn_core_inspect": (ctypes.c_void_p, [ctypes.c_void_p, ctypes.c_int64, ctypes.c_double, ctypes.c_double]),
|
|
254
300
|
"pn_core_validate_module": (ctypes.c_int32, [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p]),
|
|
@@ -429,9 +475,17 @@ class RendererCore:
|
|
|
429
475
|
self._take(self._command(self._handle, surface, tag, name.encode(), self._bytes(arguments), call_id)) or ""
|
|
430
476
|
)
|
|
431
477
|
|
|
432
|
-
def
|
|
433
|
-
"""Queue
|
|
434
|
-
return self._take(self.
|
|
478
|
+
def motion(self, surface: int, request: str) -> str:
|
|
479
|
+
"""Queue a motion request behind pending mounts (RFC 0009)."""
|
|
480
|
+
return self._take(self._motion(self._handle, surface, self._bytes(request))) or ""
|
|
481
|
+
|
|
482
|
+
def shared_read(self, ident: int) -> str:
|
|
483
|
+
"""The latest published value of a shared value, as JSON."""
|
|
484
|
+
return self._take(self._shared_read(self._handle, ident)) or "null"
|
|
485
|
+
|
|
486
|
+
def worklet_eval(self, request: str) -> str:
|
|
487
|
+
"""Run one worklet outside the runtime and return the result JSON."""
|
|
488
|
+
return self._take(self._worklet_eval(self._bytes(request))) or ""
|
|
435
489
|
|
|
436
490
|
def measure(self, surface: int, tag: int) -> str:
|
|
437
491
|
"""The shadow frame and window frame of ``tag`` as JSON (``"null"`` when unknown)."""
|
|
@@ -495,13 +549,21 @@ class RendererCore:
|
|
|
495
549
|
"""Advance animations; returns whether more frames are needed."""
|
|
496
550
|
return bool(self._animation_frame(self._handle, timestamp_ms))
|
|
497
551
|
|
|
498
|
-
def take_writes(self) -> List[
|
|
499
|
-
"""
|
|
552
|
+
def take_writes(self) -> List[MotionWrite]:
|
|
553
|
+
"""Motion writes produced since the last call."""
|
|
500
554
|
buffer = _Bytes()
|
|
501
555
|
if not self._take_writes(self._handle, ctypes.byref(buffer)):
|
|
502
556
|
return []
|
|
503
557
|
return decode_writes(ctypes.string_at(buffer.data, buffer.size))
|
|
504
558
|
|
|
559
|
+
def exit_finished(self, surface: int, tag: int) -> None:
|
|
560
|
+
"""Report a platform-owned exit (a leaving screen or modal) finished."""
|
|
561
|
+
self._exit_finished(self._handle, surface, tag)
|
|
562
|
+
|
|
563
|
+
def shared_elements(self, surface: int, from_screen: int, to_screen: int) -> str:
|
|
564
|
+
"""The views sharing a ``shared_tag`` between two screens, as JSON."""
|
|
565
|
+
return self._take(self._shared_elements(self._handle, surface, from_screen, to_screen)) or "[]"
|
|
566
|
+
|
|
505
567
|
def set_reduce_motion(self, enabled: bool) -> None:
|
|
506
568
|
"""Finish every animation at its target, as the platform's setting asks."""
|
|
507
569
|
self._set_reduce_motion(self._handle, int(enabled))
|
|
@@ -24,7 +24,16 @@ import weakref
|
|
|
24
24
|
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple
|
|
25
25
|
|
|
26
26
|
from . import codec
|
|
27
|
-
from .core import
|
|
27
|
+
from .core import (
|
|
28
|
+
PROTOCOL_VERSION,
|
|
29
|
+
MotionWrite,
|
|
30
|
+
MountOp,
|
|
31
|
+
MountTransaction,
|
|
32
|
+
Platform,
|
|
33
|
+
RendererCore,
|
|
34
|
+
decode_transaction,
|
|
35
|
+
load_core,
|
|
36
|
+
)
|
|
28
37
|
|
|
29
38
|
__all__ = ["DEFAULT_MEASURE", "FakeNativeView", "FakeTransport", "reset_fakes"]
|
|
30
39
|
|
|
@@ -40,6 +49,15 @@ class FakeNativeView:
|
|
|
40
49
|
self.parent: Optional["FakeNativeView"] = None
|
|
41
50
|
self.frame: Tuple[float, float, float, float] = (0.0, 0.0, 0.0, 0.0)
|
|
42
51
|
self.animated: Dict[str, Any] = {}
|
|
52
|
+
"""Paint props motion wrote, overriding ``props`` (RFC 0009)."""
|
|
53
|
+
self.exiting: Optional[int] = None
|
|
54
|
+
"""The ``exit`` op's owner while the view animates out, else ``None``."""
|
|
55
|
+
|
|
56
|
+
def presented(self, key: str) -> Any:
|
|
57
|
+
"""The value the platform shows for ``key``: motion's write, else the committed prop."""
|
|
58
|
+
if key in self.animated:
|
|
59
|
+
return self.animated[key]
|
|
60
|
+
return self.props.get(key)
|
|
43
61
|
|
|
44
62
|
def __repr__(self) -> str:
|
|
45
63
|
return f"<native {self.type_name} tag={self.tag}>"
|
|
@@ -145,13 +163,11 @@ def _frame() -> None:
|
|
|
145
163
|
def _take_writes() -> None:
|
|
146
164
|
if _installed is None:
|
|
147
165
|
return
|
|
148
|
-
for
|
|
166
|
+
for write in _installed.take_writes():
|
|
167
|
+
tag = write.tags[0] if write.kind == "remove" and write.tags else write.tag
|
|
149
168
|
for transport in list(_transports.values()):
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
transport.writes.append((tag, prop, value))
|
|
153
|
-
if view is not None:
|
|
154
|
-
view.animated[prop] = value
|
|
169
|
+
if tag in transport.views or transport.owns(tag):
|
|
170
|
+
transport._write(write)
|
|
155
171
|
break
|
|
156
172
|
|
|
157
173
|
|
|
@@ -179,6 +195,12 @@ def _mount_all() -> None:
|
|
|
179
195
|
error = str(exc)
|
|
180
196
|
_installed.mount_finished(ident, error)
|
|
181
197
|
_take_writes()
|
|
198
|
+
if transport is not None and transport.finish_exits:
|
|
199
|
+
# The fake native stack finishes its transitions at once.
|
|
200
|
+
for op in transaction.ops:
|
|
201
|
+
if op.kind == "exit" and op.owner == 1:
|
|
202
|
+
_installed.exit_finished(transaction.surface, op.tag)
|
|
203
|
+
_take_writes()
|
|
182
204
|
finally:
|
|
183
205
|
_mounting = False
|
|
184
206
|
|
|
@@ -210,6 +232,9 @@ def reset_fakes() -> None:
|
|
|
210
232
|
_transports.clear()
|
|
211
233
|
if _installed is not None:
|
|
212
234
|
_installed.reset()
|
|
235
|
+
from ..motion.runtime import runtime as motion
|
|
236
|
+
|
|
237
|
+
motion.reset() # the core forgot every program, shared value, and binding
|
|
213
238
|
from . import _loaded_contracts
|
|
214
239
|
|
|
215
240
|
_loaded_contracts.clear() # the reset dropped every compiled contract
|
|
@@ -233,7 +258,7 @@ class FakeTransport:
|
|
|
233
258
|
views: Mounted views by tag (flattened views never appear).
|
|
234
259
|
transactions: Every decoded mount transaction.
|
|
235
260
|
commands: ``(tag, name, args)`` tuples in the order the UI thread ran them.
|
|
236
|
-
writes:
|
|
261
|
+
writes: Every [`MotionWrite`][pythonnative.bridge.core.MotionWrite], in order.
|
|
237
262
|
calls: ``(module, method, args)`` tuples in call order.
|
|
238
263
|
measured: ``(tag, component)`` pairs the core asked the platform to measure.
|
|
239
264
|
"""
|
|
@@ -260,7 +285,9 @@ class FakeTransport:
|
|
|
260
285
|
self.views: Dict[int, FakeNativeView] = {}
|
|
261
286
|
self.transactions: List[MountTransaction] = []
|
|
262
287
|
self.commands: List[Tuple[int, str, Dict[str, Any]]] = []
|
|
263
|
-
self.writes: List[
|
|
288
|
+
self.writes: List[MotionWrite] = []
|
|
289
|
+
self.finish_exits = True
|
|
290
|
+
"""Finish platform-owned exits (leaving screens and modals) as soon as they mount."""
|
|
264
291
|
self.calls: List[Tuple[str, str, Dict[str, Any]]] = []
|
|
265
292
|
self.measured: List[Tuple[int, str]] = []
|
|
266
293
|
self.command_results: Dict[str, Any] = {}
|
|
@@ -316,12 +343,25 @@ class FakeTransport:
|
|
|
316
343
|
_mount_all()
|
|
317
344
|
return result
|
|
318
345
|
|
|
319
|
-
def
|
|
320
|
-
"""Queue
|
|
321
|
-
result = self.core.
|
|
346
|
+
def motion(self, surface: int, request_json: str) -> str:
|
|
347
|
+
"""Queue a motion request and apply it on the fake UI thread."""
|
|
348
|
+
result = self.core.motion(surface, request_json)
|
|
322
349
|
_mount_all()
|
|
323
350
|
return result
|
|
324
351
|
|
|
352
|
+
def shared_read(self, ident: int) -> str:
|
|
353
|
+
"""The latest value the fake UI thread published for a shared value, as JSON."""
|
|
354
|
+
return self.core.shared_read(ident)
|
|
355
|
+
|
|
356
|
+
def exit_finished(self, tag: int) -> None:
|
|
357
|
+
"""Finish a platform-owned exit (a leaving screen or modal), as the native stack would."""
|
|
358
|
+
self.core.exit_finished(self.surface, tag)
|
|
359
|
+
_take_writes()
|
|
360
|
+
|
|
361
|
+
def shared_elements(self, from_screen: int, to_screen: int) -> List[Dict[str, Any]]:
|
|
362
|
+
"""The views the core pairs by ``shared_tag`` between two screens."""
|
|
363
|
+
return list(json.loads(self.core.shared_elements(self.surface, from_screen, to_screen)))
|
|
364
|
+
|
|
325
365
|
def measure(self, surface: int, tag: int) -> str:
|
|
326
366
|
"""The shadow and window frames of a view."""
|
|
327
367
|
return self.core.measure(surface, tag)
|
|
@@ -387,9 +427,20 @@ class FakeTransport:
|
|
|
387
427
|
child = self._require(op.tag, "insert")
|
|
388
428
|
if child.parent is not None:
|
|
389
429
|
child.parent.children.remove(child)
|
|
390
|
-
|
|
430
|
+
# Indices count only the children that aren't animating out.
|
|
431
|
+
index = len(parent.children)
|
|
432
|
+
live = 0
|
|
433
|
+
for position, sibling in enumerate(parent.children):
|
|
434
|
+
if sibling.exiting is not None:
|
|
435
|
+
continue
|
|
436
|
+
if live == int(op.index):
|
|
437
|
+
index = position
|
|
438
|
+
break
|
|
439
|
+
live += 1
|
|
391
440
|
parent.children.insert(index, child)
|
|
392
441
|
child.parent = parent
|
|
442
|
+
elif op.kind == "exit":
|
|
443
|
+
self._require(op.tag, "exit").exiting = op.owner
|
|
393
444
|
elif op.kind == "delete":
|
|
394
445
|
deleted = self.views.pop(op.tag, None)
|
|
395
446
|
if deleted is None:
|
|
@@ -414,6 +465,26 @@ class FakeTransport:
|
|
|
414
465
|
codec.dumps({"call_id": op.call_id, "ok": True, "value": codec.to_jsonable(result)}),
|
|
415
466
|
)
|
|
416
467
|
|
|
468
|
+
def _write(self, write: MotionWrite) -> None:
|
|
469
|
+
self.writes.append(write)
|
|
470
|
+
if write.kind == "prop":
|
|
471
|
+
view = self.views.get(write.tag)
|
|
472
|
+
if view is not None:
|
|
473
|
+
if write.value is None:
|
|
474
|
+
view.animated.pop(write.prop, None)
|
|
475
|
+
else:
|
|
476
|
+
view.animated[write.prop] = write.value
|
|
477
|
+
elif write.kind == "frame":
|
|
478
|
+
view = self.views.get(write.tag)
|
|
479
|
+
if view is not None:
|
|
480
|
+
view.frame = write.frame
|
|
481
|
+
elif write.kind == "remove":
|
|
482
|
+
for tag in write.tags:
|
|
483
|
+
removed = self.views.pop(tag, None)
|
|
484
|
+
if removed is not None and removed.parent is not None:
|
|
485
|
+
removed.parent.children.remove(removed)
|
|
486
|
+
removed.parent = None
|
|
487
|
+
|
|
417
488
|
def _publish_list(self, tag: int) -> None:
|
|
418
489
|
edits = self.core.list_apply(self.surface, tag)
|
|
419
490
|
if edits is not None:
|