ad usable static method

This commit is contained in:
Patrick Kanzler 2023-08-17 01:10:23 +02:00
parent 8c220ea7a2
commit 230900ae41
8 changed files with 89 additions and 18 deletions

View File

@ -26,10 +26,11 @@ except ImportError:
# TODO: dev build mode that let's the wrapper bypass? # TODO: dev build mode that let's the wrapper bypass?
def is_usable():
def is_usable() -> bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
usable = False usable = False
if not _DEP_PYCUPS: if _DEP_PYCUPS:
usable = True usable = True
return usable return usable
@ -40,7 +41,7 @@ def dependency_pycups(func):
@functools.wraps(func) @functools.wraps(func)
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
"""Throw a RuntimeError if pycups is not imported.""" """Throw a RuntimeError if pycups is not imported."""
if is_usable(): if not is_usable():
raise RuntimeError( raise RuntimeError(
"Printing with PyCups requires the pycups library to" "Printing with PyCups requires the pycups library to"
"be installed. Please refer to the documentation on" "be installed. Please refer to the documentation on"
@ -67,6 +68,15 @@ class CupsPrinter(Escpos):
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
@dependency_pycups @dependency_pycups
def __init__(self, printer_name=None, *args, **kwargs): def __init__(self, printer_name=None, *args, **kwargs):
"""Class constructor for CupsPrinter. """Class constructor for CupsPrinter.

View File

@ -11,7 +11,7 @@
from ..escpos import Escpos from ..escpos import Escpos
def is_usable(): def is_usable() -> bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
return True return True
@ -30,6 +30,15 @@ class Dummy(Escpos):
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
"""Init with empty output list.""" """Init with empty output list."""
Escpos.__init__(self, *args, **kwargs) Escpos.__init__(self, *args, **kwargs)

View File

@ -11,7 +11,7 @@
from ..escpos import Escpos from ..escpos import Escpos
def is_usable(): def is_usable() -> bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
return True return True
@ -30,6 +30,15 @@ class File(Escpos):
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
def __init__(self, devfile="/dev/usb/lp0", auto_flush=True, *args, **kwargs): def __init__(self, devfile="/dev/usb/lp0", auto_flush=True, *args, **kwargs):
"""Initialize file printer with device file. """Initialize file printer with device file.

View File

@ -16,10 +16,10 @@ import sys
from ..escpos import Escpos from ..escpos import Escpos
def is_usable(): def is_usable() -> bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
usable = False usable = False
if not sys.platform.startswith("win"): if sys.platform.startswith("win"):
usable = True usable = True
return usable return usable
@ -30,7 +30,7 @@ def dependency_linux_lp(func):
@functools.wraps(func) @functools.wraps(func)
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
"""Throw a RuntimeError if not on a non-Windows system.""" """Throw a RuntimeError if not on a non-Windows system."""
if is_usable(): if not is_usable():
raise RuntimeError( raise RuntimeError(
"This printer driver depends on LP which is not" "This printer driver depends on LP which is not"
"available on Windows systems." "available on Windows systems."
@ -52,6 +52,15 @@ class LP(Escpos):
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
def __init__(self, printer_name: str, *args, **kwargs): def __init__(self, printer_name: str, *args, **kwargs):
"""LP class constructor. """LP class constructor.

View File

@ -13,7 +13,7 @@ import socket
from ..escpos import Escpos from ..escpos import Escpos
def is_usable(): def is_usable()->bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
return True return True
@ -40,6 +40,14 @@ class Network(Escpos):
:parts: 1 :parts: 1
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
def __init__(self, host, port=9100, timeout=60, *args, **kwargs): def __init__(self, host, port=9100, timeout=60, *args, **kwargs):
"""Initialize network printer. """Initialize network printer.

View File

@ -24,10 +24,10 @@ except ImportError:
pass pass
def is_usable(): def is_usable()->bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
usable = False usable = False
if not _DEP_PYSERIAL: if _DEP_PYSERIAL:
usable = True usable = True
return usable return usable
@ -38,7 +38,7 @@ def dependency_pyserial(func):
@functools.wraps(func) @functools.wraps(func)
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
"""Throw a RuntimeError if pyserial not installed.""" """Throw a RuntimeError if pyserial not installed."""
if is_usable(): if not is_usable():
raise RuntimeError( raise RuntimeError(
"Printing with Serial requires the pyserial library to" "Printing with Serial requires the pyserial library to"
"be installed. Please refer to the documentation on" "be installed. Please refer to the documentation on"
@ -60,6 +60,14 @@ class Serial(Escpos):
:parts: 1 :parts: 1
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
@dependency_pyserial @dependency_pyserial
def __init__( def __init__(

View File

@ -24,10 +24,10 @@ except ImportError:
pass pass
def is_usable(): def is_usable() -> bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
usable = False usable = False
if not _DEP_USB: if _DEP_USB:
usable = True usable = True
return usable return usable
@ -38,7 +38,7 @@ def dependency_usb(func):
@functools.wraps(func) @functools.wraps(func)
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
"""Throw a RuntimeError if usb not installed.""" """Throw a RuntimeError if usb not installed."""
if is_usable(): if not is_usable():
raise RuntimeError( raise RuntimeError(
"Printing with USB connection requires a usb library to" "Printing with USB connection requires a usb library to"
"be installed. Please refer to the documentation on" "be installed. Please refer to the documentation on"
@ -61,6 +61,15 @@ class Usb(Escpos):
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
def __init__( def __init__(
self, self,
idVendor, idVendor,

View File

@ -23,10 +23,10 @@ except ImportError:
pass pass
def is_usable(): def is_usable() -> bool:
"""Indicate whether this component can be used due to dependencies.""" """Indicate whether this component can be used due to dependencies."""
usable = False usable = False
if not _DEP_WIN32PRINT: if _DEP_WIN32PRINT:
usable = True usable = True
return usable return usable
@ -37,7 +37,7 @@ def dependency_win32print(func):
@functools.wraps(func) @functools.wraps(func)
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
"""Throw a RuntimeError if win32print not installed.""" """Throw a RuntimeError if win32print not installed."""
if is_usable(): if not is_usable():
raise RuntimeError( raise RuntimeError(
"Printing with Win32Raw requires a win32print library to" "Printing with Win32Raw requires a win32print library to"
"be installed. Please refer to the documentation on" "be installed. Please refer to the documentation on"
@ -60,6 +60,15 @@ class Win32Raw(Escpos):
""" """
@staticmethod
def is_usable() -> bool:
"""Indicate whether this printer class is usable.
Will return True if dependencies are available.
Will return False if not.
"""
return is_usable()
@dependency_win32print @dependency_win32print
def __init__(self, printer_name=None, *args, **kwargs): def __init__(self, printer_name=None, *args, **kwargs):
"""Initialize default printer.""" """Initialize default printer."""