pythonnative 0.52.0__tar.gz → 0.52.1__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.52.0/src/pythonnative.egg-info → pythonnative-0.52.1}/PKG-INFO +1 -1
- {pythonnative-0.52.0 → pythonnative-0.52.1}/pyproject.toml +1 -1
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/__init__.py +1 -1
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/linking.py +47 -2
- {pythonnative-0.52.0 → pythonnative-0.52.1/src/pythonnative.egg-info}/PKG-INFO +1 -1
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_navigation.py +202 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/.github/workflows/release.yml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/LICENSE +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/MANIFEST.in +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/README.md +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/scripts/check-distributions.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/scripts/cibuildwheel.toml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/scripts/release-assets.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/setup.cfg +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/setup.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/_ios_log.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/alerts.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/animated.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/animation_graph.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/appearance.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/assets/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/assets/fonts.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bootstrap.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/android.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/codec.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/core.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/fake.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/ios.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/bridge/web.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/cli/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/cli/keys.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/cli/launch.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/cli/pn.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/component.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/_base.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/controls.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/events.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/graphics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/layout.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/lists.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/media.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/overlays.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/pressable.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/props.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/structural.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/components/text.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devclient.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/auth.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/compat.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/editor.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/hub.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/packages.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/qr.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/server.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/assets.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/bridge.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/colors.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/core/mount.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/core/pn_core.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/core/pn_core.wasm +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devsupport.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/connection.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/devtools.css +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/devtools.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/index.html +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/components.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/connect.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/console.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/network.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/panel.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/performance.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/panels/problems.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/report.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/tree.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/util.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/values.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/host.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/index.html +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/preview.css +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/renderer.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/shell.js +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/watcher.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/ws.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devtools/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devtools/agent.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devtools/console.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devtools/debugger.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devtools/inspector.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devtools/perf.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/diagnostics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/element.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/equality.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/errors.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/events.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/gestures.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/handles.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/hooks.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/hosts/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/hosts/base.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/hosts/native.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/hot_reload.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/icons/LICENSE-lucide.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/icons/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/icons/_lucide.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/icons/_names.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/journal.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/lint.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/list_data.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/mutations.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/build.gradle +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/gradle.properties +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/settings.gradle +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/cpp/CMakeLists.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/cpp/pncore_jni.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeValues.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/FrameClock.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/assets/PNAssets.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/EffectManagers.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNTheme.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenTransitions.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SvgManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/core/PNCore.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/TouchForwarder.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/graphics/SvgPath.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/Measurement.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/AssetModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DevSupportModule.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/ErrorOverlay.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PlatformModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/mount/MountDecoder.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/mount/Mounter.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNKeyboard.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/text/PNTextLayout.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNScrollViews.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_fade_in.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_fade_out.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_hold.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_bottom.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_left.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_right.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_bottom.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_left.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_right.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/drawable/pn_ic_arrow_back.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/values/pn_ids.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/main/res/xml/pn_file_paths.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AssetsAndSvgTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/DevSupportRobolectricTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/MountDecoderTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/NativeLifecycleTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundOneRobolectricTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoLogicTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoRobolectricTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ScreenTransitionsTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/StyleAccessibilityDeviceTest.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/CMakeLists.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/Package.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/include/module.modulemap +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/include/pn_core.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/python.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/animation.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/animation.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/contracts.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/contracts.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/core.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/core.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/gestures.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/gestures.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/lists.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/lists.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/mount.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/mount.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/shadow.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/shadow.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/style.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/style.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/value.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/src/value.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/CMakeLists.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/LICENSE +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/VENDORED.md +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGConfig.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGConfig.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGEnums.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGEnums.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGMacros.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGNode.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGNode.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGNodeLayout.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGNodeLayout.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGNodeStyle.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGNodeStyle.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGPixelGrid.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGPixelGrid.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGValue.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/YGValue.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/Yoga.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/AbsoluteLayout.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/AbsoluteLayout.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/Align.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/Baseline.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/Baseline.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/BoundAxis.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/Cache.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/Cache.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/CalculateLayout.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/CalculateLayout.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/FlexDirection.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/FlexLine.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/FlexLine.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/PixelGrid.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/PixelGrid.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/SizingMode.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/algorithm/TrailingPosition.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/config/Config.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/config/Config.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/debug/AssertFatal.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/debug/AssertFatal.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/debug/Log.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/debug/Log.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Align.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/BoxSizing.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Dimension.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Direction.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Display.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Edge.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Errata.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/ExperimentalFeature.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/FlexDirection.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Gutter.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Justify.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/LogLevel.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/MeasureMode.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/NodeType.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Overflow.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/PhysicalEdge.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/PositionType.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Unit.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/Wrap.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/enums/YogaEnums.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/event/event.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/event/event.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/module.modulemap +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/node/CachedMeasurement.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/node/LayoutResults.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/node/LayoutResults.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/node/LayoutableChildren.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/node/Node.cpp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/node/Node.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/numeric/Comparison.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/numeric/FloatOptional.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/style/SmallValueBuffer.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/style/Style.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/style/StyleLength.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/style/StyleValueHandle.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/core/yoga/style/StyleValuePool.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Package.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCoreBridge.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNEffectManagers.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSvgManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeValues.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/DevSupportModule.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/EnvironmentModules.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/ImagesModule.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNErrorOverlay.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Mount/PNMountDecoder.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Mount/PNMounter.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Resources/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNAssets.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Sources/PythonNativeKit/Text/PNTextLayout.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/xcshareddata/xcschemes/NativeTests.xcscheme +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/contracts.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/mount.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/validation.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAssetTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractFixtureTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNCoreHarness.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNLifecycleTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNMountTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNParityTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNTextLayoutTests.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/ios/Tests/TestHost/main.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/accessibility_info.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/app_state.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/battery.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/biometrics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/camera.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/clipboard.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/device.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/dimensions.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/fallback.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/file_system.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/haptics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/images.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/keyboard.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/linking.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/localization.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/location.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/net_info.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/notifications.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/permissions.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/registry.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/secure_store.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_modules/share.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_views/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native_views/bridge_backend.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/container.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/handle.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/hooks.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/host.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/navigators.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/ref.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/screen.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/navigation/state.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/net.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/platform.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/platform_metrics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/preview.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/profiling.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/android.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/artifacts.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/builder.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/bundle.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/bytecode.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/config.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/deps.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/devices.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/doctor.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/fingerprint.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/go.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/icons.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/ios.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/lockfile.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/permissions.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/plugins.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/project/runtime_assets.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/prop_checks.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/py.typed +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/query.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/reconciler/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/reconciler/boundaries.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/reconciler/children.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/reconciler/core.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/reconciler/layout_pass.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/reconciler/vnode.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/refresh.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/runtime.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/scheduler.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/_builtin_contracts.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/_components.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/builtins.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/codegen.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/commands.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/module_codegen.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/native_types.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/schema.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/services.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/templates/contracts.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/templates/contracts.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/templates/values.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/templates/values.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/sdk/types.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/storage.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/store.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/style.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/suspense.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/svg.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/build.gradle +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/build.gradle +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/gradle.properties +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/gradlew +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/android_template/settings.gradle +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/PNFinalizePython.sh +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/PrivacyInfo.xcprivacy +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/testing/__init__.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/testing/backend.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/testing/clock.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/testing/harness.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/testing/pytest_plugin.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/testing/queries.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/theme.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/utils.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative.egg-info/SOURCES.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative.egg-info/dependency_links.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative.egg-info/entry_points.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative.egg-info/requires.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative.egg-info/top_level.txt +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/contracts/list-trace.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/contracts/validation.json +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_alert.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_animated.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_animated_easing.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_animated_graph.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_appearance.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_assets.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_async_hooks.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_authoring.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_bridge.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_cli.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_cli_keys.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_codegen.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_components.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_contract_fixtures.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_core.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_core_semantics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_devclient.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_device_modules.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_devserver.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_devserver_session.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_devserver_ws.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_devtools.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_devtools_page.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_e2e_suite_renders.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_element.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_errors.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_events.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_extended_components.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_gesture_activation.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_gesture_composition.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_gestures.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_handles.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_hooks.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_hosts.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_hot_reload.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_identity_bailout.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_inbox.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_incremental_pipeline.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_incremental_render.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_interaction_props.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_ios_log.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_layout.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_lint.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_list_features.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_metric_hooks.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_mutations.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_native_lists.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_native_modules.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_native_values.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_native_views.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_net.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_new_components.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_performance_budgets.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_platform.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_platform_metrics.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_qr.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_reconciler.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_ref.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_release_packaging.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_release_workflow.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_runtime.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_runtime_contracts.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_runtime_correctness.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_runtime_overhaul.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_sdk.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_smoke.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_storage.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_store.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_style.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_suspense.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_testing_library.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_theme.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_transitions.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_typed_events.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_typing_conformance.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_utils.py +0 -0
- {pythonnative-0.52.0 → pythonnative-0.52.1}/tests/test_web_transport.py +0 -0
|
@@ -25,6 +25,13 @@ arguments, converted with its annotations (``str``, ``int``, ``float``,
|
|
|
25
25
|
those). Query parameters the component doesn't accept are ignored. A
|
|
26
26
|
URL whose values don't convert, or that lacks a required parameter,
|
|
27
27
|
matches nothing.
|
|
28
|
+
|
|
29
|
+
Path placeholders arrive percent-decoded, once, before conversion, so
|
|
30
|
+
``users/Ada%20Lovelace`` gives ``user="Ada Lovelace"`` and an encoded
|
|
31
|
+
``%2F`` stays inside one value instead of splitting the path. A ``+`` in
|
|
32
|
+
a path is a literal plus, unlike in the query string, where it means a
|
|
33
|
+
space. Bytes that don't decode as UTF-8 are left as they arrived.
|
|
34
|
+
Literal segments are matched exactly as written.
|
|
28
35
|
"""
|
|
29
36
|
|
|
30
37
|
from __future__ import annotations
|
|
@@ -34,7 +41,7 @@ import inspect
|
|
|
34
41
|
import types
|
|
35
42
|
import typing
|
|
36
43
|
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Sequence, Tuple, Union
|
|
37
|
-
from urllib.parse import parse_qsl, quote, urlencode, urlsplit
|
|
44
|
+
from urllib.parse import parse_qsl, quote, unquote, urlencode, urlsplit
|
|
38
45
|
|
|
39
46
|
from ..component import Component
|
|
40
47
|
from .screen import Screen
|
|
@@ -113,6 +120,35 @@ def _stringify(value: Any) -> str:
|
|
|
113
120
|
return str(value)
|
|
114
121
|
|
|
115
122
|
|
|
123
|
+
def _decode(segment: str) -> str:
|
|
124
|
+
"""Percent-decode one captured path segment, or return it unchanged.
|
|
125
|
+
|
|
126
|
+
Strict decoding with a fallback to the raw segment is
|
|
127
|
+
non-regressive: a segment whose bytes aren't valid UTF-8 (``%FF``,
|
|
128
|
+
Latin-1 ``caf%E9``) reads back exactly as it does without any
|
|
129
|
+
decoding, where ``errors="replace"`` would overwrite it with U+FFFD
|
|
130
|
+
and lose information that can't be recovered.
|
|
131
|
+
|
|
132
|
+
The fallback hands the converter the raw segment, and the converter
|
|
133
|
+
then applies its ordinary rules: a ``str`` param keeps it, an ``int``
|
|
134
|
+
param rejects it so the pattern doesn't match, and a ``Literal`` or
|
|
135
|
+
``Enum`` param matches only when one of its declared values equals
|
|
136
|
+
the raw text.
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
segment: One path segment, already split on ``/``, so an encoded
|
|
140
|
+
``%2F`` decodes to a slash inside the value.
|
|
141
|
+
|
|
142
|
+
Returns:
|
|
143
|
+
The decoded segment, or ``segment`` itself when it isn't valid
|
|
144
|
+
UTF-8.
|
|
145
|
+
"""
|
|
146
|
+
try:
|
|
147
|
+
return unquote(segment, errors="strict")
|
|
148
|
+
except UnicodeDecodeError:
|
|
149
|
+
return segment
|
|
150
|
+
|
|
151
|
+
|
|
116
152
|
class _Param:
|
|
117
153
|
__slots__ = ("name",)
|
|
118
154
|
|
|
@@ -165,7 +201,10 @@ class _Pattern:
|
|
|
165
201
|
raw: Dict[str, str] = {}
|
|
166
202
|
for pattern, actual in zip(self.segments, parts):
|
|
167
203
|
if isinstance(pattern, _Param):
|
|
168
|
-
|
|
204
|
+
# Only captured values are decoded, and only here. Decoding
|
|
205
|
+
# in the conversion loop below would decode query values a
|
|
206
|
+
# second time, since ``parse_qsl`` has already decoded them.
|
|
207
|
+
raw[pattern.name] = _decode(actual)
|
|
169
208
|
elif pattern != actual:
|
|
170
209
|
return None
|
|
171
210
|
for key, value in query.items():
|
|
@@ -202,6 +241,12 @@ def _split_path(path: Optional[str]) -> Tuple[Union[str, _Param], ...]:
|
|
|
202
241
|
class LinkTable:
|
|
203
242
|
"""URL <-> navigation state mapping built from a navigator tree.
|
|
204
243
|
|
|
244
|
+
Path placeholders are percent-decoded once, where the segment is
|
|
245
|
+
captured and before conversion; ``+`` in a path stays a literal plus,
|
|
246
|
+
and undecodable bytes are left as-is. Literal segments match exactly
|
|
247
|
+
as the paths declare them, and query values are decoded by
|
|
248
|
+
``parse_qsl`` alone.
|
|
249
|
+
|
|
205
250
|
Args:
|
|
206
251
|
navigator: The root navigator.
|
|
207
252
|
prefixes: URL prefixes the app answers to (schemes such as
|
|
@@ -36,6 +36,7 @@ from pythonnative.navigation import (
|
|
|
36
36
|
use_route,
|
|
37
37
|
use_screen_options,
|
|
38
38
|
)
|
|
39
|
+
from pythonnative.navigation import linking as linking_table_module
|
|
39
40
|
from pythonnative.navigation.screen import flatten_screens
|
|
40
41
|
from pythonnative.testing import FakeHost, RenderResult, render, render_hook
|
|
41
42
|
from pythonnative.theme import LIGHT_THEME
|
|
@@ -1842,6 +1843,207 @@ def test_link_table_round_trips_urls() -> None:
|
|
|
1842
1843
|
assert links.url_from_state(state) == url
|
|
1843
1844
|
|
|
1844
1845
|
|
|
1846
|
+
# Percent-encoded path params (issue #89). url_from_state has always
|
|
1847
|
+
# encoded placeholders; match now decodes them where it captures them.
|
|
1848
|
+
|
|
1849
|
+
|
|
1850
|
+
@component
|
|
1851
|
+
def Pair(left: str, right: str) -> pn.Node:
|
|
1852
|
+
return Text(f"pair {left}/{right}")
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
@component
|
|
1856
|
+
def OrgProfile(org: str = "", user: str = "") -> pn.Node:
|
|
1857
|
+
return Text(f"org {org}/{user}")
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
@component
|
|
1861
|
+
def CityEncoded(city: Literal["new%20york", "paris"] = "paris") -> pn.Node:
|
|
1862
|
+
return Text(f"city {city}")
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
@component
|
|
1866
|
+
def CityDecoded(city: Literal["new york", "paris"] = "paris") -> pn.Node:
|
|
1867
|
+
return Text(f"city {city}")
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
@component
|
|
1871
|
+
def IntOnly(n: int) -> pn.Node:
|
|
1872
|
+
return Text(f"int {n}")
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
@component
|
|
1876
|
+
def StrOnly(s: str) -> pn.Node:
|
|
1877
|
+
return Text(f"str {s}")
|
|
1878
|
+
|
|
1879
|
+
|
|
1880
|
+
@pytest.mark.parametrize(
|
|
1881
|
+
"value",
|
|
1882
|
+
[
|
|
1883
|
+
pytest.param("Ada Lovelace", id="space"),
|
|
1884
|
+
pytest.param("Zo\u00eb \u03a9mega \u65e5\u672c", id="unicode"),
|
|
1885
|
+
pytest.param("c++", id="literal-plus"),
|
|
1886
|
+
pytest.param("100%", id="percent-sign"),
|
|
1887
|
+
pytest.param("a/b", id="slash"),
|
|
1888
|
+
],
|
|
1889
|
+
)
|
|
1890
|
+
def test_link_table_path_params_round_trip(value: str) -> None:
|
|
1891
|
+
links = _links()
|
|
1892
|
+
state = NavigationState([Route("Tabs", state=NavigationState([Route("Profile", {"user": value})]))])
|
|
1893
|
+
url = links.url_from_state(state)
|
|
1894
|
+
assert url is not None
|
|
1895
|
+
|
|
1896
|
+
assert _leaf(links.state_from_url(url)).params == {"user": value}
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
def test_link_table_encoded_slash_stays_in_one_value() -> None:
|
|
1900
|
+
# Decoding happens per segment, after the split, so %2F can't become a
|
|
1901
|
+
# segment boundary and shift which pattern matches.
|
|
1902
|
+
route = _leaf(_links().state_from_url("myapp://tabs/u/a%2Fb"))
|
|
1903
|
+
assert route.name == "Profile"
|
|
1904
|
+
assert route.params == {"user": "a/b"}
|
|
1905
|
+
|
|
1906
|
+
|
|
1907
|
+
def test_link_table_double_encoded_value_decodes_once() -> None:
|
|
1908
|
+
assert _leaf(_links().state_from_url("myapp://tabs/u/%252F")).params == {"user": "%2F"}
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
def test_link_table_converter_sees_the_decoded_value() -> None:
|
|
1912
|
+
# Detail.id is `int`, and the conversion loop returns None on failure, so
|
|
1913
|
+
# before this fix an encoded value matched nothing at all rather than
|
|
1914
|
+
# reaching the screen as a raw string.
|
|
1915
|
+
route = _leaf(_links().state_from_url("myapp://items/%34%32"))
|
|
1916
|
+
assert route.name == "Detail"
|
|
1917
|
+
assert route.params == {"id": 42} # tab has a default, so it stays absent
|
|
1918
|
+
|
|
1919
|
+
|
|
1920
|
+
def test_link_table_does_not_decode_query_values_twice() -> None:
|
|
1921
|
+
# match() merges the query into the same dict as the captured path values
|
|
1922
|
+
# and then converts both in one loop, and parse_qsl has already decoded
|
|
1923
|
+
# the query. A decode placed in that conversion loop instead of at the
|
|
1924
|
+
# capture site would decode query values a second time, turning a%252Bb
|
|
1925
|
+
# into a+b. Search(**filters) accepts any query key, so it is observable.
|
|
1926
|
+
route = _leaf(_links().state_from_url("myapp://search?q=a%252Bb"))
|
|
1927
|
+
assert route.name == "Search"
|
|
1928
|
+
assert route.params == {"q": "a%2Bb"}
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
def test_link_table_plus_is_literal_in_a_path_and_a_space_in_a_query() -> None:
|
|
1932
|
+
# One URL, both rules: unquote leaves + alone, parse_qsl turns it into a
|
|
1933
|
+
# space. Detail takes a query param beside its path placeholder.
|
|
1934
|
+
detail = _leaf(_links().state_from_url("myapp://items/1?tab=a+b"))
|
|
1935
|
+
assert detail.params == {"id": 1, "tab": "a b"}
|
|
1936
|
+
|
|
1937
|
+
profile = _leaf(_links().state_from_url("myapp://tabs/u/a+b"))
|
|
1938
|
+
assert profile.params == {"user": "a+b"}
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
@pytest.mark.parametrize(
|
|
1942
|
+
"raw",
|
|
1943
|
+
[pytest.param("%FF", id="invalid-utf8"), pytest.param("caf%E9", id="latin-1")],
|
|
1944
|
+
)
|
|
1945
|
+
def test_link_table_undecodable_path_param_is_left_raw(raw: str) -> None:
|
|
1946
|
+
# Strict decoding with a raw fallback: a str param whose bytes aren't
|
|
1947
|
+
# valid UTF-8 reads back exactly as it did before decoding existed,
|
|
1948
|
+
# rather than being replaced with U+FFFD.
|
|
1949
|
+
assert _leaf(_links().state_from_url(f"myapp://tabs/u/{raw}")).params == {"user": raw}
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
def test_link_table_literal_segments_are_not_decoded() -> None:
|
|
1953
|
+
# The literal comparison still sees the raw segment, so an encoded
|
|
1954
|
+
# literal does not match, and a {param} still wins where it wins today.
|
|
1955
|
+
assert _links().state_from_url("myapp://tabs/%75/ada") is None
|
|
1956
|
+
|
|
1957
|
+
tabs = TabNavigator(Screen(Feed, path="new"), Screen(Profile, path="{user}"), name="Choice")
|
|
1958
|
+
table = LinkTable(StackNavigator(Screen(tabs, path="u")), ["myapp://"])
|
|
1959
|
+
|
|
1960
|
+
assert _leaf(table.state_from_url("myapp://u/new")).name == "Feed"
|
|
1961
|
+
encoded = _leaf(table.state_from_url("myapp://u/%6Eew"))
|
|
1962
|
+
assert encoded.name == "Profile"
|
|
1963
|
+
assert encoded.params == {"user": "new"}
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
def test_link_table_decodes_every_captured_segment() -> None:
|
|
1967
|
+
# Two placeholders in one path, encoded differently, so a decode applied
|
|
1968
|
+
# to only one of them leaves the other raw.
|
|
1969
|
+
root = StackNavigator(Screen(Home, path=""), Screen(Pair, path="p/{left}/{right}"))
|
|
1970
|
+
table = LinkTable(root, ["myapp://"])
|
|
1971
|
+
params = {"left": "Ada Lovelace", "right": "a/b"}
|
|
1972
|
+
url = table.url_from_state(NavigationState([Route("Pair", params)]))
|
|
1973
|
+
assert url == "myapp://p/Ada%20Lovelace/a%2Fb"
|
|
1974
|
+
|
|
1975
|
+
assert _leaf(table.state_from_url(url)).params == params
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
def test_link_table_decodes_captures_across_a_nested_navigator() -> None:
|
|
1979
|
+
# One placeholder on the outer navigator's path and one on the inner
|
|
1980
|
+
# screen's; both land on the leaf and both must be decoded.
|
|
1981
|
+
# The outer path prefixes every screen beneath it, and each resulting
|
|
1982
|
+
# pattern validates its placeholders against its own leaf component, so
|
|
1983
|
+
# the single inner screen has to accept both {org} and {user}.
|
|
1984
|
+
inner = StackNavigator(Screen(OrgProfile, path="u/{user}"), name="Inner")
|
|
1985
|
+
table = LinkTable(StackNavigator(Screen(inner, path="org/{org}")), ["myapp://"])
|
|
1986
|
+
|
|
1987
|
+
state = table.state_from_url("myapp://org/Zo%C3%AB/u/c%2B%2B")
|
|
1988
|
+
assert state is not None and state.current.name == "Inner"
|
|
1989
|
+
assert _leaf(state).params == {"user": "c++", "org": "Zo\u00eb"} # noqa: RUF001
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
def test_link_table_decoding_can_change_which_pattern_wins() -> None:
|
|
1993
|
+
# Behavior change worth seeing: a failed conversion returns None and
|
|
1994
|
+
# state_from_url falls through to the next pattern. An encoded value that
|
|
1995
|
+
# only converts once decoded therefore moves from the str route to the
|
|
1996
|
+
# int route, which is the fix working rather than a regression.
|
|
1997
|
+
root = StackNavigator(Screen(Home, path=""), Screen(IntOnly, path="x/{n}"), Screen(StrOnly, path="x/{s}"))
|
|
1998
|
+
table = LinkTable(root, ["myapp://"])
|
|
1999
|
+
|
|
2000
|
+
assert _leaf(table.state_from_url("myapp://x/7")).params == {"n": 7}
|
|
2001
|
+
encoded = _leaf(table.state_from_url("myapp://x/%37"))
|
|
2002
|
+
assert encoded.name == "IntOnly"
|
|
2003
|
+
assert encoded.params == {"n": 7}
|
|
2004
|
+
# A value that converts for neither still falls through to the str route.
|
|
2005
|
+
assert _leaf(table.state_from_url("myapp://x/abc")).params == {"s": "abc"}
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
def test_link_table_decoding_can_stop_a_pattern_matching() -> None:
|
|
2009
|
+
# The mirror of the test above, and a migration note. A Literal (or an
|
|
2010
|
+
# Enum) declared with an already-encoded value matched that URL on the
|
|
2011
|
+
# old behavior, because the raw segment was compared. Now the segment
|
|
2012
|
+
# decodes first, so "%20" no longer equals the declared text and the
|
|
2013
|
+
# pattern stops matching. The fix is to declare the decoded value,
|
|
2014
|
+
# which is what the second table here does.
|
|
2015
|
+
encoded = StackNavigator(Screen(Home, path=""), Screen(CityEncoded, path="c/{city}"))
|
|
2016
|
+
assert LinkTable(encoded, ["myapp://"]).state_from_url("myapp://c/new%20york") is None
|
|
2017
|
+
|
|
2018
|
+
decoded = StackNavigator(Screen(Home, path=""), Screen(CityDecoded, path="c/{city}"))
|
|
2019
|
+
route = _leaf(LinkTable(decoded, ["myapp://"]).state_from_url("myapp://c/new%20york"))
|
|
2020
|
+
assert route.params == {"city": "new york"}
|
|
2021
|
+
|
|
2022
|
+
|
|
2023
|
+
@pytest.mark.parametrize(
|
|
2024
|
+
"error",
|
|
2025
|
+
[
|
|
2026
|
+
pytest.param(RuntimeError("not a decoding problem"), id="runtime-error"),
|
|
2027
|
+
# A UnicodeError that isn't a decode error: catching UnicodeError
|
|
2028
|
+
# instead of UnicodeDecodeError would swallow this one too.
|
|
2029
|
+
pytest.param(UnicodeEncodeError("utf-8", "x", 0, 1, "not a decoding problem"), id="unicode-encode-error"),
|
|
2030
|
+
],
|
|
2031
|
+
)
|
|
2032
|
+
def test_link_table_decode_fallback_only_swallows_decode_errors(
|
|
2033
|
+
monkeypatch: pytest.MonkeyPatch, error: Exception
|
|
2034
|
+
) -> None:
|
|
2035
|
+
# The raw-segment fallback is for undecodable bytes only. Anything else
|
|
2036
|
+
# going wrong inside the decode is a bug and must surface rather than
|
|
2037
|
+
# quietly handing the screen an undecoded value.
|
|
2038
|
+
def _boom(*args: Any, **kwargs: Any) -> str:
|
|
2039
|
+
raise error
|
|
2040
|
+
|
|
2041
|
+
monkeypatch.setattr(linking_table_module, "unquote", _boom)
|
|
2042
|
+
|
|
2043
|
+
with pytest.raises(type(error), match="not a decoding problem"):
|
|
2044
|
+
_links().state_from_url("myapp://tabs/u/ada")
|
|
2045
|
+
|
|
2046
|
+
|
|
1845
2047
|
@pytest.fixture
|
|
1846
2048
|
def launch_url(monkeypatch: pytest.MonkeyPatch) -> Callable[[Optional[str]], None]:
|
|
1847
2049
|
monkeypatch.setattr(linking_module, "_url_listeners", [])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/core/pn_core.js
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/core/pn_core.wasm
RENAMED
|
File without changes
|
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/connection.js
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/devtools.css
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/devtools.js
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/report.js
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/tree.js
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/util.js
RENAMED
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/devserver/static/devtools/values.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pythonnative-0.52.0 → pythonnative-0.52.1}/src/pythonnative/native/android/gradle.properties
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|