class HardwareDeviceSource(DeviceSource): def __init__(self): super().__init__() self.mgr = DeviceManager() def rescan(self) -> Sequence[str]: return [d.id().decode("ascii") for d in self.mgr.enumerate()] def get_scanned(self, identifier: str) -> Optional[StreamDeck]: for dev in self.enumerate(): if dev.id().decode("ascii") == identifier: return dev return None def matches(self, identifier: str, deck: StreamDeck) -> bool: deck.open() try: return deck.get_serial_number() == identifier finally: deck.close() def request(self, user_ident: str) -> None: pass def enumerate(self) -> Sequence[StreamDeck]: return self.mgr.enumerate()
with deck: deck.open() deck.set_key_image(0, test_key_image) deck.close() if __name__ == "__main__": logging.basicConfig(level=logging.INFO) parser = argparse.ArgumentParser(description="StreamDeck Library test.") parser.add_argument("--model", help="Stream Deck model name to test") parser.add_argument("--test", help="Stream Deck test to run") args = parser.parse_args() manager = DeviceManager(transport="dummy") streamdecks = manager.enumerate() test_streamdecks = streamdecks if args.model: test_streamdecks = [ deck for deck in test_streamdecks if deck.deck_type() == args.model ] if len(test_streamdecks) == 0: logging.error( "Error: No Stream Decks to test. Known models: {}".format( [d.deck_type() for d in streamdecks])) sys.exit(1) tests = { "PIL Helpers": test_pil_helpers,