fastled 1.1.88__py3-none-any.whl → 1.2.2__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 +46 -3
- fastled/app.py +3 -0
- fastled/compile_server_impl.py +5 -9
- fastled/docker_manager.py +29 -0
- fastled/parse_args.py +15 -2
- fastled/project_init.py +8 -13
- fastled/settings.py +4 -0
- fastled/test/can_run_local_docker_tests.py +13 -0
- fastled/test/examples.py +23 -5
- {fastled-1.1.88.dist-info → fastled-1.2.2.dist-info}/METADATA +16 -9
- {fastled-1.1.88.dist-info → fastled-1.2.2.dist-info}/RECORD +15 -14
- {fastled-1.1.88.dist-info → fastled-1.2.2.dist-info}/LICENSE +0 -0
- {fastled-1.1.88.dist-info → fastled-1.2.2.dist-info}/WHEEL +0 -0
- {fastled-1.1.88.dist-info → fastled-1.2.2.dist-info}/entry_points.txt +0 -0
- {fastled-1.1.88.dist-info → fastled-1.2.2.dist-info}/top_level.txt +0 -0
fastled/__init__.py
CHANGED
@@ -13,15 +13,18 @@ from .types import BuildMode, CompileResult, CompileServerError
|
|
13
13
|
# IMPORTANT! There's a bug in github which will REJECT any version update
|
14
14
|
# that has any other change in the repo. Please bump the version as the
|
15
15
|
# ONLY change in a commit, or else the pypi update and the release will fail.
|
16
|
-
__version__ = "1.
|
16
|
+
__version__ = "1.2.2"
|
17
17
|
|
18
18
|
|
19
19
|
class Api:
|
20
20
|
@staticmethod
|
21
|
-
def get_examples():
|
21
|
+
def get_examples(host: str | CompileServer | None = None) -> list[str]:
|
22
22
|
from fastled.project_init import get_examples
|
23
23
|
|
24
|
-
|
24
|
+
if isinstance(host, CompileServer):
|
25
|
+
host = host.url()
|
26
|
+
|
27
|
+
return get_examples(host=host)
|
25
28
|
|
26
29
|
@staticmethod
|
27
30
|
def project_init(
|
@@ -109,7 +112,47 @@ class Api:
|
|
109
112
|
server.stop()
|
110
113
|
|
111
114
|
|
115
|
+
class Docker:
|
116
|
+
@staticmethod
|
117
|
+
def is_installed() -> bool:
|
118
|
+
from fastled.docker_manager import DockerManager
|
119
|
+
|
120
|
+
return DockerManager.is_docker_installed()
|
121
|
+
|
122
|
+
@staticmethod
|
123
|
+
def is_running() -> bool:
|
124
|
+
from fastled.docker_manager import DockerManager
|
125
|
+
|
126
|
+
return DockerManager.is_running()
|
127
|
+
|
128
|
+
@staticmethod
|
129
|
+
def is_container_running(container_name: str | None = None) -> bool:
|
130
|
+
# from fastled.docker import is_container_running
|
131
|
+
from fastled.docker_manager import DockerManager
|
132
|
+
from fastled.settings import CONTAINER_NAME
|
133
|
+
|
134
|
+
docker = DockerManager()
|
135
|
+
container_name = container_name or CONTAINER_NAME
|
136
|
+
return docker.is_container_running(container_name)
|
137
|
+
|
138
|
+
@staticmethod
|
139
|
+
def purge() -> None:
|
140
|
+
from fastled.docker_manager import DockerManager
|
141
|
+
from fastled.settings import CONTAINER_NAME
|
142
|
+
|
143
|
+
docker = DockerManager()
|
144
|
+
docker.purge(CONTAINER_NAME)
|
145
|
+
|
146
|
+
|
112
147
|
class Test:
|
148
|
+
__test__ = False # This prevents unittest from recognizing it as a test class.
|
149
|
+
|
150
|
+
@staticmethod
|
151
|
+
def can_run_local_docker_tests() -> bool:
|
152
|
+
from fastled.test.can_run_local_docker_tests import can_run_local_docker_tests
|
153
|
+
|
154
|
+
return can_run_local_docker_tests()
|
155
|
+
|
113
156
|
@staticmethod
|
114
157
|
def test_examples(
|
115
158
|
examples: list[str] | None = None, host: str | CompileServer | None = None
|
fastled/app.py
CHANGED
@@ -16,6 +16,9 @@ def run_server(args: argparse.Namespace) -> int:
|
|
16
16
|
interactive = args.interactive
|
17
17
|
auto_update = args.auto_update
|
18
18
|
mapped_dir = Path(args.directory).absolute() if args.directory else None
|
19
|
+
if interactive and mapped_dir is None:
|
20
|
+
print("Select a sketch when you enter interactive mode.")
|
21
|
+
return 1
|
19
22
|
compile_server = CompileServer(
|
20
23
|
interactive=interactive,
|
21
24
|
auto_updates=auto_update,
|
fastled/compile_server_impl.py
CHANGED
@@ -12,14 +12,10 @@ from fastled.docker_manager import (
|
|
12
12
|
DockerManager,
|
13
13
|
RunningContainer,
|
14
14
|
)
|
15
|
-
from fastled.settings import SERVER_PORT
|
15
|
+
from fastled.settings import DEFAULT_CONTAINER_NAME, IMAGE_NAME, SERVER_PORT
|
16
16
|
from fastled.sketch import looks_like_fastled_repo
|
17
17
|
from fastled.types import BuildMode, CompileResult, CompileServerError
|
18
18
|
|
19
|
-
_IMAGE_NAME = "niteris/fastled-wasm"
|
20
|
-
_DEFAULT_CONTAINER_NAME = "fastled-wasm-compiler"
|
21
|
-
|
22
|
-
|
23
19
|
SERVER_OPTIONS = [
|
24
20
|
"--allow-shutdown", # Allow the server to be shut down without a force kill.
|
25
21
|
"--no-auto-update", # Don't auto live updates from the git repo.
|
@@ -46,7 +42,7 @@ class CompileServerImpl:
|
|
46
42
|
auto_start: bool = True,
|
47
43
|
container_name: str | None = None,
|
48
44
|
) -> None:
|
49
|
-
container_name = container_name or
|
45
|
+
container_name = container_name or DEFAULT_CONTAINER_NAME
|
50
46
|
if interactive and not mapped_dir:
|
51
47
|
raise ValueError(
|
52
48
|
"Interactive mode requires a mapped directory point to a sketch"
|
@@ -178,7 +174,7 @@ class CompileServerImpl:
|
|
178
174
|
else:
|
179
175
|
upgrade = self.auto_updates
|
180
176
|
self.docker.validate_or_download_image(
|
181
|
-
image_name=
|
177
|
+
image_name=IMAGE_NAME, tag="main", upgrade=upgrade
|
182
178
|
)
|
183
179
|
DISK_CACHE.put("last-update", now_str)
|
184
180
|
|
@@ -214,7 +210,7 @@ class CompileServerImpl:
|
|
214
210
|
cmd_str = subprocess.list2cmdline(server_command)
|
215
211
|
if not self.interactive:
|
216
212
|
container: Container = self.docker.run_container_detached(
|
217
|
-
image_name=
|
213
|
+
image_name=IMAGE_NAME,
|
218
214
|
tag="main",
|
219
215
|
container_name=self.container_name,
|
220
216
|
command=cmd_str,
|
@@ -228,7 +224,7 @@ class CompileServerImpl:
|
|
228
224
|
return port
|
229
225
|
else:
|
230
226
|
self.docker.run_container_interactive(
|
231
|
-
image_name=
|
227
|
+
image_name=IMAGE_NAME,
|
232
228
|
tag="main",
|
233
229
|
container_name=self.container_name,
|
234
230
|
command=cmd_str,
|
fastled/docker_manager.py
CHANGED
@@ -610,6 +610,35 @@ class DockerManager:
|
|
610
610
|
print(f"Container {container_name} not found.")
|
611
611
|
return False
|
612
612
|
|
613
|
+
def purge(self, image_name: str) -> None:
|
614
|
+
"""
|
615
|
+
Remove all containers and images associated with the given image name.
|
616
|
+
|
617
|
+
Args:
|
618
|
+
image_name: The name of the image to purge (without tag)
|
619
|
+
"""
|
620
|
+
print(f"Purging all containers and images for {image_name}...")
|
621
|
+
|
622
|
+
# Remove all containers using this image
|
623
|
+
try:
|
624
|
+
containers = self.client.containers.list(all=True)
|
625
|
+
for container in containers:
|
626
|
+
if any(image_name in tag for tag in container.image.tags):
|
627
|
+
print(f"Removing container {container.name}")
|
628
|
+
container.remove(force=True)
|
629
|
+
except Exception as e:
|
630
|
+
print(f"Error removing containers: {e}")
|
631
|
+
|
632
|
+
# Remove all images with this name
|
633
|
+
try:
|
634
|
+
images = self.client.images.list()
|
635
|
+
for image in images:
|
636
|
+
if any(image_name in tag for tag in image.tags):
|
637
|
+
print(f"Removing image {image.tags}")
|
638
|
+
self.client.images.remove(image.id, force=True)
|
639
|
+
except Exception as e:
|
640
|
+
print(f"Error removing images: {e}")
|
641
|
+
|
613
642
|
|
614
643
|
def main():
|
615
644
|
# Register SIGINT handler
|
fastled/parse_args.py
CHANGED
@@ -4,10 +4,9 @@ import sys
|
|
4
4
|
from pathlib import Path
|
5
5
|
|
6
6
|
from fastled import __version__
|
7
|
-
from fastled.docker_manager import DockerManager
|
8
7
|
from fastled.project_init import project_init
|
9
8
|
from fastled.select_sketch_directory import select_sketch_directory
|
10
|
-
from fastled.settings import DEFAULT_URL
|
9
|
+
from fastled.settings import DEFAULT_URL, IMAGE_NAME
|
11
10
|
from fastled.sketch import (
|
12
11
|
find_sketch_directories,
|
13
12
|
looks_like_fastled_repo,
|
@@ -86,6 +85,11 @@ def parse_args() -> argparse.Namespace:
|
|
86
85
|
action="store_true",
|
87
86
|
help="Run the server in the current directory, volume mapping fastled if we are in the repo",
|
88
87
|
)
|
88
|
+
parser.add_argument(
|
89
|
+
"--purge",
|
90
|
+
action="store_true",
|
91
|
+
help="Remove all FastLED containers and images",
|
92
|
+
)
|
89
93
|
|
90
94
|
build_mode = parser.add_mutually_exclusive_group()
|
91
95
|
build_mode.add_argument("--debug", action="store_true", help="Build in debug mode")
|
@@ -103,6 +107,13 @@ def parse_args() -> argparse.Namespace:
|
|
103
107
|
|
104
108
|
args = parser.parse_args()
|
105
109
|
|
110
|
+
if args.purge:
|
111
|
+
from fastled.docker_manager import DockerManager
|
112
|
+
|
113
|
+
docker = DockerManager()
|
114
|
+
docker.purge(IMAGE_NAME)
|
115
|
+
sys.exit(0)
|
116
|
+
|
106
117
|
if args.init:
|
107
118
|
example = args.init if args.init is not True else None
|
108
119
|
args.directory = project_init(example, args.directory)
|
@@ -122,6 +133,8 @@ def parse_args() -> argparse.Namespace:
|
|
122
133
|
and not args.web
|
123
134
|
and not args.server
|
124
135
|
):
|
136
|
+
from fastled.docker_manager import DockerManager
|
137
|
+
|
125
138
|
if DockerManager.is_docker_installed():
|
126
139
|
if not DockerManager.ensure_linux_containers_for_windows():
|
127
140
|
print(
|
fastled/project_init.py
CHANGED
@@ -5,22 +5,15 @@ import httpx
|
|
5
5
|
|
6
6
|
from fastled.settings import DEFAULT_URL
|
7
7
|
|
8
|
-
ENDPOINT_PROJECT_INIT = f"{DEFAULT_URL}/project/init"
|
9
|
-
ENDPOINT_INFO = f"{DEFAULT_URL}/info"
|
10
8
|
DEFAULT_EXAMPLE = "wasm"
|
11
9
|
|
12
|
-
_EXCLUDED_EXAMPLES = [
|
13
|
-
"Pintest",
|
14
|
-
"OctoWS2811",
|
15
|
-
]
|
16
10
|
|
17
|
-
|
18
|
-
|
19
|
-
|
11
|
+
def get_examples(host: str | None = None) -> list[str]:
|
12
|
+
host = host or DEFAULT_URL
|
13
|
+
url_info = f"{host}/info"
|
14
|
+
response = httpx.get(url_info, timeout=4)
|
20
15
|
response.raise_for_status()
|
21
16
|
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
17
|
return sorted(examples)
|
25
18
|
|
26
19
|
|
@@ -61,8 +54,9 @@ def project_init(
|
|
61
54
|
)
|
62
55
|
example = DEFAULT_EXAMPLE
|
63
56
|
assert example is not None
|
64
|
-
endpoint_url = f"{host}/project/init
|
65
|
-
|
57
|
+
endpoint_url = f"{host}/project/init"
|
58
|
+
json = example
|
59
|
+
response = httpx.post(endpoint_url, timeout=20, json=json)
|
66
60
|
response.raise_for_status()
|
67
61
|
content = response.content
|
68
62
|
tmpzip = outputdir / "fastled.zip"
|
@@ -72,6 +66,7 @@ def project_init(
|
|
72
66
|
zip_ref.extractall(outputdir)
|
73
67
|
tmpzip.unlink()
|
74
68
|
out = outputdir / example
|
69
|
+
print(f"Project initialized at {out}")
|
75
70
|
assert out.exists()
|
76
71
|
return out
|
77
72
|
|
fastled/settings.py
CHANGED
@@ -7,3 +7,7 @@ PLATFORM_TAG: str = "-arm64" if IS_ARM else ""
|
|
7
7
|
CONTAINER_NAME = f"fastled-wasm-compiler{PLATFORM_TAG}"
|
8
8
|
DEFAULT_URL = str(os.environ.get("FASTLED_URL", "https://fastled.onrender.com"))
|
9
9
|
SERVER_PORT = 9021
|
10
|
+
|
11
|
+
IMAGE_NAME = "niteris/fastled-wasm"
|
12
|
+
DEFAULT_CONTAINER_NAME = "fastled-wasm-compiler"
|
13
|
+
# IMAGE_TAG = "main"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import os
|
2
|
+
import platform
|
3
|
+
|
4
|
+
|
5
|
+
def can_run_local_docker_tests() -> bool:
|
6
|
+
"""Check if this system can run Docker Tests"""
|
7
|
+
is_github_runner = "GITHUB_ACTIONS" in os.environ
|
8
|
+
if not is_github_runner:
|
9
|
+
from fastled.docker_manager import DockerManager
|
10
|
+
|
11
|
+
return DockerManager.is_docker_installed()
|
12
|
+
# this only works in ubuntu at the moment
|
13
|
+
return platform.system() == "Linux"
|
fastled/test/examples.py
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
from tempfile import TemporaryDirectory
|
2
|
+
from time import time
|
3
|
+
from warnings import warn
|
4
|
+
|
5
|
+
_FILTER = True
|
2
6
|
|
3
7
|
|
4
8
|
def test_examples(
|
@@ -8,13 +12,24 @@ def test_examples(
|
|
8
12
|
from fastled import Api
|
9
13
|
|
10
14
|
out: dict[str, Exception] = {}
|
11
|
-
examples = Api.get_examples() if examples is None else examples
|
15
|
+
examples = Api.get_examples(host=host) if examples is None else examples
|
16
|
+
if host is None and _FILTER:
|
17
|
+
examples.remove("Chromancer") # Brutal
|
18
|
+
examples.remove("LuminescentGrand")
|
12
19
|
with TemporaryDirectory() as tmpdir:
|
13
20
|
for example in examples:
|
14
21
|
print(f"Initializing example: {example}")
|
15
|
-
|
22
|
+
try:
|
23
|
+
sketch_dir = Api.project_init(example, outputdir=tmpdir, host=host)
|
24
|
+
except Exception as e:
|
25
|
+
warn(f"Failed to initialize example: {example}, error: {e}")
|
26
|
+
out[example] = e
|
27
|
+
continue
|
16
28
|
print(f"Project initialized at: {sketch_dir}")
|
29
|
+
start = time()
|
17
30
|
print(f"Compiling example: {example}")
|
31
|
+
diff = time() - start
|
32
|
+
print(f"Compilation took: {diff:.2f} seconds")
|
18
33
|
result = Api.web_compile(sketch_dir, host=host)
|
19
34
|
if not result.success:
|
20
35
|
out[example] = Exception(result.stdout)
|
@@ -22,9 +37,12 @@ def test_examples(
|
|
22
37
|
|
23
38
|
|
24
39
|
def unit_test() -> None:
|
25
|
-
|
26
|
-
|
27
|
-
|
40
|
+
from fastled import Api
|
41
|
+
|
42
|
+
with Api.server(auto_updates=True) as server:
|
43
|
+
out = test_examples(host=server.url())
|
44
|
+
if out:
|
45
|
+
raise RuntimeError(f"Failed tests: {out}")
|
28
46
|
|
29
47
|
|
30
48
|
if __name__ == "__main__":
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: fastled
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.2.2
|
4
4
|
Summary: FastLED Wasm Compiler
|
5
5
|
Home-page: https://github.com/zackees/fastled-wasm
|
6
6
|
Maintainer: Zachary Vorhies
|
@@ -23,9 +23,6 @@ Requires-Dist: progress>=1.6
|
|
23
23
|
|
24
24
|
# FastLED Wasm compiler
|
25
25
|
|
26
|
-
Compiles an Arduino/Platformio sketch into a wasm binary that can be run directly in the web browser.
|
27
|
-
|
28
|
-
|
29
26
|
[](https://github.com/zackees/fastled-wasm/actions/workflows/lint.yml)
|
30
27
|
[](https://github.com/zackees/fastled-wasm/actions/workflows/test_macos.yml)
|
31
28
|
[](https://github.com/zackees/fastled-wasm/actions/workflows/test_ubuntu.yml)
|
@@ -35,9 +32,11 @@ Compiles an Arduino/Platformio sketch into a wasm binary that can be run directl
|
|
35
32
|
[](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml)
|
36
33
|
[](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml)
|
37
34
|
|
38
|
-
# Demo
|
39
35
|
|
40
|
-
|
36
|
+
|
37
|
+
## Compile your FastLED sketch and run it on the Browser!
|
38
|
+
|
39
|
+

|
41
40
|
|
42
41
|
|
43
42
|
# About
|
@@ -46,11 +45,17 @@ This python app will compile your FastLED style sketches into html/js/wasm outpu
|
|
46
45
|
|
47
46
|
Compile times are extremely fast, thanks to aggressive object caching for C++ and sketch fingerprinting with a zip file cache. Recompilation of sketch files with minimal changes will occure in less than a second.
|
48
47
|
|
49
|
-
|
48
|
+
If you have docker installed, the compiler will download the docker image and run a private local server on your machine. If you don't have Docker installed then the app will fall back to using the public web compiler.
|
49
|
+
|
50
|
+
In every conceivable way, the local compiler will be much faster than the web version.
|
51
|
+
|
52
|
+
# Demo
|
53
|
+
|
54
|
+
https://zackees.github.io/fastled-wasm/
|
50
55
|
|
51
|
-
|
52
|
-
has the advantage that as a persistant service the compile cache will remain much more up to date.
|
56
|
+
# Tutorial video
|
53
57
|
|
58
|
+
**Note this video is a little outdated, you will install the app now with `pip install fastled` and run it like `fastled mysketchfolder`**
|
54
59
|
|
55
60
|
https://github.com/user-attachments/assets/64ae0e6c-5f8b-4830-ab87-dcc25bc61218
|
56
61
|
|
@@ -260,6 +265,8 @@ A: A big chunk of space is being used by unnecessary javascript `emscripten` bun
|
|
260
265
|
|
261
266
|
# Revisions
|
262
267
|
|
268
|
+
* 1.2.22 - Added `--purge` and added docker api at __init__.
|
269
|
+
* 1.2.00 - `fastled.exe` is now a signed binary on windows, however it's a self signed binary so you'll still get the warning on the first open. There's been a small api change between the server and the client for fetching projects.
|
263
270
|
* 1.1.69 - Changed the binary name to `fastled.exe` instead of something like `fastled-windows-x64.exe`
|
264
271
|
* 1.1.68 - Add a site builder to fastled.Test which generates a website with a bunch of demos. This is used to build the demo site automatically.
|
265
272
|
* 1.1.67 - Pinned all the minimum versions of dependencies so we don't bind to an out of date py dep: https://github.com/zackees/fastled-wasm/issues/3
|
@@ -1,19 +1,19 @@
|
|
1
|
-
fastled/__init__.py,sha256=
|
2
|
-
fastled/app.py,sha256=
|
1
|
+
fastled/__init__.py,sha256=XuiOBb_pqwouDkDxbp5hrYCJLRQo1kHiwVplzj3LYN8,5300
|
2
|
+
fastled/app.py,sha256=Y1Q5mx4zdQbZ2AaB43ZqJo-w_8ehAaWVNtvTyeCRSaE,1970
|
3
3
|
fastled/cli.py,sha256=FjVr31ht0UPlAcmX-84NwfAGMQHTkrCe4o744jCAxiw,375
|
4
4
|
fastled/client_server.py,sha256=8L62zNtkGtErDtWrr4XVNsv7ji2zoS5rlqfCnwI3VKU,13177
|
5
5
|
fastled/compile_server.py,sha256=Z7rHFs3M6QPbSCsbgHAQDk6GTVAJMMPCXtD4Y0mu8RM,2659
|
6
|
-
fastled/compile_server_impl.py,sha256=
|
7
|
-
fastled/docker_manager.py,sha256=
|
6
|
+
fastled/compile_server_impl.py,sha256=B_7zjdKHxX2JbNcx26hntwtk8-MyQTs6LMZlpOEuloM,8746
|
7
|
+
fastled/docker_manager.py,sha256=J6epThU164XAKe8pDsquLs8ytFFn6QAch2PEVeRNY80,26538
|
8
8
|
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=
|
12
|
+
fastled/parse_args.py,sha256=IN63KKFX8uO5h5JSrFtHOFoov6Sw9v41NwB-VitU0No,6579
|
13
13
|
fastled/paths.py,sha256=VsPmgu0lNSCFOoEC0BsTYzDygXqy15AHUfN-tTuzDZA,99
|
14
|
-
fastled/project_init.py,sha256=
|
14
|
+
fastled/project_init.py,sha256=QEghpy5Vonc_fTF--3L5ySrQ1bDpdJpfnlEHHQLDKRk,2287
|
15
15
|
fastled/select_sketch_directory.py,sha256=TZdCjl1D7YMKjodMTvDRurPcpAmN3x0TcJxffER2NfM,1314
|
16
|
-
fastled/settings.py,sha256=
|
16
|
+
fastled/settings.py,sha256=WwNYzZEGb_fk_25lx03_yIBNGRXWloyRm7FnQhHiJf8,430
|
17
17
|
fastled/sketch.py,sha256=483TrrIdZJfo1MIu5FkD-V5OGmOfHmsZ2f6VvNsJBJM,3299
|
18
18
|
fastled/spinner.py,sha256=VHxmvB92P0Z_zYxRajb5HiNmkHHvZ5dG7hKtZltzpcs,867
|
19
19
|
fastled/string_diff.py,sha256=UR1oRhg9lsPzAG4bn_MwJMCn0evP5AigkBiwLiI9fgA,1354
|
@@ -22,10 +22,11 @@ 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/site/build.py,sha256=UDWaked5QFPibbKZSoDrQgiP1Laoh8f0Fbj8Qfey0I4,12503
|
25
|
-
fastled/test/
|
26
|
-
fastled
|
27
|
-
fastled-1.
|
28
|
-
fastled-1.
|
29
|
-
fastled-1.
|
30
|
-
fastled-1.
|
31
|
-
fastled-1.
|
25
|
+
fastled/test/can_run_local_docker_tests.py,sha256=LEuUbHctRhNNFWcvnz2kEGmjDJeXO4c3kNpizm3yVJs,400
|
26
|
+
fastled/test/examples.py,sha256=6xPwx_k9_XwYTpI1nk4SrYbsJKHJACd30GzD1epGqhY,1597
|
27
|
+
fastled-1.2.2.dist-info/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
|
28
|
+
fastled-1.2.2.dist-info/METADATA,sha256=sSe6CClj0Y2L_59L4-hsfDeoyYav2rm6pjlF-za1lOw,19341
|
29
|
+
fastled-1.2.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
30
|
+
fastled-1.2.2.dist-info/entry_points.txt,sha256=RCwmzCSOS4-C2i9EziANq7Z2Zb4KFnEMR1FQC0bBwAw,101
|
31
|
+
fastled-1.2.2.dist-info/top_level.txt,sha256=Bbv5kpJpZhWNCvDF4K0VcvtBSDMa8B7PTOrZa9CezHY,8
|
32
|
+
fastled-1.2.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|