flet 0.19.0.dev2091__tar.gz → 0.19.0.dev2106__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 (59) hide show
  1. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/PKG-INFO +2 -2
  2. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/pyproject.toml +2 -2
  3. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/build.py +31 -20
  4. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/run.py +31 -2
  5. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/flutter_service_worker.js +2 -2
  6. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/index.html +1 -1
  7. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/README.md +0 -0
  8. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__init__.py +0 -0
  9. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/__init__.py +0 -0
  10. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/config.py +0 -0
  11. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/hook-flet.py +0 -0
  12. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/macos_utils.py +0 -0
  13. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/rthooks/pyi_rth_localhost_fletd.py +0 -0
  14. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/rthooks.dat +0 -0
  15. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/utils.py +0 -0
  16. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/__pyinstaller/win_utils.py +0 -0
  17. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/async_websocket_connection.py +0 -0
  18. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/auth/__init__.py +0 -0
  19. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/auth/providers/__init__.py +0 -0
  20. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/canvas/__init__.py +0 -0
  21. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/cli.py +0 -0
  22. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/base.py +0 -0
  23. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/create.py +0 -0
  24. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/options.py +0 -0
  25. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/pack.py +0 -0
  26. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/cli/commands/publish.py +0 -0
  27. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/constants.py +0 -0
  28. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/matplotlib_chart.py +0 -0
  29. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/plotly_chart.py +0 -0
  30. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/reconnecting_websocket.py +0 -0
  31. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/security.py +0 -0
  32. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/sync_websocket_connection.py +0 -0
  33. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/utils/__init__.py +0 -0
  34. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/version.py +0 -0
  35. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/.last_build_id +0 -0
  36. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/AssetManifest.bin +0 -0
  37. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/AssetManifest.bin.json +0 -0
  38. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/AssetManifest.json +0 -0
  39. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/FontManifest.json +0 -0
  40. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/NOTICES +0 -0
  41. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/fonts/MaterialIcons-Regular.otf +0 -0
  42. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/packages/window_manager/images/ic_chrome_close.png +0 -0
  43. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/packages/window_manager/images/ic_chrome_maximize.png +0 -0
  44. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/packages/window_manager/images/ic_chrome_minimize.png +0 -0
  45. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/packages/window_manager/images/ic_chrome_unmaximize.png +0 -0
  46. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/assets/shaders/ink_sparkle.frag +0 -0
  47. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/favicon.png +0 -0
  48. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/flutter.js +0 -0
  49. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/icons/apple-touch-icon-192.png +0 -0
  50. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/icons/icon-192.png +0 -0
  51. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/icons/icon-512.png +0 -0
  52. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/icons/icon-maskable-192.png +0 -0
  53. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/icons/icon-maskable-512.png +0 -0
  54. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/icons/loading-animation.png +0 -0
  55. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/main.dart.js +0 -0
  56. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/manifest.json +0 -0
  57. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/python-worker.js +0 -0
  58. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/python.js +0 -0
  59. {flet-0.19.0.dev2091 → flet-0.19.0.dev2106}/src/flet/web/version.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flet
3
- Version: 0.19.0.dev2091
3
+ Version: 0.19.0.dev2106
4
4
  Summary: Flet for Python - easily build interactive multi-platform apps in Python
5
5
  License: Apache-2.0
6
6
  Author: Appveyor Systems Inc.
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
17
  Requires-Dist: cookiecutter (>=2.4.0,<3.0.0)
18
- Requires-Dist: flet-runtime (==0.19.0.dev2091)
18
+ Requires-Dist: flet-runtime (==0.19.0.dev2106)
19
19
  Requires-Dist: packaging (>=23.1,<24.0)
20
20
  Requires-Dist: qrcode (>=7.4.2,<8.0.0)
21
21
  Requires-Dist: typing-extensions (>=4.6.2,<5.0.0) ; python_version < "3.8"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "flet"
3
- version = "0.19.0.dev2091"
3
+ version = "0.19.0.dev2106"
4
4
  description = "Flet for Python - easily build interactive multi-platform apps in Python"
5
5
  authors = ["Appveyor Systems Inc. <hello@flet.dev>"]
6
6
  license = "Apache-2.0"
@@ -16,7 +16,7 @@ repository = "https://github.com/flet-dev/flet"
16
16
  documentation = "https://flet.dev/docs"
17
17
 
18
18
  [tool.poetry.dependencies]
19
- flet-runtime = "0.19.0.dev2091"
19
+ flet-runtime = "0.19.0.dev2106"
20
20
  python = "^3.7"
21
21
  typing-extensions = { version = "^4.6.2", python = "<3.8" }
22
22
  websocket-client = "^1.5.2"
@@ -13,7 +13,7 @@ from pathlib import Path
13
13
  import yaml
14
14
  from flet.cli.commands.base import BaseCommand
15
15
  from flet_core.utils import random_string, slugify
16
- from flet_runtime.utils import copy_tree, is_windows
16
+ from flet_runtime.utils import calculate_file_hash, copy_tree, is_windows
17
17
  from rich import print
18
18
 
19
19
  if is_windows():
@@ -207,13 +207,6 @@ class Command(BaseCommand):
207
207
  default="path",
208
208
  help="URL routing strategy (web only)",
209
209
  )
210
- parser.add_argument(
211
- "--windows-tcp-port",
212
- dest="windows_tcp_port",
213
- type=int,
214
- default=63777,
215
- help="TCP port for Windows app",
216
- )
217
210
  parser.add_argument(
218
211
  "--flutter-build-args",
219
212
  dest="flutter_build_args",
@@ -261,17 +254,9 @@ class Command(BaseCommand):
261
254
  def handle(self, options: argparse.Namespace) -> None:
262
255
  from cookiecutter.main import cookiecutter
263
256
 
264
- # check if `flutter` executable is available in the path
265
- flutter_exe = shutil.which("flutter")
266
- if not flutter_exe:
267
- print("`flutter` command is not available in PATH. Install Flutter SDK.")
268
- sys.exit(1)
269
-
270
- # check if `dart` executable is available in the path
271
- dart_exe = shutil.which("dart")
272
- if not dart_exe:
273
- print("`dart` command is not available in PATH. Install Flutter SDK.")
274
- sys.exit(1)
257
+ # get `flutter` and `dart` executables from PATH
258
+ flutter_exe = self.find_flutter_batch("flutter")
259
+ dart_exe = self.find_flutter_batch("dart")
275
260
 
276
261
  target_platform = options.target_platform.lower()
277
262
  # platform check
@@ -351,7 +336,6 @@ class Command(BaseCommand):
351
336
  template_data["use_color_emoji"] = (
352
337
  "true" if options.use_color_emoji else "false"
353
338
  )
354
- template_data["windows_tcp_port"] = options.windows_tcp_port
355
339
 
356
340
  # create Flutter project from a template
357
341
  print("Creating Flutter bootstrap project...", end="")
@@ -590,6 +574,8 @@ class Command(BaseCommand):
590
574
  package_args.extend(
591
575
  [
592
576
  "--mobile",
577
+ "--platform",
578
+ "mobile",
593
579
  ]
594
580
  )
595
581
  package_args.extend(
@@ -603,6 +589,9 @@ class Command(BaseCommand):
603
589
  ]
604
590
  )
605
591
 
592
+ if self.verbose > 1:
593
+ package_args.append("--verbose")
594
+
606
595
  package_result = self.run(package_args, cwd=str(self.flutter_dir))
607
596
 
608
597
  if package_result.returncode != 0:
@@ -611,6 +600,17 @@ class Command(BaseCommand):
611
600
  if package_result.stderr:
612
601
  print(package_result.stderr)
613
602
  self.cleanup(package_result.returncode)
603
+
604
+ # make sure app/app.zip exists
605
+ app_zip_path = self.flutter_dir.joinpath("app", "app.zip")
606
+ if not os.path.exists(app_zip_path):
607
+ print("Flet app package app/app.zip was not created.")
608
+ self.cleanup(1)
609
+
610
+ # create {flutter_dir}/app/app.hash
611
+ app_hash_path = self.flutter_dir.joinpath("app", "app.zip.hash")
612
+ with open(app_hash_path, "w") as hf:
613
+ hf.write(calculate_file_hash(app_zip_path))
614
614
  print("[spring_green3]OK[/spring_green3]")
615
615
 
616
616
  # run `flutter build`
@@ -710,6 +710,17 @@ class Command(BaseCommand):
710
710
  return Path(images[0]).name
711
711
  return None
712
712
 
713
+ def find_flutter_batch(self, exe_filename: str):
714
+ batch_path = shutil.which(exe_filename)
715
+ if not batch_path:
716
+ print(
717
+ f"`{exe_filename}` command is not available in PATH. Install Flutter SDK."
718
+ )
719
+ sys.exit(1)
720
+ if is_windows() and batch_path.endswith(".file"):
721
+ return batch_path.replace(".file", ".bat")
722
+ return batch_path
723
+
713
724
  def run(self, args, cwd):
714
725
  if is_windows():
715
726
  # Source: https://stackoverflow.com/a/77374899/1435891
@@ -122,6 +122,13 @@ class Command(BaseCommand):
122
122
  default="assets",
123
123
  help="path to assets directory",
124
124
  )
125
+ parser.add_argument(
126
+ "--ignore-dirs",
127
+ dest="ignore_dirs",
128
+ type=str,
129
+ default=None,
130
+ help="directories to ignore during watch. If more than one, separate with a semicolon.",
131
+ )
125
132
 
126
133
  def handle(self, options: argparse.Namespace) -> None:
127
134
  if options.module:
@@ -159,6 +166,13 @@ class Command(BaseCommand):
159
166
  Path(os.path.dirname(script_path)).joinpath(assets_dir).resolve()
160
167
  )
161
168
 
169
+ ignore_dirs = options.ignore_dirs
170
+ if ignore_dirs:
171
+ ignore_dirs = [
172
+ str(Path(os.path.dirname(script_path)).joinpath(directory).resolve())
173
+ for directory in ignore_dirs.split(";")
174
+ ]
175
+
162
176
  my_event_handler = Handler(
163
177
  [sys.executable, "-u"]
164
178
  + ["-m"] * options.module
@@ -173,6 +187,7 @@ class Command(BaseCommand):
173
187
  options.android,
174
188
  options.hidden,
175
189
  assets_dir,
190
+ ignore_dirs if options.directory or options.recursive else None,
176
191
  )
177
192
 
178
193
  my_observer = Observer()
@@ -205,6 +220,7 @@ class Handler(FileSystemEventHandler):
205
220
  android,
206
221
  hidden,
207
222
  assets_dir,
223
+ ignore_dirs,
208
224
  ) -> None:
209
225
  super().__init__()
210
226
  self.args = args
@@ -218,6 +234,7 @@ class Handler(FileSystemEventHandler):
218
234
  self.android = android
219
235
  self.hidden = hidden
220
236
  self.assets_dir = assets_dir
237
+ self.ignore_dirs = ignore_dirs or []
221
238
  self.last_time = time.time()
222
239
  self.is_running = False
223
240
  self.fvp = None
@@ -258,9 +275,21 @@ class Handler(FileSystemEventHandler):
258
275
  th.start()
259
276
 
260
277
  def on_any_event(self, event):
278
+ is_in_ignore_dirs = False
279
+ for directory in self.ignore_dirs:
280
+ child = os.path.abspath(event.src_path)
281
+ # check if the file which triggered the reload is in the (ignored) directory
282
+ is_in_ignore_dirs = os.path.commonpath([directory]) == os.path.commonpath(
283
+ [directory, child]
284
+ )
285
+ if is_in_ignore_dirs:
286
+ break
287
+
261
288
  if (
262
- self.script_path is None or event.src_path == self.script_path
263
- ) and not event.is_directory:
289
+ not is_in_ignore_dirs
290
+ and (self.script_path is None or event.src_path == self.script_path)
291
+ and not event.is_directory
292
+ ):
264
293
  current_time = time.time()
265
294
  if (current_time - self.last_time) > 0.5 and self.is_running:
266
295
  self.last_time = current_time
@@ -34,8 +34,8 @@ const RESOURCES = {"assets/AssetManifest.json": "d9150da08bcab79647bb00a0700488d
34
34
  "canvaskit/chromium/canvaskit.wasm": "143af6ff368f9cd21c863bfa4274c406",
35
35
  "canvaskit/chromium/canvaskit.js": "0ae8bbcc58155679458a0f7a00f66873",
36
36
  "python-worker.js": "62a4865b3d41771b39660076485879be",
37
- "index.html": "152afe2af26db1bb88fe802459f5f853",
38
- "/": "152afe2af26db1bb88fe802459f5f853"};
37
+ "index.html": "8fafaaf356832fe718e222fcd93da0e5",
38
+ "/": "8fafaaf356832fe718e222fcd93da0e5"};
39
39
  // The application shell files that are downloaded before a service worker can
40
40
  // start.
41
41
  const CORE = ["main.dart.js",
@@ -37,7 +37,7 @@
37
37
 
38
38
  <script>
39
39
  // The value below is injected by flutter build, do not touch.
40
- const serviceWorkerVersion = "3694833858";
40
+ const serviceWorkerVersion = "1548393452";
41
41
  </script>
42
42
  <!-- This script adds the flutter initialization JS code -->
43
43
  <script src="flutter.js" defer></script>
File without changes