fastled 1.4.4__tar.gz → 1.4.6__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 (130) hide show
  1. {fastled-1.4.4 → fastled-1.4.6}/PKG-INFO +1 -1
  2. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/__version__.py +1 -1
  3. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/playwright_browser.py +95 -97
  4. {fastled-1.4.4 → fastled-1.4.6}/src/fastled.egg-info/PKG-INFO +1 -1
  5. {fastled-1.4.4 → fastled-1.4.6}/.aiderignore +0 -0
  6. {fastled-1.4.4 → fastled-1.4.6}/.cursorrules +0 -0
  7. {fastled-1.4.4 → fastled-1.4.6}/.dockerignore +0 -0
  8. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/build_multi_docker_image.yml +0 -0
  9. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/build_webpage.yml +0 -0
  10. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/lint.yml +0 -0
  11. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/publish_release.yml +0 -0
  12. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/template_build_docker_image.yml +0 -0
  13. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/test_build_exe.yml +0 -0
  14. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/test_macos.yml +0 -0
  15. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/test_ubuntu.yml +0 -0
  16. {fastled-1.4.4 → fastled-1.4.6}/.github/workflows/test_win.yml +0 -0
  17. {fastled-1.4.4 → fastled-1.4.6}/.gitignore +0 -0
  18. {fastled-1.4.4 → fastled-1.4.6}/.pylintrc +0 -0
  19. {fastled-1.4.4 → fastled-1.4.6}/.vscode/launch.json +0 -0
  20. {fastled-1.4.4 → fastled-1.4.6}/.vscode/settings.json +0 -0
  21. {fastled-1.4.4 → fastled-1.4.6}/.vscode/tasks.json +0 -0
  22. {fastled-1.4.4 → fastled-1.4.6}/DEBUGGER.md +0 -0
  23. {fastled-1.4.4 → fastled-1.4.6}/Dockerfile +0 -0
  24. {fastled-1.4.4 → fastled-1.4.6}/FAQ.md +0 -0
  25. {fastled-1.4.4 → fastled-1.4.6}/LICENSE +0 -0
  26. {fastled-1.4.4 → fastled-1.4.6}/MANIFEST.in +0 -0
  27. {fastled-1.4.4 → fastled-1.4.6}/README.md +0 -0
  28. {fastled-1.4.4 → fastled-1.4.6}/RELEASE.md +0 -0
  29. {fastled-1.4.4 → fastled-1.4.6}/TODO.md +0 -0
  30. {fastled-1.4.4 → fastled-1.4.6}/build_exe.py +0 -0
  31. {fastled-1.4.4 → fastled-1.4.6}/build_local_docker.py +0 -0
  32. {fastled-1.4.4 → fastled-1.4.6}/build_site.py +0 -0
  33. {fastled-1.4.4 → fastled-1.4.6}/clean +0 -0
  34. {fastled-1.4.4 → fastled-1.4.6}/compiler/debug.sh +0 -0
  35. {fastled-1.4.4 → fastled-1.4.6}/compiler/run.py +0 -0
  36. {fastled-1.4.4 → fastled-1.4.6}/demo/100dots.html +0 -0
  37. {fastled-1.4.4 → fastled-1.4.6}/demo/demo_threejs.html +0 -0
  38. {fastled-1.4.4 → fastled-1.4.6}/demo/micdemo.html +0 -0
  39. {fastled-1.4.4 → fastled-1.4.6}/demo/mp3upload.html +0 -0
  40. {fastled-1.4.4 → fastled-1.4.6}/demo/webgl_postprocessing_unreal_bloom.html +0 -0
  41. {fastled-1.4.4 → fastled-1.4.6}/docker-compose.yml +0 -0
  42. {fastled-1.4.4 → fastled-1.4.6}/entrypoint.sh +0 -0
  43. {fastled-1.4.4 → fastled-1.4.6}/install +0 -0
  44. {fastled-1.4.4 → fastled-1.4.6}/install_linux.sh +0 -0
  45. {fastled-1.4.4 → fastled-1.4.6}/lint +0 -0
  46. {fastled-1.4.4 → fastled-1.4.6}/pyproject.toml +0 -0
  47. {fastled-1.4.4 → fastled-1.4.6}/requirements.docker.txt +0 -0
  48. {fastled-1.4.4 → fastled-1.4.6}/requirements.testing.txt +0 -0
  49. {fastled-1.4.4 → fastled-1.4.6}/setup.cfg +0 -0
  50. {fastled-1.4.4 → fastled-1.4.6}/setup.py +0 -0
  51. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/__init__.py +0 -0
  52. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/__main__.py +0 -0
  53. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/app.py +0 -0
  54. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/args.py +0 -0
  55. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/assets/example.txt +0 -0
  56. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/assets/localhost-key.pem +0 -0
  57. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/assets/localhost.pem +0 -0
  58. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/cli.py +0 -0
  59. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/cli_test.py +0 -0
  60. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/cli_test_interactive.py +0 -0
  61. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/client_server.py +0 -0
  62. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/compile_server.py +0 -0
  63. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/compile_server_impl.py +0 -0
  64. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/docker_manager.py +0 -0
  65. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/filewatcher.py +0 -0
  66. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/find_good_connection.py +0 -0
  67. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/keyboard.py +0 -0
  68. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/keyz.py +0 -0
  69. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/live_client.py +0 -0
  70. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/open_browser.py +0 -0
  71. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/parse_args.py +0 -0
  72. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/paths.py +0 -0
  73. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/print_filter.py +0 -0
  74. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/project_init.py +0 -0
  75. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/select_sketch_directory.py +0 -0
  76. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/server_flask.py +0 -0
  77. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/server_start.py +0 -0
  78. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/settings.py +0 -0
  79. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/site/build.py +0 -0
  80. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/site/examples.py +0 -0
  81. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/sketch.py +0 -0
  82. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/spinner.py +0 -0
  83. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/string_diff.py +0 -0
  84. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/test/can_run_local_docker_tests.py +0 -0
  85. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/test/examples.py +0 -0
  86. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/types.py +0 -0
  87. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/util.py +0 -0
  88. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/version.py +0 -0
  89. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/web_compile.py +0 -0
  90. {fastled-1.4.4 → fastled-1.4.6}/src/fastled/zip_files.py +0 -0
  91. {fastled-1.4.4 → fastled-1.4.6}/src/fastled.egg-info/SOURCES.txt +0 -0
  92. {fastled-1.4.4 → fastled-1.4.6}/src/fastled.egg-info/dependency_links.txt +0 -0
  93. {fastled-1.4.4 → fastled-1.4.6}/src/fastled.egg-info/entry_points.txt +0 -0
  94. {fastled-1.4.4 → fastled-1.4.6}/src/fastled.egg-info/requires.txt +0 -0
  95. {fastled-1.4.4 → fastled-1.4.6}/src/fastled.egg-info/top_level.txt +0 -0
  96. {fastled-1.4.4 → fastled-1.4.6}/test +0 -0
  97. {fastled-1.4.4 → fastled-1.4.6}/tests/integration/test_build_examples.py +0 -0
  98. {fastled-1.4.4 → fastled-1.4.6}/tests/integration/test_examples.py +0 -0
  99. {fastled-1.4.4 → fastled-1.4.6}/tests/integration/test_libcompile.py +0 -0
  100. {fastled-1.4.4 → fastled-1.4.6}/tests/integration/test_playwright_integration.py +0 -0
  101. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/html/index.html +0 -0
  102. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_api.py +0 -0
  103. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_bad_ino.py +0 -0
  104. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_banner_string.py +0 -0
  105. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_cli.py +0 -0
  106. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_cli_no_platformio.py +0 -0
  107. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_compile_server.py +0 -0
  108. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_debug_fetch_source_files.py +0 -0
  109. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_docker_linux_on_windows.py +0 -0
  110. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_embedded_data.py +0 -0
  111. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_filechanger.py +0 -0
  112. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_flask_headers.py +0 -0
  113. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_http_server.py +0 -0
  114. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_ino/bad/bad.ino +0 -0
  115. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_ino/bad_platformio/bad_platformio.ino +0 -0
  116. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_ino/bad_platformio/platformio.ini +0 -0
  117. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_ino/embedded/data/bigdata.dat +0 -0
  118. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_ino/embedded/wasm.ino +0 -0
  119. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_ino/wasm/wasm.ino +0 -0
  120. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_manual_api_invocation.py +0 -0
  121. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_no_platformio_compile.py +0 -0
  122. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_project_init.py +0 -0
  123. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_server_and_client_seperatly.py +0 -0
  124. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_session_compile.py +0 -0
  125. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_string_diff.py +0 -0
  126. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_string_diff_comprehensive.py +0 -0
  127. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_version.py +0 -0
  128. {fastled-1.4.4 → fastled-1.4.6}/tests/unit/test_webcompile.py +0 -0
  129. {fastled-1.4.4 → fastled-1.4.6}/upload_package.sh +0 -0
  130. {fastled-1.4.4 → fastled-1.4.6}/vscode-plugin/readme +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.4.4
3
+ Version: 1.4.6
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.4"
4
+ __version__ = "1.4.6"
5
5
 
6
6
  __version_url_latest__ = "https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/src/fastled/__version__.py"
@@ -17,7 +17,8 @@ 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)
20
+ # Use absolute path and normalize for Windows compatibility
21
+ os.environ["PLAYWRIGHT_BROWSERS_PATH"] = str(PLAYWRIGHT_DIR.resolve())
21
22
 
22
23
  try:
23
24
  from playwright.async_api import Browser, Page, async_playwright
@@ -44,7 +45,7 @@ class PlaywrightBrowser:
44
45
  Args:
45
46
  headless: Whether to run the browser in headless mode
46
47
  """
47
- if not PLAYWRIGHT_AVAILABLE:
48
+ if not is_playwright_available():
48
49
  raise ImportError(
49
50
  "Playwright is not installed. Install with: pip install fastled[full]"
50
51
  )
@@ -56,106 +57,92 @@ class PlaywrightBrowser:
56
57
  self.playwright: Any = None
57
58
  self._should_exit = asyncio.Event()
58
59
 
59
- async def start(self) -> None:
60
- """Start the Playwright browser."""
61
- if self.playwright is None and async_playwright is not None:
62
- self.playwright = await async_playwright().start()
60
+ def _detect_device_scale_factor(self) -> float | None:
61
+ """Detect the system's device scale factor for natural browser behavior.
62
+
63
+ Returns:
64
+ The detected device scale factor, or None if detection fails or
65
+ the value is outside reasonable bounds (0.5-4.0).
66
+ """
67
+ try:
68
+ import platform
69
+
70
+ if platform.system() == "Windows":
71
+ import winreg
63
72
 
64
- if self.browser is None and self.playwright is not None:
65
- # Try Chrome first, then Firefox, then WebKit
66
- try:
67
- self.browser = await self.playwright.chromium.launch(
68
- headless=self.headless,
69
- args=["--disable-web-security", "--allow-running-insecure-content"],
70
- )
71
- except Exception:
72
73
  try:
73
- self.browser = await self.playwright.firefox.launch(
74
- headless=self.headless
74
+ key = winreg.OpenKey(
75
+ winreg.HKEY_CURRENT_USER, r"Control Panel\Desktop\WindowMetrics"
75
76
  )
76
- except Exception:
77
- self.browser = await self.playwright.webkit.launch(
78
- headless=self.headless
77
+ dpi, _ = winreg.QueryValueEx(key, "AppliedDPI")
78
+ winreg.CloseKey(key)
79
+ device_scale_factor = dpi / 96.0
80
+
81
+ # Validate the scale factor is within reasonable bounds
82
+ if 0.5 <= device_scale_factor <= 4.0:
83
+ print(
84
+ f"[PYTHON] Detected Windows DPI scaling: {device_scale_factor:.2f}"
85
+ )
86
+ return device_scale_factor
87
+ else:
88
+ print(
89
+ f"[PYTHON] Detected scale factor {device_scale_factor:.2f} outside reasonable bounds"
90
+ )
91
+ return None
92
+
93
+ except (OSError, FileNotFoundError):
94
+ print(
95
+ "[PYTHON] Could not detect Windows DPI, using browser default"
79
96
  )
97
+ return None
98
+ else:
99
+ # Future: Add support for other platforms (macOS, Linux) here
100
+ print(
101
+ f"[PYTHON] Device scale detection not implemented for {platform.system()}"
102
+ )
103
+ return None
80
104
 
81
- if self.page is None and self.browser is not None:
82
- # Detect system device scale factor to match normal browser behavior
83
- import platform
105
+ except Exception as e:
106
+ print(f"[PYTHON] DPI detection failed: {e}")
107
+ return None
84
108
 
85
- device_scale_factor = 1.0
109
+ async def start(self) -> None:
110
+ """Start the Playwright browser."""
111
+ if self.browser is None:
112
+ if is_playwright_available():
113
+ from playwright.async_api import async_playwright
86
114
 
87
- # Try to detect system display scaling
88
- try:
89
- if platform.system() == "Windows":
90
- # On Windows, try to get the DPI scaling factor
91
- import ctypes
92
-
93
- try:
94
- # Get DPI awareness and scale factor
95
- user32 = ctypes.windll.user32
96
- user32.SetProcessDPIAware()
97
- dc = user32.GetDC(0)
98
- dpi = ctypes.windll.gdi32.GetDeviceCaps(dc, 88) # LOGPIXELSX
99
- user32.ReleaseDC(0, dc)
100
- device_scale_factor = dpi / 96.0 # 96 DPI is 100% scaling
101
- except Exception:
102
- # Fallback: try alternative method
103
- try:
104
- import tkinter as tk
105
-
106
- root = tk.Tk()
107
- device_scale_factor = root.winfo_fpixels("1i") / 96.0
108
- root.destroy()
109
- except Exception:
110
- pass
111
- elif platform.system() == "Darwin": # macOS
112
- # On macOS, try to get the display scaling
113
- try:
114
- import subprocess
115
-
116
- result = subprocess.run(
117
- ["system_profiler", "SPDisplaysDataType"],
118
- capture_output=True,
119
- text=True,
120
- timeout=5,
121
- )
122
- if "Retina" in result.stdout or "2x" in result.stdout:
123
- device_scale_factor = 2.0
124
- elif "3x" in result.stdout:
125
- device_scale_factor = 3.0
126
- except Exception:
127
- pass
128
- elif platform.system() == "Linux":
129
- # On Linux, try to get display scaling from environment or system
130
- try:
131
- import os
132
-
133
- # Try GDK scaling first
134
- gdk_scale = os.environ.get("GDK_SCALE")
135
- if gdk_scale:
136
- device_scale_factor = float(gdk_scale)
137
- else:
138
- # Try QT scaling
139
- qt_scale = os.environ.get("QT_SCALE_FACTOR")
140
- if qt_scale:
141
- device_scale_factor = float(qt_scale)
142
- except Exception:
143
- pass
144
- except Exception:
145
- # If all detection methods fail, default to 1.0
146
- device_scale_factor = 1.0
115
+ self.playwright = async_playwright()
116
+ playwright = await self.playwright.start()
117
+ self.browser = await playwright.chromium.launch(
118
+ headless=self.headless,
119
+ args=[
120
+ "--disable-dev-shm-usage",
121
+ "--disable-web-security",
122
+ "--allow-running-insecure-content",
123
+ ],
124
+ )
125
+ else:
126
+ raise RuntimeError("Playwright is not available")
147
127
 
148
- # Ensure device scale factor is reasonable (between 0.5 and 4.0)
149
- device_scale_factor = max(0.5, min(4.0, device_scale_factor))
128
+ if self.page is None and self.browser is not None:
129
+ # Detect system device scale factor for natural browser behavior
130
+ device_scale_factor = self._detect_device_scale_factor()
150
131
 
151
- print(f"[PYTHON] Detected device scale factor: {device_scale_factor}")
132
+ # Create browser context with detected or default device scale factor
133
+ if device_scale_factor:
134
+ context = await self.browser.new_context(
135
+ device_scale_factor=device_scale_factor
136
+ )
137
+ print(
138
+ f"[PYTHON] Created browser context with device scale factor: {device_scale_factor:.2f}"
139
+ )
140
+ else:
141
+ context = await self.browser.new_context()
142
+ print(
143
+ "[PYTHON] Created browser context with default device scale factor"
144
+ )
152
145
 
153
- # Create a new browser context with proper device scale factor
154
- context = await self.browser.new_context(
155
- device_scale_factor=device_scale_factor,
156
- # Also ensure viewport scaling is handled properly
157
- viewport={"width": 1280, "height": 720} if not self.headless else None,
158
- )
159
146
  self.page = await context.new_page()
160
147
 
161
148
  async def open_url(self, url: str) -> None:
@@ -174,6 +161,15 @@ class PlaywrightBrowser:
174
161
  # Wait for the page to load
175
162
  await self.page.wait_for_load_state("networkidle")
176
163
 
164
+ # Verify device scale factor is working correctly
165
+ try:
166
+ device_pixel_ratio = await self.page.evaluate("window.devicePixelRatio")
167
+ print(
168
+ f"[PYTHON] Verified browser device pixel ratio: {device_pixel_ratio}"
169
+ )
170
+ except Exception as e:
171
+ print(f"[PYTHON] Could not verify device pixel ratio: {e}")
172
+
177
173
  # Set up auto-resizing functionality if enabled
178
174
  if self.auto_resize:
179
175
  await self._setup_auto_resize()
@@ -343,7 +339,7 @@ def run_playwright_browser(url: str, headless: bool = False) -> None:
343
339
  url: The URL to open
344
340
  headless: Whether to run in headless mode
345
341
  """
346
- if not PLAYWRIGHT_AVAILABLE:
342
+ if not is_playwright_available():
347
343
  warnings.warn(
348
344
  "Playwright is not installed. Install with: pip install fastled[full]. "
349
345
  "Falling back to default browser."
@@ -417,7 +413,7 @@ class PlaywrightBrowserProxy:
417
413
  url: The URL to open
418
414
  headless: Whether to run in headless mode
419
415
  """
420
- if not PLAYWRIGHT_AVAILABLE:
416
+ if not is_playwright_available():
421
417
  warnings.warn(
422
418
  "Playwright is not installed. Install with: pip install fastled[full]. "
423
419
  "Falling back to default browser."
@@ -505,7 +501,7 @@ def run_playwright_browser_persistent(url: str, headless: bool = False) -> None:
505
501
  url: The URL to open
506
502
  headless: Whether to run in headless mode
507
503
  """
508
- if not PLAYWRIGHT_AVAILABLE:
504
+ if not is_playwright_available():
509
505
  return
510
506
 
511
507
  async def main():
@@ -600,7 +596,7 @@ def install_playwright_browsers() -> bool:
600
596
  playwright_dir.mkdir(parents=True, exist_ok=True)
601
597
 
602
598
  # Set environment variable for Playwright browser path
603
- os.environ["PLAYWRIGHT_BROWSERS_PATH"] = str(playwright_dir)
599
+ os.environ["PLAYWRIGHT_BROWSERS_PATH"] = str(playwright_dir.resolve())
604
600
 
605
601
  from playwright.sync_api import sync_playwright
606
602
 
@@ -622,7 +618,9 @@ def install_playwright_browsers() -> bool:
622
618
  [sys.executable, "-m", "playwright", "install", "chromium"],
623
619
  capture_output=True,
624
620
  text=True,
625
- env=dict(os.environ, PLAYWRIGHT_BROWSERS_PATH=str(playwright_dir)),
621
+ env=dict(
622
+ os.environ, PLAYWRIGHT_BROWSERS_PATH=str(playwright_dir.resolve())
623
+ ),
626
624
  )
627
625
 
628
626
  if result.returncode == 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.4.4
3
+ Version: 1.4.6
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
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