There is a lot of duplicate code in some of the display classes - especially for the waveshare objects. This doesn't add any additional functionality but just reorganizes the code base to try and get rid of some of the duplication. Main points:
set a variable for the package names and use that to reference the package when needed (Inky and Waveshare)
create a parent WaveshareDisplay class that all other waveshare devices inherit. This class will load device objects and set some common functions that pretty much all devices use. These can be overridden in child classes where needed but generally don't need to be.
There is a lot of duplicate code in some of the display classes - especially for the waveshare objects. This doesn't add any additional functionality but just reorganizes the code base to try and get rid of some of the duplication. Main points: