fastled 1.4.15__tar.gz → 1.4.17__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 (132) hide show
  1. {fastled-1.4.15 → fastled-1.4.17}/PKG-INFO +1 -1
  2. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/__version__.py +1 -1
  3. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/live_client.py +3 -1
  4. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/playwright/playwright_browser.py +24 -2
  5. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/settings.py +8 -7
  6. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/web_compile.py +16 -2
  7. {fastled-1.4.15 → fastled-1.4.17}/src/fastled.egg-info/PKG-INFO +1 -1
  8. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_cli.py +3 -2
  9. {fastled-1.4.15 → fastled-1.4.17}/.aiderignore +0 -0
  10. {fastled-1.4.15 → fastled-1.4.17}/.cursorrules +0 -0
  11. {fastled-1.4.15 → fastled-1.4.17}/.dockerignore +0 -0
  12. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/build_multi_docker_image.yml +0 -0
  13. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/build_webpage.yml +0 -0
  14. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/lint.yml +0 -0
  15. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/publish_release.yml +0 -0
  16. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/template_build_docker_image.yml +0 -0
  17. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/test_build_exe.yml +0 -0
  18. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/test_macos.yml +0 -0
  19. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/test_ubuntu.yml +0 -0
  20. {fastled-1.4.15 → fastled-1.4.17}/.github/workflows/test_win.yml +0 -0
  21. {fastled-1.4.15 → fastled-1.4.17}/.gitignore +0 -0
  22. {fastled-1.4.15 → fastled-1.4.17}/.pylintrc +0 -0
  23. {fastled-1.4.15 → fastled-1.4.17}/.vscode/launch.json +0 -0
  24. {fastled-1.4.15 → fastled-1.4.17}/.vscode/settings.json +0 -0
  25. {fastled-1.4.15 → fastled-1.4.17}/.vscode/tasks.json +0 -0
  26. {fastled-1.4.15 → fastled-1.4.17}/DEBUGGER.md +0 -0
  27. {fastled-1.4.15 → fastled-1.4.17}/Dockerfile +0 -0
  28. {fastled-1.4.15 → fastled-1.4.17}/FAQ.md +0 -0
  29. {fastled-1.4.15 → fastled-1.4.17}/LICENSE +0 -0
  30. {fastled-1.4.15 → fastled-1.4.17}/MANIFEST.in +0 -0
  31. {fastled-1.4.15 → fastled-1.4.17}/README.md +0 -0
  32. {fastled-1.4.15 → fastled-1.4.17}/RELEASE.md +0 -0
  33. {fastled-1.4.15 → fastled-1.4.17}/TODO.md +0 -0
  34. {fastled-1.4.15 → fastled-1.4.17}/build_exe.py +0 -0
  35. {fastled-1.4.15 → fastled-1.4.17}/build_local_docker.py +0 -0
  36. {fastled-1.4.15 → fastled-1.4.17}/build_site.py +0 -0
  37. {fastled-1.4.15 → fastled-1.4.17}/clean +0 -0
  38. {fastled-1.4.15 → fastled-1.4.17}/compiler/debug.sh +0 -0
  39. {fastled-1.4.15 → fastled-1.4.17}/compiler/run.py +0 -0
  40. {fastled-1.4.15 → fastled-1.4.17}/demo/100dots.html +0 -0
  41. {fastled-1.4.15 → fastled-1.4.17}/demo/demo_threejs.html +0 -0
  42. {fastled-1.4.15 → fastled-1.4.17}/demo/micdemo.html +0 -0
  43. {fastled-1.4.15 → fastled-1.4.17}/demo/mp3upload.html +0 -0
  44. {fastled-1.4.15 → fastled-1.4.17}/demo/webgl_postprocessing_unreal_bloom.html +0 -0
  45. {fastled-1.4.15 → fastled-1.4.17}/docker-compose.yml +0 -0
  46. {fastled-1.4.15 → fastled-1.4.17}/entrypoint.sh +0 -0
  47. {fastled-1.4.15 → fastled-1.4.17}/install +0 -0
  48. {fastled-1.4.15 → fastled-1.4.17}/install_linux.sh +0 -0
  49. {fastled-1.4.15 → fastled-1.4.17}/lint +0 -0
  50. {fastled-1.4.15 → fastled-1.4.17}/pyproject.toml +0 -0
  51. {fastled-1.4.15 → fastled-1.4.17}/requirements.docker.txt +0 -0
  52. {fastled-1.4.15 → fastled-1.4.17}/requirements.testing.txt +0 -0
  53. {fastled-1.4.15 → fastled-1.4.17}/setup.cfg +0 -0
  54. {fastled-1.4.15 → fastled-1.4.17}/setup.py +0 -0
  55. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/__init__.py +0 -0
  56. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/__main__.py +0 -0
  57. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/app.py +0 -0
  58. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/args.py +0 -0
  59. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/assets/example.txt +0 -0
  60. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/assets/localhost-key.pem +0 -0
  61. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/assets/localhost.pem +0 -0
  62. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/cli.py +0 -0
  63. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/cli_test.py +0 -0
  64. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/cli_test_interactive.py +0 -0
  65. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/client_server.py +0 -0
  66. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/compile_server.py +0 -0
  67. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/compile_server_impl.py +0 -0
  68. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/docker_manager.py +0 -0
  69. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/filewatcher.py +0 -0
  70. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/find_good_connection.py +0 -0
  71. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/interruptible_http.py +0 -0
  72. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/keyboard.py +0 -0
  73. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/keyz.py +0 -0
  74. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/open_browser.py +0 -0
  75. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/parse_args.py +0 -0
  76. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/paths.py +0 -0
  77. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/playwright/chrome_extension_downloader.py +0 -0
  78. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/print_filter.py +0 -0
  79. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/project_init.py +0 -0
  80. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/select_sketch_directory.py +0 -0
  81. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/server_flask.py +0 -0
  82. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/server_start.py +0 -0
  83. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/site/build.py +0 -0
  84. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/site/examples.py +0 -0
  85. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/sketch.py +0 -0
  86. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/spinner.py +0 -0
  87. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/string_diff.py +0 -0
  88. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/test/can_run_local_docker_tests.py +0 -0
  89. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/test/examples.py +0 -0
  90. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/types.py +0 -0
  91. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/util.py +0 -0
  92. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/version.py +0 -0
  93. {fastled-1.4.15 → fastled-1.4.17}/src/fastled/zip_files.py +0 -0
  94. {fastled-1.4.15 → fastled-1.4.17}/src/fastled.egg-info/SOURCES.txt +0 -0
  95. {fastled-1.4.15 → fastled-1.4.17}/src/fastled.egg-info/dependency_links.txt +0 -0
  96. {fastled-1.4.15 → fastled-1.4.17}/src/fastled.egg-info/entry_points.txt +0 -0
  97. {fastled-1.4.15 → fastled-1.4.17}/src/fastled.egg-info/requires.txt +0 -0
  98. {fastled-1.4.15 → fastled-1.4.17}/src/fastled.egg-info/top_level.txt +0 -0
  99. {fastled-1.4.15 → fastled-1.4.17}/test +0 -0
  100. {fastled-1.4.15 → fastled-1.4.17}/tests/integration/test_build_examples.py +0 -0
  101. {fastled-1.4.15 → fastled-1.4.17}/tests/integration/test_examples.py +0 -0
  102. {fastled-1.4.15 → fastled-1.4.17}/tests/integration/test_libcompile.py +0 -0
  103. {fastled-1.4.15 → fastled-1.4.17}/tests/integration/test_playwright_integration.py +0 -0
  104. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/html/index.html +0 -0
  105. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_api.py +0 -0
  106. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_bad_ino.py +0 -0
  107. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_banner_string.py +0 -0
  108. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_cli_no_platformio.py +0 -0
  109. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_compile_server.py +0 -0
  110. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_debug_fetch_source_files.py +0 -0
  111. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_docker_linux_on_windows.py +0 -0
  112. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_embedded_data.py +0 -0
  113. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_filechanger.py +0 -0
  114. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_flask_headers.py +0 -0
  115. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_http_server.py +0 -0
  116. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_ino/bad/bad.ino +0 -0
  117. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_ino/bad_platformio/bad_platformio.ino +0 -0
  118. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_ino/bad_platformio/platformio.ini +0 -0
  119. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_ino/embedded/data/bigdata.dat +0 -0
  120. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_ino/embedded/wasm.ino +0 -0
  121. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_ino/wasm/wasm.ino +0 -0
  122. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_manual_api_invocation.py +0 -0
  123. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_no_platformio_compile.py +0 -0
  124. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_project_init.py +0 -0
  125. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_server_and_client_seperatly.py +0 -0
  126. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_session_compile.py +0 -0
  127. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_string_diff.py +0 -0
  128. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_string_diff_comprehensive.py +0 -0
  129. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_version.py +0 -0
  130. {fastled-1.4.15 → fastled-1.4.17}/tests/unit/test_webcompile.py +0 -0
  131. {fastled-1.4.15 → fastled-1.4.17}/upload_package.sh +0 -0
  132. {fastled-1.4.15 → fastled-1.4.17}/vscode-plugin/readme +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.4.15
3
+ Version: 1.4.17
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
@@ -1,6 +1,6 @@
1
1
  # IMPORTANT! There's a bug in github which will REJECT any version update
2
2
  # that has any other change in the repo. Please bump the version as the
3
3
  # ONLY change in a commit, or else the pypi update and the release will fail.
4
- __version__ = "1.4.15"
4
+ __version__ = "1.4.17"
5
5
 
6
6
  __version_url_latest__ = "https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/src/fastled/__version__.py"
@@ -60,13 +60,15 @@ class LiveClient:
60
60
 
61
61
  def url(self) -> str:
62
62
  """Get the URL of the server."""
63
+ from fastled.settings import SERVER_PORT
64
+
63
65
  if isinstance(self.host, CompileServer):
64
66
  return self.host.url()
65
67
  if self.host is None:
66
68
  import warnings
67
69
 
68
70
  warnings.warn("TODO: use the actual host.")
69
- return "http://localhost:9021"
71
+ return f"http://localhost:{SERVER_PORT}"
70
72
  return self.host
71
73
 
72
74
  @property
@@ -369,8 +369,27 @@ class PlaywrightBrowser:
369
369
  print(f"[PYTHON] Could not get browser info: {e}")
370
370
 
371
371
  except Exception as e:
372
- print(f"[PYTHON] Error in browser tracking: {e}")
373
- continue
372
+ error_message = str(e)
373
+ # Check if the error indicates the browser/page has been closed
374
+ if any(
375
+ keyword in error_message.lower()
376
+ for keyword in [
377
+ "target page",
378
+ "context",
379
+ "browser has been closed",
380
+ "page.evaluate",
381
+ "browser closed",
382
+ "target closed",
383
+ ]
384
+ ):
385
+ print(
386
+ "[PYTHON] Browser has been closed, shutting down gracefully..."
387
+ )
388
+ self._should_exit.set()
389
+ break
390
+ else:
391
+ print(f"[PYTHON] Error in browser tracking: {e}")
392
+ continue
374
393
 
375
394
  async def wait_for_close(self) -> None:
376
395
  """Wait for the browser to be closed."""
@@ -391,6 +410,9 @@ class PlaywrightBrowser:
391
410
 
392
411
  async def close(self) -> None:
393
412
  """Close the Playwright browser."""
413
+ # Signal all tracking loops to exit
414
+ self._should_exit.set()
415
+
394
416
  if self.page:
395
417
  await self.page.close()
396
418
  self.page = None
@@ -8,6 +8,11 @@ IS_ARM: bool = "arm" in MACHINE or "aarch64" in MACHINE
8
8
  PLATFORM_TAG: str = "-arm64" if IS_ARM else ""
9
9
 
10
10
 
11
+ def _is_running_under_github_actions() -> bool:
12
+ """Detect if we're running under github actions."""
13
+ return "GITHUB_ACTIONS" in os.environ
14
+
15
+
11
16
  def _is_running_under_pytest() -> bool:
12
17
  """Detect if we're running under pytest."""
13
18
  # Check if pytest is in the loaded modules
@@ -25,7 +30,7 @@ def _get_container_name() -> str:
25
30
  """Get the appropriate container name based on runtime context."""
26
31
  base_name = "fastled-wasm-container"
27
32
 
28
- if _is_running_under_pytest():
33
+ if not _is_running_under_github_actions() and _is_running_under_pytest():
29
34
  # Use test container name when running under pytest
30
35
  return f"{base_name}-test{PLATFORM_TAG}"
31
36
  else:
@@ -35,7 +40,7 @@ def _get_container_name() -> str:
35
40
 
36
41
  def _get_server_port() -> int:
37
42
  """Get the appropriate server port based on runtime context."""
38
- if _is_running_under_pytest():
43
+ if not _is_running_under_github_actions() and _is_running_under_pytest():
39
44
  # Use test port when running under pytest to avoid conflicts
40
45
  return 9022
41
46
  else:
@@ -48,11 +53,7 @@ DEFAULT_URL = str(os.environ.get("FASTLED_URL", "https://fastled.onrender.com"))
48
53
  SERVER_PORT = _get_server_port()
49
54
 
50
55
  IMAGE_NAME = "niteris/fastled-wasm"
51
- DEFAULT_CONTAINER_NAME = (
52
- "fastled-wasm-container-test"
53
- if _is_running_under_pytest()
54
- else "fastled-wasm-container"
55
- )
56
+ DEFAULT_CONTAINER_NAME = _get_container_name()
56
57
  # IMAGE_TAG = "latest"
57
58
 
58
59
  DOCKER_FILE = (
@@ -317,8 +317,22 @@ def web_compile(
317
317
  )
318
318
  if has_embedded_status:
319
319
  if embedded_status is not None and embedded_status != 200:
320
- print(
321
- f"Warning: libfastled compilation failed with embedded status {embedded_status}"
320
+ msg = f"Warning: libfastled compilation failed with embedded status {embedded_status}"
321
+ # this is a critical error
322
+ stdout = libfastled_response.content
323
+ if stdout is not None:
324
+ stdout = (
325
+ stdout.decode("utf-8", errors="replace")
326
+ + "\n"
327
+ + msg
328
+ )
329
+ else:
330
+ stdout = msg
331
+ return CompileResult(
332
+ success=False,
333
+ stdout=msg,
334
+ hash_value=None,
335
+ zip_bytes=b"",
322
336
  )
323
337
  # Continue with sketch compilation even if libfastled fails
324
338
  elif embedded_status is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.4.15
3
+ Version: 1.4.17
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
@@ -24,12 +24,13 @@ class MainTester(unittest.TestCase):
24
24
  COMMAND,
25
25
  shell=True,
26
26
  capture_output=True,
27
- text=True,
28
27
  check=False,
29
28
  )
30
29
  ok = cp.returncode == 0
31
30
  if not ok:
32
- error_msg = "stdout:\n" + cp.stdout + "\nstderr:\n" + cp.stderr
31
+ stdout = cp.stdout.decode("utf-8", errors="replace")
32
+ stderr = cp.stderr.decode("utf-8", errors="replace")
33
+ error_msg = "stdout:\n" + stdout + "\nstderr:\n" + stderr
33
34
  # self.assertEqual(0, cp.returncode, "Command failed: " + error_msg)
34
35
  self.fail(f"Command failed with return code {cp.returncode}:\n{error_msg}")
35
36
 
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes