pythonnative 0.36.0__py3-none-any.whl → 0.37.0__py3-none-any.whl

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.
Files changed (174) hide show
  1. pythonnative/__init__.py +6 -4
  2. pythonnative/_ios_log.py +1 -1
  3. pythonnative/alerts.py +34 -88
  4. pythonnative/bootstrap.py +90 -0
  5. pythonnative/bridge/__init__.py +306 -0
  6. pythonnative/bridge/android.py +78 -0
  7. pythonnative/bridge/codec.py +164 -0
  8. pythonnative/bridge/fake.py +236 -0
  9. pythonnative/bridge/ios.py +138 -0
  10. pythonnative/components/layout.py +65 -3
  11. pythonnative/gestures.py +13 -10
  12. pythonnative/hooks.py +41 -26
  13. pythonnative/hosts/__init__.py +13 -36
  14. pythonnative/hosts/native.py +348 -0
  15. pythonnative/images.py +6 -5
  16. pythonnative/native_modules/__init__.py +30 -29
  17. pythonnative/native_modules/app_state.py +10 -6
  18. pythonnative/native_modules/battery.py +20 -84
  19. pythonnative/native_modules/biometrics.py +11 -124
  20. pythonnative/native_modules/camera.py +15 -291
  21. pythonnative/native_modules/clipboard.py +14 -109
  22. pythonnative/native_modules/desktop.py +322 -0
  23. pythonnative/native_modules/file_system.py +15 -21
  24. pythonnative/native_modules/haptics.py +19 -129
  25. pythonnative/native_modules/linking.py +24 -137
  26. pythonnative/native_modules/location.py +28 -180
  27. pythonnative/native_modules/net_info.py +25 -135
  28. pythonnative/native_modules/notifications.py +36 -257
  29. pythonnative/native_modules/permissions.py +20 -184
  30. pythonnative/native_modules/registry.py +513 -0
  31. pythonnative/native_modules/secure_store.py +18 -155
  32. pythonnative/native_modules/share.py +8 -113
  33. pythonnative/native_views/__init__.py +67 -86
  34. pythonnative/native_views/bridge_backend.py +264 -0
  35. pythonnative/platform.py +19 -15
  36. pythonnative/platform_metrics.py +3 -3
  37. pythonnative/project/android.py +0 -3
  38. pythonnative/project/builder.py +38 -16
  39. pythonnative/project/config.py +12 -2
  40. pythonnative/project/plugins.py +366 -0
  41. pythonnative/py.typed +0 -0
  42. pythonnative/runtime.py +35 -203
  43. pythonnative/sdk/__init__.py +48 -33
  44. pythonnative/sdk/_components.py +57 -76
  45. pythonnative/storage.py +18 -243
  46. pythonnative/templates/android_template/app/build.gradle +6 -9
  47. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +34 -166
  48. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +13 -151
  49. pythonnative/templates/android_template/pythonnative/build.gradle +48 -0
  50. pythonnative/templates/android_template/pythonnative/src/main/AndroidManifest.xml +11 -0
  51. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/PNBridge.kt +214 -0
  52. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/PythonHost.kt +20 -0
  53. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +141 -0
  54. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +249 -0
  55. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +175 -0
  56. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +32 -0
  57. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +33 -0
  58. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +82 -0
  59. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +80 -0
  60. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +115 -0
  61. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +74 -0
  62. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +35 -0
  63. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +33 -0
  64. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +213 -0
  65. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +69 -0
  66. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +186 -0
  67. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +123 -0
  68. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +141 -0
  69. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +156 -0
  70. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +134 -0
  71. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PNColor.kt +201 -0
  72. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +87 -0
  73. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +55 -0
  74. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +122 -0
  75. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +214 -0
  76. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +113 -0
  77. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +52 -0
  78. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +131 -0
  79. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +245 -0
  80. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/TextManager.kt +233 -0
  81. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +355 -0
  82. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +179 -0
  83. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +149 -0
  84. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +233 -0
  85. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +127 -0
  86. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +527 -0
  87. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +73 -0
  88. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +316 -0
  89. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +97 -0
  90. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +200 -0
  91. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +135 -0
  92. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +100 -0
  93. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +88 -0
  94. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +89 -0
  95. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +178 -0
  96. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +16 -0
  97. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/screens/Navigator.kt +116 -0
  98. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +223 -0
  99. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +80 -0
  100. pythonnative/templates/android_template/{app/src/main/java/com/pythonnative/android_template → pythonnative/src/main/java/com/pythonnative/runtime/views}/PNAccessibilityDelegate.kt +5 -4
  101. pythonnative/templates/android_template/{app/src/main/java/com/pythonnative/android_template → pythonnative/src/main/java/com/pythonnative/runtime/views}/PNBorderDrawable.kt +12 -3
  102. pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +18 -0
  103. pythonnative/templates/android_template/{app/src/main/java/com/pythonnative/android_template → pythonnative/src/main/java/com/pythonnative/runtime/views}/PNFrameLayout.kt +9 -10
  104. pythonnative/templates/android_template/{app/src/main/java/com/pythonnative/android_template → pythonnative/src/main/java/com/pythonnative/runtime/views}/PNVirtualListView.java +9 -12
  105. pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +75 -0
  106. pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +197 -0
  107. pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/PNColorTest.kt +47 -0
  108. pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +78 -0
  109. pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/PromiseTest.kt +75 -0
  110. pythonnative/templates/android_template/settings.gradle +1 -0
  111. pythonnative/templates/ios_template/PythonNativeKit/Package.swift +21 -0
  112. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Animation/PNAnimator.swift +301 -0
  113. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNBridge.swift +191 -0
  114. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNRegistry.swift +140 -0
  115. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNTransaction.swift +165 -0
  116. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +53 -0
  117. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNButtonManagers.swift +206 -0
  118. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNColor.swift +173 -0
  119. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNComponentManager.swift +183 -0
  120. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNContainerView.swift +56 -0
  121. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNControlManagers.swift +281 -0
  122. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNImageManager.swift +221 -0
  123. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +243 -0
  124. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNPressableManager.swift +114 -0
  125. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +197 -0
  126. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTabBarManager.swift +106 -0
  127. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTextInputManager.swift +289 -0
  128. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTextManager.swift +230 -0
  129. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTransform.swift +82 -0
  130. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNViewManager.swift +86 -0
  131. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNViewState.swift +87 -0
  132. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNViewStyler.swift +340 -0
  133. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +257 -0
  134. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNWebViewManager.swift +124 -0
  135. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +260 -0
  136. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/AlertModule.swift +92 -0
  137. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/HostModule.swift +158 -0
  138. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/LifecycleModules.swift +174 -0
  139. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/MediaModules.swift +177 -0
  140. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PNNativeModule.swift +125 -0
  141. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PermissionModules.swift +251 -0
  142. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/SystemModules.swift +251 -0
  143. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +8 -0
  144. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +46 -0
  145. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Screens/PNViewController.swift +251 -0
  146. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNCompat.swift +46 -0
  147. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNJSON.swift +173 -0
  148. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNLog.swift +47 -0
  149. pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNWindow.swift +51 -0
  150. pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNColorTests.swift +50 -0
  151. pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNGestureTests.swift +101 -0
  152. pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNManagerTests.swift +124 -0
  153. pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNModuleTests.swift +98 -0
  154. pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNTransactionTests.swift +91 -0
  155. pythonnative/templates/ios_template/ios_template/AppDelegate.swift +8 -50
  156. pythonnative/templates/ios_template/ios_template/Info.plist +4 -4
  157. pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +38 -46
  158. pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +11 -16
  159. pythonnative/templates/ios_template/ios_template/ViewController.swift +12 -142
  160. pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +47 -1
  161. pythonnative/utils.py +4 -82
  162. pythonnative/virtual_rows.py +3 -3
  163. {pythonnative-0.36.0.dist-info → pythonnative-0.37.0.dist-info}/METADATA +3 -5
  164. pythonnative-0.37.0.dist-info/RECORD +263 -0
  165. pythonnative/hosts/android.py +0 -269
  166. pythonnative/hosts/ios.py +0 -404
  167. pythonnative/native_views/android.py +0 -3702
  168. pythonnative/native_views/ios.py +0 -5253
  169. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/Navigator.kt +0 -43
  170. pythonnative-0.36.0.dist-info/RECORD +0 -155
  171. {pythonnative-0.36.0.dist-info → pythonnative-0.37.0.dist-info}/WHEEL +0 -0
  172. {pythonnative-0.36.0.dist-info → pythonnative-0.37.0.dist-info}/entry_points.txt +0 -0
  173. {pythonnative-0.36.0.dist-info → pythonnative-0.37.0.dist-info}/licenses/LICENSE +0 -0
  174. {pythonnative-0.36.0.dist-info → pythonnative-0.37.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,263 @@
1
+ pythonnative/__init__.py,sha256=Eo3V3xNFhjGLusCVU2AYTAhRasCvn-tfgPebbQp5OTQ,9135
2
+ pythonnative/_ios_log.py,sha256=jmghL5GgcceTVL0e_2EwMDJjX0GMPhuwKOAJfZzRM0E,2576
3
+ pythonnative/alerts.py,sha256=QymInXpjCYyGzORVuHguPF24eEmRzx0ET0rDkCNwDwY,8054
4
+ pythonnative/animated.py,sha256=T8xVB7uqbHLzOJAfSqjYmiaA30OikdYOcE1GX8LbqaY,60065
5
+ pythonnative/appearance.py,sha256=vMkDRIz9ptaprMmlPmiYJLVwrDslfnc1bhwyE27M2ZI,3891
6
+ pythonnative/bootstrap.py,sha256=oXrVOyDmp_jpBYM3iuBcAb1w3-RX1Gis45WNo2w6m-8,3031
7
+ pythonnative/component.py,sha256=a7lfcd_WxEpQgYwehxDMkvphH1h960EFW8OQWrXwWnI,9668
8
+ pythonnative/diagnostics.py,sha256=S4ULu8ROsCIt2j6hsGXmGNVnyH5n9sn12nZ3WBqegiE,7991
9
+ pythonnative/element.py,sha256=j27rIFEADgCwgtNOTMZVX1mzx5R7Ejn2sb18rhUa1s4,5569
10
+ pythonnative/events.py,sha256=EFYz8HxVOTA3soAe0Z9P2gZN9ShLjXhKH7I34DmnNbM,7895
11
+ pythonnative/gestures.py,sha256=u-4QzgD5HdaPzoJ6SyF4sGeOfKt0f7l-3rrKhEaYgSg,46635
12
+ pythonnative/hooks.py,sha256=Fe1l-7eabGFeDmIvPROtgaDJBluyilsHQEloGq-oKQs,56026
13
+ pythonnative/hot_reload.py,sha256=MQVW8jqJiOMrNlsDlINiBa_P3ulLxm1JNtkF8E0pOqc,25198
14
+ pythonnative/images.py,sha256=MU_6ljEeIsjQEFpGuc38On4Y5Ri0i51HuQv8psXFtT4,6561
15
+ pythonnative/layout.py,sha256=ZWaItiNh-i7rofchnNaHK8L_YPSz487ejP4dmygZNQQ,61647
16
+ pythonnative/mutations.py,sha256=ZhcfhW445U360acxtNv0nJqrJb-u0K_e5p30wAB67lc,4644
17
+ pythonnative/net.py,sha256=nzYi8GPnxXCSzEtE_q_U4oEjgraB_iQe3nPP_DPlxvQ,8261
18
+ pythonnative/platform.py,sha256=HGPVYW_zdapfuh5dDbo-IGdWdceU502Hx6uPqMo5uyI,5257
19
+ pythonnative/platform_metrics.py,sha256=mx3Jw6sQ-ABcmg_DjvFv3HuxBWKiTIojlVqUf6XnOdM,8920
20
+ pythonnative/preview.py,sha256=aXDXclESWlfv50yGndsk1pQoOR3b8tCBNlFUs9zJ__k,19494
21
+ pythonnative/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ pythonnative/runtime.py,sha256=qpRJ0-EAsWeXmxJoCCkyY4gLsJ3QlgdBUTeaQhi7xu0,19394
23
+ pythonnative/scheduler.py,sha256=PAj3ybfs6Gn1RF2PHLN7Oqbe8R7ps83RXP8lwy-0vYQ,5457
24
+ pythonnative/storage.py,sha256=7AAgz9wAuDTad-Y0uBKkwtqcgYa_s-ScvDcgZ8Wmf3w,6131
25
+ pythonnative/style.py,sha256=32p1oRaHMiuJi3lnML82I8_77tQ5s6N6-y8bswJ3idM,24500
26
+ pythonnative/suspense.py,sha256=ojyz2yW1jTt2BJw0uLFYpnjTrCfUGsGC52lsAlKYgzg,14570
27
+ pythonnative/utils.py,sha256=MVw7U2atbxd2Z_I5XQ6XpDrgeNO65lvh9SsvxZE-ifc,4865
28
+ pythonnative/virtual_rows.py,sha256=auo5V327O5rUiNcF3Rex1yxxfhSsguj7HlupUkoYgK4,5048
29
+ pythonnative/bridge/__init__.py,sha256=lKzVBv82VbyaxCaezUsDXNTYG930Yd9N_sFcr4Uq628,10374
30
+ pythonnative/bridge/android.py,sha256=x2z7Ni0puQpSzdwkzbpTvUUPbSX2isE2RnWnYwvqcZM,3177
31
+ pythonnative/bridge/codec.py,sha256=qXpnE2jxZH6JCOnZ-TwV8ssIqht3JPDk_AMoH1m_FRU,5824
32
+ pythonnative/bridge/fake.py,sha256=U8eTkJGo1KwgeH6yE_OLFusEvvlhUXtEOfuVGuqpxRk,10417
33
+ pythonnative/bridge/ios.py,sha256=NeCxmWsp6qFweG8vobsvVbsR144wRRoIEiYZjzW3qvw,5936
34
+ pythonnative/cli/__init__.py,sha256=NM1psvKe8jT0vzp8Ak4MMoygZz4P_msk5g-YEsY8xLk,232
35
+ pythonnative/cli/pn.py,sha256=5p9tW6KQfjrr1Zcm2B0Ofj1wDYlo6RZZtb8w0bZGekU,41334
36
+ pythonnative/components/__init__.py,sha256=6xbkZYU3M4Jvv4wOLSiL8pj5HGkEYbOHXcyC0gj4oZU,2640
37
+ pythonnative/components/_base.py,sha256=avUjUcEpODVJSsOI845w7A0U85WAhp2fTbYXYjJsM8U,4744
38
+ pythonnative/components/controls.py,sha256=qd3Ir1_W-jliI7_BTM0AJB4RS-cxnj0QYQA5QKyHOZQ,18462
39
+ pythonnative/components/layout.py,sha256=3QcsTyqVk1lRy6MuVFSW2XyJUJsNHKWQPisLqDv8keY,21108
40
+ pythonnative/components/lists.py,sha256=uofhliTd14k8S1Kt8_jsENwiRinfzBKUPjah0CR2D2k,33028
41
+ pythonnative/components/media.py,sha256=g6bf8bidJlrASJ3bxEaFpuW9WegstkzvFgysLzALjC8,8167
42
+ pythonnative/components/overlays.py,sha256=n8wkOT2TST9aLD7Yrx8dW72qv5vXdx7DuuXHbM4C9wM,4124
43
+ pythonnative/components/pressable.py,sha256=vLPDOblFkWIErera0Cj8p3FQUAyB0xhK3Ut50-WWRUA,10214
44
+ pythonnative/components/structural.py,sha256=GYW-JoK5p9yJXXxIejQSF1K1Y4U3xoG3SoSpTNpFGUg,6145
45
+ pythonnative/components/text.py,sha256=kGHu7kc00T5LAQzgAKfOxxhY_ArO5fr4Hs5SEtQl9NA,11715
46
+ pythonnative/hosts/__init__.py,sha256=jCPXGnPaSNw7sSG2ATA6qpiT9UW0oAA7gzfjEsTOXvA,2227
47
+ pythonnative/hosts/base.py,sha256=CDXBrRsE5ZieDvN-GL9P9z4M0w7YAGVlEiTJ7VmBu7k,26657
48
+ pythonnative/hosts/desktop.py,sha256=CnhveLgGcgQaAsa8J7avJ1ufAHdm8SikLdfQbbdgOqg,3922
49
+ pythonnative/hosts/native.py,sha256=A6msAdMLGA3S5Cu-uyajftFFW9WprSKGszjUJ0_jwj0,12686
50
+ pythonnative/native_modules/__init__.py,sha256=N1UM1KkWgu3HsYLe8VDqQWO9vyOPLGctZ8LGiepx6YQ,3417
51
+ pythonnative/native_modules/app_state.py,sha256=TnuaeacxpgFUQbd1qrGIv_4A_B000Ik3oq0ZmzuHZnQ,2757
52
+ pythonnative/native_modules/battery.py,sha256=RPHy1_nV8DFLo5UB1qHjk99UnhOoC8tpwKIjSY5EDf8,2546
53
+ pythonnative/native_modules/biometrics.py,sha256=C4kUQXV7SsnPnPBsHiwqnb7jg40qMZbPa6Jlg3_7Gvw,1350
54
+ pythonnative/native_modules/camera.py,sha256=1lat5jhRbpgivyFDV-BGZ97tFRKd68ifDrlW9qdu0zc,1832
55
+ pythonnative/native_modules/clipboard.py,sha256=bBqBfyZ3AEXIAguKC6iNK6u6H6EgM1An1WcpQXgDLtE,1448
56
+ pythonnative/native_modules/desktop.py,sha256=4hkV3h_SUNpBM4fbgFShSW2FE48Dq512THrc2bEc0Xk,9258
57
+ pythonnative/native_modules/file_system.py,sha256=4bp3zK0jZRB0cIpP1bJDzLfxiHg79DFyQjPRP8yZqA8,7359
58
+ pythonnative/native_modules/haptics.py,sha256=dObM9WjWx5VM0WFn3Djcgf5YIEM5n5YOrxPFUQFfy40,2200
59
+ pythonnative/native_modules/linking.py,sha256=zwUCay18nn7g2O4Fes2WEgcUdomECtpayUPIRAQhTaI,3754
60
+ pythonnative/native_modules/location.py,sha256=gG1brnA6dcKzj_vVc1gjE1L2TvFoGv4pvO2KelCXgr8,2584
61
+ pythonnative/native_modules/net_info.py,sha256=NjWfGJE4a5hU4Oce2XcGnUBAmYGJe96mDop0ijyLpIM,3413
62
+ pythonnative/native_modules/notifications.py,sha256=NgLcRdjQMcEQAEjeiRp_R-b_2658KjwHn0R4kqqfYLo,4860
63
+ pythonnative/native_modules/permissions.py,sha256=jzgs4Q3oqCGzXhFAsmToqkScf60h7KbAwOm8vsvAW3Q,2047
64
+ pythonnative/native_modules/registry.py,sha256=g0c8oB96sciw5AEOPxWETjw_6hLlHarbQ6hndNZJ7YI,17875
65
+ pythonnative/native_modules/secure_store.py,sha256=hB2_ADzzKiCKbJxmbDbqyLroXk4aRYS6UJgK8FjmFpo,1823
66
+ pythonnative/native_modules/share.py,sha256=fqRnJuCOVNbr7mDiQ47YAuZsb5rK07m3D2q5Tgxcv6U,1435
67
+ pythonnative/native_views/__init__.py,sha256=8SdHxna9ffVrnR6XPciZMWnqHXLARrSrNz8OYySeyCw,14833
68
+ pythonnative/native_views/base.py,sha256=5z9P_2iF1bui9_1CWOQ1cEd86D4Peo4ELN4os3AYQME,12062
69
+ pythonnative/native_views/bridge_backend.py,sha256=-O71Lxltygy2-5N8P8wkNve2_n_9CtCYt8lHuPQxpYQ,10920
70
+ pythonnative/native_views/desktop.py,sha256=0p4z_QkSYMjHyV2Q_S96NHmhOHKEbS1sSs0Kl5yLnMM,94418
71
+ pythonnative/navigation/__init__.py,sha256=IWuHOmL4SO_PIPW9nNfPi5pF1n6t4ChFK1R4_Algguw,2845
72
+ pythonnative/navigation/container.py,sha256=eob849GyalJnq1aQxXC0Jz79MdK9Cs1i6dh7W7D3uqo,5298
73
+ pythonnative/navigation/handle.py,sha256=SYjfqMIQWCcHmd0sDQE9OQ0iaHPPhA1iOKQjdwCeWIQ,23550
74
+ pythonnative/navigation/hooks.py,sha256=bfFjdpBvlRKEjSXKPWHFQZAvOaoi9K9DmySbfntWFJw,2954
75
+ pythonnative/navigation/host.py,sha256=ZDT16pMssTwLQ48Xash887GQoNlOxijGDJK4wmcU7gk,2365
76
+ pythonnative/navigation/linking.py,sha256=A4as0oZN9kv32w_Ormr3wFGAJ5DVRzJ6e-ch3iUoV88,7972
77
+ pythonnative/navigation/navigators.py,sha256=hzjjWwUZOqAhznsiMQo2ekr3-OMK3yZ14tSDzW6umXI,22056
78
+ pythonnative/navigation/screen.py,sha256=8U7sPWrhDKjrKzDht22FiZG4eI8n_fiREWDzUegN5so,6386
79
+ pythonnative/navigation/state.py,sha256=TN2YokWXtp02Ksv9MD-qC6r-5yDV5EicdIlmlkyNGjg,10084
80
+ pythonnative/project/__init__.py,sha256=kAhWLONs53H1L7xVtczLmzYcQSOOkdRZTAJnIMhpBts,2064
81
+ pythonnative/project/android.py,sha256=1ONQLnWtwtl_KNod1ZdBiei39TankScTZ0MP-SeCDyY,19920
82
+ pythonnative/project/builder.py,sha256=XcbFVZn2_M250KndhNbKjVOpRX-1tNcNVMuNPQWdXdQ,24867
83
+ pythonnative/project/config.py,sha256=hkV68Uvutfaw3bQCAD_PL-8dfmUt6wD9HBS4vKKHeTA,26987
84
+ pythonnative/project/devices.py,sha256=zH0v95vOqWxXGdeTDljrZTA0RWBuU79v3zTQSaXkDh8,10106
85
+ pythonnative/project/doctor.py,sha256=aXkmKmAzwsUK_c5S25b6nxJfIQ8byOqcrzh7HbmJh2g,8619
86
+ pythonnative/project/icons.py,sha256=GaXpktQ9v4v2JZPM3ppueNPmwjTuFiLanHJDaZbLGuo,7945
87
+ pythonnative/project/ios.py,sha256=7Hb-PNm8ZJwXoCQoVCb57n2Qfsjvsdgx0KnckMS9ZBA,13126
88
+ pythonnative/project/permissions.py,sha256=WyApoqZ0mCTeAtffYbpCGV-bgLvOG7SlPcV7zSO_IV8,14227
89
+ pythonnative/project/plugins.py,sha256=j609UgtxZYW5Tbc-ijBQN-FZFFpao55pFVyLqxF9Pig,14228
90
+ pythonnative/project/runtime_assets.py,sha256=cYqfj4LUBykUswHZPX3Kp_wRU6nQ8VBCe2oc_QT4Io0,6868
91
+ pythonnative/reconciler/__init__.py,sha256=mwlPUA5naD50N-JpTyXGy030xA-0R5x9EaunNgDKlfg,808
92
+ pythonnative/reconciler/boundaries.py,sha256=FIt0fxL-mFs6SGKwwCWMcvW8GjNyzCsK6T1egEwW2K0,15038
93
+ pythonnative/reconciler/children.py,sha256=k_eP2FmSAjtvEEGTz6eGXpMpLeQ6PgyHnZpnKzTAyhE,3340
94
+ pythonnative/reconciler/core.py,sha256=Ahooh1jNqdPTY61MLV6i7QAEvSgEXQjR_C--y_Aatz4,46962
95
+ pythonnative/reconciler/layout_pass.py,sha256=OBsqzMp6hphxPMGTRNlh8N31OHn51K2bfWRe4DM8KNw,14809
96
+ pythonnative/reconciler/vnode.py,sha256=4AMqZBFXxJeV1v2qn_FEbaLw9hSIXGJEvAx7ifImH0k,10052
97
+ pythonnative/sdk/__init__.py,sha256=3Jj3WZyb6zCXEgb9OOgm6T1bTk8Mvd7BiVAPCsprfsk,4208
98
+ pythonnative/sdk/_components.py,sha256=ezu9CCxaMO6xaThveaCo330WyskPJmY_1ikK2GWBkX8,13959
99
+ pythonnative/templates/android_template/build.gradle,sha256=4gE6CRS6RuBu9kp-_e_uYYU9mBgHVZrqQg9caSxgyuc,352
100
+ pythonnative/templates/android_template/gradle.properties,sha256=REPaKLRfQiiVfIV8wYmgwzPWvF1f3bhh_kAMV9p4HME,1358
101
+ pythonnative/templates/android_template/gradlew,sha256=YxNShxF6Hm0SyEWA8fScYdG6AiGOzShmBgXpf5dufWU,5766
102
+ pythonnative/templates/android_template/gradlew.bat,sha256=xGonx5AHdG3lkisXq7YjDWStixujrRWF7lxlQ8KpsSk,2674
103
+ pythonnative/templates/android_template/settings.gradle,sha256=t3iF-7oXBYWt9AijuZm3yyUQBEOr98uF3KMSGQEfHL0,357
104
+ pythonnative/templates/android_template/app/build.gradle,sha256=d3KpoDshoIgYT1SeQKI5kP2-eHqIccOXKXNesfiQURw,1994
105
+ pythonnative/templates/android_template/app/proguard-rules.pro,sha256=Vv2WDPIl9spA-YKxOl27DYvD394T_3ZCKCXGBw0KGJA,750
106
+ pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt,sha256=Am8Yla3i1eR_ac5FVgPU_RsuMrCbyT79h1BcajGE-zI,693
107
+ pythonnative/templates/android_template/app/src/main/AndroidManifest.xml,sha256=BYJG1s2BZKY-WenCpgWYpHFUiioB9LGHAdoNV0ry9cE,1245
108
+ pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt,sha256=3itVk2AceAccQkY3MmS-P7UPxyt81GeA1AaASkjAQJE,4789
109
+ pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt,sha256=0SV31o62Z6lZcZpQILNo6m2uOxxJom6hBRU7YH9TNIU,634
110
+ pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml,sha256=7UI8c6b0Ck0pCfCQHmBSezqAfNWeG1WTvKrhgIscYyE,5606
111
+ pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml,sha256=AdGmpsEjTrf-Jw0JfrKD1yucla5RGIhvG2VzqtKA8fc,1702
112
+ pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml,sha256=HIgdCNktb3YoJC8QOTIv-0qZRtMRoPdARK59nyYFO6g,461
113
+ pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml,sha256=iPdlNJnvUkEm6lAYqZuvnMMmnn5YTWIF39122znznMA,343
114
+ pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml,sha256=iPdlNJnvUkEm6lAYqZuvnMMmnn5YTWIF39122znznMA,343
115
+ pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp,sha256=3QCZYZhkDtKPvAnNzXo4B8-HB_PrJVtlljTaPKam_wE,1404
116
+ pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp,sha256=Htc_U0GmnTtBx-AuEmgD9QzIwyhK30u7c38Mk1d67wc,2898
117
+ pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp,sha256=hGIZ5vcv6abBBMqJGcvuNqEB59L_janaZ7aJpYiPBg0,982
118
+ pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp,sha256=TixYuR3gETDmR54Ay7qvbnfNlh3SyOMDzxPNB3-pJjI,1772
119
+ pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp,sha256=OYNA2tgW_JpjOMsVGozx5FuSb5v7cGKLJMS9JSPMlNQ,1900
120
+ pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp,sha256=kbSQrvhldJARN_CiUicuHxrdmcGtcJ4Glu1okpuI0mE,3918
121
+ pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp,sha256=WK6H-gxbXRVi0n_WSNLAYVU_4g4-1XC95YgWLQHqeic,2884
122
+ pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp,sha256=MAn60Hn1dy8w7Ndn-YkkNn--D4HDAEjWctT9otXKfRI,5914
123
+ pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp,sha256=-Y_vW8O_5bZWksQK0cuuK-xPr58bJJw5diZ0DbcbYtg,3844
124
+ pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp,sha256=X68DN0XIyILEO7GzctTkpYkMrsY9mJKi51bJVBCLhdw,7778
125
+ pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml,sha256=SATxVByvfzh26RAdJVu6zfqwcgRL-wqbJDoo__CGcOM,743
126
+ pythonnative/templates/android_template/app/src/main/res/values/colors.xml,sha256=77cNdJlUmlfOoysA55DvBjLLDJXNru_RaQPIzRLIieQ,147
127
+ pythonnative/templates/android_template/app/src/main/res/values/strings.xml,sha256=JOtkOfmIW66eAGU48EP28xDwOXtCPOAOhNdzQPlDVNs,254
128
+ pythonnative/templates/android_template/app/src/main/res/values/themes.xml,sha256=8Amp6l23WClwtnLrfXYI2UFvC1eS6JzMRivN57rQBzw,420
129
+ pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml,sha256=ajy-heM7CqnQDEP9VY7D8QarUNMSOY6uvhfuium5oIk,336
130
+ pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml,sha256=n35MhMj9LIFHjRWWI4P0fMb_VdYqvNQMj_pvwIqMNbc,478
131
+ pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml,sha256=yx_EerSphFMO1g4ObuY4kpwwOCkOfn4LSwOjow--c4E,551
132
+ pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt,sha256=Z6lsNy__lyw7Nzj4GndWK1VLZkgAyX3czP8YX9to7r4,357
133
+ pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar,sha256=6ZbUUtJkXnDAHBEUPKLTdCc0oo2iv2HyXIK9wojJ5jc,59203
134
+ pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties,sha256=nG5CWg_8OmJISSdiSxhYMPnob2ji-O7t0vYmSsW48vc,232
135
+ pythonnative/templates/android_template/pythonnative/build.gradle,sha256=nyO-iIffzOM1mCVe2Hyti0l7163eITyCWNukVFUXjeM,1368
136
+ pythonnative/templates/android_template/pythonnative/src/main/AndroidManifest.xml,sha256=X30MdSw3RdlAYuLGZ1lc7Zn4bCUKFfJiBSsOIU-lvFo,527
137
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/PNBridge.kt,sha256=wI8NBi8EEt-uogIkLlR487K2XDEjhfYTwCRNlrFoMrs,7922
138
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/PythonHost.kt,sha256=jQ6JuQ9Y_4NuRJ31uj5mQSebAzKNGEIyoK41WPiwpGE,725
139
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt,sha256=12efTsrFgjOAtxjuCHkiIeFPmgMtLLxFNgMHQl3Q06I,5396
140
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt,sha256=GM7rWIEf6wfdj8Hw0_GNLItspd2eTMsOcfYRupOaDzU,11104
141
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt,sha256=eak2t9ZOgprdb5-FLaDHVi3VfSNWMHoT6-MmXfYi-U4,6477
142
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt,sha256=fmouVHCfqDxW54M6bhvqhb9wGSW60fD9x99ncHF3DjU,1004
143
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt,sha256=hE-Zq3EVh1fVy57xuZhape6VYXjYa4G7Bh_kP0Q3yy4,1130
144
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt,sha256=316RiHz64ZpPfCj4kIgxNBUQdf4LHMtWtZaHuPO0-sU,2791
145
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt,sha256=ApM5poLiJIPwmzv8BYh0FzCI776tY4b-C8SD9T28_4o,2981
146
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt,sha256=CWGBuoTLLtCmV2WxVANKl1MKuTUaxpGeXY34dwwe_JU,4384
147
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt,sha256=LdJJLdbw_LnhoZCdx7pxD568OE6XVgNnikNP7yKJd74,2406
148
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt,sha256=idWTCOU2R3i5SzDW-YIM-ngfHUV7IT0RONTnzO5cwko,2048
149
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt,sha256=ADelxwOIG3w3mCHAuX2dfUHf4m78isIYpDhhSmHSkrk,1482
150
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt,sha256=pCqCnGVBl67Ox4eeCqy9a1-9Mb1duQJTO5kQqA89NxQ,8742
151
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt,sha256=1oweqvlqWt5L4S8U5wM_caZYBINhO0uPwQLHRcshDVY,2745
152
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt,sha256=4ablWTphBpZXFZvsD_NKomgSoNoOGs9YBra--G6AqDM,7865
153
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt,sha256=d9bY2leOLU_yw0BzOT1DKnfGn_Z1OwwKdouFNXf0IXg,4486
154
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt,sha256=4Y2ZuD2f7TOhjgshp9JgyErbaMHjARjCvGIPP1RTVZ4,5813
155
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ImageManager.kt,sha256=R886dQlPHl8_F8dQ9W4IZv0JEzSHrLWRtpgAd8kshbQ,6450
156
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ModalManager.kt,sha256=z9JeBQg-cg9kHGBS-pVxoKvze791bGgerIcGSuD2yRg,5869
157
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PNColor.kt,sha256=lSmcBMTUglPliDRB52M4x5gwIQUfv_ej68EVUBKwDv4,7842
158
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PickerManager.kt,sha256=yLqfqdfVfWh7jer7Tp4t6qw0kkJcuyMm8uRquPbAshg,3572
159
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PortalManager.kt,sha256=OuiLEodxUb5QyxTWlI-faJD51E1ZgEN1FPpdPsIpwLs,1943
160
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/PressableManager.kt,sha256=EL-hrsy5MFY0cjBe-hhDT4bMLM9WQfldTPqxVz6RtOs,5413
161
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt,sha256=Jtcm-WhXmiv0vhpzLtJ0eyJJOHQWn9w0O0vscb-NNSs,9496
162
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt,sha256=JN8-vjfqr3gft7iXp6cnMkqqzmUqz3Z2OQX5npZf38A,4414
163
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt,sha256=uu41h75mOpDxJhQv5FxHP3ehW2RWb3GA2LtcgPkAHMw,2366
164
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt,sha256=CD63KoZzYHtdh8PZl3e2gqte_fySu5n9-EpJ_b4H76U,5548
165
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt,sha256=mIu5Nl9RE0U-K9cLMFnsDeE_X2rulNk3dwP0X6F9pdc,11176
166
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/TextManager.kt,sha256=J7mBuObp2MDg3N9MG6tm4Cck_fsxKs-sNDesXx0bxQo,10307
167
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt,sha256=EF6trXlIHCw_BuVLZuXHdoeYKxngpYLOlMEaOSbppaU,15813
168
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt,sha256=Zwi9P8XneCluasDjA-6sPB838SzmkMH8amCfg3lhgMc,7374
169
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt,sha256=9tuNEF_6A9k5bEEiIDoFUXSbxylT2-Pd65jQe6LHSEM,6162
170
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt,sha256=C-bFe4-HJh1cVwktoa0L2bpZTgV9HBX1uhJYpPlOVdg,9313
171
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt,sha256=nGvDg4Wr_rAicSaFVSlXxxaPoY-DaubkUa5c9X6tHwo,5520
172
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt,sha256=zVTPW9rOHAfyGYyfn1IgiqMKdDVyY46rDrFBn5g9QbU,16790
173
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt,sha256=-kbxXNZi5dK5v6WNG6CDnmmEDA7g-jAHXkytrP9Qn0w,2840
174
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt,sha256=Kk0mtQUzA68Uk2ZfxUE97MqLvNaTgv_1G190vJ44zmk,12085
175
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/HostModule.kt,sha256=wLRXVzG_2sp56bVEHEG5RunKLT0Wf4CiXHLKC5I485U,4542
176
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt,sha256=2yNWP-GsLqslCApnyttQO_xu_2Z7zsoLY-mAU9F6oSg,8060
177
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt,sha256=hOs0pvaLjXkFA-Tw84j1DSXnCSyX6AJhv4BG0qBYVaQ,5214
178
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt,sha256=tOHKerLi9bwNtaLvUR76KN4Gm7NhtlwbukL5e8nWSOE,3842
179
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt,sha256=iu7-WHnLlh948iH9zTUMzWyHgHaNlAP0Znd_kbzTQN4,4010
180
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt,sha256=pPHkPY6uZRmdJeCLjux5ePXukc8ZxFrpnTkY-O0CDGs,3543
181
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt,sha256=opvoMziD5_q55RrenoG4aDhgJt8feyMLeySzA1ow_A4,6788
182
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt,sha256=EHxRUYYDLoa4Yw-LPPXITHQ8q0VnLaf-Dp0inNhLOaQ,531
183
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/screens/Navigator.kt,sha256=nowGlF8110qqJOEj6K9J_K474vP0pghOjyFMRLSdzh8,4636
184
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt,sha256=6oxZlOrk-_PsdwCly0JrDgXvunrMeTllVnWhZ9X6xlY,8067
185
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt,sha256=fJag_HHfpikL5wV5qm-eKvFxbtUtYF8gofkZ7-UoEvM,3133
186
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt,sha256=TvdGLDczT90kbJXmCoO1oh5_hVoQF7MTHioOQLE59sg,1911
187
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt,sha256=bpFhzvK0rMT8w4coTZ0U9kxbyBeHYuba78TTTcEvu3Q,2530
188
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/views/PNEditText.kt,sha256=fFW3PTXlBmgNUebX8jfr9gduphfLZ2z3Tn10rbIORCY,638
189
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt,sha256=yco6NU3-1ssHIOyo18b5cAa8DuXsP07v3WCbkypsAMo,1799
190
+ pythonnative/templates/android_template/pythonnative/src/main/java/com/pythonnative/runtime/views/PNVirtualListView.java,sha256=fvPP9mrLFVKdZZhEDQZ1Plq8mJlXKHPVFVWu-0kgsug,5829
191
+ pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt,sha256=IiRq56LZ-4wtKl3NKmUfXoFaCzfW0a3zzoMw-EBZuCc,3302
192
+ pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt,sha256=M-r3w6j6DqQSkzPE0uBaEg52AIuOPMjUQRpd4TftITI,7942
193
+ pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/PNColorTest.kt,sha256=O0fK26UYNq_3JJWQl9NQTdIhvlP_B1XiIr_-erNccQM,1589
194
+ pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt,sha256=x0JKz-FBVXJrJAevYwG1j4V2IuG6ntCySLohHVa7GHg,2863
195
+ pythonnative/templates/android_template/pythonnative/src/test/java/com/pythonnative/runtime/PromiseTest.kt,sha256=8qb6lvub8tpo423YLC4E39cZPKnb2HXXZqD7Z_1lYx4,2775
196
+ pythonnative/templates/ios_template/PythonNativeKit/Package.swift,sha256=Ifo-ApwoeFW2SMuHkE-GCrSVHXBxUexYm9lvo_inSWg,532
197
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Animation/PNAnimator.swift,sha256=7w_7l2can-_iOIc1mvnHXLc_mIOCOHTRDBpe4vVw1sU,13313
198
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNBridge.swift,sha256=uAXsio82YxAtxktRrU-igCvm0ixTmw19NCd4JHtHa5U,7778
199
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNRegistry.swift,sha256=bcdt7KjqeMXD_6llHPF1sUPJlydPqlVc1YSRD8cnk9g,6274
200
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNTransaction.swift,sha256=bXmeJa0pyFVgGO-MUm4d1UZVFIOzVrHPx8AdeOVMEhY,7187
201
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift,sha256=wrVS9GuyDON0inT371FxhUNrw3Tt0CcpPnRXW8QNbbw,1423
202
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNButtonManagers.swift,sha256=SssxTsxDCM8ZdiE7DqBPelFLUGm_zP6vAmLTYGPzL9s,8933
203
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNColor.swift,sha256=P16kVI_OKveW7gA-o9OSFs9Z_Euc0i_xE1-nfq0gdjI,8677
204
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNComponentManager.swift,sha256=SDwFEIHpZNnNTQwSS-uHNllV9-dHfy7tdWsKKEUfbpE,7501
205
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNContainerView.swift,sha256=Ee6QVG9IpBFjDUwBRIJFn6rVaCjL4-Rq8xDo6z0COew,2012
206
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNControlManagers.swift,sha256=-bxiRfhIHyxxHfEQWEU2qg0OGIHrYHiWh6qKJsEdIVY,13789
207
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNImageManager.swift,sha256=9kWOzGmEwCd40m38ETivJLtuMpUzMknUdn_FBPC7K7A,9759
208
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNOverlayManagers.swift,sha256=gD5id-ciSSy-sfhgXwGX2Nnquh-BKu55kz3LdXPMttg,10559
209
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNPressableManager.swift,sha256=4sQs6Q3APcpWYe-UaI1slpoojkHiHBVFOm5bz89rqvU,4373
210
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNScrollViewManager.swift,sha256=km2K_fBaEsn2ajCqh9SbwSeWvF_mmpDyrg8xZmHogRI,9147
211
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTabBarManager.swift,sha256=Gh9BWFBezjwAUyrExfy6vDJaikUxWTNLUGJGDTHcTO8,4893
212
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTextInputManager.swift,sha256=yjTNRursp2-BezOSyQwk_mdTbMt0sjSNOZ7vLPSYR5w,11449
213
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTextManager.swift,sha256=qNMvHahyXqZcBPhJKotiDuozAp2r8c48LTNBZvkzzn0,11148
214
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNTransform.swift,sha256=few18u594GX90FoHgtvB10a83SxBHoRqXuzJnpU727s,3707
215
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNViewManager.swift,sha256=XVnFvqgVGsHqOZ-PNllXR1BbqWxC8avtvLrN2o73sco,3210
216
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNViewState.swift,sha256=UUlLFJsGVZr09NdHjNhsv1RxwYggmHt36pKlZYwp0zI,3463
217
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNViewStyler.swift,sha256=HDYWjGOpz0mzCAYHbtHfK3WN7bjJXDewUrvX5qu5Jmo,15893
218
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNVirtualListManager.swift,sha256=-4zY2iUh-s6_A9ouQMj4Zyh4zKw9pf3QRUJaJK6WFoI,10794
219
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Components/PNWebViewManager.swift,sha256=6aCoEY7vOP3xb0QnixuoVgs1QU3127yYg7ncZOegm2w,5809
220
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift,sha256=E0Bdr9klIA93EgFU5VprxjQ-mVJVg_KR-lWvHIOhvoM,11346
221
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/AlertModule.swift,sha256=gyMC238947t3O9eEXwQ4d8SWZhEK6JGlgFGP977qjt8,3995
222
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/HostModule.swift,sha256=Tl_HSWL14WeIZ5K77teXQXym4dFTSUlTOgwEf_6auKk,7273
223
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/LifecycleModules.swift,sha256=1t0tdZpml5CMt9ZxG6sYs_A10T6jgcjEE_iYb-hPNuU,6597
224
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/MediaModules.swift,sha256=anUy6xmnAa0dy1-M6B0J-Yq2_lcKHTuR2knfBvlzyrI,6686
225
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PNNativeModule.swift,sha256=wlHJO6ni-jyRoQUMP63Rat--hSCECNSgWZ-N52qZeEo,4436
226
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/PermissionModules.swift,sha256=yKDJ0hGx8SijtCvt0InQINbhV6wBlo7oank_5mcPhg0,9832
227
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Modules/SystemModules.swift,sha256=H9MukERogcDCfJDbut9TnD7_ggXnFGDRaxv-8Pb_aT4,9472
228
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift,sha256=WbWwvoHy1yY5wpF3vomM-h0ifNbpkgeziDYoRQohYk8,382
229
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift,sha256=_tb7laOdgUQhv4aM-Z0jAPSj8F5IOvtTPFIQTmOoiBI,1378
230
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Screens/PNViewController.swift,sha256=ODGButkl5sM9hnVZH1ou13nTI1MQ9Fldy1xO7-GKunc,9333
231
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNCompat.swift,sha256=6Yz-_ej4knC3fHwxvAIPEhkxjJvW-fHaopLRkc6iVtI,1539
232
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNJSON.swift,sha256=OFfnOGYckvSETQP6ZJYfpXLeVrAhKlNALoL4aza-Ml8,6138
233
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNLog.swift,sha256=O1bUXN0k90uVBxwN1savZSiso0pQycbZWonTKc8s7yQ,2054
234
+ pythonnative/templates/ios_template/PythonNativeKit/Sources/PythonNativeKit/Support/PNWindow.swift,sha256=tEtOoh5_uiP4V6Xb00UQQP1Gofdm7fCKoflmv4F8M-M,2258
235
+ pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNColorTests.swift,sha256=VpDY4p7noIEwLEab_DQXARFO2uMqNPnbZMHzJLDm-Iw,2097
236
+ pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNGestureTests.swift,sha256=O2P9ASfZZZbmY-Vd2c9YZkvQXT59OdafevDjB8gL3ZQ,6049
237
+ pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNManagerTests.swift,sha256=2_XuRnynDPWF0unYqEsW456HSEW91Su51jy48B7X0SM,6156
238
+ pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNModuleTests.swift,sha256=pAs-2Mx-nYQdQEJsDotHPSBtAepcgPznQyXJYAzmzz0,4525
239
+ pythonnative/templates/ios_template/PythonNativeKit/Tests/PythonNativeKitTests/PNTransactionTests.swift,sha256=g72Tfp8LTq4V-Gj4NlTVAa0__pLa_6XNJJEZu62i3n0,4047
240
+ pythonnative/templates/ios_template/ios_template/AppDelegate.swift,sha256=gUq-urF0ehOQ7yiUrfcQl0Vea_QQdg0ZvweQkZdot1g,1544
241
+ pythonnative/templates/ios_template/ios_template/BridgingHeader.h,sha256=JwlbCXMf3xsSrZYhTbW-F6JJw7xrXkA1W7ctc6Qc2Nw,332
242
+ pythonnative/templates/ios_template/ios_template/Info.plist,sha256=LuiCWAutMwxwVSkVC2tFPfycdKVDiGMBSP5dYYEpjNI,920
243
+ pythonnative/templates/ios_template/ios_template/PythonRuntime.swift,sha256=0fE2T-NtE-_w3EgZt3sxSl8PSesyPt7S8rLvQ6Lv3iM,15776
244
+ pythonnative/templates/ios_template/ios_template/SceneDelegate.swift,sha256=8gs0LJIBroRlFkh_eJ5nN-t2_Rs1paRVPo8kin7_mH4,1930
245
+ pythonnative/templates/ios_template/ios_template/ViewController.swift,sha256=qN_kXcZvkHMznl_MWQfPnpOmNyeEDbek3IBYl6pO1Pg,792
246
+ pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json,sha256=D9Sbo8NYXHCWeOAEaoIcPGBoXscGNyDTDTo0SL46IIs,63
247
+ pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json,sha256=mvZQhvowtJJS-uGhIlcxaR3nlPd3WvdNcb7-tQfRK3w,123
248
+ pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json,sha256=VUwGr7K_geOvQjFh5VKB6iVXV1mi0tjGMinUmB2JvQs,177
249
+ pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard,sha256=HJWMXGXzJJWbBcAvFwAE8_Wq0p6coMJUV2fv1baxVhY,1665
250
+ pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj,sha256=81ZT5klpVxvn0VxFdBoihMf5kPcLJeaqDmnvbMRn-qo,30040
251
+ pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist,sha256=36D5u4W5XMupxoEa2t-MtAf7XVIIjonbg-vDCOxEhUI,238
252
+ pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift,sha256=YnwzZx7yXB13xKAXEGNgz17VuhWeqkHTRTtBJ2Vu3_E,1238
253
+ pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift,sha256=HLRr3cmouRqQeXG13WrZ2XSAmgMgCsNXfZpbwkxeFcs,1385
254
+ pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift,sha256=f5JrG0uVtLMeJQy26Yyz7Om-JUkT220osqcbeIVkj2g,815
255
+ pythonnative/testing/__init__.py,sha256=a76InZThMU9UI1-AJURZ6rB9guZLJFl62Ep5CEOjpno,1683
256
+ pythonnative/testing/backend.py,sha256=1uePC5rWj4X2bz4w2z3esD675LEJWok8EFbixiiwk60,11299
257
+ pythonnative/testing/harness.py,sha256=nAUGPqgVhKBuSmdGXLKO7qxTRyHVLtzGVKXCZAkH35M,16418
258
+ pythonnative-0.37.0.dist-info/licenses/LICENSE,sha256=A69iG7TIAe6KkGQf6xoVHkc5JSZtOr5eRSvC5iuivnI,1067
259
+ pythonnative-0.37.0.dist-info/METADATA,sha256=ifi5PyHSZ2Ja8yL5ZIBAXHtBsmgW0FIizJxi_glD2_0,11170
260
+ pythonnative-0.37.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
261
+ pythonnative-0.37.0.dist-info/entry_points.txt,sha256=iUtDawWSAJAEyWTycpZxDuYz73ol31butpzDIEAgPO0,48
262
+ pythonnative-0.37.0.dist-info/top_level.txt,sha256=kT4SEATY2ywzrZ2Pgea6_zxyym44Q_PbOsUoOYjJLFE,13
263
+ pythonnative-0.37.0.dist-info/RECORD,,
@@ -1,269 +0,0 @@
1
- """Android screen host: a fragment inside the template's ``NavHostFragment``."""
2
-
3
- from __future__ import annotations
4
-
5
- import json
6
- import threading
7
- from typing import Any, Dict, Optional, Tuple
8
-
9
- from java import dynamic_proxy, jclass
10
-
11
- from ..utils import get_android_fragment_container, set_android_context
12
- from .base import ScreenHost, flush_hosts
13
-
14
- __all__ = ["AndroidScreenHost"]
15
-
16
- _SCHEDULED: Dict[int, ScreenHost] = {}
17
- _handler: Any = None
18
- _runnable: Any = None
19
- _main_looper: Any = None
20
-
21
-
22
- def _is_main_thread() -> bool:
23
- global _main_looper
24
- try:
25
- Looper = jclass("android.os.Looper")
26
- if _main_looper is None:
27
- _main_looper = Looper.getMainLooper()
28
- return Looper.myLooper() == _main_looper
29
- except Exception:
30
- return threading.current_thread() is threading.main_thread()
31
-
32
-
33
- def _flush_scheduled() -> None:
34
- hosts = list(_SCHEDULED.values())
35
- _SCHEDULED.clear()
36
- flush_hosts(hosts)
37
-
38
-
39
- def _publish_window_insets(view: Any) -> None:
40
- """Publish system-bar and IME insets from ``view`` to ``platform_metrics`` (best-effort)."""
41
- try:
42
- from .. import platform_metrics
43
- except Exception:
44
- return
45
- try:
46
- insets_obj = view.getRootWindowInsets()
47
- if insets_obj is None:
48
- return
49
- density = float(view.getResources().getDisplayMetrics().density) or 1.0
50
- Type: Any = None
51
- try:
52
- WindowInsets = jclass("android.view.WindowInsets")
53
- Type = WindowInsets.Type
54
- typed = insets_obj.getInsets(Type.systemBars())
55
- top_px, left_px, bottom_px, right_px = int(typed.top), int(typed.left), int(typed.bottom), int(typed.right)
56
- except Exception:
57
- top_px = int(insets_obj.getSystemWindowInsetTop() or 0)
58
- left_px = int(insets_obj.getSystemWindowInsetLeft() or 0)
59
- bottom_px = int(insets_obj.getSystemWindowInsetBottom() or 0)
60
- right_px = int(insets_obj.getSystemWindowInsetRight() or 0)
61
- platform_metrics.set_safe_area_insets(
62
- top_px / density, left_px / density, bottom_px / density, right_px / density
63
- )
64
- # The keyboard overlaps the navigation bar, so the visible
65
- # keyboard height is the IME inset minus the bar inset.
66
- try:
67
- ime = insets_obj.getInsets(Type.ime())
68
- platform_metrics.set_keyboard_height(max(0, int(ime.bottom) - bottom_px) / density)
69
- except Exception:
70
- pass
71
- except Exception:
72
- pass
73
-
74
-
75
- def _publish_color_scheme(activity: Any) -> None:
76
- try:
77
- from .. import appearance
78
-
79
- Configuration = jclass("android.content.res.Configuration")
80
- ui_mode = int(activity.getResources().getConfiguration().uiMode)
81
- night = ui_mode & int(Configuration.UI_MODE_NIGHT_MASK)
82
- appearance.set_system_color_scheme("dark" if night == int(Configuration.UI_MODE_NIGHT_YES) else "light")
83
- except Exception:
84
- pass
85
-
86
-
87
- class AndroidScreenHost(ScreenHost):
88
- """Host owned by ``ScreenFragment.kt``; ``native_instance`` is the activity."""
89
-
90
- def __init__(self, native_instance: Any, component_path: str, component: Any) -> None:
91
- set_android_context(native_instance)
92
- super().__init__(native_instance, component_path, component)
93
- self._layout_listener: Any = None # retained to prevent GC
94
- self._insets_listener: Any = None
95
-
96
- # -- lifecycle ------------------------------------------------------
97
-
98
- def on_create(self) -> None:
99
- """Publish the system color scheme from the activity, then mount the root component."""
100
- _publish_color_scheme(self.native_instance)
101
- super().on_create()
102
-
103
- def on_resume(self) -> None:
104
- """Refresh the system color scheme, then mark the screen focused."""
105
- _publish_color_scheme(self.native_instance)
106
- super().on_resume()
107
-
108
- def on_activity_result(self, request_code: int, result_code: int, data: Any) -> None:
109
- """Forward ``Activity.onActivityResult`` to the native-module dispatcher."""
110
- from ..native_modules import dispatch_activity_result
111
-
112
- dispatch_activity_result(int(request_code), int(result_code), data)
113
-
114
- def on_request_permissions_result(self, request_code: int, permissions: Any, grant_results: Any) -> None:
115
- """Forward ``Activity.onRequestPermissionsResult`` to the native-module dispatcher."""
116
- from ..native_modules import dispatch_permissions_result
117
-
118
- dispatch_permissions_result(int(request_code), list(permissions or []), list(grant_results or []))
119
-
120
- # -- platform primitives -------------------------------------------
121
-
122
- def _initial_viewport_size(self) -> Optional[Tuple[float, float]]:
123
- try:
124
- metrics = self.native_instance.getResources().getDisplayMetrics()
125
- density = float(metrics.density) or 1.0
126
- return (metrics.widthPixels / density, metrics.heightPixels / density)
127
- except Exception:
128
- return None
129
-
130
- def _schedule_render_async(self) -> bool:
131
- global _handler, _runnable
132
- if self._render_scheduled:
133
- return True
134
- if _is_main_thread():
135
- return False
136
- self._render_scheduled = True
137
- _SCHEDULED[id(self)] = self
138
- try:
139
- if _handler is None:
140
- Handler = jclass("android.os.Handler")
141
- Looper = jclass("android.os.Looper")
142
- Runnable = jclass("java.lang.Runnable")
143
- _handler = Handler(Looper.getMainLooper())
144
-
145
- class _RenderRunnable(dynamic_proxy(Runnable)): # type: ignore[misc]
146
- def run(self) -> None:
147
- _flush_scheduled()
148
-
149
- _runnable = _RenderRunnable()
150
- _handler.post(_runnable)
151
- return True
152
- except Exception:
153
- self._render_scheduled = False
154
- _SCHEDULED.pop(id(self), None)
155
- return False
156
-
157
- def _navigator(self) -> Any:
158
- return jclass(f"{self.native_instance.getPackageName()}.Navigator")
159
-
160
- def _native_push(self, component_path: str, args: Dict[str, Any], options: Dict[str, Any]) -> None:
161
- self._navigator().push(self.native_instance, component_path, json.dumps(args) if args else None)
162
-
163
- def _native_pop(self, count: int) -> None:
164
- try:
165
- navigator = self._navigator()
166
- for _ in range(count):
167
- navigator.pop(self.native_instance)
168
- except Exception:
169
- self.native_instance.finish()
170
-
171
- def _native_pop_to_root(self) -> None:
172
- try:
173
- self._navigator().popToRoot(self.native_instance)
174
- except Exception:
175
- pass
176
-
177
- def _native_set_options(self, options: Dict[str, Any]) -> None:
178
- title = options.get("title")
179
- try:
180
- if title is not None and hasattr(self.native_instance, "setTitle"):
181
- self.native_instance.setTitle(str(title))
182
- except Exception:
183
- pass
184
-
185
- def _attach_root(self, native_view: Any) -> None:
186
- container = None
187
- try:
188
- container = get_android_fragment_container()
189
- try:
190
- container.removeAllViews()
191
- except Exception:
192
- pass
193
- # A root from a prior mount may still be parented under the
194
- # old (destroyed) FrameLayout; addView throws otherwise.
195
- try:
196
- old_parent = native_view.getParent()
197
- if old_parent is not None:
198
- old_parent.removeView(native_view)
199
- except Exception:
200
- pass
201
- LayoutParams = jclass("android.view.ViewGroup$LayoutParams")
202
- container.addView(native_view, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
203
- except Exception:
204
- self.native_instance.setContentView(native_view)
205
- container = native_view
206
- if container is not None:
207
- self._register_layout_listener(container)
208
- self._register_insets_listener(container)
209
- self._push_initial_viewport(container)
210
-
211
- def _detach_root(self, native_view: Any) -> None:
212
- # Never clear the shared fragment container: a popped fragment's
213
- # detach runs after the screen below has re-attached its root.
214
- if native_view is None:
215
- return
216
- try:
217
- parent = native_view.getParent()
218
- if parent is not None:
219
- parent.removeView(native_view)
220
- except Exception:
221
- pass
222
-
223
- # -- viewport plumbing ---------------------------------------------
224
-
225
- def _register_layout_listener(self, view: Any) -> None:
226
- host = self
227
- try:
228
- View = jclass("android.view.View")
229
-
230
- class _LayoutListener(dynamic_proxy(View.OnLayoutChangeListener)): # type: ignore[misc]
231
- def onLayoutChange(self, v: Any, left: int, top: int, right: int, bottom: int, *_: Any) -> None:
232
- try:
233
- _publish_window_insets(v)
234
- density = float(v.getResources().getDisplayMetrics().density) or 1.0
235
- host.set_viewport_size((right - left) / density, (bottom - top) / density)
236
- except Exception:
237
- pass
238
-
239
- self._layout_listener = _LayoutListener()
240
- view.addOnLayoutChangeListener(self._layout_listener)
241
- except Exception:
242
- pass
243
-
244
- def _register_insets_listener(self, view: Any) -> None:
245
- try:
246
- View = jclass("android.view.View")
247
-
248
- class _InsetsListener(dynamic_proxy(View.OnApplyWindowInsetsListener)): # type: ignore[misc]
249
- def onApplyWindowInsets(self, v: Any, insets: Any) -> Any:
250
- _publish_window_insets(v)
251
- return insets
252
-
253
- self._insets_listener = _InsetsListener()
254
- view.setOnApplyWindowInsetsListener(self._insets_listener)
255
- except Exception:
256
- pass
257
-
258
- def _push_initial_viewport(self, view: Any) -> None:
259
- try:
260
- _publish_window_insets(view)
261
- metrics = view.getResources().getDisplayMetrics()
262
- density = float(metrics.density) or 1.0
263
- w, h = int(view.getWidth() or 0), int(view.getHeight() or 0)
264
- if w > 0 and h > 0:
265
- self.set_viewport_size(w / density, h / density)
266
- else:
267
- self.set_viewport_size(metrics.widthPixels / density, metrics.heightPixels / density)
268
- except Exception:
269
- pass