Skip to content

Commit 7180b90

Browse files
authored
Merge pull request #3 from adafruit/issues_1and2
use core class slicing getter. Fix individual pixels mode
2 parents e8cfe65 + 8a21d34 commit 7180b90

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

adafruit_pixelmap.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,16 @@ class PixelMap:
108108

109109
def __init__(self, strip, pixel_ranges, individual_pixels=False):
110110
self._pixels = strip
111+
if not isinstance(pixel_ranges, list) and not isinstance(pixel_ranges, tuple):
112+
raise TypeError("pixel_ranges must be tuple or list")
113+
111114
if isinstance(pixel_ranges, list) or isinstance(pixel_ranges[0], list):
112-
self._ranges = tuple(
113-
tuple(item for item in sublist) for sublist in pixel_ranges
114-
)
115+
if not isinstance(pixel_ranges[0], int):
116+
self._ranges = tuple(
117+
tuple(item for item in sublist) for sublist in pixel_ranges
118+
)
119+
else:
120+
self._ranges = tuple(pixel_ranges)
115121

116122
elif isinstance(pixel_ranges, tuple):
117123
self._ranges = pixel_ranges
@@ -130,7 +136,7 @@ def _expand_ranges(self):
130136
)
131137
return
132138
if isinstance(self._ranges[0], int):
133-
self._ranges = [[n] for n in self._ranges]
139+
self._ranges = tuple((n,) for n in self._ranges)
134140

135141
def __repr__(self):
136142
return "[" + ", ".join([str(self[x]) for x in range(self.n)]) + "]"
@@ -148,10 +154,7 @@ def __setitem__(self, index, val):
148154

149155
def __getitem__(self, index):
150156
if isinstance(index, slice):
151-
out = []
152-
for in_i in range(*index.indices(len(self._ranges))):
153-
out.append(self._pixels[self._ranges[in_i][0]])
154-
return out
157+
return self._map[index]
155158
if index < 0:
156159
index += len(self)
157160
if index >= self.n or index < 0:

0 commit comments

Comments
 (0)