fastled 1.4.32__py3-none-any.whl → 1.4.34__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
@@ -7,6 +7,7 @@ from typing import Generator
7
7
 
8
8
  from .__version__ import __version__
9
9
  from .compile_server import CompileServer
10
+ from .emoji_util import EMO
10
11
  from .live_client import LiveClient
11
12
  from .settings import DOCKER_FILE, IMAGE_NAME
12
13
  from .site.build import build
@@ -54,7 +55,7 @@ class Api:
54
55
  allow_libcompile = looks_like_fastled_repo(Path(".").resolve())
55
56
  if not allow_libcompile:
56
57
  print(
57
- "⚠️ libfastled compilation disabled: not running in FastLED repository"
58
+ f"{EMO('⚠️', 'WARNING:')} libfastled compilation disabled: not running in FastLED repository"
58
59
  )
59
60
 
60
61
  out: CompileResult = web_compile(
fastled/__version__.py CHANGED
@@ -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.32"
4
+ __version__ = "1.4.34"
5
5
 
6
6
  __version_url_latest__ = "https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/src/fastled/__version__.py"
fastled/app.py CHANGED
@@ -9,6 +9,7 @@ from pathlib import Path
9
9
 
10
10
  from fastled.client_server import run_client_server
11
11
  from fastled.compile_server import CompileServer
12
+ from fastled.emoji_util import EMO
12
13
  from fastled.filewatcher import file_watcher_set
13
14
  from fastled.parse_args import Args, parse_args
14
15
  from fastled.sketch import find_sketch_directories, looks_like_fastled_repo
@@ -79,7 +80,7 @@ def main() -> int:
79
80
  # Check if Playwright browsers are installed
80
81
  playwright_dir = Path.home() / ".fastled" / "playwright"
81
82
  if playwright_dir.exists() and any(playwright_dir.iterdir()):
82
- print(f"🎭 Playwright browsers available at: {playwright_dir}")
83
+ print(f"{EMO('🎭', '*')} Playwright browsers available at: {playwright_dir}")
83
84
 
84
85
  # Resolve some of the last interactive arguments
85
86
  # 1. If interactive is set and the sketch directory is not given,
fastled/client_server.py CHANGED
@@ -10,6 +10,7 @@ from pathlib import Path
10
10
 
11
11
  from fastled.compile_server import CompileServer
12
12
  from fastled.docker_manager import DockerManager
13
+ from fastled.emoji_util import EMO
13
14
  from fastled.filewatcher import DebouncedFileWatcherProcess, FileWatcherProcess
14
15
  from fastled.find_good_connection import ConnectionResult
15
16
  from fastled.keyboard import SpaceBarWatcher
@@ -100,7 +101,7 @@ def _run_web_compiler(
100
101
 
101
102
  # Guard: libfastled compilation requires volume source mapping
102
103
  if not allow_libcompile:
103
- print("⚠️ libfastled compilation disabled.")
104
+ print(f"{EMO('⚠️', 'WARNING:')} libfastled compilation disabled.")
104
105
 
105
106
  start = time.time()
106
107
  web_result = web_compile(
@@ -122,14 +123,59 @@ def _run_web_compiler(
122
123
  (output_dir / "index.html").write_text(error_html, encoding="utf-8")
123
124
  return web_result
124
125
 
126
+ # Extract zip contents to fastled_js directory
127
+ extraction_start_time = time.time()
128
+ output_dir.mkdir(exist_ok=True)
129
+ with tempfile.TemporaryDirectory() as temp_dir:
130
+ temp_path = Path(temp_dir)
131
+ temp_zip = temp_path / "result.zip"
132
+ temp_zip.write_bytes(web_result.zip_bytes)
133
+
134
+ # Clear existing contents
135
+ shutil.rmtree(output_dir, ignore_errors=True)
136
+ output_dir.mkdir(exist_ok=True)
137
+
138
+ # Extract zip contents
139
+ shutil.unpack_archive(temp_zip, output_dir, "zip")
140
+ extraction_time = time.time() - extraction_start_time
141
+
125
142
  def print_results() -> None:
126
143
  hash_value = (
127
144
  web_result.hash_value
128
145
  if web_result.hash_value is not None
129
146
  else "NO HASH VALUE"
130
147
  )
148
+
149
+ # Build timing breakdown
150
+ timing_breakdown = f" Time: {diff:.2f} (seconds)"
151
+ if hasattr(web_result, "zip_time"):
152
+ timing_breakdown += f"\n zip creation: {web_result.zip_time:.2f}"
153
+ if web_result.libfastled_time > 0:
154
+ timing_breakdown += (
155
+ f"\n libfastled: {web_result.libfastled_time:.2f}"
156
+ )
157
+ timing_breakdown += (
158
+ f"\n sketch compile + link: {web_result.sketch_time:.2f}"
159
+ )
160
+ if hasattr(web_result, "response_processing_time"):
161
+ timing_breakdown += f"\n response processing: {web_result.response_processing_time:.2f}"
162
+
163
+ # Calculate any unaccounted time
164
+ accounted_time = (
165
+ web_result.zip_time
166
+ + web_result.libfastled_time
167
+ + web_result.sketch_time
168
+ + web_result.response_processing_time
169
+ + extraction_time
170
+ )
171
+ unaccounted_time = diff - accounted_time
172
+ if extraction_time > 0.01:
173
+ timing_breakdown += f"\n extraction: {extraction_time:.2f}"
174
+ if unaccounted_time > 0.01:
175
+ timing_breakdown += f"\n other overhead: {unaccounted_time:.2f}"
176
+
131
177
  print(
132
- f"\nWeb compilation successful\n Time: {diff:.2f}\n output: {output_dir}\n hash: {hash_value}\n zip size: {len(web_result.zip_bytes)} bytes"
178
+ f"\nWeb compilation successful\n{timing_breakdown}\n output: {output_dir}\n hash: {hash_value}\n zip size: {len(web_result.zip_bytes)} bytes"
133
179
  )
134
180
 
135
181
  # now check to see if the hash value is the same as the last hash value
@@ -138,20 +184,6 @@ def _run_web_compiler(
138
184
  print_results()
139
185
  return web_result
140
186
 
141
- # Extract zip contents to fastled_js directory
142
- output_dir.mkdir(exist_ok=True)
143
- with tempfile.TemporaryDirectory() as temp_dir:
144
- temp_path = Path(temp_dir)
145
- temp_zip = temp_path / "result.zip"
146
- temp_zip.write_bytes(web_result.zip_bytes)
147
-
148
- # Clear existing contents
149
- shutil.rmtree(output_dir, ignore_errors=True)
150
- output_dir.mkdir(exist_ok=True)
151
-
152
- # Extract zip contents
153
- shutil.unpack_archive(temp_zip, output_dir, "zip")
154
-
155
187
  _chunked_print(web_result.stdout)
156
188
  print_results()
157
189
  return web_result
@@ -252,16 +284,20 @@ def _background_update_docker_image() -> None:
252
284
  image_name=IMAGE_NAME, tag="latest", upgrade=True
253
285
  )
254
286
  if updated:
255
- print("✅ Background docker image update completed successfully.")
287
+ print(
288
+ f"{EMO('✅', 'SUCCESS:')} Background docker image update completed successfully."
289
+ )
256
290
  else:
257
- print("ℹ️ Docker image was already up to date.")
291
+ print(f"{EMO('ℹ️', 'INFO:')} Docker image was already up to date.")
258
292
  except KeyboardInterrupt:
259
- print("⚠️ Background docker image update interrupted by user.")
293
+ print(
294
+ f"{EMO('⚠️', 'WARNING:')} Background docker image update interrupted by user."
295
+ )
260
296
  import _thread
261
297
 
262
298
  _thread.interrupt_main()
263
299
  except Exception as e:
264
- print(f"⚠️ Background docker image update failed: {e}")
300
+ print(f"{EMO('⚠️', 'WARNING:')} Background docker image update failed: {e}")
265
301
 
266
302
 
267
303
  def _is_local_host(url: str) -> bool:
@@ -15,6 +15,7 @@ from fastled.docker_manager import (
15
15
  RunningContainer,
16
16
  Volume,
17
17
  )
18
+ from fastled.emoji_util import EMO
18
19
  from fastled.settings import DEFAULT_CONTAINER_NAME, IMAGE_NAME, SERVER_PORT
19
20
  from fastled.sketch import looks_like_fastled_repo
20
21
  from fastled.types import BuildMode, CompileResult, CompileServerError
@@ -76,7 +77,7 @@ class CompileServerImpl:
76
77
  # If we don't have fastled_src_dir (not in FastLED repo), disable libcompile
77
78
  if allow_libcompile and self.fastled_src_dir is None:
78
79
  print(
79
- "⚠️ libfastled compilation disabled: volume source mapping not available"
80
+ f"{EMO('⚠️', 'WARNING:')} libfastled compilation disabled: volume source mapping not available"
80
81
  )
81
82
  print(" (not running in FastLED repository)")
82
83
  allow_libcompile = False
fastled/emoji_util.py ADDED
@@ -0,0 +1,15 @@
1
+ """
2
+ Emoji utility functions for handling Unicode display issues on Windows cmd.exe
3
+ """
4
+
5
+ import sys
6
+
7
+
8
+ def EMO(emoji: str, fallback: str) -> str:
9
+ """Get emoji with fallback for systems that don't support Unicode properly"""
10
+ try:
11
+ # Test if we can encode the emoji properly
12
+ emoji.encode(sys.stdout.encoding or "utf-8")
13
+ return emoji
14
+ except (UnicodeEncodeError, AttributeError):
15
+ return fallback
fastled/types.py CHANGED
@@ -12,6 +12,10 @@ class CompileResult:
12
12
  stdout: str
13
13
  hash_value: str | None
14
14
  zip_bytes: bytes
15
+ zip_time: float
16
+ libfastled_time: float
17
+ sketch_time: float
18
+ response_processing_time: float
15
19
 
16
20
  def __bool__(self) -> bool:
17
21
  return self.success
fastled/web_compile.py CHANGED
@@ -196,16 +196,30 @@ def _process_compile_response(
196
196
  response: httpx.Response,
197
197
  zip_result: ZipResult,
198
198
  start_time: float,
199
+ zip_time: float,
200
+ libfastled_time: float,
201
+ sketch_time: float,
199
202
  ) -> CompileResult:
200
203
  """Process the compile response and return the final result."""
201
204
  if response.status_code != 200:
202
205
  json_response = response.json()
203
206
  detail = json_response.get("detail", "Could not compile")
204
207
  return CompileResult(
205
- success=False, stdout=detail, hash_value=None, zip_bytes=b""
208
+ success=False,
209
+ stdout=detail,
210
+ hash_value=None,
211
+ zip_bytes=b"",
212
+ zip_time=zip_time,
213
+ libfastled_time=libfastled_time,
214
+ sketch_time=sketch_time,
215
+ response_processing_time=0.0, # No response processing in error case
206
216
  )
207
217
 
208
218
  print(f"Response status code: {response}")
219
+
220
+ # Time the response processing
221
+ response_processing_start = time.time()
222
+
209
223
  # Create a temporary directory to extract the zip
210
224
  with tempfile.TemporaryDirectory() as extract_dir:
211
225
  extract_path = Path(extract_dir)
@@ -250,14 +264,32 @@ def _process_compile_response(
250
264
  relative_path = file_path.relative_to(extract_path)
251
265
  out_zip.write(file_path, relative_path)
252
266
 
267
+ response_processing_time = time.time() - response_processing_start
253
268
  diff_time = time.time() - start_time
254
- msg = f"Compilation success, took {diff_time:.2f} seconds"
269
+
270
+ # Create detailed timing breakdown
271
+ unaccounted_time = diff_time - (
272
+ zip_time + libfastled_time + sketch_time + response_processing_time
273
+ )
274
+ msg = f"Compilation success, took {diff_time:.2f} seconds\n"
275
+ msg += f" zip creation: {zip_time:.2f}\n"
276
+ if libfastled_time > 0:
277
+ msg += f" libfastled: {libfastled_time:.2f}\n"
278
+ msg += f" sketch compile + link: {sketch_time:.2f}\n"
279
+ msg += f" response processing: {response_processing_time:.2f}\n"
280
+ if unaccounted_time > 0.01: # Only show if significant
281
+ msg += f" other overhead: {unaccounted_time:.2f}"
282
+
255
283
  _print_banner(msg)
256
284
  return CompileResult(
257
285
  success=True,
258
286
  stdout=stdout,
259
287
  hash_value=hash_value,
260
288
  zip_bytes=out_buffer.getvalue(),
289
+ zip_time=zip_time,
290
+ libfastled_time=libfastled_time,
291
+ sketch_time=sketch_time,
292
+ response_processing_time=response_processing_time,
261
293
  )
262
294
 
263
295
 
@@ -279,17 +311,35 @@ def web_compile(
279
311
  auth_token = auth_token or AUTH_TOKEN
280
312
  if not directory.exists():
281
313
  raise FileNotFoundError(f"Directory not found: {directory}")
314
+
315
+ # Time the zip creation
316
+ zip_start_time = time.time()
282
317
  zip_result: ZipResult | Exception = zip_files(directory, build_mode=build_mode)
318
+ zip_time = time.time() - zip_start_time
319
+
283
320
  if isinstance(zip_result, Exception):
284
321
  return CompileResult(
285
- success=False, stdout=str(zip_result), hash_value=None, zip_bytes=b""
322
+ success=False,
323
+ stdout=str(zip_result),
324
+ hash_value=None,
325
+ zip_bytes=b"",
326
+ zip_time=zip_time,
327
+ libfastled_time=0.0, # No libfastled compilation in zip error case
328
+ sketch_time=0.0, # No sketch compilation in zip error case
329
+ response_processing_time=0.0, # No response processing in zip error case
286
330
  )
287
331
  zip_bytes = zip_result.zip_bytes
288
332
  print(f"Web compiling on {host}...")
333
+
334
+ # Track timing for each step
335
+ libfastled_time = 0.0
336
+ sketch_time = 0.0
337
+
289
338
  try:
290
339
  # Step 1: Compile libfastled if requested
291
340
  if allow_libcompile:
292
341
  print("Step 1: Compiling libfastled...")
342
+ libfastled_start_time = time.time()
293
343
  try:
294
344
  libfastled_response = _compile_libfastled(host, auth_token, build_mode)
295
345
 
@@ -308,6 +358,10 @@ def web_compile(
308
358
  stdout=stdout,
309
359
  hash_value=None,
310
360
  zip_bytes=b"",
361
+ zip_time=zip_time,
362
+ libfastled_time=libfastled_time,
363
+ sketch_time=0.0, # No sketch compilation when libfastled fails
364
+ response_processing_time=0.0, # No response processing when libfastled fails
311
365
  )
312
366
  else:
313
367
  # Check for embedded HTTP status in response content
@@ -332,6 +386,10 @@ def web_compile(
332
386
  stdout=stdout,
333
387
  hash_value=None,
334
388
  zip_bytes=b"",
389
+ zip_time=zip_time,
390
+ libfastled_time=libfastled_time,
391
+ sketch_time=0.0, # No sketch compilation when libfastled fails
392
+ response_processing_time=0.0, # No response processing when libfastled fails
335
393
  )
336
394
  # Continue with sketch compilation even if libfastled fails
337
395
  elif embedded_status is None:
@@ -343,7 +401,9 @@ def web_compile(
343
401
  print("✅ libfastled compilation successful")
344
402
  else:
345
403
  print("✅ libfastled compilation successful")
404
+ libfastled_time = time.time() - libfastled_start_time
346
405
  except Exception as e:
406
+ libfastled_time = time.time() - libfastled_start_time
347
407
  print(f"Warning: libfastled compilation failed: {e}")
348
408
  # Continue with sketch compilation even if libfastled fails
349
409
  else:
@@ -351,6 +411,7 @@ def web_compile(
351
411
 
352
412
  # Step 2: Compile the sketch
353
413
  print("Step 2: Compiling sketch...")
414
+ sketch_start_time = time.time()
354
415
  response = _send_compile_request(
355
416
  host,
356
417
  zip_bytes,
@@ -360,8 +421,11 @@ def web_compile(
360
421
  no_platformio,
361
422
  False, # allow_libcompile is always False since we handle it manually
362
423
  )
424
+ sketch_time = time.time() - sketch_start_time
363
425
 
364
- return _process_compile_response(response, zip_result, start_time)
426
+ return _process_compile_response(
427
+ response, zip_result, start_time, zip_time, libfastled_time, sketch_time
428
+ )
365
429
 
366
430
  except ConnectionError as e:
367
431
  _print_banner(str(e))
@@ -370,6 +434,10 @@ def web_compile(
370
434
  stdout=str(e),
371
435
  hash_value=None,
372
436
  zip_bytes=b"",
437
+ zip_time=zip_time,
438
+ libfastled_time=libfastled_time,
439
+ sketch_time=sketch_time,
440
+ response_processing_time=0.0, # No response processing in connection error case
373
441
  )
374
442
  except KeyboardInterrupt:
375
443
  print("Keyboard interrupt")
@@ -377,5 +445,12 @@ def web_compile(
377
445
  except httpx.HTTPError as e:
378
446
  print(f"Error: {e}")
379
447
  return CompileResult(
380
- success=False, stdout=str(e), hash_value=None, zip_bytes=b""
448
+ success=False,
449
+ stdout=str(e),
450
+ hash_value=None,
451
+ zip_bytes=b"",
452
+ zip_time=zip_time,
453
+ libfastled_time=libfastled_time,
454
+ sketch_time=sketch_time,
455
+ response_processing_time=0.0, # No response processing in HTTP error case
381
456
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastled
3
- Version: 1.4.32
3
+ Version: 1.4.34
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
@@ -1,15 +1,16 @@
1
- fastled/__init__.py,sha256=dahiY41HLLotTjqmpVJmXSwUEp8NKqoZ57jt55hBLa4,7667
1
+ fastled/__init__.py,sha256=LlLu9fO3O4FeB5-wt2wHGIFJW76H9FlhdABytEqg8A4,7717
2
2
  fastled/__main__.py,sha256=OcKv2ER1_iQAsZzLIUb3C8hRC9L2clNOhCrjpshrlf4,336
3
- fastled/__version__.py,sha256=-bXrpXNCrm6sdISaMv0IsTnqU5xEbH1LoWKWoAP4o8k,373
4
- fastled/app.py,sha256=ofuUkDape1-2bjrRYFhi8Ehg96h5FoiBOkb-_cD4I_o,6490
3
+ fastled/__version__.py,sha256=JS27XS6R4UvWw9SBgOKxvu_FFX7El2hKH1MP1Y8nc_E,373
4
+ fastled/app.py,sha256=7LmwXW1j6fePakOENVB4P52NIlUFCcyw-leRhN7by3A,6539
5
5
  fastled/args.py,sha256=LtYgskJjy1k47nrTBJ-5rXrNelO4TbexT92o3sR0dlk,4531
6
6
  fastled/cli.py,sha256=drgR2AOxVrj3QEz58iiKscYAumbbin2vIV-k91VCOAA,561
7
7
  fastled/cli_test.py,sha256=W-1nODZrip_JU6BEbYhxOa4ckxduOsiX8zIoRkTyxv4,550
8
8
  fastled/cli_test_interactive.py,sha256=BjNhveZOk5aCffHbcrxPQQjWmAuj4ClVKKcKX5eY6yM,542
9
- fastled/client_server.py,sha256=uGUZkK8Qvw_Y5sPQ6j1OYMrlb7zbmPYk547yYxum70c,23097
9
+ fastled/client_server.py,sha256=h4ocBUffYtZSZTJpGqE96L4bcEwr3OrYzzbqvsivKnQ,24683
10
10
  fastled/compile_server.py,sha256=iGUjteXKp5Dlp7mxAE4eD4s0NWgApRIp4ZjtcAN2iZY,3124
11
- fastled/compile_server_impl.py,sha256=iCwNCs7YxypUuVPmY4979mOgoH9OiuAJa1a1bmpG1cc,12567
11
+ fastled/compile_server_impl.py,sha256=jBvLH6Di3y_dKsmStw0JSl30u0esHXtVno-r9-Vr1HA,12624
12
12
  fastled/docker_manager.py,sha256=c0-DBA4_YtCl2XgtohL6uKtW0TK6vkHO0o2vympZShg,41089
13
+ fastled/emoji_util.py,sha256=grWwm-UgquR8lvJpSnEfJ2D1hEdByRT4U_GdedI5BzI,433
13
14
  fastled/filewatcher.py,sha256=1EFeOLPEA_aN_V_tzgixS3mDhfleh0arTGUy0vWq6Is,10101
14
15
  fastled/find_good_connection.py,sha256=xnrJjrbwNZUkvSQRn_ZTMoVh5GBWTbO-lEsr_L95xq8,3372
15
16
  fastled/interruptible_http.py,sha256=2QwUsRNJ1qawf_-Lp1l0dBady3TK0SrBFhmnWgM7oqg,4888
@@ -28,10 +29,10 @@ fastled/settings.py,sha256=8RLN3S0ZK4DMphr0gKPfwPKfwIzOtHiQsqMTpGnX7Xg,1842
28
29
  fastled/sketch.py,sha256=Ftbh55Nt-p4hmPuPpj8Q9HrMzvnUazhoG_q9FHcxkns,3473
29
30
  fastled/spinner.py,sha256=VHxmvB92P0Z_zYxRajb5HiNmkHHvZ5dG7hKtZltzpcs,867
30
31
  fastled/string_diff.py,sha256=oTncu0qYdLlLUtYLLDB4bzdQ2OfzegAR6XNAzwE9fIs,6002
31
- fastled/types.py,sha256=ZDf1TbTT4XgA_pKIwr4JbkDB38_29ogSdDORjoT-zuY,1803
32
+ fastled/types.py,sha256=tBikcoKjbBcCTi36MMCz_TjMEBoa-FppRL-yKAVwXFc,1909
32
33
  fastled/util.py,sha256=TjhXbUNh4p2BGhNAldSeL68B7BBOjsWAXji5gy-vDEQ,1440
33
34
  fastled/version.py,sha256=TpBMiEVdO3_sUZEu6wmwN8Q4AgX2BiCxStCsnPKh6E0,1209
34
- fastled/web_compile.py,sha256=NgRKAcQ_sJLUdg-lrYS7U27VF63nsQipHCd4Pm7ka94,13347
35
+ fastled/web_compile.py,sha256=th_uswHLNsoSMKZS4PjowR7lc1moDkPpe63lhMC3YM4,16479
35
36
  fastled/zip_files.py,sha256=BgHFjaLJ7wF6mnzjqOgn76VcKDwhwc_-w_qyUG_-aNs,2815
36
37
  fastled/assets/example.txt,sha256=lTBovRjiz0_TgtAtbA1C5hNi2ffbqnNPqkKg6UiKCT8,54
37
38
  fastled/assets/localhost-key.pem,sha256=Q-CNO_UoOd8fFNN4ljcnqwUeCMhzTplRjLO2x0pYRlU,1704
@@ -50,9 +51,9 @@ fastled/site/build.py,sha256=2YKU_UWKlJdGnjdbAbaL0co6kceFMSTVYwH1KCmgPZA,13987
50
51
  fastled/site/examples.py,sha256=s6vj2zJc6BfKlnbwXr1QWY1mzuDBMt6j5MEBOWjO_U8,155
51
52
  fastled/test/can_run_local_docker_tests.py,sha256=LEuUbHctRhNNFWcvnz2kEGmjDJeXO4c3kNpizm3yVJs,400
52
53
  fastled/test/examples.py,sha256=GfaHeY1E8izBl6ZqDVjz--RHLyVR4NRnQ5pBesCFJFY,1673
53
- fastled-1.4.32.dist-info/licenses/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
54
- fastled-1.4.32.dist-info/METADATA,sha256=dg7a2fbEKpdayjVfE1vpoW6RjotAL1tYceeByN94fag,31910
55
- fastled-1.4.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
56
- fastled-1.4.32.dist-info/entry_points.txt,sha256=RCwmzCSOS4-C2i9EziANq7Z2Zb4KFnEMR1FQC0bBwAw,101
57
- fastled-1.4.32.dist-info/top_level.txt,sha256=Bbv5kpJpZhWNCvDF4K0VcvtBSDMa8B7PTOrZa9CezHY,8
58
- fastled-1.4.32.dist-info/RECORD,,
54
+ fastled-1.4.34.dist-info/licenses/LICENSE,sha256=b6pOoifSXiUaz_lDS84vWlG3fr4yUKwB8fzkrH9R8bQ,1064
55
+ fastled-1.4.34.dist-info/METADATA,sha256=twGbF7An9oQ0-pgSCrZeJJzzQEpncTU4tLjGXYzbQC8,31910
56
+ fastled-1.4.34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
57
+ fastled-1.4.34.dist-info/entry_points.txt,sha256=RCwmzCSOS4-C2i9EziANq7Z2Zb4KFnEMR1FQC0bBwAw,101
58
+ fastled-1.4.34.dist-info/top_level.txt,sha256=Bbv5kpJpZhWNCvDF4K0VcvtBSDMa8B7PTOrZa9CezHY,8
59
+ fastled-1.4.34.dist-info/RECORD,,