fastled 1.1.39__py2.py3-none-any.whl → 1.1.61__py2.py3-none-any.whl

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/__init__.py CHANGED
@@ -9,7 +9,7 @@ from .compile_server import CompileServer
9
9
  from .live_client import LiveClient
10
10
  from .types import BuildMode, CompileResult, CompileServerError
11
11
 
12
- __version__ = "1.1.39"
12
+ __version__ = "1.1.61"
13
13
 
14
14
 
15
15
  class Api:
@@ -69,7 +69,6 @@ class Api:
69
69
 
70
70
  @staticmethod
71
71
  def spawn_server(
72
- sketch_directory: Path | None = None,
73
72
  interactive=False,
74
73
  auto_updates=None,
75
74
  auto_start=True,
@@ -81,7 +80,7 @@ class Api:
81
80
  container_name=container_name,
82
81
  interactive=interactive,
83
82
  auto_updates=auto_updates,
84
- mapped_dir=sketch_directory,
83
+ mapped_dir=None,
85
84
  auto_start=auto_start,
86
85
  )
87
86
  return out
@@ -89,14 +88,12 @@ class Api:
89
88
  @staticmethod
90
89
  @contextmanager
91
90
  def server(
92
- sketch_directory: Path | None = None,
93
91
  interactive=False,
94
92
  auto_updates=None,
95
93
  auto_start=True,
96
94
  container_name: str | None = None,
97
95
  ) -> Generator[CompileServer, None, None]:
98
96
  server = Api.spawn_server(
99
- sketch_directory=sketch_directory,
100
97
  interactive=interactive,
101
98
  auto_updates=auto_updates,
102
99
  auto_start=auto_start,
fastled/client_server.py CHANGED
@@ -22,6 +22,11 @@ from fastled.web_compile import (
22
22
  )
23
23
 
24
24
 
25
+ # Override this function in your own code to run tests before compilation
26
+ def TEST_BEFORE_COMPILE(url) -> None:
27
+ pass
28
+
29
+
25
30
  def _run_web_compiler(
26
31
  directory: Path,
27
32
  host: str,
@@ -153,6 +158,7 @@ def run_client(
153
158
  profile: bool = profile,
154
159
  last_hash_value: str | None = None,
155
160
  ) -> CompileResult:
161
+ TEST_BEFORE_COMPILE(url)
156
162
  return _run_web_compiler(
157
163
  directory,
158
164
  host=url,
fastled/parse_args.py CHANGED
@@ -1,172 +1,172 @@
1
- import argparse
2
- import os
3
- import sys
4
- from pathlib import Path
5
-
6
- from fastled import __version__
7
- from fastled.docker_manager import DockerManager
8
- from fastled.project_init import project_init
9
- from fastled.select_sketch_directory import select_sketch_directory
10
- from fastled.settings import DEFAULT_URL
11
- from fastled.sketch import (
12
- find_sketch_directories,
13
- looks_like_fastled_repo,
14
- looks_like_sketch_directory,
15
- )
16
-
17
-
18
- def parse_args() -> argparse.Namespace:
19
- """Parse command-line arguments."""
20
- parser = argparse.ArgumentParser(description=f"FastLED WASM Compiler {__version__}")
21
- parser.add_argument(
22
- "--version", action="version", version=f"%(prog)s {__version__}"
23
- )
24
- parser.add_argument(
25
- "directory",
26
- type=str,
27
- nargs="?",
28
- default=None,
29
- help="Directory containing the FastLED sketch to compile",
30
- )
31
- parser.add_argument(
32
- "--init",
33
- action="store_true",
34
- help="Initialize the FastLED sketch in the current directory",
35
- )
36
- parser.add_argument(
37
- "--just-compile",
38
- action="store_true",
39
- help="Just compile, skip opening the browser and watching for changes.",
40
- )
41
- parser.add_argument(
42
- "--web",
43
- "-w",
44
- type=str,
45
- nargs="?",
46
- # const does not seem to be working as expected
47
- const=DEFAULT_URL, # Default value when --web is specified without value
48
- help="Use web compiler. Optional URL can be provided (default: https://fastled.onrender.com)",
49
- )
50
- parser.add_argument(
51
- "-i",
52
- "--interactive",
53
- action="store_true",
54
- help="Run in interactive mode (Not available with --web)",
55
- )
56
- parser.add_argument(
57
- "--profile",
58
- action="store_true",
59
- help="Enable profiling for web compilation",
60
- )
61
- parser.add_argument(
62
- "--force-compile",
63
- action="store_true",
64
- help="Skips the test to see if the current directory is a valid FastLED sketch directory",
65
- )
66
- parser.add_argument(
67
- "--no-auto-updates",
68
- action="store_true",
69
- help="Disable automatic updates of the wasm compiler image when using docker.",
70
- )
71
- parser.add_argument(
72
- "--update",
73
- "--upgrade",
74
- action="store_true",
75
- help="Update the wasm compiler (if necessary) before running",
76
- )
77
- parser.add_argument(
78
- "--localhost",
79
- "--local",
80
- "-l",
81
- action="store_true",
82
- help="Use localhost for web compilation from an instance of fastled --server, creating it if necessary",
83
- )
84
- parser.add_argument(
85
- "--server",
86
- "-s",
87
- action="store_true",
88
- help="Run the server in the current directory, volume mapping fastled if we are in the repo",
89
- )
90
-
91
- build_mode = parser.add_mutually_exclusive_group()
92
- build_mode.add_argument("--debug", action="store_true", help="Build in debug mode")
93
- build_mode.add_argument(
94
- "--quick",
95
- action="store_true",
96
- default=True,
97
- help="Build in quick mode (default)",
98
- )
99
- build_mode.add_argument(
100
- "--release", action="store_true", help="Build in release mode"
101
- )
102
-
103
- cwd_is_fastled = looks_like_fastled_repo(Path(os.getcwd()))
104
-
105
- args = parser.parse_args()
106
-
107
- if args.init:
108
- args.directory = project_init()
109
- print("\nInitialized FastLED project in", args.directory)
110
- print(f"Use 'fastled {args.directory}' to compile the project.")
111
- sys.exit(0)
112
-
113
- if not args.update:
114
- if args.no_auto_updates:
115
- args.auto_update = False
116
- else:
117
- args.auto_update = None
118
-
119
- if (
120
- not cwd_is_fastled
121
- and not args.localhost
122
- and not args.web
123
- and not args.server
124
- ):
125
- if DockerManager.is_docker_installed():
126
- if not DockerManager.ensure_linux_containers_for_windows():
127
- print(
128
- f"Windows must be in linux containers mode, but is in Windows container mode, Using web compiler at {DEFAULT_URL}."
129
- )
130
- args.web = DEFAULT_URL
131
- else:
132
- print(
133
- "Docker is installed. Defaulting to --local mode, use --web to override and use the web compiler instead."
134
- )
135
- args.localhost = True
136
- else:
137
- print(f"Docker is not installed. Using web compiler at {DEFAULT_URL}.")
138
- args.web = DEFAULT_URL
139
- if cwd_is_fastled and not args.web and not args.server:
140
- print("Forcing --local mode because we are in the FastLED repo")
141
- args.localhost = True
142
- if args.localhost:
143
- args.web = "localhost"
144
- if args.interactive and not args.server:
145
- print("--interactive forces --server mode")
146
- args.server = True
147
- if args.directory is None and not args.server:
148
- # does current directory look like a sketch?
149
- maybe_sketch_dir = Path(os.getcwd())
150
- if looks_like_sketch_directory(maybe_sketch_dir):
151
- args.directory = str(maybe_sketch_dir)
152
- else:
153
- print("Searching for sketch directories...")
154
- sketch_directories = find_sketch_directories(maybe_sketch_dir)
155
- selected_dir = select_sketch_directory(
156
- sketch_directories, cwd_is_fastled
157
- )
158
- if selected_dir:
159
- print(f"Using sketch directory: {selected_dir}")
160
- args.directory = selected_dir
161
- else:
162
- print(
163
- "\nYou either need to specify a sketch directory or run in --server mode."
164
- )
165
- sys.exit(1)
166
- elif args.directory is not None and os.path.isfile(args.directory):
167
- dir_path = Path(args.directory).parent
168
- if looks_like_sketch_directory(dir_path):
169
- print(f"Using sketch directory: {dir_path}")
170
- args.directory = str(dir_path)
171
-
172
- return args
1
+ import argparse
2
+ import os
3
+ import sys
4
+ from pathlib import Path
5
+
6
+ from fastled import __version__
7
+ from fastled.docker_manager import DockerManager
8
+ from fastled.project_init import project_init
9
+ from fastled.select_sketch_directory import select_sketch_directory
10
+ from fastled.settings import DEFAULT_URL
11
+ from fastled.sketch import (
12
+ find_sketch_directories,
13
+ looks_like_fastled_repo,
14
+ looks_like_sketch_directory,
15
+ )
16
+
17
+
18
+ def parse_args() -> argparse.Namespace:
19
+ """Parse command-line arguments."""
20
+ parser = argparse.ArgumentParser(description=f"FastLED WASM Compiler {__version__}")
21
+ parser.add_argument("--version", action="version", version=f"{__version__}")
22
+ parser.add_argument(
23
+ "directory",
24
+ type=str,
25
+ nargs="?",
26
+ default=None,
27
+ help="Directory containing the FastLED sketch to compile",
28
+ )
29
+ parser.add_argument(
30
+ "--init",
31
+ nargs="?",
32
+ const=True,
33
+ help="Initialize the FastLED sketch in the current directory. Optional name can be provided",
34
+ )
35
+ parser.add_argument(
36
+ "--just-compile",
37
+ action="store_true",
38
+ help="Just compile, skip opening the browser and watching for changes.",
39
+ )
40
+ parser.add_argument(
41
+ "--web",
42
+ "-w",
43
+ type=str,
44
+ nargs="?",
45
+ # const does not seem to be working as expected
46
+ const=DEFAULT_URL, # Default value when --web is specified without value
47
+ help="Use web compiler. Optional URL can be provided (default: https://fastled.onrender.com)",
48
+ )
49
+ parser.add_argument(
50
+ "-i",
51
+ "--interactive",
52
+ action="store_true",
53
+ help="Run in interactive mode (Not available with --web)",
54
+ )
55
+ parser.add_argument(
56
+ "--profile",
57
+ action="store_true",
58
+ help="Enable profiling for web compilation",
59
+ )
60
+ parser.add_argument(
61
+ "--force-compile",
62
+ action="store_true",
63
+ help="Skips the test to see if the current directory is a valid FastLED sketch directory",
64
+ )
65
+ parser.add_argument(
66
+ "--no-auto-updates",
67
+ action="store_true",
68
+ help="Disable automatic updates of the wasm compiler image when using docker.",
69
+ )
70
+ parser.add_argument(
71
+ "--update",
72
+ "--upgrade",
73
+ action="store_true",
74
+ help="Update the wasm compiler (if necessary) before running",
75
+ )
76
+ parser.add_argument(
77
+ "--localhost",
78
+ "--local",
79
+ "-l",
80
+ action="store_true",
81
+ help="Use localhost for web compilation from an instance of fastled --server, creating it if necessary",
82
+ )
83
+ parser.add_argument(
84
+ "--server",
85
+ "-s",
86
+ action="store_true",
87
+ help="Run the server in the current directory, volume mapping fastled if we are in the repo",
88
+ )
89
+
90
+ build_mode = parser.add_mutually_exclusive_group()
91
+ build_mode.add_argument("--debug", action="store_true", help="Build in debug mode")
92
+ build_mode.add_argument(
93
+ "--quick",
94
+ action="store_true",
95
+ default=True,
96
+ help="Build in quick mode (default)",
97
+ )
98
+ build_mode.add_argument(
99
+ "--release", action="store_true", help="Build in release mode"
100
+ )
101
+
102
+ cwd_is_fastled = looks_like_fastled_repo(Path(os.getcwd()))
103
+
104
+ args = parser.parse_args()
105
+
106
+ if args.init:
107
+ example = args.init if args.init is not True else None
108
+ args.directory = project_init(example)
109
+ print("\nInitialized FastLED project in", args.directory)
110
+ print(f"Use 'fastled {args.directory}' to compile the project.")
111
+ sys.exit(0)
112
+
113
+ if not args.update:
114
+ if args.no_auto_updates:
115
+ args.auto_update = False
116
+ else:
117
+ args.auto_update = None
118
+
119
+ if (
120
+ not cwd_is_fastled
121
+ and not args.localhost
122
+ and not args.web
123
+ and not args.server
124
+ ):
125
+ if DockerManager.is_docker_installed():
126
+ if not DockerManager.ensure_linux_containers_for_windows():
127
+ print(
128
+ f"Windows must be in linux containers mode, but is in Windows container mode, Using web compiler at {DEFAULT_URL}."
129
+ )
130
+ args.web = DEFAULT_URL
131
+ else:
132
+ print(
133
+ "Docker is installed. Defaulting to --local mode, use --web to override and use the web compiler instead."
134
+ )
135
+ args.localhost = True
136
+ else:
137
+ print(f"Docker is not installed. Using web compiler at {DEFAULT_URL}.")
138
+ args.web = DEFAULT_URL
139
+ if cwd_is_fastled and not args.web and not args.server:
140
+ print("Forcing --local mode because we are in the FastLED repo")
141
+ args.localhost = True
142
+ if args.localhost:
143
+ args.web = "localhost"
144
+ if args.interactive and not args.server:
145
+ print("--interactive forces --server mode")
146
+ args.server = True
147
+ if args.directory is None and not args.server:
148
+ # does current directory look like a sketch?
149
+ maybe_sketch_dir = Path(os.getcwd())
150
+ if looks_like_sketch_directory(maybe_sketch_dir):
151
+ args.directory = str(maybe_sketch_dir)
152
+ else:
153
+ print("Searching for sketch directories...")
154
+ sketch_directories = find_sketch_directories(maybe_sketch_dir)
155
+ selected_dir = select_sketch_directory(
156
+ sketch_directories, cwd_is_fastled
157
+ )
158
+ if selected_dir:
159
+ print(f"Using sketch directory: {selected_dir}")
160
+ args.directory = selected_dir
161
+ else:
162
+ print(
163
+ "\nYou either need to specify a sketch directory or run in --server mode."
164
+ )
165
+ sys.exit(1)
166
+ elif args.directory is not None and os.path.isfile(args.directory):
167
+ dir_path = Path(args.directory).parent
168
+ if looks_like_sketch_directory(dir_path):
169
+ print(f"Using sketch directory: {dir_path}")
170
+ args.directory = str(dir_path)
171
+
172
+ return args
fastled/project_init.py CHANGED
@@ -9,11 +9,19 @@ ENDPOINT_PROJECT_INIT = f"{DEFAULT_URL}/project/init"
9
9
  ENDPOINT_INFO = f"{DEFAULT_URL}/info"
10
10
  DEFAULT_EXAMPLE = "wasm"
11
11
 
12
+ _EXCLUDED_EXAMPLES = [
13
+ "Pintest",
14
+ "OctoWS2811",
15
+ ]
16
+
12
17
 
13
18
  def get_examples() -> list[str]:
14
19
  response = httpx.get(ENDPOINT_INFO, timeout=4)
15
20
  response.raise_for_status()
16
- return response.json()["examples"]
21
+ examples: list[str] = response.json()["examples"]
22
+ # filter out excluded examples
23
+ examples = [example for example in examples if example not in _EXCLUDED_EXAMPLES]
24
+ return sorted(examples)
17
25
 
18
26
 
19
27
  def _prompt_for_example() -> str:
@@ -62,7 +70,9 @@ def project_init(
62
70
  with zipfile.ZipFile(tmpzip, "r") as zip_ref:
63
71
  zip_ref.extractall(outputdir)
64
72
  tmpzip.unlink()
65
- return outputdir.iterdir().__next__()
73
+ out = outputdir / example
74
+ assert out.exists()
75
+ return out
66
76
 
67
77
 
68
78
  def unit_test() -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastled
3
- Version: 1.1.39
3
+ Version: 1.1.61
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
@@ -27,11 +27,13 @@ Compiles an Arduino/Platformio sketch into a wasm binary that can be run directl
27
27
 
28
28
 
29
29
  [![Linting](https://github.com/zackees/fastled-wasm/actions/workflows/lint.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/lint.yml)
30
- [![Build and Push Multi Docker Image](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml)
31
30
  [![MacOS_Tests](https://github.com/zackees/fastled-wasm/actions/workflows/test_macos.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/test_macos.yml)
32
31
  [![Ubuntu_Tests](https://github.com/zackees/fastled-wasm/actions/workflows/test_ubuntu.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/test_ubuntu.yml)
33
32
  [![Win_Tests](https://github.com/zackees/fastled-wasm/actions/workflows/test_win.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/test_win.yml)
34
33
 
34
+ [![Build and Push Multi Docker Image](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml)
35
+ [![Build Executables](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml)
36
+ [![Publish Release](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml)
35
37
 
36
38
 
37
39
  # About
@@ -85,7 +87,7 @@ You can also spawn a server in one process and then access it in another, like t
85
87
  ```bash
86
88
  fastled --server # server will now run in the background.
87
89
  # now launch the client
88
- fastled examples/wasm --local # local will find the local server use it do the compile.
90
+ fastled examples/wasm --local # local will find the local server and use it to do the compile.
89
91
  ```
90
92
 
91
93
  After compilation a web browser windows will pop up. Changes to the sketch will automatically trigger a recompilation.
@@ -181,7 +183,7 @@ with Api.server() as server:
181
183
 
182
184
  ## Hot reload by default
183
185
 
184
- Once launched, the compiler will remain open, listening to changes and recompiling as necessary and hot-reloading the sketch into the current browser.
186
+ Once launched, the compiler will remain open, listening to changes and recompiling as necessary, hot-reloading the sketch into the current browser.
185
187
 
186
188
  This style of development should be familiar to those doing web development.
187
189
 
@@ -190,19 +192,19 @@ This style of development should be familiar to those doing web development.
190
192
  If you launch `fastled` in the FastLED repo then this tool will automatically detect this and map the src directory into the
191
193
  host container. Whenever there are changes in the source code from the mapped directory, then these will be re-compiled
192
194
  on the next change or if you hit the space bar when prompted. Unlike a sketch folder, a re-compile on the FastLED src
193
- can be much longer, for example if you modify a header file.
195
+ can be much longer, for example, if you modify a header file.
194
196
 
195
197
  ## Big Data in `/data` directory won't be round-tripped
196
198
 
197
199
  Huge blobs of data like video will absolutely kill the compile performance as these blobs would normally have to be shuffled
198
200
  back and forth. Therefore a special directory `data/` is implicitly used to hold this blob data. Any data in this directory
199
- will be replaced with a stub containing the size and hash of the file during upload. On download these stubs are swapped back
201
+ will be replaced with a stub containing the size and hash of the file during upload. On download, these stubs are swapped back
200
202
  with their originals during decompression.
201
203
 
202
- The wasm compiler will recognize all files in the `data/` directory and generate a `files.json` manifest and can be used
204
+ The wasm compiler will recognize all files in the `data/` directory and generate a `files.json` manifest which can be used
203
205
  in your wasm sketch using an emulated SD card system mounted at `/data/` on the SD Card. In order to increase load speed, these
204
- files will be asynchroniously streamed into the running sketch instance during runtime. Files named with *.json, *.csv, *.txt will be
205
- immediately injected in the app before setup() is called and can be used immediatly in setup() in their entirety.
206
+ files will be asynchronously streamed into the running sketch instance during runtime. Files named with *.json, *.csv, *.txt will be
207
+ immediately injected in the app before setup() is called and can be used immediately in setup() in their entirety.
206
208
 
207
209
  All other files will be streamed in. The `Video` element in FastLED is designed to gracefully handle missing data streamed in through
208
210
  the file system.
@@ -211,30 +213,30 @@ For an example of how to use this see `examples/SdCard` which is fully wasm comp
211
213
 
212
214
  ## Compile Speed
213
215
 
214
- The compile speeds for this compiler have been optimized pretty much to the max. There are three compile settings available to the user. The default is `--quick`. Aggressive optimizations are done with `--release` which will aggressively optimize for size. The speed difference between `--release` and `--quick` seems negligable. But `--release` will produce a ~1/3 smaller binary. There is also `--debug`, which will include symbols necessary for debugging and getting the C++ function symbols working correctly in the browser during step through debugging. It works better than expected, but don't expect to have gdb or msvc debugger level of debugging experience.
216
+ There are three compile settings available to the user. The default is `--quick`. Aggressive optimizations are done with `--release` which will optimize for size, although the speed difference between `--release` and `--quick` seems negligible. But `--release` will produce a ~1/3 smaller binary. There is also `--debug`, which will include symbols necessary for debugging and getting the C++ function symbols working correctly in the browser during step-through debugging. In my personal tests it works better than expected, but don't expect to have gdb or msvc debugger level of the debugging experience.
215
217
 
216
- We use `ccache` to cache object files. This seems actually help a lot and is better than platformio's method of tracking what needs to be rebuilt. This works as a two tier cache system. What Platformio misses will be covered by ccache's more advanced file changing system.
218
+ We use `ccache` to cache object files. This seems actually help a lot and is better than Platformio's method of tracking what needs to be rebuilt. This works as a two-tier cache system. What Platformio misses will be covered by ccache's more advanced file changing system.
217
219
 
218
- The compilation to wasm will happen under a lock. Removing this lock requires removing the platformio toolchain as the compiler backend which enforces it's own internal lock preventing parallel use.
220
+ The compilation to wasm will happen under a lock. Removing this lock requires removing the Platformio toolchain as the compiler backend which enforces its own internal lock preventing parallel use.
219
221
 
220
222
  ## Sketch Cache
221
223
 
222
- Sketchs are aggressively finger-printed and stored in a cache. White space, comments, and other superficial data will be stripped out during pre-processing and minimization for fingerprinting. This source file decimation is only used for finger
223
- printing while the actual source files are sent to compiler to preserve line numbers and file names.
224
+ Sketches are aggressively fingerprinted and stored in a cache. White space, comments, and other superficial data will be stripped out during pre-processing and minimization for fingerprinting. This source file decimation is only used for finger
225
+ printing while the actual source files are sent to the compiler to preserve line numbers and file names.
224
226
 
225
- This pre-processing done is done via gcc and special regex's and will happen without a lock. This will allow you to have extremely quick recompiles for whitespace and changes in comments even if the compiler is executing under it's lock.
227
+ This pre-processing done is done via gcc and special regex's and will happen without a lock. This will allow you to have extremely quick recompiles for whitespace and changes in comments.
226
228
 
227
229
  ## Local compiles
228
230
 
229
- If the web-compiler get's congested then it's recommend that you run the compiler locally. This requires docker and will be invoked whenever you pass in `--local`. This will first pull the most recent Docker image of the Fastled compiler, launching a webserver and then connecting to it with the client once it's been up.
231
+ If the web compiler gets congested then it's recommended that you run the compiler locally. This requires docker and will be invoked whenever you pass in `--local`. This will first pull the most recent Docker image of the Fastled compiler, launch a webserver, and then connect to it with the client once it's been up.
230
232
 
231
233
  ## Auto updates
232
234
 
233
- In server mode the git repository will be cloned as a side repo and then periodically updated and rsync'd to the src directory. This allows a long running instance to stay updated.
235
+ In server mode, the git repository will be cloned as a side repo and then periodically updated and rsync'd to the src directory. This allows a long-running instance to stay updated.
234
236
 
235
- ## Compatibility with Arduino sketchs
237
+ ## Compatibility with Arduino sketches
236
238
 
237
- The compatibility is actually pretty good. Most simple sketchs should compile out of the box. Even some of the avr platform includes are stubbed out to make it work. The familiar `digitalWrite()`, `Serial.println()` and other common functions work. Although `digitalRead()` will always return 0 and `analogRead()` will return random numbers.
239
+ The compatibility is pretty good. Most simple sketches should compile out of the box. Even some of the AVR platforms are stubbed out to make it work. For Arduino, the familiar `digitalWrite()`, `Serial.println()`, and other common functions work. Although `digitalRead()` will always return 0 and `analogRead()` will return random numbers.
238
240
 
239
241
  ### Faqs
240
242
 
@@ -242,20 +244,29 @@ Q: How often is the docker image updated?
242
244
  A: It's scheduled for rebuild once a day at 3am Pacific time, and also on every change to this repo.
243
245
 
244
246
  Q: How can I run my own cloud instance of the FastLED wasm compiler?
245
- A: Render.com (which fastled is hosted on) or DigialOcean can accept a github repo and auto-build the docker image.
247
+ A: Render.com (which fastled is hosted on) or DigialOcean can accept a GitHub repo and auto-build the docker image.
246
248
 
247
249
  Q: Why does FastLED tend to become choppy when the browser is in the background?
248
250
  A: FastLED Wasm currently runs on the main thread and therefor Chrome will begin throttling the event loop when the browser is not in the foreground. The solution to this is to move FastLED to a web worker where it will get a background thread that Chrome / Firefox won't throttle.
249
251
 
250
252
  Q: Why does a long `delay()` cause the browser to freeze and become sluggish?
251
- A: `delay()` will block `loop()` which blocks the main thread of the browser. The solution is a webworker which will not affect main thread performance of the browser.
253
+ A: `delay()` will block `loop()` which blocks the main thread of the browser. The solution is a webworker which will not affect the main thread performance of the browser.
252
254
 
253
255
 
254
256
  Q: How can I get the compiled size of my FastLED sketch smaller?
255
- A: A big chunk of space is being used by unnecessary javascript `emscripten` is bundling. This can be tweeked by the wasm_compiler_settings.py file in the FastLED repo.
257
+ A: A big chunk of space is being used by unnecessary javascript `emscripten` bundling. The wasm_compiler_settings.py file in the FastLED repo can tweak this.
256
258
 
257
259
  # Revisions
258
260
 
261
+ * 1.1.61 - Excluded non compiling examples from the Test object as part of the api - no sense in having them if they won't compile.
262
+ * 1.1.60 - Platform executables (macos-arm/macos-x86/windows/linux-x86) now auto building with each release. Add tests.
263
+ * 1.1.52 - Add linux-arm
264
+ * 1.1.49 - Try again.
265
+ * 1.1.46 - Add mac x86 exe
266
+ * 1.1.45 - Another try for web publishing from github.
267
+ * 1.1.42 - Second test for web publishing from github.
268
+ * 1.1.41 - Platform executable (through pyinstaller) now enabled.
269
+ * 1.1.40 - Remove `sketch_directory` from Api object. This was only needed before we had a client/server architecture.
259
270
  * 1.1.39 - Added `LiveClient`, `fastled.Api.live_server()` will spawn it. Allows user to have a live compiling client that re-triggers a compile on file changes.
260
271
  * 1.1.38 - Cleanup the `fastled.Api` object and streamline for general use.
261
272
  * 1.1.37 - `Test.test_examples()` is now unit tested to work correctly.
@@ -1,7 +1,7 @@
1
- fastled/__init__.py,sha256=SQF8-PpioJm6DAQn5vCcc-muwXHBfs0loIofSRoWK8g,3613
1
+ fastled/__init__.py,sha256=LTl4OpLHw08Iw3_c7cyBcVMWnfZsVMtpF5ls5acV4gQ,3462
2
2
  fastled/app.py,sha256=3xg7oVD-UYnKPU8SAY-Cs5UnAYdwpdpuEFRR2N8P1Tg,1787
3
3
  fastled/cli.py,sha256=CNR_pQR0sNVPNuv8e_nmm-0PI8sU-eUBUgnWgWkzW9c,237
4
- fastled/client_server.py,sha256=KQsBKjHfkhgF5EOCHSbJcqu0dPKlOCsbXA2V035VCH0,12403
4
+ fastled/client_server.py,sha256=MGE4rg40EA2ty6nKExVxkjUbPbif1Bbx0vDjwNcDOD8,12563
5
5
  fastled/compile_server.py,sha256=Z7rHFs3M6QPbSCsbgHAQDk6GTVAJMMPCXtD4Y0mu8RM,2659
6
6
  fastled/compile_server_impl.py,sha256=ClBLtFHB0ucaT8tAJfI6o3bJ-LRnXc4Pxy7bVKnFiww,8803
7
7
  fastled/docker_manager.py,sha256=zBCFGk2P3_bS7_SUQ5j2lpsOS3RvIzXYkrJXC6xP69k,25383
@@ -9,9 +9,9 @@ fastled/filewatcher.py,sha256=LwEQJkqADsArZyY499RLAer6JjJyDwaQBcAvT7xmp3c,6708
9
9
  fastled/keyboard.py,sha256=Zz_ggxOUTX2XQEy6K6kAoorVlUev4wEk9Awpvv9aStA,3241
10
10
  fastled/live_client.py,sha256=_KvqmyUyyGpoYET1Z9CdeUVoIbFjIUWwPcTp5XCQuxY,2075
11
11
  fastled/open_browser.py,sha256=vzMBcpDNY0f-Bx9KmEILKDANZ6gvsywCVwn1FRhPXh4,1770
12
- fastled/parse_args.py,sha256=37WsELphNEqGQgmjppZx6uMWE2E-dZ58zCKUl-3mr3Q,6150
12
+ fastled/parse_args.py,sha256=bvIaK_VdFRq6Pd3cOXbP0oculTWMWUkLdhbBR1sdLsc,6410
13
13
  fastled/paths.py,sha256=VsPmgu0lNSCFOoEC0BsTYzDygXqy15AHUfN-tTuzDZA,99
14
- fastled/project_init.py,sha256=oceXH7PqpH578RxfLIQd8mRsPzdCZtNNNigueo8VWps,2117
14
+ fastled/project_init.py,sha256=FH8LtrFwBVijGOzM4UczIdEET7XhXDtf0LkPUMNBVCs,2367
15
15
  fastled/select_sketch_directory.py,sha256=TZdCjl1D7YMKjodMTvDRurPcpAmN3x0TcJxffER2NfM,1314
16
16
  fastled/settings.py,sha256=3eMKv0tLXgIQ0CFDboIp_l5_71rzIIyWg353YjnYJnc,323
17
17
  fastled/sketch.py,sha256=483TrrIdZJfo1MIu5FkD-V5OGmOfHmsZ2f6VvNsJBJM,3299
@@ -22,9 +22,9 @@ fastled/util.py,sha256=t4M3NFMhnCzfYbLvIyJi0RdFssZqbTN_vVIaej1WV-U,265
22
22
  fastled/web_compile.py,sha256=05PeLJ77QQC6PUKjDhsntBmyBola6QQIfF2k-zjYNE4,10261
23
23
  fastled/assets/example.txt,sha256=lTBovRjiz0_TgtAtbA1C5hNi2ffbqnNPqkKg6UiKCT8,54
24
24
  fastled/test/examples.py,sha256=EDXb6KastKOOWzew99zrpmcNcXTcAtYi8eud6F1pnWA,980
25
- fastled-1.1.39.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
26
- fastled-1.1.39.dist-info/METADATA,sha256=a-iU6xg5tbGNPN-2l0Bydnk3Xax9-jfWAFV7ltioC6U,17889
27
- fastled-1.1.39.dist-info/WHEEL,sha256=0VNUDWQJzfRahYI3neAhz2UVbRCtztpN5dPHAGvmGXc,109
28
- fastled-1.1.39.dist-info/entry_points.txt,sha256=RCwmzCSOS4-C2i9EziANq7Z2Zb4KFnEMR1FQC0bBwAw,101
29
- fastled-1.1.39.dist-info/top_level.txt,sha256=Bbv5kpJpZhWNCvDF4K0VcvtBSDMa8B7PTOrZa9CezHY,8
30
- fastled-1.1.39.dist-info/RECORD,,
25
+ fastled-1.1.61.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
26
+ fastled-1.1.61.dist-info/METADATA,sha256=kAnJHjNz0p1C5mu2SXi126MwM-TAXDg9MgJvnW3wANM,18806
27
+ fastled-1.1.61.dist-info/WHEEL,sha256=pxeNX5JdtCe58PUSYP9upmc7jdRPgvT0Gm9kb1SHlVw,109
28
+ fastled-1.1.61.dist-info/entry_points.txt,sha256=RCwmzCSOS4-C2i9EziANq7Z2Zb4KFnEMR1FQC0bBwAw,101
29
+ fastled-1.1.61.dist-info/top_level.txt,sha256=Bbv5kpJpZhWNCvDF4K0VcvtBSDMa8B7PTOrZa9CezHY,8
30
+ fastled-1.1.61.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.5.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any