fastled 1.4.5__tar.gz → 1.4.7__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.
- {fastled-1.4.5 → fastled-1.4.7}/PKG-INFO +1 -1
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/__version__.py +1 -1
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/playwright_browser.py +70 -22
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled.egg-info/PKG-INFO +1 -1
- {fastled-1.4.5 → fastled-1.4.7}/.aiderignore +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.cursorrules +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.dockerignore +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/build_multi_docker_image.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/build_webpage.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/lint.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/publish_release.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/template_build_docker_image.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/test_build_exe.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/test_macos.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/test_ubuntu.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.github/workflows/test_win.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.gitignore +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.pylintrc +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.vscode/launch.json +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.vscode/settings.json +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/.vscode/tasks.json +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/DEBUGGER.md +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/Dockerfile +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/FAQ.md +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/LICENSE +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/MANIFEST.in +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/README.md +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/RELEASE.md +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/TODO.md +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/build_exe.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/build_local_docker.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/build_site.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/clean +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/compiler/debug.sh +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/compiler/run.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/demo/100dots.html +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/demo/demo_threejs.html +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/demo/micdemo.html +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/demo/mp3upload.html +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/demo/webgl_postprocessing_unreal_bloom.html +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/docker-compose.yml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/entrypoint.sh +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/install +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/install_linux.sh +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/lint +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/pyproject.toml +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/requirements.docker.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/requirements.testing.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/setup.cfg +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/setup.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/__init__.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/__main__.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/app.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/args.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/assets/example.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/assets/localhost-key.pem +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/assets/localhost.pem +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/cli.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/cli_test.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/cli_test_interactive.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/client_server.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/compile_server.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/compile_server_impl.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/docker_manager.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/filewatcher.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/find_good_connection.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/keyboard.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/keyz.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/live_client.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/open_browser.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/parse_args.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/paths.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/print_filter.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/project_init.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/select_sketch_directory.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/server_flask.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/server_start.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/settings.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/site/build.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/site/examples.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/sketch.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/spinner.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/string_diff.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/test/can_run_local_docker_tests.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/test/examples.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/types.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/util.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/version.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/web_compile.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled/zip_files.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled.egg-info/SOURCES.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled.egg-info/dependency_links.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled.egg-info/entry_points.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled.egg-info/requires.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/src/fastled.egg-info/top_level.txt +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/test +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/integration/test_build_examples.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/integration/test_examples.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/integration/test_libcompile.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/integration/test_playwright_integration.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/html/index.html +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_api.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_bad_ino.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_banner_string.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_cli.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_cli_no_platformio.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_compile_server.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_debug_fetch_source_files.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_docker_linux_on_windows.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_embedded_data.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_filechanger.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_flask_headers.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_http_server.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_ino/bad/bad.ino +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_ino/bad_platformio/bad_platformio.ino +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_ino/bad_platformio/platformio.ini +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_ino/embedded/data/bigdata.dat +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_ino/embedded/wasm.ino +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_ino/wasm/wasm.ino +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_manual_api_invocation.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_no_platformio_compile.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_project_init.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_server_and_client_seperatly.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_session_compile.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_string_diff.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_string_diff_comprehensive.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_version.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/tests/unit/test_webcompile.py +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/upload_package.sh +0 -0
- {fastled-1.4.5 → fastled-1.4.7}/vscode-plugin/readme +0 -0
@@ -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.
|
4
|
+
__version__ = "1.4.7"
|
5
5
|
|
6
6
|
__version_url_latest__ = "https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/src/fastled/__version__.py"
|
@@ -17,7 +17,6 @@ from typing import Any
|
|
17
17
|
# Set custom Playwright browser installation path
|
18
18
|
PLAYWRIGHT_DIR = Path.home() / ".fastled" / "playwright"
|
19
19
|
PLAYWRIGHT_DIR.mkdir(parents=True, exist_ok=True)
|
20
|
-
os.environ["PLAYWRIGHT_BROWSERS_PATH"] = str(PLAYWRIGHT_DIR)
|
21
20
|
|
22
21
|
try:
|
23
22
|
from playwright.async_api import Browser, Page, async_playwright
|
@@ -35,6 +34,36 @@ def is_playwright_available() -> bool:
|
|
35
34
|
return PLAYWRIGHT_AVAILABLE
|
36
35
|
|
37
36
|
|
37
|
+
def get_chromium_executable_path() -> str | None:
|
38
|
+
"""Get the path to the custom Chromium executable if it exists."""
|
39
|
+
import glob
|
40
|
+
import platform
|
41
|
+
|
42
|
+
playwright_dir = PLAYWRIGHT_DIR
|
43
|
+
|
44
|
+
if platform.system() == "Windows":
|
45
|
+
chromium_pattern = str(
|
46
|
+
playwright_dir / "chromium-*" / "chrome-win" / "chrome.exe"
|
47
|
+
)
|
48
|
+
elif platform.system() == "Darwin": # macOS
|
49
|
+
chromium_pattern = str(
|
50
|
+
playwright_dir
|
51
|
+
/ "chromium-*"
|
52
|
+
/ "chrome-mac"
|
53
|
+
/ "Chromium.app"
|
54
|
+
/ "Contents"
|
55
|
+
/ "MacOS"
|
56
|
+
/ "Chromium"
|
57
|
+
)
|
58
|
+
else: # Linux
|
59
|
+
chromium_pattern = str(
|
60
|
+
playwright_dir / "chromium-*" / "chrome-linux" / "chrome"
|
61
|
+
)
|
62
|
+
|
63
|
+
matches = glob.glob(chromium_pattern)
|
64
|
+
return matches[0] if matches else None
|
65
|
+
|
66
|
+
|
38
67
|
class PlaywrightBrowser:
|
39
68
|
"""Playwright browser manager for FastLED sketches."""
|
40
69
|
|
@@ -113,14 +142,25 @@ class PlaywrightBrowser:
|
|
113
142
|
|
114
143
|
self.playwright = async_playwright()
|
115
144
|
playwright = await self.playwright.start()
|
116
|
-
|
117
|
-
|
118
|
-
|
145
|
+
|
146
|
+
# Get custom Chromium executable path if available
|
147
|
+
executable_path = get_chromium_executable_path()
|
148
|
+
launch_kwargs = {
|
149
|
+
"headless": self.headless,
|
150
|
+
"args": [
|
119
151
|
"--disable-dev-shm-usage",
|
120
152
|
"--disable-web-security",
|
121
153
|
"--allow-running-insecure-content",
|
122
154
|
],
|
123
|
-
|
155
|
+
}
|
156
|
+
|
157
|
+
if executable_path:
|
158
|
+
launch_kwargs["executable_path"] = executable_path
|
159
|
+
print(
|
160
|
+
f"[PYTHON] Using custom Chromium executable: {executable_path}"
|
161
|
+
)
|
162
|
+
|
163
|
+
self.browser = await playwright.chromium.launch(**launch_kwargs)
|
124
164
|
else:
|
125
165
|
raise RuntimeError("Playwright is not available")
|
126
166
|
|
@@ -454,8 +494,6 @@ class PlaywrightBrowserProxy:
|
|
454
494
|
if self.monitor_thread is not None:
|
455
495
|
return
|
456
496
|
|
457
|
-
import os
|
458
|
-
|
459
497
|
def monitor_process():
|
460
498
|
"""Monitor the browser process and exit when it terminates."""
|
461
499
|
if self.process is None:
|
@@ -594,30 +632,38 @@ def install_playwright_browsers() -> bool:
|
|
594
632
|
playwright_dir = Path.home() / ".fastled" / "playwright"
|
595
633
|
playwright_dir.mkdir(parents=True, exist_ok=True)
|
596
634
|
|
597
|
-
#
|
598
|
-
|
635
|
+
# Check if browsers are installed in the custom directory
|
636
|
+
import glob
|
637
|
+
import platform
|
599
638
|
|
600
|
-
|
639
|
+
if platform.system() == "Windows":
|
640
|
+
chromium_pattern = str(
|
641
|
+
playwright_dir / "chromium-*" / "chrome-win" / "chrome.exe"
|
642
|
+
)
|
643
|
+
elif platform.system() == "Darwin": # macOS
|
644
|
+
chromium_pattern = str(
|
645
|
+
playwright_dir / "chromium-*" / "chrome-mac" / "Chromium.app"
|
646
|
+
)
|
647
|
+
else: # Linux
|
648
|
+
chromium_pattern = str(
|
649
|
+
playwright_dir / "chromium-*" / "chrome-linux" / "chrome"
|
650
|
+
)
|
601
651
|
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
browser = p.chromium.launch(headless=True)
|
606
|
-
browser.close()
|
607
|
-
return True
|
608
|
-
except Exception:
|
609
|
-
pass
|
652
|
+
if glob.glob(chromium_pattern):
|
653
|
+
print(f"✅ Playwright browsers already installed at: {playwright_dir}")
|
654
|
+
return True
|
610
655
|
|
611
656
|
# If we get here, browsers need to be installed
|
612
657
|
print("Installing Playwright browsers...")
|
613
658
|
print(f"Installing to: {playwright_dir}")
|
614
659
|
import subprocess
|
615
660
|
|
661
|
+
env = dict(os.environ)
|
662
|
+
env["PLAYWRIGHT_BROWSERS_PATH"] = str(playwright_dir.resolve())
|
663
|
+
|
616
664
|
result = subprocess.run(
|
617
665
|
[sys.executable, "-m", "playwright", "install", "chromium"],
|
618
|
-
|
619
|
-
text=True,
|
620
|
-
env=dict(os.environ, PLAYWRIGHT_BROWSERS_PATH=str(playwright_dir)),
|
666
|
+
env=env,
|
621
667
|
)
|
622
668
|
|
623
669
|
if result.returncode == 0:
|
@@ -625,7 +671,9 @@ def install_playwright_browsers() -> bool:
|
|
625
671
|
print(f" Location: {playwright_dir}")
|
626
672
|
return True
|
627
673
|
else:
|
628
|
-
print(
|
674
|
+
print(
|
675
|
+
f"❌ Failed to install Playwright browsers (exit code: {result.returncode})"
|
676
|
+
)
|
629
677
|
return False
|
630
678
|
|
631
679
|
except Exception as e:
|
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
|
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
|
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
|