fastled 1.2.18__tar.gz → 1.2.20__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.2.18 → fastled-1.2.20}/PKG-INFO +3 -1
- {fastled-1.2.18 → fastled-1.2.20}/README.md +2 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/__init__.py +2 -2
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/client_server.py +39 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/compile_server.py +6 -1
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/open_browser.py +24 -1
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/open_browser2.py +8 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled.egg-info/PKG-INFO +3 -1
- {fastled-1.2.18 → fastled-1.2.20}/.aiderignore +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/build_multi_docker_image.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/build_webpage.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/lint.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/publish_release.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/test_build_exe.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/test_macos.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/test_ubuntu.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.github/workflows/test_win.yml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.gitignore +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.pylintrc +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.vscode/launch.json +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.vscode/settings.json +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/.vscode/tasks.json +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/LICENSE +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/MANIFEST.in +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/RELEASE.md +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/TODO.md +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/build_exe.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/build_site.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/clean +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/install +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/lint +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/pyproject.toml +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/requirements.testing.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/setup.cfg +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/setup.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/app.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/assets/example.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/cli.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/compile_server_impl.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/docker_manager.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/filewatcher.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/keyboard.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/live_client.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/parse_args.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/paths.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/project_init.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/select_sketch_directory.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/settings.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/site/build.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/sketch.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/spinner.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/string_diff.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/test/can_run_local_docker_tests.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/test/examples.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/types.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/util.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled/web_compile.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled.egg-info/SOURCES.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled.egg-info/dependency_links.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled.egg-info/entry_points.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled.egg-info/requires.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/src/fastled.egg-info/top_level.txt +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/test +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/html/index.html +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_api.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_bad_ino.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_build.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_build_examples.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_cli.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_compile_server.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_docker_linux_on_windows.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_embedded_data.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_examples.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_filechanger.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_http_server.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_ino/bad/bad.ino +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_ino/embedded/data/bigdata.dat +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_ino/embedded/wasm.ino +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_ino/wasm/wasm.ino +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_project_init.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_server_and_client_seperatly.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/tests/test_webcompile.py +0 -0
- {fastled-1.2.18 → fastled-1.2.20}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fastled
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.20
|
4
4
|
Summary: FastLED Wasm Compiler
|
5
5
|
Home-page: https://github.com/zackees/fastled-wasm
|
6
6
|
Maintainer: Zachary Vorhies
|
@@ -285,6 +285,8 @@ A: A big chunk of space is being used by unnecessary javascript `emscripten` bun
|
|
285
285
|
|
286
286
|
# Revisions
|
287
287
|
|
288
|
+
* 1.2.20 - Fixed up path issue for web browser launch for hot reload.
|
289
|
+
* 1.2.19 - Compilation failure now overwrites the index.html file with error message.
|
288
290
|
* 1.2.16 - Force mime types in web browser as some users may not have it correct in their registry.
|
289
291
|
* 1.2.15 - Rewrote http server using flask. Reduced install size significantly.
|
290
292
|
* 1.2.13 - More fixes for npm live-server, now uses `static-npm` to launch it.
|
@@ -262,6 +262,8 @@ A: A big chunk of space is being used by unnecessary javascript `emscripten` bun
|
|
262
262
|
|
263
263
|
# Revisions
|
264
264
|
|
265
|
+
* 1.2.20 - Fixed up path issue for web browser launch for hot reload.
|
266
|
+
* 1.2.19 - Compilation failure now overwrites the index.html file with error message.
|
265
267
|
* 1.2.16 - Force mime types in web browser as some users may not have it correct in their registry.
|
266
268
|
* 1.2.15 - Rewrote http server using flask. Reduced install size significantly.
|
267
269
|
* 1.2.13 - More fixes for npm live-server, now uses `static-npm` to launch it.
|
@@ -15,7 +15,7 @@ from .types import BuildMode, CompileResult, CompileServerError
|
|
15
15
|
# IMPORTANT! There's a bug in github which will REJECT any version update
|
16
16
|
# that has any other change in the repo. Please bump the version as the
|
17
17
|
# ONLY change in a commit, or else the pypi update and the release will fail.
|
18
|
-
__version__ = "1.2.
|
18
|
+
__version__ = "1.2.20"
|
19
19
|
|
20
20
|
|
21
21
|
class Api:
|
@@ -317,7 +317,7 @@ class Test:
|
|
317
317
|
@staticmethod
|
318
318
|
def spawn_http_server(
|
319
319
|
directory: Path | str = Path("."),
|
320
|
-
port: int =
|
320
|
+
port: int | None = None,
|
321
321
|
open_browser: bool = True,
|
322
322
|
) -> Process:
|
323
323
|
from fastled.open_browser import open_browser_process
|
@@ -22,6 +22,41 @@ from fastled.web_compile import (
|
|
22
22
|
)
|
23
23
|
|
24
24
|
|
25
|
+
def _create_error_html(error_message: str) -> str:
|
26
|
+
return f"""<!DOCTYPE html>
|
27
|
+
<html>
|
28
|
+
<head>
|
29
|
+
<!-- no cache -->
|
30
|
+
<meta http-equiv="Cache-Control" content="no-store" />
|
31
|
+
<meta http-equiv="Pragma" content="no-cache" />
|
32
|
+
<meta http-equiv="Expires" content="0" />
|
33
|
+
<title>FastLED Compilation Error ZACH</title>
|
34
|
+
<style>
|
35
|
+
body {{
|
36
|
+
background-color: #1a1a1a;
|
37
|
+
color: #ffffff;
|
38
|
+
font-family: Arial, sans-serif;
|
39
|
+
margin: 20px;
|
40
|
+
padding: 20px;
|
41
|
+
}}
|
42
|
+
pre {{
|
43
|
+
color: #ffffff;
|
44
|
+
background-color: #1a1a1a;
|
45
|
+
border: 1px solid #444444;
|
46
|
+
border-radius: 4px;
|
47
|
+
padding: 15px;
|
48
|
+
white-space: pre-wrap;
|
49
|
+
word-wrap: break-word;
|
50
|
+
}}
|
51
|
+
</style>
|
52
|
+
</head>
|
53
|
+
<body>
|
54
|
+
<h1>Compilation Failed</h1>
|
55
|
+
<pre>{error_message}</pre>
|
56
|
+
</body>
|
57
|
+
</html>"""
|
58
|
+
|
59
|
+
|
25
60
|
# Override this function in your own code to run tests before compilation
|
26
61
|
def TEST_BEFORE_COMPILE(url) -> None:
|
27
62
|
pass
|
@@ -45,6 +80,10 @@ def _run_web_compiler(
|
|
45
80
|
print("\nWeb compilation failed:")
|
46
81
|
print(f"Time taken: {diff:.2f} seconds")
|
47
82
|
print(web_result.stdout)
|
83
|
+
# Create error page
|
84
|
+
output_dir.mkdir(exist_ok=True)
|
85
|
+
error_html = _create_error_html(web_result.stdout)
|
86
|
+
(output_dir / "index.html").write_text(error_html, encoding="utf-8")
|
48
87
|
return web_result
|
49
88
|
|
50
89
|
def print_results() -> None:
|
@@ -81,7 +81,12 @@ class CompileServer:
|
|
81
81
|
return self.impl._start()
|
82
82
|
|
83
83
|
def stop(self) -> None:
|
84
|
-
|
84
|
+
try:
|
85
|
+
return self.impl.stop()
|
86
|
+
except KeyboardInterrupt:
|
87
|
+
import _thread
|
88
|
+
|
89
|
+
_thread.interrupt_main()
|
85
90
|
|
86
91
|
def process_running(self) -> bool:
|
87
92
|
return self.impl.process_running()
|
@@ -36,10 +36,33 @@ def open_http_server_subprocess(
|
|
36
36
|
_thread.interrupt_main()
|
37
37
|
|
38
38
|
|
39
|
+
def is_port_free(port: int) -> bool:
|
40
|
+
"""Check if a port is free"""
|
41
|
+
import socket
|
42
|
+
|
43
|
+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
44
|
+
return s.connect_ex(("localhost", port)) != 0
|
45
|
+
|
46
|
+
|
47
|
+
def find_free_port(start_port: int) -> int:
|
48
|
+
"""Find a free port starting at start_port"""
|
49
|
+
for port in range(start_port, start_port + 100):
|
50
|
+
if is_port_free(port):
|
51
|
+
print(f"Found free port: {port}")
|
52
|
+
return port
|
53
|
+
else:
|
54
|
+
print(f"Port {port} is in use, finding next")
|
55
|
+
raise ValueError("Could not find a free port")
|
56
|
+
|
57
|
+
|
39
58
|
def open_browser_process(
|
40
|
-
fastled_js: Path, port: int =
|
59
|
+
fastled_js: Path, port: int | None = None, open_browser: bool = True
|
41
60
|
) -> Process:
|
42
61
|
"""Start livereload server in the fastled_js directory and return the process"""
|
62
|
+
if port is not None:
|
63
|
+
if not is_port_free(port):
|
64
|
+
raise ValueError(f"Port {port} was specified but in use in use")
|
65
|
+
port = port or find_free_port(DEFAULT_PORT)
|
43
66
|
out: Process = Process(
|
44
67
|
target=open_http_server_subprocess,
|
45
68
|
args=(fastled_js, port, open_browser),
|
@@ -12,6 +12,9 @@ def _run_flask_server(fastled_js: Path, port: int) -> None:
|
|
12
12
|
|
13
13
|
app = Flask(__name__)
|
14
14
|
|
15
|
+
# Must be a full path or flask will fail to find the file.
|
16
|
+
fastled_js = fastled_js.resolve()
|
17
|
+
|
15
18
|
@app.route("/")
|
16
19
|
def serve_index():
|
17
20
|
return send_from_directory(fastled_js, "index.html")
|
@@ -42,6 +45,11 @@ def _run_flask_server(fastled_js: Path, port: int) -> None:
|
|
42
45
|
response.headers["Content-Type"] = "image/x-icon"
|
43
46
|
if path.endswith(".html"):
|
44
47
|
response.headers["Content-Type"] = "text/html"
|
48
|
+
|
49
|
+
# now also add headers to force no caching
|
50
|
+
response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
|
51
|
+
response.headers["Pragma"] = "no-cache"
|
52
|
+
response.headers["Expires"] = "0"
|
45
53
|
return response
|
46
54
|
|
47
55
|
app.run(port=port, debug=True)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fastled
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.20
|
4
4
|
Summary: FastLED Wasm Compiler
|
5
5
|
Home-page: https://github.com/zackees/fastled-wasm
|
6
6
|
Maintainer: Zachary Vorhies
|
@@ -285,6 +285,8 @@ A: A big chunk of space is being used by unnecessary javascript `emscripten` bun
|
|
285
285
|
|
286
286
|
# Revisions
|
287
287
|
|
288
|
+
* 1.2.20 - Fixed up path issue for web browser launch for hot reload.
|
289
|
+
* 1.2.19 - Compilation failure now overwrites the index.html file with error message.
|
288
290
|
* 1.2.16 - Force mime types in web browser as some users may not have it correct in their registry.
|
289
291
|
* 1.2.15 - Rewrote http server using flask. Reduced install size significantly.
|
290
292
|
* 1.2.13 - More fixes for npm live-server, now uses `static-npm` to launch it.
|
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
|