pythonnative 0.27.0__py3-none-any.whl → 0.29.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pythonnative/__init__.py CHANGED
@@ -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
pythonnative/cli/pn.py CHANGED
@@ -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
@@ -1,4 +1,4 @@
1
- pythonnative/__init__.py,sha256=uEzMHQV_Ae9bsfYZM_8ZrFqTraUTJfSBLXRcrOE46hE,8680
1
+ pythonnative/__init__.py,sha256=Cij9MFRGS4HwHwvlTMGzXm9anz6Us1MjC8SSKYAsh9M,8680
2
2
  pythonnative/_ios_log.py,sha256=Oi7V28VxcVoZyrpAirvLeEmUW18McqnU87V4d37Zzlw,2582
3
3
  pythonnative/alerts.py,sha256=mIANysFlaHwL5EqKnvNcyiJN9rGiZi9XDrD9Jpz1RFM,9340
4
4
  pythonnative/animated.py,sha256=A4IOBf_GD6lUn0H8ArFH6URf0-m0PG__8uaxcw6-ECE,60373
@@ -27,7 +27,7 @@ pythonnative/suspense.py,sha256=IxWGXFP3Odriy0uQe9zhrNrObdKer0_WT6v9Vi8Vatg,1466
27
27
  pythonnative/utils.py,sha256=-hwe_YS19ebpjeygdl3dGeVsYzO4G74rYD53svSi0rI,7593
28
28
  pythonnative/virtual_rows.py,sha256=4YK3CeZobW-6F6GCXzGNFfmOaAiigmH4HXtqjYDRbyU,5056
29
29
  pythonnative/cli/__init__.py,sha256=NM1psvKe8jT0vzp8Ak4MMoygZz4P_msk5g-YEsY8xLk,232
30
- pythonnative/cli/pn.py,sha256=-bFLj77OmnFymfo9kdcJk_JaZDoq8CxQwK8l98exl60,34498
30
+ pythonnative/cli/pn.py,sha256=Vej6NiT3N_PoNrEZ-Z94o38m-IaoRi9KYx8Gk2IrQTg,34697
31
31
  pythonnative/native_modules/__init__.py,sha256=pgigpHuzT-rqwcjlwJvu93_4L8Nozal1HJid0S_JlmM,2636
32
32
  pythonnative/native_modules/app_state.py,sha256=CKAwDQIwoGElSLE3l7Bekk0qRbFVFOTSuSCBybumZEk,2742
33
33
  pythonnative/native_modules/battery.py,sha256=-lJu8LURw-yEObXUyhNq_jHFDa1_33lgzbJzXaGqUL4,4429
@@ -53,7 +53,7 @@ pythonnative/project/android.py,sha256=ynRQwVvv1trFB2eFaUv38-48q4m0_Z4cTbAFEOiKn
53
53
  pythonnative/project/builder.py,sha256=TTN_ymdSyF4wVtSRRwOnSmc91LMn_g_M7_jTI0NtbVU,23946
54
54
  pythonnative/project/config.py,sha256=CmN6VojcuDRVnLwKFnQyd9B20_HL9l0RWDnO91G_JaY,25001
55
55
  pythonnative/project/devices.py,sha256=OkPzqaD6l4xNJer-rKzorAS9IgvsE87g0JK-2V8FIgE,9593
56
- pythonnative/project/doctor.py,sha256=12_7QQCRFuli-INi6_iif8GoRTByDOFxBFgIRFfO0WU,7962
56
+ pythonnative/project/doctor.py,sha256=cNCUWyzu4WBJ9peARIgQ2AyoAGp81NKKM5VkIx7dpFE,8623
57
57
  pythonnative/project/icons.py,sha256=GaXpktQ9v4v2JZPM3ppueNPmwjTuFiLanHJDaZbLGuo,7945
58
58
  pythonnative/project/ios.py,sha256=Xrx2Jh1v4-3ftLkvKAHQuXCA5nuBdKV5nmTTXkDFaNA,13077
59
59
  pythonnative/project/permissions.py,sha256=WyApoqZ0mCTeAtffYbpCGV-bgLvOG7SlPcV7zSO_IV8,14227
@@ -116,9 +116,9 @@ pythonnative/templates/ios_template/ios_template.xcodeproj/project.xcworkspace/x
116
116
  pythonnative/templates/ios_template/ios_templateTests/ios_templateTests.swift,sha256=YnwzZx7yXB13xKAXEGNgz17VuhWeqkHTRTtBJ2Vu3_E,1238
117
117
  pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITests.swift,sha256=HLRr3cmouRqQeXG13WrZ2XSAmgMgCsNXfZpbwkxeFcs,1385
118
118
  pythonnative/templates/ios_template/ios_templateUITests/ios_templateUITestsLaunchTests.swift,sha256=f5JrG0uVtLMeJQy26Yyz7Om-JUkT220osqcbeIVkj2g,815
119
- pythonnative-0.27.0.dist-info/licenses/LICENSE,sha256=A69iG7TIAe6KkGQf6xoVHkc5JSZtOr5eRSvC5iuivnI,1067
120
- pythonnative-0.27.0.dist-info/METADATA,sha256=p7neECcBWKr0cm-d2R1iA2Xziebf_QpdSjQfAS6VG0Y,11895
121
- pythonnative-0.27.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
122
- pythonnative-0.27.0.dist-info/entry_points.txt,sha256=iUtDawWSAJAEyWTycpZxDuYz73ol31butpzDIEAgPO0,48
123
- pythonnative-0.27.0.dist-info/top_level.txt,sha256=kT4SEATY2ywzrZ2Pgea6_zxyym44Q_PbOsUoOYjJLFE,13
124
- pythonnative-0.27.0.dist-info/RECORD,,
119
+ pythonnative-0.29.0.dist-info/licenses/LICENSE,sha256=A69iG7TIAe6KkGQf6xoVHkc5JSZtOr5eRSvC5iuivnI,1067
120
+ pythonnative-0.29.0.dist-info/METADATA,sha256=4beAvXdapIQed2lDSEkQ_3T-3RgWGFpYRHv1QZTsTeA,11895
121
+ pythonnative-0.29.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
122
+ pythonnative-0.29.0.dist-info/entry_points.txt,sha256=iUtDawWSAJAEyWTycpZxDuYz73ol31butpzDIEAgPO0,48
123
+ pythonnative-0.29.0.dist-info/top_level.txt,sha256=kT4SEATY2ywzrZ2Pgea6_zxyym44Q_PbOsUoOYjJLFE,13
124
+ pythonnative-0.29.0.dist-info/RECORD,,