@@ -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