pythonnative 0.47.0__tar.gz → 0.49.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. {pythonnative-0.47.0/src/pythonnative.egg-info → pythonnative-0.49.0}/PKG-INFO +5 -4
  2. {pythonnative-0.47.0 → pythonnative-0.49.0}/README.md +4 -3
  3. {pythonnative-0.47.0 → pythonnative-0.49.0}/pyproject.toml +2 -1
  4. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/__init__.py +149 -64
  5. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/animated.py +4 -1
  6. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/appearance.py +3 -0
  7. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/assets/__init__.py +1 -3
  8. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bootstrap.py +19 -10
  9. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/__init__.py +58 -62
  10. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/android.py +2 -14
  11. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/commits.py +16 -5
  12. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/fake.py +11 -11
  13. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/ios.py +7 -40
  14. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/web.py +4 -45
  15. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/cli/pn.py +131 -41
  16. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/component.py +176 -48
  17. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/__init__.py +20 -5
  18. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/_base.py +13 -7
  19. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/controls.py +27 -170
  20. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/graphics.py +18 -58
  21. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/layout.py +27 -180
  22. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/lists.py +7 -7
  23. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/media.py +15 -87
  24. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/overlays.py +3 -3
  25. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/pressable.py +27 -132
  26. pythonnative-0.49.0/src/pythonnative/components/props.py +97 -0
  27. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/structural.py +3 -3
  28. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/text.py +14 -136
  29. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devclient.py +71 -33
  30. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/__init__.py +5 -0
  31. pythonnative-0.49.0/src/pythonnative/devserver/auth.py +158 -0
  32. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/server.py +117 -13
  33. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/bridge.js +3 -28
  34. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/host.js +10 -23
  35. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/layout.js +1 -5
  36. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/renderer.js +6 -30
  37. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/shell.js +17 -2
  38. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/diagnostics.py +19 -8
  39. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/element.py +37 -10
  40. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/equality.py +7 -1
  41. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/hooks.py +79 -20
  42. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/hosts/native.py +5 -7
  43. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/hot_reload.py +274 -26
  44. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/icons/__init__.py +10 -13
  45. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/journal.py +118 -19
  46. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/layout.py +6 -4
  47. pythonnative-0.49.0/src/pythonnative/lint.py +773 -0
  48. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/list_data.py +12 -5
  49. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/AndroidManifest.xml +3 -3
  50. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +28 -26
  51. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeValues.kt +15 -17
  52. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +399 -394
  53. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +41 -54
  54. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +4 -4
  55. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +97 -45
  56. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +4 -11
  57. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +4 -8
  58. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +6 -12
  59. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +0 -6
  60. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +8 -10
  61. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/NativeLifecycleTest.kt +28 -0
  62. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +2 -4
  63. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +48 -61
  64. pythonnative-0.49.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +181 -0
  65. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +3 -11
  66. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +7 -10
  67. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +11 -3
  68. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +111 -109
  69. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeValues.swift +23 -27
  70. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +399 -394
  71. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +0 -6
  72. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +69 -21
  73. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +20 -3
  74. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractParityTests.swift +0 -1
  75. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNLifecycleTests.swift +14 -4
  76. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNParityTests.swift +1 -2
  77. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +1 -1
  78. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/style.cpp +0 -2
  79. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_views/bridge_backend.py +2 -2
  80. pythonnative-0.49.0/src/pythonnative/navigation/__init__.py +110 -0
  81. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/navigation/container.py +47 -47
  82. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/navigation/handle.py +263 -160
  83. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/navigation/hooks.py +12 -55
  84. pythonnative-0.49.0/src/pythonnative/navigation/linking.py +302 -0
  85. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/navigation/navigators.py +388 -335
  86. pythonnative-0.49.0/src/pythonnative/navigation/ref.py +104 -0
  87. pythonnative-0.49.0/src/pythonnative/navigation/screen.py +387 -0
  88. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/navigation/state.py +16 -33
  89. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/preview.py +6 -3
  90. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/profiling.py +3 -1
  91. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/android.py +22 -19
  92. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/artifacts.py +44 -0
  93. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/builder.py +47 -37
  94. pythonnative-0.49.0/src/pythonnative/project/bundle.py +78 -0
  95. pythonnative-0.49.0/src/pythonnative/project/bytecode.py +81 -0
  96. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/doctor.py +9 -7
  97. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/icons.py +7 -7
  98. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/ios.py +34 -13
  99. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/permissions.py +3 -3
  100. pythonnative-0.49.0/src/pythonnative/project/runtime_assets.py +373 -0
  101. pythonnative-0.49.0/src/pythonnative/prop_checks.py +116 -0
  102. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/reconciler/boundaries.py +12 -6
  103. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/reconciler/core.py +67 -38
  104. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/reconciler/layout_pass.py +3 -0
  105. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/reconciler/vnode.py +18 -2
  106. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/refresh.py +42 -9
  107. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/scheduler.py +13 -5
  108. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/__init__.py +0 -2
  109. pythonnative-0.49.0/src/pythonnative/sdk/_builtin_contracts.json +1 -0
  110. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/_components.py +3 -3
  111. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/builtins.py +48 -7
  112. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/codegen.py +5 -7
  113. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/contract_codegen.py +2 -0
  114. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/module_codegen.py +10 -4
  115. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/schema.py +144 -19
  116. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/templates/contracts.kt +2 -0
  117. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/templates/contracts.swift +2 -0
  118. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/types.py +5 -3
  119. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/storage.py +50 -27
  120. pythonnative-0.49.0/src/pythonnative/store.py +188 -0
  121. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/style.py +52 -259
  122. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/svg.py +1 -0
  123. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/build.gradle +0 -4
  124. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -4
  125. pythonnative-0.49.0/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +167 -0
  126. pythonnative-0.49.0/src/pythonnative/templates/ios_template/PNFinalizePython.sh +29 -0
  127. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +3 -0
  128. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +68 -10
  129. pythonnative-0.49.0/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +22 -0
  130. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +3 -240
  131. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/testing/backend.py +2 -2
  132. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/testing/pytest_plugin.py +8 -3
  133. pythonnative-0.49.0/src/pythonnative/theme.py +297 -0
  134. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/utils.py +18 -0
  135. {pythonnative-0.47.0 → pythonnative-0.49.0/src/pythonnative.egg-info}/PKG-INFO +5 -4
  136. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative.egg-info/SOURCES.txt +17 -7
  137. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_appearance.py +9 -37
  138. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_async_hooks.py +19 -0
  139. pythonnative-0.49.0/tests/test_authoring.py +341 -0
  140. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_bridge.py +14 -11
  141. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_cli.py +89 -10
  142. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_codegen.py +2 -1
  143. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_components.py +4 -4
  144. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_core_semantics.py +24 -0
  145. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_devclient.py +64 -12
  146. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_devserver.py +190 -6
  147. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_devserver_ws.py +47 -2
  148. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_e2e_suite_renders.py +65 -2
  149. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_hooks.py +7 -1
  150. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_hot_reload.py +279 -0
  151. pythonnative-0.49.0/tests/test_identity_bailout.py +430 -0
  152. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_inbox.py +11 -10
  153. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_incremental_render.py +2 -0
  154. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_layout.py +17 -5
  155. pythonnative-0.49.0/tests/test_lint.py +1000 -0
  156. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_list_features.py +29 -0
  157. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_mutations.py +4 -0
  158. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_native_views.py +1 -1
  159. pythonnative-0.49.0/tests/test_navigation.py +2052 -0
  160. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_new_components.py +1 -0
  161. pythonnative-0.49.0/tests/test_performance_budgets.py +164 -0
  162. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_reconciler.py +7 -2
  163. pythonnative-0.49.0/tests/test_release_packaging.py +321 -0
  164. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_runtime_correctness.py +53 -18
  165. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_runtime_overhaul.py +8 -2
  166. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_smoke.py +28 -3
  167. pythonnative-0.49.0/tests/test_store.py +555 -0
  168. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_style.py +42 -71
  169. pythonnative-0.49.0/tests/test_theme.py +416 -0
  170. pythonnative-0.49.0/tests/test_typing_conformance.py +47 -0
  171. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_web_transport.py +32 -39
  172. pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +0 -153
  173. pythonnative-0.47.0/src/pythonnative/navigation/__init__.py +0 -136
  174. pythonnative-0.47.0/src/pythonnative/navigation/linking.py +0 -200
  175. pythonnative-0.47.0/src/pythonnative/navigation/ref.py +0 -121
  176. pythonnative-0.47.0/src/pythonnative/navigation/screen.py +0 -299
  177. pythonnative-0.47.0/src/pythonnative/navigation/theme.py +0 -159
  178. pythonnative-0.47.0/src/pythonnative/project/runtime_assets.py +0 -200
  179. pythonnative-0.47.0/src/pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +0 -24
  180. pythonnative-0.47.0/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -130
  181. pythonnative-0.47.0/src/pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +0 -17
  182. pythonnative-0.47.0/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -23
  183. pythonnative-0.47.0/src/pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +0 -36
  184. pythonnative-0.47.0/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +0 -41
  185. pythonnative-0.47.0/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +0 -32
  186. pythonnative-0.47.0/tests/test_navigation.py +0 -1805
  187. pythonnative-0.47.0/tests/test_navigation_theme.py +0 -274
  188. pythonnative-0.47.0/tests/test_release_packaging.py +0 -160
  189. {pythonnative-0.47.0 → pythonnative-0.49.0}/.github/workflows/release.yml +0 -0
  190. {pythonnative-0.47.0 → pythonnative-0.49.0}/LICENSE +0 -0
  191. {pythonnative-0.47.0 → pythonnative-0.49.0}/MANIFEST.in +0 -0
  192. {pythonnative-0.47.0 → pythonnative-0.49.0}/scripts/check-distributions.py +0 -0
  193. {pythonnative-0.47.0 → pythonnative-0.49.0}/scripts/cibuildwheel.toml +0 -0
  194. {pythonnative-0.47.0 → pythonnative-0.49.0}/scripts/release-assets.py +0 -0
  195. {pythonnative-0.47.0 → pythonnative-0.49.0}/setup.cfg +0 -0
  196. {pythonnative-0.47.0 → pythonnative-0.49.0}/setup.py +0 -0
  197. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/_ios_log.py +0 -0
  198. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/alerts.py +0 -0
  199. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/animation_graph.py +0 -0
  200. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/assets/fonts.py +0 -0
  201. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/codec.py +0 -0
  202. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/bridge/list_store.py +0 -0
  203. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/cli/__init__.py +0 -0
  204. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/components/events.py +0 -0
  205. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/animation_graph.js +0 -0
  206. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/assets.js +0 -0
  207. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/colors.js +0 -0
  208. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/contracts.js +0 -0
  209. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/index.html +0 -0
  210. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/list-store.js +0 -0
  211. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/preview.css +0 -0
  212. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/LICENSE +0 -0
  213. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +0 -0
  214. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +0 -0
  215. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js +0 -0
  216. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +0 -0
  217. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/index.d.ts +0 -0
  218. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/index.js +0 -0
  219. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/index.js.map +0 -0
  220. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/load.d.ts +0 -0
  221. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/load.js +0 -0
  222. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/load.js.map +0 -0
  223. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +0 -0
  224. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js +0 -0
  225. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +0 -0
  226. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/watcher.py +0 -0
  227. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/devserver/ws.py +0 -0
  228. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/events.py +0 -0
  229. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/gestures.py +0 -0
  230. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/handles.py +0 -0
  231. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/hosts/__init__.py +0 -0
  232. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/hosts/base.py +0 -0
  233. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/icons/LICENSE-lucide.txt +0 -0
  234. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/icons/_lucide.json +0 -0
  235. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/icons/_names.py +0 -0
  236. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/mutations.py +0 -0
  237. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/build.gradle +0 -0
  238. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/gradle.properties +0 -0
  239. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/settings.gradle +0 -0
  240. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/cpp/CMakeLists.txt +0 -0
  241. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/cpp/yoga_jni.cpp +0 -0
  242. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +0 -0
  243. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +0 -0
  244. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +0 -0
  245. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +0 -0
  246. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/assets/PNAssets.kt +0 -0
  247. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +0 -0
  248. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +0 -0
  249. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +0 -0
  250. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +0 -0
  251. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +0 -0
  252. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +0 -0
  253. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +0 -0
  254. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +0 -0
  255. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +0 -0
  256. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +0 -0
  257. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/EffectManagers.kt +0 -0
  258. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +0 -0
  259. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +0 -0
  260. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ListStore.kt +0 -0
  261. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +0 -0
  262. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +0 -0
  263. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNTheme.kt +0 -0
  264. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +0 -0
  265. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +0 -0
  266. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +0 -0
  267. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +0 -0
  268. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenTransitions.kt +0 -0
  269. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +0 -0
  270. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +0 -0
  271. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +0 -0
  272. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SvgManager.kt +0 -0
  273. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +0 -0
  274. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +0 -0
  275. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +0 -0
  276. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +0 -0
  277. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +0 -0
  278. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +0 -0
  279. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +0 -0
  280. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +0 -0
  281. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +0 -0
  282. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/graphics/SvgPath.kt +0 -0
  283. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +0 -0
  284. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/AssetModules.kt +0 -0
  285. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +0 -0
  286. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +0 -0
  287. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/ErrorOverlay.kt +0 -0
  288. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +0 -0
  289. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +0 -0
  290. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +0 -0
  291. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +0 -0
  292. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +0 -0
  293. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PlatformModules.kt +0 -0
  294. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +0 -0
  295. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +0 -0
  296. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +0 -0
  297. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNKeyboard.kt +0 -0
  298. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +0 -0
  299. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +0 -0
  300. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +0 -0
  301. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +0 -0
  302. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +0 -0
  303. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNScrollViews.kt +0 -0
  304. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_in.xml +0 -0
  305. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_out.xml +0 -0
  306. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_hold.xml +0 -0
  307. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_bottom.xml +0 -0
  308. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_left.xml +0 -0
  309. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_right.xml +0 -0
  310. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_bottom.xml +0 -0
  311. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_left.xml +0 -0
  312. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_right.xml +0 -0
  313. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/drawable/pn_ic_arrow_back.xml +0 -0
  314. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/values/pn_ids.xml +0 -0
  315. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/main/res/xml/pn_file_paths.xml +0 -0
  316. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +0 -0
  317. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +0 -0
  318. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AssetsAndSvgTest.kt +0 -0
  319. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +0 -0
  320. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +0 -0
  321. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +0 -0
  322. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +0 -0
  323. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundOneRobolectricTest.kt +0 -0
  324. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoLogicTest.kt +0 -0
  325. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoRobolectricTest.kt +0 -0
  326. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ScreenTransitionsTest.kt +0 -0
  327. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/StyleAccessibilityDeviceTest.kt +0 -0
  328. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Package.swift +0 -0
  329. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +0 -0
  330. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +0 -0
  331. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +0 -0
  332. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +0 -0
  333. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +0 -0
  334. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +0 -0
  335. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +0 -0
  336. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +0 -0
  337. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +0 -0
  338. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNEffectManagers.swift +0 -0
  339. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +0 -0
  340. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNListStore.swift +0 -0
  341. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +0 -0
  342. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +0 -0
  343. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +0 -0
  344. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +0 -0
  345. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSvgManager.swift +0 -0
  346. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +0 -0
  347. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +0 -0
  348. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +0 -0
  349. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +0 -0
  350. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +0 -0
  351. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +0 -0
  352. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +0 -0
  353. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +0 -0
  354. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +0 -0
  355. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +0 -0
  356. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/EnvironmentModules.swift +0 -0
  357. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +0 -0
  358. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/ImagesModule.swift +0 -0
  359. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +0 -0
  360. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +0 -0
  361. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNErrorOverlay.swift +0 -0
  362. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +0 -0
  363. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +0 -0
  364. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +0 -0
  365. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +0 -0
  366. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Resources/PrivacyInfo.xcprivacy +0 -0
  367. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +0 -0
  368. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNAssets.swift +0 -0
  369. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +0 -0
  370. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +0 -0
  371. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +0 -0
  372. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +0 -0
  373. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/project.pbxproj +0 -0
  374. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/xcshareddata/xcschemes/NativeTests.xcscheme +0 -0
  375. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/validation.json +0 -0
  376. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +0 -0
  377. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAssetTests.swift +0 -0
  378. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +0 -0
  379. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractFixtureTests.swift +0 -0
  380. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +0 -0
  381. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +0 -0
  382. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +0 -0
  383. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +0 -0
  384. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/ios/Tests/TestHost/main.swift +0 -0
  385. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/LICENSE +0 -0
  386. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/Package.swift +0 -0
  387. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/VENDORED.md +0 -0
  388. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/PNStyle.h +0 -0
  389. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/module.modulemap +0 -0
  390. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGConfig.h +0 -0
  391. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGEnums.h +0 -0
  392. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGMacros.h +0 -0
  393. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGNode.h +0 -0
  394. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGNodeLayout.h +0 -0
  395. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGNodeStyle.h +0 -0
  396. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGPixelGrid.h +0 -0
  397. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/YGValue.h +0 -0
  398. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/include/yoga/Yoga.h +0 -0
  399. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/python.cpp +0 -0
  400. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/CMakeLists.txt +0 -0
  401. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGConfig.cpp +0 -0
  402. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGConfig.h +0 -0
  403. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGEnums.cpp +0 -0
  404. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGEnums.h +0 -0
  405. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGMacros.h +0 -0
  406. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGNode.cpp +0 -0
  407. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGNode.h +0 -0
  408. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.cpp +0 -0
  409. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.h +0 -0
  410. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.cpp +0 -0
  411. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.h +0 -0
  412. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.cpp +0 -0
  413. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.h +0 -0
  414. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGValue.cpp +0 -0
  415. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/YGValue.h +0 -0
  416. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/Yoga.h +0 -0
  417. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +0 -0
  418. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +0 -0
  419. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/Align.h +0 -0
  420. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +0 -0
  421. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.h +0 -0
  422. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +0 -0
  423. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.cpp +0 -0
  424. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.h +0 -0
  425. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +0 -0
  426. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +0 -0
  427. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +0 -0
  428. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +0 -0
  429. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.h +0 -0
  430. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +0 -0
  431. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +0 -0
  432. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/SizingMode.h +0 -0
  433. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +0 -0
  434. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/config/Config.cpp +0 -0
  435. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/config/Config.h +0 -0
  436. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +0 -0
  437. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.h +0 -0
  438. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/debug/Log.cpp +0 -0
  439. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/debug/Log.h +0 -0
  440. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Align.h +0 -0
  441. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/BoxSizing.h +0 -0
  442. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Dimension.h +0 -0
  443. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Direction.h +0 -0
  444. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Display.h +0 -0
  445. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Edge.h +0 -0
  446. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Errata.h +0 -0
  447. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +0 -0
  448. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/FlexDirection.h +0 -0
  449. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Gutter.h +0 -0
  450. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Justify.h +0 -0
  451. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/LogLevel.h +0 -0
  452. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/MeasureMode.h +0 -0
  453. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/NodeType.h +0 -0
  454. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Overflow.h +0 -0
  455. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +0 -0
  456. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/PositionType.h +0 -0
  457. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Unit.h +0 -0
  458. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/Wrap.h +0 -0
  459. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/enums/YogaEnums.h +0 -0
  460. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/event/event.cpp +0 -0
  461. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/event/event.h +0 -0
  462. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/module.modulemap +0 -0
  463. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/node/CachedMeasurement.h +0 -0
  464. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.cpp +0 -0
  465. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.h +0 -0
  466. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/node/LayoutableChildren.h +0 -0
  467. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/node/Node.cpp +0 -0
  468. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/node/Node.h +0 -0
  469. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/numeric/Comparison.h +0 -0
  470. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/numeric/FloatOptional.h +0 -0
  471. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +0 -0
  472. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/style/Style.h +0 -0
  473. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/style/StyleLength.h +0 -0
  474. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/style/StyleValueHandle.h +0 -0
  475. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native/yoga/yoga/style/StyleValuePool.h +0 -0
  476. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/__init__.py +0 -0
  477. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/accessibility_info.py +0 -0
  478. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/app_state.py +0 -0
  479. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/battery.py +0 -0
  480. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/biometrics.py +0 -0
  481. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/camera.py +0 -0
  482. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/clipboard.py +0 -0
  483. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/device.py +0 -0
  484. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/dimensions.py +0 -0
  485. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/fallback.py +0 -0
  486. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/file_system.py +0 -0
  487. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/haptics.py +0 -0
  488. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/images.py +0 -0
  489. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/keyboard.py +0 -0
  490. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/linking.py +0 -0
  491. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/localization.py +0 -0
  492. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/location.py +0 -0
  493. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/net_info.py +0 -0
  494. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/notifications.py +0 -0
  495. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/permissions.py +0 -0
  496. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/registry.py +0 -0
  497. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/secure_store.py +0 -0
  498. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_modules/share.py +0 -0
  499. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/native_views/__init__.py +0 -0
  500. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/navigation/host.py +0 -0
  501. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/net.py +0 -0
  502. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/platform.py +0 -0
  503. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/platform_metrics.py +0 -0
  504. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/__init__.py +0 -0
  505. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/config.py +0 -0
  506. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/deps.py +0 -0
  507. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/devices.py +0 -0
  508. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/fingerprint.py +0 -0
  509. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/lockfile.py +0 -0
  510. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/project/plugins.py +0 -0
  511. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/py.typed +0 -0
  512. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/query.py +0 -0
  513. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/reconciler/__init__.py +0 -0
  514. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/reconciler/children.py +0 -0
  515. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/runtime.py +0 -0
  516. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/commands.py +0 -0
  517. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/native_types.py +0 -0
  518. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/services.py +0 -0
  519. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/templates/values.kt +0 -0
  520. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/sdk/templates/values.swift +0 -0
  521. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/suspense.py +0 -0
  522. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
  523. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +0 -0
  524. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
  525. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
  526. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
  527. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
  528. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  529. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  530. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  531. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  532. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  533. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  534. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  535. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  536. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  537. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  538. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  539. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  540. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
  541. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
  542. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
  543. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
  544. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
  545. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
  546. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  547. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/build.gradle +0 -0
  548. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
  549. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
  550. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/gradle.properties +0 -0
  551. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/gradlew +0 -0
  552. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
  553. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/android_template/settings.gradle +0 -0
  554. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
  555. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
  556. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
  557. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
  558. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
  559. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
  560. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/PrivacyInfo.xcprivacy +0 -0
  561. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
  562. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  563. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/testing/__init__.py +0 -0
  564. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/testing/clock.py +0 -0
  565. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/testing/harness.py +0 -0
  566. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative/testing/queries.py +0 -0
  567. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative.egg-info/dependency_links.txt +0 -0
  568. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative.egg-info/entry_points.txt +0 -0
  569. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative.egg-info/requires.txt +0 -0
  570. {pythonnative-0.47.0 → pythonnative-0.49.0}/src/pythonnative.egg-info/top_level.txt +0 -0
  571. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_alert.py +0 -0
  572. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_animated.py +0 -0
  573. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_animated_easing.py +0 -0
  574. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_animated_graph.py +0 -0
  575. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_assets.py +0 -0
  576. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_contract_fixtures.py +0 -0
  577. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_device_modules.py +0 -0
  578. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_element.py +0 -0
  579. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_events.py +0 -0
  580. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_extended_components.py +0 -0
  581. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_gesture_activation.py +0 -0
  582. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_gesture_composition.py +0 -0
  583. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_gestures.py +0 -0
  584. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_handles.py +0 -0
  585. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_hosts.py +0 -0
  586. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_incremental_pipeline.py +0 -0
  587. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_interaction_props.py +0 -0
  588. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_ios_log.py +0 -0
  589. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_metric_hooks.py +0 -0
  590. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_native_lists.py +0 -0
  591. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_native_modules.py +0 -0
  592. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_native_values.py +0 -0
  593. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_net.py +0 -0
  594. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_platform.py +0 -0
  595. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_platform_metrics.py +0 -0
  596. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_ref.py +0 -0
  597. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_release_workflow.py +0 -0
  598. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_runtime.py +0 -0
  599. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_runtime_contracts.py +0 -0
  600. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_sdk.py +0 -0
  601. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_storage.py +0 -0
  602. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_suspense.py +0 -0
  603. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_testing_library.py +0 -0
  604. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_transitions.py +0 -0
  605. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_typed_events.py +0 -0
  606. {pythonnative-0.47.0 → pythonnative-0.49.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonnative
3
- Version: 0.47.0
3
+ Version: 0.49.0
4
4
  Summary: Cross-platform native UI toolkit for Android and iOS
5
5
  Author: Owen Carey
6
6
  License: MIT License
@@ -81,7 +81,8 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
81
81
  - **Native widgets and layout:** Swift and Kotlin component managers own UIKit and Android widgets. The shared Yoga C++ engine computes layout beside the controls, using platform measurements for text and intrinsic sizes.
82
82
  - **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling, and animation frames. Component-owned tasks are canceled on unmount.
83
83
  - **Incremental reconciliation:** State changes update affected component subtrees. Versioned bridge commits validate operations and acknowledge revisions; events and controlled text inputs carry identities that prevent stale updates.
84
- - **Native lists and navigation:** UIKit collection views and Android recycler views recycle cells for fixed or variable row sizes, grids, sections, and horizontal lists. Native navigation containers present logical screen roots at every nesting level while providers and component state remain in the shared Python tree; navigators take screen options, groups, themes, tab-bar styles, and a navigation ref usable outside components.
84
+ - **Typed, Pythonic authoring:** Components return `pn.Node` and their signatures are their props, so a strict type checker verifies element trees and conditional children. Screens are components whose parameters are their route params (`nav.push(ItemScreen(id=42))`), navigators are module-level values with deep links derived from each screen's `path`, one `Theme` dataclass styles the app and its navigators, `StyleSheet` namespaces give styles typed names, and `pn.Store` holds app state with selector-based re-renders. `pn lint` checks the rules of hooks.
85
+ - **Native lists and navigation:** UIKit collection views and Android recycler views recycle cells for fixed or variable row sizes, grids, sections, and horizontal lists. Native navigation containers present logical screen roots at every nesting level while providers and component state remain in the shared Python tree; navigators take screen options, groups, tab-bar styles, and a navigation ref usable outside components.
85
86
  - **Animation and gestures:** Serialized animation graphs support timing with named or bezier easing, springs, React Native's decay model, arithmetic, interpolation, and native scroll and gesture bindings. Swift and Kotlin recognize mobile gestures with Gesture Handler-style activation offsets and update supported animation bindings without Python work on every frame.
86
87
  - **Assets and graphics:** Drop images, fonts, and SVGs under `app/assets/` and reference them by path. Density variants, bundled fonts, a vector `Icon` set, `Svg` drawing, gradients, and blur render natively on both platforms and in the browser preview.
87
88
  - **Device APIs:** Python facades expose camera, location, notifications, storage, permissions, keyboard, dimensions and pixel ratio, device info, localization, accessibility settings, and other native services, with a Python fallback for headless tests. Test permissions and platform behavior on your deployment targets.
@@ -108,7 +109,7 @@ import pythonnative as pn
108
109
 
109
110
 
110
111
  @pn.component
111
- def App():
112
+ def App() -> pn.Node:
112
113
  count, set_count = pn.use_state(0)
113
114
  return pn.Column(
114
115
  pn.Text(f"Count: {count}", style=pn.style(font_size=24, bold=True)),
@@ -116,7 +117,7 @@ def App():
116
117
  "Tap me",
117
118
  on_press=lambda: set_count(count + 1),
118
119
  ),
119
- style=pn.style(spacing=12, padding=16),
120
+ style=pn.style(gap=12, padding=16),
120
121
  )
121
122
  ```
122
123
 
@@ -35,7 +35,8 @@ PythonNative is a cross-platform toolkit for building native Android and iOS app
35
35
  - **Native widgets and layout:** Swift and Kotlin component managers own UIKit and Android widgets. The shared Yoga C++ engine computes layout beside the controls, using platform measurements for text and intrinsic sizes.
36
36
  - **Standard asyncio:** Components, effects, event handlers, and tasks run on a dedicated Python application thread. Native UI threads handle widgets, scrolling, and animation frames. Component-owned tasks are canceled on unmount.
37
37
  - **Incremental reconciliation:** State changes update affected component subtrees. Versioned bridge commits validate operations and acknowledge revisions; events and controlled text inputs carry identities that prevent stale updates.
38
- - **Native lists and navigation:** UIKit collection views and Android recycler views recycle cells for fixed or variable row sizes, grids, sections, and horizontal lists. Native navigation containers present logical screen roots at every nesting level while providers and component state remain in the shared Python tree; navigators take screen options, groups, themes, tab-bar styles, and a navigation ref usable outside components.
38
+ - **Typed, Pythonic authoring:** Components return `pn.Node` and their signatures are their props, so a strict type checker verifies element trees and conditional children. Screens are components whose parameters are their route params (`nav.push(ItemScreen(id=42))`), navigators are module-level values with deep links derived from each screen's `path`, one `Theme` dataclass styles the app and its navigators, `StyleSheet` namespaces give styles typed names, and `pn.Store` holds app state with selector-based re-renders. `pn lint` checks the rules of hooks.
39
+ - **Native lists and navigation:** UIKit collection views and Android recycler views recycle cells for fixed or variable row sizes, grids, sections, and horizontal lists. Native navigation containers present logical screen roots at every nesting level while providers and component state remain in the shared Python tree; navigators take screen options, groups, tab-bar styles, and a navigation ref usable outside components.
39
40
  - **Animation and gestures:** Serialized animation graphs support timing with named or bezier easing, springs, React Native's decay model, arithmetic, interpolation, and native scroll and gesture bindings. Swift and Kotlin recognize mobile gestures with Gesture Handler-style activation offsets and update supported animation bindings without Python work on every frame.
40
41
  - **Assets and graphics:** Drop images, fonts, and SVGs under `app/assets/` and reference them by path. Density variants, bundled fonts, a vector `Icon` set, `Svg` drawing, gradients, and blur render natively on both platforms and in the browser preview.
41
42
  - **Device APIs:** Python facades expose camera, location, notifications, storage, permissions, keyboard, dimensions and pixel ratio, device info, localization, accessibility settings, and other native services, with a Python fallback for headless tests. Test permissions and platform behavior on your deployment targets.
@@ -62,7 +63,7 @@ import pythonnative as pn
62
63
 
63
64
 
64
65
  @pn.component
65
- def App():
66
+ def App() -> pn.Node:
66
67
  count, set_count = pn.use_state(0)
67
68
  return pn.Column(
68
69
  pn.Text(f"Count: {count}", style=pn.style(font_size=24, bold=True)),
@@ -70,7 +71,7 @@ def App():
70
71
  "Tap me",
71
72
  on_press=lambda: set_count(count + 1),
72
73
  ),
73
- style=pn.style(spacing=12, padding=16),
74
+ style=pn.style(gap=12, padding=16),
74
75
  )
75
76
  ```
76
77
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pythonnative"
7
- version = "0.47.0"
7
+ version = "0.49.0"
8
8
  description = "Cross-platform native UI toolkit for Android and iOS"
9
9
  authors = [
10
10
  { name = "Owen Carey" }
@@ -99,6 +99,7 @@ pythonnative = [
99
99
  "templates/**", "native/**", "sdk/templates/**",
100
100
  "devserver/static/**",
101
101
  "icons/_lucide.json", "icons/LICENSE-lucide.txt",
102
+ "sdk/_builtin_contracts.json",
102
103
  ]
103
104
 
104
105
  [tool.setuptools.exclude-package-data]
@@ -18,16 +18,20 @@ Key building blocks:
18
18
  [`use_effect`][pythonnative.use_effect],
19
19
  [`use_reducer`][pythonnative.use_reducer], etc.) manage state, side
20
20
  effects, and context inside `@component` functions.
21
- - **Navigation** is built from
22
- [`NavigationContainer`][pythonnative.NavigationContainer] plus one of
23
- the [`create_stack_navigator`][pythonnative.create_stack_navigator],
24
- [`create_tab_navigator`][pythonnative.create_tab_navigator], or
25
- [`create_drawer_navigator`][pythonnative.create_drawer_navigator]
26
- factories.
27
- - **Styling** uses a single ``style`` dict per element (or a list of
28
- dicts), composable via [`StyleSheet`][pythonnative.StyleSheet].
29
- PythonNative ships a fully-typed [`Style`][pythonnative.style.Style]
30
- TypedDict so editors and ``mypy`` validate every key as you type.
21
+ - **Navigation**: screens are components whose parameters are their
22
+ route params, listed in module-level
23
+ [`StackNavigator`][pythonnative.StackNavigator],
24
+ [`TabNavigator`][pythonnative.TabNavigator], or
25
+ [`DrawerNavigator`][pythonnative.DrawerNavigator] values and rendered
26
+ by [`NavigationContainer`][pythonnative.NavigationContainer].
27
+ ``nav.push(ItemScreen(id=42))`` is checked by the type checker.
28
+ - **Styling** uses a ``style`` dict per element (or a list of dicts),
29
+ typed by the [`Style`][pythonnative.style.Style] ``TypedDict``.
30
+ [`StyleSheet`][pythonnative.StyleSheet] namespaces group named
31
+ styles, and one [`Theme`][pythonnative.Theme] styles the app and
32
+ its navigators.
33
+ - **State** lives in hooks for a component and in a typed
34
+ [`Store`][pythonnative.Store] for the app.
31
35
  - **Animations** use the ``Animated`` namespace. Serialized graphs
32
36
  connect values, arithmetic, interpolation, and style bindings.
33
37
  Native timing, spring, decay, scroll, and gesture drivers update
@@ -52,21 +56,23 @@ Example:
52
56
  import pythonnative as pn
53
57
 
54
58
  @pn.component
55
- def App():
59
+ def App() -> pn.Node:
56
60
  count, set_count = pn.use_state(0)
57
61
  return pn.Column(
58
62
  pn.Text(f"Count: {count}", style=pn.style(font_size=24)),
59
63
  pn.Button("+", on_press=lambda: set_count(count + 1)),
60
- style=pn.style(spacing=12),
64
+ style=pn.style(gap=12),
61
65
  )
62
66
  ```
63
67
  """
64
68
 
65
- __version__ = "0.47.0"
69
+ __version__ = "0.49.0"
66
70
 
67
- from . import appearance, diagnostics, gestures, icons, runtime, sdk, svg
71
+ import importlib
72
+ from typing import TYPE_CHECKING, Any
73
+
74
+ from . import appearance, diagnostics, runtime, sdk, svg
68
75
  from .alerts import Alert
69
- from .animated import ANIMATABLE_PROPS, Animated, AnimatedValue, AnimationResult, Easing, EasingSpec, use_animated_value
70
76
  from .assets import Asset, asset
71
77
  from .component import Component, component, memo
72
78
  from .components import (
@@ -117,9 +123,9 @@ from .components import (
117
123
  WebNavigationEvent,
118
124
  WebView,
119
125
  )
126
+ from .components.props import AccessibilityProps, ViewProps
120
127
  from .diagnostics import HookOrderError
121
- from .element import Element
122
- from .gestures import GestureSpec, SwipeDirection
128
+ from .element import Element, Node
123
129
  from .handles import ScrollOffset, ScrollViewHandle, TextInputHandle, ViewHandle, WebViewHandle
124
130
  from .hooks import (
125
131
  ColorScheme,
@@ -152,7 +158,6 @@ from .hooks import (
152
158
  use_window_dimensions,
153
159
  )
154
160
  from .hosts import create_screen
155
- from .icons import Icon, IconName
156
161
  from .mutations import UNSET, UnsetType
157
162
  from .native_modules import (
158
163
  AccessibilityEvent,
@@ -189,40 +194,15 @@ from .native_modules import (
189
194
  use_reduce_motion,
190
195
  use_screen_reader_enabled,
191
196
  )
192
- from .navigation import (
193
- DARK_NAVIGATION_THEME,
194
- DEFAULT_NAVIGATION_THEME,
195
- LinkingConfig,
196
- Navigation,
197
- NavigationColors,
198
- NavigationContainer,
199
- NavigationRef,
200
- NavigationState,
201
- NavigationTheme,
202
- Route,
203
- ScreenGroup,
204
- ScreenOptions,
205
- TabBarStyle,
206
- create_drawer_navigator,
207
- create_navigation_ref,
208
- create_stack_navigator,
209
- create_tab_navigator,
210
- use_focus_effect,
211
- use_is_focused,
212
- use_navigation,
213
- use_navigation_theme,
214
- use_route,
215
- )
216
- from .net import HTTPError, Response, fetch
217
197
  from .platform import Platform, get_platform
218
198
  from .platform_metrics import WindowDimensions
219
199
  from .runtime import run_async, run_blocking
220
200
  from .scheduler import batch_updates
221
201
  from .sdk import Props, define_component, element_factory
222
202
  from .storage import AsyncStorage, use_persisted_state
203
+ from .store import Store, use_store
223
204
  from .style import (
224
- DEFAULT_DARK_THEME,
225
- DEFAULT_LIGHT_THEME,
205
+ ABSOLUTE_FILL,
226
206
  AccessibilityAction,
227
207
  AccessibilityState,
228
208
  AccessibilityValue,
@@ -254,15 +234,23 @@ from .style import (
254
234
  TextAlign,
255
235
  TextDecoration,
256
236
  TextTransform,
257
- Theme,
258
- ThemeContext,
259
237
  TransformSpec,
260
- default_theme,
261
238
  resolve_style,
262
239
  style,
263
- use_theme,
264
240
  )
265
241
  from .suspense import Resource, lazy, start_resource
242
+ from .theme import (
243
+ DARK_THEME,
244
+ LIGHT_THEME,
245
+ Colors,
246
+ Radii,
247
+ Spacing,
248
+ Theme,
249
+ ThemeProvider,
250
+ Typography,
251
+ use_styles,
252
+ use_theme,
253
+ )
266
254
 
267
255
  __all__ = [
268
256
  "UNSET",
@@ -314,6 +302,9 @@ __all__ = [
314
302
  "TouchableOpacity",
315
303
  "View",
316
304
  "WebView",
305
+ # Shared props
306
+ "AccessibilityProps",
307
+ "ViewProps",
317
308
  # Typed events
318
309
  "ContentSizeEvent",
319
310
  "KeyPressEvent",
@@ -334,6 +325,7 @@ __all__ = [
334
325
  # Core
335
326
  "Component",
336
327
  "Element",
328
+ "Node",
337
329
  "component",
338
330
  "create_screen",
339
331
  "memo",
@@ -373,28 +365,24 @@ __all__ = [
373
365
  "lazy",
374
366
  "start_resource",
375
367
  # Navigation
376
- "DARK_NAVIGATION_THEME",
377
- "DEFAULT_NAVIGATION_THEME",
378
- "LinkingConfig",
368
+ "DrawerNavigator",
369
+ "Group",
379
370
  "Navigation",
380
- "NavigationColors",
381
371
  "NavigationContainer",
382
372
  "NavigationRef",
383
373
  "NavigationState",
384
- "NavigationTheme",
374
+ "Navigator",
385
375
  "Route",
386
- "ScreenGroup",
376
+ "Screen",
387
377
  "ScreenOptions",
378
+ "StackNavigator",
388
379
  "TabBarStyle",
389
- "create_navigation_ref",
390
- "use_navigation_theme",
391
- "create_drawer_navigator",
392
- "create_stack_navigator",
393
- "create_tab_navigator",
380
+ "TabNavigator",
394
381
  "use_focus_effect",
395
382
  "use_is_focused",
396
383
  "use_navigation",
397
384
  "use_route",
385
+ "use_screen_options",
398
386
  # Styling - typed primitives
399
387
  "AccessibilityAction",
400
388
  "AccessibilityState",
@@ -405,8 +393,6 @@ __all__ = [
405
393
  "AutoCapitalize",
406
394
  "BorderStyle",
407
395
  "Color",
408
- "DEFAULT_DARK_THEME",
409
- "DEFAULT_LIGHT_THEME",
410
396
  "Dimension",
411
397
  "Display",
412
398
  "DynamicColor",
@@ -430,9 +416,16 @@ __all__ = [
430
416
  "TextDecoration",
431
417
  "TextTransform",
432
418
  "Theme",
433
- "ThemeContext",
419
+ "ThemeProvider",
420
+ "Colors",
421
+ "Typography",
422
+ "Spacing",
423
+ "Radii",
424
+ "LIGHT_THEME",
425
+ "DARK_THEME",
426
+ "ABSOLUTE_FILL",
427
+ "use_styles",
434
428
  "TransformSpec",
435
- "default_theme",
436
429
  "resolve_style",
437
430
  "style",
438
431
  "use_theme",
@@ -487,6 +480,9 @@ __all__ = [
487
480
  "Vibration",
488
481
  "use_app_state",
489
482
  "use_net_info",
483
+ # Stores
484
+ "Store",
485
+ "use_store",
490
486
  # Networking + persistence
491
487
  "AsyncStorage",
492
488
  "fetch",
@@ -510,3 +506,92 @@ __all__ = [
510
506
  ]
511
507
 
512
508
  from .list_data import ListData, Section, ViewableItem
509
+
510
+ # Subsystems an app may never touch load on first use (PEP 562), so
511
+ # ``import pythonnative`` stays fast on a phone. Names, ``__all__``, and
512
+ # documentation are unchanged, and type checkers see ordinary imports.
513
+ _LAZY_GROUPS: dict[str, tuple[str, ...]] = {
514
+ "animated": (
515
+ "ANIMATABLE_PROPS",
516
+ "Animated",
517
+ "AnimatedValue",
518
+ "AnimationResult",
519
+ "Easing",
520
+ "EasingSpec",
521
+ "use_animated_value",
522
+ ),
523
+ "gestures": ("GestureSpec", "SwipeDirection"),
524
+ "icons": ("Icon", "IconName"),
525
+ "navigation": (
526
+ "DrawerNavigator",
527
+ "Group",
528
+ "Navigation",
529
+ "NavigationContainer",
530
+ "NavigationRef",
531
+ "NavigationState",
532
+ "Navigator",
533
+ "Route",
534
+ "Screen",
535
+ "ScreenOptions",
536
+ "StackNavigator",
537
+ "TabBarStyle",
538
+ "TabNavigator",
539
+ "use_focus_effect",
540
+ "use_is_focused",
541
+ "use_navigation",
542
+ "use_route",
543
+ "use_screen_options",
544
+ ),
545
+ "net": ("HTTPError", "Response", "fetch"),
546
+ }
547
+ _LAZY = {name: module for module, names in _LAZY_GROUPS.items() for name in names}
548
+ _LAZY_MODULES = frozenset({"gestures", "icons"})
549
+
550
+ if TYPE_CHECKING:
551
+ from . import gestures, icons
552
+ from .animated import (
553
+ ANIMATABLE_PROPS,
554
+ Animated,
555
+ AnimatedValue,
556
+ AnimationResult,
557
+ Easing,
558
+ EasingSpec,
559
+ use_animated_value,
560
+ )
561
+ from .gestures import GestureSpec, SwipeDirection
562
+ from .icons import Icon, IconName
563
+ from .navigation import (
564
+ DrawerNavigator,
565
+ Group,
566
+ Navigation,
567
+ NavigationContainer,
568
+ NavigationRef,
569
+ NavigationState,
570
+ Navigator,
571
+ Route,
572
+ Screen,
573
+ ScreenOptions,
574
+ StackNavigator,
575
+ TabBarStyle,
576
+ TabNavigator,
577
+ use_focus_effect,
578
+ use_is_focused,
579
+ use_navigation,
580
+ use_route,
581
+ use_screen_options,
582
+ )
583
+ from .net import HTTPError, Response, fetch
584
+
585
+
586
+ def __getattr__(name: str) -> Any:
587
+ module = _LAZY.get(name)
588
+ if module is None and name not in _LAZY_MODULES:
589
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
590
+ imported = importlib.import_module(f".{module or name}", __name__)
591
+ value = imported if module is None else getattr(imported, name)
592
+ globals()[name] = value
593
+ return value
594
+
595
+
596
+ def __dir__() -> list[str]:
597
+ return sorted(set(globals()) | _LAZY.keys() | _LAZY_MODULES)
@@ -2180,7 +2180,10 @@ def use_animated_value(initial: float = 0.0) -> AnimatedValue:
2180
2180
  """
2181
2181
  from .hooks import use_memo
2182
2182
 
2183
- return use_memo(lambda: AnimatedValue(initial), [])
2183
+ return use_memo(
2184
+ lambda: AnimatedValue(initial),
2185
+ [], # pn: ignore[PN103] the initial value is read once, like use_state
2186
+ )
2184
2187
 
2185
2188
 
2186
2189
  __all__ = [
@@ -120,5 +120,8 @@ def get_system_color_scheme() -> str:
120
120
  def reset_color_scheme() -> None:
121
121
  """Reset to system ``"light"`` with no override. Intended for tests."""
122
122
  global _system_scheme, _override_scheme
123
+ changed = get_color_scheme() != "light"
123
124
  _system_scheme = "light"
124
125
  _override_scheme = None
126
+ if changed:
127
+ _notify_subscribers()
@@ -44,6 +44,7 @@ from dataclasses import dataclass, field
44
44
  from pathlib import Path
45
45
  from typing import Any, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple, Union
46
46
 
47
+ from ..utils import overlay_root
47
48
  from .fonts import FontFace, FontParseError, read_font_face, weight_from_name
48
49
 
49
50
  __all__ = [
@@ -437,8 +438,6 @@ def assets_roots() -> List[Path]:
437
438
  back to the native ``Assets`` module.
438
439
  """
439
440
  roots: List[Path] = []
440
- from ..hot_reload import overlay_root
441
-
442
441
  overlay = overlay_root()
443
442
  if overlay:
444
443
  roots.append(Path(overlay) / "app" / ASSETS_DIR)
@@ -560,7 +559,6 @@ def configure_native(paths: Optional[Iterable[str]] = None) -> bool:
560
559
  if paths is not None and not any(_is_asset_path(path) for path in paths):
561
560
  return False
562
561
  from ..bridge import has_transport
563
- from ..hot_reload import overlay_root
564
562
 
565
563
  overlay = overlay_root()
566
564
  if not overlay or not has_transport():
@@ -1,16 +1,17 @@
1
1
  """Entry point the native app templates run right after Python starts.
2
2
 
3
- Both templates execute one line of Python once the interpreter is up:
3
+ Both templates call [`start`][pythonnative.bootstrap.start] once the
4
+ interpreter is up, on a background thread at launch:
4
5
 
5
6
  ```python
6
- import pythonnative.bootstrap; pythonnative.bootstrap.start()
7
+ pythonnative.bootstrap.start(dev, True, "app.main")
7
8
  ```
8
9
 
9
- [`start`][pythonnative.bootstrap.start] connects the two halves of the
10
- bridge (installing the native -> Python callback on iOS), verifies the
11
- protocol version, routes ``print()`` to the console on iOS, warms the
12
- asyncio runtime, and, in debug builds, starts the dev client that syncs
13
- sources from ``pn start``. From then on the native runtime drives
10
+ It connects the two halves of the bridge (installing the native -> Python
11
+ callback on iOS), verifies the protocol version, routes ``print()`` to the
12
+ console on iOS, warms the asyncio runtime, in debug builds starts the dev
13
+ client that syncs sources from ``pn start``, and imports the entry module,
14
+ so the first screen only has to render. From then on the native runtime drives
14
15
  everything through ``callback("host", ...)``; see ``docs/concepts/bridge.md``.
15
16
  """
16
17
 
@@ -19,14 +20,14 @@ from __future__ import annotations
19
20
  import os
20
21
  import sys
21
22
  import traceback
22
- from typing import Any, Dict
23
+ from typing import Any, Dict, Optional
23
24
 
24
25
  __all__ = ["start", "status"]
25
26
 
26
27
  _started: Dict[str, Any] = {}
27
28
 
28
29
 
29
- def start(dev: bool = False, strict: bool = False) -> Dict[str, Any]:
30
+ def start(dev: bool = False, strict: bool = False, entry: Optional[str] = None) -> Dict[str, Any]:
30
31
  """Connect the bridge and prepare the runtime.
31
32
 
32
33
  Args:
@@ -35,6 +36,9 @@ def start(dev: bool = False, strict: bool = False) -> Dict[str, Any]:
35
36
  strict: Re-raise the failure after recording it. The templates
36
37
  pass ``True`` so a broken bridge surfaces as a bootstrap
37
38
  error screen with the full traceback.
39
+ entry: The app's entry module, imported last so a broken app
40
+ fails here with its traceback, and so the first screen
41
+ doesn't pay for the import.
38
42
 
39
43
  Returns:
40
44
  A status dict (``{"protocol": 2, "platform": "ios"}``) that the
@@ -79,15 +83,20 @@ def start(dev: bool = False, strict: bool = False) -> Dict[str, Any]:
79
83
  if dev_mode:
80
84
  # Debug builds are dev clients: connect to `pn start` when
81
85
  # the build (or a remembered connection) names a server.
86
+ # Release bundles omit this module; they never pass dev=True.
82
87
  from . import devclient
83
88
 
84
89
  client = devclient.start_if_configured()
85
- status_["dev_server"] = client.url if client is not None else None
90
+ status_["dev_server"] = client.server_label if client is not None else None
86
91
  # An overlay from the last session may already hold assets the
87
92
  # bundle doesn't; point the native resolver at it right away.
88
93
  from .assets import configure_native
89
94
 
90
95
  configure_native()
96
+ if entry:
97
+ import importlib
98
+
99
+ importlib.import_module(entry)
91
100
  except Exception as exc:
92
101
  status_["error"] = f"{type(exc).__name__}: {exc}"
93
102
  print(f"[pn.bootstrap] start failed: {exc!r}", file=sys.stderr)