-
Notifications
You must be signed in to change notification settings - Fork 38
adafruit_dotstar __getitem__ applies incorrect cap to range input #9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Unrelated, I'm also curious about brightness vs _brightness, the code is a bit mysterious here! Also in the example is uses an integer value of 1. The value is loosely specified as a floating point value so perhaps that would be better as 1.0? |
indices method is documented here: https://docs.python.org/3.4/reference/datamodel.html?highlight=.indices#slice.indices |
@kevinjwalters I think you are right about indices. Care to fix it? Please open a second issue about brightness. |
For brightness issue: #10 |
I'm going to work on this (pycon sprints). |
- self._buf would be incorrect if there are headers - adafruit#9
- self._buf would be incorrect if there are headers - adafruit#9
(#9) change __getitem__ to use self._n instead of self._buf // 4
- self._buf would be incorrect if there are headers - adafruit#9
I'm a little new to Python this so I may be wrong here but I think adafruit_dotstar's getitem method is attempting to cap the range of the slice values using:
range(*index.indices(len(self._buf) // 4)):
But the length cannot be determined correctly with a simple division because of the header and trailer data in the buffer for dotstars. Perhaps this code was cut and paste from other code which has no header data in buffer?
self._n looks like a suitable (calculation-free) substitute here? I see setitem uses len(self) which looks correct but you may wish to avoid the method call given the hardware this typically runs on. Either way, a consistent approach across class would make code easier to read.
The text was updated successfully, but these errors were encountered: