fastled 1.2.73__tar.gz → 1.2.74__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 (128) hide show
  1. {fastled-1.2.73 → fastled-1.2.74}/Dockerfile +2 -2
  2. {fastled-1.2.73 → fastled-1.2.74}/PKG-INFO +1 -1
  3. {fastled-1.2.73 → fastled-1.2.74}/compiler/compile.py +76 -32
  4. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/__init__.py +1 -1
  5. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/docker_manager.py +30 -2
  6. {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/PKG-INFO +1 -1
  7. {fastled-1.2.73 → fastled-1.2.74}/.aiderignore +0 -0
  8. {fastled-1.2.73 → fastled-1.2.74}/.dockerignore +0 -0
  9. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/build_multi_docker_image.yml +0 -0
  10. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/build_webpage.yml +0 -0
  11. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/lint.yml +0 -0
  12. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/publish_release.yml +0 -0
  13. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/template_build_docker_image.yml +0 -0
  14. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_build_exe.yml +0 -0
  15. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_macos.yml +0 -0
  16. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_ubuntu.yml +0 -0
  17. {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_win.yml +0 -0
  18. {fastled-1.2.73 → fastled-1.2.74}/.gitignore +0 -0
  19. {fastled-1.2.73 → fastled-1.2.74}/.pylintrc +0 -0
  20. {fastled-1.2.73 → fastled-1.2.74}/.vscode/launch.json +0 -0
  21. {fastled-1.2.73 → fastled-1.2.74}/.vscode/settings.json +0 -0
  22. {fastled-1.2.73 → fastled-1.2.74}/.vscode/tasks.json +0 -0
  23. {fastled-1.2.73 → fastled-1.2.74}/LICENSE +0 -0
  24. {fastled-1.2.73 → fastled-1.2.74}/MANIFEST.in +0 -0
  25. {fastled-1.2.73 → fastled-1.2.74}/README.md +0 -0
  26. {fastled-1.2.73 → fastled-1.2.74}/RELEASE.md +0 -0
  27. {fastled-1.2.73 → fastled-1.2.74}/TODO.md +0 -0
  28. {fastled-1.2.73 → fastled-1.2.74}/build_exe.py +0 -0
  29. {fastled-1.2.73 → fastled-1.2.74}/build_site.py +0 -0
  30. {fastled-1.2.73 → fastled-1.2.74}/clean +0 -0
  31. {fastled-1.2.73 → fastled-1.2.74}/compiler/CMakeLists.txt +0 -0
  32. {fastled-1.2.73 → fastled-1.2.74}/compiler/__init__.py +0 -0
  33. {fastled-1.2.73 → fastled-1.2.74}/compiler/arduino-pre-process.sh +0 -0
  34. {fastled-1.2.73 → fastled-1.2.74}/compiler/build.sh +0 -0
  35. {fastled-1.2.73 → fastled-1.2.74}/compiler/build_archive.sh +0 -0
  36. {fastled-1.2.73 → fastled-1.2.74}/compiler/build_fast.sh +0 -0
  37. {fastled-1.2.73 → fastled-1.2.74}/compiler/code_sync.py +0 -0
  38. {fastled-1.2.73 → fastled-1.2.74}/compiler/compile_lock.py +0 -0
  39. {fastled-1.2.73 → fastled-1.2.74}/compiler/entrypoint.sh +0 -0
  40. {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/100dots.html +0 -0
  41. {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/demo_threejs.html +0 -0
  42. {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/micdemo.html +0 -0
  43. {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/mp3upload.html +0 -0
  44. {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/webgl_postprocessing_unreal_bloom.html +0 -0
  45. {fastled-1.2.73 → fastled-1.2.74}/compiler/final_prewarm.sh +0 -0
  46. {fastled-1.2.73 → fastled-1.2.74}/compiler/init_runtime.py +0 -0
  47. {fastled-1.2.73 → fastled-1.2.74}/compiler/install-arduino-cli.sh +0 -0
  48. {fastled-1.2.73 → fastled-1.2.74}/compiler/libcompile/CMakeLists.txt +0 -0
  49. {fastled-1.2.73 → fastled-1.2.74}/compiler/paths.py +0 -0
  50. {fastled-1.2.73 → fastled-1.2.74}/compiler/pre-process.sh +0 -0
  51. {fastled-1.2.73 → fastled-1.2.74}/compiler/prewarm.sh +0 -0
  52. {fastled-1.2.73 → fastled-1.2.74}/compiler/process-ino.py +0 -0
  53. {fastled-1.2.73 → fastled-1.2.74}/compiler/process_extended.py +0 -0
  54. {fastled-1.2.73 → fastled-1.2.74}/compiler/pyproject.toml +0 -0
  55. {fastled-1.2.73 → fastled-1.2.74}/compiler/run.py +0 -0
  56. {fastled-1.2.73 → fastled-1.2.74}/compiler/server.py +0 -0
  57. {fastled-1.2.73 → fastled-1.2.74}/compiler/sketch_hasher.py +0 -0
  58. {fastled-1.2.73 → fastled-1.2.74}/compiler/wasm_compiler_flags.py +0 -0
  59. {fastled-1.2.73 → fastled-1.2.74}/docker-compose.yml +0 -0
  60. {fastled-1.2.73 → fastled-1.2.74}/install +0 -0
  61. {fastled-1.2.73 → fastled-1.2.74}/install_linux.sh +0 -0
  62. {fastled-1.2.73 → fastled-1.2.74}/lint +0 -0
  63. {fastled-1.2.73 → fastled-1.2.74}/pyproject.toml +0 -0
  64. {fastled-1.2.73 → fastled-1.2.74}/requirements.testing.txt +0 -0
  65. {fastled-1.2.73 → fastled-1.2.74}/setup.cfg +0 -0
  66. {fastled-1.2.73 → fastled-1.2.74}/setup.py +0 -0
  67. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/app.py +0 -0
  68. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/assets/example.txt +0 -0
  69. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/assets/localhost-key.pem +0 -0
  70. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/assets/localhost.pem +0 -0
  71. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/cli.py +0 -0
  72. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/cli_test.py +0 -0
  73. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/client_server.py +0 -0
  74. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/compile_server.py +0 -0
  75. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/compile_server_impl.py +0 -0
  76. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/filewatcher.py +0 -0
  77. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/interactive_srcs.py +0 -0
  78. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/keyboard.py +0 -0
  79. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/keyz.py +0 -0
  80. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/live_client.py +0 -0
  81. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/open_browser.py +0 -0
  82. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/parse_args.py +0 -0
  83. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/paths.py +0 -0
  84. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/project_init.py +0 -0
  85. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/select_sketch_directory.py +0 -0
  86. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_fastapi.py +0 -0
  87. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_fastapi_cli.py +0 -0
  88. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_flask.py +0 -0
  89. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_start.py +0 -0
  90. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/settings.py +0 -0
  91. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/site/build.py +0 -0
  92. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/site/examples.py +0 -0
  93. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/sketch.py +0 -0
  94. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/spinner.py +0 -0
  95. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/string_diff.py +0 -0
  96. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/test/can_run_local_docker_tests.py +0 -0
  97. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/test/examples.py +0 -0
  98. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/types.py +0 -0
  99. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/util.py +0 -0
  100. {fastled-1.2.73 → fastled-1.2.74}/src/fastled/web_compile.py +0 -0
  101. {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/SOURCES.txt +0 -0
  102. {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/dependency_links.txt +0 -0
  103. {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/entry_points.txt +0 -0
  104. {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/requires.txt +0 -0
  105. {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/top_level.txt +0 -0
  106. {fastled-1.2.73 → fastled-1.2.74}/test +0 -0
  107. {fastled-1.2.73 → fastled-1.2.74}/tests/integration/test_build_examples.py +0 -0
  108. {fastled-1.2.73 → fastled-1.2.74}/tests/integration/test_examples.py +0 -0
  109. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/html/index.html +0 -0
  110. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_api.py +0 -0
  111. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_bad_ino.py +0 -0
  112. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_cli.py +0 -0
  113. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_compile_server.py +0 -0
  114. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_docker_linux_on_windows.py +0 -0
  115. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_embedded_data.py +0 -0
  116. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_filechanger.py +0 -0
  117. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_http_server.py +0 -0
  118. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/bad/bad.ino +0 -0
  119. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/bad_platformio/bad_platformio.ino +0 -0
  120. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/bad_platformio/platformio.ini +0 -0
  121. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/embedded/data/bigdata.dat +0 -0
  122. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/embedded/wasm.ino +0 -0
  123. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/wasm/wasm.ino +0 -0
  124. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_project_init.py +0 -0
  125. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_server_and_client_seperatly.py +0 -0
  126. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_string_diff.py +0 -0
  127. {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_webcompile.py +0 -0
  128. {fastled-1.2.73 → fastled-1.2.74}/upload_package.sh +0 -0
@@ -41,8 +41,8 @@
41
41
 
42
42
  # This will be set to arm64 to support MacOS M1+ devices (and Linux-based arm64 devices)
43
43
  ARG PLATFORM_TAG=""
44
- # ARG EMSDK_VERSION_TAG="4.0.4"
45
- ARG EMSDK_VERSION_TAG="3.1.70"
44
+ ARG EMSDK_VERSION_TAG="4.0.8"
45
+ # ARG EMSDK_VERSION_TAG="3.1.70"
46
46
 
47
47
  # Use only Emscripten base image
48
48
  FROM emscripten/emsdk:${EMSDK_VERSION_TAG}${PLATFORM_TAG}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.2.73
3
+ Version: 1.2.74
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
@@ -89,6 +89,33 @@ def copy_files(src_dir: Path, js_src: Path) -> None:
89
89
  shutil.copy2(item, js_src / item.name)
90
90
 
91
91
 
92
+ def _banner(msg: str) -> str:
93
+ """
94
+ Create a banner for the given message.
95
+ Example:
96
+ msg = "Hello, World!"
97
+ print -> "#################"
98
+ "# Hello, World! #"
99
+ "#################"
100
+ """
101
+ lines = msg.split("\n")
102
+ # Find the width of the widest line
103
+ max_width = max(len(line) for line in lines)
104
+ width = max_width + 4 # Add 4 for "# " and " #"
105
+
106
+ # Create the top border
107
+ banner = "\n" + "#" * width + "\n"
108
+
109
+ # Add each line with proper padding
110
+ for line in lines:
111
+ padding = max_width - len(line)
112
+ banner += f"# {line}{' ' * padding} #\n"
113
+
114
+ # Add the bottom border
115
+ banner += "#" * width + "\n"
116
+ return banner
117
+
118
+
92
119
  def compile(
93
120
  compiler_root: Path, build_mode: BuildMode, auto_clean: bool, no_platformio: bool
94
121
  ) -> int:
@@ -96,7 +123,7 @@ def compile(
96
123
  max_attempts = 1
97
124
  env = os.environ.copy()
98
125
  env["BUILD_MODE"] = build_mode.name
99
- print(f"Build mode: {build_mode.name}")
126
+ print(_banner(f"WASM is building in mode: {build_mode.name}"))
100
127
  cmd_list: list[str] = []
101
128
  if no_platformio:
102
129
  # execute build_archive.syh
@@ -113,6 +140,7 @@ def compile(
113
140
  cmd_list.append("-v")
114
141
 
115
142
  def _open_process(cmd_list: list[str] = cmd_list) -> subprocess.Popen:
143
+ print(_banner("Running command:\n " + subprocess.list2cmdline(cmd_list)))
116
144
  out = subprocess.Popen(
117
145
  cmd_list,
118
146
  cwd=compiler_root,
@@ -138,7 +166,7 @@ def compile(
138
166
  relative_output = _make_timestamps_relative("\n".join(output_lines))
139
167
  print(relative_output)
140
168
  if process.returncode == 0:
141
- print(f"Compilation successful on attempt {attempt}")
169
+ print(_banner(f"Compilation successful on attempt {attempt}"))
142
170
  return 0
143
171
  else:
144
172
  raise subprocess.CalledProcessError(process.returncode, ["pio", "run"])
@@ -199,7 +227,7 @@ def transform_to_cpp(src_dir: Path) -> None:
199
227
  def insert_headers(
200
228
  src_dir: Path, exclusion_folders: List[Path], file_extensions: List[str]
201
229
  ) -> None:
202
- print("Inserting headers in source files...")
230
+ print(_banner("Inserting headers in source files..."))
203
231
  for file in src_dir.rglob("*"):
204
232
  if (
205
233
  file.suffix in file_extensions
@@ -213,7 +241,7 @@ def process_ino_files(src_dir: Path) -> None:
213
241
  transform_to_cpp(src_dir)
214
242
  exclusion_folders: List[Path] = []
215
243
  insert_headers(src_dir, exclusion_folders, _FILE_EXTENSIONS)
216
- print("Transform to cpp and insert header operations completed.")
244
+ print(_banner("Transform to cpp and insert header operations completed."))
217
245
 
218
246
 
219
247
  def _make_timestamps_relative(stdout: str) -> str:
@@ -381,7 +409,7 @@ def process_compile(
381
409
  if rtn != 0:
382
410
  print("Compilation failed.")
383
411
  raise RuntimeError("Compilation failed.")
384
- print("Compilation successful.")
412
+ print(_banner("Compilation successful."))
385
413
 
386
414
 
387
415
  def cleanup(args: Args, js_src: Path) -> None:
@@ -422,9 +450,15 @@ def run(args: Args) -> int:
422
450
  print(f"Using mapped directory: {args.mapped_dir}")
423
451
 
424
452
  if args.profile:
425
- print("Enabling profiling for compilation.")
453
+ print(_banner("Enabling profiling for compilation."))
426
454
  # Profile linking
427
455
  os.environ["EMPROFILE"] = "2"
456
+ else:
457
+ print(
458
+ _banner(
459
+ "Build process profiling is disabled\nuse --profile to get metrics on how long the build process took."
460
+ )
461
+ )
428
462
 
429
463
  try:
430
464
 
@@ -477,6 +511,8 @@ def run(args: Args) -> int:
477
511
  return 1
478
512
 
479
513
  def _get_build_dir_platformio() -> Path:
514
+ # First assert there is only one build artifact directory.
515
+ # The name is dynamic: it's your sketch folder name.
480
516
  build_dirs = [d for d in PIO_BUILD_DIR.iterdir() if d.is_dir()]
481
517
  if len(build_dirs) != 1:
482
518
  raise RuntimeError(
@@ -493,16 +529,17 @@ def run(args: Args) -> int:
493
529
  else:
494
530
  build_dir = _get_build_dir_platformio()
495
531
 
496
- print("Copying output files...")
532
+ print(_banner("Copying output files..."))
497
533
  out_dir: Path = src_dir / _FASTLED_OUTPUT_DIR_NAME
498
534
  out_dir.mkdir(parents=True, exist_ok=True)
499
535
 
500
- for file in ["fastled.js", "fastled.wasm"]:
501
- _src = build_dir / file
502
- _dst = out_dir / file
503
- print(f"Copying {_src} to {_dst}")
504
- shutil.copy2(_src, _dst)
536
+ # Copy all fastled.* build artifacts
537
+ for file_path in build_dir.glob("fastled.*"):
538
+ _dst = out_dir / file_path.name
539
+ print(f"Copying {file_path} to {_dst}")
540
+ shutil.copy2(file_path, _dst)
505
541
 
542
+ # Copy static files.
506
543
  print(f"Copying {_INDEX_HTML_SRC} to output directory")
507
544
  shutil.copy2(_INDEX_HTML_SRC, out_dir / "index.html")
508
545
  print(f"Copying {_INDEX_CSS_SRC} to output directory")
@@ -510,23 +547,30 @@ def run(args: Args) -> int:
510
547
 
511
548
  # copy all js files in _FASTLED_COMPILER_DIR to output directory
512
549
  Path(out_dir / "modules").mkdir(parents=True, exist_ok=True)
513
- for _file in _FASTLED_MODULES_DIR.iterdir():
514
- if _file.suffix == ".js":
515
- print(f"Copying {_file} to output directory")
516
- shutil.copy2(_file, out_dir / "modules" / _file.name)
517
-
518
- fastled_js_mem = build_dir / "fastled.js.mem"
519
- fastled_wasm_map = build_dir / "fastled.wasm.map"
520
- fastled_js_symbols = build_dir / "fastled.js.symbols"
521
- if fastled_js_mem.exists():
522
- print(f"Copying {fastled_js_mem} to output directory")
523
- shutil.copy2(fastled_js_mem, out_dir / fastled_js_mem.name)
524
- if fastled_wasm_map.exists():
525
- print(f"Copying {fastled_wasm_map} to output directory")
526
- shutil.copy2(fastled_wasm_map, out_dir / fastled_wasm_map.name)
527
- if fastled_js_symbols.exists():
528
- print(f"Copying {fastled_js_symbols} to output directory")
529
- shutil.copy2(fastled_js_symbols, out_dir / fastled_js_symbols.name)
550
+
551
+ # Recursively copy all non-hidden files and directories
552
+ print(f"Copying files from {_FASTLED_MODULES_DIR} to {out_dir / 'modules'}")
553
+ shutil.copytree(
554
+ src=_FASTLED_MODULES_DIR,
555
+ dst=out_dir / "modules",
556
+ dirs_exist_ok=True,
557
+ ignore=shutil.ignore_patterns(".*"),
558
+ ) # Ignore hidden files
559
+
560
+ # Now long needed since now we do glob copy.
561
+ # fastled_js_mem = build_dir / "fastled.js.mem"
562
+ # fastled_wasm_map = build_dir / "fastled.wasm.map"
563
+ # fastled_js_symbols = build_dir / "fastled.js.symbols"
564
+ # if fastled_js_mem.exists():
565
+ # print(f"Copying {fastled_js_mem} to output directory")
566
+ # shutil.copy2(fastled_js_mem, out_dir / fastled_js_mem.name)
567
+ # if fastled_wasm_map.exists():
568
+ # print(f"Copying {fastled_wasm_map} to output directory")
569
+ # shutil.copy2(fastled_wasm_map, out_dir / fastled_wasm_map.name)
570
+ # if fastled_js_symbols.exists():
571
+ # print(f"Copying {fastled_js_symbols} to output directory")
572
+ # shutil.copy2(fastled_js_symbols, out_dir / fastled_js_symbols.name)
573
+
530
574
  print("Copying index.js to output directory")
531
575
  shutil.copy2(_INDEX_JS_SRC, out_dir / "index.js")
532
576
  optional_input_data_dir = src_dir / "data"
@@ -546,7 +590,7 @@ def run(args: Args) -> int:
546
590
  if _file.is_file(): # Only copy files, not directories
547
591
  filename: str = _file.name
548
592
  if filename.endswith(".embedded.json"):
549
- print("Embedding data file")
593
+ print(_banner("Embedding data file"))
550
594
  filename_no_embedded = filename.replace(
551
595
  ".embedded.json", ""
552
596
  )
@@ -577,13 +621,13 @@ def run(args: Args) -> int:
577
621
  )
578
622
 
579
623
  # Write manifest file even if empty
580
- print("Writing manifest files.json")
624
+ print(_banner("Writing manifest files.json"))
581
625
  manifest_json_str = json.dumps(manifest, indent=2, sort_keys=True)
582
626
  with open(out_dir / "files.json", "w") as f:
583
627
  f.write(manifest_json_str)
584
628
  cleanup(args, SKETCH_SRC)
585
629
 
586
- print("Compilation process completed successfully")
630
+ print(_banner("Compilation process completed successfully"))
587
631
  return 0
588
632
 
589
633
  except Exception as e:
@@ -13,7 +13,7 @@ from .types import BuildMode, CompileResult, CompileServerError
13
13
  # IMPORTANT! There's a bug in github which will REJECT any version update
14
14
  # that has any other change in the repo. Please bump the version as the
15
15
  # ONLY change in a commit, or else the pypi update and the release will fail.
16
- __version__ = "1.2.73"
16
+ __version__ = "1.2.74"
17
17
 
18
18
  DOCKER_FILE = (
19
19
  "https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/Dockerfile"
@@ -99,8 +99,35 @@ class Volume:
99
99
  return volumes
100
100
 
101
101
 
102
+ class PrintFilter:
103
+ """Provides filtering for text output so that source files match up with local names."""
104
+
105
+ def __init__(self) -> None:
106
+ pass
107
+
108
+ def _remove_ino_cpp(self, text: str) -> str:
109
+ return text.replace(".ino.cpp", ".ino")
110
+
111
+ def _filter_all(self, text: str) -> str:
112
+ text = self._remove_ino_cpp(text)
113
+ return text
114
+
115
+ def print(self, text: str | bytes) -> None:
116
+ """Prints the text to the console."""
117
+ if isinstance(text, bytes):
118
+ text = text.decode("utf-8")
119
+ text = self._filter_all(text)
120
+ print(text, end="")
121
+
122
+
102
123
  class RunningContainer:
103
- def __init__(self, container, first_run=False):
124
+ def __init__(
125
+ self,
126
+ container: Container,
127
+ first_run: bool = False,
128
+ filter: PrintFilter | None = None,
129
+ ) -> None:
130
+ self.filter = filter or PrintFilter()
104
131
  self.container = container
105
132
  self.first_run = first_run
106
133
  self.running = True
@@ -117,7 +144,8 @@ class RunningContainer:
117
144
  for log in self.container.logs(
118
145
  follow=False, since=from_date, until=to_date, stream=True
119
146
  ):
120
- print(log.decode("utf-8"), end="")
147
+ # print(log.decode("utf-8"), end="")
148
+ self.filter.print(log)
121
149
  time.sleep(0.1)
122
150
  from_date = to_date
123
151
  to_date = _utc_now_no_tz()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.2.73
3
+ Version: 1.2.74
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes