pythonnative 0.40.0__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. pythonnative/__init__.py +411 -0
  2. pythonnative/_ios_log.py +92 -0
  3. pythonnative/_yoga.cp313-win_amd64.pyd +0 -0
  4. pythonnative/alerts.py +236 -0
  5. pythonnative/animated.py +1687 -0
  6. pythonnative/animation_graph.py +78 -0
  7. pythonnative/appearance.py +124 -0
  8. pythonnative/bootstrap.py +100 -0
  9. pythonnative/bridge/__init__.py +302 -0
  10. pythonnative/bridge/android.py +78 -0
  11. pythonnative/bridge/codec.py +170 -0
  12. pythonnative/bridge/commits.py +114 -0
  13. pythonnative/bridge/fake.py +243 -0
  14. pythonnative/bridge/ios.py +138 -0
  15. pythonnative/bridge/web.py +489 -0
  16. pythonnative/cli/__init__.py +7 -0
  17. pythonnative/cli/pn.py +1214 -0
  18. pythonnative/component.py +271 -0
  19. pythonnative/components/__init__.py +111 -0
  20. pythonnative/components/_base.py +166 -0
  21. pythonnative/components/controls.py +521 -0
  22. pythonnative/components/layout.py +518 -0
  23. pythonnative/components/lists.py +785 -0
  24. pythonnative/components/media.py +204 -0
  25. pythonnative/components/overlays.py +107 -0
  26. pythonnative/components/pressable.py +252 -0
  27. pythonnative/components/structural.py +167 -0
  28. pythonnative/components/text.py +291 -0
  29. pythonnative/devclient.py +824 -0
  30. pythonnative/devserver/__init__.py +34 -0
  31. pythonnative/devserver/server.py +718 -0
  32. pythonnative/devserver/static/animation_graph.js +82 -0
  33. pythonnative/devserver/static/bridge.js +147 -0
  34. pythonnative/devserver/static/colors.js +70 -0
  35. pythonnative/devserver/static/host.js +552 -0
  36. pythonnative/devserver/static/index.html +60 -0
  37. pythonnative/devserver/static/layout.js +85 -0
  38. pythonnative/devserver/static/preview.css +415 -0
  39. pythonnative/devserver/static/renderer.js +1994 -0
  40. pythonnative/devserver/static/shell.js +345 -0
  41. pythonnative/devserver/static/yoga/LICENSE +21 -0
  42. pythonnative/devserver/static/yoga/binaries/yoga-wasm-base64-esm.js +75 -0
  43. pythonnative/devserver/static/yoga/src/generated/YGEnums.d.ts +189 -0
  44. pythonnative/devserver/static/yoga/src/generated/YGEnums.js +211 -0
  45. pythonnative/devserver/static/yoga/src/generated/YGEnums.js.map +1 -0
  46. pythonnative/devserver/static/yoga/src/index.d.ts +12 -0
  47. pythonnative/devserver/static/yoga/src/index.js +16 -0
  48. pythonnative/devserver/static/yoga/src/index.js.map +1 -0
  49. pythonnative/devserver/static/yoga/src/load.d.ts +11 -0
  50. pythonnative/devserver/static/yoga/src/load.js +17 -0
  51. pythonnative/devserver/static/yoga/src/load.js.map +1 -0
  52. pythonnative/devserver/static/yoga/src/wrapAssembly.d.ts +155 -0
  53. pythonnative/devserver/static/yoga/src/wrapAssembly.js +125 -0
  54. pythonnative/devserver/static/yoga/src/wrapAssembly.js.map +1 -0
  55. pythonnative/devserver/watcher.py +267 -0
  56. pythonnative/devserver/ws.py +421 -0
  57. pythonnative/diagnostics.py +241 -0
  58. pythonnative/element.py +159 -0
  59. pythonnative/equality.py +19 -0
  60. pythonnative/events.py +231 -0
  61. pythonnative/gestures.py +1333 -0
  62. pythonnative/hooks.py +1621 -0
  63. pythonnative/hosts/__init__.py +63 -0
  64. pythonnative/hosts/base.py +596 -0
  65. pythonnative/hosts/native.py +302 -0
  66. pythonnative/hot_reload.py +585 -0
  67. pythonnative/layout.py +328 -0
  68. pythonnative/mutations.py +142 -0
  69. pythonnative/native/android/build.gradle +52 -0
  70. pythonnative/native/android/gradle.properties +3 -0
  71. pythonnative/native/android/settings.gradle +12 -0
  72. pythonnative/native/android/src/main/AndroidManifest.xml +11 -0
  73. pythonnative/native/android/src/main/cpp/CMakeLists.txt +9 -0
  74. pythonnative/native/android/src/main/cpp/yoga_jni.cpp +52 -0
  75. pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeModules.kt +5 -0
  76. pythonnative/native/android/src/main/java/com/pythonnative/generated/NativeProps.kt +3705 -0
  77. pythonnative/native/android/src/main/java/com/pythonnative/generated/PNContracts.kt +129 -0
  78. pythonnative/native/android/src/main/java/com/pythonnative/runtime/PNBridge.kt +261 -0
  79. pythonnative/native/android/src/main/java/com/pythonnative/runtime/PythonHost.kt +20 -0
  80. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationGraph.kt +108 -0
  81. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/AnimationSpecs.kt +141 -0
  82. pythonnative/native/android/src/main/java/com/pythonnative/runtime/animation/PNAnimator.kt +257 -0
  83. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/CommitState.kt +106 -0
  84. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/JsonUtil.kt +175 -0
  85. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/MainThread.kt +40 -0
  86. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNLog.kt +33 -0
  87. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNRegistry.kt +82 -0
  88. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/PNTransaction.kt +80 -0
  89. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/TransactionApplier.kt +117 -0
  90. pythonnative/native/android/src/main/java/com/pythonnative/runtime/bridge/ViewRegistry.kt +74 -0
  91. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/BuiltinComponents.kt +37 -0
  92. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ButtonManager.kt +32 -0
  93. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ComponentManager.kt +213 -0
  94. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ContainerManagers.kt +69 -0
  95. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ControlManagers.kt +186 -0
  96. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/DatePickerManager.kt +123 -0
  97. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageLoader.kt +141 -0
  98. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ImageManager.kt +162 -0
  99. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ModalManager.kt +134 -0
  100. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PNColor.kt +201 -0
  101. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PickerManager.kt +86 -0
  102. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PortalManager.kt +55 -0
  103. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/PressableManager.kt +122 -0
  104. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScreenStackManager.kt +110 -0
  105. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ScrollViewManager.kt +214 -0
  106. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/SegmentedControlManager.kt +113 -0
  107. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/StatusBarManager.kt +52 -0
  108. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TabBarManager.kt +131 -0
  109. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextInputManager.kt +250 -0
  110. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/TextManager.kt +233 -0
  111. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/ViewStyler.kt +355 -0
  112. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/VirtualListManager.kt +159 -0
  113. pythonnative/native/android/src/main/java/com/pythonnative/runtime/components/WebViewManager.kt +149 -0
  114. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureArbiter.kt +233 -0
  115. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureCoordinator.kt +127 -0
  116. pythonnative/native/android/src/main/java/com/pythonnative/runtime/gestures/GestureRecognizers.kt +527 -0
  117. pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/NativeLayout.kt +145 -0
  118. pythonnative/native/android/src/main/java/com/pythonnative/runtime/layout/YogaNode.kt +29 -0
  119. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/BuiltinModules.kt +73 -0
  120. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/DeviceModules.kt +316 -0
  121. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/HostModule.kt +61 -0
  122. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/MediaModules.kt +200 -0
  123. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NativeModule.kt +158 -0
  124. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/NotificationsModule.kt +100 -0
  125. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/PermissionsModule.kt +99 -0
  126. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/StorageModules.kt +89 -0
  127. pythonnative/native/android/src/main/java/com/pythonnative/runtime/modules/SystemModules.kt +178 -0
  128. pythonnative/native/android/src/main/java/com/pythonnative/runtime/plugins/GeneratedPlugins.kt +16 -0
  129. pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/PNScreenFragment.kt +188 -0
  130. pythonnative/native/android/src/main/java/com/pythonnative/runtime/screens/ScreenRegistry.kt +80 -0
  131. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNAccessibilityDelegate.kt +48 -0
  132. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNBorderDrawable.kt +76 -0
  133. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNEditText.kt +18 -0
  134. pythonnative/native/android/src/main/java/com/pythonnative/runtime/views/PNFrameLayout.kt +49 -0
  135. pythonnative/native/android/src/test/java/com/pythonnative/runtime/AnimationSpecsTest.kt +75 -0
  136. pythonnative/native/android/src/test/java/com/pythonnative/runtime/GestureArbiterTest.kt +197 -0
  137. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNColorTest.kt +47 -0
  138. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PNTransactionTest.kt +78 -0
  139. pythonnative/native/android/src/test/java/com/pythonnative/runtime/PromiseTest.kt +89 -0
  140. pythonnative/native/ios/Package.swift +23 -0
  141. pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimationGraph.swift +199 -0
  142. pythonnative/native/ios/Sources/PythonNativeKit/Animation/PNAnimator.swift +312 -0
  143. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNBridge.swift +255 -0
  144. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNCommit.swift +104 -0
  145. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNRegistry.swift +142 -0
  146. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNTransaction.swift +166 -0
  147. pythonnative/native/ios/Sources/PythonNativeKit/Bridge/PNViewRegistry.swift +53 -0
  148. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNButtonManagers.swift +207 -0
  149. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNColor.swift +173 -0
  150. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNComponentManager.swift +183 -0
  151. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNContainerView.swift +56 -0
  152. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNControlManagers.swift +281 -0
  153. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNImageManager.swift +222 -0
  154. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNOverlayManagers.swift +243 -0
  155. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNPressableManager.swift +114 -0
  156. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScreenStackManager.swift +107 -0
  157. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNScrollViewManager.swift +197 -0
  158. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTabBarManager.swift +106 -0
  159. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextInputManager.swift +297 -0
  160. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTextManager.swift +230 -0
  161. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNTransform.swift +82 -0
  162. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewManager.swift +86 -0
  163. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewState.swift +87 -0
  164. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNViewStyler.swift +340 -0
  165. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNVirtualListManager.swift +155 -0
  166. pythonnative/native/ios/Sources/PythonNativeKit/Components/PNWebViewManager.swift +124 -0
  167. pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeModules.swift +1 -0
  168. pythonnative/native/ios/Sources/PythonNativeKit/Generated/NativeProps.swift +3775 -0
  169. pythonnative/native/ios/Sources/PythonNativeKit/Generated/PNContracts.swift +46 -0
  170. pythonnative/native/ios/Sources/PythonNativeKit/Gestures/PNGestureCoordinator.swift +260 -0
  171. pythonnative/native/ios/Sources/PythonNativeKit/Layout/PNLayout.swift +173 -0
  172. pythonnative/native/ios/Sources/PythonNativeKit/Modules/AlertModule.swift +92 -0
  173. pythonnative/native/ios/Sources/PythonNativeKit/Modules/HostModule.swift +80 -0
  174. pythonnative/native/ios/Sources/PythonNativeKit/Modules/LifecycleModules.swift +174 -0
  175. pythonnative/native/ios/Sources/PythonNativeKit/Modules/MediaModules.swift +177 -0
  176. pythonnative/native/ios/Sources/PythonNativeKit/Modules/PNNativeModule.swift +168 -0
  177. pythonnative/native/ios/Sources/PythonNativeKit/Modules/PermissionModules.swift +266 -0
  178. pythonnative/native/ios/Sources/PythonNativeKit/Modules/SystemModules.swift +251 -0
  179. pythonnative/native/ios/Sources/PythonNativeKit/Plugins/PNPluginRegistration.swift +8 -0
  180. pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNScreenRegistry.swift +46 -0
  181. pythonnative/native/ios/Sources/PythonNativeKit/Screens/PNViewController.swift +237 -0
  182. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNCompat.swift +46 -0
  183. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNJSON.swift +173 -0
  184. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNLog.swift +47 -0
  185. pythonnative/native/ios/Sources/PythonNativeKit/Support/PNWindow.swift +51 -0
  186. pythonnative/native/ios/Tests/PythonNativeKitTests/PNAnimationGraphTests.swift +26 -0
  187. pythonnative/native/ios/Tests/PythonNativeKitTests/PNColorTests.swift +50 -0
  188. pythonnative/native/ios/Tests/PythonNativeKitTests/PNCommitTests.swift +86 -0
  189. pythonnative/native/ios/Tests/PythonNativeKitTests/PNGestureTests.swift +101 -0
  190. pythonnative/native/ios/Tests/PythonNativeKitTests/PNManagerTests.swift +126 -0
  191. pythonnative/native/ios/Tests/PythonNativeKitTests/PNModuleTests.swift +111 -0
  192. pythonnative/native/ios/Tests/PythonNativeKitTests/PNTransactionTests.swift +91 -0
  193. pythonnative/native/yoga/LICENSE +21 -0
  194. pythonnative/native/yoga/Package.swift +9 -0
  195. pythonnative/native/yoga/VENDORED.md +2 -0
  196. pythonnative/native/yoga/include/PNStyle.h +10 -0
  197. pythonnative/native/yoga/include/module.modulemap +5 -0
  198. pythonnative/native/yoga/include/yoga/YGConfig.h +158 -0
  199. pythonnative/native/yoga/include/yoga/YGEnums.h +142 -0
  200. pythonnative/native/yoga/include/yoga/YGMacros.h +99 -0
  201. pythonnative/native/yoga/include/yoga/YGNode.h +304 -0
  202. pythonnative/native/yoga/include/yoga/YGNodeLayout.h +35 -0
  203. pythonnative/native/yoga/include/yoga/YGNodeStyle.h +130 -0
  204. pythonnative/native/yoga/include/yoga/YGPixelGrid.h +29 -0
  205. pythonnative/native/yoga/include/yoga/YGValue.h +84 -0
  206. pythonnative/native/yoga/include/yoga/Yoga.h +21 -0
  207. pythonnative/native/yoga/python.cpp +16 -0
  208. pythonnative/native/yoga/style.cpp +272 -0
  209. pythonnative/native/yoga/yoga/CMakeLists.txt +41 -0
  210. pythonnative/native/yoga/yoga/YGConfig.cpp +92 -0
  211. pythonnative/native/yoga/yoga/YGConfig.h +158 -0
  212. pythonnative/native/yoga/yoga/YGEnums.cpp +262 -0
  213. pythonnative/native/yoga/yoga/YGEnums.h +142 -0
  214. pythonnative/native/yoga/yoga/YGMacros.h +99 -0
  215. pythonnative/native/yoga/yoga/YGNode.cpp +366 -0
  216. pythonnative/native/yoga/yoga/YGNode.h +304 -0
  217. pythonnative/native/yoga/yoga/YGNodeLayout.cpp +92 -0
  218. pythonnative/native/yoga/yoga/YGNodeLayout.h +35 -0
  219. pythonnative/native/yoga/yoga/YGNodeStyle.cpp +405 -0
  220. pythonnative/native/yoga/yoga/YGNodeStyle.h +130 -0
  221. pythonnative/native/yoga/yoga/YGPixelGrid.cpp +22 -0
  222. pythonnative/native/yoga/yoga/YGPixelGrid.h +29 -0
  223. pythonnative/native/yoga/yoga/YGValue.cpp +20 -0
  224. pythonnative/native/yoga/yoga/YGValue.h +84 -0
  225. pythonnative/native/yoga/yoga/Yoga.h +21 -0
  226. pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.cpp +563 -0
  227. pythonnative/native/yoga/yoga/algorithm/AbsoluteLayout.h +41 -0
  228. pythonnative/native/yoga/yoga/algorithm/Align.h +72 -0
  229. pythonnative/native/yoga/yoga/algorithm/Baseline.cpp +78 -0
  230. pythonnative/native/yoga/yoga/algorithm/Baseline.h +21 -0
  231. pythonnative/native/yoga/yoga/algorithm/BoundAxis.h +79 -0
  232. pythonnative/native/yoga/yoga/algorithm/Cache.cpp +121 -0
  233. pythonnative/native/yoga/yoga/algorithm/Cache.h +30 -0
  234. pythonnative/native/yoga/yoga/algorithm/CalculateLayout.cpp +2428 -0
  235. pythonnative/native/yoga/yoga/algorithm/CalculateLayout.h +38 -0
  236. pythonnative/native/yoga/yoga/algorithm/FlexDirection.h +120 -0
  237. pythonnative/native/yoga/yoga/algorithm/FlexLine.cpp +124 -0
  238. pythonnative/native/yoga/yoga/algorithm/FlexLine.h +75 -0
  239. pythonnative/native/yoga/yoga/algorithm/PixelGrid.cpp +132 -0
  240. pythonnative/native/yoga/yoga/algorithm/PixelGrid.h +29 -0
  241. pythonnative/native/yoga/yoga/algorithm/SizingMode.h +73 -0
  242. pythonnative/native/yoga/yoga/algorithm/TrailingPosition.h +44 -0
  243. pythonnative/native/yoga/yoga/config/Config.cpp +135 -0
  244. pythonnative/native/yoga/yoga/config/Config.h +92 -0
  245. pythonnative/native/yoga/yoga/debug/AssertFatal.cpp +53 -0
  246. pythonnative/native/yoga/yoga/debug/AssertFatal.h +29 -0
  247. pythonnative/native/yoga/yoga/debug/Log.cpp +107 -0
  248. pythonnative/native/yoga/yoga/debug/Log.h +34 -0
  249. pythonnative/native/yoga/yoga/enums/Align.h +47 -0
  250. pythonnative/native/yoga/yoga/enums/BoxSizing.h +40 -0
  251. pythonnative/native/yoga/yoga/enums/Dimension.h +40 -0
  252. pythonnative/native/yoga/yoga/enums/Direction.h +41 -0
  253. pythonnative/native/yoga/yoga/enums/Display.h +41 -0
  254. pythonnative/native/yoga/yoga/enums/Edge.h +47 -0
  255. pythonnative/native/yoga/yoga/enums/Errata.h +41 -0
  256. pythonnative/native/yoga/yoga/enums/ExperimentalFeature.h +39 -0
  257. pythonnative/native/yoga/yoga/enums/FlexDirection.h +42 -0
  258. pythonnative/native/yoga/yoga/enums/Gutter.h +41 -0
  259. pythonnative/native/yoga/yoga/enums/Justify.h +44 -0
  260. pythonnative/native/yoga/yoga/enums/LogLevel.h +44 -0
  261. pythonnative/native/yoga/yoga/enums/MeasureMode.h +41 -0
  262. pythonnative/native/yoga/yoga/enums/NodeType.h +40 -0
  263. pythonnative/native/yoga/yoga/enums/Overflow.h +41 -0
  264. pythonnative/native/yoga/yoga/enums/PhysicalEdge.h +21 -0
  265. pythonnative/native/yoga/yoga/enums/PositionType.h +41 -0
  266. pythonnative/native/yoga/yoga/enums/Unit.h +42 -0
  267. pythonnative/native/yoga/yoga/enums/Wrap.h +41 -0
  268. pythonnative/native/yoga/yoga/enums/YogaEnums.h +85 -0
  269. pythonnative/native/yoga/yoga/event/event.cpp +87 -0
  270. pythonnative/native/yoga/yoga/event/event.h +130 -0
  271. pythonnative/native/yoga/yoga/module.modulemap +21 -0
  272. pythonnative/native/yoga/yoga/node/CachedMeasurement.h +53 -0
  273. pythonnative/native/yoga/yoga/node/LayoutResults.cpp +48 -0
  274. pythonnative/native/yoga/yoga/node/LayoutResults.h +122 -0
  275. pythonnative/native/yoga/yoga/node/LayoutableChildren.h +148 -0
  276. pythonnative/native/yoga/yoga/node/Node.cpp +443 -0
  277. pythonnative/native/yoga/yoga/node/Node.h +337 -0
  278. pythonnative/native/yoga/yoga/numeric/Comparison.h +81 -0
  279. pythonnative/native/yoga/yoga/numeric/FloatOptional.h +93 -0
  280. pythonnative/native/yoga/yoga/style/SmallValueBuffer.h +133 -0
  281. pythonnative/native/yoga/yoga/style/Style.h +757 -0
  282. pythonnative/native/yoga/yoga/style/StyleLength.h +107 -0
  283. pythonnative/native/yoga/yoga/style/StyleValueHandle.h +98 -0
  284. pythonnative/native/yoga/yoga/style/StyleValuePool.h +127 -0
  285. pythonnative/native_modules/__init__.py +124 -0
  286. pythonnative/native_modules/app_state.py +99 -0
  287. pythonnative/native_modules/battery.py +75 -0
  288. pythonnative/native_modules/biometrics.py +42 -0
  289. pythonnative/native_modules/camera.py +65 -0
  290. pythonnative/native_modules/clipboard.py +46 -0
  291. pythonnative/native_modules/fallback.py +324 -0
  292. pythonnative/native_modules/file_system.py +145 -0
  293. pythonnative/native_modules/haptics.py +75 -0
  294. pythonnative/native_modules/linking.py +123 -0
  295. pythonnative/native_modules/location.py +75 -0
  296. pythonnative/native_modules/net_info.py +112 -0
  297. pythonnative/native_modules/notifications.py +129 -0
  298. pythonnative/native_modules/permissions.py +108 -0
  299. pythonnative/native_modules/registry.py +526 -0
  300. pythonnative/native_modules/secure_store.py +52 -0
  301. pythonnative/native_modules/share.py +51 -0
  302. pythonnative/native_views/__init__.py +375 -0
  303. pythonnative/native_views/base.py +316 -0
  304. pythonnative/native_views/bridge_backend.py +277 -0
  305. pythonnative/navigation/__init__.py +103 -0
  306. pythonnative/navigation/container.py +154 -0
  307. pythonnative/navigation/handle.py +540 -0
  308. pythonnative/navigation/hooks.py +133 -0
  309. pythonnative/navigation/host.py +58 -0
  310. pythonnative/navigation/linking.py +200 -0
  311. pythonnative/navigation/navigators.py +659 -0
  312. pythonnative/navigation/screen.py +149 -0
  313. pythonnative/navigation/state.py +269 -0
  314. pythonnative/net.py +248 -0
  315. pythonnative/platform.py +166 -0
  316. pythonnative/platform_metrics.py +252 -0
  317. pythonnative/preview.py +287 -0
  318. pythonnative/profiling.py +101 -0
  319. pythonnative/project/__init__.py +68 -0
  320. pythonnative/project/android.py +557 -0
  321. pythonnative/project/builder.py +817 -0
  322. pythonnative/project/config.py +773 -0
  323. pythonnative/project/deps.py +719 -0
  324. pythonnative/project/devices.py +304 -0
  325. pythonnative/project/doctor.py +283 -0
  326. pythonnative/project/fingerprint.py +171 -0
  327. pythonnative/project/icons.py +247 -0
  328. pythonnative/project/ios.py +325 -0
  329. pythonnative/project/lockfile.py +100 -0
  330. pythonnative/project/permissions.py +361 -0
  331. pythonnative/project/plugins.py +519 -0
  332. pythonnative/project/runtime_assets.py +183 -0
  333. pythonnative/py.typed +0 -0
  334. pythonnative/query.py +153 -0
  335. pythonnative/reconciler/__init__.py +29 -0
  336. pythonnative/reconciler/boundaries.py +375 -0
  337. pythonnative/reconciler/children.py +88 -0
  338. pythonnative/reconciler/core.py +1165 -0
  339. pythonnative/reconciler/layout_pass.py +393 -0
  340. pythonnative/reconciler/vnode.py +266 -0
  341. pythonnative/refresh.py +55 -0
  342. pythonnative/runtime.py +306 -0
  343. pythonnative/scheduler.py +159 -0
  344. pythonnative/sdk/__init__.py +153 -0
  345. pythonnative/sdk/_components.py +427 -0
  346. pythonnative/sdk/builtins.py +91 -0
  347. pythonnative/sdk/codegen.py +149 -0
  348. pythonnative/sdk/module_codegen.py +184 -0
  349. pythonnative/sdk/schema.py +224 -0
  350. pythonnative/sdk/templates/contracts.kt +46 -0
  351. pythonnative/sdk/templates/contracts.swift +46 -0
  352. pythonnative/storage.py +184 -0
  353. pythonnative/style.py +841 -0
  354. pythonnative/suspense.py +183 -0
  355. pythonnative/templates/android_template/app/build.gradle +75 -0
  356. pythonnative/templates/android_template/app/proguard-rules.pro +21 -0
  357. pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +24 -0
  358. pythonnative/templates/android_template/app/src/debug/AndroidManifest.xml +7 -0
  359. pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +32 -0
  360. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +130 -0
  361. pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +13 -0
  362. pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  363. pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +30 -0
  364. pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +10 -0
  365. pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  366. pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  367. pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  368. pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  369. pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  370. pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  371. pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  372. pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  373. pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  374. pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  375. pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  376. pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  377. pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +22 -0
  378. pythonnative/templates/android_template/app/src/main/res/values/colors.xml +5 -0
  379. pythonnative/templates/android_template/app/src/main/res/values/strings.xml +5 -0
  380. pythonnative/templates/android_template/app/src/main/res/values/themes.xml +9 -0
  381. pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +7 -0
  382. pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +13 -0
  383. pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +19 -0
  384. pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +17 -0
  385. pythonnative/templates/android_template/build.gradle +10 -0
  386. pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
  387. pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +6 -0
  388. pythonnative/templates/android_template/gradle.properties +23 -0
  389. pythonnative/templates/android_template/gradlew +185 -0
  390. pythonnative/templates/android_template/gradlew.bat +89 -0
  391. pythonnative/templates/android_template/settings.gradle +17 -0
  392. pythonnative/templates/ios_template/ios_template/AppDelegate.swift +51 -0
  393. pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  394. pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +13 -0
  395. pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +6 -0
  396. pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +25 -0
  397. pythonnative/templates/ios_template/ios_template/BridgingHeader.h +14 -0
  398. pythonnative/templates/ios_template/ios_template/Info.plist +28 -0
  399. pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +390 -0
  400. pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +61 -0
  401. pythonnative/templates/ios_template/ios_template/ViewController.swift +23 -0
  402. pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +745 -0
  403. pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  404. pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +36 -0
  405. pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +41 -0
  406. pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +32 -0
  407. pythonnative/testing/__init__.py +53 -0
  408. pythonnative/testing/backend.py +276 -0
  409. pythonnative/testing/harness.py +369 -0
  410. pythonnative/utils.py +145 -0
  411. pythonnative-0.40.0.dist-info/DELVEWHEEL +2 -0
  412. pythonnative-0.40.0.dist-info/METADATA +150 -0
  413. pythonnative-0.40.0.dist-info/RECORD +418 -0
  414. pythonnative-0.40.0.dist-info/WHEEL +5 -0
  415. pythonnative-0.40.0.dist-info/entry_points.txt +2 -0
  416. pythonnative-0.40.0.dist-info/licenses/LICENSE +21 -0
  417. pythonnative-0.40.0.dist-info/top_level.txt +1 -0
  418. pythonnative.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll +0 -0
@@ -0,0 +1,167 @@
1
+ """Structural factories: ``Fragment``, ``ErrorBoundary``, and ``Suspense``.
2
+
3
+ These produce elements whose ``type`` is one of the reconciler-owned
4
+ singletons from [`pythonnative.element`][pythonnative.element]
5
+ (``FRAGMENT``, ``ERROR_BOUNDARY``, ``SUSPENSE``) rather than a native
6
+ view name, so they never create a platform view of their own.
7
+ """
8
+
9
+ from typing import Any, Callable, Dict, Optional
10
+
11
+ from ..element import ERROR_BOUNDARY, FRAGMENT, SUSPENSE, Element
12
+
13
+
14
+ def Fragment(*children: Optional[Element], key: Optional[str] = None) -> Element:
15
+ """Group children without adding a wrapping native view.
16
+
17
+ Like React's ``<></>``: groups elements without introducing an
18
+ extra container. Each child mounts as a direct sibling of the
19
+ Fragment's position in the parent's child list. Components may
20
+ also simply return a plain ``list`` of elements; ``Fragment``
21
+ exists for when the group needs a ``key`` (e.g. rendering a list
22
+ of pairs) or when a single expression reads better.
23
+
24
+ ```python
25
+ pn.Column(
26
+ pn.Text("Top"),
27
+ pn.Fragment(
28
+ pn.Text("Middle A"),
29
+ pn.Text("Middle B"),
30
+ ),
31
+ pn.Text("Bottom"),
32
+ )
33
+ ```
34
+
35
+ Args:
36
+ *children: Child elements to expose at the parent level.
37
+ ``None`` and ``False`` children are dropped, which makes
38
+ conditional rendering with ``cond and pn.Text(...)``
39
+ ergonomic.
40
+ key: Stable identity for keyed reconciliation. A keyed
41
+ Fragment moves all of its children as one unit and
42
+ preserves their state across reorders.
43
+
44
+ Returns:
45
+ An [`Element`][pythonnative.Element] whose type is
46
+ [`FRAGMENT`][pythonnative.element.FRAGMENT].
47
+ """
48
+ kept = [c for c in children if c is not None and c is not False]
49
+ return Element(FRAGMENT, {}, kept, key=key)
50
+
51
+
52
+ def ErrorBoundary(
53
+ *children: Element,
54
+ fallback: Optional[Any] = None,
55
+ on_error: Optional[Callable[[BaseException], Any]] = None,
56
+ key: Optional[str] = None,
57
+ ) -> Element:
58
+ """Catch render errors in the wrapped subtree and display ``fallback`` instead.
59
+
60
+ When any descendant raises during render (initial mount, a parent
61
+ re-render, or a local state-driven update), the failed subtree is
62
+ torn down and ``fallback`` is mounted in its place. Without a
63
+ boundary the error propagates to the screen host (which shows the
64
+ dev error overlay in dev mode).
65
+
66
+ ``fallback`` may be:
67
+
68
+ - An [`Element`][pythonnative.Element], shown as-is.
69
+ - ``fallback(error) -> Element``.
70
+ - ``fallback(error, reset) -> Element``, where ``reset`` is a
71
+ zero-arg callable that clears the error and remounts the
72
+ original children (fresh state), for retry buttons.
73
+
74
+ Args:
75
+ *children: Subtree to wrap.
76
+ fallback: Fallback content (see above). Required for the
77
+ boundary to actually catch; without it errors propagate
78
+ to the next boundary up.
79
+ on_error: Callback invoked with the exception when the
80
+ boundary catches, before the fallback mounts. Use it for
81
+ error reporting.
82
+ key: Stable identity for keyed reconciliation.
83
+
84
+ Returns:
85
+ An [`Element`][pythonnative.Element] whose type is
86
+ [`ERROR_BOUNDARY`][pythonnative.element.ERROR_BOUNDARY], with
87
+ ``fallback`` and ``on_error`` in its props (omitted when
88
+ ``None``).
89
+
90
+ Example:
91
+ ```python
92
+ import pythonnative as pn
93
+
94
+ pn.ErrorBoundary(
95
+ MyRiskyComponent(),
96
+ fallback=lambda err, reset: pn.Column(
97
+ pn.Text(f"Error: {err}"),
98
+ pn.Button("Retry", on_press=reset),
99
+ ),
100
+ on_error=lambda err: log.exception(err),
101
+ )
102
+ ```
103
+ """
104
+ props: Dict[str, Any] = {}
105
+ if fallback is not None:
106
+ props["fallback"] = fallback
107
+ if on_error is not None:
108
+ props["on_error"] = on_error
109
+ return Element(ERROR_BOUNDARY, props, list(children), key=key)
110
+
111
+
112
+ def Suspense(
113
+ *children: Element,
114
+ fallback: Optional[Any] = None,
115
+ key: Optional[str] = None,
116
+ ) -> Element:
117
+ """Show ``fallback`` while descendants wait on async work, then swap in the content.
118
+
119
+ A Suspense boundary catches **suspensions** from the subtree it
120
+ wraps: an ``async def`` component body blocking on a pending
121
+ await, or a regular component calling
122
+ [`Resource.read`][pythonnative.suspense.Resource.read] on data that hasn't
123
+ arrived (see [`use_resource`][pythonnative.use_resource] and
124
+ [`lazy`][pythonnative.lazy]). While anything is pending the
125
+ boundary renders ``fallback``; when the awaited work completes it
126
+ retries the content and swaps it in. Suspended components keep
127
+ their hook state across retries, so cached resources aren't
128
+ refetched.
129
+
130
+ Two timing behaviors, matching React:
131
+
132
+ - **Initial mount**: the fallback shows until the content is ready.
133
+ - **Updates**: a component that's already on screen and suspends
134
+ again (its dependencies changed) keeps its previous content
135
+ visible and re-renders when ready; there's no fallback flash.
136
+
137
+ Args:
138
+ *children: Subtree to wrap (the async content).
139
+ fallback: Content shown while suspended: an
140
+ [`Element`][pythonnative.Element] or a zero-arg callable
141
+ returning one. Without it, suspensions propagate to the
142
+ next Suspense boundary up.
143
+ key: Stable identity for keyed reconciliation.
144
+
145
+ Returns:
146
+ An [`Element`][pythonnative.Element] whose type is
147
+ [`SUSPENSE`][pythonnative.element.SUSPENSE], with ``fallback``
148
+ in its props.
149
+
150
+ Example:
151
+ ```python
152
+ import pythonnative as pn
153
+
154
+ @pn.component
155
+ async def Profile(user_id: str):
156
+ user = await api.fetch_user(user_id)
157
+ return pn.Text(user.name)
158
+
159
+ @pn.component
160
+ def Screen():
161
+ return pn.Suspense(
162
+ Profile(user_id="42"),
163
+ fallback=pn.ActivityIndicator(),
164
+ )
165
+ ```
166
+ """
167
+ return Element(SUSPENSE, {"fallback": fallback}, list(children), key=key)
@@ -0,0 +1,291 @@
1
+ """Text-centric leaf factories: ``Text``, ``Button``, and ``TextInput``."""
2
+
3
+ from typing import Any, Callable, Literal, Optional
4
+
5
+ from ..element import Element
6
+ from ..hooks import Ref
7
+ from ..style import (
8
+ AccessibilityState,
9
+ AutoCapitalize,
10
+ Color,
11
+ KeyboardType,
12
+ ReturnKeyType,
13
+ StyleProp,
14
+ )
15
+ from ._base import _flatten_text_spans, _make_element
16
+
17
+
18
+ def Text(
19
+ *parts: Any,
20
+ style: StyleProp = None,
21
+ accessibility_label: Optional[str] = None,
22
+ accessibility_hint: Optional[str] = None,
23
+ accessibility_role: Optional[str] = None,
24
+ accessible: Optional[bool] = None,
25
+ accessibility_state: Optional[AccessibilityState] = None,
26
+ accessibility_live_region: Optional[Literal["none", "polite", "assertive"]] = None,
27
+ test_id: Optional[str] = None,
28
+ ref: Optional[Ref] = None,
29
+ key: Optional[str] = None,
30
+ ) -> Element:
31
+ """Display a string of text, optionally with styled nested spans.
32
+
33
+ Style properties: ``font_size``, ``color``, ``bold``,
34
+ ``font_weight``, ``font_family``, ``italic``, ``text_align``,
35
+ ``background_color``, ``max_lines``, ``letter_spacing``,
36
+ ``line_height``, ``text_decoration`` (``"underline"`` /
37
+ ``"line_through"``), ``border_radius``, ``border_width``,
38
+ ``border_color``, ``shadow_*``, ``opacity``, ``transform``, plus
39
+ the common layout props.
40
+
41
+ **Rich text**: pass multiple parts, mixing plain strings and
42
+ nested ``Text`` elements, to render one paragraph with per-span
43
+ styling (a single ``TextView`` / ``UILabel`` natively, so line
44
+ wrapping flows across spans):
45
+
46
+ ```python
47
+ pn.Text(
48
+ "Hello, ",
49
+ pn.Text("world", style=pn.style(bold=True, color="#0A84FF")),
50
+ "!",
51
+ style=pn.style(font_size=18),
52
+ )
53
+ ```
54
+
55
+ Nested spans inherit the outer element's text styling and may
56
+ override ``color``, ``background_color``, ``font_size``,
57
+ ``font_family``, ``font_weight``, ``bold``, ``italic``,
58
+ ``text_decoration``, and ``letter_spacing``.
59
+
60
+ Args:
61
+ *parts: Text content: a single string, or any mix of strings
62
+ and nested ``Text`` elements for rich text.
63
+ style: Style dict (or list of dicts).
64
+ accessibility_label: Spoken description for screen readers.
65
+ accessibility_hint: Spoken extra detail (iOS only).
66
+ accessibility_role: Semantic role for assistive tech.
67
+ accessible: Override whether the element is exposed to AT.
68
+ accessibility_state: Current widget state for assistive tech,
69
+ e.g. ``{"disabled": True, "selected": False}``. Recognized
70
+ keys: ``disabled``, ``selected``, ``checked``, ``busy``,
71
+ ``expanded``.
72
+ accessibility_live_region: How AT announces dynamic changes to
73
+ this view: ``"none"``, ``"polite"``, or ``"assertive"``
74
+ (Android only).
75
+ test_id: Stable identifier for UI tests; exposed as
76
+ ``resource-id`` on Android and ``accessibilityIdentifier``
77
+ on iOS.
78
+ ref: Optional [`Ref`][pythonnative.Ref] from ``use_ref()``.
79
+ key: Stable identity for keyed reconciliation.
80
+
81
+ Returns:
82
+ An [`Element`][pythonnative.Element] of type ``"Text"``.
83
+ """
84
+ rich = any(isinstance(p, Element) for p in parts) or len(parts) > 1
85
+ if rich:
86
+ spans = _flatten_text_spans(parts, {})
87
+ text = "".join(s["text"] for s in spans)
88
+ else:
89
+ spans = None
90
+ text = str(parts[0]) if parts else ""
91
+ return _make_element(
92
+ "Text",
93
+ style=style,
94
+ ref=ref,
95
+ key=key,
96
+ text=text,
97
+ spans=spans,
98
+ accessibility_label=accessibility_label,
99
+ accessibility_hint=accessibility_hint,
100
+ accessibility_role=accessibility_role,
101
+ accessible=accessible,
102
+ accessibility_state=accessibility_state,
103
+ accessibility_live_region=accessibility_live_region,
104
+ test_id=test_id,
105
+ )
106
+
107
+
108
+ def Button(
109
+ title: str = "",
110
+ *,
111
+ on_press: Optional[Callable[[], Any]] = None,
112
+ disabled: bool = False,
113
+ style: StyleProp = None,
114
+ accessibility_label: Optional[str] = None,
115
+ accessibility_hint: Optional[str] = None,
116
+ accessibility_role: Optional[str] = None,
117
+ accessible: Optional[bool] = None,
118
+ accessibility_state: Optional[AccessibilityState] = None,
119
+ accessibility_live_region: Optional[Literal["none", "polite", "assertive"]] = None,
120
+ test_id: Optional[str] = None,
121
+ ref: Optional[Ref] = None,
122
+ key: Optional[str] = None,
123
+ ) -> Element:
124
+ """Display a tappable button.
125
+
126
+ Style properties: ``color``, ``background_color``, ``font_size``,
127
+ ``border_radius``, ``border_width``, ``border_color``, ``shadow_*``,
128
+ ``opacity``, ``transform``, plus the common layout props.
129
+
130
+ Buttons get ``accessibility_role="button"`` by default.
131
+
132
+ Args:
133
+ title: Button label.
134
+ on_press: Callback invoked when the user taps the button.
135
+ disabled: When ``True``, the button is disabled and cannot be
136
+ tapped.
137
+ style: Style dict (or list of dicts).
138
+ accessibility_label: Spoken description for screen readers.
139
+ accessibility_hint: Spoken extra detail (iOS only).
140
+ accessibility_role: Override the default ``"button"`` role.
141
+ accessible: Override whether the element is exposed to AT.
142
+ accessibility_state: Current widget state for assistive tech,
143
+ e.g. ``{"disabled": True, "selected": False}``. Recognized
144
+ keys: ``disabled``, ``selected``, ``checked``, ``busy``,
145
+ ``expanded``.
146
+ accessibility_live_region: How AT announces dynamic changes to
147
+ this view: ``"none"``, ``"polite"``, or ``"assertive"``
148
+ (Android only).
149
+ test_id: Stable identifier for UI tests; exposed as
150
+ ``resource-id`` on Android and ``accessibilityIdentifier``
151
+ on iOS.
152
+ ref: Optional [`Ref`][pythonnative.Ref] from ``use_ref()``.
153
+ key: Stable identity for keyed reconciliation.
154
+
155
+ Returns:
156
+ An [`Element`][pythonnative.Element] of type ``"Button"``.
157
+ """
158
+ return _make_element(
159
+ "Button",
160
+ style=style,
161
+ ref=ref,
162
+ key=key,
163
+ title=title,
164
+ on_press=on_press,
165
+ disabled=disabled,
166
+ accessibility_label=accessibility_label,
167
+ accessibility_hint=accessibility_hint,
168
+ accessibility_role=accessibility_role,
169
+ accessible=accessible,
170
+ accessibility_state=accessibility_state,
171
+ accessibility_live_region=accessibility_live_region,
172
+ test_id=test_id,
173
+ _defaults={"accessibility_role": "button"},
174
+ )
175
+
176
+
177
+ def TextInput(
178
+ *,
179
+ value: str = "",
180
+ placeholder: Optional[str] = None,
181
+ on_change: Optional[Callable[[str], Any]] = None,
182
+ on_submit: Optional[Callable[[str], Any]] = None,
183
+ secure: bool = False,
184
+ multiline: bool = False,
185
+ keyboard_type: Optional[KeyboardType] = None,
186
+ auto_capitalize: Optional[AutoCapitalize] = None,
187
+ auto_correct: Optional[bool] = None,
188
+ auto_focus: bool = False,
189
+ return_key_type: Optional[ReturnKeyType] = None,
190
+ max_length: Optional[int] = None,
191
+ placeholder_color: Optional[Color] = None,
192
+ editable: bool = True,
193
+ clear_button: bool = False,
194
+ on_focus: Optional[Callable[[], Any]] = None,
195
+ on_blur: Optional[Callable[[], Any]] = None,
196
+ selection_color: Optional[Color] = None,
197
+ text_content_type: Optional[str] = None,
198
+ style: StyleProp = None,
199
+ accessibility_label: Optional[str] = None,
200
+ accessibility_hint: Optional[str] = None,
201
+ accessible: Optional[bool] = None,
202
+ accessibility_state: Optional[AccessibilityState] = None,
203
+ accessibility_live_region: Optional[Literal["none", "polite", "assertive"]] = None,
204
+ test_id: Optional[str] = None,
205
+ ref: Optional[Ref] = None,
206
+ key: Optional[str] = None,
207
+ ) -> Element:
208
+ """Display a text-entry field (single-line by default, or ``multiline``).
209
+
210
+ Style properties: ``font_size``, ``color``, ``background_color``,
211
+ ``border_*``, plus the common layout props.
212
+
213
+ Args:
214
+ value: Current text content (controlled-input pattern).
215
+ placeholder: Hint shown when ``value`` is empty.
216
+ on_change: Callback invoked with the new string each keystroke.
217
+ on_submit: Callback invoked when the user submits (Return /
218
+ Done / etc.). Receives the final text.
219
+ secure: When ``True``, characters are masked (use for passwords).
220
+ multiline: When ``True``, allows multiple lines of input.
221
+ keyboard_type: One of ``"default"``, ``"email_address"``,
222
+ ``"number_pad"``, ``"decimal_pad"``, ``"phone_pad"``, ``"url"``.
223
+ auto_capitalize: One of ``"none"``, ``"sentences"``, ``"words"``,
224
+ ``"characters"``.
225
+ auto_correct: Enable/disable autocorrection.
226
+ auto_focus: Request focus on mount.
227
+ return_key_type: One of ``"default"``, ``"done"``, ``"go"``,
228
+ ``"next"``, ``"send"``, ``"search"``.
229
+ max_length: Maximum number of characters allowed.
230
+ placeholder_color: Color used for the placeholder string.
231
+ editable: When ``False``, the field is read-only (still
232
+ selectable).
233
+ clear_button: When ``True``, shows a clear ("x") button while
234
+ editing (iOS ``clearButtonMode``; an inline button on
235
+ Android).
236
+ on_focus: Callback invoked when the field gains focus.
237
+ on_blur: Callback invoked when the field loses focus.
238
+ selection_color: Cursor / selection highlight color.
239
+ text_content_type: Semantic content hint for autofill (e.g.
240
+ ``"username"``, ``"password"``, ``"one_time_code"``).
241
+ style: Style dict (or list of dicts).
242
+ accessibility_label: Spoken description for screen readers.
243
+ accessibility_hint: Spoken extra detail (iOS only).
244
+ accessible: Override whether the element is exposed to AT.
245
+ accessibility_state: Current widget state for assistive tech,
246
+ e.g. ``{"disabled": True, "selected": False}``. Recognized
247
+ keys: ``disabled``, ``selected``, ``checked``, ``busy``,
248
+ ``expanded``.
249
+ accessibility_live_region: How AT announces dynamic changes to
250
+ this view: ``"none"``, ``"polite"``, or ``"assertive"``
251
+ (Android only).
252
+ test_id: Stable identifier for UI tests; exposed as
253
+ ``resource-id`` on Android and ``accessibilityIdentifier``
254
+ on iOS.
255
+ ref: Optional [`Ref`][pythonnative.Ref] from ``use_ref()``.
256
+ key: Stable identity for keyed reconciliation.
257
+
258
+ Returns:
259
+ An [`Element`][pythonnative.Element] of type ``"TextInput"``.
260
+ """
261
+ return _make_element(
262
+ "TextInput",
263
+ style=style,
264
+ ref=ref,
265
+ key=key,
266
+ value=value,
267
+ placeholder=placeholder,
268
+ on_change=on_change,
269
+ on_submit=on_submit,
270
+ secure=secure or None,
271
+ multiline=multiline or None,
272
+ keyboard_type=keyboard_type,
273
+ auto_capitalize=auto_capitalize,
274
+ auto_correct=auto_correct,
275
+ auto_focus=auto_focus or None,
276
+ return_key_type=return_key_type,
277
+ max_length=max_length,
278
+ placeholder_color=placeholder_color,
279
+ editable=False if editable is False else None,
280
+ clear_button=clear_button or None,
281
+ on_focus=on_focus,
282
+ on_blur=on_blur,
283
+ selection_color=selection_color,
284
+ text_content_type=text_content_type,
285
+ accessibility_label=accessibility_label,
286
+ accessibility_hint=accessibility_hint,
287
+ accessible=accessible,
288
+ accessibility_state=accessibility_state,
289
+ accessibility_live_region=accessibility_live_region,
290
+ test_id=test_id,
291
+ )