lifx-async 4.8.0__py3-none-any.whl → 4.9.0__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.
lifx/color.py CHANGED
@@ -10,9 +10,23 @@ import colorsys
10
10
  import math
11
11
 
12
12
  from lifx.const import (
13
+ KELVIN_AMBER,
14
+ KELVIN_BLUE_DAYLIGHT,
15
+ KELVIN_BLUE_ICE,
16
+ KELVIN_BLUE_OVERCAST,
17
+ KELVIN_BRIGHT_DAYLIGHT,
18
+ KELVIN_CANDLELIGHT,
19
+ KELVIN_CLOUDY_DAYLIGHT,
13
20
  KELVIN_COOL,
21
+ KELVIN_COOL_DAYLIGHT,
14
22
  KELVIN_DAYLIGHT,
23
+ KELVIN_INCANDESCENT,
15
24
  KELVIN_NEUTRAL,
25
+ KELVIN_NEUTRAL_WARM,
26
+ KELVIN_NOON_DAYLIGHT,
27
+ KELVIN_SOFT_DAYLIGHT,
28
+ KELVIN_SUNSET,
29
+ KELVIN_ULTRA_WARM,
16
30
  KELVIN_WARM,
17
31
  MAX_BRIGHTNESS,
18
32
  MAX_HUE,
@@ -520,34 +534,220 @@ class HSBK:
520
534
 
521
535
  # Common color presets
522
536
  class Colors:
523
- """Common color presets for convenience."""
524
-
525
- # Primary colors
526
- RED = HSBK(hue=0, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
527
- ORANGE = HSBK(hue=30, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
528
- YELLOW = HSBK(hue=60, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
529
- GREEN = HSBK(hue=120, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
530
- CYAN = HSBK(hue=180, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
531
- BLUE = HSBK(hue=240, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
532
- PURPLE = HSBK(hue=270, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
533
- MAGENTA = HSBK(hue=300, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
534
- PINK = HSBK(hue=330, saturation=1.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
535
-
536
- # White variants
537
- WHITE_WARM = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_WARM)
538
- WHITE_NEUTRAL = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
539
- WHITE_COOL = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_COOL)
540
- WHITE_DAYLIGHT = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_DAYLIGHT)
541
-
542
- # Pastels
537
+ """Common color presets for convenience.
538
+
539
+ Includes all 140 standard HTML/CSS named colors plus white temperature
540
+ variants and pastel variations.
541
+
542
+ HTML color reference: https://www.w3.org/TR/css-color-3/#svg-color
543
+ """
544
+
545
+ # Off / Black (brightness=0 turns light off or sets zone to black)
546
+ OFF = HSBK(hue=0, saturation=0.0, brightness=0.0, kelvin=KELVIN_NEUTRAL)
547
+
548
+ # HTML Named Colors (alphabetical order)
549
+ ALICE_BLUE = HSBK.from_rgb(240, 248, 255)
550
+ ANTIQUE_WHITE = HSBK.from_rgb(250, 235, 215)
551
+ AQUA = HSBK.from_rgb(0, 255, 255)
552
+ AQUAMARINE = HSBK.from_rgb(127, 255, 212)
553
+ AZURE = HSBK.from_rgb(240, 255, 255)
554
+ BEIGE = HSBK.from_rgb(245, 245, 220)
555
+ BISQUE = HSBK.from_rgb(255, 228, 196)
556
+ BLACK = HSBK.from_rgb(0, 0, 0)
557
+ BLANCHED_ALMOND = HSBK.from_rgb(255, 235, 205)
558
+ BLUE = HSBK.from_rgb(0, 0, 255)
559
+ BLUE_VIOLET = HSBK.from_rgb(138, 43, 226)
560
+ BROWN = HSBK.from_rgb(165, 42, 42)
561
+ BURLYWOOD = HSBK.from_rgb(222, 184, 135)
562
+ CADET_BLUE = HSBK.from_rgb(95, 158, 160)
563
+ CHARTREUSE = HSBK.from_rgb(127, 255, 0)
564
+ CHOCOLATE = HSBK.from_rgb(210, 105, 30)
565
+ CORAL = HSBK.from_rgb(255, 127, 80)
566
+ CORNFLOWER_BLUE = HSBK.from_rgb(100, 149, 237)
567
+ CORNSILK = HSBK.from_rgb(255, 248, 220)
568
+ CRIMSON = HSBK.from_rgb(220, 20, 60)
569
+ CYAN = HSBK.from_rgb(0, 255, 255)
570
+ DARK_BLUE = HSBK.from_rgb(0, 0, 139)
571
+ DARK_CYAN = HSBK.from_rgb(0, 139, 139)
572
+ DARK_GOLDENROD = HSBK.from_rgb(184, 134, 11)
573
+ DARK_GRAY = HSBK.from_rgb(169, 169, 169)
574
+ DARK_GREEN = HSBK.from_rgb(0, 100, 0)
575
+ DARK_GREY = HSBK.from_rgb(169, 169, 169)
576
+ DARK_KHAKI = HSBK.from_rgb(189, 183, 107)
577
+ DARK_MAGENTA = HSBK.from_rgb(139, 0, 139)
578
+ DARK_OLIVE_GREEN = HSBK.from_rgb(85, 107, 47)
579
+ DARK_ORANGE = HSBK.from_rgb(255, 140, 0)
580
+ DARK_ORCHID = HSBK.from_rgb(153, 50, 204)
581
+ DARK_RED = HSBK.from_rgb(139, 0, 0)
582
+ DARK_SALMON = HSBK.from_rgb(233, 150, 122)
583
+ DARK_SEA_GREEN = HSBK.from_rgb(143, 188, 143)
584
+ DARK_SLATE_BLUE = HSBK.from_rgb(72, 61, 139)
585
+ DARK_SLATE_GRAY = HSBK.from_rgb(47, 79, 79)
586
+ DARK_SLATE_GREY = HSBK.from_rgb(47, 79, 79)
587
+ DARK_TURQUOISE = HSBK.from_rgb(0, 206, 209)
588
+ DARK_VIOLET = HSBK.from_rgb(148, 0, 211)
589
+ DEEP_PINK = HSBK.from_rgb(255, 20, 147)
590
+ DEEP_SKY_BLUE = HSBK.from_rgb(0, 191, 255)
591
+ DIM_GRAY = HSBK.from_rgb(105, 105, 105)
592
+ DIM_GREY = HSBK.from_rgb(105, 105, 105)
593
+ DODGER_BLUE = HSBK.from_rgb(30, 144, 255)
594
+ FIREBRICK = HSBK.from_rgb(178, 34, 34)
595
+ FLORAL_WHITE = HSBK.from_rgb(255, 250, 240)
596
+ FOREST_GREEN = HSBK.from_rgb(34, 139, 34)
597
+ FUCHSIA = HSBK.from_rgb(255, 0, 255)
598
+ GAINSBORO = HSBK.from_rgb(220, 220, 220)
599
+ GHOST_WHITE = HSBK.from_rgb(248, 248, 255)
600
+ GOLD = HSBK.from_rgb(255, 215, 0)
601
+ GOLDENROD = HSBK.from_rgb(218, 165, 32)
602
+ GRAY = HSBK.from_rgb(128, 128, 128)
603
+ GREEN = HSBK.from_rgb(0, 128, 0)
604
+ GREEN_YELLOW = HSBK.from_rgb(173, 255, 47)
605
+ GREY = HSBK.from_rgb(128, 128, 128)
606
+ HONEYDEW = HSBK.from_rgb(240, 255, 240)
607
+ HOT_PINK = HSBK.from_rgb(255, 105, 180)
608
+ INDIAN_RED = HSBK.from_rgb(205, 92, 92)
609
+ INDIGO = HSBK.from_rgb(75, 0, 130)
610
+ IVORY = HSBK.from_rgb(255, 255, 240)
611
+ KHAKI = HSBK.from_rgb(240, 230, 140)
612
+ LAVENDER = HSBK.from_rgb(230, 230, 250)
613
+ LAVENDER_BLUSH = HSBK.from_rgb(255, 240, 245)
614
+ LAWN_GREEN = HSBK.from_rgb(124, 252, 0)
615
+ LEMON_CHIFFON = HSBK.from_rgb(255, 250, 205)
616
+ LIGHT_BLUE = HSBK.from_rgb(173, 216, 230)
617
+ LIGHT_CORAL = HSBK.from_rgb(240, 128, 128)
618
+ LIGHT_CYAN = HSBK.from_rgb(224, 255, 255)
619
+ LIGHT_GOLDENROD_YELLOW = HSBK.from_rgb(250, 250, 210)
620
+ LIGHT_GRAY = HSBK.from_rgb(211, 211, 211)
621
+ LIGHT_GREEN = HSBK.from_rgb(144, 238, 144)
622
+ LIGHT_GREY = HSBK.from_rgb(211, 211, 211)
623
+ LIGHT_PINK = HSBK.from_rgb(255, 182, 193)
624
+ LIGHT_SALMON = HSBK.from_rgb(255, 160, 122)
625
+ LIGHT_SEA_GREEN = HSBK.from_rgb(32, 178, 170)
626
+ LIGHT_SKY_BLUE = HSBK.from_rgb(135, 206, 250)
627
+ LIGHT_SLATE_GRAY = HSBK.from_rgb(119, 136, 153)
628
+ LIGHT_SLATE_GREY = HSBK.from_rgb(119, 136, 153)
629
+ LIGHT_STEEL_BLUE = HSBK.from_rgb(176, 196, 222)
630
+ LIGHT_YELLOW = HSBK.from_rgb(255, 255, 224)
631
+ LIME = HSBK.from_rgb(0, 255, 0)
632
+ LIME_GREEN = HSBK.from_rgb(50, 205, 50)
633
+ LINEN = HSBK.from_rgb(250, 240, 230)
634
+ MAGENTA = HSBK.from_rgb(255, 0, 255)
635
+ MAROON = HSBK.from_rgb(128, 0, 0)
636
+ MEDIUM_AQUAMARINE = HSBK.from_rgb(102, 205, 170)
637
+ MEDIUM_BLUE = HSBK.from_rgb(0, 0, 205)
638
+ MEDIUM_ORCHID = HSBK.from_rgb(186, 85, 211)
639
+ MEDIUM_PURPLE = HSBK.from_rgb(147, 112, 219)
640
+ MEDIUM_SEA_GREEN = HSBK.from_rgb(60, 179, 113)
641
+ MEDIUM_SLATE_BLUE = HSBK.from_rgb(123, 104, 238)
642
+ MEDIUM_SPRING_GREEN = HSBK.from_rgb(0, 250, 154)
643
+ MEDIUM_TURQUOISE = HSBK.from_rgb(72, 209, 204)
644
+ MEDIUM_VIOLET_RED = HSBK.from_rgb(199, 21, 133)
645
+ MIDNIGHT_BLUE = HSBK.from_rgb(25, 25, 112)
646
+ MINT_CREAM = HSBK.from_rgb(245, 255, 250)
647
+ MISTY_ROSE = HSBK.from_rgb(255, 228, 225)
648
+ MOCCASIN = HSBK.from_rgb(255, 228, 181)
649
+ NAVAJO_WHITE = HSBK.from_rgb(255, 222, 173)
650
+ NAVY = HSBK.from_rgb(0, 0, 128)
651
+ OLD_LACE = HSBK.from_rgb(253, 245, 230)
652
+ OLIVE = HSBK.from_rgb(128, 128, 0)
653
+ OLIVE_DRAB = HSBK.from_rgb(107, 142, 35)
654
+ ORANGE = HSBK.from_rgb(255, 165, 0)
655
+ ORANGE_RED = HSBK.from_rgb(255, 69, 0)
656
+ ORCHID = HSBK.from_rgb(218, 112, 214)
657
+ PALE_GOLDENROD = HSBK.from_rgb(238, 232, 170)
658
+ PALE_GREEN = HSBK.from_rgb(152, 251, 152)
659
+ PALE_TURQUOISE = HSBK.from_rgb(175, 238, 238)
660
+ PALE_VIOLET_RED = HSBK.from_rgb(219, 112, 147)
661
+ PAPAYA_WHIP = HSBK.from_rgb(255, 239, 213)
662
+ PEACH_PUFF = HSBK.from_rgb(255, 218, 185)
663
+ PERU = HSBK.from_rgb(205, 133, 63)
664
+ PINK = HSBK.from_rgb(255, 192, 203)
665
+ PLUM = HSBK.from_rgb(221, 160, 221)
666
+ POWDER_BLUE = HSBK.from_rgb(176, 224, 230)
667
+ PURPLE = HSBK.from_rgb(128, 0, 128)
668
+ REBECCA_PURPLE = HSBK.from_rgb(102, 51, 153)
669
+ RED = HSBK.from_rgb(255, 0, 0)
670
+ ROSY_BROWN = HSBK.from_rgb(188, 143, 143)
671
+ ROYAL_BLUE = HSBK.from_rgb(65, 105, 225)
672
+ SADDLE_BROWN = HSBK.from_rgb(139, 69, 19)
673
+ SALMON = HSBK.from_rgb(250, 128, 114)
674
+ SANDY_BROWN = HSBK.from_rgb(244, 164, 96)
675
+ SEA_GREEN = HSBK.from_rgb(46, 139, 87)
676
+ SEASHELL = HSBK.from_rgb(255, 245, 238)
677
+ SIENNA = HSBK.from_rgb(160, 82, 45)
678
+ SILVER = HSBK.from_rgb(192, 192, 192)
679
+ SKY_BLUE = HSBK.from_rgb(135, 206, 235)
680
+ SLATE_BLUE = HSBK.from_rgb(106, 90, 205)
681
+ SLATE_GRAY = HSBK.from_rgb(112, 128, 144)
682
+ SLATE_GREY = HSBK.from_rgb(112, 128, 144)
683
+ SNOW = HSBK.from_rgb(255, 250, 250)
684
+ SPRING_GREEN = HSBK.from_rgb(0, 255, 127)
685
+ STEEL_BLUE = HSBK.from_rgb(70, 130, 180)
686
+ TAN = HSBK.from_rgb(210, 180, 140)
687
+ TEAL = HSBK.from_rgb(0, 128, 128)
688
+ THISTLE = HSBK.from_rgb(216, 191, 216)
689
+ TOMATO = HSBK.from_rgb(255, 99, 71)
690
+ TURQUOISE = HSBK.from_rgb(64, 224, 208)
691
+ VIOLET = HSBK.from_rgb(238, 130, 238)
692
+ WHEAT = HSBK.from_rgb(245, 222, 179)
693
+ WHITE = HSBK.from_rgb(255, 255, 255)
694
+ WHITE_SMOKE = HSBK.from_rgb(245, 245, 245)
695
+ YELLOW = HSBK.from_rgb(255, 255, 0)
696
+ YELLOW_GREEN = HSBK.from_rgb(154, 205, 50)
697
+
698
+ # White temperature variants (kelvin-based, warmest to coolest)
699
+ CANDLELIGHT = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_CANDLELIGHT)
700
+ SUNSET = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_SUNSET)
701
+ AMBER = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_AMBER)
702
+ ULTRA_WARM = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_ULTRA_WARM)
703
+ INCANDESCENT = HSBK(
704
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_INCANDESCENT
705
+ )
706
+ WARM = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_WARM)
707
+ NEUTRAL_WARM = HSBK(
708
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_NEUTRAL_WARM
709
+ )
710
+ NEUTRAL = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_NEUTRAL)
711
+ COOL = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_COOL)
712
+ COOL_DAYLIGHT = HSBK(
713
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_COOL_DAYLIGHT
714
+ )
715
+ SOFT_DAYLIGHT = HSBK(
716
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_SOFT_DAYLIGHT
717
+ )
718
+ DAYLIGHT = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_DAYLIGHT)
719
+ NOON_DAYLIGHT = HSBK(
720
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_NOON_DAYLIGHT
721
+ )
722
+ BRIGHT_DAYLIGHT = HSBK(
723
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_BRIGHT_DAYLIGHT
724
+ )
725
+ CLOUDY_DAYLIGHT = HSBK(
726
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_CLOUDY_DAYLIGHT
727
+ )
728
+ BLUE_DAYLIGHT = HSBK(
729
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_BLUE_DAYLIGHT
730
+ )
731
+ BLUE_OVERCAST = HSBK(
732
+ hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_BLUE_OVERCAST
733
+ )
734
+ BLUE_ICE = HSBK(hue=0, saturation=0.0, brightness=1.0, kelvin=KELVIN_BLUE_ICE)
735
+
736
+ # Pastel variants (reduced saturation)
543
737
  PASTEL_RED = HSBK(hue=0, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
544
- PASTEL_ORANGE = HSBK(hue=30, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
738
+ PASTEL_ORANGE = HSBK(hue=39, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
545
739
  PASTEL_YELLOW = HSBK(hue=60, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
546
740
  PASTEL_GREEN = HSBK(hue=120, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
547
741
  PASTEL_CYAN = HSBK(hue=180, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
548
742
  PASTEL_BLUE = HSBK(hue=240, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
549
- PASTEL_PURPLE = HSBK(hue=270, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
743
+ PASTEL_PURPLE = HSBK(hue=300, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
550
744
  PASTEL_MAGENTA = HSBK(
551
745
  hue=300, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL
552
746
  )
553
- PASTEL_PINK = HSBK(hue=330, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
747
+ PASTEL_PINK = HSBK(hue=350, saturation=0.3, brightness=1.0, kelvin=KELVIN_NEUTRAL)
748
+
749
+ # Backwards compatibility aliases
750
+ WHITE_WARM = WARM
751
+ WHITE_NEUTRAL = NEUTRAL
752
+ WHITE_COOL = COOL
753
+ WHITE_DAYLIGHT = DAYLIGHT
@@ -16,7 +16,7 @@ from urllib.request import urlopen
16
16
  from lifx.const import PRODUCTS_URL
17
17
 
18
18
 
19
- def download_products() -> dict[str, Any] | list[dict[str, Any]]:
19
+ def download_products() -> dict[str, Any] | list[dict[str, Any]] | None:
20
20
  """Download and parse products.json from LIFX GitHub repository.
21
21
 
22
22
  Returns:
@@ -27,11 +27,13 @@ def download_products() -> dict[str, Any] | list[dict[str, Any]]:
27
27
  json.JSONDecodeError: If parsing fails
28
28
  """
29
29
  parsed_url = urlparse(PRODUCTS_URL)
30
- if parsed_url.scheme == "https" and parsed_url.netloc.startswith(
31
- "raw.githubusercontent.com"
30
+ if (
31
+ parsed_url.scheme == "https"
32
+ and parsed_url.netloc == "raw.githubusercontent.com"
33
+ and parsed_url.path.startswith("/LIFX/")
32
34
  ):
33
- print(f"Downloading products.json from {PRODUCTS_URL}...")
34
- with urlopen(PRODUCTS_URL) as response: # nosec B310
35
+ print(f"Downloading products.json from {parsed_url.geturl()}...")
36
+ with urlopen(parsed_url.geturl()) as response: # nosec B310
35
37
  products_data = response.read()
36
38
 
37
39
  print("Parsing products specification...")
@@ -1397,7 +1397,7 @@ from lifx.protocol.base import Packet
1397
1397
  return code
1398
1398
 
1399
1399
 
1400
- def download_protocol() -> dict[str, Any]:
1400
+ def download_protocol() -> dict[str, Any] | None:
1401
1401
  """Download and parse protocol.yml from LIFX GitHub repository.
1402
1402
 
1403
1403
  Returns:
@@ -1408,11 +1408,13 @@ def download_protocol() -> dict[str, Any]:
1408
1408
  yaml.YAMLError: If parsing fails
1409
1409
  """
1410
1410
  parsed_url = urlparse(PROTOCOL_URL)
1411
- if parsed_url.scheme == "https" and parsed_url.netloc.startswith(
1412
- "raw.githubusercontent.com"
1411
+ if (
1412
+ parsed_url.scheme == "https"
1413
+ and parsed_url.netloc == "raw.githubusercontent.com"
1414
+ and parsed_url.path.startswith("/LIFX/")
1413
1415
  ):
1414
- print(f"Downloading protocol.yml from {PROTOCOL_URL}...")
1415
- with urlopen(PROTOCOL_URL) as response: # nosec B310
1416
+ print(f"Downloading protocol.yml from {parsed_url.geturl()}...")
1417
+ with urlopen(parsed_url.geturl()) as response: # nosec B310
1416
1418
  protocol_data = response.read()
1417
1419
 
1418
1420
  print("Parsing protocol specification...")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lifx-async
3
- Version: 4.8.0
3
+ Version: 4.9.0
4
4
  Summary: A modern, type-safe, async Python library for controlling LIFX lights
5
5
  Author-email: Avi Miller <me@dje.li>
6
6
  Maintainer-email: Avi Miller <me@dje.li>
@@ -1,6 +1,6 @@
1
1
  lifx/__init__.py,sha256=DKHG1vFJvPw_LpMkQgZN85gyOSD8dnceq6LnEGgR9vs,2810
2
2
  lifx/api.py,sha256=xHUM6NDgv8V8tLpDtpnPVJNGcVU5y_8da9wI3pnm06Y,35903
3
- lifx/color.py,sha256=wcmeeiBmOAjunInERNd6rslKvBEpV4vfjwwiZ8v7H8A,17877
3
+ lifx/color.py,sha256=UfeoOiFgFih5edl2Ei-0wSzvZXRTI47yUm9GlNJZeTw,26041
4
4
  lifx/const.py,sha256=5LEh4h0-bEJlOfpG8fgyht0LkAEV9jkkpuCiuatBhEI,3840
5
5
  lifx/exceptions.py,sha256=pikAMppLn7gXyjiQVWM_tSvXKNh-g366nG_UWyqpHhc,815
6
6
  lifx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -31,12 +31,12 @@ lifx/network/mdns/dns.py,sha256=OsvNSxLepIG3Nhw-kkQF3JrBYI-ikod5SHD2HO5_yGE,9363
31
31
  lifx/network/mdns/transport.py,sha256=k8gVZCvU-gksV2dV-jm2YG-_kuKWx0whtP3Va0EjCd8,10242
32
32
  lifx/network/mdns/types.py,sha256=9fhH5iuMQxLkFPhmFTf2-kOcUNoWEu7LrN15Qr9tFE0,990
33
33
  lifx/products/__init__.py,sha256=pf2O-fzt6nOrQd-wmzhiog91tMiGa-dDbaSNtU2ZQfE,764
34
- lifx/products/generator.py,sha256=5bDFfrJ8ocwuhEr4dZB4LpVcqOqC3KxJSDiphPMu8CI,15660
34
+ lifx/products/generator.py,sha256=DsTCJcEVPmn9sfXSbXYdFZjqMfIbodnIQL46DRASs0g,15731
35
35
  lifx/products/quirks.py,sha256=B8Kb4pxaXmovMbjgXRfPPWre5JEvJrn8d6PAWK_FT1U,2544
36
36
  lifx/products/registry.py,sha256=ILIJlQxcxJUzRH-LGU_bnHjV-TxDEucKovuJcWvG4q8,43831
37
37
  lifx/protocol/__init__.py,sha256=-wjC-wBcb7fxi5I-mJr2Ad8K2YRflJFdLLdobfD-W1Q,56
38
38
  lifx/protocol/base.py,sha256=x4cKT5sbaEmILbmPH3y5Lwk6gj3h9Xv_JvTX91cPQwM,12354
39
- lifx/protocol/generator.py,sha256=bmLjr8xNClD-kfo9_z4CTDIiP1OkmPcNsD2Mkz41NhA,60619
39
+ lifx/protocol/generator.py,sha256=RWu4zC-b_JhonLM5fbAufQyKxEI2myLyCnt7tu3POMI,60690
40
40
  lifx/protocol/header.py,sha256=HaYQ5wEjAMgefO3dIxKb0w4VG4fLcfLj-fnHVwfp1ao,7174
41
41
  lifx/protocol/models.py,sha256=eOvOSAWbglR1SYWcC_YpicewtsdbVlQ6E2lfcC4NQrk,8172
42
42
  lifx/protocol/packets.py,sha256=ENp3irGITdV5rGah3eUzgsXqihI95upAPh7AdTsP7sk,43303
@@ -47,7 +47,7 @@ lifx/theme/canvas.py,sha256=4h7lgN8iu_OdchObGDgbxTqQLCb-FRKC-M-YCWef_i4,8048
47
47
  lifx/theme/generators.py,sha256=nq3Yvntq_h-eFHbmmow3LcAdA_hEbRRaP5mv9Bydrjk,6435
48
48
  lifx/theme/library.py,sha256=tKlKZNqJp8lRGDnilWyDm_Qr1vCRGGwuvWVS82anNpQ,21326
49
49
  lifx/theme/theme.py,sha256=qMEx_8E41C0Cc6f083XHiAXEglTv4YlXW0UFsG1rQKg,5521
50
- lifx_async-4.8.0.dist-info/METADATA,sha256=kwOq2Vzad06tvCCZiq7JhT7lMkO4wEZI5JHxyIPSfbE,2609
51
- lifx_async-4.8.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
52
- lifx_async-4.8.0.dist-info/licenses/LICENSE,sha256=eBz48GRA3gSiWn3rYZAz2Ewp35snnhV9cSqkVBq7g3k,1832
53
- lifx_async-4.8.0.dist-info/RECORD,,
50
+ lifx_async-4.9.0.dist-info/METADATA,sha256=w3SYjZDKKPvXksjmSm0DVfK2KHyFe-EnpgdLaUf27zk,2609
51
+ lifx_async-4.9.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
52
+ lifx_async-4.9.0.dist-info/licenses/LICENSE,sha256=eBz48GRA3gSiWn3rYZAz2Ewp35snnhV9cSqkVBq7g3k,1832
53
+ lifx_async-4.9.0.dist-info/RECORD,,