pythonnative 0.27.0__tar.gz → 0.29.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 (171) hide show
  1. {pythonnative-0.27.0/src/pythonnative.egg-info → pythonnative-0.29.0}/PKG-INFO +1 -1
  2. {pythonnative-0.27.0 → pythonnative-0.29.0}/pyproject.toml +1 -1
  3. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/__init__.py +1 -1
  4. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/cli/pn.py +7 -0
  5. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/doctor.py +21 -1
  6. {pythonnative-0.27.0 → pythonnative-0.29.0/src/pythonnative.egg-info}/PKG-INFO +1 -1
  7. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_cli.py +14 -0
  8. {pythonnative-0.27.0 → pythonnative-0.29.0}/LICENSE +0 -0
  9. {pythonnative-0.27.0 → pythonnative-0.29.0}/README.md +0 -0
  10. {pythonnative-0.27.0 → pythonnative-0.29.0}/setup.cfg +0 -0
  11. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/_ios_log.py +0 -0
  12. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/alerts.py +0 -0
  13. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/animated.py +0 -0
  14. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/appearance.py +0 -0
  15. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/cli/__init__.py +0 -0
  16. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/components.py +0 -0
  17. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/diagnostics.py +0 -0
  18. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/element.py +0 -0
  19. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/events.py +0 -0
  20. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/gestures.py +0 -0
  21. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/hooks.py +0 -0
  22. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/hot_reload.py +0 -0
  23. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/images.py +0 -0
  24. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/layout.py +0 -0
  25. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/mutations.py +0 -0
  26. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/__init__.py +0 -0
  27. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/app_state.py +0 -0
  28. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/battery.py +0 -0
  29. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/biometrics.py +0 -0
  30. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/camera.py +0 -0
  31. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/clipboard.py +0 -0
  32. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/file_system.py +0 -0
  33. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/haptics.py +0 -0
  34. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/linking.py +0 -0
  35. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/location.py +0 -0
  36. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/net_info.py +0 -0
  37. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/notifications.py +0 -0
  38. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/permissions.py +0 -0
  39. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/secure_store.py +0 -0
  40. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_modules/share.py +0 -0
  41. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_views/__init__.py +0 -0
  42. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_views/android.py +0 -0
  43. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_views/base.py +0 -0
  44. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_views/desktop.py +0 -0
  45. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/native_views/ios.py +0 -0
  46. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/navigation.py +0 -0
  47. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/net.py +0 -0
  48. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/platform.py +0 -0
  49. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/platform_metrics.py +0 -0
  50. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/preview.py +0 -0
  51. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/__init__.py +0 -0
  52. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/android.py +0 -0
  53. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/builder.py +0 -0
  54. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/config.py +0 -0
  55. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/devices.py +0 -0
  56. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/icons.py +0 -0
  57. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/ios.py +0 -0
  58. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/permissions.py +0 -0
  59. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/project/runtime_assets.py +0 -0
  60. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/reconciler.py +0 -0
  61. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/runtime.py +0 -0
  62. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/screen.py +0 -0
  63. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/sdk/__init__.py +0 -0
  64. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/sdk/_components.py +0 -0
  65. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/storage.py +0 -0
  66. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/style.py +0 -0
  67. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/suspense.py +0 -0
  68. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/build.gradle +0 -0
  69. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/proguard-rules.pro +0 -0
  70. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/androidTest/java/com/pythonnative/android_template/ExampleInstrumentedTest.kt +0 -0
  71. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/AndroidManifest.xml +0 -0
  72. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/MainActivity.kt +0 -0
  73. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/Navigator.kt +0 -0
  74. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/PNAccessibilityDelegate.kt +0 -0
  75. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/PNBorderDrawable.kt +0 -0
  76. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/PNFrameLayout.kt +0 -0
  77. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/PNVirtualListView.java +0 -0
  78. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/java/com/pythonnative/android_template/ScreenFragment.kt +0 -0
  79. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable/ic_launcher_background.xml +0 -0
  80. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -0
  81. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/layout/activity_main.xml +0 -0
  82. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +0 -0
  83. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +0 -0
  84. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  85. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  86. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  87. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  88. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  89. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  90. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  91. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  92. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  93. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  94. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/navigation/nav_graph.xml +0 -0
  95. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/values/colors.xml +0 -0
  96. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/values/strings.xml +0 -0
  97. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/values/themes.xml +0 -0
  98. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/values-night/themes.xml +0 -0
  99. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/backup_rules.xml +0 -0
  100. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/main/res/xml/data_extraction_rules.xml +0 -0
  101. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/app/src/test/java/com/pythonnative/android_template/ExampleUnitTest.kt +0 -0
  102. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/build.gradle +0 -0
  103. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.jar +0 -0
  104. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/gradle/wrapper/gradle-wrapper.properties +0 -0
  105. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/gradle.properties +0 -0
  106. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/gradlew +0 -0
  107. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/gradlew.bat +0 -0
  108. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/android_template/settings.gradle +0 -0
  109. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/AppDelegate.swift +0 -0
  110. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AccentColor.colorset/Contents.json +0 -0
  111. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
  112. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/Assets.xcassets/Contents.json +0 -0
  113. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/Base.lproj/LaunchScreen.storyboard +0 -0
  114. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/BridgingHeader.h +0 -0
  115. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/Info.plist +0 -0
  116. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/PythonRuntime.swift +0 -0
  117. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/SceneDelegate.swift +0 -0
  118. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template/ViewController.swift +0 -0
  119. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.pbxproj +0 -0
  120. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
  121. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift +0 -0
  122. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift +0 -0
  123. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift +0 -0
  124. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/utils.py +0 -0
  125. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative/virtual_rows.py +0 -0
  126. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative.egg-info/SOURCES.txt +0 -0
  127. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative.egg-info/dependency_links.txt +0 -0
  128. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative.egg-info/entry_points.txt +0 -0
  129. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative.egg-info/requires.txt +0 -0
  130. {pythonnative-0.27.0 → pythonnative-0.29.0}/src/pythonnative.egg-info/top_level.txt +0 -0
  131. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_alert.py +0 -0
  132. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_animated.py +0 -0
  133. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_animated_graph.py +0 -0
  134. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_appearance.py +0 -0
  135. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_async_hooks.py +0 -0
  136. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_components.py +0 -0
  137. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_core_semantics.py +0 -0
  138. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_desktop_backend.py +0 -0
  139. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_element.py +0 -0
  140. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_events.py +0 -0
  141. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_extended_components.py +0 -0
  142. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_gesture_composition.py +0 -0
  143. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_gestures.py +0 -0
  144. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_hooks.py +0 -0
  145. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_hot_reload.py +0 -0
  146. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_images.py +0 -0
  147. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_incremental_render.py +0 -0
  148. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_interaction_props.py +0 -0
  149. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_ios_log.py +0 -0
  150. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_layout.py +0 -0
  151. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_metric_hooks.py +0 -0
  152. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_mutations.py +0 -0
  153. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_native_lists.py +0 -0
  154. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_native_modules.py +0 -0
  155. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_native_views.py +0 -0
  156. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_navigation.py +0 -0
  157. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_net.py +0 -0
  158. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_new_components.py +0 -0
  159. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_platform.py +0 -0
  160. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_platform_metrics.py +0 -0
  161. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_reconciler.py +0 -0
  162. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_ref.py +0 -0
  163. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_runtime.py +0 -0
  164. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_screen.py +0 -0
  165. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_sdk.py +0 -0
  166. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_smoke.py +0 -0
  167. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_storage.py +0 -0
  168. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_style.py +0 -0
  169. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_suspense.py +0 -0
  170. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_transitions.py +0 -0
  171. {pythonnative-0.27.0 → pythonnative-0.29.0}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonnative
3
- Version: 0.27.0
3
+ Version: 0.29.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.27.0"
7
+ version = "0.29.0"
8
8
  description = "Cross-platform native UI toolkit for Android and iOS"
9
9
  authors = [
10
10
  { name = "Owen Carey" }
@@ -60,7 +60,7 @@ Example:
60
60
  ```
61
61
  """
62
62
 
63
- __version__ = "0.27.0"
63
+ __version__ = "0.29.0"
64
64
 
65
65
  from . import appearance, diagnostics, gestures, images, runtime, sdk
66
66
  from .alerts import Alert
@@ -34,6 +34,7 @@ import shutil
34
34
  import subprocess
35
35
  import sys
36
36
  import time
37
+ from importlib.metadata import version as pkg_version
37
38
  from pathlib import Path
38
39
  from typing import Any, Dict, List, Optional
39
40
 
@@ -863,6 +864,12 @@ def _run_hot_reload(
863
864
 
864
865
  def _build_parser() -> argparse.ArgumentParser:
865
866
  parser = argparse.ArgumentParser(prog="pn", description="PythonNative CLI")
867
+ parser.add_argument(
868
+ "--version",
869
+ "-V",
870
+ action="version",
871
+ version=f"pn {pkg_version('pythonnative')}",
872
+ )
866
873
  subparsers = parser.add_subparsers()
867
874
 
868
875
  parser_init = subparsers.add_parser("init", help="Scaffold a new project")
@@ -61,8 +61,17 @@ def _which_version(tool: str, version_args: List[str]) -> Optional[str]:
61
61
  return text[0] if text else path
62
62
 
63
63
 
64
+ def _tkinter_available() -> bool:
65
+ """Return whether the host Python can import Tkinter."""
66
+ try:
67
+ import tkinter # noqa: F401
68
+ except ImportError:
69
+ return False
70
+ return True
71
+
72
+
64
73
  def check_common() -> List[CheckResult]:
65
- """Run platform-agnostic checks (interpreter, Pillow).
74
+ """Run platform-agnostic checks (interpreter and optional dependencies).
66
75
 
67
76
  Returns:
68
77
  Check results for the host Python and optional dependencies.
@@ -89,6 +98,17 @@ def check_common() -> List[CheckResult]:
89
98
  "not installed; run: pip install 'pythonnative[build]'",
90
99
  )
91
100
  )
101
+ if _tkinter_available():
102
+ results.append(CheckResult("Tkinter (desktop preview)", OK))
103
+ else:
104
+ results.append(
105
+ CheckResult(
106
+ "Tkinter (desktop preview)",
107
+ WARN,
108
+ "not installed; macOS: brew install python-tk; Debian/Ubuntu: sudo apt-get install python3-tk; "
109
+ "Windows: reinstall Python with the 'tcl/tk' option checked",
110
+ )
111
+ )
92
112
  return results
93
113
 
94
114
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonnative
3
- Version: 0.27.0
3
+ Version: 0.29.0
4
4
  Summary: Cross-platform native UI toolkit for Android and iOS
5
5
  Author: Owen Carey
6
6
  License: MIT License
@@ -17,6 +17,20 @@ def run_pn(args: List[str], cwd: str) -> "subprocess.CompletedProcess[str]":
17
17
  return subprocess.run(cmd, cwd=cwd, check=False, capture_output=True, text=True)
18
18
 
19
19
 
20
+ def test_cli_version(tmp_path: Path) -> None:
21
+ result = run_pn(["--version"], str(tmp_path))
22
+
23
+ assert result.returncode == 0
24
+ assert result.stdout.strip().startswith("pn ")
25
+
26
+
27
+ def test_cli_short_version_flag(tmp_path: Path) -> None:
28
+ result = run_pn(["-V"], str(tmp_path))
29
+
30
+ assert result.returncode == 0
31
+ assert result.stdout.strip().startswith("pn ")
32
+
33
+
20
34
  def test_cli_init_and_clean() -> None:
21
35
  tmpdir = tempfile.mkdtemp(prefix="pn_cli_test_")
22
36
  try:
File without changes
File without changes
File without changes