# -*- coding: utf-8 -*- """UPnP printer module.""" import logging from typing import List, NamedTuple from async_upnp_client.profile import UpnpProfileDevice _LOGGER = logging.getLogger(__name__) PrinterAttributes = NamedTuple( 'PrinterAttributes', [ ('printer_state', str), ('printer_state_reasons', str), ('job_id_list', List[int]), ('job_id', int)]) class PrinterDevice(UpnpProfileDevice): """Representation of a printer device.""" DEVICE_TYPES = [ 'urn:schemas-upnp-org:device:printer:1', ] _SERVICE_TYPES = { 'BASIC': { 'urn:schemas-upnp-org:service:PrintBasic:1', }, } async def async_get_printer_attributes(self) -> PrinterAttributes: """Get printer attributes.""" action = self._action('BASIC', 'GetPrinterAttributes') result = await action.async_call() return PrinterAttributes( result['PrinterState'], result['PrinterStateReasons'], [int(x) for x in result['JobIdList'].split(',')], int(result['JobId']))