flet-desktop 0.26.0.dev3957__tar.gz → 0.26.0.dev3999__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 (102) hide show
  1. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/PKG-INFO +3 -4
  2. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/pyproject.toml +3 -3
  3. flet_desktop-0.26.0.dev3999/src/flet_desktop/__init__.py +217 -0
  4. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/audioplayers_windows_plugin.dll +0 -0
  5. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/app.so +0 -0
  6. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/flet.exe +0 -0
  7. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/flutter_windows.dll +0 -0
  8. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/geolocator_windows_plugin.dll +0 -0
  9. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/media_kit_libs_windows_video_plugin.dll +0 -0
  10. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/media_kit_native_event_loop.dll +0 -0
  11. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/media_kit_video_plugin.dll +0 -0
  12. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/permission_handler_windows_plugin.dll +0 -0
  13. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/record_windows_plugin.dll +0 -0
  14. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/rive_common_plugin.dll +0 -0
  15. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/screen_brightness_windows_plugin.dll +0 -0
  16. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/screen_retriever_windows_plugin.dll +0 -0
  17. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/url_launcher_windows_plugin.dll +0 -0
  18. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/window_manager_plugin.dll +0 -0
  19. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/window_to_front_plugin.dll +0 -0
  20. flet_desktop-0.26.0.dev3999/src/flet_desktop/version.py +1 -0
  21. flet_desktop-0.26.0.dev3957/src/flet_desktop/__init__.py +0 -180
  22. flet_desktop-0.26.0.dev3957/src/flet_desktop/version.py +0 -1
  23. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/README.md +0 -0
  24. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-console-l1-1-0.dll +0 -0
  25. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-console-l1-2-0.dll +0 -0
  26. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-datetime-l1-1-0.dll +0 -0
  27. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-debug-l1-1-0.dll +0 -0
  28. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
  29. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-fibers-l1-1-0.dll +0 -0
  30. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-file-l1-1-0.dll +0 -0
  31. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-file-l1-2-0.dll +0 -0
  32. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-file-l2-1-0.dll +0 -0
  33. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-handle-l1-1-0.dll +0 -0
  34. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-heap-l1-1-0.dll +0 -0
  35. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
  36. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
  37. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-localization-l1-2-0.dll +0 -0
  38. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-memory-l1-1-0.dll +0 -0
  39. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
  40. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
  41. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
  42. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
  43. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-profile-l1-1-0.dll +0 -0
  44. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
  45. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-string-l1-1-0.dll +0 -0
  46. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-synch-l1-1-0.dll +0 -0
  47. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-synch-l1-2-0.dll +0 -0
  48. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
  49. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-timezone-l1-1-0.dll +0 -0
  50. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-core-util-l1-1-0.dll +0 -0
  51. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-conio-l1-1-0.dll +0 -0
  52. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-convert-l1-1-0.dll +0 -0
  53. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-environment-l1-1-0.dll +0 -0
  54. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
  55. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-heap-l1-1-0.dll +0 -0
  56. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-locale-l1-1-0.dll +0 -0
  57. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-math-l1-1-0.dll +0 -0
  58. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-multibyte-l1-1-0.dll +0 -0
  59. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-private-l1-1-0.dll +0 -0
  60. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-process-l1-1-0.dll +0 -0
  61. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
  62. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
  63. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-string-l1-1-0.dll +0 -0
  64. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-time-l1-1-0.dll +0 -0
  65. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-crt-utility-l1-1-0.dll +0 -0
  66. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-downlevel-kernel32-l2-1-0.dll +0 -0
  67. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/api-ms-win-eventing-provider-l1-1-0.dll +0 -0
  68. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/concrt140.dll +0 -0
  69. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/d3dcompiler_47.dll +0 -0
  70. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/AssetManifest.bin +0 -0
  71. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/AssetManifest.json +0 -0
  72. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/FontManifest.json +0 -0
  73. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/NOTICES.Z +0 -0
  74. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/fonts/MaterialIcons-Regular.otf +0 -0
  75. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf +0 -0
  76. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/packages/flutter_map/lib/assets/flutter_map_logo.png +0 -0
  77. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/packages/media_kit/assets/web/hls1.4.10.js +0 -0
  78. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/packages/record_web/assets/js/record.fixwebmduration.js +0 -0
  79. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/packages/record_web/assets/js/record.worklet.js +0 -0
  80. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/packages/wakelock_plus/assets/no_sleep.js +0 -0
  81. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/flutter_assets/shaders/ink_sparkle.frag +0 -0
  82. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/data/icudtl.dat +0 -0
  83. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/libEGL.dll +0 -0
  84. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/libGLESv2.dll +0 -0
  85. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/libc++.dll +0 -0
  86. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/libmpv-2.dll +0 -0
  87. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/msvcp140.dll +0 -0
  88. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/msvcp140_1.dll +0 -0
  89. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/msvcp140_2.dll +0 -0
  90. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/msvcp140_atomic_wait.dll +0 -0
  91. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/msvcp140_codecvt_ids.dll +0 -0
  92. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/ucrtbase.dll +0 -0
  93. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/ucrtbased.dll +0 -0
  94. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vccorlib140.dll +0 -0
  95. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vccorlib140d.dll +0 -0
  96. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vcruntime140.dll +0 -0
  97. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vcruntime140_1.dll +0 -0
  98. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vcruntime140_1d.dll +0 -0
  99. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vcruntime140d.dll +0 -0
  100. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vk_swiftshader.dll +0 -0
  101. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/vulkan-1.dll +0 -0
  102. {flet_desktop-0.26.0.dev3957 → flet_desktop-0.26.0.dev3999}/src/flet_desktop/app/flet/zlib.dll +0 -0
@@ -1,20 +1,19 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: flet-desktop
3
- Version: 0.26.0.dev3957
3
+ Version: 0.26.0.dev3999
4
4
  Summary: Flet Desktop client in Flutter
5
5
  License: Apache-2.0
6
6
  Author: Appveyor Systems Inc.
7
7
  Author-email: hello@flet.dev
8
- Requires-Python: >=3.8,<4.0
8
+ Requires-Python: >=3.9,<4.0
9
9
  Classifier: License :: OSI Approved :: Apache Software License
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.8
12
11
  Classifier: Programming Language :: Python :: 3.9
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
16
15
  Classifier: Programming Language :: Python :: 3.13
17
- Requires-Dist: flet (==0.26.0.dev3957)
16
+ Requires-Dist: flet (==0.26.0.dev3999)
18
17
  Project-URL: Documentation, https://flet.dev/docs
19
18
  Project-URL: Homepage, https://flet.dev
20
19
  Project-URL: Repository, https://github.com/flet-dev/flet
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "flet-desktop"
3
- version = "0.26.0.dev3957"
3
+ version = "0.26.0.dev3999"
4
4
  description = "Flet Desktop client in Flutter"
5
5
  authors = ["Appveyor Systems Inc. <hello@flet.dev>"]
6
6
  license = "Apache-2.0"
@@ -20,8 +20,8 @@ Repository = "https://github.com/flet-dev/flet"
20
20
  Documentation = "https://flet.dev/docs"
21
21
 
22
22
  [tool.poetry.dependencies]
23
- python = "^3.8"
24
- flet = { version = "0.26.0.dev3957" }
23
+ python = "^3.9"
24
+ flet = { version = "0.26.0.dev3999" }
25
25
 
26
26
  [tool.poetry.group.dev.dependencies]
27
27
  pre-commit = "^2.6"
@@ -0,0 +1,217 @@
1
+ import asyncio
2
+ import logging
3
+ import os
4
+ import signal
5
+ import stat
6
+ import subprocess
7
+ import tarfile
8
+ import tempfile
9
+ import urllib.request
10
+ import zipfile
11
+ from pathlib import Path
12
+
13
+ import flet_desktop
14
+ import flet_desktop.version
15
+ from flet.utils import (
16
+ get_arch,
17
+ is_linux,
18
+ is_macos,
19
+ is_windows,
20
+ random_string,
21
+ safe_tar_extractall,
22
+ )
23
+
24
+ logger = logging.getLogger(flet_desktop.__name__)
25
+
26
+
27
+ def get_package_bin_dir():
28
+ return str(Path(__file__).parent.joinpath("app"))
29
+
30
+
31
+ def open_flet_view(page_url, assets_dir, hidden):
32
+ args, flet_env, pid_file = __locate_and_unpack_flet_view(
33
+ page_url, assets_dir, hidden
34
+ )
35
+ return subprocess.Popen(args, env=flet_env), pid_file
36
+
37
+
38
+ async def open_flet_view_async(page_url, assets_dir, hidden):
39
+ args, flet_env, pid_file = __locate_and_unpack_flet_view(
40
+ page_url, assets_dir, hidden
41
+ )
42
+ return (
43
+ await asyncio.create_subprocess_exec(args[0], *args[1:], env=flet_env),
44
+ pid_file,
45
+ )
46
+
47
+
48
+ def close_flet_view(pid_file):
49
+ if pid_file is not None and os.path.exists(pid_file):
50
+ try:
51
+ with open(pid_file) as f:
52
+ fvp_pid = int(f.read())
53
+ logger.debug(f"Flet View process {fvp_pid}")
54
+ os.kill(fvp_pid, signal.SIGKILL)
55
+ except Exception:
56
+ pass
57
+ finally:
58
+ os.remove(pid_file)
59
+
60
+
61
+ def __locate_and_unpack_flet_view(page_url, assets_dir, hidden):
62
+ logger.info("Starting Flet View app...")
63
+
64
+ args = []
65
+
66
+ # pid file - Flet client writes its process ID to this file
67
+ pid_file = str(Path(tempfile.gettempdir()).joinpath(random_string(20)))
68
+
69
+ if is_windows():
70
+ flet_path = None
71
+ # try loading Flet client built with the latest run of `flet build`
72
+ build_windows = os.path.join(os.getcwd(), "build", "windows")
73
+ if os.path.exists(build_windows):
74
+ for f in os.listdir(build_windows):
75
+ if f.endswith(".exe"):
76
+ flet_path = os.path.join(build_windows, f)
77
+
78
+ if not flet_path:
79
+ flet_exe = "flet.exe"
80
+ temp_flet_dir = Path.home().joinpath(
81
+ ".flet", "bin", f"flet-{flet_desktop.version.version}"
82
+ )
83
+
84
+ # check if flet_view.exe exists in "bin" directory (user mode)
85
+ flet_path = os.path.join(get_package_bin_dir(), "flet", flet_exe)
86
+ logger.info(f"Looking for Flet executable at: {flet_path}")
87
+ if os.path.exists(flet_path):
88
+ logger.info(f"Flet View found in: {flet_path}")
89
+ else:
90
+ # check if flet.exe is in FLET_VIEW_PATH (flet developer mode)
91
+ flet_path = os.environ.get("FLET_VIEW_PATH")
92
+ if flet_path and os.path.exists(flet_path):
93
+ logger.info(f"Flet View found in PATH: {flet_path}")
94
+ flet_path = os.path.join(flet_path, flet_exe)
95
+ else:
96
+ if not temp_flet_dir.exists():
97
+ zip_file = __download_flet_client("flet-windows.zip")
98
+
99
+ logger.info(
100
+ f"Extracting flet.exe from archive to {temp_flet_dir}"
101
+ )
102
+ temp_flet_dir.mkdir(parents=True, exist_ok=True)
103
+ with zipfile.ZipFile(zip_file, "r") as zip_arch:
104
+ zip_arch.extractall(str(temp_flet_dir))
105
+ flet_path = str(temp_flet_dir.joinpath("flet", flet_exe))
106
+ args = [flet_path, page_url, pid_file]
107
+ elif is_macos():
108
+ app_path = None
109
+ # try loading Flet client built with the latest run of `flet build`
110
+ build_macos = os.path.join(os.getcwd(), "build", "macos")
111
+ if os.path.exists(build_macos):
112
+ for f in os.listdir(build_macos):
113
+ if f.endswith(".app"):
114
+ app_path = os.path.join(build_macos, f)
115
+
116
+ if not app_path:
117
+ # build version-specific path to Flet.app
118
+ temp_flet_dir = Path.home().joinpath(
119
+ ".flet", "bin", f"flet-{flet_desktop.version.version}"
120
+ )
121
+
122
+ # check if flet.exe is in FLET_VIEW_PATH (flet developer mode)
123
+ flet_path = os.environ.get("FLET_VIEW_PATH")
124
+ if flet_path:
125
+ logger.info(f"Flet.app is set via FLET_VIEW_PATH: {flet_path}")
126
+ temp_flet_dir = Path(flet_path)
127
+ else:
128
+ # check if flet_view.app exists in a temp directory
129
+ if not temp_flet_dir.exists():
130
+ # check if flet.tar.gz exists
131
+ gz_filename = "flet-macos.tar.gz"
132
+ tar_file = os.path.join(get_package_bin_dir(), gz_filename)
133
+ logger.info(f"Looking for Flet.app archive at: {tar_file}")
134
+ if not os.path.exists(tar_file):
135
+ tar_file = __download_flet_client(gz_filename)
136
+
137
+ logger.info(f"Extracting Flet.app from archive to {temp_flet_dir}")
138
+ temp_flet_dir.mkdir(parents=True, exist_ok=True)
139
+ with tarfile.open(str(tar_file), "r:gz") as tar_arch:
140
+ safe_tar_extractall(tar_arch, str(temp_flet_dir))
141
+ else:
142
+ logger.info(f"Flet View found in: {temp_flet_dir}")
143
+
144
+ app_name = None
145
+ for f in os.listdir(temp_flet_dir):
146
+ if f.endswith(".app"):
147
+ app_name = f
148
+ assert (
149
+ app_name is not None
150
+ ), f"Application bundle not found in {temp_flet_dir}"
151
+ app_path = temp_flet_dir.joinpath(app_name)
152
+ args = ["open", str(app_path), "-n", "-W", "--args", page_url, pid_file]
153
+ elif is_linux():
154
+ app_path = None
155
+ # try loading Flet client built with the latest run of `flet build`
156
+ build_linux = os.path.join(os.getcwd(), "build", "linux")
157
+ if os.path.exists(build_linux):
158
+ for f in os.listdir(build_linux):
159
+ ef = os.path.join(build_linux, f)
160
+ if os.path.isfile(ef) and stat.S_IXUSR & os.stat(ef)[stat.ST_MODE]:
161
+ app_path = ef
162
+
163
+ if not app_path:
164
+ # build version-specific path to flet folder
165
+ temp_flet_dir = Path.home().joinpath(
166
+ ".flet", "bin", f"flet-{flet_desktop.version.version}"
167
+ )
168
+
169
+ # check if flet.exe is in FLET_VIEW_PATH (flet developer mode)
170
+ flet_path = os.environ.get("FLET_VIEW_PATH")
171
+ if flet_path:
172
+ logger.info(f"Flet View is set via FLET_VIEW_PATH: {flet_path}")
173
+ temp_flet_dir = Path(flet_path)
174
+ app_path = temp_flet_dir.joinpath("flet")
175
+ else:
176
+ # check if flet_view.app exists in a temp directory
177
+ if not temp_flet_dir.exists():
178
+ # check if flet.tar.gz exists
179
+ gz_filename = f"flet-linux-{get_arch()}.tar.gz"
180
+ tar_file = os.path.join(get_package_bin_dir(), gz_filename)
181
+ logger.info(f"Looking for Flet bundle archive at: {tar_file}")
182
+ if not os.path.exists(tar_file):
183
+ tar_file = __download_flet_client(gz_filename)
184
+
185
+ logger.info(f"Extracting Flet from archive to {temp_flet_dir}")
186
+ temp_flet_dir.mkdir(parents=True, exist_ok=True)
187
+ with tarfile.open(str(tar_file), "r:gz") as tar_arch:
188
+ safe_tar_extractall(tar_arch, str(temp_flet_dir))
189
+ else:
190
+ logger.info(f"Flet View found in: {temp_flet_dir}")
191
+
192
+ app_path = temp_flet_dir.joinpath("flet", "flet")
193
+ args = [str(app_path), page_url, pid_file]
194
+
195
+ flet_env = {**os.environ}
196
+
197
+ if assets_dir:
198
+ args.append(assets_dir)
199
+
200
+ if hidden:
201
+ flet_env["FLET_HIDE_WINDOW_ON_START"] = "true"
202
+
203
+ return args, flet_env, pid_file
204
+
205
+
206
+ def __download_flet_client(file_name):
207
+ ver = flet_desktop.version.version
208
+ if not ver:
209
+ import flet.version
210
+ from flet.version import update_version
211
+
212
+ ver = flet.version.version or update_version()
213
+ temp_arch = Path(tempfile.gettempdir()).joinpath(file_name)
214
+ flet_url = f"https://github.com/flet-dev/flet/releases/download/v{ver}/{file_name}"
215
+ logger.info(f"Downloading Flet v{ver} from {flet_url} to {temp_arch}")
216
+ urllib.request.urlretrieve(flet_url, temp_arch)
217
+ return str(temp_arch)
@@ -0,0 +1 @@
1
+ version = "0.26.0.dev3999"
@@ -1,180 +0,0 @@
1
- import asyncio
2
- import logging
3
- import os
4
- import signal
5
- import subprocess
6
- import tarfile
7
- import tempfile
8
- import urllib.request
9
- import zipfile
10
- from pathlib import Path
11
-
12
- import flet_desktop
13
- import flet_desktop.version
14
- from flet.utils import (
15
- get_arch,
16
- is_linux,
17
- is_macos,
18
- is_windows,
19
- random_string,
20
- safe_tar_extractall,
21
- )
22
-
23
- logger = logging.getLogger(flet_desktop.__name__)
24
-
25
-
26
- def get_package_bin_dir():
27
- return str(Path(__file__).parent.joinpath("app"))
28
-
29
-
30
- def open_flet_view(page_url, assets_dir, hidden):
31
- args, flet_env, pid_file = __locate_and_unpack_flet_view(
32
- page_url, assets_dir, hidden
33
- )
34
- return subprocess.Popen(args, env=flet_env), pid_file
35
-
36
-
37
- async def open_flet_view_async(page_url, assets_dir, hidden):
38
- args, flet_env, pid_file = __locate_and_unpack_flet_view(
39
- page_url, assets_dir, hidden
40
- )
41
- return (
42
- await asyncio.create_subprocess_exec(args[0], *args[1:], env=flet_env),
43
- pid_file,
44
- )
45
-
46
-
47
- def close_flet_view(pid_file):
48
- if pid_file is not None and os.path.exists(pid_file):
49
- try:
50
- with open(pid_file) as f:
51
- fvp_pid = int(f.read())
52
- logger.debug(f"Flet View process {fvp_pid}")
53
- os.kill(fvp_pid, signal.SIGKILL)
54
- except Exception:
55
- pass
56
- finally:
57
- os.remove(pid_file)
58
-
59
-
60
- def __locate_and_unpack_flet_view(page_url, assets_dir, hidden):
61
- logger.info("Starting Flet View app...")
62
-
63
- args = []
64
-
65
- # pid file - Flet client writes its process ID to this file
66
- pid_file = str(Path(tempfile.gettempdir()).joinpath(random_string(20)))
67
-
68
- if is_windows():
69
- flet_exe = "flet.exe"
70
- temp_flet_dir = Path.home().joinpath(
71
- ".flet", "bin", f"flet-{flet_desktop.version.version}"
72
- )
73
-
74
- # check if flet_view.exe exists in "bin" directory (user mode)
75
- flet_path = os.path.join(get_package_bin_dir(), "flet", flet_exe)
76
- logger.info(f"Looking for Flet executable at: {flet_path}")
77
- if os.path.exists(flet_path):
78
- logger.info(f"Flet View found in: {flet_path}")
79
- else:
80
- # check if flet.exe is in FLET_VIEW_PATH (flet developer mode)
81
- flet_path = os.environ.get("FLET_VIEW_PATH")
82
- if flet_path and os.path.exists(flet_path):
83
- logger.info(f"Flet View found in PATH: {flet_path}")
84
- flet_path = os.path.join(flet_path, flet_exe)
85
- else:
86
- if not temp_flet_dir.exists():
87
- zip_file = __download_flet_client("flet-windows.zip")
88
-
89
- logger.info(f"Extracting flet.exe from archive to {temp_flet_dir}")
90
- temp_flet_dir.mkdir(parents=True, exist_ok=True)
91
- with zipfile.ZipFile(zip_file, "r") as zip_arch:
92
- zip_arch.extractall(str(temp_flet_dir))
93
- flet_path = str(temp_flet_dir.joinpath("flet", flet_exe))
94
- args = [flet_path, page_url, pid_file]
95
- elif is_macos():
96
- # build version-specific path to Flet.app
97
- temp_flet_dir = Path.home().joinpath(
98
- ".flet", "bin", f"flet-{flet_desktop.version.version}"
99
- )
100
-
101
- # check if flet.exe is in FLET_VIEW_PATH (flet developer mode)
102
- flet_path = os.environ.get("FLET_VIEW_PATH")
103
- if flet_path:
104
- logger.info(f"Flet.app is set via FLET_VIEW_PATH: {flet_path}")
105
- temp_flet_dir = Path(flet_path)
106
- else:
107
- # check if flet_view.app exists in a temp directory
108
- if not temp_flet_dir.exists():
109
- # check if flet.tar.gz exists
110
- gz_filename = "flet-macos.tar.gz"
111
- tar_file = os.path.join(get_package_bin_dir(), gz_filename)
112
- logger.info(f"Looking for Flet.app archive at: {tar_file}")
113
- if not os.path.exists(tar_file):
114
- tar_file = __download_flet_client(gz_filename)
115
-
116
- logger.info(f"Extracting Flet.app from archive to {temp_flet_dir}")
117
- temp_flet_dir.mkdir(parents=True, exist_ok=True)
118
- with tarfile.open(str(tar_file), "r:gz") as tar_arch:
119
- safe_tar_extractall(tar_arch, str(temp_flet_dir))
120
- else:
121
- logger.info(f"Flet View found in: {temp_flet_dir}")
122
-
123
- app_name = None
124
- for f in os.listdir(temp_flet_dir):
125
- if f.endswith(".app"):
126
- app_name = f
127
- assert app_name is not None, f"Application bundle not found in {temp_flet_dir}"
128
- app_path = temp_flet_dir.joinpath(app_name)
129
- args = ["open", str(app_path), "-n", "-W", "--args", page_url, pid_file]
130
- elif is_linux():
131
- # build version-specific path to flet folder
132
- temp_flet_dir = Path.home().joinpath(
133
- ".flet", "bin", f"flet-{flet_desktop.version.version}"
134
- )
135
-
136
- app_path = None
137
- # check if flet.exe is in FLET_VIEW_PATH (flet developer mode)
138
- flet_path = os.environ.get("FLET_VIEW_PATH")
139
- if flet_path:
140
- logger.info(f"Flet View is set via FLET_VIEW_PATH: {flet_path}")
141
- temp_flet_dir = Path(flet_path)
142
- app_path = temp_flet_dir.joinpath("flet")
143
- else:
144
- # check if flet_view.app exists in a temp directory
145
- if not temp_flet_dir.exists():
146
- # check if flet.tar.gz exists
147
- gz_filename = f"flet-linux-{get_arch()}.tar.gz"
148
- tar_file = os.path.join(get_package_bin_dir(), gz_filename)
149
- logger.info(f"Looking for Flet bundle archive at: {tar_file}")
150
- if not os.path.exists(tar_file):
151
- tar_file = __download_flet_client(gz_filename)
152
-
153
- logger.info(f"Extracting Flet from archive to {temp_flet_dir}")
154
- temp_flet_dir.mkdir(parents=True, exist_ok=True)
155
- with tarfile.open(str(tar_file), "r:gz") as tar_arch:
156
- safe_tar_extractall(tar_arch, str(temp_flet_dir))
157
- else:
158
- logger.info(f"Flet View found in: {temp_flet_dir}")
159
-
160
- app_path = temp_flet_dir.joinpath("flet", "flet")
161
- args = [str(app_path), page_url, pid_file]
162
-
163
- flet_env = {**os.environ}
164
-
165
- if assets_dir:
166
- args.append(assets_dir)
167
-
168
- if hidden:
169
- flet_env["FLET_HIDE_WINDOW_ON_START"] = "true"
170
-
171
- return args, flet_env, pid_file
172
-
173
-
174
- def __download_flet_client(file_name):
175
- ver = flet_desktop.version.version
176
- temp_arch = Path(tempfile.gettempdir()).joinpath(file_name)
177
- logger.info(f"Downloading Flet v{ver} to {temp_arch}")
178
- flet_url = f"https://github.com/flet-dev/flet/releases/download/v{ver}/{file_name}"
179
- urllib.request.urlretrieve(flet_url, temp_arch)
180
- return str(temp_arch)
@@ -1 +0,0 @@
1
- version = "0.26.0.dev3957"