From e8b41c18b3ad70a59b5000cd8b3cc4d2e072b313 Mon Sep 17 00:00:00 2001 From: belono Date: Tue, 31 Oct 2023 00:03:24 +0100 Subject: [PATCH] Restore pywin32 type annotations in win32raw --- src/escpos/printer/win32raw.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/escpos/printer/win32raw.py b/src/escpos/printer/win32raw.py index bb04a42..8ab5994 100644 --- a/src/escpos/printer/win32raw.py +++ b/src/escpos/printer/win32raw.py @@ -10,7 +10,7 @@ import functools import logging -from typing import Literal, Optional, Type, Union +from typing import Any, Literal, Optional, Union from ..escpos import Escpos from ..exceptions import DeviceNotFoundError @@ -20,9 +20,11 @@ _DEP_WIN32PRINT = False try: + import pywintypes import win32print _DEP_WIN32PRINT = True + PyPrinterHANDLE: Any = win32print.OpenPrinter except ImportError: pass @@ -83,7 +85,7 @@ class Win32Raw(Escpos): self._device: Union[ Literal[False], Literal[None], - Type[win32print.OpenPrinter], + "PyPrinterHANDLE", ] = False @property @@ -115,15 +117,15 @@ class Win32Raw(Escpos): self.printer_name = self.printer_name or win32print.GetDefaultPrinter() assert self.printer_name in self.printers, "Incorrect printer name" # Open device - self.device: Optional[ - Type[win32print.OpenPrinter] - ] = win32print.OpenPrinter(self.printer_name) + self.device: Optional["PyPrinterHANDLE"] = win32print.OpenPrinter( + self.printer_name + ) if self.device: self.current_job = win32print.StartDocPrinter( - self.device, 1, (job_name, None, "RAW") + self.device, 1, (job_name, "", "RAW") ) win32print.StartPagePrinter(self.device) - except AssertionError as e: + except (AssertionError, pywintypes.error) as e: # Raise exception or log error and cancel self.device = None if raise_not_found: