pythonnative 0.46.0__tar.gz → 0.47.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. {pythonnative-0.46.0/src/pythonnative.egg-info → pythonnative-0.47.0}/PKG-INFO +1 -1
  2. {pythonnative-0.46.0 → pythonnative-0.47.0}/pyproject.toml +1 -1
  3. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/__init__.py +6 -1
  4. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/__init__.py +6 -2
  5. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/android.py +1 -0
  6. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/codec.py +8 -3
  7. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/commits.py +27 -5
  8. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/ios.py +1 -0
  9. pythonnative-0.47.0/src/pythonnative/bridge/list_store.py +135 -0
  10. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/web.py +1 -0
  11. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/lists.py +365 -95
  12. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/host.js +16 -0
  13. pythonnative-0.47.0/src/pythonnative/devserver/static/layout.js +139 -0
  14. pythonnative-0.47.0/src/pythonnative/devserver/static/list-store.js +90 -0
  15. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/renderer.js +59 -30
  16. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hooks.py +6 -0
  17. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hosts/base.py +111 -89
  18. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hosts/native.py +13 -0
  19. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/journal.py +8 -1
  20. pythonnative-0.47.0/src/pythonnative/list_data.py +199 -0
  21. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/cpp/yoga_jni.cpp +0 -3
  22. pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +1322 -0
  23. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeValues.kt +18 -0
  24. pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +5515 -0
  25. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +13 -5
  26. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +16 -4
  27. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +1 -1
  28. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +1 -1
  29. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +2 -2
  30. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +7 -7
  31. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +1 -1
  32. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/EffectManagers.kt +2 -2
  33. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +1 -1
  34. pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ListStore.kt +97 -0
  35. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +2 -2
  36. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +1 -1
  37. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +2 -2
  38. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +1 -1
  39. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +1 -1
  40. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +1 -1
  41. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SvgManager.kt +1 -1
  42. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +2 -2
  43. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +2 -2
  44. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +2 -2
  45. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +85 -30
  46. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +1 -1
  47. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +37 -9
  48. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +0 -1
  49. pythonnative-0.47.0/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/ErrorOverlay.kt +42 -0
  50. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +5 -0
  51. pythonnative-0.47.0/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +143 -0
  52. pythonnative-0.47.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +33 -0
  53. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoRobolectricTest.kt +1 -1
  54. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +14 -4
  55. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +14 -4
  56. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +3 -3
  57. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +2 -10
  58. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +7 -7
  59. pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNListStore.swift +122 -0
  60. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +1 -1
  61. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +1 -1
  62. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +1 -1
  63. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +1 -1
  64. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +1 -1
  65. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +104 -64
  66. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +1 -1
  67. pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +1423 -0
  68. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeValues.swift +135 -2
  69. pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +5539 -0
  70. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +38 -14
  71. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +6 -0
  72. pythonnative-0.47.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNErrorOverlay.swift +47 -0
  73. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +44 -4
  74. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractFixtureTests.swift +14 -2
  75. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNLifecycleTests.swift +1 -1
  76. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +2 -2
  77. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNParityTests.swift +2 -2
  78. pythonnative-0.47.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +155 -0
  79. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +1 -1
  80. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/style.cpp +62 -0
  81. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_views/bridge_backend.py +147 -10
  82. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/preview.py +1 -1
  83. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/profiling.py +29 -6
  84. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/core.py +194 -45
  85. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/layout_pass.py +1 -1
  86. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/builtins.py +19 -7
  87. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/codegen.py +11 -16
  88. pythonnative-0.47.0/src/pythonnative/sdk/contract_codegen.py +197 -0
  89. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/schema.py +4 -3
  90. pythonnative-0.47.0/src/pythonnative/sdk/templates/contracts.kt +60 -0
  91. pythonnative-0.47.0/src/pythonnative/sdk/templates/contracts.swift +84 -0
  92. pythonnative-0.47.0/src/pythonnative/sdk/templates/values.swift +180 -0
  93. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/backend.py +29 -5
  94. {pythonnative-0.46.0 → pythonnative-0.47.0/src/pythonnative.egg-info}/PKG-INFO +1 -1
  95. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/SOURCES.txt +9 -0
  96. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_bridge.py +11 -6
  97. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_codegen.py +1 -1
  98. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_components.py +1 -1
  99. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_extended_components.py +1 -1
  100. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_hosts.py +36 -15
  101. pythonnative-0.47.0/tests/test_incremental_pipeline.py +472 -0
  102. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_list_features.py +17 -31
  103. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_lists.py +16 -13
  104. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_new_components.py +13 -12
  105. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime_overhaul.py +1 -1
  106. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_web_transport.py +4 -2
  107. pythonnative-0.46.0/src/pythonnative/devserver/static/layout.js +0 -103
  108. pythonnative-0.46.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +0 -1327
  109. pythonnative-0.46.0/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +0 -245
  110. pythonnative-0.46.0/src/pythonnative/native/android/src/test/java/com/pythonnative/generated/PNRecordFixtures.kt +0 -49
  111. pythonnative-0.46.0/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ContractFixtureTest.kt +0 -19
  112. pythonnative-0.46.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +0 -1428
  113. pythonnative-0.46.0/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +0 -108
  114. pythonnative-0.46.0/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNRecordFixtures.swift +0 -52
  115. pythonnative-0.46.0/src/pythonnative/sdk/templates/contracts.kt +0 -96
  116. pythonnative-0.46.0/src/pythonnative/sdk/templates/contracts.swift +0 -108
  117. pythonnative-0.46.0/src/pythonnative/sdk/templates/values.swift +0 -71
  118. {pythonnative-0.46.0 → pythonnative-0.47.0}/.github/workflows/release.yml +0 -0
  119. {pythonnative-0.46.0 → pythonnative-0.47.0}/LICENSE +0 -0
  120. {pythonnative-0.46.0 → pythonnative-0.47.0}/MANIFEST.in +0 -0
  121. {pythonnative-0.46.0 → pythonnative-0.47.0}/README.md +0 -0
  122. {pythonnative-0.46.0 → pythonnative-0.47.0}/scripts/check-distributions.py +0 -0
  123. {pythonnative-0.46.0 → pythonnative-0.47.0}/scripts/cibuildwheel.toml +0 -0
  124. {pythonnative-0.46.0 → pythonnative-0.47.0}/scripts/release-assets.py +0 -0
  125. {pythonnative-0.46.0 → pythonnative-0.47.0}/setup.cfg +0 -0
  126. {pythonnative-0.46.0 → pythonnative-0.47.0}/setup.py +0 -0
  127. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/_ios_log.py +0 -0
  128. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/alerts.py +0 -0
  129. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/animated.py +0 -0
  130. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/animation_graph.py +0 -0
  131. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/appearance.py +0 -0
  132. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/assets/__init__.py +0 -0
  133. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/assets/fonts.py +0 -0
  134. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bootstrap.py +0 -0
  135. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/bridge/fake.py +0 -0
  136. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/cli/__init__.py +0 -0
  137. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/cli/pn.py +0 -0
  138. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/component.py +0 -0
  139. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/__init__.py +0 -0
  140. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/_base.py +0 -0
  141. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/controls.py +0 -0
  142. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/events.py +0 -0
  143. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/graphics.py +0 -0
  144. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/layout.py +0 -0
  145. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/media.py +0 -0
  146. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/overlays.py +0 -0
  147. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/pressable.py +0 -0
  148. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/structural.py +0 -0
  149. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/components/text.py +0 -0
  150. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devclient.py +0 -0
  151. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/__init__.py +0 -0
  152. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/server.py +0 -0
  153. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/animation_graph.js +0 -0
  154. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/assets.js +0 -0
  155. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/bridge.js +0 -0
  156. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/colors.js +0 -0
  157. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/contracts.js +0 -0
  158. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/index.html +0 -0
  159. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/preview.css +0 -0
  160. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/shell.js +0 -0
  161. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/LICENSE +0 -0
  162. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +0 -0
  163. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +0 -0
  164. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js +0 -0
  165. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +0 -0
  166. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/index.d.ts +0 -0
  167. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/index.js +0 -0
  168. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/index.js.map +0 -0
  169. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/load.d.ts +0 -0
  170. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/load.js +0 -0
  171. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/load.js.map +0 -0
  172. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +0 -0
  173. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js +0 -0
  174. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +0 -0
  175. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/watcher.py +0 -0
  176. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/devserver/ws.py +0 -0
  177. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/diagnostics.py +0 -0
  178. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/element.py +0 -0
  179. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/equality.py +0 -0
  180. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/events.py +0 -0
  181. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/gestures.py +0 -0
  182. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/handles.py +0 -0
  183. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hosts/__init__.py +0 -0
  184. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/hot_reload.py +0 -0
  185. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/LICENSE-lucide.txt +0 -0
  186. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/__init__.py +0 -0
  187. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/_lucide.json +0 -0
  188. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/icons/_names.py +0 -0
  189. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/layout.py +0 -0
  190. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/mutations.py +0 -0
  191. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/build.gradle +0 -0
  192. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/gradle.properties +0 -0
  193. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/settings.gradle +0 -0
  194. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/AndroidManifest.xml +0 -0
  195. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/cpp/CMakeLists.txt +0 -0
  196. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +0 -0
  197. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +0 -0
  198. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +0 -0
  199. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +0 -0
  200. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +0 -0
  201. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/assets/PNAssets.kt +0 -0
  202. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +0 -0
  203. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +0 -0
  204. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +0 -0
  205. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +0 -0
  206. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +0 -0
  207. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +0 -0
  208. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +0 -0
  209. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +0 -0
  210. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +0 -0
  211. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +0 -0
  212. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNTheme.kt +0 -0
  213. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +0 -0
  214. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +0 -0
  215. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenTransitions.kt +0 -0
  216. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +0 -0
  217. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +0 -0
  218. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +0 -0
  219. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +0 -0
  220. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/graphics/SvgPath.kt +0 -0
  221. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/AssetModules.kt +0 -0
  222. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +0 -0
  223. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +0 -0
  224. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +0 -0
  225. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +0 -0
  226. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +0 -0
  227. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +0 -0
  228. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PlatformModules.kt +0 -0
  229. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +0 -0
  230. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +0 -0
  231. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +0 -0
  232. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNKeyboard.kt +0 -0
  233. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +0 -0
  234. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +0 -0
  235. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +0 -0
  236. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +0 -0
  237. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +0 -0
  238. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +0 -0
  239. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNScrollViews.kt +0 -0
  240. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_in.xml +0 -0
  241. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_fade_out.xml +0 -0
  242. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_hold.xml +0 -0
  243. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_bottom.xml +0 -0
  244. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_left.xml +0 -0
  245. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_in_right.xml +0 -0
  246. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_bottom.xml +0 -0
  247. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_left.xml +0 -0
  248. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/anim/pn_slide_out_right.xml +0 -0
  249. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/drawable/pn_ic_arrow_back.xml +0 -0
  250. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/values/pn_ids.xml +0 -0
  251. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/main/res/xml/pn_file_paths.xml +0 -0
  252. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +0 -0
  253. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/AssetsAndSvgTest.kt +0 -0
  254. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +0 -0
  255. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/NativeLifecycleTest.kt +0 -0
  256. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +0 -0
  257. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +0 -0
  258. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +0 -0
  259. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundOneRobolectricTest.kt +0 -0
  260. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/RoundTwoLogicTest.kt +0 -0
  261. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/ScreenTransitionsTest.kt +0 -0
  262. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/android/src/test/java/com/pythonnative/runtime/StyleAccessibilityDeviceTest.kt +0 -0
  263. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Package.swift +0 -0
  264. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +0 -0
  265. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +0 -0
  266. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +0 -0
  267. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +0 -0
  268. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +0 -0
  269. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +0 -0
  270. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +0 -0
  271. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNEffectManagers.swift +0 -0
  272. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +0 -0
  273. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +0 -0
  274. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNSvgManager.swift +0 -0
  275. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +0 -0
  276. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +0 -0
  277. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +0 -0
  278. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +0 -0
  279. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +0 -0
  280. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +0 -0
  281. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +0 -0
  282. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +0 -0
  283. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/EnvironmentModules.swift +0 -0
  284. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/ImagesModule.swift +0 -0
  285. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +0 -0
  286. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +0 -0
  287. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +0 -0
  288. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +0 -0
  289. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +0 -0
  290. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +0 -0
  291. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Resources/PrivacyInfo.xcprivacy +0 -0
  292. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +0 -0
  293. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +0 -0
  294. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNAssets.swift +0 -0
  295. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +0 -0
  296. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +0 -0
  297. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +0 -0
  298. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +0 -0
  299. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/project.pbxproj +0 -0
  300. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/NativeTests.xcodeproj/xcshareddata/xcschemes/NativeTests.xcscheme +0 -0
  301. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/Fixtures/validation.json +0 -0
  302. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +0 -0
  303. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNAssetTests.swift +0 -0
  304. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +0 -0
  305. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNContractParityTests.swift +0 -0
  306. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +0 -0
  307. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +0 -0
  308. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/ios/Tests/TestHost/main.swift +0 -0
  309. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/LICENSE +0 -0
  310. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/Package.swift +0 -0
  311. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/VENDORED.md +0 -0
  312. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/PNStyle.h +0 -0
  313. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/module.modulemap +0 -0
  314. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGConfig.h +0 -0
  315. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGEnums.h +0 -0
  316. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGMacros.h +0 -0
  317. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGNode.h +0 -0
  318. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGNodeLayout.h +0 -0
  319. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGNodeStyle.h +0 -0
  320. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGPixelGrid.h +0 -0
  321. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/YGValue.h +0 -0
  322. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/include/yoga/Yoga.h +0 -0
  323. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/python.cpp +0 -0
  324. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/CMakeLists.txt +0 -0
  325. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGConfig.cpp +0 -0
  326. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGConfig.h +0 -0
  327. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGEnums.cpp +0 -0
  328. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGEnums.h +0 -0
  329. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGMacros.h +0 -0
  330. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNode.cpp +0 -0
  331. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNode.h +0 -0
  332. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.cpp +0 -0
  333. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeLayout.h +0 -0
  334. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.cpp +0 -0
  335. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGNodeStyle.h +0 -0
  336. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.cpp +0 -0
  337. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGPixelGrid.h +0 -0
  338. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGValue.cpp +0 -0
  339. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/YGValue.h +0 -0
  340. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/Yoga.h +0 -0
  341. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +0 -0
  342. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +0 -0
  343. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Align.h +0 -0
  344. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +0 -0
  345. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Baseline.h +0 -0
  346. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +0 -0
  347. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.cpp +0 -0
  348. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/Cache.h +0 -0
  349. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +0 -0
  350. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +0 -0
  351. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +0 -0
  352. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +0 -0
  353. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/FlexLine.h +0 -0
  354. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +0 -0
  355. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +0 -0
  356. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/SizingMode.h +0 -0
  357. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +0 -0
  358. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/config/Config.cpp +0 -0
  359. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/config/Config.h +0 -0
  360. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +0 -0
  361. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/AssertFatal.h +0 -0
  362. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/Log.cpp +0 -0
  363. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/debug/Log.h +0 -0
  364. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Align.h +0 -0
  365. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/BoxSizing.h +0 -0
  366. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Dimension.h +0 -0
  367. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Direction.h +0 -0
  368. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Display.h +0 -0
  369. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Edge.h +0 -0
  370. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Errata.h +0 -0
  371. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +0 -0
  372. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/FlexDirection.h +0 -0
  373. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Gutter.h +0 -0
  374. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Justify.h +0 -0
  375. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/LogLevel.h +0 -0
  376. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/MeasureMode.h +0 -0
  377. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/NodeType.h +0 -0
  378. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Overflow.h +0 -0
  379. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +0 -0
  380. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/PositionType.h +0 -0
  381. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Unit.h +0 -0
  382. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/Wrap.h +0 -0
  383. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/enums/YogaEnums.h +0 -0
  384. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/event/event.cpp +0 -0
  385. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/event/event.h +0 -0
  386. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/module.modulemap +0 -0
  387. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/CachedMeasurement.h +0 -0
  388. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.cpp +0 -0
  389. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/LayoutResults.h +0 -0
  390. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/LayoutableChildren.h +0 -0
  391. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/Node.cpp +0 -0
  392. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/node/Node.h +0 -0
  393. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/numeric/Comparison.h +0 -0
  394. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/numeric/FloatOptional.h +0 -0
  395. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +0 -0
  396. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/Style.h +0 -0
  397. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/StyleLength.h +0 -0
  398. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/StyleValueHandle.h +0 -0
  399. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native/yoga/yoga/style/StyleValuePool.h +0 -0
  400. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/__init__.py +0 -0
  401. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/accessibility_info.py +0 -0
  402. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/app_state.py +0 -0
  403. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/battery.py +0 -0
  404. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/biometrics.py +0 -0
  405. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/camera.py +0 -0
  406. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/clipboard.py +0 -0
  407. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/device.py +0 -0
  408. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/dimensions.py +0 -0
  409. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/fallback.py +0 -0
  410. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/file_system.py +0 -0
  411. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/haptics.py +0 -0
  412. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/images.py +0 -0
  413. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/keyboard.py +0 -0
  414. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/linking.py +0 -0
  415. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/localization.py +0 -0
  416. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/location.py +0 -0
  417. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/net_info.py +0 -0
  418. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/notifications.py +0 -0
  419. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/permissions.py +0 -0
  420. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/registry.py +0 -0
  421. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/secure_store.py +0 -0
  422. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_modules/share.py +0 -0
  423. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/native_views/__init__.py +0 -0
  424. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/__init__.py +0 -0
  425. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/container.py +0 -0
  426. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/handle.py +0 -0
  427. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/hooks.py +0 -0
  428. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/host.py +0 -0
  429. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/linking.py +0 -0
  430. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/navigators.py +0 -0
  431. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/ref.py +0 -0
  432. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/screen.py +0 -0
  433. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/state.py +0 -0
  434. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/navigation/theme.py +0 -0
  435. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/net.py +0 -0
  436. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/platform.py +0 -0
  437. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/platform_metrics.py +0 -0
  438. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/__init__.py +0 -0
  439. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/android.py +0 -0
  440. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/artifacts.py +0 -0
  441. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/builder.py +0 -0
  442. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/config.py +0 -0
  443. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/deps.py +0 -0
  444. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/devices.py +0 -0
  445. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/doctor.py +0 -0
  446. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/fingerprint.py +0 -0
  447. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/icons.py +0 -0
  448. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/ios.py +0 -0
  449. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/lockfile.py +0 -0
  450. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/permissions.py +0 -0
  451. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/plugins.py +0 -0
  452. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/project/runtime_assets.py +0 -0
  453. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/py.typed +0 -0
  454. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/query.py +0 -0
  455. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/__init__.py +0 -0
  456. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/boundaries.py +0 -0
  457. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/children.py +0 -0
  458. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/reconciler/vnode.py +0 -0
  459. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/refresh.py +0 -0
  460. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/runtime.py +0 -0
  461. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/scheduler.py +0 -0
  462. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/__init__.py +0 -0
  463. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/_components.py +0 -0
  464. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/commands.py +0 -0
  465. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/module_codegen.py +0 -0
  466. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/native_types.py +0 -0
  467. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/services.py +0 -0
  468. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/templates/values.kt +0 -0
  469. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/sdk/types.py +0 -0
  470. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/storage.py +0 -0
  471. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/style.py +0 -0
  472. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/suspense.py +0 -0
  473. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/svg.py +0 -0
  474. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/build.gradle +0 -0
  475. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
  476. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +0 -0
  477. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +0 -0
  478. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -0
  479. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -0
  480. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
  481. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
  482. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
  483. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
  484. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  485. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  486. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  487. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  488. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  489. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  490. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  491. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  492. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  493. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  494. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  495. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  496. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
  497. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
  498. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
  499. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
  500. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
  501. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
  502. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  503. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +0 -0
  504. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/build.gradle +0 -0
  505. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
  506. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
  507. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradle.properties +0 -0
  508. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradlew +0 -0
  509. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
  510. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/android_template/settings.gradle +0 -0
  511. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +0 -0
  512. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
  513. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
  514. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
  515. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
  516. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
  517. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
  518. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/PrivacyInfo.xcprivacy +0 -0
  519. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +0 -0
  520. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
  521. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -0
  522. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +0 -0
  523. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  524. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +0 -0
  525. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +0 -0
  526. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +0 -0
  527. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/__init__.py +0 -0
  528. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/clock.py +0 -0
  529. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/harness.py +0 -0
  530. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/pytest_plugin.py +0 -0
  531. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/testing/queries.py +0 -0
  532. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative/utils.py +0 -0
  533. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/dependency_links.txt +0 -0
  534. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/entry_points.txt +0 -0
  535. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/requires.txt +0 -0
  536. {pythonnative-0.46.0 → pythonnative-0.47.0}/src/pythonnative.egg-info/top_level.txt +0 -0
  537. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_alert.py +0 -0
  538. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_animated.py +0 -0
  539. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_animated_easing.py +0 -0
  540. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_animated_graph.py +0 -0
  541. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_appearance.py +0 -0
  542. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_assets.py +0 -0
  543. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_async_hooks.py +0 -0
  544. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_cli.py +0 -0
  545. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_contract_fixtures.py +0 -0
  546. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_core_semantics.py +0 -0
  547. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_devclient.py +0 -0
  548. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_device_modules.py +0 -0
  549. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_devserver.py +0 -0
  550. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_devserver_ws.py +0 -0
  551. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_e2e_suite_renders.py +0 -0
  552. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_element.py +0 -0
  553. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_events.py +0 -0
  554. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_gesture_activation.py +0 -0
  555. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_gesture_composition.py +0 -0
  556. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_gestures.py +0 -0
  557. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_handles.py +0 -0
  558. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_hooks.py +0 -0
  559. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_hot_reload.py +0 -0
  560. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_inbox.py +0 -0
  561. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_incremental_render.py +0 -0
  562. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_interaction_props.py +0 -0
  563. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_ios_log.py +0 -0
  564. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_layout.py +0 -0
  565. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_metric_hooks.py +0 -0
  566. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_mutations.py +0 -0
  567. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_modules.py +0 -0
  568. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_values.py +0 -0
  569. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_native_views.py +0 -0
  570. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_navigation.py +0 -0
  571. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_navigation_theme.py +0 -0
  572. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_net.py +0 -0
  573. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_platform.py +0 -0
  574. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_platform_metrics.py +0 -0
  575. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_reconciler.py +0 -0
  576. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_ref.py +0 -0
  577. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_release_packaging.py +0 -0
  578. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_release_workflow.py +0 -0
  579. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime.py +0 -0
  580. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime_contracts.py +0 -0
  581. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_runtime_correctness.py +0 -0
  582. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_sdk.py +0 -0
  583. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_smoke.py +0 -0
  584. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_storage.py +0 -0
  585. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_style.py +0 -0
  586. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_suspense.py +0 -0
  587. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_testing_library.py +0 -0
  588. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_transitions.py +0 -0
  589. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_typed_events.py +0 -0
  590. {pythonnative-0.46.0 → pythonnative-0.47.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonnative
3
- Version: 0.46.0
3
+ Version: 0.47.0
4
4
  Summary: Cross-platform native UI toolkit for Android and iOS
5
5
  Author: Owen Carey
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pythonnative"
7
- version = "0.46.0"
7
+ version = "0.47.0"
8
8
  description = "Cross-platform native UI toolkit for Android and iOS"
9
9
  authors = [
10
10
  { name = "Owen Carey" }
@@ -62,7 +62,7 @@ Example:
62
62
  ```
63
63
  """
64
64
 
65
- __version__ = "0.46.0"
65
+ __version__ = "0.47.0"
66
66
 
67
67
  from . import appearance, diagnostics, gestures, icons, runtime, sdk, svg
68
68
  from .alerts import Alert
@@ -276,6 +276,9 @@ __all__ = [
276
276
  "DatePicker",
277
277
  "ErrorBoundary",
278
278
  "FlatList",
279
+ "ListData",
280
+ "Section",
281
+ "ViewableItem",
279
282
  "Fragment",
280
283
  "Icon",
281
284
  "IconName",
@@ -505,3 +508,5 @@ __all__ = [
505
508
  "element_factory",
506
509
  "sdk",
507
510
  ]
511
+
512
+ from .list_data import ListData, Section, ViewableItem
@@ -199,7 +199,7 @@ def native_callback(kind: str, tag: int, name: str, payload: str) -> Optional[st
199
199
 
200
200
  loop = get_loop()
201
201
  if loop.is_running() and not _on_loop_thread(loop):
202
- if kind == "event" and name in {"on_scroll", "on_selection_change", "on_gesture_update"}:
202
+ if kind == "event" and name in {"on_scroll", "on_window", "on_selection_change", "on_gesture_update"}:
203
203
  key = (tag, name)
204
204
  slot = _continuous.get(key)
205
205
  if slot is None:
@@ -252,7 +252,11 @@ def _on_event(tag: int, name: str, payload: str) -> Optional[str]:
252
252
  args = codec.loads(payload)
253
253
  from ..native_views import get_backend
254
254
 
255
- accept = getattr(get_backend(), "accept_event", None)
255
+ backend = get_backend()
256
+ defer = getattr(backend, "defer_event", None)
257
+ if defer is not None and defer(tag, name, args):
258
+ return None
259
+ accept = getattr(backend, "accept_event", None)
256
260
  if accept is not None:
257
261
  if not accept(tag, name, args):
258
262
  return None
@@ -21,6 +21,7 @@ class AndroidTransport:
21
21
  """Thin wrapper over the static ``PNBridge`` methods."""
22
22
 
23
23
  name = "android"
24
+ asynchronous_commits = True
24
25
 
25
26
  def __init__(self, bridge_class: Any = None) -> None:
26
27
  if bridge_class is None:
@@ -131,15 +131,20 @@ def build_transaction(
131
131
  """
132
132
  from ..sdk.schema import COMPONENTS
133
133
 
134
- names = dict(types or {})
134
+ names: dict[int, str] = {}
135
+ base_names = types or {}
136
+ fields_cache: dict[str, frozenset[str]] = {}
135
137
 
136
138
  def python_fields(name: str) -> frozenset[str]:
139
+ if name in fields_cache:
140
+ return fields_cache[name]
137
141
  schema = COMPONENTS.get(name)
138
- return (
142
+ fields_cache[name] = (
139
143
  frozenset(key for key, field in schema.props.items() if field.get("native", {}).get("python_only"))
140
144
  if schema
141
145
  else frozenset()
142
146
  )
147
+ return fields_cache[name]
143
148
 
144
149
  encoded: List[Any] = []
145
150
  sidecar: List[Tuple[int, Dict[str, Any]]] = []
@@ -152,7 +157,7 @@ def build_transaction(
152
157
  sidecar.append((op.tag, python))
153
158
  elif isinstance(op, UpdateOp):
154
159
  removed = [key for key, value in op.changed_props.items() if value is UNSET]
155
- wire, python = split_props(op.changed_props, python_fields(names.get(op.tag, "")))
160
+ wire, python = split_props(op.changed_props, python_fields(names.get(op.tag) or base_names.get(op.tag, "")))
156
161
  encoded.append(["u", op.tag, wire, removed])
157
162
  if python:
158
163
  sidecar.append((op.tag, python))
@@ -10,11 +10,12 @@ from __future__ import annotations
10
10
  import math
11
11
  from collections.abc import Iterator, MutableMapping
12
12
  from dataclasses import dataclass, field
13
- from typing import Any
13
+ from typing import Any, Callable
14
14
 
15
15
  from ..profiling import count, profiled
16
+ from .list_store import ListStore
16
17
 
17
- PROTOCOL_VERSION = 3
18
+ PROTOCOL_VERSION = 4
18
19
 
19
20
 
20
21
  class CommitError(RuntimeError):
@@ -29,6 +30,7 @@ class ViewState:
29
30
  props: dict[str, Any]
30
31
  parent: int | None = None
31
32
  children: list[int] = field(default_factory=list)
33
+ list_store: ListStore | None = None
32
34
 
33
35
 
34
36
  class ViewOverlay(MutableMapping[int, ViewState]):
@@ -72,7 +74,9 @@ class ViewOverlay(MutableMapping[int, ViewState]):
72
74
  """Return a writable copy of this record, copying it at most once."""
73
75
  if tag not in self.changed:
74
76
  view = self[tag]
75
- self.changed[tag] = ViewState(view.type_name, dict(view.props), view.parent, list(view.children))
77
+ self.changed[tag] = ViewState(
78
+ view.type_name, dict(view.props), view.parent, list(view.children), view.list_store
79
+ )
76
80
  count("commit.records_copied")
77
81
  return self.changed[tag]
78
82
 
@@ -93,11 +97,13 @@ class CommitState:
93
97
  revision: int = 0
94
98
  views: MutableMapping[int, ViewState] = field(default_factory=dict)
95
99
 
100
+ _list_publications: dict[int, Callable[[], None]] = field(default_factory=dict)
101
+
96
102
  @profiled("validation")
97
103
  def prepare(self, envelope: Any) -> CommitState:
98
104
  """Validate without mutating this state and return the candidate state."""
99
105
  if not isinstance(envelope, dict) or envelope.get("version") != PROTOCOL_VERSION:
100
- raise CommitError("Expected a protocol v3 commit envelope; rebuild the native client")
106
+ raise CommitError("Expected a protocol v4 commit envelope; rebuild the native client")
101
107
  application, surface, revision = (envelope.get(k) for k in ("application", "surface", "revision"))
102
108
  if not isinstance(application, str) or not application or type(surface) is not int or surface <= 0:
103
109
  raise CommitError("Invalid application or surface identity")
@@ -120,6 +126,9 @@ class CommitState:
120
126
 
121
127
  def publish(self) -> CommitState:
122
128
  """Accept a successfully mounted candidate; the prior state is consumed."""
129
+ for publish in self._list_publications.values():
130
+ publish()
131
+ self._list_publications.clear()
123
132
  if isinstance(self.views, ViewOverlay):
124
133
  self.views = self.views.publish()
125
134
  return self
@@ -139,7 +148,11 @@ class CommitState:
139
148
  if tag in self.views or not isinstance(op[2], str) or not op[2] or not isinstance(op[3], dict):
140
149
  raise ValueError("Invalid or duplicate create")
141
150
  self._validate_props(op[2], op[3], False)
142
- self.views[tag] = ViewState(op[2], dict(op[3]))
151
+ view = ViewState(op[2], dict(op[3]))
152
+ self.views[tag] = view
153
+ if op[2] == "VirtualList":
154
+ view.list_store = ListStore()
155
+ self._prepare_list(tag, view, op[3])
143
156
  return
144
157
  view = self.views[tag] if code == "f" else self._edit(tag)
145
158
  if code == "u":
@@ -154,6 +167,8 @@ class CommitState:
154
167
  from ..mutations import UNSET
155
168
 
156
169
  self._validate_props(view.type_name, {name: UNSET for name in removed}, True)
170
+ if view.list_store is not None:
171
+ self._prepare_list(tag, view, op[2])
157
172
  view.props.update(op[2])
158
173
  for name in removed:
159
174
  view.props.pop(name, None)
@@ -185,6 +200,13 @@ class CommitState:
185
200
  if op[4] < 0 or op[5] < 0:
186
201
  raise ValueError("Frame sizes must be nonnegative")
187
202
 
203
+ def _prepare_list(self, tag: int, view: ViewState, props: dict[str, Any]) -> None:
204
+ if "dataset" in props:
205
+ if tag in self._list_publications:
206
+ raise ValueError("A list may receive only one dataset patch per commit")
207
+ assert view.list_store is not None
208
+ self._list_publications[tag] = view.list_store.prepare(props["dataset"])
209
+
188
210
  @staticmethod
189
211
  def _validate_props(name: str, props: dict[str, Any], partial: bool) -> None:
190
212
  from ..sdk.schema import COMPONENTS
@@ -26,6 +26,7 @@ class IOSTransport:
26
26
  """Bind the ``pn_bridge_*`` symbols and expose them as Python methods."""
27
27
 
28
28
  name = "ios"
29
+ asynchronous_commits = True
29
30
 
30
31
  def __init__(self, lib: Any = None) -> None:
31
32
  self._lib = lib if lib is not None else ctypes.CDLL(None)
@@ -0,0 +1,135 @@
1
+ """Revisioned list patch semantics shared by validation and headless renderers."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import math
6
+ from dataclasses import dataclass, field
7
+ from typing import Any, Callable
8
+
9
+ from ..profiling import count
10
+
11
+
12
+ @dataclass(frozen=True)
13
+ class ListRow:
14
+ """Wire metadata for one logical row; application values stay in Python."""
15
+
16
+ key: str
17
+ revision: int
18
+ extent: float
19
+ sticky: bool = False
20
+
21
+ def wire(self) -> list[Any]:
22
+ """Return the compact row record used by each renderer."""
23
+ return [self.key, self.revision, self.extent, self.sticky]
24
+
25
+
26
+ @dataclass
27
+ class ListStore:
28
+ """Apply list patches atomically, copying order only for structural edits."""
29
+
30
+ revision: int = 0
31
+ keys: list[str] = field(default_factory=list)
32
+ rows: dict[str, ListRow] = field(default_factory=dict)
33
+
34
+ def apply(self, packet: Any) -> None:
35
+ """Validate the entire packet before publishing any of its changes."""
36
+ self.prepare(packet)()
37
+
38
+ def prepare(self, packet: Any) -> Callable[[], None]:
39
+ """Validate a patch and return its publication without editing live state."""
40
+ if not isinstance(packet, dict) or set(packet) != {"base", "revision", "changes"}:
41
+ raise ValueError("Invalid list packet")
42
+ base, revision, changes = (packet[key] for key in ("base", "revision", "changes"))
43
+ if (
44
+ type(base) is not int
45
+ or base != self.revision
46
+ or type(revision) is not int
47
+ or revision != base + 1
48
+ or revision > 9_007_199_254_740_991
49
+ ):
50
+ raise ValueError("Stale list revision")
51
+ if not isinstance(changes, list):
52
+ raise ValueError("List changes must be an array")
53
+ keys = self.keys
54
+ edited: dict[str, ListRow] = {}
55
+ deleted: set[str] = set()
56
+ reset = False
57
+
58
+ def exists(key: Any) -> bool:
59
+ return isinstance(key, str) and key not in deleted and (key in edited or not reset and key in self.rows)
60
+
61
+ def order() -> list[str]:
62
+ nonlocal keys
63
+ if keys is self.keys:
64
+ keys = list(keys)
65
+ count("list.order_copies")
66
+ return keys
67
+
68
+ def row(values: Any) -> ListRow:
69
+ if not isinstance(values, list) or len(values) != 4:
70
+ raise ValueError("Invalid list row")
71
+ key, version, extent, sticky = values
72
+ if (
73
+ not isinstance(key, str)
74
+ or not key
75
+ or type(version) is not int
76
+ or not 1 <= version <= 9_007_199_254_740_991
77
+ ):
78
+ raise ValueError("Invalid list key or item revision")
79
+ if type(extent) not in (int, float) or not math.isfinite(extent) or extent <= 0 or type(sticky) is not bool:
80
+ raise ValueError("Invalid list extent or sticky flag")
81
+ count("list.rows_validated")
82
+ return ListRow(key, version, float(extent), sticky)
83
+
84
+ for change in changes:
85
+ if not isinstance(change, list) or not change:
86
+ raise ValueError("Invalid list change")
87
+ code = change[0]
88
+ if code == "reset" and len(change) == 2 and isinstance(change[1], list):
89
+ if reset or edited or deleted or keys is not self.keys:
90
+ raise ValueError("List reset must be the first change")
91
+ reset, keys = True, []
92
+ for values in change[1]:
93
+ item = row(values)
94
+ if item.key in edited:
95
+ raise ValueError("List keys must be unique")
96
+ keys.append(item.key)
97
+ edited[item.key] = item
98
+ elif code == "i" and len(change) == 3:
99
+ index, item = change[1], row(change[2])
100
+ if type(index) is not int or not 0 <= index <= len(keys) or exists(item.key):
101
+ raise ValueError("Invalid list insertion")
102
+ order().insert(index, item.key)
103
+ edited[item.key] = item
104
+ deleted.discard(item.key)
105
+ elif code == "u" and len(change) == 2:
106
+ item = row(change[1])
107
+ if not exists(item.key):
108
+ raise ValueError("Unknown list update key")
109
+ edited[item.key] = item
110
+ elif code == "d" and len(change) == 2 and exists(change[1]):
111
+ order().remove(change[1])
112
+ edited.pop(change[1], None)
113
+ deleted.add(change[1])
114
+ elif code == "m" and len(change) == 3 and exists(change[1]):
115
+ index = change[2]
116
+ if type(index) is not int or not 0 <= index < len(keys):
117
+ raise ValueError("Invalid list move index")
118
+ order().remove(change[1])
119
+ keys.insert(index, change[1])
120
+ else:
121
+ raise ValueError("Invalid list change")
122
+
123
+ def publish() -> None:
124
+ if self.revision != base:
125
+ raise ValueError("List changed before patch publication")
126
+ if reset:
127
+ self.rows = edited
128
+ else:
129
+ for key in deleted:
130
+ self.rows.pop(key, None)
131
+ self.rows.update(edited)
132
+ self.keys, self.revision = keys, revision
133
+ count("list.patches", len(changes))
134
+
135
+ return publish
@@ -68,6 +68,7 @@ class WebTransport:
68
68
  """
69
69
 
70
70
  name = "web"
71
+ asynchronous_commits = True
71
72
 
72
73
  def __init__(self, *, log: Optional[Callable[[str], None]] = None) -> None:
73
74
  self._log = log or (lambda line: print(line, file=sys.stderr, flush=True))