mirror of
				https://github.com/python-escpos/python-escpos
				synced 2025-10-23 09:30:00 +00:00 
			
		
		
		
	More mypy (#612)
* remove type comment where type is annotated * move function tests * remove six from tests * add none annotations * add more types * change mock (so that mypy understands it)
This commit is contained in:
		@@ -20,7 +20,7 @@ except ImportError:
 | 
				
			|||||||
    pass  # noqa
 | 
					    pass  # noqa
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import config
 | 
					from . import config, escpos
 | 
				
			||||||
from . import printer as escpos_printer_module
 | 
					from . import printer as escpos_printer_module
 | 
				
			||||||
from . import version
 | 
					from . import version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -617,7 +617,7 @@ def main() -> None:
 | 
				
			|||||||
        globals()[target_command](**command_arguments)
 | 
					        globals()[target_command](**command_arguments)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def demo(printer, **kwargs) -> None:
 | 
					def demo(printer: escpos.Escpos, **kwargs) -> None:
 | 
				
			||||||
    """Print demos.
 | 
					    """Print demos.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Called when CLI is passed `demo`. This function
 | 
					    Called when CLI is passed `demo`. This function
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,32 +5,32 @@ from escpos.printer import LP, CupsPrinter, Dummy, File, Network, Serial, Usb, W
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture
 | 
					@pytest.fixture
 | 
				
			||||||
def driver():
 | 
					def driver() -> Dummy:
 | 
				
			||||||
    return Dummy()
 | 
					    return Dummy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture
 | 
					@pytest.fixture
 | 
				
			||||||
def usbprinter():
 | 
					def usbprinter() -> Usb:
 | 
				
			||||||
    return Usb()
 | 
					    return Usb()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture
 | 
					@pytest.fixture
 | 
				
			||||||
def serialprinter():
 | 
					def serialprinter() -> Serial:
 | 
				
			||||||
    return Serial()
 | 
					    return Serial()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture
 | 
					@pytest.fixture
 | 
				
			||||||
def networkprinter():
 | 
					def networkprinter() -> Network:
 | 
				
			||||||
    return Network()
 | 
					    return Network()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture
 | 
					@pytest.fixture
 | 
				
			||||||
def fileprinter():
 | 
					def fileprinter() -> File:
 | 
				
			||||||
    return File()
 | 
					    return File()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pytest.fixture
 | 
					@pytest.fixture
 | 
				
			||||||
def lpprinter():
 | 
					def lpprinter() -> LP:
 | 
				
			||||||
    return LP()
 | 
					    return LP()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,7 +74,7 @@ def test_config_load_with_missing_config(tmp_path):
 | 
				
			|||||||
@pytest.mark.skip(
 | 
					@pytest.mark.skip(
 | 
				
			||||||
    "This test creates in the actual appdir files and is therefore skipped."
 | 
					    "This test creates in the actual appdir files and is therefore skipped."
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
def test_config_load_from_appdir():
 | 
					def test_config_load_from_appdir() -> None:
 | 
				
			||||||
    """Test the loading of a config in appdir."""
 | 
					    """Test the loading of a config in appdir."""
 | 
				
			||||||
    from escpos import config
 | 
					    from escpos import config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ import escpos.printer as printer
 | 
				
			|||||||
from escpos.exceptions import CashDrawerError
 | 
					from escpos.exceptions import CashDrawerError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_raise_CashDrawerError():
 | 
					def test_raise_CashDrawerError() -> None:
 | 
				
			||||||
    """should raise an error if the sequence is invalid."""
 | 
					    """should raise an error if the sequence is invalid."""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    with pytest.raises(CashDrawerError):
 | 
					    with pytest.raises(CashDrawerError):
 | 
				
			||||||
@@ -2,7 +2,7 @@ import escpos.printer as printer
 | 
				
			|||||||
from escpos.constants import GS
 | 
					from escpos.constants import GS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_cut_without_feed():
 | 
					def test_cut_without_feed() -> None:
 | 
				
			||||||
    """Test cut without feeding paper"""
 | 
					    """Test cut without feeding paper"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.cut(feed=False)
 | 
					    instance.cut(feed=False)
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
from escpos.printer import Dummy
 | 
					from escpos.printer import Dummy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_printer_dummy_clear():
 | 
					def test_printer_dummy_clear() -> None:
 | 
				
			||||||
    printer = Dummy()
 | 
					    printer = Dummy()
 | 
				
			||||||
    printer.text("Hello")
 | 
					    printer.text("Hello")
 | 
				
			||||||
    printer.clear()
 | 
					    printer.clear()
 | 
				
			||||||
@@ -48,7 +48,7 @@ def test_bit_image_both() -> None:
 | 
				
			|||||||
    assert instance.output == b"\x1dv0\x00\x01\x00\x02\x00\xc0\x00"
 | 
					    assert instance.output == b"\x1dv0\x00\x01\x00\x02\x00\xc0\x00"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_bit_image_transparent():
 | 
					def test_bit_image_transparent() -> None:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Test printing black/transparent bit image (raster)
 | 
					    Test printing black/transparent bit image (raster)
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
@@ -11,14 +11,14 @@
 | 
				
			|||||||
import escpos.printer as printer
 | 
					import escpos.printer as printer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_function_panel_button_on():
 | 
					def test_function_panel_button_on() -> None:
 | 
				
			||||||
    """test the panel button function (enabling) by comparing output"""
 | 
					    """test the panel button function (enabling) by comparing output"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.panel_buttons()
 | 
					    instance.panel_buttons()
 | 
				
			||||||
    assert instance.output == b"\x1B\x63\x35\x00"
 | 
					    assert instance.output == b"\x1B\x63\x35\x00"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_function_panel_button_off():
 | 
					def test_function_panel_button_off() -> None:
 | 
				
			||||||
    """test the panel button function (disabling) by comparing output"""
 | 
					    """test the panel button function (disabling) by comparing output"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.panel_buttons(False)
 | 
					    instance.panel_buttons(False)
 | 
				
			||||||
@@ -14,7 +14,7 @@ import escpos.printer as printer
 | 
				
			|||||||
from escpos.constants import QR_ECLEVEL_H, QR_MODEL_1
 | 
					from escpos.constants import QR_ECLEVEL_H, QR_MODEL_1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_defaults():
 | 
					def test_defaults() -> None:
 | 
				
			||||||
    """Test QR code with defaults"""
 | 
					    """Test QR code with defaults"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.qr("1234", native=True)
 | 
					    instance.qr("1234", native=True)
 | 
				
			||||||
@@ -25,14 +25,14 @@ def test_defaults():
 | 
				
			|||||||
    assert instance.output == expected
 | 
					    assert instance.output == expected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_empty():
 | 
					def test_empty() -> None:
 | 
				
			||||||
    """Test QR printing blank code"""
 | 
					    """Test QR printing blank code"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.qr("", native=True)
 | 
					    instance.qr("", native=True)
 | 
				
			||||||
    assert instance.output == b""
 | 
					    assert instance.output == b""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_ec():
 | 
					def test_ec() -> None:
 | 
				
			||||||
    """Test QR error correction setting"""
 | 
					    """Test QR error correction setting"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.qr("1234", native=True, ec=QR_ECLEVEL_H)
 | 
					    instance.qr("1234", native=True, ec=QR_ECLEVEL_H)
 | 
				
			||||||
@@ -43,7 +43,7 @@ def test_ec():
 | 
				
			|||||||
    assert instance.output == expected
 | 
					    assert instance.output == expected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_size():
 | 
					def test_size() -> None:
 | 
				
			||||||
    """Test QR box size"""
 | 
					    """Test QR box size"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.qr("1234", native=True, size=7)
 | 
					    instance.qr("1234", native=True, size=7)
 | 
				
			||||||
@@ -54,7 +54,7 @@ def test_size():
 | 
				
			|||||||
    assert instance.output == expected
 | 
					    assert instance.output == expected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_model():
 | 
					def test_model() -> None:
 | 
				
			||||||
    """Test QR model"""
 | 
					    """Test QR model"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    instance.qr("1234", native=True, model=QR_MODEL_1)
 | 
					    instance.qr("1234", native=True, model=QR_MODEL_1)
 | 
				
			||||||
@@ -65,28 +65,28 @@ def test_model():
 | 
				
			|||||||
    assert instance.output == expected
 | 
					    assert instance.output == expected
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_invalid_ec():
 | 
					def test_invalid_ec() -> None:
 | 
				
			||||||
    """Test invalid QR error correction"""
 | 
					    """Test invalid QR error correction"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    with pytest.raises(ValueError):
 | 
					    with pytest.raises(ValueError):
 | 
				
			||||||
        instance.qr("1234", native=True, ec=-1)
 | 
					        instance.qr("1234", native=True, ec=-1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_invalid_size():
 | 
					def test_invalid_size() -> None:
 | 
				
			||||||
    """Test invalid QR size"""
 | 
					    """Test invalid QR size"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    with pytest.raises(ValueError):
 | 
					    with pytest.raises(ValueError):
 | 
				
			||||||
        instance.qr("1234", native=True, size=0)
 | 
					        instance.qr("1234", native=True, size=0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_invalid_model():
 | 
					def test_invalid_model() -> None:
 | 
				
			||||||
    """Test invalid QR model"""
 | 
					    """Test invalid QR model"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    with pytest.raises(ValueError):
 | 
					    with pytest.raises(ValueError):
 | 
				
			||||||
        instance.qr("1234", native=True, model="Hello")
 | 
					        instance.qr("1234", native=True, model="Hello")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_image_invalid_model():
 | 
					def test_image_invalid_model() -> None:
 | 
				
			||||||
    """Test unsupported QR model as image"""
 | 
					    """Test unsupported QR model as image"""
 | 
				
			||||||
    instance = printer.Dummy()
 | 
					    instance = printer.Dummy()
 | 
				
			||||||
    with pytest.raises(ValueError):
 | 
					    with pytest.raises(ValueError):
 | 
				
			||||||
@@ -98,6 +98,6 @@ def instance():
 | 
				
			|||||||
    return printer.Dummy()
 | 
					    return printer.Dummy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_center_not_implementer(instance):
 | 
					def test_center_not_implementer(instance: printer.Dummy) -> None:
 | 
				
			||||||
    with pytest.raises(NotImplementedError):
 | 
					    with pytest.raises(NotImplementedError):
 | 
				
			||||||
        instance.qr("test", center=True, native=True)
 | 
					        instance.qr("test", center=True, native=True)
 | 
				
			||||||
@@ -18,7 +18,7 @@ from PIL import Image
 | 
				
			|||||||
from escpos.printer import Dummy
 | 
					from escpos.printer import Dummy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_image():
 | 
					def test_image() -> None:
 | 
				
			||||||
    """Test QR as image"""
 | 
					    """Test QR as image"""
 | 
				
			||||||
    instance = Dummy()
 | 
					    instance = Dummy()
 | 
				
			||||||
    image_arguments = {
 | 
					    image_arguments = {
 | 
				
			||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
from typing import Optional
 | 
					from typing import Optional
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
import six
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import escpos.printer as printer
 | 
					import escpos.printer as printer
 | 
				
			||||||
from escpos.constants import SET_FONT, TXT_NORMAL, TXT_SIZE, TXT_STYLE
 | 
					from escpos.constants import SET_FONT, TXT_NORMAL, TXT_SIZE, TXT_STYLE
 | 
				
			||||||
@@ -138,7 +137,7 @@ def test_set_size_custom() -> None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    expected_sequence = (
 | 
					    expected_sequence = (
 | 
				
			||||||
        TXT_SIZE,  # Custom text size, no normal reset
 | 
					        TXT_SIZE,  # Custom text size, no normal reset
 | 
				
			||||||
        six.int2byte(TXT_STYLE["width"][8] + TXT_STYLE["height"][7]),
 | 
					        bytes((TXT_STYLE["width"][8] + TXT_STYLE["height"][7],)),
 | 
				
			||||||
        TXT_STYLE["flip"][False],  # Flip OFF
 | 
					        TXT_STYLE["flip"][False],  # Flip OFF
 | 
				
			||||||
        TXT_STYLE["smooth"][False],  # Smooth OFF
 | 
					        TXT_STYLE["smooth"][False],  # Smooth OFF
 | 
				
			||||||
        TXT_STYLE["bold"][False],  # Bold OFF
 | 
					        TXT_STYLE["bold"][False],  # Bold OFF
 | 
				
			||||||
@@ -159,7 +158,7 @@ def test_set_size_custom_no_default(width: int, height: int) -> None:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    expected_sequence = (
 | 
					    expected_sequence = (
 | 
				
			||||||
        TXT_SIZE,  # Custom text size, no normal reset
 | 
					        TXT_SIZE,  # Custom text size, no normal reset
 | 
				
			||||||
        six.int2byte(TXT_STYLE["width"][width] + TXT_STYLE["height"][height]),
 | 
					        bytes((TXT_STYLE["width"][width] + TXT_STYLE["height"][height],)),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert instance.output == b"".join(expected_sequence)
 | 
					    assert instance.output == b"".join(expected_sequence)
 | 
				
			||||||
@@ -11,16 +11,16 @@ def instance():
 | 
				
			|||||||
    return printer.Dummy()
 | 
					    return printer.Dummy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_soft_barcode_ean8_invalid(instance):
 | 
					def test_soft_barcode_ean8_invalid(instance: printer.Dummy) -> None:
 | 
				
			||||||
    """test with an invalid barcode"""
 | 
					    """test with an invalid barcode"""
 | 
				
			||||||
    with pytest.raises(barcode.errors.BarcodeError):
 | 
					    with pytest.raises(barcode.errors.BarcodeError):
 | 
				
			||||||
        instance.barcode("1234", "ean8", force_software=True)
 | 
					        instance.barcode("1234", "ean8", force_software=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_soft_barcode_ean8(instance):
 | 
					def test_soft_barcode_ean8(instance: printer.Dummy) -> None:
 | 
				
			||||||
    """test with a valid ean8 barcode"""
 | 
					    """test with a valid ean8 barcode"""
 | 
				
			||||||
    instance.barcode("1234567", "ean8", force_software=True)
 | 
					    instance.barcode("1234567", "ean8", force_software=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_soft_barcode_ean8_nocenter(instance):
 | 
					def test_soft_barcode_ean8_nocenter(instance: printer.Dummy) -> None:
 | 
				
			||||||
    instance.barcode("1234567", "ean8", align_ct=False, force_software=True)
 | 
					    instance.barcode("1234567", "ean8", align_ct=False, force_software=True)
 | 
				
			||||||
@@ -15,17 +15,17 @@ from hypothesis import given
 | 
				
			|||||||
from escpos.printer import Dummy
 | 
					from escpos.printer import Dummy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_printer():
 | 
					def get_printer() -> Dummy:
 | 
				
			||||||
    return Dummy(magic_encode_args={"disabled": True, "encoding": "CP437"})
 | 
					    return Dummy(magic_encode_args={"disabled": True, "encoding": "CP437"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@given(text=st.text())
 | 
					@given(text=st.text())
 | 
				
			||||||
def test_text(text: str) -> None:
 | 
					def test_text(text: str):
 | 
				
			||||||
    """Test that text() calls the MagicEncode object."""
 | 
					    """Test that text() calls the MagicEncode object."""
 | 
				
			||||||
    instance = get_printer()
 | 
					    instance = get_printer()
 | 
				
			||||||
    instance.magic.write = mock.Mock()
 | 
					    with mock.patch.object(instance.magic, "write") as write:
 | 
				
			||||||
        instance.text(text)
 | 
					        instance.text(text)
 | 
				
			||||||
    instance.magic.write.assert_called_with(text)
 | 
					        write.assert_called_with(text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_block_text() -> None:
 | 
					def test_block_text() -> None:
 | 
				
			||||||
@@ -3,19 +3,19 @@ import pytest
 | 
				
			|||||||
from escpos.printer import Dummy
 | 
					from escpos.printer import Dummy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_line_spacing_code_gen():
 | 
					def test_line_spacing_code_gen() -> None:
 | 
				
			||||||
    printer = Dummy()
 | 
					    printer = Dummy()
 | 
				
			||||||
    printer.line_spacing(10)
 | 
					    printer.line_spacing(10)
 | 
				
			||||||
    assert printer.output == b"\x1b3\n"
 | 
					    assert printer.output == b"\x1b3\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_line_spacing_rest():
 | 
					def test_line_spacing_rest() -> None:
 | 
				
			||||||
    printer = Dummy()
 | 
					    printer = Dummy()
 | 
				
			||||||
    printer.line_spacing()
 | 
					    printer.line_spacing()
 | 
				
			||||||
    assert printer.output == b"\x1b2"
 | 
					    assert printer.output == b"\x1b2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_line_spacing_error_handling():
 | 
					def test_line_spacing_error_handling() -> None:
 | 
				
			||||||
    printer = Dummy()
 | 
					    printer = Dummy()
 | 
				
			||||||
    with pytest.raises(ValueError):
 | 
					    with pytest.raises(ValueError):
 | 
				
			||||||
        printer.line_spacing(99, divisor=44)
 | 
					        printer.line_spacing(99, divisor=44)
 | 
				
			||||||
@@ -23,7 +23,7 @@ def test_raise_error_wrongly():
 | 
				
			|||||||
        raise escpos.Error("This should raise an AttributeError.")
 | 
					        raise escpos.Error("This should raise an AttributeError.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def tests_raise_error():
 | 
					def tests_raise_error() -> None:
 | 
				
			||||||
    """raise error the right way"""
 | 
					    """raise error the right way"""
 | 
				
			||||||
    with pytest.raises(escpos.exceptions.Error):
 | 
					    with pytest.raises(escpos.exceptions.Error):
 | 
				
			||||||
        raise escpos.exceptions.Error("This should raise an error.")
 | 
					        raise escpos.exceptions.Error("This should raise an error.")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user