pythonnative 0.46.0__tar.gz → 0.47.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pythonnative-0.46.0/src/pythonnative.egg-info → pythonnative-0.47.0}/PKG-INFO +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/pyproject.toml +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/__init__.py +6 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/__init__.py +6 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/android.py +1 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/codec.py +8 -3
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/commits.py +27 -5
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/ios.py +1 -0
- pythonnative-0.47.0/src/pythonnative/bridge/list_store.py +135 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/web.py +1 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/lists.py +365 -95
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/host.js +16 -0
- pythonnative-0.47.0/src/pythonnative/devserver/static/layout.js +139 -0
- pythonnative-0.47.0/src/pythonnative/devserver/static/list-store.js +90 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/renderer.js +59 -30
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hooks.py +6 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hosts/base.py +111 -89
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hosts/native.py +13 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/journal.py +8 -1
- pythonnative-0.47.0/src/pythonnative/list_data.py +199 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/cpp/yoga_jni.cpp +0 -3
- pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +1322 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeValues.kt +18 -0
- pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +5515 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +13 -5
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +16 -4
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +7 -7
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/EffectManagers.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +1 -1
- pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ListStore.kt +97 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SvgManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +85 -30
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +37 -9
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +0 -1
- pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/ErrorOverlay.kt +42 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +5 -0
- pythonnative-0.47.0/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +143 -0
- pythonnative-0.47.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +33 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoRobolectricTest.kt +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +14 -4
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +14 -4
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +3 -3
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +2 -10
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +7 -7
- pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNListStore.swift +122 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +104 -64
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +1 -1
- pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +1423 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeValues.swift +135 -2
- pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +5539 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +38 -14
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +6 -0
- pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNErrorOverlay.swift +47 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +44 -4
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractFixtureTests.swift +14 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNLifecycleTests.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +2 -2
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNParityTests.swift +2 -2
- pythonnative-0.47.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +155 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/style.cpp +62 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_views/bridge_backend.py +147 -10
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/preview.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/profiling.py +29 -6
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/core.py +194 -45
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/layout_pass.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/builtins.py +19 -7
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/codegen.py +11 -16
- pythonnative-0.47.0/src/pythonnative/sdk/contract_codegen.py +197 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/schema.py +4 -3
- pythonnative-0.47.0/src/pythonnative/sdk/templates/contracts.kt +60 -0
- pythonnative-0.47.0/src/pythonnative/sdk/templates/contracts.swift +84 -0
- pythonnative-0.47.0/src/pythonnative/sdk/templates/values.swift +180 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/backend.py +29 -5
- {pythonnative-0.46.0 → pythonnative-0.47.0/src/pythonnative.egg-info}/PKG-INFO +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/SOURCES.txt +9 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_bridge.py +11 -6
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_codegen.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_components.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_extended_components.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_hosts.py +36 -15
- pythonnative-0.47.0/tests/test_incremental_pipeline.py +472 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_list_features.py +17 -31
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_lists.py +16 -13
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_new_components.py +13 -12
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime_overhaul.py +1 -1
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_web_transport.py +4 -2
- pythonnative-0.46.0/src/pythonnative/devserver/static/layout.js +0 -103
- pythonnative-0.46.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +0 -1327
- pythonnative-0.46.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +0 -245
- pythonnative-0.46.0/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +0 -49
- pythonnative-0.46.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +0 -19
- pythonnative-0.46.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +0 -1428
- pythonnative-0.46.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +0 -108
- pythonnative-0.46.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +0 -52
- pythonnative-0.46.0/src/pythonnative/sdk/templates/contracts.kt +0 -96
- pythonnative-0.46.0/src/pythonnative/sdk/templates/contracts.swift +0 -108
- pythonnative-0.46.0/src/pythonnative/sdk/templates/values.swift +0 -71
- {pythonnative-0.46.0 → pythonnative-0.47.0}/.github/workflows/release.yml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/LICENSE +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/MANIFEST.in +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/README.md +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/scripts/check-distributions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/scripts/cibuildwheel.toml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/scripts/release-assets.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/setup.cfg +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/setup.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/_ios_log.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/alerts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/animated.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/animation_graph.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/appearance.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/assets/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/assets/fonts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bootstrap.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/fake.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/cli/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/cli/pn.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/component.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/_base.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/controls.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/graphics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/layout.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/media.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/overlays.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/pressable.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/structural.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/text.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devclient.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/server.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/animation_graph.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/assets.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/bridge.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/colors.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/contracts.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/index.html +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/preview.css +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/shell.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/LICENSE +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/index.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/index.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/index.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/load.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/load.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/load.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/watcher.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/ws.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/diagnostics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/element.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/equality.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/gestures.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/handles.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hosts/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hot_reload.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/LICENSE-lucide.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/_lucide.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/_names.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/layout.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/mutations.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/build.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/gradle.properties +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/settings.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/cpp/CMakeLists.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/assets/PNAssets.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNTheme.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenTransitions.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/graphics/SvgPath.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/AssetModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PlatformModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNKeyboard.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNScrollViews.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_in.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_out.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_hold.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_bottom.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_left.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_right.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_bottom.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_left.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_right.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/drawable/pn_ic_arrow_back.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/values/pn_ids.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/xml/pn_file_paths.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AssetsAndSvgTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/NativeLifecycleTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundOneRobolectricTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoLogicTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ScreenTransitionsTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/StyleAccessibilityDeviceTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Package.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNEffectManagers.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSvgManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/EnvironmentModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/ImagesModule.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Resources/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNAssets.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/xcshareddata/xcschemes/NativeTests.xcscheme +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/validation.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAssetTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractParityTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/TestHost/main.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/LICENSE +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/Package.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/VENDORED.md +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/PNStyle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/module.modulemap +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGConfig.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGEnums.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGMacros.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGNode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGNodeLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGNodeStyle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGPixelGrid.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGValue.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/Yoga.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/python.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/CMakeLists.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGConfig.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGConfig.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGEnums.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGEnums.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGMacros.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNode.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGValue.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGValue.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/Yoga.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Align.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/SizingMode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/config/Config.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/config/Config.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/Log.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/Log.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Align.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/BoxSizing.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Dimension.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Direction.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Display.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Edge.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Errata.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/FlexDirection.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Gutter.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Justify.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/LogLevel.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/MeasureMode.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/NodeType.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Overflow.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/PositionType.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Unit.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Wrap.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/YogaEnums.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/event/event.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/event/event.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/module.modulemap +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/CachedMeasurement.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/LayoutableChildren.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/Node.cpp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/Node.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/numeric/Comparison.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/numeric/FloatOptional.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/Style.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/StyleLength.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/StyleValueHandle.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/StyleValuePool.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/accessibility_info.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/app_state.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/battery.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/biometrics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/camera.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/clipboard.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/device.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/dimensions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/fallback.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/file_system.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/haptics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/images.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/keyboard.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/linking.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/localization.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/location.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/net_info.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/notifications.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/permissions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/registry.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/secure_store.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/share.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_views/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/container.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/handle.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/hooks.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/host.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/linking.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/navigators.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/ref.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/screen.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/state.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/theme.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/net.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/platform.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/platform_metrics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/android.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/artifacts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/builder.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/config.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/deps.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/devices.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/doctor.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/fingerprint.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/icons.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/ios.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/lockfile.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/permissions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/plugins.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/runtime_assets.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/py.typed +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/query.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/boundaries.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/children.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/vnode.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/refresh.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/runtime.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/scheduler.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/_components.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/commands.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/module_codegen.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/native_types.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/services.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/templates/values.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/types.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/storage.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/style.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/suspense.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/svg.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/build.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/build.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradle.properties +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradlew +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/settings.gradle +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/__init__.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/clock.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/harness.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/pytest_plugin.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/queries.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/utils.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/dependency_links.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/entry_points.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/requires.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/top_level.txt +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_alert.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_animated.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_animated_easing.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_animated_graph.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_appearance.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_assets.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_async_hooks.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_cli.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_contract_fixtures.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_core_semantics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_devclient.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_device_modules.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_devserver.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_devserver_ws.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_e2e_suite_renders.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_element.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_gesture_activation.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_gesture_composition.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_gestures.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_handles.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_hooks.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_hot_reload.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_inbox.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_incremental_render.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_interaction_props.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_ios_log.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_layout.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_metric_hooks.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_mutations.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_modules.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_values.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_views.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_navigation.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_navigation_theme.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_net.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_platform.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_platform_metrics.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_reconciler.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_ref.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_release_packaging.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_release_workflow.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime_contracts.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime_correctness.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_sdk.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_smoke.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_storage.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_style.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_suspense.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_testing_library.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_transitions.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_typed_events.py +0 -0
- {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_utils.py +0 -0
|
@@ -62,7 +62,7 @@ Example:
|
|
|
62
62
|
```
|
|
63
63
|
"""
|
|
64
64
|
|
|
65
|
-
__version__ = "0.
|
|
65
|
+
__version__ = "0.47.0"
|
|
66
66
|
|
|
67
67
|
from . import appearance, diagnostics, gestures, icons, runtime, sdk, svg
|
|
68
68
|
from .alerts import Alert
|
|
@@ -276,6 +276,9 @@ __all__ = [
|
|
|
276
276
|
"DatePicker",
|
|
277
277
|
"ErrorBoundary",
|
|
278
278
|
"FlatList",
|
|
279
|
+
"ListData",
|
|
280
|
+
"Section",
|
|
281
|
+
"ViewableItem",
|
|
279
282
|
"Fragment",
|
|
280
283
|
"Icon",
|
|
281
284
|
"IconName",
|
|
@@ -505,3 +508,5 @@ __all__ = [
|
|
|
505
508
|
"element_factory",
|
|
506
509
|
"sdk",
|
|
507
510
|
]
|
|
511
|
+
|
|
512
|
+
from .list_data import ListData, Section, ViewableItem
|
|
@@ -199,7 +199,7 @@ def native_callback(kind: str, tag: int, name: str, payload: str) -> Optional[st
|
|
|
199
199
|
|
|
200
200
|
loop = get_loop()
|
|
201
201
|
if loop.is_running() and not _on_loop_thread(loop):
|
|
202
|
-
if kind == "event" and name in {"on_scroll", "on_selection_change", "on_gesture_update"}:
|
|
202
|
+
if kind == "event" and name in {"on_scroll", "on_window", "on_selection_change", "on_gesture_update"}:
|
|
203
203
|
key = (tag, name)
|
|
204
204
|
slot = _continuous.get(key)
|
|
205
205
|
if slot is None:
|
|
@@ -252,7 +252,11 @@ def _on_event(tag: int, name: str, payload: str) -> Optional[str]:
|
|
|
252
252
|
args = codec.loads(payload)
|
|
253
253
|
from ..native_views import get_backend
|
|
254
254
|
|
|
255
|
-
|
|
255
|
+
backend = get_backend()
|
|
256
|
+
defer = getattr(backend, "defer_event", None)
|
|
257
|
+
if defer is not None and defer(tag, name, args):
|
|
258
|
+
return None
|
|
259
|
+
accept = getattr(backend, "accept_event", None)
|
|
256
260
|
if accept is not None:
|
|
257
261
|
if not accept(tag, name, args):
|
|
258
262
|
return None
|
|
@@ -131,15 +131,20 @@ def build_transaction(
|
|
|
131
131
|
"""
|
|
132
132
|
from ..sdk.schema import COMPONENTS
|
|
133
133
|
|
|
134
|
-
names
|
|
134
|
+
names: dict[int, str] = {}
|
|
135
|
+
base_names = types or {}
|
|
136
|
+
fields_cache: dict[str, frozenset[str]] = {}
|
|
135
137
|
|
|
136
138
|
def python_fields(name: str) -> frozenset[str]:
|
|
139
|
+
if name in fields_cache:
|
|
140
|
+
return fields_cache[name]
|
|
137
141
|
schema = COMPONENTS.get(name)
|
|
138
|
-
|
|
142
|
+
fields_cache[name] = (
|
|
139
143
|
frozenset(key for key, field in schema.props.items() if field.get("native", {}).get("python_only"))
|
|
140
144
|
if schema
|
|
141
145
|
else frozenset()
|
|
142
146
|
)
|
|
147
|
+
return fields_cache[name]
|
|
143
148
|
|
|
144
149
|
encoded: List[Any] = []
|
|
145
150
|
sidecar: List[Tuple[int, Dict[str, Any]]] = []
|
|
@@ -152,7 +157,7 @@ def build_transaction(
|
|
|
152
157
|
sidecar.append((op.tag, python))
|
|
153
158
|
elif isinstance(op, UpdateOp):
|
|
154
159
|
removed = [key for key, value in op.changed_props.items() if value is UNSET]
|
|
155
|
-
wire, python = split_props(op.changed_props, python_fields(names.get(op.tag, "")))
|
|
160
|
+
wire, python = split_props(op.changed_props, python_fields(names.get(op.tag) or base_names.get(op.tag, "")))
|
|
156
161
|
encoded.append(["u", op.tag, wire, removed])
|
|
157
162
|
if python:
|
|
158
163
|
sidecar.append((op.tag, python))
|
|
@@ -10,11 +10,12 @@ from __future__ import annotations
|
|
|
10
10
|
import math
|
|
11
11
|
from collections.abc import Iterator, MutableMapping
|
|
12
12
|
from dataclasses import dataclass, field
|
|
13
|
-
from typing import Any
|
|
13
|
+
from typing import Any, Callable
|
|
14
14
|
|
|
15
15
|
from ..profiling import count, profiled
|
|
16
|
+
from .list_store import ListStore
|
|
16
17
|
|
|
17
|
-
PROTOCOL_VERSION =
|
|
18
|
+
PROTOCOL_VERSION = 4
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class CommitError(RuntimeError):
|
|
@@ -29,6 +30,7 @@ class ViewState:
|
|
|
29
30
|
props: dict[str, Any]
|
|
30
31
|
parent: int | None = None
|
|
31
32
|
children: list[int] = field(default_factory=list)
|
|
33
|
+
list_store: ListStore | None = None
|
|
32
34
|
|
|
33
35
|
|
|
34
36
|
class ViewOverlay(MutableMapping[int, ViewState]):
|
|
@@ -72,7 +74,9 @@ class ViewOverlay(MutableMapping[int, ViewState]):
|
|
|
72
74
|
"""Return a writable copy of this record, copying it at most once."""
|
|
73
75
|
if tag not in self.changed:
|
|
74
76
|
view = self[tag]
|
|
75
|
-
self.changed[tag] = ViewState(
|
|
77
|
+
self.changed[tag] = ViewState(
|
|
78
|
+
view.type_name, dict(view.props), view.parent, list(view.children), view.list_store
|
|
79
|
+
)
|
|
76
80
|
count("commit.records_copied")
|
|
77
81
|
return self.changed[tag]
|
|
78
82
|
|
|
@@ -93,11 +97,13 @@ class CommitState:
|
|
|
93
97
|
revision: int = 0
|
|
94
98
|
views: MutableMapping[int, ViewState] = field(default_factory=dict)
|
|
95
99
|
|
|
100
|
+
_list_publications: dict[int, Callable[[], None]] = field(default_factory=dict)
|
|
101
|
+
|
|
96
102
|
@profiled("validation")
|
|
97
103
|
def prepare(self, envelope: Any) -> CommitState:
|
|
98
104
|
"""Validate without mutating this state and return the candidate state."""
|
|
99
105
|
if not isinstance(envelope, dict) or envelope.get("version") != PROTOCOL_VERSION:
|
|
100
|
-
raise CommitError("Expected a protocol
|
|
106
|
+
raise CommitError("Expected a protocol v4 commit envelope; rebuild the native client")
|
|
101
107
|
application, surface, revision = (envelope.get(k) for k in ("application", "surface", "revision"))
|
|
102
108
|
if not isinstance(application, str) or not application or type(surface) is not int or surface <= 0:
|
|
103
109
|
raise CommitError("Invalid application or surface identity")
|
|
@@ -120,6 +126,9 @@ class CommitState:
|
|
|
120
126
|
|
|
121
127
|
def publish(self) -> CommitState:
|
|
122
128
|
"""Accept a successfully mounted candidate; the prior state is consumed."""
|
|
129
|
+
for publish in self._list_publications.values():
|
|
130
|
+
publish()
|
|
131
|
+
self._list_publications.clear()
|
|
123
132
|
if isinstance(self.views, ViewOverlay):
|
|
124
133
|
self.views = self.views.publish()
|
|
125
134
|
return self
|
|
@@ -139,7 +148,11 @@ class CommitState:
|
|
|
139
148
|
if tag in self.views or not isinstance(op[2], str) or not op[2] or not isinstance(op[3], dict):
|
|
140
149
|
raise ValueError("Invalid or duplicate create")
|
|
141
150
|
self._validate_props(op[2], op[3], False)
|
|
142
|
-
|
|
151
|
+
view = ViewState(op[2], dict(op[3]))
|
|
152
|
+
self.views[tag] = view
|
|
153
|
+
if op[2] == "VirtualList":
|
|
154
|
+
view.list_store = ListStore()
|
|
155
|
+
self._prepare_list(tag, view, op[3])
|
|
143
156
|
return
|
|
144
157
|
view = self.views[tag] if code == "f" else self._edit(tag)
|
|
145
158
|
if code == "u":
|
|
@@ -154,6 +167,8 @@ class CommitState:
|
|
|
154
167
|
from ..mutations import UNSET
|
|
155
168
|
|
|
156
169
|
self._validate_props(view.type_name, {name: UNSET for name in removed}, True)
|
|
170
|
+
if view.list_store is not None:
|
|
171
|
+
self._prepare_list(tag, view, op[2])
|
|
157
172
|
view.props.update(op[2])
|
|
158
173
|
for name in removed:
|
|
159
174
|
view.props.pop(name, None)
|
|
@@ -185,6 +200,13 @@ class CommitState:
|
|
|
185
200
|
if op[4] < 0 or op[5] < 0:
|
|
186
201
|
raise ValueError("Frame sizes must be nonnegative")
|
|
187
202
|
|
|
203
|
+
def _prepare_list(self, tag: int, view: ViewState, props: dict[str, Any]) -> None:
|
|
204
|
+
if "dataset" in props:
|
|
205
|
+
if tag in self._list_publications:
|
|
206
|
+
raise ValueError("A list may receive only one dataset patch per commit")
|
|
207
|
+
assert view.list_store is not None
|
|
208
|
+
self._list_publications[tag] = view.list_store.prepare(props["dataset"])
|
|
209
|
+
|
|
188
210
|
@staticmethod
|
|
189
211
|
def _validate_props(name: str, props: dict[str, Any], partial: bool) -> None:
|
|
190
212
|
from ..sdk.schema import COMPONENTS
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"""Revisioned list patch semantics shared by validation and headless renderers."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import math
|
|
6
|
+
from dataclasses import dataclass, field
|
|
7
|
+
from typing import Any, Callable
|
|
8
|
+
|
|
9
|
+
from ..profiling import count
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(frozen=True)
|
|
13
|
+
class ListRow:
|
|
14
|
+
"""Wire metadata for one logical row; application values stay in Python."""
|
|
15
|
+
|
|
16
|
+
key: str
|
|
17
|
+
revision: int
|
|
18
|
+
extent: float
|
|
19
|
+
sticky: bool = False
|
|
20
|
+
|
|
21
|
+
def wire(self) -> list[Any]:
|
|
22
|
+
"""Return the compact row record used by each renderer."""
|
|
23
|
+
return [self.key, self.revision, self.extent, self.sticky]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclass
|
|
27
|
+
class ListStore:
|
|
28
|
+
"""Apply list patches atomically, copying order only for structural edits."""
|
|
29
|
+
|
|
30
|
+
revision: int = 0
|
|
31
|
+
keys: list[str] = field(default_factory=list)
|
|
32
|
+
rows: dict[str, ListRow] = field(default_factory=dict)
|
|
33
|
+
|
|
34
|
+
def apply(self, packet: Any) -> None:
|
|
35
|
+
"""Validate the entire packet before publishing any of its changes."""
|
|
36
|
+
self.prepare(packet)()
|
|
37
|
+
|
|
38
|
+
def prepare(self, packet: Any) -> Callable[[], None]:
|
|
39
|
+
"""Validate a patch and return its publication without editing live state."""
|
|
40
|
+
if not isinstance(packet, dict) or set(packet) != {"base", "revision", "changes"}:
|
|
41
|
+
raise ValueError("Invalid list packet")
|
|
42
|
+
base, revision, changes = (packet[key] for key in ("base", "revision", "changes"))
|
|
43
|
+
if (
|
|
44
|
+
type(base) is not int
|
|
45
|
+
or base != self.revision
|
|
46
|
+
or type(revision) is not int
|
|
47
|
+
or revision != base + 1
|
|
48
|
+
or revision > 9_007_199_254_740_991
|
|
49
|
+
):
|
|
50
|
+
raise ValueError("Stale list revision")
|
|
51
|
+
if not isinstance(changes, list):
|
|
52
|
+
raise ValueError("List changes must be an array")
|
|
53
|
+
keys = self.keys
|
|
54
|
+
edited: dict[str, ListRow] = {}
|
|
55
|
+
deleted: set[str] = set()
|
|
56
|
+
reset = False
|
|
57
|
+
|
|
58
|
+
def exists(key: Any) -> bool:
|
|
59
|
+
return isinstance(key, str) and key not in deleted and (key in edited or not reset and key in self.rows)
|
|
60
|
+
|
|
61
|
+
def order() -> list[str]:
|
|
62
|
+
nonlocal keys
|
|
63
|
+
if keys is self.keys:
|
|
64
|
+
keys = list(keys)
|
|
65
|
+
count("list.order_copies")
|
|
66
|
+
return keys
|
|
67
|
+
|
|
68
|
+
def row(values: Any) -> ListRow:
|
|
69
|
+
if not isinstance(values, list) or len(values) != 4:
|
|
70
|
+
raise ValueError("Invalid list row")
|
|
71
|
+
key, version, extent, sticky = values
|
|
72
|
+
if (
|
|
73
|
+
not isinstance(key, str)
|
|
74
|
+
or not key
|
|
75
|
+
or type(version) is not int
|
|
76
|
+
or not 1 <= version <= 9_007_199_254_740_991
|
|
77
|
+
):
|
|
78
|
+
raise ValueError("Invalid list key or item revision")
|
|
79
|
+
if type(extent) not in (int, float) or not math.isfinite(extent) or extent <= 0 or type(sticky) is not bool:
|
|
80
|
+
raise ValueError("Invalid list extent or sticky flag")
|
|
81
|
+
count("list.rows_validated")
|
|
82
|
+
return ListRow(key, version, float(extent), sticky)
|
|
83
|
+
|
|
84
|
+
for change in changes:
|
|
85
|
+
if not isinstance(change, list) or not change:
|
|
86
|
+
raise ValueError("Invalid list change")
|
|
87
|
+
code = change[0]
|
|
88
|
+
if code == "reset" and len(change) == 2 and isinstance(change[1], list):
|
|
89
|
+
if reset or edited or deleted or keys is not self.keys:
|
|
90
|
+
raise ValueError("List reset must be the first change")
|
|
91
|
+
reset, keys = True, []
|
|
92
|
+
for values in change[1]:
|
|
93
|
+
item = row(values)
|
|
94
|
+
if item.key in edited:
|
|
95
|
+
raise ValueError("List keys must be unique")
|
|
96
|
+
keys.append(item.key)
|
|
97
|
+
edited[item.key] = item
|
|
98
|
+
elif code == "i" and len(change) == 3:
|
|
99
|
+
index, item = change[1], row(change[2])
|
|
100
|
+
if type(index) is not int or not 0 <= index <= len(keys) or exists(item.key):
|
|
101
|
+
raise ValueError("Invalid list insertion")
|
|
102
|
+
order().insert(index, item.key)
|
|
103
|
+
edited[item.key] = item
|
|
104
|
+
deleted.discard(item.key)
|
|
105
|
+
elif code == "u" and len(change) == 2:
|
|
106
|
+
item = row(change[1])
|
|
107
|
+
if not exists(item.key):
|
|
108
|
+
raise ValueError("Unknown list update key")
|
|
109
|
+
edited[item.key] = item
|
|
110
|
+
elif code == "d" and len(change) == 2 and exists(change[1]):
|
|
111
|
+
order().remove(change[1])
|
|
112
|
+
edited.pop(change[1], None)
|
|
113
|
+
deleted.add(change[1])
|
|
114
|
+
elif code == "m" and len(change) == 3 and exists(change[1]):
|
|
115
|
+
index = change[2]
|
|
116
|
+
if type(index) is not int or not 0 <= index < len(keys):
|
|
117
|
+
raise ValueError("Invalid list move index")
|
|
118
|
+
order().remove(change[1])
|
|
119
|
+
keys.insert(index, change[1])
|
|
120
|
+
else:
|
|
121
|
+
raise ValueError("Invalid list change")
|
|
122
|
+
|
|
123
|
+
def publish() -> None:
|
|
124
|
+
if self.revision != base:
|
|
125
|
+
raise ValueError("List changed before patch publication")
|
|
126
|
+
if reset:
|
|
127
|
+
self.rows = edited
|
|
128
|
+
else:
|
|
129
|
+
for key in deleted:
|
|
130
|
+
self.rows.pop(key, None)
|
|
131
|
+
self.rows.update(edited)
|
|
132
|
+
self.keys, self.revision = keys, revision
|
|
133
|
+
count("list.patches", len(changes))
|
|
134
|
+
|
|
135
|
+
return publish
|