REFACTOR fix minor PEP8 and similar mistakes
This commit is contained in:
parent
0e907644d9
commit
f25521f22f
|
@ -1,2 +1,5 @@
|
|||
import constants, escpos, exceptions, printer
|
||||
import constants
|
||||
import escpos
|
||||
import exceptions
|
||||
import printer
|
||||
__all__ = ["constants", "escpos", "exceptions", "printer"]
|
||||
|
|
|
@ -46,9 +46,11 @@ __license__ = "MIT"
|
|||
import re
|
||||
|
||||
from escpos import printer
|
||||
|
||||
epson = printer.Usb(0x0416, 0x5011)
|
||||
# TODO: Un-hardcode this
|
||||
|
||||
|
||||
def _print_text_file(path):
|
||||
"""Print the given text file"""
|
||||
epson.set(align='left')
|
||||
|
@ -56,10 +58,12 @@ def _print_text_file(path):
|
|||
for line in fobj:
|
||||
epson.text(line)
|
||||
|
||||
|
||||
def _print_image_file(path):
|
||||
"""Print the given image file."""
|
||||
epson.fullimage(path, histeq=False, width=384)
|
||||
|
||||
|
||||
def print_files(args):
|
||||
"""The 'print' subcommand"""
|
||||
for path in args.paths:
|
||||
|
@ -74,6 +78,7 @@ def print_files(args):
|
|||
KNOWN_BARCODE_TYPES = ['UPC-A', 'UPC-E', 'EAN13', 'ITF']
|
||||
re_barcode_escape = re.compile(r'^%(?P<type>\S+)\s(?P<data>[0-9X]+)$')
|
||||
|
||||
|
||||
def echo(args): # pylint: disable=unused-argument
|
||||
"""TTY-like line-by-line keyboard-to-printer echo loop."""
|
||||
try:
|
||||
|
@ -94,6 +99,7 @@ def echo(args): # pylint: disable=unused-argument
|
|||
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
|
||||
def _stall_test(width, height):
|
||||
"""Generate a pattern to detect print glitches due to vertical stalling."""
|
||||
img = Image.new('1', (width, height))
|
||||
|
@ -101,6 +107,7 @@ def _stall_test(width, height):
|
|||
img.putpixel(pos, not sum(pos) % 10)
|
||||
return img
|
||||
|
||||
|
||||
def _test_basic():
|
||||
"""The original test code from python-escpos's Usage wiki page"""
|
||||
epson.set(align='left')
|
||||
|
@ -120,24 +127,26 @@ def _test_basic():
|
|||
# Cut paper
|
||||
epson.cut()
|
||||
|
||||
|
||||
def _test_barcodes():
|
||||
"""Print test barcodes for all ESCPOS-specified formats."""
|
||||
for name, data in (
|
||||
# pylint: disable=bad-continuation
|
||||
('UPC-A', '123456789012\x00'),
|
||||
('UPC-E', '02345036\x00'),
|
||||
('EAN13', '1234567890128\x00'),
|
||||
('EAN8', '12345670\x00'),
|
||||
('CODE39', 'BARCODE12345678\x00'),
|
||||
('ITF', '123456\x00'),
|
||||
('CODABAR', 'A40156B'),
|
||||
# TODO: CODE93 and CODE128
|
||||
# pylint: disable=bad-continuation
|
||||
('UPC-A', '123456789012\x00'),
|
||||
('UPC-E', '02345036\x00'),
|
||||
('EAN13', '1234567890128\x00'),
|
||||
('EAN8', '12345670\x00'),
|
||||
('CODE39', 'BARCODE12345678\x00'),
|
||||
('ITF', '123456\x00'),
|
||||
('CODABAR', 'A40156B'),
|
||||
# TODO: CODE93 and CODE128
|
||||
):
|
||||
# TODO: Fix the library to restore old alignment somehow
|
||||
epson.set(align='center')
|
||||
epson.text('\n%s\n' % name)
|
||||
epson.barcode(data, name, 64, 2, '', '')
|
||||
|
||||
|
||||
def _test_patterns(width=384, height=255):
|
||||
"""Print a set of test patterns for raster image output."""
|
||||
# Test our guess of the paper width
|
||||
|
@ -152,6 +161,7 @@ def _test_patterns(width=384, height=255):
|
|||
epson.image(_stall_test(width, height))
|
||||
epson.image(_stall_test(width / 2, height))
|
||||
|
||||
|
||||
def test(args):
|
||||
"""The 'test' subcommand"""
|
||||
if args.barcodes:
|
||||
|
@ -161,6 +171,7 @@ def test(args):
|
|||
else:
|
||||
_test_basic()
|
||||
|
||||
|
||||
# }}}
|
||||
|
||||
def main():
|
||||
|
@ -168,25 +179,26 @@ def main():
|
|||
# pylint: disable=bad-continuation
|
||||
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Command-line interface to python-escpos")
|
||||
subparsers = parser.add_subparsers(title='subcommands')
|
||||
|
||||
echo_parser = subparsers.add_parser('echo', help='Echo the keyboard to '
|
||||
'the printer line-by-line (Exit with Ctrl+C)')
|
||||
'the printer line-by-line (Exit with Ctrl+C)')
|
||||
echo_parser.set_defaults(func=echo)
|
||||
|
||||
print_parser = subparsers.add_parser('print', help='Print the given files')
|
||||
print_parser.add_argument('--images', action='store_true',
|
||||
help="Provided files are images rather than text files.")
|
||||
help="Provided files are images rather than text files.")
|
||||
print_parser.add_argument('paths', metavar='path', nargs='+')
|
||||
print_parser.set_defaults(func=print_files)
|
||||
|
||||
test_parser = subparsers.add_parser('test', help='Print test patterns')
|
||||
test_modes = test_parser.add_mutually_exclusive_group()
|
||||
test_modes.add_argument('--barcodes', action='store_true',
|
||||
help="Test supported barcode types (Warning: Some printers must be "
|
||||
"reset after attempting an unsupported barcode type.)")
|
||||
help="Test supported barcode types (Warning: Some printers must be "
|
||||
"reset after attempting an unsupported barcode type.)")
|
||||
test_modes.add_argument('--patterns', action='store_true',
|
||||
help="Print test patterns")
|
||||
test_parser.set_defaults(func=test)
|
||||
|
@ -194,6 +206,7 @@ def main():
|
|||
args = parser.parse_args()
|
||||
args.func(args)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
|
|
@ -15,10 +15,8 @@ except ImportError:
|
|||
from PIL import Image
|
||||
|
||||
import qrcode
|
||||
import time
|
||||
import textwrap
|
||||
import binascii
|
||||
import os
|
||||
import operator
|
||||
|
||||
from .constants import *
|
||||
|
@ -26,6 +24,7 @@ from .exceptions import *
|
|||
|
||||
from abc import ABCMeta, abstractmethod # abstract base class support
|
||||
|
||||
|
||||
class Escpos(object):
|
||||
""" ESC/POS Printer object
|
||||
|
||||
|
@ -64,9 +63,9 @@ class Escpos(object):
|
|||
else:
|
||||
image_border = 32 - (size % 32)
|
||||
if (image_border % 2) == 0:
|
||||
return (round(image_border / 2), round(image_border / 2))
|
||||
return round(image_border / 2), round(image_border / 2)
|
||||
else:
|
||||
return (round(image_border / 2), round((image_border / 2) + 1))
|
||||
return round(image_border / 2), round((image_border / 2) + 1)
|
||||
|
||||
def _print_image(self, line, size):
|
||||
""" Print formatted image
|
||||
|
@ -221,16 +220,16 @@ class Escpos(object):
|
|||
#self._raw(binascii.unhexlify(buf))
|
||||
for y in range(height):
|
||||
for x in range(width):
|
||||
value = image.getpixel((x,y))
|
||||
value = (value << 8) | value;
|
||||
value = image.getpixel((x, y))
|
||||
value |= (value << 8)
|
||||
if value == 0:
|
||||
temp |= mask
|
||||
|
||||
mask = mask >> 1
|
||||
mask >>= 1
|
||||
|
||||
i += 1
|
||||
if i == 8:
|
||||
buf += ("%02X" % temp)
|
||||
buf += ("%02X" % temp)
|
||||
mask = 0x80
|
||||
i = 0
|
||||
temp = 0
|
||||
|
@ -413,7 +412,7 @@ class Escpos(object):
|
|||
:param columns: amount of columns
|
||||
:return: None
|
||||
"""
|
||||
colCount = self.columns if columns == None else columns
|
||||
colCount = self.columns if columns is None else columns
|
||||
self.text(textwrap.fill(txt, colCount))
|
||||
|
||||
def set(self, align='left', font='a', text_type='normal', width=1, height=1, density=9):
|
||||
|
|
|
@ -153,6 +153,7 @@ class CharCodeError(Error):
|
|||
def __str__(self):
|
||||
return "Valid char code must be set"
|
||||
|
||||
|
||||
class USBNotFoundError(Error):
|
||||
""" Device wasn't found (probably not plugged in)
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@ import serial
|
|||
import socket
|
||||
|
||||
from .escpos import *
|
||||
from .constants import *
|
||||
from .exceptions import *
|
||||
|
||||
|
||||
|
@ -32,7 +31,7 @@ class Usb(Escpos):
|
|||
:param out_ep: Output end point
|
||||
"""
|
||||
Escpos.__init__(self, *args, **kwargs)
|
||||
self.idVendor = idVendor
|
||||
self.idVendor = idVendor
|
||||
self.idProduct = idProduct
|
||||
self.interface = interface
|
||||
self.in_ep = in_ep
|
||||
|
@ -100,10 +99,10 @@ class Serial(Escpos):
|
|||
:param dsrdtr: Hardware flow control (False to enable RTS/CTS)
|
||||
"""
|
||||
Escpos.__init__(self, *args, **kwargs)
|
||||
self.devfile = devfile
|
||||
self.devfile = devfile
|
||||
self.baudrate = baudrate
|
||||
self.bytesize = bytesize
|
||||
self.timeout = timeout
|
||||
self.timeout = timeout
|
||||
self.parity = parity
|
||||
self.stopbits = stopbits
|
||||
self.xonxoff = xonxoff
|
||||
|
@ -208,9 +207,9 @@ class File(Escpos):
|
|||
:param msg: arbitrary code to be printed
|
||||
"""
|
||||
if type(msg) is str:
|
||||
self.device.write(msg.encode());
|
||||
self.device.write(msg.encode())
|
||||
else:
|
||||
self.device.write(msg);
|
||||
self.device.write(msg)
|
||||
|
||||
def __del__(self):
|
||||
""" Close system file """
|
||||
|
|
4
setup.py
4
setup.py
|
@ -5,10 +5,12 @@ import sys
|
|||
from setuptools import setup
|
||||
from setuptools.command.test import test as TestCommand
|
||||
|
||||
|
||||
def read(fname):
|
||||
"""read file from same path as setup.py"""
|
||||
return open(os.path.join(os.path.dirname(__file__), fname)).read()
|
||||
|
||||
|
||||
class Tox(TestCommand):
|
||||
"""proxy class that enables tox to be run with setup.py test"""
|
||||
user_options = [('tox-args=', 'a', "Arguments to pass to tox")]
|
||||
|
@ -26,7 +28,7 @@ class Tox(TestCommand):
|
|||
|
||||
def run_tests(self):
|
||||
"""run tox and pass on user-options"""
|
||||
#import here, cause outside the eggs aren't loaded
|
||||
# import here, cause outside the eggs aren't loaded
|
||||
import tox
|
||||
import shlex
|
||||
args = self.tox_args
|
||||
|
|
Loading…
Reference in New Issue