Skip to content

Commit

Permalink
Merge pull request #3 from adafruit/issues_1and2
Browse files Browse the repository at this point in the history
use core class slicing getter. Fix individual pixels mode
  • Loading branch information
gamblor21 authored Dec 3, 2022
2 parents e8cfe65 + 8a21d34 commit 7180b90
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions adafruit_pixelmap.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,16 @@ class PixelMap:

def __init__(self, strip, pixel_ranges, individual_pixels=False):
self._pixels = strip
if not isinstance(pixel_ranges, list) and not isinstance(pixel_ranges, tuple):
raise TypeError("pixel_ranges must be tuple or list")

if isinstance(pixel_ranges, list) or isinstance(pixel_ranges[0], list):
self._ranges = tuple(
tuple(item for item in sublist) for sublist in pixel_ranges
)
if not isinstance(pixel_ranges[0], int):
self._ranges = tuple(
tuple(item for item in sublist) for sublist in pixel_ranges
)
else:
self._ranges = tuple(pixel_ranges)

elif isinstance(pixel_ranges, tuple):
self._ranges = pixel_ranges
Expand All @@ -130,7 +136,7 @@ def _expand_ranges(self):
)
return
if isinstance(self._ranges[0], int):
self._ranges = [[n] for n in self._ranges]
self._ranges = tuple((n,) for n in self._ranges)

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

def __getitem__(self, index):
if isinstance(index, slice):
out = []
for in_i in range(*index.indices(len(self._ranges))):
out.append(self._pixels[self._ranges[in_i][0]])
return out
return self._map[index]
if index < 0:
index += len(self)
if index >= self.n or index < 0:
Expand Down

0 comments on commit 7180b90

Please sign in to comment.